xmloff/source/chart/SchXMLPlotAreaContext.cxx | 196 +- xmloff/source/core/xmlexp.cxx | 107 - xmloff/source/draw/XMLImageMapExport.cxx | 213 +- xmloff/source/draw/sdxmlexp.cxx | 35 xmloff/source/draw/shapeexport.cxx | 1493 ++++++++-------- xmloff/source/draw/xexptran.cxx | 45 xmloff/source/draw/ximpshap.cxx | 81 xmloff/source/forms/elementimport.cxx | 167 - xmloff/source/style/prstylei.cxx | 128 - xmloff/source/style/xmlaustp.cxx | 125 - xmloff/source/text/XMLFootnoteImportContext.cxx | 115 - xmloff/source/text/XMLIndexMarkExport.cxx | 151 - xmloff/source/text/XMLIndexTOCContext.cxx | 199 +- xmloff/source/text/XMLSectionSourceDDEImportContext.cxx | 41 xmloff/source/text/txtimp.cxx | 145 - xmloff/source/text/txtparae.cxx | 117 - xmloff/source/text/txtstyli.cxx | 375 ++-- 17 files changed, 1880 insertions(+), 1853 deletions(-)
New commits: commit 5f4938d89d641681346001746f3762dffcb831b4 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Wed Nov 15 10:03:54 2017 +0200 loplugin:flatten in xmloff Change-Id: I782278b8a633094b96788f81ae7066a45d45b5fe Reviewed-on: https://gerrit.libreoffice.org/44750 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/xmloff/source/chart/SchXMLPlotAreaContext.cxx b/xmloff/source/chart/SchXMLPlotAreaContext.cxx index 9209efa07ce0..875d3468fb49 100644 --- a/xmloff/source/chart/SchXMLPlotAreaContext.cxx +++ b/xmloff/source/chart/SchXMLPlotAreaContext.cxx @@ -869,45 +869,46 @@ static void lcl_setErrorBarSequence ( const uno::Reference< chart2::XChartDocume uno::Reference< chart2::data::XDataSequence > xNewSequence( xDataProvider->createDataSequenceByRangeRepresentation( aRange )); - if( xNewSequence.is()) - { - SchXMLTools::setXMLRangePropertyAtDataSequence(xNewSequence,aXMLRange); + if( !xNewSequence.is()) + return; - OUStringBuffer aRoleBuffer("error-bars-"); - if( bYError ) - aRoleBuffer.append( 'y' ); - else - aRoleBuffer.append( 'x'); + SchXMLTools::setXMLRangePropertyAtDataSequence(xNewSequence,aXMLRange); - aRoleBuffer.append( '-' ); + OUStringBuffer aRoleBuffer("error-bars-"); + if( bYError ) + aRoleBuffer.append( 'y' ); + else + aRoleBuffer.append( 'x'); - if( bPositiveValue ) - aRoleBuffer = aRoleBuffer.append( "positive" ); - else - aRoleBuffer = aRoleBuffer.append( "negative" ); + aRoleBuffer.append( '-' ); - OUString aRole = aRoleBuffer.makeStringAndClear(); + if( bPositiveValue ) + aRoleBuffer = aRoleBuffer.append( "positive" ); + else + aRoleBuffer = aRoleBuffer.append( "negative" ); - Reference< beans::XPropertySet > xSeqProp( xNewSequence, uno::UNO_QUERY ); + OUString aRole = aRoleBuffer.makeStringAndClear(); - xSeqProp->setPropertyValue("Role", uno::makeAny( aRole )); + Reference< beans::XPropertySet > xSeqProp( xNewSequence, uno::UNO_QUERY ); - Reference< uno::XComponentContext > xContext = comphelper::getProcessComponentContext(); + xSeqProp->setPropertyValue("Role", uno::makeAny( aRole )); - Reference< chart2::data::XLabeledDataSequence > xLabelSeq( chart2::data::LabeledDataSequence::create(xContext), - uno::UNO_QUERY_THROW ); + Reference< uno::XComponentContext > xContext = comphelper::getProcessComponentContext(); - rSequences.emplace( tSchXMLIndexWithPart( -2, SCH_XML_PART_ERROR_BARS ), xLabelSeq ); + Reference< chart2::data::XLabeledDataSequence > xLabelSeq( chart2::data::LabeledDataSequence::create(xContext), + uno::UNO_QUERY_THROW ); - xLabelSeq->setValues( xNewSequence ); + rSequences.emplace( tSchXMLIndexWithPart( -2, SCH_XML_PART_ERROR_BARS ), xLabelSeq ); - uno::Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequences( - xDataSource->getDataSequences()); + xLabelSeq->setValues( xNewSequence ); + + uno::Sequence< Reference< chart2::data::XLabeledDataSequence > > aSequences( + xDataSource->getDataSequences()); + + aSequences.realloc( aSequences.getLength() + 1 ); + aSequences[ aSequences.getLength() - 1 ] = xLabelSeq; + xDataSink->setData( aSequences ); - aSequences.realloc( aSequences.getLength() + 1 ); - aSequences[ aSequences.getLength() - 1 ] = xLabelSeq; - xDataSink->setData( aSequences ); - } } SchXMLStatisticsObjectContext::SchXMLStatisticsObjectContext( @@ -962,100 +963,101 @@ void SetErrorBarPropertiesFromStyleName( const OUString& aStyleName, const uno:: uno::Any aAny = SchXMLTools::getPropertyFromContext("ErrorBarStyle", pSeriesStyleContext,pStylesCtxt); - if ( aAny.hasValue() ) - { - sal_Int32 aBarStyle = css::chart::ErrorBarStyle::NONE; - aAny >>= aBarStyle; - xBarProp->setPropertyValue("ErrorBarStyle", aAny); + if ( !aAny.hasValue() ) + return; - aAny = SchXMLTools::getPropertyFromContext("ShowPositiveError", - pSeriesStyleContext,pStylesCtxt); + sal_Int32 aBarStyle = css::chart::ErrorBarStyle::NONE; + aAny >>= aBarStyle; + xBarProp->setPropertyValue("ErrorBarStyle", aAny); - if(aAny.hasValue()) - xBarProp->setPropertyValue("ShowPositiveError",aAny); + aAny = SchXMLTools::getPropertyFromContext("ShowPositiveError", + pSeriesStyleContext,pStylesCtxt); - aAny = SchXMLTools::getPropertyFromContext("ShowNegativeError", - pSeriesStyleContext,pStylesCtxt); + if(aAny.hasValue()) + xBarProp->setPropertyValue("ShowPositiveError",aAny); - if(aAny.hasValue()) - xBarProp->setPropertyValue("ShowNegativeError",aAny); + aAny = SchXMLTools::getPropertyFromContext("ShowNegativeError", + pSeriesStyleContext,pStylesCtxt); + + if(aAny.hasValue()) + xBarProp->setPropertyValue("ShowNegativeError",aAny); + + aAny = SchXMLTools::getPropertyFromContext("PositiveError", + pSeriesStyleContext, pStylesCtxt); - aAny = SchXMLTools::getPropertyFromContext("PositiveError", + if(aAny.hasValue()) + xBarProp->setPropertyValue("PositiveError", aAny); + else + { + aAny = SchXMLTools::getPropertyFromContext("ConstantErrorHigh", pSeriesStyleContext, pStylesCtxt); if(aAny.hasValue()) xBarProp->setPropertyValue("PositiveError", aAny); - else - { - aAny = SchXMLTools::getPropertyFromContext("ConstantErrorHigh", - pSeriesStyleContext, pStylesCtxt); + } - if(aAny.hasValue()) - xBarProp->setPropertyValue("PositiveError", aAny); - } + aAny = SchXMLTools::getPropertyFromContext("NegativeError", + pSeriesStyleContext, pStylesCtxt); - aAny = SchXMLTools::getPropertyFromContext("NegativeError", + if(aAny.hasValue()) + xBarProp->setPropertyValue("NegativeError", aAny); + else + { + aAny = SchXMLTools::getPropertyFromContext("ConstantErrorLow", pSeriesStyleContext, pStylesCtxt); if(aAny.hasValue()) xBarProp->setPropertyValue("NegativeError", aAny); - else - { - aAny = SchXMLTools::getPropertyFromContext("ConstantErrorLow", - pSeriesStyleContext, pStylesCtxt); - - if(aAny.hasValue()) - xBarProp->setPropertyValue("NegativeError", aAny); - } + } - aAny = SchXMLTools::getPropertyFromContext("ErrorBarRangePositive", - pSeriesStyleContext, pStylesCtxt); - if( aAny.hasValue() ) - { - aAny >>= aPosRange; - } + aAny = SchXMLTools::getPropertyFromContext("ErrorBarRangePositive", + pSeriesStyleContext, pStylesCtxt); + if( aAny.hasValue() ) + { + aAny >>= aPosRange; + } - aAny = SchXMLTools::getPropertyFromContext("ErrorBarRangeNegative", - pSeriesStyleContext, pStylesCtxt); - if( aAny.hasValue() ) - { - aAny >>= aNegRange; - } + aAny = SchXMLTools::getPropertyFromContext("ErrorBarRangeNegative", + pSeriesStyleContext, pStylesCtxt); + if( aAny.hasValue() ) + { + aAny >>= aNegRange; + } - aAny = SchXMLTools::getPropertyFromContext("Weight", - pSeriesStyleContext, pStylesCtxt); - if( aAny.hasValue() ) - { - xBarProp->setPropertyValue("Weight", aAny); - } + aAny = SchXMLTools::getPropertyFromContext("Weight", + pSeriesStyleContext, pStylesCtxt); + if( aAny.hasValue() ) + { + xBarProp->setPropertyValue("Weight", aAny); + } - aAny = SchXMLTools::getPropertyFromContext("PercentageError", - pSeriesStyleContext, pStylesCtxt); - if( aAny.hasValue() && aBarStyle == css::chart::ErrorBarStyle::RELATIVE ) - { - xBarProp->setPropertyValue("PositiveError", aAny); - xBarProp->setPropertyValue("NegativeError", aAny); - } + aAny = SchXMLTools::getPropertyFromContext("PercentageError", + pSeriesStyleContext, pStylesCtxt); + if( aAny.hasValue() && aBarStyle == css::chart::ErrorBarStyle::RELATIVE ) + { + xBarProp->setPropertyValue("PositiveError", aAny); + xBarProp->setPropertyValue("NegativeError", aAny); + } - switch(aBarStyle) - { - case css::chart::ErrorBarStyle::ERROR_MARGIN: - { - aAny = SchXMLTools::getPropertyFromContext("NegativeError", - pSeriesStyleContext,pStylesCtxt); + switch(aBarStyle) + { + case css::chart::ErrorBarStyle::ERROR_MARGIN: + { + aAny = SchXMLTools::getPropertyFromContext("NegativeError", + pSeriesStyleContext,pStylesCtxt); - xBarProp->setPropertyValue("NegativeError",aAny); + xBarProp->setPropertyValue("NegativeError",aAny); - aAny = SchXMLTools::getPropertyFromContext("PositiveError", - pSeriesStyleContext,pStylesCtxt); + aAny = SchXMLTools::getPropertyFromContext("PositiveError", + pSeriesStyleContext,pStylesCtxt); - xBarProp->setPropertyValue("PositiveError",aAny); - } - break; - default: - break; - } + xBarProp->setPropertyValue("PositiveError",aAny); + } + break; + default: + break; } + } } diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index 9df9e78f410c..3dc185ba9a83 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -702,65 +702,66 @@ void SAL_CALL SvXMLExport::initialize( const uno::Sequence< uno::Any >& aArgumen mxExportInfo = xTmpPropertySet; } - if( mxExportInfo.is() ) + if( !mxExportInfo.is() ) + return; + + uno::Reference< beans::XPropertySetInfo > xPropertySetInfo = + mxExportInfo->getPropertySetInfo(); + OUString sPropName( + "BaseURI" ); + if( xPropertySetInfo->hasPropertyByName(sPropName) ) { - uno::Reference< beans::XPropertySetInfo > xPropertySetInfo = - mxExportInfo->getPropertySetInfo(); - OUString sPropName( - "BaseURI" ); - if( xPropertySetInfo->hasPropertyByName(sPropName) ) - { - uno::Any aAny = mxExportInfo->getPropertyValue(sPropName); - aAny >>= msOrigFileName; - mpImpl->msPackageURI = msOrigFileName; - mpImpl->SetSchemeOf( msOrigFileName ); - } - OUString sRelPath; - sPropName = "StreamRelPath"; - if( xPropertySetInfo->hasPropertyByName(sPropName) ) - { - uno::Any aAny = mxExportInfo->getPropertyValue(sPropName); - aAny >>= sRelPath; - } - OUString sName; - sPropName = "StreamName"; - if( xPropertySetInfo->hasPropertyByName(sPropName) ) - { - uno::Any aAny = mxExportInfo->getPropertyValue(sPropName); - aAny >>= sName; - } - if( !msOrigFileName.isEmpty() && !sName.isEmpty() ) - { - INetURLObject aBaseURL( msOrigFileName ); - if( !sRelPath.isEmpty() ) - aBaseURL.insertName( sRelPath ); - aBaseURL.insertName( sName ); - msOrigFileName = aBaseURL.GetMainURL(INetURLObject::DecodeMechanism::ToIUri); - } - mpImpl->mStreamName = sName; // Note: may be empty (XSLT) + uno::Any aAny = mxExportInfo->getPropertyValue(sPropName); + aAny >>= msOrigFileName; + mpImpl->msPackageURI = msOrigFileName; + mpImpl->SetSchemeOf( msOrigFileName ); + } + OUString sRelPath; + sPropName = "StreamRelPath"; + if( xPropertySetInfo->hasPropertyByName(sPropName) ) + { + uno::Any aAny = mxExportInfo->getPropertyValue(sPropName); + aAny >>= sRelPath; + } + OUString sName; + sPropName = "StreamName"; + if( xPropertySetInfo->hasPropertyByName(sPropName) ) + { + uno::Any aAny = mxExportInfo->getPropertyValue(sPropName); + aAny >>= sName; + } + if( !msOrigFileName.isEmpty() && !sName.isEmpty() ) + { + INetURLObject aBaseURL( msOrigFileName ); + if( !sRelPath.isEmpty() ) + aBaseURL.insertName( sRelPath ); + aBaseURL.insertName( sName ); + msOrigFileName = aBaseURL.GetMainURL(INetURLObject::DecodeMechanism::ToIUri); + } + mpImpl->mStreamName = sName; // Note: may be empty (XSLT) - // Written OpenDocument file format doesn't fit to the created text document (#i69627#) - const OUString sOutlineStyleAsNormalListStyle( - "OutlineStyleAsNormalListStyle" ); - if( xPropertySetInfo->hasPropertyByName( sOutlineStyleAsNormalListStyle ) ) - { - uno::Any aAny = mxExportInfo->getPropertyValue( sOutlineStyleAsNormalListStyle ); - aAny >>= (mpImpl->mbOutlineStyleAsNormalListStyle); - } + // Written OpenDocument file format doesn't fit to the created text document (#i69627#) + const OUString sOutlineStyleAsNormalListStyle( + "OutlineStyleAsNormalListStyle" ); + if( xPropertySetInfo->hasPropertyByName( sOutlineStyleAsNormalListStyle ) ) + { + uno::Any aAny = mxExportInfo->getPropertyValue( sOutlineStyleAsNormalListStyle ); + aAny >>= (mpImpl->mbOutlineStyleAsNormalListStyle); + } - OUString sTargetStorage( "TargetStorage" ); - if( xPropertySetInfo->hasPropertyByName( sTargetStorage ) ) - mxExportInfo->getPropertyValue( sTargetStorage ) >>= mpImpl->mxTargetStorage; + OUString sTargetStorage( "TargetStorage" ); + if( xPropertySetInfo->hasPropertyByName( sTargetStorage ) ) + mxExportInfo->getPropertyValue( sTargetStorage ) >>= mpImpl->mxTargetStorage; - const OUString sExportTextNumberElement( - "ExportTextNumberElement" ); - if( xPropertySetInfo->hasPropertyByName( sExportTextNumberElement ) ) - { - uno::Any aAny = mxExportInfo->getPropertyValue( sExportTextNumberElement ); - aAny >>= (mpImpl->mbExportTextNumberElement); - } + const OUString sExportTextNumberElement( + "ExportTextNumberElement" ); + if( xPropertySetInfo->hasPropertyByName( sExportTextNumberElement ) ) + { + uno::Any aAny = mxExportInfo->getPropertyValue( sExportTextNumberElement ); + aAny >>= (mpImpl->mbExportTextNumberElement); } + } // XFilter diff --git a/xmloff/source/draw/XMLImageMapExport.cxx b/xmloff/source/draw/XMLImageMapExport.cxx index b7de2e30e373..e05ccd1aabee 100644 --- a/xmloff/source/draw/XMLImageMapExport.cxx +++ b/xmloff/source/draw/XMLImageMapExport.cxx @@ -127,128 +127,129 @@ void XMLImageMapExport::ExportMapEntry( const Reference<XPropertySet> & rPropertySet) { Reference<XServiceInfo> xServiceInfo(rPropertySet, UNO_QUERY); - if (xServiceInfo.is()) - { - enum XMLTokenEnum eType = XML_TOKEN_INVALID; - - // distinguish map entries by their service name - Sequence<OUString> sServiceNames = - xServiceInfo->getSupportedServiceNames(); - sal_Int32 nLength = sServiceNames.getLength(); - for( sal_Int32 i=0; i<nLength; i++ ) - { - OUString& rName = sServiceNames[i]; - - if ( rName == "com.sun.star.image.ImageMapRectangleObject" ) - { - eType = XML_AREA_RECTANGLE; - break; - } - else if ( rName == "com.sun.star.image.ImageMapCircleObject" ) - { - eType = XML_AREA_CIRCLE; - break; - } - else if ( rName == "com.sun.star.image.ImageMapPolygonObject" ) - { - eType = XML_AREA_POLYGON; - break; - } - } + if (!xServiceInfo.is()) + return; - // return from method if no proper service is found! - DBG_ASSERT(XML_TOKEN_INVALID != eType, - "Image map element doesn't support appropriate service!"); - if (XML_TOKEN_INVALID == eType) - return; + enum XMLTokenEnum eType = XML_TOKEN_INVALID; - // now: handle ImageMapObject properties (those for all types) + // distinguish map entries by their service name + Sequence<OUString> sServiceNames = + xServiceInfo->getSupportedServiceNames(); + sal_Int32 nLength = sServiceNames.getLength(); + for( sal_Int32 i=0; i<nLength; i++ ) + { + OUString& rName = sServiceNames[i]; - // XLINK (URL property) - Any aAny = rPropertySet->getPropertyValue(msURL); - OUString sHref; - aAny >>= sHref; - if (!sHref.isEmpty()) + if ( rName == "com.sun.star.image.ImageMapRectangleObject" ) { - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, mrExport.GetRelativeReference(sHref)); + eType = XML_AREA_RECTANGLE; + break; } - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - - // Target property (and xlink:show) - aAny = rPropertySet->getPropertyValue(msTarget); - OUString sTargt; - aAny >>= sTargt; - if (!sTargt.isEmpty()) + else if ( rName == "com.sun.star.image.ImageMapCircleObject" ) { - mrExport.AddAttribute( - XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, sTargt); - - mrExport.AddAttribute( - XML_NAMESPACE_XLINK, XML_SHOW, - sTargt == "_blank" ? XML_NEW : XML_REPLACE ); + eType = XML_AREA_CIRCLE; + break; } - - // name - aAny = rPropertySet->getPropertyValue(msName); - OUString sItemName; - aAny >>= sItemName; - if (!sItemName.isEmpty()) + else if ( rName == "com.sun.star.image.ImageMapPolygonObject" ) { - mrExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_NAME, sItemName); + eType = XML_AREA_POLYGON; + break; } + } - // is-active - aAny = rPropertySet->getPropertyValue(msIsActive); - if (! *o3tl::doAccess<bool>(aAny)) - { - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_NOHREF, XML_NOHREF); - } + // return from method if no proper service is found! + DBG_ASSERT(XML_TOKEN_INVALID != eType, + "Image map element doesn't support appropriate service!"); + if (XML_TOKEN_INVALID == eType) + return; - // call specific rectangle/circle/... method - // also prepare element name - switch (eType) - { - case XML_AREA_RECTANGLE: - ExportRectangle(rPropertySet); - break; - case XML_AREA_CIRCLE: - ExportCircle(rPropertySet); - break; - case XML_AREA_POLYGON: - ExportPolygon(rPropertySet); - break; - default: - break; - } + // now: handle ImageMapObject properties (those for all types) + + // XLINK (URL property) + Any aAny = rPropertySet->getPropertyValue(msURL); + OUString sHref; + aAny >>= sHref; + if (!sHref.isEmpty()) + { + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, mrExport.GetRelativeReference(sHref)); + } + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - // write element - DBG_ASSERT(XML_TOKEN_INVALID != eType, - "No name?! How did this happen?"); - SvXMLElementExport aAreaElement(mrExport, XML_NAMESPACE_DRAW, eType, - true/*bWhiteSpace*/, true/*bWhiteSpace*/); + // Target property (and xlink:show) + aAny = rPropertySet->getPropertyValue(msTarget); + OUString sTargt; + aAny >>= sTargt; + if (!sTargt.isEmpty()) + { + mrExport.AddAttribute( + XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, sTargt); - // title property (as <svg:title> element) - OUString sTitle; - rPropertySet->getPropertyValue(msTitle) >>= sTitle; - if(!sTitle.isEmpty()) - { - SvXMLElementExport aEventElemt(mrExport, XML_NAMESPACE_SVG, XML_TITLE, true/*bWhiteSpace*/, false); - mrExport.Characters(sTitle); - } + mrExport.AddAttribute( + XML_NAMESPACE_XLINK, XML_SHOW, + sTargt == "_blank" ? XML_NEW : XML_REPLACE ); + } - // description property (as <svg:desc> element) - OUString sDescription; - rPropertySet->getPropertyValue(msDescription) >>= sDescription; - if (!sDescription.isEmpty()) - { - SvXMLElementExport aDesc(mrExport, XML_NAMESPACE_SVG, XML_DESC, true/*bWhiteSpace*/, false); - mrExport.Characters(sDescription); - } + // name + aAny = rPropertySet->getPropertyValue(msName); + OUString sItemName; + aAny >>= sItemName; + if (!sItemName.isEmpty()) + { + mrExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_NAME, sItemName); + } + + // is-active + aAny = rPropertySet->getPropertyValue(msIsActive); + if (! *o3tl::doAccess<bool>(aAny)) + { + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_NOHREF, XML_NOHREF); + } + + // call specific rectangle/circle/... method + // also prepare element name + switch (eType) + { + case XML_AREA_RECTANGLE: + ExportRectangle(rPropertySet); + break; + case XML_AREA_CIRCLE: + ExportCircle(rPropertySet); + break; + case XML_AREA_POLYGON: + ExportPolygon(rPropertySet); + break; + default: + break; + } + + // write element + DBG_ASSERT(XML_TOKEN_INVALID != eType, + "No name?! How did this happen?"); + SvXMLElementExport aAreaElement(mrExport, XML_NAMESPACE_DRAW, eType, + true/*bWhiteSpace*/, true/*bWhiteSpace*/); - // export events attached to this - Reference<XEventsSupplier> xSupplier(rPropertySet, UNO_QUERY); - mrExport.GetEventExport().Export(xSupplier); + // title property (as <svg:title> element) + OUString sTitle; + rPropertySet->getPropertyValue(msTitle) >>= sTitle; + if(!sTitle.isEmpty()) + { + SvXMLElementExport aEventElemt(mrExport, XML_NAMESPACE_SVG, XML_TITLE, true/*bWhiteSpace*/, false); + mrExport.Characters(sTitle); } + + // description property (as <svg:desc> element) + OUString sDescription; + rPropertySet->getPropertyValue(msDescription) >>= sDescription; + if (!sDescription.isEmpty()) + { + SvXMLElementExport aDesc(mrExport, XML_NAMESPACE_SVG, XML_DESC, true/*bWhiteSpace*/, false); + mrExport.Characters(sDescription); + } + + // export events attached to this + Reference<XEventsSupplier> xSupplier(rPropertySet, UNO_QUERY); + mrExport.GetEventExport().Export(xSupplier); + // else: no service info -> can't determine type -> ignore entry } diff --git a/xmloff/source/draw/sdxmlexp.cxx b/xmloff/source/draw/sdxmlexp.cxx index c9734530a2ee..86370e8a118b 100644 --- a/xmloff/source/draw/sdxmlexp.cxx +++ b/xmloff/source/draw/sdxmlexp.cxx @@ -2455,25 +2455,26 @@ void SdXMLExport::GetViewSettings(uno::Sequence<beans::PropertyValue>& rProps) { rProps.realloc(4); beans::PropertyValue* pProps = rProps.getArray(); - if(pProps) - { - Reference< beans::XPropertySet > xPropSet( GetModel(), UNO_QUERY ); - if( !xPropSet.is() ) - return; + if(!pProps) + return; - awt::Rectangle aVisArea; - xPropSet->getPropertyValue("VisibleArea") >>= aVisArea; + Reference< beans::XPropertySet > xPropSet( GetModel(), UNO_QUERY ); + if( !xPropSet.is() ) + return; + + awt::Rectangle aVisArea; + xPropSet->getPropertyValue("VisibleArea") >>= aVisArea; + + sal_uInt16 i = 0; + pProps[i].Name = "VisibleAreaTop"; + pProps[i++].Value <<= aVisArea.Y; + pProps[i].Name = "VisibleAreaLeft"; + pProps[i++].Value <<= aVisArea.X; + pProps[i].Name = "VisibleAreaWidth"; + pProps[i++].Value <<= aVisArea.Width; + pProps[i].Name = "VisibleAreaHeight"; + pProps[i++].Value <<= aVisArea.Height; - sal_uInt16 i = 0; - pProps[i].Name = "VisibleAreaTop"; - pProps[i++].Value <<= aVisArea.Y; - pProps[i].Name = "VisibleAreaLeft"; - pProps[i++].Value <<= aVisArea.X; - pProps[i].Name = "VisibleAreaWidth"; - pProps[i++].Value <<= aVisArea.Width; - pProps[i].Name = "VisibleAreaHeight"; - pProps[i++].Value <<= aVisArea.Height; - } } void SdXMLExport::GetConfigurationSettings(uno::Sequence<beans::PropertyValue>& rProps) diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx index 88cc1efd9782..3f7f1d54ec18 100644 --- a/xmloff/source/draw/shapeexport.cxx +++ b/xmloff/source/draw/shapeexport.cxx @@ -1855,99 +1855,100 @@ void XMLShapeExport::ImpExportTextBoxShape( XmlShapeType eShapeType, XMLShapeExportFlags nFeatures, awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - // presentation attribute (if presentation) - bool bIsPresShape(false); - bool bIsEmptyPresObj(false); - OUString aStr; + if(!xPropSet.is()) + return; - switch(eShapeType) + // presentation attribute (if presentation) + bool bIsPresShape(false); + bool bIsEmptyPresObj(false); + OUString aStr; + + switch(eShapeType) + { + case XmlShapeTypePresSubtitleShape: { - case XmlShapeTypePresSubtitleShape: - { - aStr = GetXMLToken(XML_PRESENTATION_SUBTITLE); - bIsPresShape = true; - break; - } - case XmlShapeTypePresTitleTextShape: - { - aStr = GetXMLToken(XML_PRESENTATION_TITLE); - bIsPresShape = true; - break; - } - case XmlShapeTypePresOutlinerShape: - { - aStr = GetXMLToken(XML_PRESENTATION_OUTLINE); - bIsPresShape = true; - break; - } - case XmlShapeTypePresNotesShape: - { - aStr = GetXMLToken(XML_PRESENTATION_NOTES); - bIsPresShape = true; - break; - } - case XmlShapeTypePresHeaderShape: - { - aStr = GetXMLToken(XML_HEADER); - bIsPresShape = true; - break; - } - case XmlShapeTypePresFooterShape: - { - aStr = GetXMLToken(XML_FOOTER); - bIsPresShape = true; - break; - } - case XmlShapeTypePresSlideNumberShape: - { - aStr = GetXMLToken(XML_PAGE_NUMBER); - bIsPresShape = true; - break; - } - case XmlShapeTypePresDateTimeShape: - { - aStr = GetXMLToken(XML_DATE_TIME); - bIsPresShape = true; - break; - } - default: - break; + aStr = GetXMLToken(XML_PRESENTATION_SUBTITLE); + bIsPresShape = true; + break; } - - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - - if(bIsPresShape) - bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, aStr ); - - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); - - // evtl. corner radius? - sal_Int32 nCornerRadius(0); - xPropSet->getPropertyValue("CornerRadius") >>= nCornerRadius; - if(nCornerRadius) + case XmlShapeTypePresTitleTextShape: { - OUStringBuffer sStringBuffer; - mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, - nCornerRadius); - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_CORNER_RADIUS, sStringBuffer.makeStringAndClear()); + aStr = GetXMLToken(XML_PRESENTATION_TITLE); + bIsPresShape = true; + break; } - + case XmlShapeTypePresOutlinerShape: { - // write text-box - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_TEXT_BOX, true, true); - if(!bIsEmptyPresObj) - ImpExportText( xShape ); + aStr = GetXMLToken(XML_PRESENTATION_OUTLINE); + bIsPresShape = true; + break; + } + case XmlShapeTypePresNotesShape: + { + aStr = GetXMLToken(XML_PRESENTATION_NOTES); + bIsPresShape = true; + break; + } + case XmlShapeTypePresHeaderShape: + { + aStr = GetXMLToken(XML_HEADER); + bIsPresShape = true; + break; + } + case XmlShapeTypePresFooterShape: + { + aStr = GetXMLToken(XML_FOOTER); + bIsPresShape = true; + break; + } + case XmlShapeTypePresSlideNumberShape: + { + aStr = GetXMLToken(XML_PAGE_NUMBER); + bIsPresShape = true; + break; + } + case XmlShapeTypePresDateTimeShape: + { + aStr = GetXMLToken(XML_DATE_TIME); + bIsPresShape = true; + break; } + default: + break; + } - ImpExportDescription( xShape ); // #i68101# - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + + if(bIsPresShape) + bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, aStr ); + + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); + + // evtl. corner radius? + sal_Int32 nCornerRadius(0); + xPropSet->getPropertyValue("CornerRadius") >>= nCornerRadius; + if(nCornerRadius) + { + OUStringBuffer sStringBuffer; + mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, + nCornerRadius); + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_CORNER_RADIUS, sStringBuffer.makeStringAndClear()); } + + { + // write text-box + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_TEXT_BOX, true, true); + if(!bIsEmptyPresObj) + ImpExportText( xShape ); + } + + ImpExportDescription( xShape ); // #i68101# + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + } void XMLShapeExport::ImpExportRectangleShape( @@ -1987,110 +1988,111 @@ void XMLShapeExport::ImpExportLineShape( XMLShapeExportFlags nFeatures, awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) + if(!xPropSet.is()) + return; + + OUString aStr; + OUStringBuffer sStringBuffer; + awt::Point aStart(0,0); + awt::Point aEnd(1,1); + + // #85920# use 'Geometry' to get the points of the line + // since this slot take anchor pos into account. + + // get matrix + ::basegfx::B2DHomMatrix aMatrix; + ImpExportNewTrans_GetB2DHomMatrix(aMatrix, xPropSet); + + // decompose and correct about pRefPoint + ::basegfx::B2DTuple aTRScale; + double fTRShear(0.0); + double fTRRotate(0.0); + ::basegfx::B2DTuple aTRTranslate; + ImpExportNewTrans_DecomposeAndRefPoint(aMatrix, aTRScale, fTRShear, fTRRotate, aTRTranslate, pRefPoint); + + // create base position + awt::Point aBasePosition(FRound(aTRTranslate.getX()), FRound(aTRTranslate.getY())); + + // get the two points + uno::Any aAny(xPropSet->getPropertyValue("Geometry")); + if (auto pSourcePolyPolygon + = o3tl::tryAccess<drawing::PointSequenceSequence>(aAny)) { - OUString aStr; - OUStringBuffer sStringBuffer; - awt::Point aStart(0,0); - awt::Point aEnd(1,1); - - // #85920# use 'Geometry' to get the points of the line - // since this slot take anchor pos into account. - - // get matrix - ::basegfx::B2DHomMatrix aMatrix; - ImpExportNewTrans_GetB2DHomMatrix(aMatrix, xPropSet); - - // decompose and correct about pRefPoint - ::basegfx::B2DTuple aTRScale; - double fTRShear(0.0); - double fTRRotate(0.0); - ::basegfx::B2DTuple aTRTranslate; - ImpExportNewTrans_DecomposeAndRefPoint(aMatrix, aTRScale, fTRShear, fTRRotate, aTRTranslate, pRefPoint); - - // create base position - awt::Point aBasePosition(FRound(aTRTranslate.getX()), FRound(aTRTranslate.getY())); - - // get the two points - uno::Any aAny(xPropSet->getPropertyValue("Geometry")); - if (auto pSourcePolyPolygon - = o3tl::tryAccess<drawing::PointSequenceSequence>(aAny)) + drawing::PointSequence* pOuterSequence = const_cast<css::drawing::PointSequenceSequence *>(pSourcePolyPolygon)->getArray(); + if(pOuterSequence) { - drawing::PointSequence* pOuterSequence = const_cast<css::drawing::PointSequenceSequence *>(pSourcePolyPolygon)->getArray(); - if(pOuterSequence) + drawing::PointSequence* pInnerSequence = pOuterSequence++; + if(pInnerSequence) { - drawing::PointSequence* pInnerSequence = pOuterSequence++; - if(pInnerSequence) + awt::Point* pArray = pInnerSequence->getArray(); + if(pArray) { - awt::Point* pArray = pInnerSequence->getArray(); - if(pArray) + if(pInnerSequence->getLength() > 0) { - if(pInnerSequence->getLength() > 0) - { - aStart = awt::Point( - pArray->X + aBasePosition.X, - pArray->Y + aBasePosition.Y); - pArray++; - } + aStart = awt::Point( + pArray->X + aBasePosition.X, + pArray->Y + aBasePosition.Y); + pArray++; + } - if(pInnerSequence->getLength() > 1) - { - aEnd = awt::Point( - pArray->X + aBasePosition.X, - pArray->Y + aBasePosition.Y); - } + if(pInnerSequence->getLength() > 1) + { + aEnd = awt::Point( + pArray->X + aBasePosition.X, + pArray->Y + aBasePosition.Y); } } } } + } - if( nFeatures & XMLShapeExportFlags::X ) - { - // svg: x1 - mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, - aStart.X); - aStr = sStringBuffer.makeStringAndClear(); - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_X1, aStr); - } - else - { - aEnd.X -= aStart.X; - } - - if( nFeatures & XMLShapeExportFlags::Y ) - { - // svg: y1 - mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, - aStart.Y); - aStr = sStringBuffer.makeStringAndClear(); - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_Y1, aStr); - } - else - { - aEnd.Y -= aStart.Y; - } - - // svg: x2 + if( nFeatures & XMLShapeExportFlags::X ) + { + // svg: x1 mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, - aEnd.X); + aStart.X); aStr = sStringBuffer.makeStringAndClear(); - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_X2, aStr); + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_X1, aStr); + } + else + { + aEnd.X -= aStart.X; + } - // svg: y2 + if( nFeatures & XMLShapeExportFlags::Y ) + { + // svg: y1 mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, - aEnd.Y); + aStart.Y); aStr = sStringBuffer.makeStringAndClear(); - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_Y2, aStr); + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_Y1, aStr); + } + else + { + aEnd.Y -= aStart.Y; + } - // write line - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_LINE, bCreateNewline, true); + // svg: x2 + mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, + aEnd.X); + aStr = sStringBuffer.makeStringAndClear(); + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_X2, aStr); + + // svg: y2 + mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, + aEnd.Y); + aStr = sStringBuffer.makeStringAndClear(); + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_Y2, aStr); + + // write line + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_LINE, bCreateNewline, true); + + ImpExportDescription( xShape ); // #i68101# + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + ImpExportText( xShape ); - ImpExportDescription( xShape ); // #i68101# - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); - ImpExportText( xShape ); - } } void XMLShapeExport::ImpExportEllipseShape( @@ -2098,56 +2100,56 @@ void XMLShapeExport::ImpExportEllipseShape( XMLShapeExportFlags nFeatures, awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - // get size to decide between Circle and Ellipse - awt::Size aSize = xShape->getSize(); - sal_Int32 nRx((aSize.Width + 1) / 2); - sal_Int32 nRy((aSize.Height + 1) / 2); - bool bCircle(nRx == nRy); + if(!xPropSet.is()) + return; - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + // get size to decide between Circle and Ellipse + awt::Size aSize = xShape->getSize(); + sal_Int32 nRx((aSize.Width + 1) / 2); + sal_Int32 nRy((aSize.Height + 1) / 2); + bool bCircle(nRx == nRy); - drawing::CircleKind eKind = drawing::CircleKind_FULL; - xPropSet->getPropertyValue("CircleKind") >>= eKind; - if( eKind != drawing::CircleKind_FULL ) - { - OUStringBuffer sStringBuffer; - sal_Int32 nStartAngle = 0; - sal_Int32 nEndAngle = 0; - xPropSet->getPropertyValue("CircleStartAngle") >>= nStartAngle; - xPropSet->getPropertyValue("CircleEndAngle") >>= nEndAngle; + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - const double dStartAngle = nStartAngle / 100.0; - const double dEndAngle = nEndAngle / 100.0; + drawing::CircleKind eKind = drawing::CircleKind_FULL; + xPropSet->getPropertyValue("CircleKind") >>= eKind; + if( eKind != drawing::CircleKind_FULL ) + { + OUStringBuffer sStringBuffer; + sal_Int32 nStartAngle = 0; + sal_Int32 nEndAngle = 0; + xPropSet->getPropertyValue("CircleStartAngle") >>= nStartAngle; + xPropSet->getPropertyValue("CircleEndAngle") >>= nEndAngle; - // export circle kind - SvXMLUnitConverter::convertEnum( sStringBuffer, eKind, aXML_CircleKind_EnumMap ); - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_KIND, sStringBuffer.makeStringAndClear() ); + const double dStartAngle = nStartAngle / 100.0; + const double dEndAngle = nEndAngle / 100.0; - // export start angle - ::sax::Converter::convertDouble( sStringBuffer, dStartAngle ); - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_START_ANGLE, sStringBuffer.makeStringAndClear() ); + // export circle kind + SvXMLUnitConverter::convertEnum( sStringBuffer, eKind, aXML_CircleKind_EnumMap ); + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_KIND, sStringBuffer.makeStringAndClear() ); - // export end angle - ::sax::Converter::convertDouble( sStringBuffer, dEndAngle ); - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_END_ANGLE, sStringBuffer.makeStringAndClear() ); - } + // export start angle + ::sax::Converter::convertDouble( sStringBuffer, dStartAngle ); + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_START_ANGLE, sStringBuffer.makeStringAndClear() ); - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + // export end angle + ::sax::Converter::convertDouble( sStringBuffer, dEndAngle ); + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_END_ANGLE, sStringBuffer.makeStringAndClear() ); + } - // write ellipse or circle - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, - bCircle ? XML_CIRCLE : XML_ELLIPSE, - bCreateNewline, true); + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - ImpExportDescription( xShape ); // #i68101# - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); - ImpExportText( xShape ); + // write ellipse or circle + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, + bCircle ? XML_CIRCLE : XML_ELLIPSE, + bCreateNewline, true); + + ImpExportDescription( xShape ); // #i68101# + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + ImpExportText( xShape ); - } } void XMLShapeExport::ImpExportPolygonShape( @@ -2155,105 +2157,106 @@ void XMLShapeExport::ImpExportPolygonShape( XmlShapeType eShapeType, XMLShapeExportFlags nFeatures, awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - bool bBezier(eShapeType == XmlShapeTypeDrawClosedBezierShape - || eShapeType == XmlShapeTypeDrawOpenBezierShape); + if(!xPropSet.is()) + return; - // get matrix - ::basegfx::B2DHomMatrix aMatrix; - ImpExportNewTrans_GetB2DHomMatrix(aMatrix, xPropSet); + bool bBezier(eShapeType == XmlShapeTypeDrawClosedBezierShape + || eShapeType == XmlShapeTypeDrawOpenBezierShape); - // decompose and correct abour pRefPoint - ::basegfx::B2DTuple aTRScale; - double fTRShear(0.0); - double fTRRotate(0.0); - ::basegfx::B2DTuple aTRTranslate; - ImpExportNewTrans_DecomposeAndRefPoint(aMatrix, aTRScale, fTRShear, fTRRotate, aTRTranslate, pRefPoint); + // get matrix + ::basegfx::B2DHomMatrix aMatrix; + ImpExportNewTrans_GetB2DHomMatrix(aMatrix, xPropSet); - // use features and write - ImpExportNewTrans_FeaturesAndWrite(aTRScale, fTRShear, fTRRotate, aTRTranslate, nFeatures); + // decompose and correct abour pRefPoint + ::basegfx::B2DTuple aTRScale; + double fTRShear(0.0); + double fTRRotate(0.0); + ::basegfx::B2DTuple aTRTranslate; + ImpExportNewTrans_DecomposeAndRefPoint(aMatrix, aTRScale, fTRShear, fTRRotate, aTRTranslate, pRefPoint); - // create and export ViewBox - awt::Size aSize(FRound(aTRScale.getX()), FRound(aTRScale.getY())); - SdXMLImExViewBox aViewBox(0, 0, aSize.Width, aSize.Height); - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_VIEWBOX, aViewBox.GetExportString()); + // use features and write + ImpExportNewTrans_FeaturesAndWrite(aTRScale, fTRShear, fTRRotate, aTRTranslate, nFeatures); - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + // create and export ViewBox + awt::Size aSize(FRound(aTRScale.getX()), FRound(aTRScale.getY())); + SdXMLImExViewBox aViewBox(0, 0, aSize.Width, aSize.Height); + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_VIEWBOX, aViewBox.GetExportString()); - // prepare name (with most used) - enum ::xmloff::token::XMLTokenEnum eName(XML_PATH); + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - if(bBezier) - { - // get PolygonBezier - uno::Any aAny( xPropSet->getPropertyValue("Geometry") ); - const basegfx::B2DPolyPolygon aPolyPolygon( - basegfx::utils::UnoPolyPolygonBezierCoordsToB2DPolyPolygon(*o3tl::doAccess<drawing::PolyPolygonBezierCoords>(aAny))); + // prepare name (with most used) + enum ::xmloff::token::XMLTokenEnum eName(XML_PATH); - if(aPolyPolygon.count()) - { - // complex polygon shape, write as svg:d - const OUString aPolygonString( - basegfx::utils::exportToSvgD( - aPolyPolygon, - true, // bUseRelativeCoordinates - false, // bDetectQuadraticBeziers: not used in old, but maybe activated now - true)); // bHandleRelativeNextPointCompatible + if(bBezier) + { + // get PolygonBezier + uno::Any aAny( xPropSet->getPropertyValue("Geometry") ); + const basegfx::B2DPolyPolygon aPolyPolygon( + basegfx::utils::UnoPolyPolygonBezierCoordsToB2DPolyPolygon(*o3tl::doAccess<drawing::PolyPolygonBezierCoords>(aAny))); - // write point array - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_D, aPolygonString); - } - } - else + if(aPolyPolygon.count()) { - // get non-bezier polygon - uno::Any aAny( xPropSet->getPropertyValue("Geometry") ); - const basegfx::B2DPolyPolygon aPolyPolygon( - basegfx::utils::UnoPointSequenceSequenceToB2DPolyPolygon(*o3tl::doAccess<drawing::PointSequenceSequence>(aAny))); - - if(!aPolyPolygon.areControlPointsUsed() && 1 == aPolyPolygon.count()) - { - // simple polygon shape, can be written as svg:points sequence - const basegfx::B2DPolygon aPolygon(aPolyPolygon.getB2DPolygon(0)); - const OUString aPointString(basegfx::utils::exportToSvgPoints(aPolygon)); + // complex polygon shape, write as svg:d + const OUString aPolygonString( + basegfx::utils::exportToSvgD( + aPolyPolygon, + true, // bUseRelativeCoordinates + false, // bDetectQuadraticBeziers: not used in old, but maybe activated now + true)); // bHandleRelativeNextPointCompatible + + // write point array + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_D, aPolygonString); + } + } + else + { + // get non-bezier polygon + uno::Any aAny( xPropSet->getPropertyValue("Geometry") ); + const basegfx::B2DPolyPolygon aPolyPolygon( + basegfx::utils::UnoPointSequenceSequenceToB2DPolyPolygon(*o3tl::doAccess<drawing::PointSequenceSequence>(aAny))); - // write point array - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_POINTS, aPointString); + if(!aPolyPolygon.areControlPointsUsed() && 1 == aPolyPolygon.count()) + { + // simple polygon shape, can be written as svg:points sequence + const basegfx::B2DPolygon aPolygon(aPolyPolygon.getB2DPolygon(0)); + const OUString aPointString(basegfx::utils::exportToSvgPoints(aPolygon)); - // set name - eName = aPolygon.isClosed() ? XML_POLYGON : XML_POLYLINE; - } - else - { - // complex polygon shape, write as svg:d - const OUString aPolygonString( - basegfx::utils::exportToSvgD( - aPolyPolygon, - true, // bUseRelativeCoordinates - false, // bDetectQuadraticBeziers: not used in old, but maybe activated now - true)); // bHandleRelativeNextPointCompatible + // write point array + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_POINTS, aPointString); - // write point array - mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_D, aPolygonString); - } + // set name + eName = aPolygon.isClosed() ? XML_POLYGON : XML_POLYLINE; + } + else + { + // complex polygon shape, write as svg:d + const OUString aPolygonString( + basegfx::utils::exportToSvgD( + aPolyPolygon, + true, // bUseRelativeCoordinates + false, // bDetectQuadraticBeziers: not used in old, but maybe activated now + true)); // bHandleRelativeNextPointCompatible + + // write point array + mrExport.AddAttribute(XML_NAMESPACE_SVG, XML_D, aPolygonString); } + } - // write object, but after attributes are added since this call will - // consume all of these added attributes and the destructor will close the - // scope. Also before text is added; this may add sub-scopes as needed - SvXMLElementExport aOBJ( - mrExport, - XML_NAMESPACE_DRAW, - eName, - bCreateNewline, - true); + // write object, but after attributes are added since this call will + // consume all of these added attributes and the destructor will close the + // scope. Also before text is added; this may add sub-scopes as needed + SvXMLElementExport aOBJ( + mrExport, + XML_NAMESPACE_DRAW, + eName, + bCreateNewline, + true); + + ImpExportDescription( xShape ); // #i68101# + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + ImpExportText( xShape ); - ImpExportDescription( xShape ); // #i68101# - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); - ImpExportText( xShape ); - } } void XMLShapeExport::ImpExportGraphicObjectShape( @@ -2261,140 +2264,141 @@ void XMLShapeExport::ImpExportGraphicObjectShape( XmlShapeType eShapeType, XMLShapeExportFlags nFeatures, awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - bool bIsEmptyPresObj = false; + if(!xPropSet.is()) + return; - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + bool bIsEmptyPresObj = false; - OUString sImageURL; + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - if(eShapeType == XmlShapeTypePresGraphicObjectShape) - bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_GRAPHIC) ); + OUString sImageURL; - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); + if(eShapeType == XmlShapeTypePresGraphicObjectShape) + bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_GRAPHIC) ); - const bool bSaveBackwardsCompatible = bool( mrExport.getExportFlags() & SvXMLExportFlags::SAVEBACKWARDCOMPATIBLE ); + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); + + const bool bSaveBackwardsCompatible = bool( mrExport.getExportFlags() & SvXMLExportFlags::SAVEBACKWARDCOMPATIBLE ); - if( !bIsEmptyPresObj || bSaveBackwardsCompatible ) + if( !bIsEmptyPresObj || bSaveBackwardsCompatible ) + { + if( !bIsEmptyPresObj ) { - if( !bIsEmptyPresObj ) - { - OUString aStreamURL; + OUString aStreamURL; - xPropSet->getPropertyValue("GraphicStreamURL") >>= aStreamURL; - xPropSet->getPropertyValue("GraphicURL") >>= sImageURL; + xPropSet->getPropertyValue("GraphicStreamURL") >>= aStreamURL; + xPropSet->getPropertyValue("GraphicURL") >>= sImageURL; - OUString aResolveURL( sImageURL ); - const OUString sPackageURL( "vnd.sun.star.Package:" ); + OUString aResolveURL( sImageURL ); + const OUString sPackageURL( "vnd.sun.star.Package:" ); - // trying to preserve the filename for embedded images which already have its stream inside the package - bool bIsEmbeddedImageWithExistingStreamInPackage = false; - if ( aStreamURL.match( sPackageURL ) ) + // trying to preserve the filename for embedded images which already have its stream inside the package + bool bIsEmbeddedImageWithExistingStreamInPackage = false; + if ( aStreamURL.match( sPackageURL ) ) + { + bIsEmbeddedImageWithExistingStreamInPackage = true; + + OUString sRequestedName = aStreamURL.copy( sPackageURL.getLength() ); + sal_Int32 nLastIndex = sRequestedName.lastIndexOf( '/' ) + 1; + if ( ( nLastIndex > 0 ) && ( nLastIndex < sRequestedName.getLength() ) ) + sRequestedName = sRequestedName.copy( nLastIndex ); + nLastIndex = sRequestedName.lastIndexOf( '.' ); + if ( nLastIndex >= 0 ) + sRequestedName = sRequestedName.copy( 0, nLastIndex ); + if ( !sRequestedName.isEmpty() ) { - bIsEmbeddedImageWithExistingStreamInPackage = true; - - OUString sRequestedName = aStreamURL.copy( sPackageURL.getLength() ); - sal_Int32 nLastIndex = sRequestedName.lastIndexOf( '/' ) + 1; - if ( ( nLastIndex > 0 ) && ( nLastIndex < sRequestedName.getLength() ) ) - sRequestedName = sRequestedName.copy( nLastIndex ); - nLastIndex = sRequestedName.lastIndexOf( '.' ); - if ( nLastIndex >= 0 ) - sRequestedName = sRequestedName.copy( 0, nLastIndex ); - if ( !sRequestedName.isEmpty() ) - { - aResolveURL += "?requestedName=" + sRequestedName; - } + aResolveURL += "?requestedName=" + sRequestedName; } + } - const OUString aStr = mrExport.AddEmbeddedGraphicObject( aResolveURL ); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, aStr ); + const OUString aStr = mrExport.AddEmbeddedGraphicObject( aResolveURL ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, aStr ); - if( !aStr.isEmpty() ) + if( !aStr.isEmpty() ) + { + // apply possible changed stream URL to embedded image object + if ( bIsEmbeddedImageWithExistingStreamInPackage ) { - // apply possible changed stream URL to embedded image object - if ( bIsEmbeddedImageWithExistingStreamInPackage ) + OUString newStreamURL = sPackageURL; + if ( aStr[0] == '#' ) { - OUString newStreamURL = sPackageURL; - if ( aStr[0] == '#' ) - { - newStreamURL += aStr.copy( 1, aStr.getLength() - 1 ); - } - else - { - newStreamURL += aStr; - } + newStreamURL += aStr.copy( 1, aStr.getLength() - 1 ); + } + else + { + newStreamURL += aStr; + } - if (newStreamURL != aStreamURL) - { - xPropSet->setPropertyValue("GraphicStreamURL", uno::Any(newStreamURL)); - } + if (newStreamURL != aStreamURL) + { + xPropSet->setPropertyValue("GraphicStreamURL", uno::Any(newStreamURL)); } - - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); } - } - else - { - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, OUString() ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); } + } + else + { + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, OUString() ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + } - { - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_IMAGE, true, true); + { + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_IMAGE, true, true); - if( !sImageURL.isEmpty() ) - { - // optional office:binary-data - mrExport.AddEmbeddedGraphicObjectAsBase64( sImageURL ); - } - if( !bIsEmptyPresObj ) - ImpExportText( xShape ); + if( !sImageURL.isEmpty() ) + { + // optional office:binary-data + mrExport.AddEmbeddedGraphicObjectAsBase64( sImageURL ); } - - //Resolves: fdo#62461 put preferred image first above, followed by - //fallback here if( !bIsEmptyPresObj ) + ImpExportText( xShape ); + } + + //Resolves: fdo#62461 put preferred image first above, followed by + //fallback here + if( !bIsEmptyPresObj ) + { + OUString aReplacementUrl; + xPropSet->getPropertyValue("ReplacementGraphicURL") >>= aReplacementUrl; + + // If there is no url, then the graphic is empty + if(!aReplacementUrl.isEmpty()) { - OUString aReplacementUrl; - xPropSet->getPropertyValue("ReplacementGraphicURL") >>= aReplacementUrl; + const OUString aStr = mrExport.AddEmbeddedGraphicObject(aReplacementUrl); - // If there is no url, then the graphic is empty - if(!aReplacementUrl.isEmpty()) + if(aStr.getLength()) { - const OUString aStr = mrExport.AddEmbeddedGraphicObject(aReplacementUrl); - - if(aStr.getLength()) - { - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, aStr); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, aStr); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - // xlink:href for replacement, only written for Svg content - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_IMAGE, true, true); + // xlink:href for replacement, only written for Svg content + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_IMAGE, true, true); - // optional office:binary-data - mrExport.AddEmbeddedGraphicObjectAsBase64(aReplacementUrl); - } + // optional office:binary-data + mrExport.AddEmbeddedGraphicObjectAsBase64(aReplacementUrl); } } } + } - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + + // image map + GetExport().GetImageMapExport().Export( xPropSet ); + ImpExportDescription( xShape ); // #i68101# - // image map - GetExport().GetImageMapExport().Export( xPropSet ); - ImpExportDescription( xShape ); // #i68101# - } } void XMLShapeExport::ImpExportChartShape( @@ -2749,149 +2753,150 @@ void XMLShapeExport::ImpExportOLE2Shape( uno::Reference< container::XNamed > xNamed(xShape, uno::UNO_QUERY); SAL_WARN_IF( !xPropSet.is() || !xNamed.is(), "xmloff", "ole shape is not implementing needed interfaces"); - if(xPropSet.is() && xNamed.is()) - { - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + if(!(xPropSet.is() && xNamed.is())) + return; - bool bIsEmptyPresObj = false; + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - // presentation settings - if(eShapeType == XmlShapeTypePresOLE2Shape) - bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_OBJECT) ); - else if(eShapeType == XmlShapeTypePresChartShape) - bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_CHART) ); - else if(eShapeType == XmlShapeTypePresSheetShape) - bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_TABLE) ); + bool bIsEmptyPresObj = false; - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - bool bExportEmbedded(mrExport.getExportFlags() & SvXMLExportFlags::EMBEDDED); - OUString sPersistName; - SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); + // presentation settings + if(eShapeType == XmlShapeTypePresOLE2Shape) + bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_OBJECT) ); + else if(eShapeType == XmlShapeTypePresChartShape) + bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_CHART) ); + else if(eShapeType == XmlShapeTypePresSheetShape) + bIsEmptyPresObj = ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_TABLE) ); + + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + bool bExportEmbedded(mrExport.getExportFlags() & SvXMLExportFlags::EMBEDDED); + OUString sPersistName; + SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); - const bool bSaveBackwardsCompatible = bool( mrExport.getExportFlags() & SvXMLExportFlags::SAVEBACKWARDCOMPATIBLE ); + const bool bSaveBackwardsCompatible = bool( mrExport.getExportFlags() & SvXMLExportFlags::SAVEBACKWARDCOMPATIBLE ); - if( !bIsEmptyPresObj || bSaveBackwardsCompatible ) + if( !bIsEmptyPresObj || bSaveBackwardsCompatible ) + { + if (pAttrList) { - if (pAttrList) - { - mrExport.AddAttributeList(pAttrList); - } + mrExport.AddAttributeList(pAttrList); + } - OUString sClassId; - OUString sURL; - bool bInternal = false; - xPropSet->getPropertyValue("IsInternal") >>= bInternal; + OUString sClassId; + OUString sURL; + bool bInternal = false; + xPropSet->getPropertyValue("IsInternal") >>= bInternal; - if( !bIsEmptyPresObj ) - { + if( !bIsEmptyPresObj ) + { - if ( bInternal ) - { - // OOo internal links have no storage persistence, URL is stored in the XML file - // the result LinkURL is empty in case the object is not a link - xPropSet->getPropertyValue("LinkURL") >>= sURL; - } + if ( bInternal ) + { + // OOo internal links have no storage persistence, URL is stored in the XML file + // the result LinkURL is empty in case the object is not a link + xPropSet->getPropertyValue("LinkURL") >>= sURL; + } - xPropSet->getPropertyValue("PersistName") >>= sPersistName; - if ( sURL.isEmpty() ) + xPropSet->getPropertyValue("PersistName") >>= sPersistName; + if ( sURL.isEmpty() ) + { + if( !sPersistName.isEmpty() ) { - if( !sPersistName.isEmpty() ) - { - sURL = "vnd.sun.star.EmbeddedObject:" + sPersistName; - } + sURL = "vnd.sun.star.EmbeddedObject:" + sPersistName; } + } - if( !bInternal ) - xPropSet->getPropertyValue("CLSID") >>= sClassId; + if( !bInternal ) + xPropSet->getPropertyValue("CLSID") >>= sClassId; - if( !sClassId.isEmpty() ) - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_CLASS_ID, sClassId ); + if( !sClassId.isEmpty() ) + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_CLASS_ID, sClassId ); - if(!bExportEmbedded) + if(!bExportEmbedded) + { + // xlink:href + if( !sURL.isEmpty() ) { - // xlink:href - if( !sURL.isEmpty() ) - { - // #96717# in theorie, if we don't have a url we shouldn't even - // export this ole shape. But practical its to risky right now - // to change this so we better dispose this on load - sURL = mrExport.AddEmbeddedObject( sURL ); - - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sURL ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - } + // #96717# in theorie, if we don't have a url we shouldn't even + // export this ole shape. But practical its to risky right now + // to change this so we better dispose this on load + sURL = mrExport.AddEmbeddedObject( sURL ); + + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sURL ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); } } - else - { - // export empty href for empty placeholders to be valid ODF - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, "" ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - } + } + else + { + // export empty href for empty placeholders to be valid ODF + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, "" ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + } + + enum XMLTokenEnum eElem = sClassId.isEmpty() ? XML_OBJECT : XML_OBJECT_OLE ; + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, eElem, true, true ); - enum XMLTokenEnum eElem = sClassId.isEmpty() ? XML_OBJECT : XML_OBJECT_OLE ; - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, eElem, true, true ); + // tdf#112547 export text as child of draw:object, where import expects it + if (!bIsEmptyPresObj && supportsText(eShapeType)) + { + // #i118485# Add text export, the draw OLE shape allows text now + ImpExportText( xShape, TextPNS::EXTENSION ); + } - // tdf#112547 export text as child of draw:object, where import expects it - if (!bIsEmptyPresObj && supportsText(eShapeType)) + if(bExportEmbedded && !bIsEmptyPresObj) + { + if(bInternal) { - // #i118485# Add text export, the draw OLE shape allows text now - ImpExportText( xShape, TextPNS::EXTENSION ); + // embedded XML + uno::Reference< lang::XComponent > xComp; + xPropSet->getPropertyValue("Model") >>= xComp; + SAL_WARN_IF( !xComp.is(), "xmloff", "no xModel for own OLE format" ); + mrExport.ExportEmbeddedOwnObject( xComp ); } - - if(bExportEmbedded && !bIsEmptyPresObj) + else { - if(bInternal) - { - // embedded XML - uno::Reference< lang::XComponent > xComp; - xPropSet->getPropertyValue("Model") >>= xComp; - SAL_WARN_IF( !xComp.is(), "xmloff", "no xModel for own OLE format" ); - mrExport.ExportEmbeddedOwnObject( xComp ); - } - else - { - // embed as Base64 - // this is an alien object ( currently MSOLE is the only supported type of such objects ) - // in case it is not an OASIS format the object should be asked to store replacement image if possible - - OUString sURLRequest( sURL ); - if ( !( mrExport.getExportFlags() & SvXMLExportFlags::OASIS ) ) - sURLRequest += "?oasis=false"; - mrExport.AddEmbeddedObjectAsBase64( sURLRequest ); - } + // embed as Base64 + // this is an alien object ( currently MSOLE is the only supported type of such objects ) + // in case it is not an OASIS format the object should be asked to store replacement image if possible + + OUString sURLRequest( sURL ); + if ( !( mrExport.getExportFlags() & SvXMLExportFlags::OASIS ) ) + sURLRequest += "?oasis=false"; + mrExport.AddEmbeddedObjectAsBase64( sURLRequest ); } } - if( !bIsEmptyPresObj ) + } + if( !bIsEmptyPresObj ) + { + OUString sURL( "vnd.sun.star.GraphicObject:" ); + sURL += sPersistName; + if( !bExportEmbedded ) { - OUString sURL( "vnd.sun.star.GraphicObject:" ); - sURL += sPersistName; - if( !bExportEmbedded ) - { - sURL = GetExport().AddEmbeddedObject( sURL ); - mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sURL ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - } - - SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_DRAW, - XML_IMAGE, false, true ); - - if( bExportEmbedded ) - GetExport().AddEmbeddedObjectAsBase64( sURL ); + sURL = GetExport().AddEmbeddedObject( sURL ); + mrExport.AddAttribute(XML_NAMESPACE_XLINK, XML_HREF, sURL ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); } - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); - ImpExportDescription( xShape ); // #i68101# + SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_DRAW, + XML_IMAGE, false, true ); + + if( bExportEmbedded ) + GetExport().AddEmbeddedObjectAsBase64( sURL ); } + + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + ImpExportDescription( xShape ); // #i68101# + } void XMLShapeExport::ImpExportPageShape( @@ -2935,49 +2940,50 @@ void XMLShapeExport::ImpExportCaptionShape( XMLShapeExportFlags nFeatures /* = SEF_DEFAULT */, awt::Point* pRefPoint /* = NULL */) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) + if(!xPropSet.is()) + return; + + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + + // evtl. corner radius? + sal_Int32 nCornerRadius(0); + xPropSet->getPropertyValue("CornerRadius") >>= nCornerRadius; + if(nCornerRadius) { - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + OUStringBuffer sStringBuffer; + mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, + nCornerRadius); + mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_CORNER_RADIUS, sStringBuffer.makeStringAndClear()); + } - // evtl. corner radius? - sal_Int32 nCornerRadius(0); - xPropSet->getPropertyValue("CornerRadius") >>= nCornerRadius; - if(nCornerRadius) - { - OUStringBuffer sStringBuffer; - mrExport.GetMM100UnitConverter().convertMeasureToXML(sStringBuffer, - nCornerRadius); - mrExport.AddAttribute(XML_NAMESPACE_DRAW, XML_CORNER_RADIUS, sStringBuffer.makeStringAndClear()); - } + awt::Point aCaptionPoint; + xPropSet->getPropertyValue("CaptionPoint") >>= aCaptionPoint; - awt::Point aCaptionPoint; - xPropSet->getPropertyValue("CaptionPoint") >>= aCaptionPoint; + mrExport.GetMM100UnitConverter().convertMeasureToXML(msBuffer, + aCaptionPoint.X); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CAPTION_POINT_X, msBuffer.makeStringAndClear() ); + mrExport.GetMM100UnitConverter().convertMeasureToXML(msBuffer, + aCaptionPoint.Y); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CAPTION_POINT_Y, msBuffer.makeStringAndClear() ); - mrExport.GetMM100UnitConverter().convertMeasureToXML(msBuffer, - aCaptionPoint.X); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CAPTION_POINT_X, msBuffer.makeStringAndClear() ); - mrExport.GetMM100UnitConverter().convertMeasureToXML(msBuffer, - aCaptionPoint.Y); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CAPTION_POINT_Y, msBuffer.makeStringAndClear() ); + // write Caption shape. Add export later. + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + bool bAnnotation( (nFeatures & XMLShapeExportFlags::ANNOTATION) == XMLShapeExportFlags::ANNOTATION ); - // write Caption shape. Add export later. - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - bool bAnnotation( (nFeatures & XMLShapeExportFlags::ANNOTATION) == XMLShapeExportFlags::ANNOTATION ); + SvXMLElementExport aObj( mrExport, + (bAnnotation ? XML_NAMESPACE_OFFICE + : XML_NAMESPACE_DRAW), + (bAnnotation ? XML_ANNOTATION : XML_CAPTION), + bCreateNewline, true ); - SvXMLElementExport aObj( mrExport, - (bAnnotation ? XML_NAMESPACE_OFFICE - : XML_NAMESPACE_DRAW), - (bAnnotation ? XML_ANNOTATION : XML_CAPTION), - bCreateNewline, true ); + ImpExportDescription( xShape ); // #i68101# + ImpExportEvents( xShape ); + ImpExportGluePoints( xShape ); + if( bAnnotation ) + mrExport.exportAnnotationMeta( xShape ); + ImpExportText( xShape ); - ImpExportDescription( xShape ); // #i68101# - ImpExportEvents( xShape ); - ImpExportGluePoints( xShape ); - if( bAnnotation ) - mrExport.exportAnnotationMeta( xShape ); - ImpExportText( xShape ); - } } void XMLShapeExport::ImpExportFrameShape( @@ -2985,33 +2991,34 @@ void XMLShapeExport::ImpExportFrameShape( XMLShapeExportFlags nFeatures, css::awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + if(!xPropSet.is()) + return; - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - // export frame url - OUString aStr; - xPropSet->getPropertyValue("FrameURL") >>= aStr; - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStr) ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - - // export name - xPropSet->getPropertyValue("FrameName") >>= aStr; - if( !aStr.isEmpty() ) - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_FRAME_NAME, aStr ); - - // write floating frame - { - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_FLOATING_FRAME, true, true); - } + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); + + // export frame url + OUString aStr; + xPropSet->getPropertyValue("FrameURL") >>= aStr; + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStr) ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + + // export name + xPropSet->getPropertyValue("FrameName") >>= aStr; + if( !aStr.isEmpty() ) + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_FRAME_NAME, aStr ); + + // write floating frame + { + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_FLOATING_FRAME, true, true); } + } void XMLShapeExport::ImpExportAppletShape( @@ -3019,54 +3026,55 @@ void XMLShapeExport::ImpExportAppletShape( XMLShapeExportFlags nFeatures, css::awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + if(!xPropSet.is()) + return; - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - // export frame url - OUString aStr; - xPropSet->getPropertyValue("AppletCodeBase") >>= aStr; - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStr) ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - - // export draw:applet-name - xPropSet->getPropertyValue("AppletName") >>= aStr; - if( !aStr.isEmpty() ) - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_APPLET_NAME, aStr ); - - // export draw:code - xPropSet->getPropertyValue("AppletCode") >>= aStr; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CODE, aStr ); - - // export draw:may-script - bool bIsScript = false; - xPropSet->getPropertyValue("AppletIsScript") >>= bIsScript; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MAY_SCRIPT, bIsScript ? XML_TRUE : XML_FALSE ); + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); + + // export frame url + OUString aStr; + xPropSet->getPropertyValue("AppletCodeBase") >>= aStr; + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStr) ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + + // export draw:applet-name + xPropSet->getPropertyValue("AppletName") >>= aStr; + if( !aStr.isEmpty() ) + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_APPLET_NAME, aStr ); + + // export draw:code + xPropSet->getPropertyValue("AppletCode") >>= aStr; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_CODE, aStr ); + + // export draw:may-script + bool bIsScript = false; + xPropSet->getPropertyValue("AppletIsScript") >>= bIsScript; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MAY_SCRIPT, bIsScript ? XML_TRUE : XML_FALSE ); + { + // write applet + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_APPLET, true, true); + + // export parameters + uno::Sequence< beans::PropertyValue > aCommands; + xPropSet->getPropertyValue("AppletCommands") >>= aCommands; + const sal_Int32 nCount = aCommands.getLength(); + for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) { - // write applet - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_APPLET, true, true); - - // export parameters - uno::Sequence< beans::PropertyValue > aCommands; - xPropSet->getPropertyValue("AppletCommands") >>= aCommands; - const sal_Int32 nCount = aCommands.getLength(); - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) - { - aCommands[nIndex].Value >>= aStr; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aCommands[nIndex].Name ); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, aStr ); - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ); - } + aCommands[nIndex].Value >>= aStr; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aCommands[nIndex].Name ); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, aStr ); + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ); } } + } void XMLShapeExport::ImpExportPluginShape( @@ -3074,45 +3082,46 @@ void XMLShapeExport::ImpExportPluginShape( XMLShapeExportFlags nFeatures, css::awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); + if(!xPropSet.is()) + return; - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - // export plugin url - OUString aStr; - xPropSet->getPropertyValue("PluginURL") >>= aStr; - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStr) ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aElement( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); + + // export plugin url + OUString aStr; + xPropSet->getPropertyValue("PluginURL") >>= aStr; + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, GetExport().GetRelativeReference(aStr) ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - // export mime-type - xPropSet->getPropertyValue("PluginMimeType") >>= aStr; - if(!aStr.isEmpty()) - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MIME_TYPE, aStr ); + // export mime-type + xPropSet->getPropertyValue("PluginMimeType") >>= aStr; + if(!aStr.isEmpty()) + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MIME_TYPE, aStr ); + { + // write plugin + SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_PLUGIN, true, true); + + // export parameters + uno::Sequence< beans::PropertyValue > aCommands; + xPropSet->getPropertyValue("PluginCommands") >>= aCommands; + const sal_Int32 nCount = aCommands.getLength(); + for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) { - // write plugin - SvXMLElementExport aOBJ(mrExport, XML_NAMESPACE_DRAW, XML_PLUGIN, true, true); - - // export parameters - uno::Sequence< beans::PropertyValue > aCommands; - xPropSet->getPropertyValue("PluginCommands") >>= aCommands; - const sal_Int32 nCount = aCommands.getLength(); - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) - { - aCommands[nIndex].Value >>= aStr; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aCommands[nIndex].Name ); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, aStr ); - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ); - } + aCommands[nIndex].Value >>= aStr; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aCommands[nIndex].Name ); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, aStr ); + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ); } } + } static void lcl_CopyStream( @@ -3188,89 +3197,90 @@ void XMLShapeExport::ImpExportMediaShape( XmlShapeType eShapeType, XMLShapeExportFlags nFeatures, css::awt::Point* pRefPoint) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if(xPropSet.is()) - { - // Transformation - ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - - if(eShapeType == XmlShapeTypePresMediaShape) - { - (void)ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_OBJECT) ); - } - bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# - SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, - XML_FRAME, bCreateNewline, true ); - - // export media url - OUString aMediaURL; - xPropSet->getPropertyValue("MediaURL") >>= aMediaURL; - OUString sMimeType; - xPropSet->getPropertyValue("MediaMimeType") >>= sMimeType; - - OUString const persistentURL = - lcl_StoreMediaAndGetURL(GetExport(), xPropSet, aMediaURL, sMimeType); - - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, persistentURL ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); - mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); - - // export mime-type - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MIME_TYPE, sMimeType ); - - // write plugin - auto pPluginOBJ = o3tl::make_unique<SvXMLElementExport>(mrExport, XML_NAMESPACE_DRAW, XML_PLUGIN, !( nFeatures & XMLShapeExportFlags::NO_WS ), true); + if(!xPropSet.is()) + return; - // export parameters - const OUString aFalseStr( "false" ), aTrueStr( "true" ); + // Transformation + ImpExportNewTrans(xPropSet, nFeatures, pRefPoint); - bool bLoop = false; - const OUString aLoopStr( "Loop" ); - xPropSet->getPropertyValue( aLoopStr ) >>= bLoop; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aLoopStr ); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, bLoop ? aTrueStr : aFalseStr ); - delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); + if(eShapeType == XmlShapeTypePresMediaShape) + { + (void)ImpExportPresentationAttributes( xPropSet, GetXMLToken(XML_PRESENTATION_OBJECT) ); + } + bool bCreateNewline( (nFeatures & XMLShapeExportFlags::NO_WS) == XMLShapeExportFlags::NONE ); // #86116#/#92210# + SvXMLElementExport aElem( mrExport, XML_NAMESPACE_DRAW, + XML_FRAME, bCreateNewline, true ); + + // export media url + OUString aMediaURL; + xPropSet->getPropertyValue("MediaURL") >>= aMediaURL; + OUString sMimeType; + xPropSet->getPropertyValue("MediaMimeType") >>= sMimeType; + + OUString const persistentURL = + lcl_StoreMediaAndGetURL(GetExport(), xPropSet, aMediaURL, sMimeType); + + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_HREF, persistentURL ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_TYPE, XML_SIMPLE ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_SHOW, XML_EMBED ); + mrExport.AddAttribute ( XML_NAMESPACE_XLINK, XML_ACTUATE, XML_ONLOAD ); + + // export mime-type + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_MIME_TYPE, sMimeType ); + + // write plugin + auto pPluginOBJ = o3tl::make_unique<SvXMLElementExport>(mrExport, XML_NAMESPACE_DRAW, XML_PLUGIN, !( nFeatures & XMLShapeExportFlags::NO_WS ), true); + + // export parameters + const OUString aFalseStr( "false" ), aTrueStr( "true" ); + + bool bLoop = false; + const OUString aLoopStr( "Loop" ); + xPropSet->getPropertyValue( aLoopStr ) >>= bLoop; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aLoopStr ); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, bLoop ? aTrueStr : aFalseStr ); + delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); + + bool bMute = false; + const OUString aMuteStr( "Mute" ); + xPropSet->getPropertyValue( aMuteStr ) >>= bMute; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aMuteStr ); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, bMute ? aTrueStr : aFalseStr ); + delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); + + sal_Int16 nVolumeDB = 0; + const OUString aVolumeDBStr( "VolumeDB" ); + xPropSet->getPropertyValue("VolumeDB") >>= nVolumeDB; + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aVolumeDBStr ); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, OUString::number( nVolumeDB ) ); + delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); + + media::ZoomLevel eZoom; + const OUString aZoomStr( "Zoom" ); + OUString aZoomValue; + xPropSet->getPropertyValue("Zoom") >>= eZoom; + switch( eZoom ) + { + case media::ZoomLevel_ZOOM_1_TO_4 : aZoomValue = "25%"; break; + case media::ZoomLevel_ZOOM_1_TO_2 : aZoomValue = "50%"; break; + case media::ZoomLevel_ORIGINAL : aZoomValue = "100%"; break; + case media::ZoomLevel_ZOOM_2_TO_1 : aZoomValue = "200%"; break; + case media::ZoomLevel_ZOOM_4_TO_1 : aZoomValue = "400%"; break; + case media::ZoomLevel_FIT_TO_WINDOW: aZoomValue = "fit"; break; + case media::ZoomLevel_FIT_TO_WINDOW_FIXED_ASPECT: aZoomValue = "fixedfit"; break; + case media::ZoomLevel_FULLSCREEN : aZoomValue = "fullscreen"; break; - bool bMute = false; - const OUString aMuteStr( "Mute" ); - xPropSet->getPropertyValue( aMuteStr ) >>= bMute; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aMuteStr ); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, bMute ? aTrueStr : aFalseStr ); - delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); + default: + break; + } - sal_Int16 nVolumeDB = 0; - const OUString aVolumeDBStr( "VolumeDB" ); - xPropSet->getPropertyValue("VolumeDB") >>= nVolumeDB; - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aVolumeDBStr ); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, OUString::number( nVolumeDB ) ); + if( !aZoomValue.isEmpty() ) + { + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aZoomStr ); + mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, aZoomValue ); delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); - - media::ZoomLevel eZoom; - const OUString aZoomStr( "Zoom" ); - OUString aZoomValue; - xPropSet->getPropertyValue("Zoom") >>= eZoom; - switch( eZoom ) - { - case media::ZoomLevel_ZOOM_1_TO_4 : aZoomValue = "25%"; break; - case media::ZoomLevel_ZOOM_1_TO_2 : aZoomValue = "50%"; break; - case media::ZoomLevel_ORIGINAL : aZoomValue = "100%"; break; - case media::ZoomLevel_ZOOM_2_TO_1 : aZoomValue = "200%"; break; - case media::ZoomLevel_ZOOM_4_TO_1 : aZoomValue = "400%"; break; - case media::ZoomLevel_FIT_TO_WINDOW: aZoomValue = "fit"; break; - case media::ZoomLevel_FIT_TO_WINDOW_FIXED_ASPECT: aZoomValue = "fixedfit"; break; - case media::ZoomLevel_FULLSCREEN : aZoomValue = "fullscreen"; break; - - default: - break; - } - - if( !aZoomValue.isEmpty() ) - { - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_NAME, aZoomStr ); - mrExport.AddAttribute( XML_NAMESPACE_DRAW, XML_VALUE, aZoomValue ); - delete( new SvXMLElementExport( mrExport, XML_NAMESPACE_DRAW, XML_PARAM, false, true ) ); - } } + } void XMLShapeExport::ImpExport3DSceneShape( const uno::Reference< drawing::XShape >& xShape, XMLShapeExportFlags nFeatures, awt::Point* pRefPoint) @@ -4705,37 +4715,38 @@ void XMLShapeExport::ImpExportCustomShape( XMLShapeExportFlags nFeatures, css::awt::Point* pRefPoint ) { const uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY); - if ( xPropSet.is() ) - { - OUString aStr; - uno::Reference< beans::XPropertySetInfo > xPropSetInfo( xPropSet->getPropertySetInfo() ); + if ( !xPropSet.is() ) + return; - // Transformation - ImpExportNewTrans( xPropSet, nFeatures, pRefPoint ); + OUString aStr; + uno::Reference< beans::XPropertySetInfo > xPropSetInfo( xPropSet->getPropertySetInfo() ); + + // Transformation + ImpExportNewTrans( xPropSet, nFeatures, pRefPoint ); - if ( xPropSetInfo.is() ) + if ( xPropSetInfo.is() ) + { ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits