/* -*- 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/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_SW_INC_SWSTYLENAMEMAPPER_HXX #define INCLUDED_SW_INC_SWSTYLENAMEMAPPER_HXX #include #include #include #include "swdllapi.h" #include #include /** This class holds all data about the names of styles used in the user * interface (UI names...these are localised into different languages). * These UI names are loaded from the resource files on demand. * * It also holds all information about the 'Programmatic' names of styles * which remain static (and are hardcoded in the corresponding cxx file) * for all languages. * * This class also provides static functions which can be used for the * following conversions: * * 1. Programmatic Name -> UI Name * 2. Programmatic Name -> Pool ID * 3. UI Name -> Programmatic Name * 4. UI Name -> Pool ID * 5. Pool ID -> UI Name * 6. Pool ID -> Programmatic Name * * The relationship of these tables to the style families is as follows: * * 1. Paragraph contains the Text, Lists, Extra, Register, Doc and HTML * name arrays. * 2. Character contains the ChrFormat and HTMLChrFormat name arrays. * 3. Page contains the PageDesc name array. * 4. Frame contains the FrameFormat name array. * 5. Numbering Rule contains the NumRule name array. */ /** * There is a further complication that came to light later. If someone enters * a user-defined style name which is the same as a programmatic name, this * name clash must be handled. * * Therefore, when there is a danger of a nameclash, the boolean bDisambiguate * must be set to true in the SwStyleNameMapper call (it defaults to false). * This will cause the following to happen: * * If the UI style name either equals a programmatic name or already ends * with " (user)", then it must append " (user)" to the end. * * When a programmatic name is being converted to a UI name, if it ends in * " (user)", we simply remove it. */ struct SwTableEntry; typedef std::unordered_map NameToIdHash; class SwStyleNameMapper { friend void InitCore(); friend void FinitCore(); protected: // UI Name tables static std::vector *s_pTextUINameArray, *s_pListsUINameArray, *s_pExtraUINameArray, *s_pRegisterUINameArray, *s_pDocUINameArray, *s_pHTMLUINameArray, *s_pFrameFormatUINameArray, *s_pChrFormatUINameArray, *s_pHTMLChrFormatUINameArray, *s_pPageDescUINameArray, *s_pNumRuleUINameArray, *s_pTableStyleUINameArray, *s_pCellStyleUINameArray, // Programmatic Name tables *s_pTextProgNameArray, *s_pListsProgNameArray, *s_pExtraProgNameArray, *s_pRegisterProgNameArray, *s_pDocProgNameArray, *s_pHTMLProgNameArray, *s_pFrameFormatProgNameArray, *s_pChrFormatProgNameArray, *s_pHTMLChrFormatProgNameArray, *s_pPageDescProgNameArray, *s_pNumRuleProgNameArray, *s_pTableStyleProgNameArray, *s_pCellStyleProgNameArray; static NameToIdHash *s_pParaUIMap, *s_pCharUIMap, *s_pPageUIMap, *s_pFrameUIMap, *s_pNumRuleUIMap, *s_pTableStyleUIMap, *s_pCellStyleUIMap, *s_pParaProgMap, *s_pCharProgMap, *s_pPageProgMap, *s_pFrameProgMap, *s_pNumRuleProgMap, *s_pTableStyleProgMap, *s_pCellStyleProgMap; static void fillNameFromId(sal_uInt16 nId, OUString &rName, bool bProgName); static const OUString& getNameFromId(sal_uInt16 nId, const OUString &rName, bool bProgName); static const NameToIdHash& getHashTable ( SwGetPoolIdFromName, bool bProgName ); #ifdef _NEED_TO_DEBUG_MAPPING static void testNameTable( SwGetPoolIdFromName const nFamily, sal_uInt16 const nStartIndex, sal_uInt16 const nEndIndex ); #endif public: // This gets the UI Name from the programmatic name static const OUString& GetUIName(const OUString& rName, SwGetPoolIdFromName); static void FillUIName(const OUString& rName, OUString& rFillName, SwGetPoolIdFromName, bool bDisambiguate); // Get the programmatic Name from the UI name static const OUString& GetProgName(const OUString& rName, SwGetPoolIdFromName); static void FillProgName(const OUString& rName, OUString& rFillName, SwGetPoolIdFromName, bool bDisambiguate); // This gets the UI Name from the Pool ID SW_DLLPUBLIC static void FillUIName(sal_uInt16 nId, OUString& rFillName); SW_DLLPUBLIC static const OUString& GetUIName(sal_uInt16 nId, const OUString& rName); // This gets the programmatic Name from the Pool ID static void FillProgName(sal_uInt16 nId, OUString& rFillName); SW_DLLPUBLIC static const OUString& GetProgName(sal_uInt16 nId, const OUString& rName); // This gets the PoolId from the UI Name SW_DLLPUBLIC static sal_uInt16 GetPoolIdFromUIName(const OUString& rName, SwGetPoolIdFromName); // Get the Pool ID from the programmatic name static sal_uInt16 GetPoolIdFromProgName(const OUString& rName, SwGetPoolIdFromName); // used to convert the 4 special ExtraProg/UINames for // RES_POOLCOLL_LABEL_DRAWING, RES_POOLCOLL_LABEL_ABB, // RES_POOLCOLL_LABEL_TABLE, RES_POOLCOLL_LABEL_FRAME // forth and back. // Non-matching names remain unchanged. SW_DLLPUBLIC static const OUString GetSpecialExtraProgName( const OUString& rExtraUIName); static const OUString GetSpecialExtraUIName(const OUString& rExtraProgName); static const std::vector& GetTextUINameArray(); static const std::vector& GetListsUINameArray(); static const std::vector& GetExtraUINameArray(); static const std::vector& GetRegisterUINameArray(); static const std::vector& GetDocUINameArray(); static const std::vector& GetHTMLUINameArray(); static const std::vector& GetFrameFormatUINameArray(); static const std::vector& GetChrFormatUINameArray(); static const std::vector& GetHTMLChrFormatUINameArray(); static const std::vector& GetPageDescUINameArray(); static const std::vector& GetNumRuleUINameArray(); static const std::vector& GetTableStyleUINameArray(); static const std::vector& GetCellStyleUINameArray(); static const std::vector& GetTextProgNameArray(); static const std::vector& GetListsProgNameArray(); static const std::vector& GetExtraProgNameArray(); static const std::vector& GetRegisterProgNameArray(); static const std::vector& GetDocProgNameArray(); static const std::vector& GetHTMLProgNameArray(); static const std::vector& GetFrameFormatProgNameArray(); static const std::vector& GetChrFormatProgNameArray(); static const std::vector& GetHTMLChrFormatProgNameArray(); static const std::vector& GetPageDescProgNameArray(); static const std::vector& GetNumRuleProgNameArray(); static const std::vector& GetTableStyleProgNameArray(); static const std::vector& GetCellStyleProgNameArray(); }; #endif // _NAME_MAPPER_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ or/vector-7.0-10.0'>distro/vector/vector-7.0-10.0 LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Expand)Author
2018-01-06upload libabw 0.1.2David Tardon
2017-10-28libabw: pass optimization flags to configureDavid Tardon
2017-10-04use the new gbuild way to update config.*David Tardon
2017-08-09Pass ENABLE_DEBUG into external/libabwStephan Bergmann
2017-06-12iOS patch libabwjan Iversen
2017-02-23add upstream URL to READMEsDavid Tardon
2016-05-30configure: set BOOST_CPPFLAGS also in --without-system-boost caseMichael Stahl
2015-11-12Generalize COM_GCC_IS_CLANG -> COM_IS_CLANGStephan Bergmann
2015-09-17blind attempt to fix lcovDavid Tardon
2015-08-30libabw: fix build with boost 1.59David Tardon
2015-08-11gbuild/config stop using VERBOSE, use only verbose=tNorbert Thiebaud
2015-02-27For Clang -fsanitize=vptr use -fvisibility-ms-compat, not -fvisibility=hiddenStephan Bergmann
2014-12-20upload libabw 0.1.1David Tardon
2014-11-13More passing of MAKE into external configureStephan Bergmann
2014-11-10external: fortunately boost no longer requires config_host.mkMichael Stahl
2014-07-20fdo#63756 build libxml2 with ICU supportDavid Tardon
2014-06-09libabw,libfreehand,libvisio: avoid some quoting issuesMichael Stahl
2014-05-26rebase all import libsDavid Tardon
2014-02-27normalize values of CROSS_COMPILINGMichael Stahl
2014-02-12normalize values of SYSTEM_BOOSTMichael Stahl
2014-02-12normalize values of SYSTEM_FREETYPE, SYSTEM_LIBXML, SYSTEM_MARIADBMichael Stahl
2014-02-10upload libabw 0.0.2David Tardon
2014-01-23Don't crash on unstarted tableFridrich Štrba
2014-01-21Coverity: Potential crash (?)Fridrich Štrba
2014-01-16No need to use the stuff from inttypes hereFridrich Štrba
2014-01-15Uploading libabw-0.0.1 (support of zabw files too)Fridrich Štrba
2014-01-14Fix ABW embedded imagesFridrich Štrba
2014-01-14Fix ABW list shapesFridrich Štrba
2014-01-14Fix a silly with ABW footnotes/endnotesFridrich Štrba
2014-01-13AbiWord Import filterFridrich Štrba