diff options
-rw-r--r-- | emfio/source/reader/mtftools.cxx | 19 | ||||
-rw-r--r-- | filter/source/graphicfilter/idxf/dxfreprd.cxx | 24 | ||||
-rw-r--r-- | include/unotools/defaultencoding.hxx | 31 | ||||
-rw-r--r-- | unotools/Library_utl.mk | 1 | ||||
-rw-r--r-- | unotools/source/misc/defaultencoding.cxx | 27 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdispatchvalue.cxx | 19 |
6 files changed, 70 insertions, 51 deletions
diff --git a/emfio/source/reader/mtftools.cxx b/emfio/source/reader/mtftools.cxx index 01c091be598c..06b0f813588d 100644 --- a/emfio/source/reader/mtftools.cxx +++ b/emfio/source/reader/mtftools.cxx @@ -34,9 +34,8 @@ #include <osl/diagnose.h> #include <vcl/virdev.hxx> #include <o3tl/safeint.hxx> -#include <officecfg/Setup.hxx> -#include <officecfg/Office/Linguistic.hxx> #include <unotools/configmgr.hxx> +#include <unotools/defaultencoding.hxx> #include <unotools/wincodepage.hxx> #if OSL_DEBUG_LEVEL > 1 @@ -164,20 +163,6 @@ namespace emfio bClosed = true; } - namespace { - - OUString getLODefaultLanguage() - { - if (utl::ConfigManager::IsFuzzing()) - return "en-US"; - OUString result(officecfg::Office::Linguistic::General::DefaultLocale::get()); - if (result.isEmpty()) - result = officecfg::Setup::L10N::ooSetupSystemLocale::get(); - return result; - } - - } - WinMtfFontStyle::WinMtfFontStyle( LOGFONTW const & rFont ) { rtl_TextEncoding eCharSet; @@ -185,7 +170,7 @@ namespace emfio || (rFont.alfFaceName == "MT Extra")) eCharSet = RTL_TEXTENCODING_SYMBOL; else if ((rFont.lfCharSet == DEFAULT_CHARSET) || (rFont.lfCharSet == OEM_CHARSET)) - eCharSet = utl_getWinTextEncodingFromLangStr(getLODefaultLanguage(), + eCharSet = utl_getWinTextEncodingFromLangStr(utl_getLocaleForGlobalDefaultEncoding(), rFont.lfCharSet == OEM_CHARSET); else eCharSet = rtl_getTextEncodingFromWindowsCharset( rFont.lfCharSet ); diff --git a/filter/source/graphicfilter/idxf/dxfreprd.cxx b/filter/source/graphicfilter/idxf/dxfreprd.cxx index 8e4c9bc73560..e20e407cc013 100644 --- a/filter/source/graphicfilter/idxf/dxfreprd.cxx +++ b/filter/source/graphicfilter/idxf/dxfreprd.cxx @@ -20,8 +20,7 @@ #include "dxfreprd.hxx" #include <osl/nlsupport.h> -#include <officecfg/Setup.hxx> -#include <officecfg/Office/Linguistic.hxx> +#include <unotools/defaultencoding.hxx> #include <unotools/wincodepage.hxx> #include <unotools/configmgr.hxx> @@ -134,21 +133,6 @@ DXFRepresentation::~DXFRepresentation() { } -namespace { - -OUString getLODefaultLanguage() -{ - if (utl::ConfigManager::IsFuzzing()) - return "en-US"; - - OUString result(officecfg::Office::Linguistic::General::DefaultLocale::get()); - if (result.isEmpty()) - result = officecfg::Setup::L10N::ooSetupSystemLocale::get(); - return result; -} - -} - rtl_TextEncoding DXFRepresentation::getTextEncoding() const { return (isTextEncodingSet()) ? @@ -229,7 +213,8 @@ void DXFRepresentation::ReadHeader(DXFGroupReader & rDGR) // only if the encoding is not set yet // e.g. by previous $DWGCODEPAGE if (!isTextEncodingSet()) - setTextEncoding(utl_getWinTextEncodingFromLangStr(getLODefaultLanguage(), true)); + setTextEncoding(utl_getWinTextEncodingFromLangStr( + utl_getLocaleForGlobalDefaultEncoding(), true)); } else if (rDGR.GetS() >= "AC1021") setTextEncoding(RTL_TEXTENCODING_UTF8); @@ -239,7 +224,8 @@ void DXFRepresentation::ReadHeader(DXFGroupReader & rDGR) // only if the encoding is not set yet // e.g. by previous $DWGCODEPAGE if (!isTextEncodingSet()) - setTextEncoding(utl_getWinTextEncodingFromLangStr(getLODefaultLanguage())); + setTextEncoding(utl_getWinTextEncodingFromLangStr( + utl_getLocaleForGlobalDefaultEncoding())); } } else if (rDGR.GetS() == "$DWGCODEPAGE") diff --git a/include/unotools/defaultencoding.hxx b/include/unotools/defaultencoding.hxx new file mode 100644 index 000000000000..8cde4bccbe04 --- /dev/null +++ b/include/unotools/defaultencoding.hxx @@ -0,0 +1,31 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDED_UNOTOOLS_DEFAULTENCODING_HXX +#define INCLUDED_UNOTOOLS_DEFAULTENCODING_HXX + +#include <sal/config.h> + +#include <unotools/unotoolsdllapi.h> +#include <rtl/ustring.hxx> + +/** Determines which locale should be used by default in filters when importing non-unicode strings. +This value should be used when the file does not explicitly define encoding of 8-bit strings. It is +defined by officecfg::Office::Linguistic::General::DefaultLocale, or when it's not set, +officecfg::Setup::L10N::ooSetupSystemLocale, and is typically mapped to a corresponding Windows +codepage by filters. + +@return +A BCP-47 language tag string. +*/ +UNOTOOLS_DLLPUBLIC OUString utl_getLocaleForGlobalDefaultEncoding(); + +#endif // INCLUDED_UNOTOOLS_DEFAULTENCODING_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/unotools/Library_utl.mk b/unotools/Library_utl.mk index e36d291db0f0..b7c06cbf4a7f 100644 --- a/unotools/Library_utl.mk +++ b/unotools/Library_utl.mk @@ -100,6 +100,7 @@ $(eval $(call gb_Library_add_exception_objects,utl,\ unotools/source/i18n/transliterationwrapper \ unotools/source/misc/closeveto \ unotools/source/misc/datetime \ + unotools/source/misc/defaultencoding \ unotools/source/misc/desktopterminationobserver \ unotools/source/misc/eventlisteneradapter \ unotools/source/misc/fontcvt \ diff --git a/unotools/source/misc/defaultencoding.cxx b/unotools/source/misc/defaultencoding.cxx new file mode 100644 index 000000000000..b0e473d099bd --- /dev/null +++ b/unotools/source/misc/defaultencoding.cxx @@ -0,0 +1,27 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> + +#include <unotools/configmgr.hxx> +#include <unotools/defaultencoding.hxx> +#include <officecfg/Office/Linguistic.hxx> +#include <officecfg/Setup.hxx> + +OUString utl_getLocaleForGlobalDefaultEncoding() +{ + if (utl::ConfigManager::IsFuzzing()) + return "en-US"; + OUString result(officecfg::Office::Linguistic::General::DefaultLocale::get()); + if (result.isEmpty()) + result = officecfg::Setup::L10N::ooSetupSystemLocale::get(); + return result; +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/writerfilter/source/rtftok/rtfdispatchvalue.cxx b/writerfilter/source/rtftok/rtfdispatchvalue.cxx index e847e58f0797..227fba3c24fa 100644 --- a/writerfilter/source/rtftok/rtfdispatchvalue.cxx +++ b/writerfilter/source/rtftok/rtfdispatchvalue.cxx @@ -26,23 +26,11 @@ #include "rtfreferenceproperties.hxx" #include "rtfskipdestination.hxx" -#include <officecfg/Setup.hxx> -#include <officecfg/Office/Linguistic.hxx> +#include <unotools/defaultencoding.hxx> #include <unotools/wincodepage.hxx> using namespace com::sun::star; -namespace -{ -OUString getLODefaultLanguage() -{ - OUString result(::officecfg::Office::Linguistic::General::DefaultLocale::get()); - if (result.isEmpty()) - result = ::officecfg::Setup::L10N::ooSetupSystemLocale::get(); - return result; -} -} - namespace writerfilter { static int getNumberFormat(int nParam) @@ -841,8 +829,9 @@ RTFError RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam) case RTF_CPG: { rtl_TextEncoding nEncoding - = (nParam == 0) ? utl_getWinTextEncodingFromLangStr(getLODefaultLanguage()) - : rtl_getTextEncodingFromWindowsCodePage(nParam); + = (nParam == 0) + ? utl_getWinTextEncodingFromLangStr(utl_getLocaleForGlobalDefaultEncoding()) + : rtl_getTextEncodingFromWindowsCodePage(nParam); if (nKeyword == RTF_ANSICPG) m_aDefaultState.setCurrentEncoding(nEncoding); else |