offapi/UnoApi_offapi.mk | 1 offapi/com/sun/star/text/GradientTable.idl | 33 ++++++++++++ sw/inc/hintids.hxx | 48 +++++++++--------- sw/qa/extras/odfexport/data/textframe-gradient.odt |binary sw/qa/extras/odfexport/odfexport.cxx | 25 +++++++++ sw/qa/extras/ooxmlexport/data/textframe-gradient.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 27 +++++++++- sw/source/filter/ww8/attributeoutputbase.hxx | 8 +++ sw/source/filter/ww8/docxattributeoutput.cxx | 42 +++++++++++++++ sw/source/filter/ww8/docxattributeoutput.hxx | 11 ++++ sw/source/filter/ww8/rtfattributeoutput.cxx | 8 +++ sw/source/filter/ww8/rtfattributeoutput.hxx | 6 ++ sw/source/filter/ww8/ww8atr.cxx | 18 ++++++ sw/source/filter/ww8/ww8attributeoutput.hxx | 6 ++ 14 files changed, 207 insertions(+), 26 deletions(-)
New commits: commit d3c72662488cd2fad1876e8f4c17d54f26245a7a Author: Miklos Vajna <vmik...@suse.cz> Date: Wed Jan 30 12:37:23 2013 +0100 sw: add textframe gradient DOCX roundtrip testcase Change-Id: I77f63631b5b666e2735978d1bf48ef5733a9f28e diff --git a/sw/qa/extras/ooxmlexport/data/textframe-gradient.docx b/sw/qa/extras/ooxmlexport/data/textframe-gradient.docx new file mode 100755 index 0000000..e5ed068 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/textframe-gradient.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index 4ff3f98..d39489a 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -26,6 +26,8 @@ */ #include <com/sun/star/frame/XStorable.hpp> +#include <com/sun/star/drawing/FillStyle.hpp> +#include <com/sun/star/awt/Gradient.hpp> #include <com/sun/star/style/TabStop.hpp> #include <com/sun/star/view/XViewSettingsSupplier.hpp> #include <com/sun/star/text/XTextFrame.hpp> @@ -71,6 +73,7 @@ public: void test1Table1Page(); void testTextFrames(); void testTextFrameBorders(); + void testTextframeGradient(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -111,7 +114,8 @@ void Test::run() {"n789482.docx", &Test::testN789482}, // {"1-table-1-page.docx", &Test::test1Table1Page}, // doesn't work on openSUSE12.2 at least {"textframes.odt", &Test::testTextFrames}, - {"textframe-borders.docx", &Test::testTextFrameBorders} + {"textframe-borders.docx", &Test::testTextFrameBorders}, + {"textframe-gradient.docx", &Test::testTextframeGradient}, }; // Don't test the first import of these, for some reason those tests fail const char* aBlacklist[] = { @@ -539,6 +543,27 @@ void Test::testTextFrameBorders() CPPUNIT_ASSERT_EQUAL(sal_Int32(0x622423), aShadowFormat.Color); } +void Test::testTextframeGradient() +{ + uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount()); + + uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle")); + awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient"); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0xC0504D), aGradient.StartColor); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0xD99594), aGradient.EndColor); + CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style); + + xFrame.set(xIndexAccess->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle")); + aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient"); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x000000), aGradient.StartColor); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x666666), aGradient.EndColor); + CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); commit b7de0431375926878646db1b1113573fb27f1cde Author: Miklos Vajna <vmik...@suse.cz> Date: Wed Jan 30 12:22:18 2013 +0100 initial DOCX export of Writer textframe gradients Change-Id: I0b0a623c58ca398bb556fc9fcd2cdecb4e789d0a diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 42e488e..917ddb5 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -70,6 +70,8 @@ #include <editeng/editobj.hxx> #include <svx/svdmodel.hxx> #include <svx/svdobj.hxx> +#include <svx/xfillit0.hxx> +#include <svx/xflgrit.hxx> #include <sfx2/sfxbasemodel.hxx> #include <anchoredobject.hxx> @@ -315,6 +317,12 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT m_pSerializer->startElementNS( XML_w, XML_pict, FSEND ); m_pSerializer->startElementNS( XML_v, XML_rect, xFlyAttrList ); lcl_TextFrameShadow(m_pSerializer, rFrmFmt); + if (m_pFlyFillAttrList) + { + XFastAttributeListRef xFlyFillAttrList(m_pFlyFillAttrList); + m_pFlyFillAttrList = NULL; + m_pSerializer->singleElementNS(XML_v, XML_fill, xFlyFillAttrList); + } m_pSerializer->startElementNS( XML_v, XML_textbox, FSEND ); m_pSerializer->startElementNS( XML_w, XML_txbxContent, FSEND ); m_rExport.WriteText( ); @@ -4547,12 +4555,37 @@ void DocxAttributeOutput::FormatBackground( const SvxBrushItem& rBrush ) } } -void DocxAttributeOutput::FormatFillStyle( const XFillStyleItem& /*rFillStyle*/ ) +void DocxAttributeOutput::FormatFillStyle( const XFillStyleItem& rFillStyle ) { + m_oFillStyle.reset(rFillStyle.GetValue()); } -void DocxAttributeOutput::FormatFillGradient( const XFillGradientItem& /*rFillGradient*/ ) +void DocxAttributeOutput::FormatFillGradient( const XFillGradientItem& rFillGradient ) { + if (*m_oFillStyle == XFILL_GRADIENT) + { + m_pFlyFillAttrList = m_pSerializer->createAttrList(); + m_pFlyFillAttrList->add(XML_type, "gradient"); + + const XGradient& rGradient = rFillGradient.GetGradientValue(); + OString sStartColor = impl_ConvertColor(rGradient.GetStartColor()); + m_pFlyFillAttrList->add(XML_color2, "#" + sStartColor); + OString sEndColor = impl_ConvertColor(rGradient.GetEndColor()); + m_pFlyAttrList->add(XML_fillcolor, "#" + sEndColor); + + switch (rGradient.GetGradientStyle()) + { + case XGRAD_LINEAR: break; + case XGRAD_AXIAL: + m_pFlyFillAttrList->add(XML_focus, "50%"); + break; + case XGRAD_RADIAL: break; + case XGRAD_ELLIPTICAL: break; + case XGRAD_SQUARE: break; + case XGRAD_RECT: break; + } + } + m_oFillStyle.reset(); } void DocxAttributeOutput::FormatBox( const SvxBoxItem& rBox ) @@ -4743,6 +4776,7 @@ DocxAttributeOutput::DocxAttributeOutput( DocxExport &rExport, FSHelperPtr pSeri m_pParagraphSpacingAttrList( NULL ), m_pHyperlinkAttrList( NULL ), m_pFlyAttrList( NULL ), + m_pFlyFillAttrList( NULL ), m_pFootnotesList( new ::docx::FootnotesList() ), m_pEndnotesList( new ::docx::FootnotesList() ), m_footnoteEndnoteRefTag( 0 ), diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 6508d0b..ff35351 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -28,11 +28,13 @@ #include <sax/fshelper.hxx> #include <sax/fastattribs.hxx> #include <vcl/vclenum.hxx> +#include <svx/xenum.hxx> #include <fldbas.hxx> #include <vector> #include <boost/scoped_ptr.hpp> +#include <boost/optional.hpp> #include <oox/export/vmlexport.hxx> class SwGrfNode; @@ -558,6 +560,7 @@ private: ::sax_fastparser::FastAttributeList *m_pParagraphSpacingAttrList; ::sax_fastparser::FastAttributeList *m_pHyperlinkAttrList; ::sax_fastparser::FastAttributeList *m_pFlyAttrList; + ::sax_fastparser::FastAttributeList *m_pFlyFillAttrList; ::docx::FootnotesList *m_pFootnotesList; ::docx::FootnotesList *m_pEndnotesList; @@ -630,6 +633,8 @@ private: // Remember first cell (used for for default borders/margins) of each table std::vector<ww8::WW8TableNodeInfoInner::Pointer_t> tableFirstCells; + boost::optional<XFillStyle> m_oFillStyle; + public: DocxAttributeOutput( DocxExport &rExport, ::sax_fastparser::FSHelperPtr pSerializer, oox::drawingml::DrawingML* pDrawingML ); commit 23515e814e2af04ffd82c18cd20607f7c15e1472 Author: Miklos Vajna <vmik...@suse.cz> Date: Wed Jan 30 11:03:43 2013 +0100 sw: handle RES_FILL_STYLE/GRADIENT in AttributeOutputBase::OutputItem So that later in doc/docx/rtf export gradient background of textframes can be handled. Change-Id: I8f79cd0b63231c0551fc85c5cd1c06f5511326f1 diff --git a/sw/source/filter/ww8/attributeoutputbase.hxx b/sw/source/filter/ww8/attributeoutputbase.hxx index 898acbb..d340dda 100644 --- a/sw/source/filter/ww8/attributeoutputbase.hxx +++ b/sw/source/filter/ww8/attributeoutputbase.hxx @@ -50,6 +50,8 @@ class SvxWeightItem; class SvxAutoKernItem; class SvxBlinkItem; class SvxBrushItem; +class XFillStyleItem; +class XFillGradientItem; class SvxFontItem; class SvxFontHeightItem; class SvxLanguageItem; @@ -528,6 +530,12 @@ protected: /// Sfx item RES_BACKGROUND virtual void FormatBackground( const SvxBrushItem& ) = 0; + /// Sfx item RES_FILL_STYLE + virtual void FormatFillStyle( const XFillStyleItem& ) = 0; + + /// Sfx item RES_FILL_GRADIENT + virtual void FormatFillGradient( const XFillGradientItem& ) = 0; + /// Sfx item RES_BOX virtual void FormatBox( const SvxBoxItem& ) = 0; diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx index 6300ddd..42e488e 100644 --- a/sw/source/filter/ww8/docxattributeoutput.cxx +++ b/sw/source/filter/ww8/docxattributeoutput.cxx @@ -4547,6 +4547,14 @@ void DocxAttributeOutput::FormatBackground( const SvxBrushItem& rBrush ) } } +void DocxAttributeOutput::FormatFillStyle( const XFillStyleItem& /*rFillStyle*/ ) +{ +} + +void DocxAttributeOutput::FormatFillGradient( const XFillGradientItem& /*rFillGradient*/ ) +{ +} + void DocxAttributeOutput::FormatBox( const SvxBoxItem& rBox ) { if (m_bTextFrameSyntax) diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx index 91539b5..6508d0b 100644 --- a/sw/source/filter/ww8/docxattributeoutput.hxx +++ b/sw/source/filter/ww8/docxattributeoutput.hxx @@ -496,6 +496,12 @@ protected: /// Sfx item RES_BACKGROUND virtual void FormatBackground( const SvxBrushItem& ); + /// Sfx item RES_FILL_STYLE + virtual void FormatFillStyle( const XFillStyleItem& ); + + /// Sfx item RES_FILL_GRADIENT + virtual void FormatFillGradient( const XFillGradientItem& ); + /// Sfx item RES_BOX virtual void FormatBox( const SvxBoxItem& ); diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx index 867d6c2..902c00c 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.cxx +++ b/sw/source/filter/ww8/rtfattributeoutput.cxx @@ -2873,6 +2873,14 @@ void RtfAttributeOutput::FormatBackground( const SvxBrushItem& rBrush ) } } +void RtfAttributeOutput::FormatFillStyle( const XFillStyleItem& /*rFillStyle*/ ) +{ +} + +void RtfAttributeOutput::FormatFillGradient( const XFillGradientItem& /*rFillGradient*/ ) +{ +} + void RtfAttributeOutput::FormatBox( const SvxBoxItem& rBox ) { SAL_INFO("sw.rtf", OSL_THIS_FUNC); diff --git a/sw/source/filter/ww8/rtfattributeoutput.hxx b/sw/source/filter/ww8/rtfattributeoutput.hxx index 65e493c..aefa724 100644 --- a/sw/source/filter/ww8/rtfattributeoutput.hxx +++ b/sw/source/filter/ww8/rtfattributeoutput.hxx @@ -374,6 +374,12 @@ protected: /// Sfx item RES_BACKGROUND virtual void FormatBackground( const SvxBrushItem& ); + /// Sfx item RES_FILL_STYLE + virtual void FormatFillStyle( const XFillStyleItem& ); + + /// Sfx item RES_FILL_GRADIENT + virtual void FormatFillGradient( const XFillGradientItem& ); + /// Sfx item RES_BOX virtual void FormatBox( const SvxBoxItem& ); diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index 3d3bcf4..003bde1 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -70,6 +70,8 @@ #include <editeng/blnkitem.hxx> #include <editeng/charhiddenitem.hxx> #include <editeng/paperinf.hxx> +#include <svx/xfillit0.hxx> +#include <svx/xflgrit.hxx> #include <fmtfld.hxx> #include <fchrfmt.hxx> #include <fmtfsize.hxx> @@ -4020,6 +4022,14 @@ void WW8AttributeOutput::FormatBackground( const SvxBrushItem& rBrush ) } } +void WW8AttributeOutput::FormatFillStyle( const XFillStyleItem& /*rFillStyle*/ ) +{ +} + +void WW8AttributeOutput::FormatFillGradient( const XFillGradientItem& /*rFillGradient*/ ) +{ +} + WW8_BRC WW8Export::TranslateBorderLine(const SvxBorderLine& rLine, sal_uInt16 nDist, bool bShadow) { @@ -5167,6 +5177,12 @@ void AttributeOutputBase::OutputItem( const SfxPoolItem& rHt ) case RES_BACKGROUND: FormatBackground( static_cast< const SvxBrushItem& >( rHt ) ); break; + case RES_FILL_STYLE: + FormatFillStyle( static_cast< const XFillStyleItem& >( rHt ) ); + break; + case RES_FILL_GRADIENT: + FormatFillGradient( static_cast< const XFillGradientItem& >( rHt ) ); + break; case RES_BOX: FormatBox( static_cast< const SvxBoxItem& >( rHt ) ); break; @@ -5187,7 +5203,7 @@ void AttributeOutputBase::OutputItem( const SfxPoolItem& rHt ) break; default: - OSL_TRACE("Unhandled SfxPoolItem with id %d.", rHt.Which() ); + SAL_INFO("sw.ww8", "Unhandled SfxPoolItem with id " << rHt.Which() ); break; } } diff --git a/sw/source/filter/ww8/ww8attributeoutput.hxx b/sw/source/filter/ww8/ww8attributeoutput.hxx index d1e17bb..8d1661f 100644 --- a/sw/source/filter/ww8/ww8attributeoutput.hxx +++ b/sw/source/filter/ww8/ww8attributeoutput.hxx @@ -358,6 +358,12 @@ protected: /// Sfx item RES_BACKGROUND virtual void FormatBackground( const SvxBrushItem& ); + /// Sfx item RES_FILL_STYLE + virtual void FormatFillStyle( const XFillStyleItem& ); + + /// Sfx item RES_FILL_GRADIENT + virtual void FormatFillGradient( const XFillGradientItem& ); + /// Sfx item RES_BOX virtual void FormatBox( const SvxBoxItem& ); commit 3430220290322ff8b6c68fe68357487bc1431b1f Author: Miklos Vajna <vmik...@suse.cz> Date: Tue Jan 29 16:02:48 2013 +0100 sw: update hintids comments to match reality Change-Id: I30ef3e080d97f9bbdd1a9bca1c2d4c99fdfdfd28 diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx index e6c5c79..83afbcd 100644 --- a/sw/inc/hintids.hxx +++ b/sw/inc/hintids.hxx @@ -220,42 +220,42 @@ RES_FRMATR_BEGIN = RES_PARATR_LIST_END, RES_AUTO_STYLE, // 119 RES_FRMATR_STYLE_NAME, // 120 RES_FRMATR_CONDITIONAL_STYLE_NAME, // 121 - RES_FILL_STYLE, - RES_FILL_GRADIENT, + RES_FILL_STYLE, // 122 + RES_FILL_GRADIENT, // 123 RES_FRMATR_END }; enum RES_GRFATR { RES_GRFATR_BEGIN = RES_FRMATR_END, - RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 122 - RES_GRFATR_CROPGRF, // 123 - - RES_GRFATR_ROTATION, // 124 - RES_GRFATR_LUMINANCE, // 125 - RES_GRFATR_CONTRAST, // 126 - RES_GRFATR_CHANNELR, // 127 - RES_GRFATR_CHANNELG, // 128 - RES_GRFATR_CHANNELB, // 129 - RES_GRFATR_GAMMA, // 130 - RES_GRFATR_INVERT, // 131 - RES_GRFATR_TRANSPARENCY, // 132 - RES_GRFATR_DRAWMODE, // 133 - - RES_GRFATR_DUMMY1, // 134 - RES_GRFATR_DUMMY2, // 135 - RES_GRFATR_DUMMY3, // 136 - RES_GRFATR_DUMMY4, // 137 - RES_GRFATR_DUMMY5, // 138 + RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 124 + RES_GRFATR_CROPGRF, // 125 + + RES_GRFATR_ROTATION, // 126 + RES_GRFATR_LUMINANCE, // 127 + RES_GRFATR_CONTRAST, // 128 + RES_GRFATR_CHANNELR, // 129 + RES_GRFATR_CHANNELG, // 130 + RES_GRFATR_CHANNELB, // 131 + RES_GRFATR_GAMMA, // 132 + RES_GRFATR_INVERT, // 133 + RES_GRFATR_TRANSPARENCY, // 134 + RES_GRFATR_DRAWMODE, // 135 + + RES_GRFATR_DUMMY1, // 136 + RES_GRFATR_DUMMY2, // 137 + RES_GRFATR_DUMMY3, // 138 + RES_GRFATR_DUMMY4, // 139 + RES_GRFATR_DUMMY5, // 140 RES_GRFATR_END }; enum RES_BOXATR { RES_BOXATR_BEGIN = RES_GRFATR_END, - RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 139 - RES_BOXATR_FORMULA, // 140 - RES_BOXATR_VALUE, // 141 + RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 141 + RES_BOXATR_FORMULA, // 142 + RES_BOXATR_VALUE, // 143 RES_BOXATR_END }; commit d7efffebd9651dd866349915360ade64b97d7301 Author: Miklos Vajna <vmik...@suse.cz> Date: Tue Jan 29 15:59:29 2013 +0100 Document com.sun.star.text.GradientTable Introduced in commit 81a46fc86a530f028a5bd2f5e52fe0372d50ee38. Change-Id: I2e54c214916ce1793e07a4a7d42a6cf7e39f3424 diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk index eda4101..72a590e 100644 --- a/offapi/UnoApi_offapi.mk +++ b/offapi/UnoApi_offapi.mk @@ -1277,6 +1277,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/text,\ GenericTextDocument \ GlobalDocument \ GlobalSettings \ + GradientTable \ IllustrationsIndex \ InContentMetadata \ LineNumberingProperties \ diff --git a/offapi/com/sun/star/text/GradientTable.idl b/offapi/com/sun/star/text/GradientTable.idl new file mode 100644 index 0000000..b7f433f --- /dev/null +++ b/offapi/com/sun/star/text/GradientTable.idl @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ +#ifndef __com_sun_star_text_GradientTable_idl__ +#define __com_sun_star_text_GradientTable_idl__ + +#include <com/sun/star/container/XNameContainer.idl> + + + module com { module sun { module star { module text { + + +/** this is a container for <type scope="com::sun::star::awt">Gradient</type>s, used for Writer TextFrames +*/ +service GradientTable +{ + /** this container lets you access the <type scope="com::sun::star::awt">Gradient</type>s that + are indexed with a name inside Writer. + */ + interface com::sun::star::container::XNameContainer; +}; + + +}; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 64020cebd676e6ff2b16da5af667b41afa04004d Author: Miklos Vajna <vmik...@suse.cz> Date: Tue Jan 29 15:49:44 2013 +0100 sw: add textframe gradient ODF roundtrip testcase Change-Id: I346de7efd4e91f93e3f07ece1c6fe71d1ca53b8e diff --git a/sw/qa/extras/odfexport/data/textframe-gradient.odt b/sw/qa/extras/odfexport/data/textframe-gradient.odt new file mode 100644 index 0000000..cdcae4f Binary files /dev/null and b/sw/qa/extras/odfexport/data/textframe-gradient.odt differ diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index 92c934c..4ed23f1 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -26,12 +26,15 @@ */ #include <swmodeltestbase.hxx> +#include <com/sun/star/awt/Gradient.hpp> +#include <com/sun/star/drawing/FillStyle.hpp> class Test : public SwModelTestBase { public: void testFdo38244(); void testFirstHeaderFooter(); + void testTextframeGradient(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -48,6 +51,7 @@ void Test::run() MethodEntry<Test> aMethods[] = { {"fdo38244.odt", &Test::testFdo38244}, {"first-header-footer.odt", &Test::testFirstHeaderFooter}, + {"textframe-gradient.odt", &Test::testTextframeGradient}, }; header(); for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) @@ -108,6 +112,27 @@ void Test::testFirstHeaderFooter() CPPUNIT_ASSERT_EQUAL(OUString("Left footer2"), parseDump("/root/page[6]/footer/txt/text()")); } +void Test::testTextframeGradient() +{ + uno::Reference<text::XTextFramesSupplier> xTextFramesSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xIndexAccess(xTextFramesSupplier->getTextFrames(), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), xIndexAccess->getCount()); + + uno::Reference<beans::XPropertySet> xFrame(xIndexAccess->getByIndex(0), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle")); + awt::Gradient aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient"); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0xC0504D), aGradient.StartColor); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0xD99594), aGradient.EndColor); + CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style); + + xFrame.set(xIndexAccess->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(drawing::FillStyle_GRADIENT, getProperty<drawing::FillStyle>(xFrame, "FillStyle")); + aGradient = getProperty<awt::Gradient>(xFrame, "FillGradient"); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x000000), aGradient.StartColor); + CPPUNIT_ASSERT_EQUAL(sal_Int32(0x666666), aGradient.EndColor); + CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits