[Libreoffice-commits] .: svtools/inc sw/qa sw/source writerfilter/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Mon Mar 12 13:09:40 PDT 2012


 svtools/inc/svtools/rtfkeywd.hxx               |    1 
 sw/qa/extras/rtftok/data/n750757.rtf           |   45 +++++++++++++++++++++++++
 sw/qa/extras/rtftok/rtftok.cxx                 |   21 +++++++++++
 sw/source/filter/ww8/rtfattributeoutput.cxx    |    2 +
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |    6 +++
 5 files changed, 75 insertions(+)

New commits:
commit f722299e133568fe75f7cf9ce0c103a1553474c4
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Mon Mar 12 20:43:42 2012 +0100

    implement RTF support of contextual spacing
    
    Import, export and testcase.

diff --git a/svtools/inc/svtools/rtfkeywd.hxx b/svtools/inc/svtools/rtfkeywd.hxx
index dca17c9..67aa41e 100644
--- a/svtools/inc/svtools/rtfkeywd.hxx
+++ b/svtools/inc/svtools/rtfkeywd.hxx
@@ -130,6 +130,7 @@
 #define OOO_STRING_SVTOOLS_RTF_COLUMN "\\column"
 #define OOO_STRING_SVTOOLS_RTF_COLW "\\colw"
 #define OOO_STRING_SVTOOLS_RTF_COMMENT "\\comment"
+#define OOO_STRING_SVTOOLS_RTF_CONTEXTUALSPACE "\\contextualspace"
 #define OOO_STRING_SVTOOLS_RTF_CREATIM "\\creatim"
 #define OOO_STRING_SVTOOLS_RTF_CTRL "\\ctrl"
 #define OOO_STRING_SVTOOLS_RTF_DEFF "\\deff"
diff --git a/sw/qa/extras/rtftok/data/n750757.rtf b/sw/qa/extras/rtftok/data/n750757.rtf
new file mode 100644
index 0000000..04d78b6
--- /dev/null
+++ b/sw/qa/extras/rtftok/data/n750757.rtf
@@ -0,0 +1,45 @@
+{\rtf1
+{\stylesheet
+{\s15\ql \li720\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033 
+\sbasedon0 \snext15 \sqformat \spriority34 \styrsid13858768 List Paragraph;}
+}
+{\*\listtable
+{\list\listtemplateid188802200\listhybrid
+{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0
+{\leveltext\leveltemplateid68026383
+\'02\'00.;}
+{\levelnumbers\'01;}
+\rtlch\fcs1 \af0 \ltrch\fcs0 \hres0\chhres0 \fi-360\li720\lin720 }
+{\listname ;}
+\listid983924569}
+}
+{\*\listoverridetable
+{\listoverride\listid983924569\listoverridecount0\ls4}
+}
+\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4409714 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
+\f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033 
+{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4409714 before
+\par 
+{\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\langnp1033\insrsid4409714\charrsid13858768 \hich\af31506\dbch\af31506\loch\f31506 1.\tab}
+}
+\pard\plain \ltrpar
+\s15\ql \fi-360\li720\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\ls4\adjustright\rin0\lin720\itap0\pararsid13858768\contextualspace \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 
+\f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033 
+{\rtlch\fcs1 \af31507 \ltrch\fcs0 \lang1033\langfe1033\langnp1033\insrsid4409714\charrsid13858768 num}
+{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4409714  1
+\par 
+{\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f31506\fs22\lang1033\langfe1033\langnp1033\insrsid4409714\charrsid13858768 \hich\af31506\dbch\af31506\loch\f31506 2.\tab}
+}
+{\rtlch\fcs1 \af31507 \ltrch\fcs0 
+\lang1033\langfe1033\langnp1033\insrsid4409714\charrsid13858768 num}
+{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4409714  2
+\par 
+{\listtext\pard\plain\ltrpar \s15 \rtlch\fcs1 \af31507\afs22 \ltrch\fcs0 \f31506\fs22\insrsid420015 \hich\af31506\dbch\af31506\loch\f31506 3.\tab}
+}
+{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid420015 num 3
+\par }
+\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid4409714 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \f31506\fs22\lang1038\langfe1033\cgrid\langnp1038\langfenp1033 
+{
+\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid4409714 after
+\par }
+}
diff --git a/sw/qa/extras/rtftok/rtftok.cxx b/sw/qa/extras/rtftok/rtftok.cxx
index 1174626..c11af26 100644
--- a/sw/qa/extras/rtftok/rtftok.cxx
+++ b/sw/qa/extras/rtftok/rtftok.cxx
@@ -62,6 +62,7 @@ public:
     void testFdo42465();
     void testFdo45187();
     void testFdo46662();
+    void testN750757();
 
     CPPUNIT_TEST_SUITE(RtfModelTest);
 #if !defined(MACOSX) && !defined(WNT)
@@ -72,6 +73,7 @@ public:
     CPPUNIT_TEST(testFdo42465);
     CPPUNIT_TEST(testFdo45187);
     CPPUNIT_TEST(testFdo46662);
+    CPPUNIT_TEST(testN750757);
 #endif
     CPPUNIT_TEST_SUITE_END();
 
@@ -301,6 +303,25 @@ void RtfModelTest::testFdo46662()
     }
 }
 
