[Libreoffice-commits] core.git: 4 commits - include/svtools sw/qa sw/source writerfilter/source

Miklos Vajna vmiklos at collabora.co.uk
Sun Oct 12 07:26:25 PDT 2014


 include/svtools/rtfkeywd.hxx                   |    2 +
 sw/qa/extras/ooxmlexport/data/em.docx          |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx       |   13 +++++++
 sw/qa/extras/rtfexport/data/em.rtf             |    8 ++++
 sw/qa/extras/rtfexport/rtfexport.cxx           |   13 +++++++
 sw/source/filter/ww8/docxattributeoutput.cxx   |   20 ++++++++---
 sw/source/filter/ww8/rtfattributeoutput.cxx    |   12 +++++-
 writerfilter/source/dmapper/DomainMapper.cxx   |   43 ++-----------------------
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |   10 ++---
 writerfilter/source/rtftok/rtfsdrimport.cxx    |   10 ++---
 10 files changed, 73 insertions(+), 58 deletions(-)

New commits:
commit 22f92b86069e7e130d96c6e124476b0c496d0df6
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Oct 12 16:19:01 2014 +0200

    Remove dead code
    
    Only doctok produced these tokens, so no need to handle them anymore.
    
    Change-Id: Ied7df2515ac86562dd5ce782a1f01158fe3f684e

diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 641cc49..d1aec85 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1133,9 +1133,6 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
 
     switch(nSprmId)
     {
-    case 2:  // sprmPIstd
-    case 0x4600:
-        break;  // sprmPIstd - style code
     case NS_ooxml::LN_CT_PPrBase_jc:
         handleParaJustification(nIntValue, rContext, ExchangeLeftRight( rContext, m_pImpl ));
         break;
@@ -1671,9 +1668,6 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
         rContext->Insert( PROP_HEIGHT, uno::makeAny( PaperInfo::sloppyFitPageDimension( nHeight ) ) );
     }
     break;
