[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - oox/source sd/qa
Zolnai Tamás
tamas.zolnai at collabora.com
Mon Jan 5 08:00:31 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 aa05a786a500df6aa00f953649ee3dde25d81d48
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Mon Dec 22 17:51: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)
Change-Id: I62a9cd2a9b4c19f5acffc334d5e8263fe24fc8fd
Reviewed-on: https://gerrit.libreoffice.org/13603
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 ee6b268..bff4f63 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -1039,11 +1039,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 b601871..439f153 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -89,6 +89,7 @@ public:
void testBnc584721_4();
void testBnc904423();
void testShapeLineStyle();
+ void testBnc862510_6();
CPPUNIT_TEST_SUITE(SdImportTest);
CPPUNIT_TEST(testDocumentLayout);
@@ -118,6 +119,7 @@ public:
CPPUNIT_TEST(testBnc584721_4);
CPPUNIT_TEST(testBnc904423);
CPPUNIT_TEST(testShapeLineStyle);
+ CPPUNIT_TEST(testBnc862510_6);
CPPUNIT_TEST_SUITE_END();
};
@@ -993,6 +995,44 @@ void SdImportTest::testShapeLineStyle()
xDocShRef->DoClose();
}
+void SdImportTest::testBnc862510_6()
+{
+ // Black text was imported instead of gray
+ ::sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/pptx/bnc862510_6.pptx"), 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 gray
+ CPPUNIT_ASSERT_EQUAL( sal_Int32(0x8B8B8B), nCharColor );
+
+ xDocShRef->DoClose();
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
More information about the Libreoffice-commits
mailing list