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 28099820d2eca510f946e38e7d0973aec829e850
Author: Zolnai Tamás tamas.zol...@collabora.com
Date: Mon Dec 22 17:58:23 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
Change-Id: I62a9cd2a9b4c19f5acffc334d5e8263fe24fc8fd
diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 28b93b1..8710435 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -647,11 +647,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 000..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 70be8e5..d652a1f 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -74,6 +74,7 @@ public:
void testBnc584721_4();
void testBnc904423();
void testShapeLineStyle();
+void testBnc862510_6();
CPPUNIT_TEST_SUITE(SdFiltersTest);
CPPUNIT_TEST(testDocumentLayout);
@@ -95,6 +96,7 @@ public:
CPPUNIT_TEST(testBnc584721_4);
CPPUNIT_TEST(testBnc904423);
CPPUNIT_TEST(testShapeLineStyle);
+CPPUNIT_TEST(testBnc862510_6);
CPPUNIT_TEST_SUITE_END();
};
@@ -860,6 +862,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::Referencetext::XText xText =
uno::Referencetext::XTextRange(xShape, uno::UNO_QUERY)-getText();
+CPPUNIT_ASSERT_MESSAGE( not a text shape, xText.is() );
+uno::Referencecontainer::XEnumerationAccess paraEnumAccess;
+paraEnumAccess.set(xText, uno::UNO_QUERY);
+uno::Referencecontainer::XEnumeration paraEnum =
paraEnumAccess-createEnumeration();
+uno::Referencetext::XTextRange const xParagraph(paraEnum-nextElement(),
+uno::UNO_QUERY_THROW);
+
+// Get first run of the paragraph
+uno::Referencecontainer::XEnumerationAccess xRunEnumAccess(xParagraph,
uno::UNO_QUERY);
+uno::Referencecontainer::XEnumeration xRunEnum =
xRunEnumAccess-createEnumeration();
+uno::Referencetext::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 gray
+CPPUNIT_ASSERT_EQUAL( sal_Int32(0x8B8B8B), nCharColor );
+
+xDocShRef-DoClose();
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdFiltersTest);
CPPUNIT_PLUGIN_IMPLEMENT();
___
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org