-    case 0x703a: //undocumented, grid related?
-        OSL_FAIL( "TODO: not handled yet"); //nIntValue like 0x008a2373 ?
-        break;
     case NS_ooxml::LN_EG_SectPrContents_textDirection:
     {
         /* 0 HoriLR 1 Vert TR 2 Vert TR 3 Vert TT 4 HoriLT
@@ -1705,35 +1699,6 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
     }
     break;  // sprmSTextFlow
         // the following are not part of the official documentation
-    case 0x6870: //TxtForeColor
-        {
-            sal_Int32 nColor = msfilter::util::BGRToRGB(nIntValue);
-            rContext->Insert(PROP_CHAR_COLOR, uno::makeAny( nColor ) );
-        }
-        break;
-    case 0x6877: //underlining color
-        {
-            rContext->Insert(PROP_CHAR_UNDERLINE_HAS_COLOR, uno::makeAny( true ) );
-            rContext->Insert(PROP_CHAR_UNDERLINE_COLOR, uno::makeAny( nIntValue ) );
-        }
-        break;
-    case 0x6815:
-        break; //undocumented
-    case 0x6467:
-        break; //undocumented
-    case 0xF617:
-        break; //undocumented
-    case 0xd634: // sprmTNewSpacing - table spacing ( see WW8TabBandDesc::ProcessSpacing() )
-        break;
-    case 0x4888:
-    case 0x6887:
-        //properties of list levels - undocumented
-        break;
-    case 0xd234:
-    case 0xd235:
-    case 0xd236:
-    case 0xd237:
-        break;//undocumented section properties
     case NS_ooxml::LN_CT_Tabs_tab:
         resolveSprmProps(*this, rSprm);
         m_pImpl->IncorporateTabStop(m_pImpl->m_aCurrentTabStop);
commit b92cfa8829e6d26048f96cced12251db0f11c1ac
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Oct 12 16:18:09 2014 +0200

    Clean up now unnecessary boost::bind() magic in RTFSdrImport::initShape()
    
    Change-Id: Ie373098959f8b3e04fe955a08031a4221faab3cc

diff --git a/writerfilter/source/rtftok/rtfsdrimport.cxx b/writerfilter/source/rtftok/rtfsdrimport.cxx
index 7105084..fcb5b9c 100644
--- a/writerfilter/source/rtftok/rtfsdrimport.cxx
+++ b/writerfilter/source/rtftok/rtfsdrimport.cxx
@@ -234,12 +234,10 @@ int RTFSdrImport::initShape(uno::Reference<drawing::XShape>& o_xShape,
 
     // first, find the shape type
     int nType = -1;
-    std::vector< std::pair<OUString, OUString> >::const_iterator const iter(
-        std::find_if(rShape.aProperties.begin(),
-                     rShape.aProperties.end(),
-                     boost::bind(&OUString::equals,
-                                 boost::bind(&std::pair<OUString, OUString>::first, _1),
-                                 OUString("shapeType"))));
+    auto iter = std::find_if(rShape.aProperties.begin(), rShape.aProperties.end(), [](std::pair<OUString, OUString> aProperty)
+    {
+        return aProperty.first == "shapeType";
+    });
 
     if (iter == rShape.aProperties.end())
     {
commit f99ebf4681ceb8803ea32f70835dafa368d74722
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Oct 12 16:17:40 2014 +0200

    RTF filter: fix \acc* handling
    
    The exporter didn't write circle and underdot at all.
    
    Change-Id: Ia8f45f2b03fb14e9a0027ec24ee7f36adc8c018d

diff --git a/include/svtools/rtfkeywd.hxx b/include/svtools/rtfkeywd.hxx
index 8518f69..cffa649 100644
--- a/include/svtools/rtfkeywd.hxx
+++ b/include/svtools/rtfkeywd.hxx
@@ -1047,6 +1047,8 @@
 #define OOO_STRING_SVTOOLS_RTF_ACCNONE "\\accnone"
 #define OOO_STRING_SVTOOLS_RTF_ACCDOT "\\accdot"
 #define OOO_STRING_SVTOOLS_RTF_ACCCOMMA "\\acccomma"
+#define OOO_STRING_SVTOOLS_RTF_ACCCIRCLE "\\acccircle"
+#define OOO_STRING_SVTOOLS_RTF_ACCUNDERDOT "\\accunderdot"
 #define OOO_STRING_SVTOOLS_RTF_TWOINONE "\\twoinone"
 #define OOO_STRING_SVTOOLS_RTF_HORZVERT "\\horzvert"
 #define OOO_STRING_SVTOOLS_RTF_FAHANG "\\fahang"
diff --git a/sw/qa/extras/rtfexport/data/em.rtf b/sw/qa/extras/rtfexport/data/em.rtf
new file mode 100644
index 0000000..c255105
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/em.rtf
@@ -0,0 +1,8 @@
+{\rtf1
+none
+{\accdot dot}
+{\acccomma comma}
+{\acccircle circle}
+{\accunderdot underDot}
+\par
+}
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index 954dc2f..5c74c53 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -16,6 +16,7 @@
 #include <com/sun/star/frame/XStorable.hpp>
 #include <com/sun/star/table/BorderLine2.hpp>
 #include <com/sun/star/table/ShadowFormat.hpp>
+#include <com/sun/star/text/FontEmphasis.hpp>
 #include <com/sun/star/text/RelOrientation.hpp>
 #include <com/sun/star/text/TextContentAnchorType.hpp>
 #include <com/sun/star/text/XFootnotesSupplier.hpp>
@@ -689,6 +690,18 @@ DECLARE_RTFEXPORT_TEST(testAbi10076, "abi10076.odt")
     // Just make sure that we don't crash after exporting a fully calculated layout.
 }
 
+DECLARE_RTFEXPORT_TEST(testEm, "em.rtf")
+{
+    // Test all possible \acc* control words.
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::NONE, getProperty<sal_Int16>(getRun(getParagraph(1), 1), "CharEmphasis"));
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::DOT_ABOVE, getProperty<sal_Int16>(getRun(getParagraph(1), 2), "CharEmphasis"));
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::ACCENT_ABOVE, getProperty<sal_Int16>(getRun(getParagraph(1), 3), "CharEmphasis"));
+    // This was missing.
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::CIRCLE_ABOVE, getProperty<sal_Int16>(getRun(getParagraph(1), 4), "CharEmphasis"));
+    // This one, too.
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::DOT_BELOW, getProperty<sal_Int16>(getRun(getParagraph(1), 5), "CharEmphasis"));
+}
+
 DECLARE_RTFEXPORT_TEST(testNumberingFont, "numbering-font.rtf")
 {
     uno::Reference<beans::XPropertySet> xStyle(getStyles("CharacterStyles")->getByName("ListLabel 1"), uno::UNO_QUERY);
diff --git a/sw/source/filter/ww8/rtfattributeoutput.cxx b/sw/source/filter/ww8/rtfattributeoutput.cxx
index a576ddc..a7eecbc 100644
--- a/sw/source/filter/ww8/rtfattributeoutput.cxx
+++ b/sw/source/filter/ww8/rtfattributeoutput.cxx
@@ -2330,11 +2330,17 @@ void RtfAttributeOutput::CharEmphasisMark(const SvxEmphasisMarkItem& rEmphasisMa
     case EMPHASISMARK_NONE:
         pStr = OOO_STRING_SVTOOLS_RTF_ACCNONE;
         break;
-    case EMPHASISMARK_SIDE_DOTS:
+    case EMPHASISMARK_DOT | EMPHASISMARK_POS_ABOVE:
+        pStr = OOO_STRING_SVTOOLS_RTF_ACCDOT;
+        break;
+    case EMPHASISMARK_ACCENT | EMPHASISMARK_POS_ABOVE:
         pStr = OOO_STRING_SVTOOLS_RTF_ACCCOMMA;
         break;
-    default:
-        pStr = OOO_STRING_SVTOOLS_RTF_ACCDOT;
+    case EMPHASISMARK_CIRCLE | EMPHASISMARK_POS_ABOVE:
+        pStr = OOO_STRING_SVTOOLS_RTF_ACCCIRCLE;
+        break;
+    case EMPHASISMARK_DOT|EMPHASISMARK_POS_BELOW:
+        pStr = OOO_STRING_SVTOOLS_RTF_ACCUNDERDOT;
         break;
     }
     m_aStyles.append(pStr);
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index d266183..85884f94 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -4714,19 +4714,19 @@ int RTFDocumentImpl::dispatchToggle(RTFKeyword nKeyword, bool bParam, int nParam
     switch (nKeyword)
     {
     case RTF_ACCNONE:
-        nSprm = 0;
+        nSprm = NS_ooxml::LN_Value_ST_Em_none;
         break;
     case RTF_ACCDOT:
-        nSprm = 1;
+        nSprm = NS_ooxml::LN_Value_ST_Em_dot;
         break;
     case RTF_ACCCOMMA:
-        nSprm = 2;
+        nSprm = NS_ooxml::LN_Value_ST_Em_comma;
         break;
     case RTF_ACCCIRCLE:
-        nSprm = 3;
+        nSprm = NS_ooxml::LN_Value_ST_Em_circle;
         break;
     case RTF_ACCUNDERDOT:
-        nSprm = 4;
+        nSprm = NS_ooxml::LN_Value_ST_Em_underDot;
         break;
     default:
         break;
commit 997ce52eb7ef5d1418784bc16afb495ec43fe64c
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Sun Oct 12 16:17:01 2014 +0200

    DOCX filter: fix <w:em> handling
    
    The real news here is that "comma" and "dot" was swapped on export, the
    rest is just a fixup of recent breakage.
    
    Change-Id: I54045f5837652dc38a30361e21ced25aeaf58257

diff --git a/sw/qa/extras/ooxmlexport/data/em.docx b/sw/qa/extras/ooxmlexport/data/em.docx
new file mode 100644
index 0000000..ee3137e
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/em.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 1277f7b..1101e2d 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -13,6 +13,7 @@
 #include <com/sun/star/graphic/XGraphic.hpp>
 #include <com/sun/star/text/HoriOrientation.hpp>
 #include <com/sun/star/text/XTextRangeCompare.hpp>
+#include <com/sun/star/text/FontEmphasis.hpp>
 
 #include <string>
 
@@ -456,6 +457,18 @@ DECLARE_OOXMLEXPORT_TEST(testEffectExtent, "effect-extent.docx")
         assertXPath(pXmlDoc, "//wp:effectExtent", "l", "114300");
 }
 
+DECLARE_OOXMLEXPORT_TEST(testEm, "em.docx")
+{
+    // Test all possible <w:em> arguments.
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::NONE, getProperty<sal_Int16>(getRun(getParagraph(1), 1), "CharEmphasis"));
+    // This was ACCENT_ABOVE.
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::DOT_ABOVE, getProperty<sal_Int16>(getRun(getParagraph(1), 2), "CharEmphasis"));
+    // This was DOT_ABOVE.
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::ACCENT_ABOVE, getProperty<sal_Int16>(getRun(getParagraph(1), 3), "CharEmphasis"));
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::CIRCLE_ABOVE, getProperty<sal_Int16>(getRun(getParagraph(1), 4), "CharEmphasis"));
+    CPPUNIT_ASSERT_EQUAL(text::FontEmphasis::DOT_BELOW, getProperty<sal_Int16>(getRun(getParagraph(1), 5), "CharEmphasis"));
+}
+
 CPPUNIT_PLUGIN_IMPLEMENT();
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 015531e..8843331 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -6332,11 +6332,21 @@ void DocxAttributeOutput::CharEmphasisMark( const SvxEmphasisMarkItem& rEmphasis
 
     switch ( rEmphasisMark.GetValue() )
     {
-        case EMPHASISMARK_NONE:         pEmphasis = "none";     break;
-        case EMPHASISMARK_SIDE_DOTS:    pEmphasis = "dot";      break;
-        case EMPHASISMARK_CIRCLE_ABOVE: pEmphasis = "circle";   break;
-        case EMPHASISMARK_DOTS_BELOW:   pEmphasis = "underDot"; break;
-        default:                        pEmphasis = "comma";    break;
+    case EMPHASISMARK_NONE:
+        pEmphasis = "none";
+        break;
+    case EMPHASISMARK_DOT | EMPHASISMARK_POS_ABOVE:
+        pEmphasis = "dot";
+        break;
+    case EMPHASISMARK_ACCENT | EMPHASISMARK_POS_ABOVE:
+        pEmphasis = "comma";
+        break;
+    case EMPHASISMARK_CIRCLE | EMPHASISMARK_POS_ABOVE:
+        pEmphasis = "circle";
+        break;
+    case EMPHASISMARK_DOT|EMPHASISMARK_POS_BELOW:
+        pEmphasis = "underDot";
+        break;
     }
 
     m_pSerializer->singleElementNS( XML_w, XML_em, FSNS( XML_w, XML_val ), pEmphasis, FSEND );
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index aa0b80e..641cc49 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3274,13 +3274,13 @@ sal_Int16 DomainMapper::getEmphasisValue(const sal_Int32 nIntValue)
 {
     switch (nIntValue)
     {
-    case 1:
+    case NS_ooxml::LN_Value_ST_Em_dot:
         return com::sun::star::text::FontEmphasis::DOT_ABOVE;
-    case 2:
+    case NS_ooxml::LN_Value_ST_Em_comma:
         return com::sun::star::text::FontEmphasis::ACCENT_ABOVE;
-    case 3:
+    case NS_ooxml::LN_Value_ST_Em_circle:
         return com::sun::star::text::FontEmphasis::CIRCLE_ABOVE;
-    case 4:
+    case NS_ooxml::LN_Value_ST_Em_underDot:
         return com::sun::star::text::FontEmphasis::DOT_BELOW;
     default:
         return com::sun::star::text::FontEmphasis::NONE;


More information about the Libreoffice-commits mailing list