+void RtfModelTest::testN750757()
+{
+    load(OUString(RTL_CONSTASCII_USTRINGPARAM("n750757.rtf")));
+    uno::Reference<text::XTextDocument> xTextDocument(mxComponent, uno::UNO_QUERY);
+    uno::Reference<container::XEnumerationAccess> xParaEnumAccess(xTextDocument->getText(), uno::UNO_QUERY);
+    uno::Reference<container::XEnumeration> xParaEnum = xParaEnumAccess->createEnumeration();
+
+    uno::Reference<beans::XPropertySet> xPropertySet(xParaEnum->nextElement(), uno::UNO_QUERY);
+    sal_Bool bValue;
+    uno::Any aValue = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParaContextMargin")));
+    aValue >>= bValue;
+    CPPUNIT_ASSERT_EQUAL(sal_Bool(false), bValue);
+
+    xPropertySet.set(xParaEnum->nextElement(), uno::UNO_QUERY);
+    aValue = xPropertySet->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ParaContextMargin")));
+    aValue >>= bValue;
+    CPPUNIT_ASSERT_EQUAL(sal_Bool(true), bValue);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(RtfModelTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index 87b4ebc..70a6a27 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -2713,6 +2713,8 @@ void RtfAttributeOutput::FormatULSpace( const SvxULSpaceItem& rULSpace )
             m_aStyles.append( (sal_Int32) rULSpace.GetUpper() );
             m_aStyles.append(OOO_STRING_SVTOOLS_RTF_SA);
             m_aStyles.append( (sal_Int32) rULSpace.GetLower() );
+            if (rULSpace.GetContext())
+                m_aStyles.append(OOO_STRING_SVTOOLS_RTF_CONTEXTUALSPACE);
         }
     }
     else if (rULSpace.GetUpper() == rULSpace.GetLower() && m_rExport.bRTFFlySyntax)
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 82b1614..bde6da9 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -2019,6 +2019,12 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
                     m_aStates.top().aDrawingObject.aPendingProperties.push_back(aPropertyValue);
                 }
                 break;
+        case RTF_CONTEXTUALSPACE:
+                {
+                    RTFValue::Pointer_t pValue(new RTFValue(1));
+                    m_aStates.top().aParagraphSprms->push_back(make_pair(NS_sprm::LN_PContextualSpacing, pValue));
+                }
+                break;
         default:
             SAL_INFO("writerfilter", OSL_THIS_FUNC << ": TODO handle flag '" << lcl_RtfToString(nKeyword) << "'");
             aSkip.setParsed(false);


More information about the Libreoffice-commits mailing list