[Libreoffice-commits] core.git: Branch 'libreoffice-4-2' - sc/source

Kohei Yoshida kohei.yoshida at collabora.com
Sat May 31 09:38:33 PDT 2014


 sc/source/filter/xml/xmlexprt.cxx |   40 ++++++++++++++++++++++++--------------
 1 file changed, 26 insertions(+), 14 deletions(-)

New commits:
commit 282227a81df90dfe11f0b57a4d7558d7faa56836
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri May 30 22:02:01 2014 -0400

    fdo#78927: Use different XML attribute names for asian and complex fonts.
    
    Change-Id: I96a26bd495d6a78fffd0854b5084f69b5db84ee6
    (cherry picked from commit 1b35c7ea4f7fe1473dbe08ab93b7259403b290ff)
    Reviewed-on: https://gerrit.libreoffice.org/9588
    Tested-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 885b5bc..058e719 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -1075,6 +1075,27 @@ void ScXMLExport::ExportExternalRefCacheStyles()
 
 namespace {
 
+void handleFont(
+    std::vector<XMLPropertyState>& rPropStates,
+    const SfxPoolItem* p, const UniReference<XMLPropertySetMapper>& xMapper, const OUString& rXMLName )
+{
+    sal_Int32 nEntryCount = xMapper->GetEntryCount();
+
+    // Apparently font info needs special handling.
+    const SvxFontItem* pItem = static_cast<const SvxFontItem*>(p);
+
+    sal_Int32 nIndexFontName = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, rXMLName, 0);
+
+    if (nIndexFontName == -1 || nIndexFontName >= nEntryCount)
+        return;
+
+    uno::Any aAny;
+    if (!pItem->QueryValue(aAny, MID_FONT_FAMILY_NAME))
+        return;
+
+    rPropStates.push_back(XMLPropertyState(nIndexFontName, aAny));
+}
+
 const SvxFieldData* toXMLPropertyStates(
     std::vector<XMLPropertyState>& rPropStates, const std::vector<const SfxPoolItem*>& rSecAttrs,
     const UniReference<XMLPropertySetMapper>& xMapper, const ScXMLEditAttributeMap& rAttrMap )
@@ -1106,22 +1127,13 @@ const SvxFieldData* toXMLPropertyStates(
         switch (p->Which())
         {
             case EE_CHAR_FONTINFO:
+                handleFont(rPropStates, p, xMapper, "font-name");
+            break;
             case EE_CHAR_FONTINFO_CJK:
+                handleFont(rPropStates, p, xMapper, "font-name-asian");
+            break;
             case EE_CHAR_FONTINFO_CTL:
-            {
-                // Apparently font info needs special handling.
-                const SvxFontItem* pItem = static_cast<const SvxFontItem*>(p);
-
-                sal_Int32 nIndexFontName = xMapper->GetEntryIndex(XML_NAMESPACE_STYLE, "font-name", 0);
-
-                if (nIndexFontName == -1 || nIndexFontName >= nEntryCount)
-                    break;
-
-                if (!pItem->QueryValue(aAny, MID_FONT_FAMILY_NAME))
-                    break;
-
-                rPropStates.push_back(XMLPropertyState(nIndexFontName, aAny));
-            }
+                handleFont(rPropStates, p, xMapper, "font-name-complex");
             break;
             case EE_CHAR_WEIGHT:
             case EE_CHAR_WEIGHT_CJK:


More information about the Libreoffice-commits mailing list