include/oox/export/drawingml.hxx | 12 ++++++++---- oox/source/export/drawingml.cxx | 27 +++++++++++++++++---------- oox/source/export/shapes.cxx | 3 +-- 3 files changed, 26 insertions(+), 16 deletions(-)
New commits: commit c816729beb6ad79fedf3566dbfccdc17f4dc1584 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Feb 26 07:05:42 2014 +0100 fix OOXML validation error for text shapes, related fdo#31551 blipFill and other fill elements are not allowed to appear together. See EG_FillProperties in the OOXML spec. See fdo31551-2.ods Change-Id: If5869ab9dc69815938c1f4c6fb180b0c1652ddcc diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx index 758f9bf..cf2de85 100644 --- a/include/oox/export/drawingml.hxx +++ b/include/oox/export/drawingml.hxx @@ -135,6 +135,9 @@ public: void WriteGradientFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet ); void WriteGradientFill( ::com::sun::star::awt::Gradient rGradient ); void WriteGrabBagGradientFill( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aGradientStops, ::com::sun::star::awt::Gradient rGradient); + + void WriteBlipOrNormalFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, + const OUString& rURLPropName ); void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, const OUString& sBitmapURL, sal_Int32 nXmlNamespace, bool bWriteMode, bool bRelPathToMedia = false ); diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 3e5b9f0..cd67e57 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -847,6 +847,17 @@ void DrawingML::WriteBlipMode( Reference< XPropertySet > rXPropSet, const OUStri } } +void DrawingML::WriteBlipOrNormalFill( Reference< XPropertySet > xPropSet, const OUString& rURLPropName ) +{ + // check for blip and otherwise fall back to normal fill + // we always store normal fill properties but OOXML + // uses a choice between our fill props and BlipFill + if (GetProperty ( xPropSet, rURLPropName )) + WriteBlipFill( xPropSet, rURLPropName ); + else + WriteFill(xPropSet); +} + void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, const OUString& sURLPropName ) { WriteBlipFill( rXPropSet, sURLPropName, XML_a ); diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index b62f8a3..2a8fe7e 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -943,8 +943,7 @@ ShapeExport& ShapeExport::WriteTextShape( Reference< XShape > xShape ) WriteShapeTransformation( xShape, XML_a,0,0,false); WritePresetShape( "rect" ); uno::Reference<beans::XPropertySet> xPropertySet(xShape, UNO_QUERY); - WriteFill(xPropertySet); - WriteBlipFill(xPropertySet, "GraphicURL"); + WriteBlipOrNormalFill(xPropertySet, "GraphicURL"); WriteOutline(xPropertySet); pFS->endElementNS( mnXmlNamespace, XML_spPr ); commit 3ca2069f0dc829e2a0fd9594e351c9fee6b3413a Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Feb 26 06:59:24 2014 +0100 use const reference for OUString Change-Id: I66b5f144da7951f36e32a840b8ed70f38539f105 diff --git a/include/oox/export/drawingml.hxx b/include/oox/export/drawingml.hxx index 4fe42cc..758f9bf 100644 --- a/include/oox/export/drawingml.hxx +++ b/include/oox/export/drawingml.hxx @@ -136,11 +136,12 @@ public: void WriteGradientFill( ::com::sun::star::awt::Gradient rGradient ); void WriteGrabBagGradientFill( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aGradientStops, ::com::sun::star::awt::Gradient rGradient); void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, - OUString sBitmapURL, sal_Int32 nXmlNamespace, + const OUString& sBitmapURL, sal_Int32 nXmlNamespace, bool bWriteMode, bool bRelPathToMedia = false ); - void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, OUString sURLPropName ); void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, - OUString sURLPropName, sal_Int32 nXmlNamespace ); + const OUString& sURLPropName ); + void WriteBlipFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, + const OUString& sURLPropName, sal_Int32 nXmlNamespace ); void WritePattFill( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet ); void WriteSrcRect( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >, const OUString& ); void WriteOutline( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet ); @@ -148,7 +149,7 @@ public: void WriteLinespacing( ::com::sun::star::style::LineSpacing& rLineSpacing ); OUString WriteBlip( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, - OUString& rURL, bool bRelPathToMedia = false , const Graphic *pGraphic=NULL ); + const OUString& rURL, bool bRelPathToMedia = false , const Graphic *pGraphic=NULL ); void WriteBlipMode( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet, const OUString& rURL ); void WriteShapeTransformation( ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > rXShape, diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 43e4fe8..3e5b9f0 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -804,7 +804,7 @@ OUString DrawingML::WriteImage( const Graphic& rGraphic , bool bRelPathToMedia ) return sRelId; } -OUString DrawingML::WriteBlip( Reference< XPropertySet > rXPropSet, OUString& rURL, bool bRelPathToMedia, const Graphic *pGraphic ) +OUString DrawingML::WriteBlip( Reference< XPropertySet > rXPropSet, const OUString& rURL, bool bRelPathToMedia, const Graphic *pGraphic ) { OUString sRelId = pGraphic ? WriteImage( *pGraphic, bRelPathToMedia ) : WriteImage( rURL, bRelPathToMedia ); sal_Int16 nBright = 0; @@ -847,12 +847,12 @@ void DrawingML::WriteBlipMode( Reference< XPropertySet > rXPropSet, const OUStri } } -void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, OUString sURLPropName ) +void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, const OUString& sURLPropName ) { WriteBlipFill( rXPropSet, sURLPropName, XML_a ); } -void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, OUString sURLPropName, sal_Int32 nXmlNamespace ) +void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, const OUString& sURLPropName, sal_Int32 nXmlNamespace ) { if ( GetProperty( rXPropSet, sURLPropName ) ) { OUString aURL; @@ -864,7 +864,7 @@ void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, OUString sUR } } -void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, OUString sBitmapURL, sal_Int32 nXmlNamespace, bool bWriteMode, bool bRelPathToMedia ) +void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, const OUString& sBitmapURL, sal_Int32 nXmlNamespace, bool bWriteMode, bool bRelPathToMedia ) { if ( !sBitmapURL.isEmpty() ) { DBG(fprintf (stderr, "URL: %s\n", OUStringToOString( sBitmapURL, RTL_TEXTENCODING_UTF8 ).getStr() )); commit 66cbbe4f3a3df0769c71f5f8878110c585f15a3b Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Feb 26 06:54:17 2014 +0100 fix indentation Change-Id: Iae492bf19edffe84f86bfa9bf247f120f8c9cb79 diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 9677e5e..43e4fe8 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -813,8 +813,8 @@ OUString DrawingML::WriteBlip( Reference< XPropertySet > rXPropSet, OUString& rU GET( nBright, AdjustLuminance ); GET( nContrast, AdjustContrast ); - mpFS->startElementNS( XML_a, XML_blip, - FSNS( XML_r, XML_embed), OUStringToOString( sRelId, RTL_TEXTENCODING_UTF8 ).getStr(), + mpFS->startElementNS( XML_a, XML_blip, + FSNS( XML_r, XML_embed), OUStringToOString( sRelId, RTL_TEXTENCODING_UTF8 ).getStr(), FSEND ); if( nBright || nContrast ) mpFS->singleElementNS( XML_a, XML_lum, commit c26ebdb818dd0063eb0182fe4b5c22f59b0b3efe Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Feb 26 06:47:03 2014 +0100 reduntant check Change-Id: I7969af2e6c73175b020816156478021dcaf8afb0 diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index e019ed6..9677e5e 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -869,10 +869,6 @@ void DrawingML::WriteBlipFill( Reference< XPropertySet > rXPropSet, OUString sBi if ( !sBitmapURL.isEmpty() ) { DBG(fprintf (stderr, "URL: %s\n", OUStringToOString( sBitmapURL, RTL_TEXTENCODING_UTF8 ).getStr() )); - - if( sBitmapURL.isEmpty() ) - return; - mpFS->startElementNS( nXmlNamespace , XML_blipFill, FSEND ); WriteBlip( rXPropSet, sBitmapURL, bRelPathToMedia ); commit 75f5eb2646834811f4984dc9c0d228ddc7dcdd27 Author: Markus Mohrhard <markus.mohrh...@collabora.co.uk> Date: Wed Feb 26 06:40:28 2014 +0100 first step in improving the OOXML validation result Change-Id: Ie4b99e2791cd3575d6544bfca6c6b4e386ac04ea diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 18d6c36..b62f8a3 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -944,8 +944,8 @@ ShapeExport& ShapeExport::WriteTextShape( Reference< XShape > xShape ) WritePresetShape( "rect" ); uno::Reference<beans::XPropertySet> xPropertySet(xShape, UNO_QUERY); WriteFill(xPropertySet); - WriteOutline(xPropertySet); WriteBlipFill(xPropertySet, "GraphicURL"); + WriteOutline(xPropertySet); pFS->endElementNS( mnXmlNamespace, XML_spPr ); WriteTextBox( xShape, mnXmlNamespace ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits