[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