sw/qa/extras/rtfimport/data/n825305.rtf | 76 ++++++++++++++++++++++++++++ sw/qa/extras/rtfimport/rtfimport.cxx | 14 +++++ writerfilter/source/rtftok/rtfsdrimport.cxx | 5 + 3 files changed, 95 insertions(+)
New commits: commit 073fadca38eba2960c89db07713c0d0d430e2874 Author: Miklos Vajna <[email protected]> Date: Tue Jun 18 16:22:32 2013 +0200 bnc#825305 RTF import of fFilled shape property Change-Id: Iaa2ff9d5d1a28aec046f885acecbd1a44c734ec0 (cherry picked from commit 2af60e2eff4e952fff8cac0228b89f16ce3a436e) Conflicts: sw/qa/extras/rtfimport/rtfimport.cxx writerfilter/source/rtftok/rtfsdrimport.cxx diff --git a/sw/qa/extras/rtfimport/data/n825305.rtf b/sw/qa/extras/rtfimport/data/n825305.rtf new file mode 100755 index 0000000..72a6b52 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/n825305.rtf @@ -0,0 +1,76 @@ +{\rtf +\viewkind1\margl360\margr360 +\margt360\margb360\paperw12240\paperh15840\pard +{\shp +{\*\shpinst\shpleft555\shpright1185\shptop5715\shpbottom5970\shpbxpage +\shpbypage\shpwr3\shpz1 +{\sp +{\sn shapeType} +{\sv 1} +} +{\sp +{\sn fLine} +{\sv 1} +} +{\sp + +{\sn lineWidth} +{\sv 0} +} +{\sp +{\sn lineColor} +{\sv 10485760} +} +{\sp +{\sn lineDashing +} +{\sv 0} +} +{\sp +{\sn fFilled} +{\sv 1} +} +{\sp +{\sn fillColor} +{\sv 10485760} +} +} +} +{\shp +{\*\shpinst\shpleft780\shpright1425\shptop5790\shpbottom6030\shpbxpage +\shpbypage\shpwr3\shpz2 +{\sp +{\sn shapeType} +{\sv 202} +} +{\sp +{\sn dxTextLeft} +{\sv +0} +} +{\sp +{\sn dxTextRight} +{\sv 0} +} +{\sp +{\sn dyTextTop} +{\sv 0} +} +{\sp +{\sn +dyTextBottom} +{\sv 0} +} +{\sp +{\sn fLine} +{\sv 0} +} +{\shptxt\plain\pard\f29\fs20 Ln # +\par} +{\sp +{\sn fFilled} +{\sv 0} +} +} +} +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index 3a41731..c87ba3e 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -149,6 +149,7 @@ public: void testFdo63023(); void testN818997(); void testFdo64671(); + void testN825305(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -268,6 +269,7 @@ void Test::run() {"fdo63023.rtf", &Test::testFdo63023}, {"n818997.rtf", &Test::testN818997}, {"fdo64671.rtf", &Test::testFdo64671}, + {"n825305.rtf", &Test::testN825305}, }; for (unsigned int i = 0; i < SAL_N_ELEMENTS(aMethods); ++i) { @@ -1230,6 +1232,18 @@ void Test::testFdo64671() getRun(getParagraph(1), 1, OUString("\xC5\xBD", 2, RTL_TEXTENCODING_UTF8)); } +void Test::testN825305() +{ + // The problem was that the textbox wasn't transparent, due to unimplemented fFilled == 0. + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY); + uno::Reference<beans::XPropertyState> xPropertyState(xDraws->getByIndex(1), uno::UNO_QUERY); + CPPUNIT_ASSERT_EQUAL(sal_Int32(100), getProperty<sal_Int32>(xDraws->getByIndex(1), "FillTransparence")); + beans::PropertyState ePropertyState = xPropertyState->getPropertyState("FillTransparence"); + // Was beans::PropertyState_DEFAULT_VALUE. + CPPUNIT_ASSERT_EQUAL(beans::PropertyState_DIRECT_VALUE, ePropertyState); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx index 864a8bd..3bb7af9 100644 --- a/writerfilter/source/rtftok/rtfsdrimport.cxx +++ b/writerfilter/source/rtftok/rtfsdrimport.cxx @@ -104,6 +104,7 @@ void RTFSdrImport::resolve(RTFShape& rShape) uno::Any aLineColor = uno::makeAny(COL_BLACK); // Default line width is 0.75 pt (26 mm100) in Word, 0 in Writer. uno::Any aLineWidth = uno::makeAny(sal_Int32(26)); + bool bFilled = true; for (std::vector< std::pair<rtl::OUString, rtl::OUString> >::iterator i = rShape.aProperties.begin(); i != rShape.aProperties.end(); ++i) @@ -288,6 +289,8 @@ void RTFSdrImport::resolve(RTFShape& rShape) aViewBox.Height = i->second.toInt32(); else if ( i->first == "dhgt" ) resolveDhgt(xPropertySet, i->second.toInt32()); + else if (i->first == "fFilled") + bFilled = i->second.toInt32() == 1; else SAL_INFO("writerfilter", OSL_THIS_FUNC << ": TODO handle shape property '" << OUStringToOString( i->first, RTL_TEXTENCODING_UTF8 ).getStr() << "':'" << @@ -357,6 +360,8 @@ void RTFSdrImport::resolve(RTFShape& rShape) xPropertySet->setPropertyValue("VertOrientRelation", uno::makeAny(rShape.nVertOrientRelation)); if (rShape.nWrap != -1) xPropertySet->setPropertyValue("Surround", uno::makeAny(text::WrapTextMode(rShape.nWrap))); + if (!bFilled) + xPropertySet->setPropertyValue("FillTransparence", uno::makeAny(sal_Int32(100))); } // Send it to dmapper _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
