[Libreoffice-commits] core.git: 2 commits - filter/source writerfilter/Library_writerfilter.mk writerfilter/source

Xisco Fauli anistenis at gmail.com
Tue Dec 1 01:07:26 PST 2015


 filter/source/svg/svgreader.cxx                   |    3 
 writerfilter/Library_writerfilter.mk              |    1 
 writerfilter/source/dmapper/DomainMapper.cxx      |   11 +++
 writerfilter/source/dmapper/DomainMapper_Impl.hxx |    3 
 writerfilter/source/dmapper/SmartTagHandler.cxx   |   70 ++++++++++++++++++++++
 writerfilter/source/dmapper/SmartTagHandler.hxx   |   42 +++++++++++++
 writerfilter/source/ooxml/model.xml               |    3 
 7 files changed, 132 insertions(+), 1 deletion(-)

New commits:
commit 796a904b6f3cfd7895e1763fdb043130a9c484ac
Author: Xisco Fauli <anistenis at gmail.com>
Date:   Thu Nov 26 22:49:31 2015 +0100

    tdf#96046 SVG: Fix problem when percentage depends ...
    
    ... on its parent's viewbox
    
    Change-Id: I1cf6327c0886c7d417923e90b7ffb60269e75147
    Reviewed-on: https://gerrit.libreoffice.org/20214
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/filter/source/svg/svgreader.cxx b/filter/source/svg/svgreader.cxx
index 0554099..730b42c 100644
--- a/filter/source/svg/svgreader.cxx
+++ b/filter/source/svg/svgreader.cxx
@@ -317,6 +317,9 @@ struct AnnotatingVisitor
                     double scale = (scaleW < scaleH) ? scaleW : scaleH;
                     aLocalTransform.scale(scale,scale);
                 }
+                else if( !maParentStates.back().maViewBox.isEmpty() )
+                                    maCurrState.maViewBox = maParentStates.back().maViewBox;
+
                 maCurrState.maCTM = maCurrState.maCTM*maCurrState.maTransform*aLocalTransform;
 
                 OSL_TRACE("annotateStyle - CTM is: %f %f %f %f %f %f",
commit 3eb6f422e079c6e64b6585a5624fc741eb3c7e98
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Dec 1 09:48:03 2015 +0100

    DOCX import: tokenize <w:smartTag>
    
    Change-Id: I2c408a25880ad0e87f0b5a246a350e45c8378ce5

diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
index 6149401..fb5eecb 100644
--- a/writerfilter/Library_writerfilter.mk
+++ b/writerfilter/Library_writerfilter.mk
@@ -101,6 +101,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
     writerfilter/source/dmapper/SdtHelper \
     writerfilter/source/dmapper/SectionColumnHandler \
     writerfilter/source/dmapper/SettingsTable \
+    writerfilter/source/dmapper/SmartTagHandler \
     writerfilter/source/dmapper/StyleSheetTable \
     writerfilter/source/dmapper/TDefTableHandler \
     writerfilter/source/dmapper/TableManager \
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 07350c9..86fcb86 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -626,8 +626,10 @@ void DomainMapper::lcl_attribute(Id nName, Value & val)
         }
         break;
         case NS_ooxml::LN_CT_SmartTagRun_uri:
+            m_pImpl->getSmartTagHandler().setURI(val.getString());
+        break;
         case NS_ooxml::LN_CT_SmartTagRun_element:
-            //TODO: add handling of SmartTags
+            m_pImpl->getSmartTagHandler().setElement(val.getString());
         break;
         case NS_ooxml::LN_CT_Br_type :
             //TODO: attributes for break (0x12) are not supported
@@ -2639,6 +2641,13 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext )
         m_pImpl->SetRubyInfo(aInfo);
     }
     break;
