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

Kohei Yoshida kohei.yoshida at collabora.com
Fri May 30 19:05:29 PDT 2014


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

New commits:
commit f47e11a050b5e9c40893cc692cf645aae55b654f
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)

diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index d61496e..a76033f 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -1082,6 +1082,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 )
@@ -1113,22 +1134,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