[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