[Libreoffice-commits] .: sw/qa writerfilter/source
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Wed Oct 17 07:36:31 PDT 2012
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 <vmiklos at suse.cz>
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);
More information about the Libreoffice-commits
mailing list