On Tue, Apr 24, 2012 at 02:15:53PM +0100, Caolán McNamara <caol...@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 <vmik...@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 <vmik...@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 <vmik...@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
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice