include/oox/drawingml/textcharacterproperties.hxx | 2 + oox/source/drawingml/textcharacterproperties.cxx | 3 + oox/source/drawingml/textcharacterpropertiescontext.cxx | 4 ++ sd/qa/unit/data/pptx/n862510_4.pptx |binary sd/qa/unit/import-tests.cxx | 27 ++++++++++++++++ 5 files changed, 36 insertions(+)
New commits: commit 186b96dcfbd0ed87ef414246555e9f953927d692 Author: Muthu Subramanian <sumu...@collabora.com> Date: Fri Mar 28 17:29:37 2014 +0530 Add unit test for text gradfill import. Change-Id: I803238fd21d1c73aae8146966a5e62e62ad48c5c diff --git a/sd/qa/unit/data/pptx/n862510_4.pptx b/sd/qa/unit/data/pptx/n862510_4.pptx new file mode 100644 index 0000000..0a461ee Binary files /dev/null and b/sd/qa/unit/data/pptx/n862510_4.pptx differ diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx index 81f6b8a..462e2ed 100644 --- a/sd/qa/unit/import-tests.cxx +++ b/sd/qa/unit/import-tests.cxx @@ -66,6 +66,7 @@ public: void testN862510_1(); void testN862510_2(); void testN862510_3(); + void testN862510_4(); void testFdo71961(); CPPUNIT_TEST_SUITE(SdFiltersTest); @@ -87,6 +88,7 @@ public: CPPUNIT_TEST(testN862510_1); CPPUNIT_TEST(testN862510_2); CPPUNIT_TEST(testN862510_3); + CPPUNIT_TEST(testN862510_4); CPPUNIT_TEST(testFdo71961); CPPUNIT_TEST_SUITE_END(); @@ -308,6 +310,31 @@ void SdFiltersTest::testN862510_3() } } +void SdFiltersTest::testN862510_4() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL( getURLFromSrc("/sd/qa/unit/data/pptx/n862510_4.pptx") ); + CPPUNIT_ASSERT_MESSAGE( "failed to load", xDocShRef.Is() ); + CPPUNIT_ASSERT_MESSAGE( "in destruction", !xDocShRef->IsInDestruction() ); + + SdDrawDocument *pDoc = xDocShRef->GetDoc(); + CPPUNIT_ASSERT_MESSAGE( "no document", pDoc != NULL ); + const SdrPage *pPage = pDoc->GetPage( 1 ); + CPPUNIT_ASSERT_MESSAGE( "no page", pPage != NULL ); + { + std::vector<EECharAttrib> rLst; + SdrObject *pObj = pPage->GetObj( 0 ); + SdrTextObj *pTxtObj = dynamic_cast<SdrTextObj *>( pObj ); + CPPUNIT_ASSERT( pTxtObj ); + const EditTextObject& aEdit = pTxtObj->GetOutlinerParaObject()->GetTextObject(); + aEdit.GetCharAttribs( 0, rLst ); + for( std::vector<EECharAttrib>::reverse_iterator it = rLst.rbegin(); it != rLst.rend(); ++it ) + { + const SvxColorItem *pC = dynamic_cast<const SvxColorItem *>( (*it).pAttr ); + CPPUNIT_ASSERT_MESSAGE( "gradfill for text color not handled!", !( pC && pC->GetValue().GetColor() == 0 ) ); + } + } +} + void SdFiltersTest::testN828390() { bool bPassed = false; commit cfc76de83e3c0a56abd30a8f3bd7c69d3500d223 Author: Muthu Subramanian <sumu...@collabora.com> Date: Fri Mar 28 17:24:45 2014 +0530 n#870234: Import gradfill for text colors. Uses the first color from the gradfill list. (Which is better than plain black!) Change-Id: I4c1c0c4b031f3681c95b75b3c0683eb4de95bffb diff --git a/include/oox/drawingml/textcharacterproperties.hxx b/include/oox/drawingml/textcharacterproperties.hxx index e51937f..4162c23 100644 --- a/include/oox/drawingml/textcharacterproperties.hxx +++ b/include/oox/drawingml/textcharacterproperties.hxx @@ -24,6 +24,7 @@ #include <oox/helper/propertymap.hxx> #include <oox/drawingml/color.hxx> #include <oox/drawingml/textfont.hxx> +#include <oox/drawingml/fillproperties.hxx> namespace oox { class PropertySet; } @@ -56,6 +57,7 @@ struct TextCharacterProperties OptValue< bool > moItalic; OptValue< bool > moUnderlineLineFollowText; OptValue< bool > moUnderlineFillFollowText; + GradientFillProperties maGradientProps; /// Properties for gradient text colors std::vector<css::beans::PropertyValue> maTextEffectsProperties; diff --git a/oox/source/drawingml/textcharacterproperties.cxx b/oox/source/drawingml/textcharacterproperties.cxx index 6f64f2a..5f7cf4f 100644 --- a/oox/source/drawingml/textcharacterproperties.cxx +++ b/oox/source/drawingml/textcharacterproperties.cxx @@ -65,6 +65,7 @@ void TextCharacterProperties::assignUsed( const TextCharacterProperties& rSource moUnderlineFillFollowText.assignIfUsed( rSourceProps.moUnderlineFillFollowText ); maTextEffectsProperties = rSourceProps.maTextEffectsProperties; + maGradientProps.assignUsed( rSourceProps.maGradientProps ); } void TextCharacterProperties::pushToPropMap( PropertyMap& rPropMap, const XmlFilterBase& rFilter, bool bUseOptional ) const @@ -108,6 +109,8 @@ void TextCharacterProperties::pushToPropMap( PropertyMap& rPropMap, const XmlFil if( maCharColor.isUsed() ) rPropMap.setProperty( PROP_CharColor, maCharColor.getColor( rFilter.getGraphicHelper() )); + if( maGradientProps.maGradientStops.size() > 0 ) + rPropMap[ PROP_CharColor ] <<= maGradientProps.maGradientStops.begin()->second.getColor( rFilter.getGraphicHelper() ); if( moLang.has() && !moLang.get().isEmpty() ) { diff --git a/oox/source/drawingml/textcharacterpropertiescontext.cxx b/oox/source/drawingml/textcharacterpropertiescontext.cxx index 5bb800c..7bedd8e 100644 --- a/oox/source/drawingml/textcharacterpropertiescontext.cxx +++ b/oox/source/drawingml/textcharacterpropertiescontext.cxx @@ -132,6 +132,10 @@ ContextHandlerRef TextCharacterPropertiesContext::onCreateContext( sal_Int32 aEl case A_TOKEN( hlinkClick ): // CT_Hyperlink case A_TOKEN( hlinkMouseOver ): // CT_Hyperlink return new HyperLinkContext( *this, rAttribs, mrTextCharacterProperties.maHyperlinkPropertyMap ); + + case A_TOKEN( gradFill ): + return new GradientFillContext( *this, rAttribs, mrTextCharacterProperties.maGradientProps ); + case OOX_TOKEN( doc, rFonts ): if( rAttribs.hasAttribute(OOX_TOKEN(doc, ascii)) ) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits