[Libreoffice-commits] core.git: Branch 'libreoffice-4-3' - oox/source sd/qa

Zolnai Tamás tamas.zolnai at collabora.com
Mon Jan 5 05:48:50 PST 2015


 oox/source/drawingml/shape.cxx        |   13 ++++++-----
 sd/qa/unit/data/pptx/bnc862510_6.pptx |binary
 sd/qa/unit/import-tests.cxx           |   40 ++++++++++++++++++++++++++++++++++
 3 files changed, 48 insertions(+), 5 deletions(-)

New commits:
commit 4679ba35ad02a720789a8d0c571fafe4122d91a2
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Mon Dec 22 17:53:00 2014 +0100

    bnc#862510: PPTX import: Wrong text color inside shape
    
    When theme index is 0, it means it's unset so we should not
    apply that.
    
    (cherry picked from commit 89206c472ecf18bfde6824cea8004921cd404365)
    
    Conflicts:
    	sd/qa/unit/import-tests.cxx
    
    Conflicts:
    	sd/qa/unit/import-tests.cxx
    
    Change-Id: I62a9cd2a9b4c19f5acffc334d5e8263fe24fc8fd
    Reviewed-on: https://gerrit.libreoffice.org/13606
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    Tested-by: Andras Timar <andras.timar at collabora.com>

diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 93e9789..ef0feb7 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1027,11 +1027,14 @@ Reference< XShape > Shape::createAndInsert(
                 TextCharacterProperties aCharStyleProperties;
                 if( const ShapeStyleRef* pFontRef = getShapeStyleRef( XML_fontRef ) )
                 {
-                    if( pTheme )
-                        if( const TextCharacterProperties* pCharProps = pTheme->getFontStyle( pFontRef->mnThemedIdx ) )
-                            aCharStyleProperties.assignUsed( *pCharProps );
-                    SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "use font color");
-                    aCharStyleProperties.maCharColor.assignIfUsed( pFontRef->maPhClr );
+                    if( pFontRef->mnThemedIdx != 0 )
+                    {
+                        if( pTheme )
+                            if( const TextCharacterProperties* pCharProps = pTheme->getFontStyle( pFontRef->mnThemedIdx ) )
+                                aCharStyleProperties.assignUsed( *pCharProps );
+                        SAL_INFO("oox.drawingml", OSL_THIS_FUNC << "use font color");
+                        aCharStyleProperties.maCharColor.assignIfUsed( pFontRef->maPhClr );
+                    }
                 }
 
                 Reference < XTextCursor > xAt = xText->createTextCursor();
diff --git a/sd/qa/unit/data/pptx/bnc862510_6.pptx b/sd/qa/unit/data/pptx/bnc862510_6.pptx
new file mode 100644
index 0000000..fc5f008
Binary files /dev/null and b/sd/qa/unit/data/pptx/bnc862510_6.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index 68a205e..e5ab540 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -97,6 +97,7 @@ public:
     void testFdo79731();
     void testBnc904423();
     void testShapeLineStyle();
+    void testBnc862510_6();
 #if !defined WNT
     void testBnc822341();
 #endif
@@ -135,6 +136,7 @@ public:
     CPPUNIT_TEST(testFdo79731);
     CPPUNIT_TEST(testBnc904423);
     CPPUNIT_TEST(testShapeLineStyle);
+    CPPUNIT_TEST(testBnc862510_6);
 #if !defined WNT
     CPPUNIT_TEST(testBnc822341);
 #endif
@@ -1251,6 +1253,44 @@ void SdFiltersTest::testShapeLineStyle()
     xDocShRef->DoClose();
 }
 
+void SdFiltersTest::testBnc862510_6()
+{
+    // Black text was imported instead of gray
+    ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc862510_6.pptx"));
+
+    uno::Reference< drawing::XDrawPagesSupplier > xDoc(
+        xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW );
+
+    uno::Reference< drawing::XDrawPage > xPage(
+        xDoc->getDrawPages()->getByIndex(0), uno::UNO_QUERY_THROW );
+
+    uno::Reference< beans::XPropertySet > xShape(
+        xPage->getByIndex(0), uno::UNO_QUERY );
+    CPPUNIT_ASSERT_MESSAGE( "no shape", xShape.is() );
+
+    // Get first paragraph of the text
+    uno::Reference<text::XText> xText = uno::Reference<text::XTextRange>(xShape, uno::UNO_QUERY)->getText();
+    CPPUNIT_ASSERT_MESSAGE( "not a text shape", xText.is() );
+    uno::Reference<container::XEnumerationAccess> paraEnumAccess;
+    paraEnumAccess.set(xText, uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> paraEnum = paraEnumAccess->createEnumeration();
+    uno::Reference<text::XTextRange> const xParagraph(paraEnum->nextElement(),
+                uno::UNO_QUERY_THROW);
+
+    // Get first run of the paragraph
+    uno::Reference<container::XEnumerationAccess> xRunEnumAccess(xParagraph, uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> xRunEnum = xRunEnumAccess->createEnumeration();
+    uno::Reference<text::XTextRange> xRun(xRunEnum->nextElement(), uno::UNO_QUERY);
+    uno::Reference< beans::XPropertySet > xPropSet( xRun, uno::UNO_QUERY_THROW );
+    sal_Int32 nCharColor;
+    xPropSet->getPropertyValue( "CharColor" ) >>= nCharColor;
+
+    // Color should be black
+    CPPUNIT_ASSERT_EQUAL( sal_Int32(0x8B8B8B), nCharColor );
+
+    xDocShRef->DoClose();
+}
+
 #if !defined WNT
 
 void SdFiltersTest::testBnc822341()


More information about the Libreoffice-commits mailing list