[Libreoffice-commits] core.git: oox/source sd/qa

Paul Trojahn paul.trojahn at gmail.com
Mon Jul 17 20:10:43 UTC 2017


 oox/source/drawingml/fillproperties.cxx |    4 ++--
 oox/source/export/drawingml.cxx         |    6 +++---
 sd/qa/unit/data/pptx/tdf109067.pptx     |binary
 sd/qa/unit/import-tests.cxx             |   13 +++++++++++++
 4 files changed, 18 insertions(+), 5 deletions(-)

New commits:
commit 30907c0bb7eb8f1f69f5527ed67fab0bba02ceeb
Author: Paul Trojahn <paul.trojahn at gmail.com>
Date:   Thu Jul 6 13:36:58 2017 +0200

    tdf#109067 Fix default value of rotWithShape
    
    According to the OOXML standard the default value is true, so for
    the export of gradients and blips it has to be set explicitly to
    false.
    
    Change-Id: I06f6f2a00fca88ec79e2eb956c3c780f037a9d1e
    Reviewed-on: https://gerrit.libreoffice.org/39973
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/oox/source/drawingml/fillproperties.cxx b/oox/source/drawingml/fillproperties.cxx
index 7d986709603b..81ab8c66396a 100644
--- a/oox/source/drawingml/fillproperties.cxx
+++ b/oox/source/drawingml/fillproperties.cxx
@@ -362,8 +362,8 @@ void FillProperties::pushToPropMap( ShapePropertyMap& rPropMap,
                     if ( bFlipV )
                         nShapeRotation = -nShapeRotation;
 
-                    // "rotate with shape" not set, or set to false -> do not rotate
-                    if ( !maGradientProps.moRotateWithShape.get( false ) )
+                    // "rotate with shape" set to false -> do not rotate
+                    if ( !maGradientProps.moRotateWithShape.get( true ) )
                         nShapeRotation = 0;
 
                     if( maGradientProps.moGradientPath.has() )
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index b3c4f68a2607..7c50403f85b6 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -386,14 +386,14 @@ void DrawingML::WriteGradientFill( const Reference< XPropertySet >& rXPropSet )
             // If we have no gradient stops that means original gradient were defined by a theme.
             if( aGradientStops.hasElements() )
             {
-                mpFS->startElementNS( XML_a, XML_gradFill, FSEND );
+                mpFS->startElementNS( XML_a, XML_gradFill, XML_rotWithShape, "0", FSEND );
                 WriteGrabBagGradientFill(aGradientStops, aGradient);
                 mpFS->endElementNS( XML_a, XML_gradFill );
             }
         }
         else
         {
-            mpFS->startElementNS( XML_a, XML_gradFill, FSEND );
+            mpFS->startElementNS( XML_a, XML_gradFill, XML_rotWithShape, "0", FSEND );
             WriteGradientFill(aGradient);
             mpFS->endElementNS( XML_a, XML_gradFill );
         }
@@ -1063,7 +1063,7 @@ void DrawingML::WriteBlipFill( const Reference< XPropertySet >& rXPropSet, const
     {
         SAL_INFO("oox.shape", "URL: " << sBitmapURL);
 
-        mpFS->startElementNS( nXmlNamespace , XML_blipFill, FSEND );
+        mpFS->startElementNS( nXmlNamespace , XML_blipFill, XML_rotWithShape, "0", FSEND );
 
         WriteBlip( rXPropSet, sBitmapURL, bRelPathToMedia );
 
diff --git a/sd/qa/unit/data/pptx/tdf109067.pptx b/sd/qa/unit/data/pptx/tdf109067.pptx
new file mode 100644
index 000000000000..ef213774cbd8
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf109067.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index a4d8253399a6..b71b4aec4e8e 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -161,6 +161,7 @@ public:
     void testTdf100926();
     void testTdf89064();
     void testTdf108925();
+    void testTdf109067();
 
     bool checkPattern(sd::DrawDocShellRef& rDocRef, int nShapeNumber, std::vector<sal_uInt8>& rExpected);
     void testPatternImport();
@@ -230,6 +231,7 @@ public:
     CPPUNIT_TEST(testPatternImport);
     CPPUNIT_TEST(testTdf89064);
     CPPUNIT_TEST(testTdf108925);
+    CPPUNIT_TEST(testTdf109067);
 
     CPPUNIT_TEST_SUITE_END();
 };
@@ -2206,6 +2208,17 @@ void SdImportTest::testTdf108925()
     xDocShRef->DoClose();
 }
 
+void SdImportTest::testTdf109067()
+{
+    sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf109067.pptx"), PPTX);
+    uno::Reference< beans::XPropertySet > xShape(getShapeFromPage(0, 0, xDocShRef), uno::UNO_QUERY_THROW);
+    awt::Gradient gradient;
+    CPPUNIT_ASSERT(xShape->getPropertyValue("FillGradient") >>= gradient);
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(450), gradient.Angle);
+
+    xDocShRef->DoClose();
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list