Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


On Tue, Apr 24, 2012 at 02:15:53PM +0100, Caolán McNamara <caolanm@redhat.com> wrote:
Can you merge that with (the equally horrible equivalent and partial
hack) in ww8par.cxx (search for LANGUAGE_RUSSIAN) and put it someplace
shared ?

Sure - does the attached patch looks sane? It definitely works with my
Russian test RTF doc, the ww8 part is only compile-tested.

If yes, then I would go with that in master, and have the originally
proposed smaller change in -3-5.

Miklos
From 0988800a28ff7255ed99e37f6ecf626cea4539e0 Mon Sep 17 00:00:00 2001
From: Miklos Vajna <vmiklos@suse.cz>
Date: Tue, 24 Apr 2012 17:35:40 +0200
Subject: [PATCH] msfilter::util: avoid code duplication by merging from sw
 and writerfilter

---
 filter/Library_msfilter.mk                     |    1 +
 filter/Package_inc.mk                          |    1 +
 filter/inc/filter/msfilter/util.hxx            |   46 ++++++++++++++++++++
 filter/source/msfilter/util.cxx                |   55 ++++++++++++++++++++++++
 sw/source/filter/ww8/ww8par.cxx                |   27 +-----------
 writerfilter/Library_rtftok.mk                 |    1 +
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |   16 +------
 7 files changed, 108 insertions(+), 39 deletions(-)
 create mode 100644 filter/inc/filter/msfilter/util.hxx
 create mode 100644 filter/source/msfilter/util.cxx

diff --git a/filter/Library_msfilter.mk b/filter/Library_msfilter.mk
index e2e5eb2..979abd7 100644
--- a/filter/Library_msfilter.mk
+++ b/filter/Library_msfilter.mk
@@ -71,6 +71,7 @@ $(eval $(call gb_Library_add_exception_objects,msfilter,\
        filter/source/msfilter/services \
        filter/source/msfilter/svdfppt \
        filter/source/msfilter/svxmsbas2 \
+       filter/source/msfilter/util \
 ))
 
 # vim: set noet sw=4 ts=4:
diff --git a/filter/Package_inc.mk b/filter/Package_inc.mk
index 27a6c45..2b113f1 100644
--- a/filter/Package_inc.mk
+++ b/filter/Package_inc.mk
@@ -30,5 +30,6 @@ $(eval $(call gb_Package_add_file,filter_inc,inc/filter/msfilter/mstoolbar.hxx,f
 $(eval $(call 
gb_Package_add_file,filter_inc,inc/filter/msfilter/msvbahelper.hxx,filter/msfilter/msvbahelper.hxx))
 $(eval $(call 
gb_Package_add_file,filter_inc,inc/filter/msfilter/svdfppt.hxx,filter/msfilter/svdfppt.hxx))
 $(eval $(call 
gb_Package_add_file,filter_inc,inc/filter/msfilter/svxmsbas.hxx,filter/msfilter/svxmsbas.hxx))
+$(eval $(call 
gb_Package_add_file,filter_inc,inc/filter/msfilter/util.hxx,filter/msfilter/util.hxx))
 
 # vim: set noet sw=4 ts=4:
diff --git a/filter/inc/filter/msfilter/util.hxx b/filter/inc/filter/msfilter/util.hxx
new file mode 100644
index 0000000..33a6658
--- /dev/null
+++ b/filter/inc/filter/msfilter/util.hxx
@@ -0,0 +1,46 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *       Miklos Vajna <vmiklos@suse.cz> (SUSE, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2012 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#ifndef INCLUDED_MSFILTER_UTIL_HXX
+#define INCLUDED_MSFILTER_UTIL_HXX
+
+#include <rtl/textenc.h>
+#include "filter/msfilter/msfilterdllapi.h"
+
+namespace msfilter {
+namespace util {
+
+/// Returns the default encoding, based on the application's locale.
+MSFILTER_DLLPUBLIC rtl_TextEncoding GetDefaultTextEncoding();
+
+}
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/filter/source/msfilter/util.cxx b/filter/source/msfilter/util.cxx
new file mode 100644
index 0000000..a5fb209
--- /dev/null
+++ b/filter/source/msfilter/util.cxx
@@ -0,0 +1,55 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * Version: MPL 1.1 / GPLv3+ / LGPLv3+
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Initial Developer of the Original Code is
+ *       Miklos Vajna <vmiklos@suse.cz> (SUSE, Inc.)
+ * Portions created by the Initial Developer are Copyright (C) 2012 the
+ * Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+ * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+ * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+ * instead of those above.
+ */
+
+#include <rtl/ustring.hxx>
+#include <vcl/svapp.hxx>
+#include <filter/msfilter/util.hxx>
+
+namespace msfilter {
+namespace util {
+
+rtl_TextEncoding GetDefaultTextEncoding()
+{
+    const rtl::OUString& rLanguage = Application::GetSettings().GetLocale().Language;
+
+    if (rLanguage == "cs" || rLanguage == "hu" || rLanguage == "pl")
+        return RTL_TEXTENCODING_MS_1250;
+    if (rLanguage == "ru" || rLanguage == "uk")
+        return RTL_TEXTENCODING_MS_1251;
+    if (rLanguage == "el")
+        return RTL_TEXTENCODING_MS_1253;
+    if (rLanguage == "tr")
+        return RTL_TEXTENCODING_MS_1254;
+    else
+        return RTL_TEXTENCODING_MS_1252;
+}
+
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index d038f19..c4513f1 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -61,6 +61,7 @@
 #include <editeng/charhiddenitem.hxx>
 #include <editeng/fontitem.hxx>
 #include <filter/msfilter/svxmsbas.hxx>
+#include <filter/msfilter/util.hxx>
 #include <svx/unoapi.hxx>
 #include <svx/svdoole2.hxx>
 #include <filter/msfilter/msdffimp.hxx>
@@ -2375,31 +2376,7 @@ CharSet SwWW8ImplReader::GetCurrentCharSet()
              correctly set in the character runs involved, so its hard to reproduce
              documents that require this to be sure of the process involved.
             */
-            const SvxLanguageItem *pLang =
-                (const SvxLanguageItem*)GetFmtAttr(RES_CHRATR_LANGUAGE);
-            if (pLang)
-            {
-                switch (pLang->GetLanguage())
-                {
-                    case LANGUAGE_CZECH:
-                    case LANGUAGE_HUNGARIAN:
-                    case LANGUAGE_POLISH:
-                        eSrcCharSet = RTL_TEXTENCODING_MS_1250;
-                        break;
-                    case LANGUAGE_RUSSIAN:
-                        eSrcCharSet = RTL_TEXTENCODING_MS_1251;
-                        break;
-                    case LANGUAGE_GREEK:
-                        eSrcCharSet = RTL_TEXTENCODING_MS_1253;
-                        break;
-                    case LANGUAGE_TURKISH:
-                        eSrcCharSet = RTL_TEXTENCODING_MS_1254;
-                        break;
-                    default:
-                        eSrcCharSet = RTL_TEXTENCODING_MS_1252;
-                        break;
-                }
-            }
+            eSrcCharSet = msfilter::util::GetDefaultTextEncoding();
         }
     }
     return eSrcCharSet;
diff --git a/writerfilter/Library_rtftok.mk b/writerfilter/Library_rtftok.mk
index 5521362..b7df627 100644
--- a/writerfilter/Library_rtftok.mk
+++ b/writerfilter/Library_rtftok.mk
@@ -49,6 +49,7 @@ $(eval $(call gb_Library_add_defs,rtftok,\
 $(eval $(call gb_Library_use_libraries,rtftok,\
        cppu \
        cppuhelper \
+       msfilter \
        oox \
        sal \
        svt \
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx 
b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 50f84c4..6bcfdc7 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -45,6 +45,7 @@
 #include <vcl/graph.hxx>
 #include <svtools/grfmgr.hxx>
 #include <vcl/svapp.hxx>
+#include <filter/msfilter/util.hxx>
 
 #include <doctok/sprmids.hxx> // NS_sprm namespace
 #include <doctok/resourceids.hxx> // NS_rtf namespace
@@ -513,26 +514,13 @@ sal_uInt32 RTFDocumentImpl::getColorTable(sal_uInt32 nIndex)
     return 0;
 }
 
-rtl_TextEncoding lcl_getDefaultTextEncoding()
-{
-
-    const OUString& rLanguage = Application::GetSettings().GetLocale().Language;
-
-    if (rLanguage == "ru" || rLanguage == "uk")
-        return RTL_TEXTENCODING_MS_1251;
-    if (rLanguage == "tr")
-        return RTL_TEXTENCODING_MS_1254;
-    else
-        return RTL_TEXTENCODING_MS_1252;
-}
-
 rtl_TextEncoding RTFDocumentImpl::getEncoding(sal_uInt32 nFontIndex)
 {
     if (!m_pSuperstream)
     {
         if (nFontIndex < m_aFontEncodings.size())
             return m_aFontEncodings[nFontIndex];
-        return lcl_getDefaultTextEncoding();
+        return msfilter::util::GetDefaultTextEncoding();
     }
     else
         return m_pSuperstream->getEncoding(nFontIndex);
-- 
1.7.7


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.