+    case NS_ooxml::LN_CT_SmartTagRun_smartTagPr:
+    {
+        writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
+        if (pProperties.get())
+            pProperties->resolve(m_pImpl->getSmartTagHandler());
+    }
+    break;
     default:
         {
 #ifdef DEBUG_WRITERFILTER
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index be6bb26..14199bb 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -48,6 +48,7 @@
 #include "GraphicImport.hxx"
 #include "OLEHandler.hxx"
 #include "FFDataHandler.hxx"
+#include "SmartTagHandler.hxx"
 #include "FormControlHelper.hxx"
 #include <map>
 
@@ -460,6 +461,7 @@ private:
     css::uno::Reference<css::beans::XPropertySet> GetDocumentSettings();
 
     std::map<sal_Int32, css::uno::Any> deferredCharacterProperties;
+    SmartTagHandler m_aSmartTagHandler;
 
 public:
     css::uno::Reference<css::text::XTextRange> m_xInsertTextRange;
@@ -849,6 +851,7 @@ public:
     std::queue<OUString> m_aPositivePercentages;
     bool isInIndexContext() { return m_bStartIndex;}
     bool isInBibliographyContext() { return m_bStartBibliography;}
+    SmartTagHandler& getSmartTagHandler() { return m_aSmartTagHandler; }
 
     void substream(Id rName, ::writerfilter::Reference<Stream>::Pointer_t const& ref);
 
diff --git a/writerfilter/source/dmapper/SmartTagHandler.cxx b/writerfilter/source/dmapper/SmartTagHandler.cxx
new file mode 100644
index 0000000..7c44cde
--- /dev/null
+++ b/writerfilter/source/dmapper/SmartTagHandler.cxx
@@ -0,0 +1,70 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <SmartTagHandler.hxx>
+#include <ooxml/resourceids.hxx>
+
+namespace writerfilter
+{
+namespace dmapper
+{
+
+using namespace ::com::sun::star;
+
+SmartTagHandler::SmartTagHandler()
+    : LoggedProperties("SmartTagHandler")
+{
+}
+
+SmartTagHandler::~SmartTagHandler()
+{
+}
+
+void SmartTagHandler::lcl_attribute(Id nName, Value& rValue)
+{
+    switch (nName)
+    {
+    case NS_ooxml::LN_CT_Attr_name:
+        break;
+    case NS_ooxml::LN_CT_Attr_val:
+        break;
+    default:
+        SAL_WARN("writerfilter", "SmartTagHandler::lcl_attribute: unhandled attribute " << nName << " (string value: '"<<rValue.getString()<<"')");
+        break;
+    }
+}
+
+void SmartTagHandler::lcl_sprm(Sprm& rSprm)
+{
+    switch (rSprm.getId())
+    {
+    case NS_ooxml::LN_CT_SmartTagPr_attr:
+    {
+        writerfilter::Reference<Properties>::Pointer_t pProperties = rSprm.getProps();
+        if (pProperties.get())
+            pProperties->resolve(*this);
+        break;
+    }
+    }
+}
+
+void SmartTagHandler::setURI(const OUString& rURI)
+{
+    m_aURI = rURI;
+}
+
+void SmartTagHandler::setElement(const OUString& rElement)
+{
+    m_aElement = rElement;
+}
+
+} // namespace dmapper
+} // namespace writerfilter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/SmartTagHandler.hxx b/writerfilter/source/dmapper/SmartTagHandler.hxx
new file mode 100644
index 0000000..ae5996b
--- /dev/null
+++ b/writerfilter/source/dmapper/SmartTagHandler.hxx
@@ -0,0 +1,42 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+#ifndef INCLUDED_WRITERFILTER_SOURCE_DMAPPER_SMARTTAGHANDLER_HXX
+#define INCLUDED_WRITERFILTER_SOURCE_DMAPPER_SMARTTAGHANDLER_HXX
+
+#include "LoggedResources.hxx"
+
+namespace writerfilter
+{
+namespace dmapper
+{
+
+/// Handler for smart tags, i.e. <w:smartTag> and below.
+class SmartTagHandler
+    : public LoggedProperties
+{
+    OUString m_aURI;
+    OUString m_aElement;
+
+public:
+    SmartTagHandler();
+    virtual ~SmartTagHandler();
+
+    virtual void lcl_attribute(Id Name, Value& val) override;
+    virtual void lcl_sprm(Sprm& sprm) override;
+
+    void setURI(const OUString& rURI);
+    void setElement(const OUString& rElement);
+};
+
+} // namespace dmapper
+} // namespace writerfilter
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/ooxml/model.xml b/writerfilter/source/ooxml/model.xml
index 260aa3d..e3b4622 100644
--- a/writerfilter/source/ooxml/model.xml
+++ b/writerfilter/source/ooxml/model.xml
@@ -18166,6 +18166,9 @@
       <attribute name="uri" tokenid="ooxml:CT_SmartTagRun_uri"/>
       <attribute name="element" tokenid="ooxml:CT_SmartTagRun_element"/>
     </resource>
+    <resource name="CT_SmartTagPr" resource="Properties">
+      <element name="attr" tokenid="ooxml:CT_SmartTagPr_attr"/>
+    </resource>
     <resource name="EG_PContent" resource="Properties">
       <element name="fldSimple" tokenid="ooxml:EG_PContent_fldSimple"/>
       <element name="hyperlink" tokenid="ooxml:EG_PContent_hyperlink"/>


More information about the Libreoffice-commits mailing list