sw/qa/extras/rtfimport/data/do-dhgt.rtf | 9 +++++++++ sw/qa/extras/rtfimport/rtfimport.cxx | 19 +++++++++++++++++++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 7 ++++++- writerfilter/source/rtftok/rtfdocumentimpl.hxx | 1 + writerfilter/source/rtftok/rtfsdrimport.cxx | 16 +++++++++------- writerfilter/source/rtftok/rtfsdrimport.hxx | 1 + 6 files changed, 45 insertions(+), 8 deletions(-)
New commits: commit 845e8478ba575c695d4f0abbd7977b41317d92e6 Author: Miklos Vajna <[email protected]> Date: Wed Oct 17 16:12:15 2012 +0200 import RTF_DODHGT Change-Id: I6e97c33569e46171ed702b573d42ced805cded78 diff --git a/sw/qa/extras/rtfimport/data/do-dhgt.rtf b/sw/qa/extras/rtfimport/data/do-dhgt.rtf new file mode 100644 index 0000000..d46c6c7 --- /dev/null +++ b/sw/qa/extras/rtfimport/data/do-dhgt.rtf @@ -0,0 +1,9 @@ +{\rtf1 +{\*\do\dobxcolumn\dobypara\dodhgt251658240\dprect\dpx1275\dpy-135\dpxsize1770\dpysize855 +\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr79\dpfillbgcg129\dpfillbgcb189\dpfillpat1\dplinew60\dplinecor242\dplinecog242\dplinecob242} +{\*\do\dobxcolumn\dobypara\dodhgt251657727\dprect\dpx2475\dpy150\dpxsize2025\dpysize1080 +\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr155\dpfillbgcg187\dpfillbgcb89\dpfillpat1\dplinew60\dplinecor242\dplinecog242\dplinecob242} +{\*\do\dobxcolumn\dobypara\dodhgt251657215\dprect\dpx1560\dpy420\dpxsize2325\dpysize1365 +\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr192\dpfillbgcg80\dpfillbgcb77\dpfillpat1\dplinew60\dplinecor242\dplinecog242\dplinecob242} +\par +} diff --git a/sw/qa/extras/rtfimport/rtfimport.cxx b/sw/qa/extras/rtfimport/rtfimport.cxx index 976a4f8..6e620d3 100644 --- a/sw/qa/extras/rtfimport/rtfimport.cxx +++ b/sw/qa/extras/rtfimport/rtfimport.cxx @@ -116,6 +116,7 @@ public: void testFdo55493(); void testCopyPastePageStyle(); void testShptxtPard(); + void testDoDhgt(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -171,6 +172,7 @@ public: CPPUNIT_TEST(testFdo55493); CPPUNIT_TEST(testCopyPastePageStyle); CPPUNIT_TEST(testShptxtPard); + CPPUNIT_TEST(testDoDhgt); #endif CPPUNIT_TEST_SUITE_END(); @@ -905,6 +907,23 @@ void Test::testShptxtPard() CPPUNIT_ASSERT_EQUAL(OUString("shape text"), xText->getString()); } +void Test::testDoDhgt() +{ + load("do-dhgt.rtf"); + uno::Reference<drawing::XDrawPageSupplier> xDrawPageSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XIndexAccess> xDraws(xDrawPageSupplier->getDrawPage(), uno::UNO_QUERY); + for (int i = 0; i < xDraws->getCount(); ++i) + { + sal_Int32 nFillColor = getProperty<sal_Int32>(xDraws->getByIndex(i), "FillColor"); + if (nFillColor == 0xc0504d) // red + CPPUNIT_ASSERT_EQUAL(sal_Int32(0), getProperty<sal_Int32>(xDraws->getByIndex(i), "ZOrder")); + else if (nFillColor == 0x9bbb59) // green + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), getProperty<sal_Int32>(xDraws->getByIndex(i), "ZOrder")); + else if (nFillColor == 0x4f81bd) // blue + CPPUNIT_ASSERT_EQUAL(sal_Int32(2), getProperty<sal_Int32>(xDraws->getByIndex(i), "ZOrder")); + } +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index 192cb3b..a93fc31 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -2310,6 +2310,7 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) std::vector<beans::PropertyValue>& rPendingProperties = m_aStates.top().aDrawingObject.aPendingProperties; for (std::vector<beans::PropertyValue>::iterator i = rPendingProperties.begin(); i != rPendingProperties.end(); ++i) m_aStates.top().aDrawingObject.xPropertySet->setPropertyValue(i->Name, i->Value); + m_pSdrImport->resolveDhgt(m_aStates.top().aDrawingObject.xPropertySet, m_aStates.top().aDrawingObject.nDhgt); } break; case RTF_DOBXMARGIN: @@ -3136,6 +3137,9 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) lcl_putNestedAttribute(m_aStates.top().aTableCellSprms, NS_ooxml::LN_CT_TcPrBase_shd, NS_ooxml::LN_CT_Shd_val, RTFValue::Pointer_t(new RTFValue(nValue))); } break; + case RTF_DODHGT: + m_aStates.top().aDrawingObject.nDhgt = nParam; + break; default: SAL_INFO("writerfilter", OSL_THIS_FUNC << ": TODO handle value '" << lcl_RtfToString(nKeyword) << "'"); aSkip.setParsed(false); @@ -4122,7 +4126,8 @@ RTFDrawingObject::RTFDrawingObject() nFillColorR(0), nFillColorG(0), nFillColorB(0), - bHasFillColor(false) + bHasFillColor(false), + nDhgt(0) { } diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx index 7a0319a..e2a5cde 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx @@ -272,6 +272,7 @@ namespace writerfilter { bool bHasLineColor; sal_uInt8 nFillColorR, nFillColorG, nFillColorB; bool bHasFillColor; + sal_Int32 nDhgt; }; /// Stores the properties of a picture. diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx index 680845f..0471de6 100644 --- a/writerfilter/source/rtftok/rtfsdrimport.cxx +++ b/writerfilter/source/rtftok/rtfsdrimport.cxx @@ -71,6 +71,14 @@ void RTFSdrImport::createShape(OUString aStr, uno::Reference<drawing::XShape>& x xPropertySet.set(xShape, uno::UNO_QUERY); } +void RTFSdrImport::resolveDhgt(uno::Reference<beans::XPropertySet> xPropertySet, sal_Int32 nZOrder) +{ + writerfilter::dmapper::DomainMapper& rMapper = (writerfilter::dmapper::DomainMapper&)m_rImport.Mapper(); + writerfilter::dmapper::GraphicZOrderHelper* pHelper = rMapper.graphicZOrderHelper(); + xPropertySet->setPropertyValue("ZOrder", uno::makeAny(pHelper->findZOrder(nZOrder))); + pHelper->addItem(xPropertySet, nZOrder); +} + void RTFSdrImport::resolve(RTFShape& rShape) { int nType = -1; @@ -281,13 +289,7 @@ void RTFSdrImport::resolve(RTFShape& rShape) else if ( i->first == "geoBottom" ) aViewBox.Height = i->second.toInt32(); else if ( i->first == "dhgt" ) - { - writerfilter::dmapper::DomainMapper& rMapper = (writerfilter::dmapper::DomainMapper&)m_rImport.Mapper(); - writerfilter::dmapper::GraphicZOrderHelper* pHelper = rMapper.graphicZOrderHelper(); - sal_Int32 nZOrder = i->second.toInt32(); - xPropertySet->setPropertyValue("ZOrder", uno::makeAny(pHelper->findZOrder(nZOrder))); - pHelper->addItem(xPropertySet, nZOrder); - } + resolveDhgt(xPropertySet, i->second.toInt32()); else SAL_INFO("writerfilter", OSL_THIS_FUNC << ": TODO handle shape property '" << OUStringToOString( i->first, RTL_TEXTENCODING_UTF8 ).getStr() << "':'" << diff --git a/writerfilter/source/rtftok/rtfsdrimport.hxx b/writerfilter/source/rtftok/rtfsdrimport.hxx index e99445d..517b56b 100644 --- a/writerfilter/source/rtftok/rtfsdrimport.hxx +++ b/writerfilter/source/rtftok/rtfsdrimport.hxx @@ -40,6 +40,7 @@ namespace writerfilter { virtual ~RTFSdrImport(); void resolve(RTFShape& rShape); + void resolveDhgt(uno::Reference<beans::XPropertySet> xPropertySet, sal_Int32 nZOrder); private: void createShape(rtl::OUString aService, uno::Reference<drawing::XShape>& xShape, uno::Reference<beans::XPropertySet>& xPropertySet); _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
