[PATCH] msfilter::util: avoid code duplication by merging from sw and writerfilter

Miklos Vajna vmiklos at suse.cz
Tue Apr 24 08:35:40 PDT 2012


---
 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 at 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 at 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


--gatW/ieO32f1wygP--


More information about the LibreOffice mailing list