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

Zolnai Tamás tamas.zolnai at collabora.com
Tue Mar 31 09:15:34 PDT 2015


 oox/source/drawingml/table/tablecell.cxx |   11 +++++++++++
 sd/qa/unit/data/pptx/bnc910045.pptx      |binary
 sd/qa/unit/import-tests.cxx              |   23 +++++++++++++++++++++++
 3 files changed, 34 insertions(+)

New commits:
commit 0207796fe509e8d00a7101d4da8f8301cb58a099
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date:   Fri Dec 5 19:23:01 2014 +0100

    bnc#910045 wrong cell fill color defined by table style
    
    Problems were with those table styles which used
    color themes to define cell fill color.
    
    Reviewed-on: https://gerrit.libreoffice.org/15089
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Andras Timar <andras.timar at collabora.com>
    (cherry picked from commit debf3ffb87d607704ddea97f6710c3ceaa9a243d)
    Signed-off-by: Andras Timar <andras.timar at collabora.com>
    
    Conflicts:
    	sd/qa/unit/import-tests.cxx
    
    Change-Id: Ibde90df81ff253ba65618dde4038093d1caabfe8

diff --git a/oox/source/drawingml/table/tablecell.cxx b/oox/source/drawingml/table/tablecell.cxx
index 45486fd..c94848a 100644
--- a/oox/source/drawingml/table/tablecell.cxx
+++ b/oox/source/drawingml/table/tablecell.cxx
@@ -116,6 +116,17 @@ void applyTableStylePart( const ::oox::core::XmlFilterBase& rFilterBase,
     ::oox::drawingml::FillPropertiesPtr& rPartFillPropertiesPtr( rTableStylePart.getFillProperties() );
     if ( rPartFillPropertiesPtr.get() )
         rFillProperties.assignUsed( *rPartFillPropertiesPtr );
+    else
+    {
+        ::oox::drawingml::ShapeStyleRef& rFillStyleRef = rTableStylePart.getStyleRefs()[ XML_fillRef ];
+        const Theme* pTheme = rFilterBase.getCurrentTheme();
+        if (pTheme && rFillStyleRef.mnThemedIdx != 0 )
+        {
+            rFillProperties.assignUsed( *pTheme->getFillStyle( rFillStyleRef.mnThemedIdx ) );
+            sal_Int32 nPhClr = rFillStyleRef.maPhClr.getColor( rFilterBase.getGraphicHelper() );
+            rFillProperties.maFillColor.setSrgbClr( nPhClr );
+        }
+    }
 
     applyBorder( rFilterBase, rTableStylePart, XML_left, rLeftBorder );
     applyBorder( rFilterBase, rTableStylePart, XML_right, rRightBorder );
diff --git a/sd/qa/unit/data/pptx/bnc910045.pptx b/sd/qa/unit/data/pptx/bnc910045.pptx
new file mode 100644
index 0000000..5788ea9
Binary files /dev/null and b/sd/qa/unit/data/pptx/bnc910045.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index a9d55c5..c9de7bd 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -96,6 +96,7 @@ public:
     void testBnc862510_7();
     void testPDFImport();
     void testPDFImportSkipImages();
+    void testBnc910045();
 
     CPPUNIT_TEST_SUITE(SdImportTest);
 
@@ -129,6 +130,7 @@ public:
     CPPUNIT_TEST(testBnc862510_6);
     CPPUNIT_TEST(testBnc862510_7);
     CPPUNIT_TEST(testPDFImport);
+    CPPUNIT_TEST(testBnc910045);
 
     CPPUNIT_TEST_SUITE_END();
 };
@@ -1112,6 +1114,27 @@ void SdImportTest::testPDFImportSkipImages()
     xDocShRef->DoClose();
 }
 
+void SdImportTest::testBnc910045()
+{
+    // Problem with table style which defines cell color with fill style
+    ::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/bnc910045.pptx"), PPTX );
+
+    SdDrawDocument *pDoc = xDocShRef->GetDoc();
+    CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != NULL );
+    const SdrPage *pPage = pDoc->GetPage(1);
+    CPPUNIT_ASSERT_MESSAGE( "no page", pPage != NULL );
+
+    sdr::table::SdrTableObj *pTableObj = dynamic_cast<sdr::table::SdrTableObj*>(pPage->GetObj(0));
+    CPPUNIT_ASSERT( pTableObj );
+    uno::Reference< table::XCellRange > xTable(pTableObj->getTable(), uno::UNO_QUERY_THROW);
+    uno::Reference< beans::XPropertySet > xCell;
+    sal_Int32 nColor;
+
+    xCell.set(xTable->getCellByPosition(0, 0), uno::UNO_QUERY_THROW);
+    xCell->getPropertyValue("FillColor") >>= nColor;
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(5210557), nColor);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();


More information about the Libreoffice-commits mailing list