oox, writerfilter, xmloff: use frozen data structures for static data
Change-Id: I4a53fa57f52900104d249c84cde36c9d3b9e1300 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153175 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
This commit is contained in:
parent
215454b5f9
commit
2fa7d4a880
22 changed files with 514 additions and 421 deletions
|
@ -21,7 +21,10 @@ $(eval $(call gb_Library_Library,msfilter))
|
|||
|
||||
$(eval $(call gb_Library_set_componentfile,msfilter,filter/source/msfilter/msfilter,services))
|
||||
|
||||
$(eval $(call gb_Library_use_external,msfilter,boost_headers))
|
||||
$(eval $(call gb_Library_use_externals,msfilter,\
|
||||
boost_headers \
|
||||
frozen \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_sdk_api,msfilter))
|
||||
|
||||
|
|
|
@ -42,7 +42,9 @@
|
|||
#include <svtools/acceleratorexecute.hxx>
|
||||
#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp>
|
||||
#include <com/sun/star/ui/XUIConfigurationManager.hpp>
|
||||
#include <map>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
|
||||
|
@ -643,64 +645,51 @@ static sal_uInt16 parseChar( sal_Unicode c )
|
|||
return nVclKey;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
struct KeyCodeEntry
|
||||
namespace
|
||||
{
|
||||
const char* sName;
|
||||
sal_uInt16 nCode;
|
||||
|
||||
constexpr frozen::unordered_map<std::u16string_view, sal_uInt16, 34> s_KeyCodes
|
||||
{
|
||||
{ u"BACKSPACE", KEY_BACKSPACE },
|
||||
{ u"BS", KEY_BACKSPACE },
|
||||
{ u"DELETE", KEY_DELETE },
|
||||
{ u"DEL", KEY_DELETE },
|
||||
{ u"DOWN", KEY_DOWN },
|
||||
{ u"UP", KEY_UP },
|
||||
{ u"LEFT", KEY_LEFT },
|
||||
{ u"RIGHT", KEY_RIGHT },
|
||||
{ u"END", KEY_END },
|
||||
{ u"ESCAPE", KEY_ESCAPE },
|
||||
{ u"ESC", KEY_ESCAPE },
|
||||
{ u"HELP", KEY_HELP },
|
||||
{ u"HOME", KEY_HOME },
|
||||
{ u"PGDN", KEY_PAGEDOWN },
|
||||
{ u"PGUP", KEY_PAGEUP },
|
||||
{ u"INSERT", KEY_INSERT },
|
||||
{ u"SCROLLLOCK", KEY_SCROLLLOCK },
|
||||
{ u"NUMLOCK", KEY_NUMLOCK },
|
||||
{ u"TAB", KEY_TAB },
|
||||
{ u"F1", KEY_F1 },
|
||||
{ u"F2", KEY_F2 },
|
||||
{ u"F3", KEY_F3 },
|
||||
{ u"F4", KEY_F4 },
|
||||
{ u"F5", KEY_F5 },
|
||||
{ u"F6", KEY_F6 },
|
||||
{ u"F7", KEY_F7 },
|
||||
{ u"F8", KEY_F8 },
|
||||
{ u"F9", KEY_F9 },
|
||||
{ u"F10", KEY_F10 },
|
||||
{ u"F11", KEY_F11 },
|
||||
{ u"F12", KEY_F12 },
|
||||
{ u"F13", KEY_F13 },
|
||||
{ u"F14", KEY_F14 },
|
||||
{ u"F15", KEY_F15 }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
KeyCodeEntry const aMSKeyCodesData[] = {
|
||||
{ "BACKSPACE", KEY_BACKSPACE },
|
||||
{ "BS", KEY_BACKSPACE },
|
||||
{ "DELETE", KEY_DELETE },
|
||||
{ "DEL", KEY_DELETE },
|
||||
{ "DOWN", KEY_DOWN },
|
||||
{ "UP", KEY_UP },
|
||||
{ "LEFT", KEY_LEFT },
|
||||
{ "RIGHT", KEY_RIGHT },
|
||||
{ "END", KEY_END },
|
||||
{ "ESCAPE", KEY_ESCAPE },
|
||||
{ "ESC", KEY_ESCAPE },
|
||||
{ "HELP", KEY_HELP },
|
||||
{ "HOME", KEY_HOME },
|
||||
{ "PGDN", KEY_PAGEDOWN },
|
||||
{ "PGUP", KEY_PAGEUP },
|
||||
{ "INSERT", KEY_INSERT },
|
||||
{ "SCROLLLOCK", KEY_SCROLLLOCK },
|
||||
{ "NUMLOCK", KEY_NUMLOCK },
|
||||
{ "TAB", KEY_TAB },
|
||||
{ "F1", KEY_F1 },
|
||||
{ "F2", KEY_F2 },
|
||||
{ "F3", KEY_F3 },
|
||||
{ "F4", KEY_F4 },
|
||||
{ "F5", KEY_F5 },
|
||||
{ "F6", KEY_F6 },
|
||||
{ "F7", KEY_F7 },
|
||||
{ "F8", KEY_F8 },
|
||||
{ "F9", KEY_F9 },
|
||||
{ "F10", KEY_F10 },
|
||||
{ "F11", KEY_F11 },
|
||||
{ "F12", KEY_F12 },
|
||||
{ "F13", KEY_F13 },
|
||||
{ "F14", KEY_F14 },
|
||||
{ "F15", KEY_F15 },
|
||||
};
|
||||
} // end anonymous namespace
|
||||
|
||||
awt::KeyEvent parseKeyEvent( std::u16string_view Key )
|
||||
{
|
||||
static std::map< OUString, sal_uInt16 > s_KeyCodes = []()
|
||||
{
|
||||
std::map< OUString, sal_uInt16 > tmp;
|
||||
for (KeyCodeEntry const & i : aMSKeyCodesData)
|
||||
{
|
||||
tmp[ OUString::createFromAscii( i.sName ) ] = i.nCode;
|
||||
}
|
||||
return tmp;
|
||||
}();
|
||||
std::u16string_view sKeyCode;
|
||||
sal_uInt16 nVclKey = 0;
|
||||
|
||||
|
@ -731,7 +720,7 @@ awt::KeyEvent parseKeyEvent( std::u16string_view Key )
|
|||
nVclKey |= parseChar( sKeyCode[ 0 ] );
|
||||
else
|
||||
{
|
||||
auto it = s_KeyCodes.find( OUString(sKeyCode) );
|
||||
auto it = s_KeyCodes.find(sKeyCode);
|
||||
if ( it == s_KeyCodes.end() ) // unknown or unsupported
|
||||
throw uno::RuntimeException();
|
||||
nVclKey |= it->second;
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include <memory>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
#include <oox/dllapi.h>
|
||||
#include <sal/types.h>
|
||||
#include <rtl/ustring.hxx>
|
||||
|
@ -50,21 +49,7 @@ enum PredefinedClrSchemeId {
|
|||
Count
|
||||
};
|
||||
|
||||
static std::map<PredefinedClrSchemeId, OUString> PredefinedClrNames =
|
||||
{
|
||||
{ dk1, "dk1" },
|
||||
{ lt1, "lt1" },
|
||||
{ dk2, "dk2" },
|
||||
{ lt2, "lt2" },
|
||||
{ accent1, "accent1" },
|
||||
{ accent2, "accent2" },
|
||||
{ accent3, "accent3" },
|
||||
{ accent4, "accent4" },
|
||||
{ accent5, "accent5" },
|
||||
{ accent6, "accent6" },
|
||||
{ hlink, "hlink" },
|
||||
{ folHlink, "folHlink" }
|
||||
};
|
||||
OOX_DLLPUBLIC std::u16string_view getPredefinedClrNames(PredefinedClrSchemeId eID);
|
||||
|
||||
class ClrMap
|
||||
{
|
||||
|
|
|
@ -65,6 +65,7 @@ $(eval $(call gb_Library_use_libraries,oox,\
|
|||
|
||||
$(eval $(call gb_Library_use_externals,oox,\
|
||||
boost_headers \
|
||||
frozen \
|
||||
))
|
||||
|
||||
ifeq ($(TLS),OPENSSL)
|
||||
|
|
|
@ -27,10 +27,44 @@
|
|||
#include <oox/token/tokens.hxx>
|
||||
#include <comphelper/sequence.hxx>
|
||||
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
using namespace com::sun::star;
|
||||
|
||||
namespace oox::drawingml {
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
constexpr frozen::unordered_map<PredefinedClrSchemeId, std::u16string_view, 12> constPredefinedClrNames
|
||||
{
|
||||
{ dk1, u"dk1" },
|
||||
{ lt1, u"lt1" },
|
||||
{ dk2, u"dk2" },
|
||||
{ lt2, u"lt2" },
|
||||
{ accent1, u"accent1" },
|
||||
{ accent2, u"accent2" },
|
||||
{ accent3, u"accent3" },
|
||||
{ accent4, u"accent4" },
|
||||
{ accent5, u"accent5" },
|
||||
{ accent6, u"accent6" },
|
||||
{ hlink, u"hlink" },
|
||||
{ folHlink, u"folHlink" }
|
||||
};
|
||||
|
||||
} // end anonymous namespace
|
||||
|
||||
std::u16string_view getPredefinedClrNames(PredefinedClrSchemeId eID)
|
||||
{
|
||||
std::u16string_view empty;
|
||||
auto iterator = constPredefinedClrNames.find(eID);
|
||||
if (iterator == constPredefinedClrNames.end())
|
||||
return empty;
|
||||
return iterator->second;
|
||||
}
|
||||
|
||||
bool ClrMap::getColorMap( sal_Int32& nClrToken )
|
||||
{
|
||||
sal_Int32 nMapped = 0;
|
||||
|
|
|
@ -19,7 +19,9 @@
|
|||
|
||||
#include <oox/drawingml/color.hxx>
|
||||
#include <algorithm>
|
||||
#include <unordered_map>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
#include <math.h>
|
||||
#include <osl/diagnose.h>
|
||||
#include <sal/log.hxx>
|
||||
|
@ -31,138 +33,131 @@
|
|||
|
||||
namespace oox::drawingml {
|
||||
|
||||
namespace {
|
||||
|
||||
/** Global storage for predefined color values used in OOXML file formats. */
|
||||
struct PresetColorsPool
|
||||
namespace
|
||||
{
|
||||
typedef ::std::vector< ::Color > ColorVector;
|
||||
|
||||
ColorVector maDmlColors; /// Predefined colors in DrawingML, indexed by XML token.
|
||||
ColorVector maVmlColors; /// Predefined colors in VML, indexed by XML token.
|
||||
ColorVector maHighlightColors; /// Predefined colors in DrawingML for highlight, indexed by XML token.
|
||||
|
||||
explicit PresetColorsPool();
|
||||
// predefined colors in DrawingML (map XML token identifiers to RGB values)
|
||||
constexpr frozen::unordered_map<sal_Int32, ::Color, 140> constDmlColors
|
||||
{
|
||||
{XML_aliceBlue, ::Color(0xF0F8FF)}, {XML_antiqueWhite, ::Color(0xFAEBD7)},
|
||||
{XML_aqua, ::Color(0x00FFFF)}, {XML_aquamarine, ::Color(0x7FFFD4)},
|
||||
{XML_azure, ::Color(0xF0FFFF)}, {XML_beige, ::Color(0xF5F5DC)},
|
||||
{XML_bisque, ::Color(0xFFE4C4)}, {XML_black, ::Color(0x000000)},
|
||||
{XML_blanchedAlmond, ::Color(0xFFEBCD)}, {XML_blue, ::Color(0x0000FF)},
|
||||
{XML_blueViolet, ::Color(0x8A2BE2)}, {XML_brown, ::Color(0xA52A2A)},
|
||||
{XML_burlyWood, ::Color(0xDEB887)}, {XML_cadetBlue, ::Color(0x5F9EA0)},
|
||||
{XML_chartreuse, ::Color(0x7FFF00)}, {XML_chocolate, ::Color(0xD2691E)},
|
||||
{XML_coral, ::Color(0xFF7F50)}, {XML_cornflowerBlue, ::Color(0x6495ED)},
|
||||
{XML_cornsilk, ::Color(0xFFF8DC)}, {XML_crimson, ::Color(0xDC143C)},
|
||||
{XML_cyan, ::Color(0x00FFFF)}, {XML_deepPink, ::Color(0xFF1493)},
|
||||
{XML_deepSkyBlue, ::Color(0x00BFFF)}, {XML_dimGray, ::Color(0x696969)},
|
||||
{XML_dkBlue, ::Color(0x00008B)}, {XML_dkCyan, ::Color(0x008B8B)},
|
||||
{XML_dkGoldenrod, ::Color(0xB8860B)}, {XML_dkGray, ::Color(0xA9A9A9)},
|
||||
{XML_dkGreen, ::Color(0x006400)}, {XML_dkKhaki, ::Color(0xBDB76B)},
|
||||
{XML_dkMagenta, ::Color(0x8B008B)}, {XML_dkOliveGreen, ::Color(0x556B2F)},
|
||||
{XML_dkOrange, ::Color(0xFF8C00)}, {XML_dkOrchid, ::Color(0x9932CC)},
|
||||
{XML_dkRed, ::Color(0x8B0000)}, {XML_dkSalmon, ::Color(0xE9967A)},
|
||||
{XML_dkSeaGreen, ::Color(0x8FBC8B)}, {XML_dkSlateBlue, ::Color(0x483D8B)},
|
||||
{XML_dkSlateGray, ::Color(0x2F4F4F)}, {XML_dkTurquoise, ::Color(0x00CED1)},
|
||||
{XML_dkViolet, ::Color(0x9400D3)}, {XML_dodgerBlue, ::Color(0x1E90FF)},
|
||||
{XML_firebrick, ::Color(0xB22222)}, {XML_floralWhite, ::Color(0xFFFAF0)},
|
||||
{XML_forestGreen, ::Color(0x228B22)}, {XML_fuchsia, ::Color(0xFF00FF)},
|
||||
{XML_gainsboro, ::Color(0xDCDCDC)}, {XML_ghostWhite, ::Color(0xF8F8FF)},
|
||||
{XML_gold, ::Color(0xFFD700)}, {XML_goldenrod, ::Color(0xDAA520)},
|
||||
{XML_gray, ::Color(0x808080)}, {XML_green, ::Color(0x008000)},
|
||||
{XML_greenYellow, ::Color(0xADFF2F)}, {XML_honeydew, ::Color(0xF0FFF0)},
|
||||
{XML_hotPink, ::Color(0xFF69B4)}, {XML_indianRed, ::Color(0xCD5C5C)},
|
||||
{XML_indigo, ::Color(0x4B0082)}, {XML_ivory, ::Color(0xFFFFF0)},
|
||||
{XML_khaki, ::Color(0xF0E68C)}, {XML_lavender, ::Color(0xE6E6FA)},
|
||||
{XML_lavenderBlush, ::Color(0xFFF0F5)}, {XML_lawnGreen, ::Color(0x7CFC00)},
|
||||
{XML_lemonChiffon, ::Color(0xFFFACD)}, {XML_lime, ::Color(0x00FF00)},
|
||||
{XML_limeGreen, ::Color(0x32CD32)}, {XML_linen, ::Color(0xFAF0E6)},
|
||||
{XML_ltBlue, ::Color(0xADD8E6)}, {XML_ltCoral, ::Color(0xF08080)},
|
||||
{XML_ltCyan, ::Color(0xE0FFFF)}, {XML_ltGoldenrodYellow, ::Color(0xFAFA78)},
|
||||
{XML_ltGray, ::Color(0xD3D3D3)}, {XML_ltGreen, ::Color(0x90EE90)},
|
||||
{XML_ltPink, ::Color(0xFFB6C1)}, {XML_ltSalmon, ::Color(0xFFA07A)},
|
||||
{XML_ltSeaGreen, ::Color(0x20B2AA)}, {XML_ltSkyBlue, ::Color(0x87CEFA)},
|
||||
{XML_ltSlateGray, ::Color(0x778899)}, {XML_ltSteelBlue, ::Color(0xB0C4DE)},
|
||||
{XML_ltYellow, ::Color(0xFFFFE0)}, {XML_magenta, ::Color(0xFF00FF)},
|
||||
{XML_maroon, ::Color(0x800000)}, {XML_medAquamarine, ::Color(0x66CDAA)},
|
||||
{XML_medBlue, ::Color(0x0000CD)}, {XML_medOrchid, ::Color(0xBA55D3)},
|
||||
{XML_medPurple, ::Color(0x9370DB)}, {XML_medSeaGreen, ::Color(0x3CB371)},
|
||||
{XML_medSlateBlue, ::Color(0x7B68EE)}, {XML_medSpringGreen, ::Color(0x00FA9A)},
|
||||
{XML_medTurquoise, ::Color(0x48D1CC)}, {XML_medVioletRed, ::Color(0xC71585)},
|
||||
{XML_midnightBlue, ::Color(0x191970)}, {XML_mintCream, ::Color(0xF5FFFA)},
|
||||
{XML_mistyRose, ::Color(0xFFE4E1)}, {XML_moccasin, ::Color(0xFFE4B5)},
|
||||
{XML_navajoWhite, ::Color(0xFFDEAD)}, {XML_navy, ::Color(0x000080)},
|
||||
{XML_oldLace, ::Color(0xFDF5E6)}, {XML_olive, ::Color(0x808000)},
|
||||
{XML_oliveDrab, ::Color(0x6B8E23)}, {XML_orange, ::Color(0xFFA500)},
|
||||
{XML_orangeRed, ::Color(0xFF4500)}, {XML_orchid, ::Color(0xDA70D6)},
|
||||
{XML_paleGoldenrod, ::Color(0xEEE8AA)}, {XML_paleGreen, ::Color(0x98FB98)},
|
||||
{XML_paleTurquoise, ::Color(0xAFEEEE)}, {XML_paleVioletRed, ::Color(0xDB7093)},
|
||||
{XML_papayaWhip, ::Color(0xFFEFD5)}, {XML_peachPuff, ::Color(0xFFDAB9)},
|
||||
{XML_peru, ::Color(0xCD853F)}, {XML_pink, ::Color(0xFFC0CB)},
|
||||
{XML_plum, ::Color(0xDDA0DD)}, {XML_powderBlue, ::Color(0xB0E0E6)},
|
||||
{XML_purple, ::Color(0x800080)}, {XML_red, ::Color(0xFF0000)},
|
||||
{XML_rosyBrown, ::Color(0xBC8F8F)}, {XML_royalBlue, ::Color(0x4169E1)},
|
||||
{XML_saddleBrown, ::Color(0x8B4513)}, {XML_salmon, ::Color(0xFA8072)},
|
||||
{XML_sandyBrown, ::Color(0xF4A460)}, {XML_seaGreen, ::Color(0x2E8B57)},
|
||||
{XML_seaShell, ::Color(0xFFF5EE)}, {XML_sienna, ::Color(0xA0522D)},
|
||||
{XML_silver, ::Color(0xC0C0C0)}, {XML_skyBlue, ::Color(0x87CEEB)},
|
||||
{XML_slateBlue, ::Color(0x6A5ACD)}, {XML_slateGray, ::Color(0x708090)},
|
||||
{XML_snow, ::Color(0xFFFAFA)}, {XML_springGreen, ::Color(0x00FF7F)},
|
||||
{XML_steelBlue, ::Color(0x4682B4)}, {XML_tan, ::Color(0xD2B48C)},
|
||||
{XML_teal, ::Color(0x008080)}, {XML_thistle, ::Color(0xD8BFD8)},
|
||||
{XML_tomato, ::Color(0xFF6347)}, {XML_turquoise, ::Color(0x40E0D0)},
|
||||
{XML_violet, ::Color(0xEE82EE)}, {XML_wheat, ::Color(0xF5DEB3)},
|
||||
{XML_white, ::Color(0xFFFFFF)}, {XML_whiteSmoke, ::Color(0xF5F5F5)},
|
||||
{XML_yellow, ::Color(0xFFFF00)}, {XML_yellowGreen, ::Color(0x9ACD32)}
|
||||
};
|
||||
|
||||
PresetColorsPool::PresetColorsPool() :
|
||||
maDmlColors( static_cast< size_t >( XML_TOKEN_COUNT ), API_RGB_TRANSPARENT ),
|
||||
maVmlColors( static_cast< size_t >( XML_TOKEN_COUNT ), API_RGB_TRANSPARENT ),
|
||||
maHighlightColors( static_cast<size_t>(XML_TOKEN_COUNT), API_RGB_TRANSPARENT )
|
||||
constexpr ::Color lookupDmlColor(sal_Int32 nToken)
|
||||
{
|
||||
// predefined colors in DrawingML (map XML token identifiers to RGB values)
|
||||
static const std::pair<sal_Int32, ::Color> spnDmlColors[] =
|
||||
{
|
||||
{XML_aliceBlue, ::Color(0xF0F8FF)}, {XML_antiqueWhite, ::Color(0xFAEBD7)},
|
||||
{XML_aqua, ::Color(0x00FFFF)}, {XML_aquamarine, ::Color(0x7FFFD4)},
|
||||
{XML_azure, ::Color(0xF0FFFF)}, {XML_beige, ::Color(0xF5F5DC)},
|
||||
{XML_bisque, ::Color(0xFFE4C4)}, {XML_black, ::Color(0x000000)},
|
||||
{XML_blanchedAlmond, ::Color(0xFFEBCD)}, {XML_blue, ::Color(0x0000FF)},
|
||||
{XML_blueViolet, ::Color(0x8A2BE2)}, {XML_brown, ::Color(0xA52A2A)},
|
||||
{XML_burlyWood, ::Color(0xDEB887)}, {XML_cadetBlue, ::Color(0x5F9EA0)},
|
||||
{XML_chartreuse, ::Color(0x7FFF00)}, {XML_chocolate, ::Color(0xD2691E)},
|
||||
{XML_coral, ::Color(0xFF7F50)}, {XML_cornflowerBlue, ::Color(0x6495ED)},
|
||||
{XML_cornsilk, ::Color(0xFFF8DC)}, {XML_crimson, ::Color(0xDC143C)},
|
||||
{XML_cyan, ::Color(0x00FFFF)}, {XML_deepPink, ::Color(0xFF1493)},
|
||||
{XML_deepSkyBlue, ::Color(0x00BFFF)}, {XML_dimGray, ::Color(0x696969)},
|
||||
{XML_dkBlue, ::Color(0x00008B)}, {XML_dkCyan, ::Color(0x008B8B)},
|
||||
{XML_dkGoldenrod, ::Color(0xB8860B)}, {XML_dkGray, ::Color(0xA9A9A9)},
|
||||
{XML_dkGreen, ::Color(0x006400)}, {XML_dkKhaki, ::Color(0xBDB76B)},
|
||||
{XML_dkMagenta, ::Color(0x8B008B)}, {XML_dkOliveGreen, ::Color(0x556B2F)},
|
||||
{XML_dkOrange, ::Color(0xFF8C00)}, {XML_dkOrchid, ::Color(0x9932CC)},
|
||||
{XML_dkRed, ::Color(0x8B0000)}, {XML_dkSalmon, ::Color(0xE9967A)},
|
||||
{XML_dkSeaGreen, ::Color(0x8FBC8B)}, {XML_dkSlateBlue, ::Color(0x483D8B)},
|
||||
{XML_dkSlateGray, ::Color(0x2F4F4F)}, {XML_dkTurquoise, ::Color(0x00CED1)},
|
||||
{XML_dkViolet, ::Color(0x9400D3)}, {XML_dodgerBlue, ::Color(0x1E90FF)},
|
||||
{XML_firebrick, ::Color(0xB22222)}, {XML_floralWhite, ::Color(0xFFFAF0)},
|
||||
{XML_forestGreen, ::Color(0x228B22)}, {XML_fuchsia, ::Color(0xFF00FF)},
|
||||
{XML_gainsboro, ::Color(0xDCDCDC)}, {XML_ghostWhite, ::Color(0xF8F8FF)},
|
||||
{XML_gold, ::Color(0xFFD700)}, {XML_goldenrod, ::Color(0xDAA520)},
|
||||
{XML_gray, ::Color(0x808080)}, {XML_green, ::Color(0x008000)},
|
||||
{XML_greenYellow, ::Color(0xADFF2F)}, {XML_honeydew, ::Color(0xF0FFF0)},
|
||||
{XML_hotPink, ::Color(0xFF69B4)}, {XML_indianRed, ::Color(0xCD5C5C)},
|
||||
{XML_indigo, ::Color(0x4B0082)}, {XML_ivory, ::Color(0xFFFFF0)},
|
||||
{XML_khaki, ::Color(0xF0E68C)}, {XML_lavender, ::Color(0xE6E6FA)},
|
||||
{XML_lavenderBlush, ::Color(0xFFF0F5)}, {XML_lawnGreen, ::Color(0x7CFC00)},
|
||||
{XML_lemonChiffon, ::Color(0xFFFACD)}, {XML_lime, ::Color(0x00FF00)},
|
||||
{XML_limeGreen, ::Color(0x32CD32)}, {XML_linen, ::Color(0xFAF0E6)},
|
||||
{XML_ltBlue, ::Color(0xADD8E6)}, {XML_ltCoral, ::Color(0xF08080)},
|
||||
{XML_ltCyan, ::Color(0xE0FFFF)}, {XML_ltGoldenrodYellow, ::Color(0xFAFA78)},
|
||||
{XML_ltGray, ::Color(0xD3D3D3)}, {XML_ltGreen, ::Color(0x90EE90)},
|
||||
{XML_ltPink, ::Color(0xFFB6C1)}, {XML_ltSalmon, ::Color(0xFFA07A)},
|
||||
{XML_ltSeaGreen, ::Color(0x20B2AA)}, {XML_ltSkyBlue, ::Color(0x87CEFA)},
|
||||
{XML_ltSlateGray, ::Color(0x778899)}, {XML_ltSteelBlue, ::Color(0xB0C4DE)},
|
||||
{XML_ltYellow, ::Color(0xFFFFE0)}, {XML_magenta, ::Color(0xFF00FF)},
|
||||
{XML_maroon, ::Color(0x800000)}, {XML_medAquamarine, ::Color(0x66CDAA)},
|
||||
{XML_medBlue, ::Color(0x0000CD)}, {XML_medOrchid, ::Color(0xBA55D3)},
|
||||
{XML_medPurple, ::Color(0x9370DB)}, {XML_medSeaGreen, ::Color(0x3CB371)},
|
||||
{XML_medSlateBlue, ::Color(0x7B68EE)}, {XML_medSpringGreen, ::Color(0x00FA9A)},
|
||||
{XML_medTurquoise, ::Color(0x48D1CC)}, {XML_medVioletRed, ::Color(0xC71585)},
|
||||
{XML_midnightBlue, ::Color(0x191970)}, {XML_mintCream, ::Color(0xF5FFFA)},
|
||||
{XML_mistyRose, ::Color(0xFFE4E1)}, {XML_moccasin, ::Color(0xFFE4B5)},
|
||||
{XML_navajoWhite, ::Color(0xFFDEAD)}, {XML_navy, ::Color(0x000080)},
|
||||
{XML_oldLace, ::Color(0xFDF5E6)}, {XML_olive, ::Color(0x808000)},
|
||||
{XML_oliveDrab, ::Color(0x6B8E23)}, {XML_orange, ::Color(0xFFA500)},
|
||||
{XML_orangeRed, ::Color(0xFF4500)}, {XML_orchid, ::Color(0xDA70D6)},
|
||||
{XML_paleGoldenrod, ::Color(0xEEE8AA)}, {XML_paleGreen, ::Color(0x98FB98)},
|
||||
{XML_paleTurquoise, ::Color(0xAFEEEE)}, {XML_paleVioletRed, ::Color(0xDB7093)},
|
||||
{XML_papayaWhip, ::Color(0xFFEFD5)}, {XML_peachPuff, ::Color(0xFFDAB9)},
|
||||
{XML_peru, ::Color(0xCD853F)}, {XML_pink, ::Color(0xFFC0CB)},
|
||||
{XML_plum, ::Color(0xDDA0DD)}, {XML_powderBlue, ::Color(0xB0E0E6)},
|
||||
{XML_purple, ::Color(0x800080)}, {XML_red, ::Color(0xFF0000)},
|
||||
{XML_rosyBrown, ::Color(0xBC8F8F)}, {XML_royalBlue, ::Color(0x4169E1)},
|
||||
{XML_saddleBrown, ::Color(0x8B4513)}, {XML_salmon, ::Color(0xFA8072)},
|
||||
{XML_sandyBrown, ::Color(0xF4A460)}, {XML_seaGreen, ::Color(0x2E8B57)},
|
||||
{XML_seaShell, ::Color(0xFFF5EE)}, {XML_sienna, ::Color(0xA0522D)},
|
||||
{XML_silver, ::Color(0xC0C0C0)}, {XML_skyBlue, ::Color(0x87CEEB)},
|
||||
{XML_slateBlue, ::Color(0x6A5ACD)}, {XML_slateGray, ::Color(0x708090)},
|
||||
{XML_snow, ::Color(0xFFFAFA)}, {XML_springGreen, ::Color(0x00FF7F)},
|
||||
{XML_steelBlue, ::Color(0x4682B4)}, {XML_tan, ::Color(0xD2B48C)},
|
||||
{XML_teal, ::Color(0x008080)}, {XML_thistle, ::Color(0xD8BFD8)},
|
||||
{XML_tomato, ::Color(0xFF6347)}, {XML_turquoise, ::Color(0x40E0D0)},
|
||||
{XML_violet, ::Color(0xEE82EE)}, {XML_wheat, ::Color(0xF5DEB3)},
|
||||
{XML_white, ::Color(0xFFFFFF)}, {XML_whiteSmoke, ::Color(0xF5F5F5)},
|
||||
{XML_yellow, ::Color(0xFFFF00)}, {XML_yellowGreen, ::Color(0x9ACD32)}
|
||||
};
|
||||
for(auto const& nEntry : spnDmlColors)
|
||||
maDmlColors[ static_cast< size_t >(nEntry.first) ] = nEntry.second;
|
||||
|
||||
// predefined colors in VML (map XML token identifiers to RGB values)
|
||||
static const std::pair<sal_Int32, ::Color> spnVmlColors[] =
|
||||
{
|
||||
{XML_aqua, ::Color(0x00FFFF)}, {XML_black, ::Color(0x000000)},
|
||||
{XML_blue, ::Color(0x0000FF)}, {XML_fuchsia, ::Color(0xFF00FF)},
|
||||
{XML_gray, ::Color(0x808080)}, {XML_green, ::Color(0x008000)},
|
||||
{XML_lime, ::Color(0x00FF00)}, {XML_maroon, ::Color(0x800000)},
|
||||
{XML_navy, ::Color(0x000080)}, {XML_olive, ::Color(0x808000)},
|
||||
{XML_purple, ::Color(0x800080)}, {XML_red, ::Color(0xFF0000)},
|
||||
{XML_silver, ::Color(0xC0C0C0)}, {XML_teal, ::Color(0x008080)},
|
||||
{XML_white, ::Color(0xFFFFFF)}, {XML_yellow, ::Color(0xFFFF00)}
|
||||
};
|
||||
for(auto const& nEntry : spnVmlColors)
|
||||
maVmlColors[ static_cast< size_t >(nEntry.first) ] = nEntry.second;
|
||||
|
||||
// predefined highlight colors in DML (map XML token identifiers to RGB values)
|
||||
static const std::pair<sal_Int32, ::Color> spnHighlightColors[] =
|
||||
{
|
||||
// tdf#131841 Predefined color for OOXML highlight.
|
||||
{XML_black, ::Color(0x000000)}, {XML_blue, ::Color(0x0000FF)},
|
||||
{XML_cyan, ::Color(0x00FFFF)}, {XML_darkBlue, ::Color(0x00008B)},
|
||||
{XML_darkCyan, ::Color(0x008B8B)}, {XML_darkGray, ::Color(0xA9A9A9)},
|
||||
{XML_darkGreen, ::Color(0x006400)}, {XML_darkMagenta, ::Color(0x800080)},
|
||||
{XML_darkRed, ::Color(0x8B0000)}, {XML_darkYellow, ::Color(0x808000)},
|
||||
{XML_green, ::Color(0x00FF00)}, {XML_lightGray, ::Color(0xD3D3D3)},
|
||||
{XML_magenta, ::Color(0xFF00FF)}, {XML_red, ::Color(0xFF0000)},
|
||||
{XML_white, ::Color(0xFFFFFF)}, {XML_yellow, ::Color(0xFFFF00)}
|
||||
};
|
||||
for (auto const& nEntry : spnHighlightColors)
|
||||
maHighlightColors[static_cast<size_t>(nEntry.first)] = nEntry.second;
|
||||
auto iterator = constDmlColors.find(nToken);
|
||||
if (iterator == constDmlColors.end())
|
||||
return API_RGB_TRANSPARENT;
|
||||
return iterator->second;
|
||||
}
|
||||
|
||||
PresetColorsPool& StaticPresetColorsPool()
|
||||
constexpr frozen::unordered_map<sal_Int32, ::Color, 16> constVmlColors
|
||||
{
|
||||
static PresetColorsPool thePool;
|
||||
return thePool;
|
||||
{XML_aqua, ::Color(0x00FFFF)}, {XML_black, ::Color(0x000000)},
|
||||
{XML_blue, ::Color(0x0000FF)}, {XML_fuchsia, ::Color(0xFF00FF)},
|
||||
{XML_gray, ::Color(0x808080)}, {XML_green, ::Color(0x008000)},
|
||||
{XML_lime, ::Color(0x00FF00)}, {XML_maroon, ::Color(0x800000)},
|
||||
{XML_navy, ::Color(0x000080)}, {XML_olive, ::Color(0x808000)},
|
||||
{XML_purple, ::Color(0x800080)}, {XML_red, ::Color(0xFF0000)},
|
||||
{XML_silver, ::Color(0xC0C0C0)}, {XML_teal, ::Color(0x008080)},
|
||||
{XML_white, ::Color(0xFFFFFF)}, {XML_yellow, ::Color(0xFFFF00)}
|
||||
};
|
||||
|
||||
constexpr ::Color lookupVmlColor(sal_Int32 nToken)
|
||||
{
|
||||
auto iterator = constVmlColors.find(nToken);
|
||||
if (iterator == constVmlColors.end())
|
||||
return API_RGB_TRANSPARENT;
|
||||
return iterator->second;
|
||||
}
|
||||
|
||||
constexpr frozen::unordered_map<sal_Int32, ::Color, 16> constHighlightColors
|
||||
{
|
||||
// tdf#131841 Predefined color for OOXML highlight.
|
||||
{XML_black, ::Color(0x000000)}, {XML_blue, ::Color(0x0000FF)},
|
||||
{XML_cyan, ::Color(0x00FFFF)}, {XML_darkBlue, ::Color(0x00008B)},
|
||||
{XML_darkCyan, ::Color(0x008B8B)}, {XML_darkGray, ::Color(0xA9A9A9)},
|
||||
{XML_darkGreen, ::Color(0x006400)}, {XML_darkMagenta, ::Color(0x800080)},
|
||||
{XML_darkRed, ::Color(0x8B0000)}, {XML_darkYellow, ::Color(0x808000)},
|
||||
{XML_green, ::Color(0x00FF00)}, {XML_lightGray, ::Color(0xD3D3D3)},
|
||||
{XML_magenta, ::Color(0xFF00FF)}, {XML_red, ::Color(0xFF0000)},
|
||||
{XML_white, ::Color(0xFFFFFF)}, {XML_yellow, ::Color(0xFFFF00)}
|
||||
};
|
||||
|
||||
constexpr ::Color lookupHighlightColor(sal_Int32 nToken)
|
||||
{
|
||||
auto iterator = constHighlightColors.find(nToken);
|
||||
if (iterator == constHighlightColors.end())
|
||||
return API_RGB_TRANSPARENT;
|
||||
return iterator->second;
|
||||
}
|
||||
|
||||
const double DEC_GAMMA = 2.3;
|
||||
|
@ -214,39 +209,40 @@ void lclOffValue( sal_Int32& ornValue, sal_Int32 nOff, sal_Int32 nMax = MAX_PERC
|
|||
ornValue = getLimitedValue< sal_Int32, sal_Int32 >( ornValue + nOff, 0, nMax );
|
||||
}
|
||||
|
||||
} // namespace
|
||||
constexpr frozen::unordered_map<std::u16string_view, model::ThemeColorType, 26> aSchemeColorNameToIndex
|
||||
{
|
||||
{ u"dk1", model::ThemeColorType::Dark1 },
|
||||
{ u"lt1", model::ThemeColorType::Light1 },
|
||||
{ u"dk2", model::ThemeColorType::Dark2 },
|
||||
{ u"lt2", model::ThemeColorType::Light2 },
|
||||
{ u"accent1", model::ThemeColorType::Accent1 },
|
||||
{ u"accent2", model::ThemeColorType::Accent2 },
|
||||
{ u"accent3", model::ThemeColorType::Accent3 },
|
||||
{ u"accent4", model::ThemeColorType::Accent4 },
|
||||
{ u"accent5", model::ThemeColorType::Accent5 },
|
||||
{ u"accent6", model::ThemeColorType::Accent6 },
|
||||
{ u"hlink", model::ThemeColorType::Hyperlink },
|
||||
{ u"folHlink", model::ThemeColorType::FollowedHyperlink },
|
||||
{ u"tx1", model::ThemeColorType::Dark1 },
|
||||
{ u"bg1", model::ThemeColorType::Light1 },
|
||||
{ u"tx2", model::ThemeColorType::Dark2 },
|
||||
{ u"bg2", model::ThemeColorType::Light2 },
|
||||
{ u"dark1", model::ThemeColorType::Dark1},
|
||||
{ u"light1", model::ThemeColorType::Light1},
|
||||
{ u"dark2", model::ThemeColorType::Dark2 },
|
||||
{ u"light2", model::ThemeColorType::Light2 },
|
||||
{ u"text1", model::ThemeColorType::Dark1 },
|
||||
{ u"background1", model::ThemeColorType::Light1 },
|
||||
{ u"text2", model::ThemeColorType::Dark2 },
|
||||
{ u"background2", model::ThemeColorType::Light2 },
|
||||
{ u"hyperlink", model::ThemeColorType::Hyperlink },
|
||||
{ u"followedHyperlink", model::ThemeColorType::FollowedHyperlink }
|
||||
};
|
||||
|
||||
} // end anonymous namespace
|
||||
|
||||
model::ThemeColorType schemeNameToThemeColorType(OUString const& rSchemeName)
|
||||
{
|
||||
static std::unordered_map<OUString, model::ThemeColorType> const aSchemeColorNameToIndex{
|
||||
{ u"dk1", model::ThemeColorType::Dark1 },
|
||||
{ u"lt1", model::ThemeColorType::Light1 },
|
||||
{ u"dk2", model::ThemeColorType::Dark2 },
|
||||
{ u"lt2", model::ThemeColorType::Light2 },
|
||||
{ u"accent1", model::ThemeColorType::Accent1 },
|
||||
{ u"accent2", model::ThemeColorType::Accent2 },
|
||||
{ u"accent3", model::ThemeColorType::Accent3 },
|
||||
{ u"accent4", model::ThemeColorType::Accent4 },
|
||||
{ u"accent5", model::ThemeColorType::Accent5 },
|
||||
{ u"accent6", model::ThemeColorType::Accent6 },
|
||||
{ u"hlink", model::ThemeColorType::Hyperlink },
|
||||
{ u"folHlink", model::ThemeColorType::FollowedHyperlink },
|
||||
{ u"tx1", model::ThemeColorType::Dark1 },
|
||||
{ u"bg1", model::ThemeColorType::Light1 },
|
||||
{ u"tx2", model::ThemeColorType::Dark2 },
|
||||
{ u"bg2", model::ThemeColorType::Light2 },
|
||||
{ u"dark1", model::ThemeColorType::Dark1},
|
||||
{ u"light1", model::ThemeColorType::Light1},
|
||||
{ u"dark2", model::ThemeColorType::Dark2 },
|
||||
{ u"light2", model::ThemeColorType::Light2 },
|
||||
{ u"text1", model::ThemeColorType::Dark1 },
|
||||
{ u"background1", model::ThemeColorType::Light1 },
|
||||
{ u"text2", model::ThemeColorType::Dark2 },
|
||||
{ u"background2", model::ThemeColorType::Light2 },
|
||||
{ u"hyperlink", model::ThemeColorType::Hyperlink },
|
||||
{ u"followedHyperlink", model::ThemeColorType::FollowedHyperlink}
|
||||
};
|
||||
|
||||
auto aIterator = aSchemeColorNameToIndex.find(rSchemeName);
|
||||
if (aIterator == aSchemeColorNameToIndex.end())
|
||||
return model::ThemeColorType::Unknown;
|
||||
|
@ -268,7 +264,7 @@ Color::Color() :
|
|||
/* Do not pass nDefaultRgb to ContainerHelper::getVectorElement(), to be
|
||||
able to catch the existing vector entries without corresponding XML
|
||||
token identifier. */
|
||||
::Color nRgbValue = ContainerHelper::getVectorElement( StaticPresetColorsPool().maDmlColors, nToken, API_RGB_TRANSPARENT );
|
||||
::Color nRgbValue = lookupDmlColor(nToken);
|
||||
return (sal_Int32(nRgbValue) >= 0) ? nRgbValue : nDefaultRgb;
|
||||
}
|
||||
|
||||
|
@ -277,7 +273,7 @@ Color::Color() :
|
|||
/* Do not pass nDefaultRgb to ContainerHelper::getVectorElement(), to be
|
||||
able to catch the existing vector entries without corresponding XML
|
||||
token identifier. */
|
||||
::Color nRgbValue = ContainerHelper::getVectorElement( StaticPresetColorsPool().maVmlColors, nToken, API_RGB_TRANSPARENT );
|
||||
::Color nRgbValue = lookupVmlColor(nToken);
|
||||
return (sal_Int32(nRgbValue) >= 0) ? nRgbValue : nDefaultRgb;
|
||||
}
|
||||
|
||||
|
@ -286,7 +282,7 @@ Color::Color() :
|
|||
/* Do not pass nDefaultRgb to ContainerHelper::getVectorElement(), to be
|
||||
able to catch the existing vector entries without corresponding XML
|
||||
token identifier. */
|
||||
::Color nRgbValue = ContainerHelper::getVectorElement( StaticPresetColorsPool().maHighlightColors, nToken, API_RGB_TRANSPARENT );
|
||||
::Color nRgbValue = lookupHighlightColor(nToken);
|
||||
return (sal_Int32(nRgbValue) >= 0) ? nRgbValue : nDefaultRgb;
|
||||
}
|
||||
|
||||
|
|
|
@ -24,13 +24,16 @@
|
|||
#include <oox/token/namespaces.hxx>
|
||||
#include <oox/token/tokens.hxx>
|
||||
#include <unordered_map>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
namespace oox::drawingml {
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
const std::unordered_map<sal_Int32, model::SystemColorType> constSystemColorMap =
|
||||
constexpr frozen::unordered_map<sal_Int32, model::SystemColorType, 30> constSystemColorMap
|
||||
{
|
||||
{ XML_scrollBar, model::SystemColorType::ScrollBar },
|
||||
{ XML_background, model::SystemColorType::Background },
|
||||
|
@ -64,7 +67,7 @@ const std::unordered_map<sal_Int32, model::SystemColorType> constSystemColorMap
|
|||
{ XML_menuBar, model::SystemColorType::MenuBar }
|
||||
};
|
||||
|
||||
const std::unordered_map<sal_Int32, model::TransformationType> constTransformTypeMap =
|
||||
constexpr frozen::unordered_map<sal_Int32, model::TransformationType, 28> constTransformTypeMap
|
||||
{
|
||||
{ XML_alpha, model::TransformationType::Alpha },
|
||||
{ XML_alphaMod, model::TransformationType::AlphaMod },
|
||||
|
|
|
@ -907,6 +907,18 @@ void FontworkHelpers::applyPropsToRuns(const std::vector<beans::PropertyValue>&
|
|||
}
|
||||
}
|
||||
}
|
||||
namespace
|
||||
{
|
||||
constexpr const std::array<std::u16string_view, 5> aCharPropNames{
|
||||
u"CharColorLumMod", u"CharColorLumOff", u"CharColorTheme", u"CharComplexColor",
|
||||
u"CharTransparence"
|
||||
};
|
||||
|
||||
constexpr const std::array<std::u16string_view, 5> aShapePropNames{
|
||||
u"FillColorLumMod", u"FillColorLumOff", u"FillColorTheme", u"FillComplexColor",
|
||||
u"FillTransparence"
|
||||
};
|
||||
}
|
||||
|
||||
void FontworkHelpers::createCharFillPropsFromShape(
|
||||
const uno::Reference<beans::XPropertySet>& rXPropSet,
|
||||
|
@ -932,17 +944,12 @@ void FontworkHelpers::createCharFillPropsFromShape(
|
|||
rCharPropVec.push_back(comphelper::makePropertyValue(u"CharColor", sal_Int32(aColor)));
|
||||
}
|
||||
|
||||
const std::array<OUString, 5> aCharPropNames
|
||||
= { u"CharColorLumMod", u"CharColorLumOff", u"CharColorTheme", u"CharComplexColor",
|
||||
u"CharTransparence" };
|
||||
const std::array<OUString, 5> aShapePropNames
|
||||
= { u"FillColorLumMod", u"FillColorLumOff", u"FillColorTheme", u"FillComplexColor",
|
||||
u"FillTransparence" };
|
||||
for (size_t i = 0; i < 5; i++)
|
||||
{
|
||||
if (xPropSetInfo->hasPropertyByName(aShapePropNames[i]))
|
||||
OUString aPropertyName(aShapePropNames[i]);
|
||||
if (xPropSetInfo->hasPropertyByName(aPropertyName))
|
||||
rCharPropVec.push_back(comphelper::makePropertyValue(
|
||||
aCharPropNames[i], rXPropSet->getPropertyValue(aShapePropNames[i])));
|
||||
OUString(aCharPropNames[i]), rXPropSet->getPropertyValue(aPropertyName)));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1041,29 +1048,32 @@ typedef std::multimap<sal_Int32, GradientStopColor> ColorMapType;
|
|||
|
||||
namespace
|
||||
{
|
||||
constexpr const std::array<std::u16string_view, 12> W14ColorNames{
|
||||
u"tx1", u"bg1", u"tx2", u"bg2", u"accent1", u"accent2",
|
||||
u"accent3", u"accent4", u"accent5", u"accent6", u"hlink", u"folHlink"
|
||||
};
|
||||
|
||||
constexpr const std::array<std::u16string_view, 12> WColorNames{
|
||||
u"text1", u"background1", u"text2", u"background2", u"accent1", u"accent2",
|
||||
u"accent3", u"accent4", u"accent5", u"accent6", u"hyperlink", u"followedHyperlink"
|
||||
};
|
||||
|
||||
// Returns the string to be used in w14:schemeClr in case of w14:textOutline or w14:textFill
|
||||
OUString lcl_getW14MarkupStringForThemeColor(const model::ComplexColor& rComplexColor)
|
||||
{
|
||||
const std::array<OUString, 12> W14ColorNames
|
||||
= { u"tx1", u"bg1", u"tx2", u"bg2", u"accent1", u"accent2",
|
||||
u"accent3", u"accent4", u"accent5", u"accent6", u"hlink", u"folHlink" };
|
||||
const sal_uInt8 nClrNameIndex = std::clamp<sal_uInt8>(
|
||||
sal_Int32(rComplexColor.getSchemeType()), sal_Int32(model::ThemeColorType::Dark1),
|
||||
sal_Int32(model::ThemeColorType::FollowedHyperlink));
|
||||
return W14ColorNames[nClrNameIndex];
|
||||
return OUString(W14ColorNames[nClrNameIndex]);
|
||||
}
|
||||
|
||||
// Returns the string to be used in w:themeColor. It is exported via CharThemeColor.
|
||||
OUString lcl_getWMarkupStringForThemeColor(const model::ComplexColor& rComplexColor)
|
||||
{
|
||||
const std::array<OUString, 12> WColorNames
|
||||
= { u"text1", u"background1", u"text2", u"background2",
|
||||
u"accent1", u"accent2", u"accent3", u"accent4",
|
||||
u"accent5", u"accent6", u"hyperlink", u"followedHyperlink" };
|
||||
const sal_uInt8 nClrNameIndex = std::clamp<sal_uInt8>(
|
||||
sal_Int32(rComplexColor.getSchemeType()), sal_Int32(model::ThemeColorType::Dark1),
|
||||
sal_Int32(model::ThemeColorType::FollowedHyperlink));
|
||||
return WColorNames[nClrNameIndex];
|
||||
return OUString(WColorNames[nClrNameIndex]);
|
||||
}
|
||||
|
||||
// Puts the value of the first occurrence of rType in rComplexColor into rValue and returns true.
|
||||
|
|
|
@ -28,6 +28,9 @@
|
|||
#include <vcl/GraphicExternalLink.hxx>
|
||||
#include <vcl/graph.hxx>
|
||||
#include <unordered_map>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
|
@ -143,7 +146,7 @@ ContextHandlerRef GradientFillContext::onCreateContext(
|
|||
namespace
|
||||
{
|
||||
|
||||
std::unordered_map<sal_Int32, model::PatternPreset> constPatternPresetMap =
|
||||
constexpr frozen::unordered_map<sal_Int32, model::PatternPreset, 54> constPatternPresetMap
|
||||
{
|
||||
{ XML_pct5, model::PatternPreset::Percent_5 },
|
||||
{ XML_pct10, model::PatternPreset::Percent_10 },
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
*/
|
||||
#include <oox/token/tokens.hxx>
|
||||
#include <drawingml/table/tablestyle.hxx>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
using namespace oox;
|
||||
using namespace oox::drawingml::table;
|
||||
|
@ -194,13 +197,18 @@ static void createStyleIdMap()
|
|||
= std::make_pair(OUString("Dark-Style-2"), OUString("Accent5"));
|
||||
}
|
||||
|
||||
static std::map<OUString, sal_Int32> tokens = { { "", XML_dk1 },
|
||||
{ "Accent1", XML_accent1 },
|
||||
{ "Accent2", XML_accent2 },
|
||||
{ "Accent3", XML_accent3 },
|
||||
{ "Accent4", XML_accent4 },
|
||||
{ "Accent5", XML_accent5 },
|
||||
{ "Accent6", XML_accent6 } };
|
||||
constexpr frozen::unordered_map<std::u16string_view, sal_Int32, 6> tokens{
|
||||
{ u"Accent1", XML_accent1 }, { u"Accent2", XML_accent2 }, { u"Accent3", XML_accent3 },
|
||||
{ u"Accent4", XML_accent4 }, { u"Accent5", XML_accent5 }, { u"Accent6", XML_accent6 }
|
||||
};
|
||||
|
||||
sal_Int32 resolveToken(OUString const& rString)
|
||||
{
|
||||
auto interator = tokens.find(rString);
|
||||
if (interator != tokens.end())
|
||||
return interator->second;
|
||||
return XML_dk1;
|
||||
}
|
||||
|
||||
void setBorderLineType(const oox::drawingml::LinePropertiesPtr& pLineProp, sal_Int32 nToken)
|
||||
{
|
||||
|
@ -444,7 +452,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
setBorderLineType(pLastColBottomBorder, XML_solidFill);
|
||||
setBorderLineType(pLastColInsideHBorder, XML_solidFill);
|
||||
|
||||
sal_Int32 accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
sal_Int32 accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
|
||||
wholeTblTextColor.setSchemeClr(XML_dk1);
|
||||
firstRowTextColor.setSchemeClr(XML_lt1);
|
||||
|
@ -509,7 +517,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
wholeTblTextColor.setSchemeClr(XML_lt1);
|
||||
firstRowTextColor.setSchemeClr(XML_lt1);
|
||||
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
|
||||
pTblBgFillProperties->maFillColor.setSchemeClr(accent_val);
|
||||
pFirstRowBottomBorder->maLineFill.maFillColor.setSchemeClr(XML_lt1);
|
||||
|
@ -554,7 +562,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_tx1;
|
||||
|
||||
|
@ -591,7 +599,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_tx1;
|
||||
|
||||
|
@ -628,7 +636,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_tx1;
|
||||
|
||||
|
@ -665,7 +673,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_dk1;
|
||||
|
||||
|
@ -713,7 +721,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_dk1;
|
||||
|
||||
|
@ -753,7 +761,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_dk1;
|
||||
|
||||
|
@ -780,7 +788,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_dk1;
|
||||
|
||||
|
@ -823,7 +831,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
|
||||
if (!accent_name.isEmpty())
|
||||
{
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
transform_val = XML_shade;
|
||||
}
|
||||
else
|
||||
|
@ -866,7 +874,7 @@ std::unique_ptr<TableStyle> CreateTableStyle(const OUString& styleId)
|
|||
sal_Int32 accent_val;
|
||||
|
||||
if (!accent_name.isEmpty())
|
||||
accent_val = tokens[mStyleIdMap[styleId].second];
|
||||
accent_val = resolveToken(mStyleIdMap[styleId].second);
|
||||
else
|
||||
accent_val = XML_dk1;
|
||||
|
||||
|
|
|
@ -19,6 +19,9 @@
|
|||
#include <sax/fastattribs.hxx>
|
||||
#include <unordered_map>
|
||||
#include <oox/export/drawingml.hxx>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
namespace oox
|
||||
{
|
||||
|
@ -142,16 +145,84 @@ bool ThemeExport::writeFontScheme(model::FontScheme const& rFontScheme)
|
|||
return true;
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr frozen::unordered_map<model::TransformationType, sal_Int32, 4> constTransformTypeTokenMap{
|
||||
{ model::TransformationType::Tint, XML_tint },
|
||||
{ model::TransformationType::Shade, XML_shade },
|
||||
{ model::TransformationType::LumMod, XML_lumMod },
|
||||
{ model::TransformationType::LumOff, XML_lumOff },
|
||||
};
|
||||
|
||||
constexpr frozen::unordered_map<model::ThemeColorType, const char*, 12> constThemeColorTypeTokenMap{
|
||||
{ model::ThemeColorType::Dark1, "dk1" },
|
||||
{ model::ThemeColorType::Light1, "lt1" },
|
||||
{ model::ThemeColorType::Dark2, "dk2" },
|
||||
{ model::ThemeColorType::Light2, "lt2" },
|
||||
{ model::ThemeColorType::Accent1, "accent1" },
|
||||
{ model::ThemeColorType::Accent2, "accent2" },
|
||||
{ model::ThemeColorType::Accent3, "accent3" },
|
||||
{ model::ThemeColorType::Accent4, "accent4" },
|
||||
{ model::ThemeColorType::Accent5, "accent5" },
|
||||
{ model::ThemeColorType::Accent6, "accent6" },
|
||||
{ model::ThemeColorType::Hyperlink, "hlink" },
|
||||
{ model::ThemeColorType::FollowedHyperlink, "folHlink" }
|
||||
};
|
||||
|
||||
constexpr frozen::unordered_map<model::SystemColorType, const char*, 30>
|
||||
constSystemColorTypeTokenMap{
|
||||
{ model::SystemColorType::DarkShadow3D, "3dDkShadow" },
|
||||
{ model::SystemColorType::Light3D, "3dLight" },
|
||||
{ model::SystemColorType::ActiveBorder, "activeBorder" },
|
||||
{ model::SystemColorType::ActiveCaption, "activeCaption" },
|
||||
{ model::SystemColorType::AppWorkspace, "appWorkspace" },
|
||||
{ model::SystemColorType::Background, "background" },
|
||||
{ model::SystemColorType::ButtonFace, "btnFace" },
|
||||
{ model::SystemColorType::ButtonHighlight, "btnHighlight" },
|
||||
{ model::SystemColorType::ButtonShadow, "btnShadow" },
|
||||
{ model::SystemColorType::ButtonText, "btnText" },
|
||||
{ model::SystemColorType::CaptionText, "captionText" },
|
||||
{ model::SystemColorType::GradientActiveCaption, "gradientActiveCaption" },
|
||||
{ model::SystemColorType::GradientInactiveCaption, "gradientInactiveCaption" },
|
||||
{ model::SystemColorType::GrayText, "grayText" },
|
||||
{ model::SystemColorType::Highlight, "highlight" },
|
||||
{ model::SystemColorType::HighlightText, "highlightText" },
|
||||
{ model::SystemColorType::HotLight, "hotLight" },
|
||||
{ model::SystemColorType::InactiveBorder, "inactiveBorder" },
|
||||
{ model::SystemColorType::InactiveCaption, "inactiveCaption" },
|
||||
{ model::SystemColorType::InactiveCaptionText, "inactiveCaptionText" },
|
||||
{ model::SystemColorType::InfoBack, "infoBk" },
|
||||
{ model::SystemColorType::InfoText, "infoText" },
|
||||
{ model::SystemColorType::Menu, "menu" },
|
||||
{ model::SystemColorType::MenuBar, "menuBar" },
|
||||
{ model::SystemColorType::MenuHighlight, "menuHighlight" },
|
||||
{ model::SystemColorType::MenuText, "menuText" },
|
||||
{ model::SystemColorType::ScrollBar, "scrollBar" },
|
||||
{ model::SystemColorType::Window, "window" },
|
||||
{ model::SystemColorType::WindowFrame, "windowFrame" },
|
||||
{ model::SystemColorType::WindowText, "windowText" }
|
||||
};
|
||||
|
||||
constexpr frozen::unordered_map<sal_Int32, model::ThemeColorType, 12> constTokenMap{
|
||||
{ XML_dk1, model::ThemeColorType::Dark1 },
|
||||
{ XML_lt1, model::ThemeColorType::Light1 },
|
||||
{ XML_dk2, model::ThemeColorType::Dark2 },
|
||||
{ XML_lt2, model::ThemeColorType::Light2 },
|
||||
{ XML_accent1, model::ThemeColorType::Accent1 },
|
||||
{ XML_accent2, model::ThemeColorType::Accent2 },
|
||||
{ XML_accent3, model::ThemeColorType::Accent3 },
|
||||
{ XML_accent4, model::ThemeColorType::Accent4 },
|
||||
{ XML_accent5, model::ThemeColorType::Accent5 },
|
||||
{ XML_accent6, model::ThemeColorType::Accent6 },
|
||||
{ XML_hlink, model::ThemeColorType::Hyperlink },
|
||||
{ XML_folHlink, model::ThemeColorType::FollowedHyperlink }
|
||||
};
|
||||
|
||||
} // end anonymous ns
|
||||
|
||||
void ThemeExport::writeColorTransformations(
|
||||
std::vector<model::Transformation> const& rTransformations)
|
||||
{
|
||||
static std::unordered_map<model::TransformationType, sal_Int32> constTransformTypeTokenMap = {
|
||||
{ model::TransformationType::Tint, XML_tint },
|
||||
{ model::TransformationType::Shade, XML_shade },
|
||||
{ model::TransformationType::LumMod, XML_lumMod },
|
||||
{ model::TransformationType::LumOff, XML_lumOff },
|
||||
};
|
||||
|
||||
for (model::Transformation const& rTransformation : rTransformations)
|
||||
{
|
||||
auto iterator = constTransformTypeTokenMap.find(rTransformation.meType);
|
||||
|
@ -191,19 +262,6 @@ void ThemeExport::writeColorHSL(model::ComplexColor const& rComplexColor)
|
|||
|
||||
void ThemeExport::writeColorScheme(model::ComplexColor const& rComplexColor)
|
||||
{
|
||||
static std::unordered_map<model::ThemeColorType, const char*> constThemeColorTypeTokenMap
|
||||
= { { model::ThemeColorType::Dark1, "dk1" },
|
||||
{ model::ThemeColorType::Light1, "lt1" },
|
||||
{ model::ThemeColorType::Dark2, "dk2" },
|
||||
{ model::ThemeColorType::Light2, "lt2" },
|
||||
{ model::ThemeColorType::Accent1, "accent1" },
|
||||
{ model::ThemeColorType::Accent2, "accent2" },
|
||||
{ model::ThemeColorType::Accent3, "accent3" },
|
||||
{ model::ThemeColorType::Accent4, "accent4" },
|
||||
{ model::ThemeColorType::Accent5, "accent5" },
|
||||
{ model::ThemeColorType::Accent6, "accent6" },
|
||||
{ model::ThemeColorType::Hyperlink, "hlink" },
|
||||
{ model::ThemeColorType::FollowedHyperlink, "folHlink" } };
|
||||
auto iterator = constThemeColorTypeTokenMap.find(rComplexColor.meSchemeType);
|
||||
if (iterator != constThemeColorTypeTokenMap.end())
|
||||
{
|
||||
|
@ -216,40 +274,8 @@ void ThemeExport::writeColorScheme(model::ComplexColor const& rComplexColor)
|
|||
|
||||
void ThemeExport::writeColorSystem(model::ComplexColor const& rComplexColor)
|
||||
{
|
||||
static std::unordered_map<model::SystemColorType, const char*> constThemeColorTypeTokenMap = {
|
||||
{ model::SystemColorType::DarkShadow3D, "3dDkShadow" },
|
||||
{ model::SystemColorType::Light3D, "3dLight" },
|
||||
{ model::SystemColorType::ActiveBorder, "activeBorder" },
|
||||
{ model::SystemColorType::ActiveCaption, "activeCaption" },
|
||||
{ model::SystemColorType::AppWorkspace, "appWorkspace" },
|
||||
{ model::SystemColorType::Background, "background" },
|
||||
{ model::SystemColorType::ButtonFace, "btnFace" },
|
||||
{ model::SystemColorType::ButtonHighlight, "btnHighlight" },
|
||||
{ model::SystemColorType::ButtonShadow, "btnShadow" },
|
||||
{ model::SystemColorType::ButtonText, "btnText" },
|
||||
{ model::SystemColorType::CaptionText, "captionText" },
|
||||
{ model::SystemColorType::GradientActiveCaption, "gradientActiveCaption" },
|
||||
{ model::SystemColorType::GradientInactiveCaption, "gradientInactiveCaption" },
|
||||
{ model::SystemColorType::GrayText, "grayText" },
|
||||
{ model::SystemColorType::Highlight, "highlight" },
|
||||
{ model::SystemColorType::HighlightText, "highlightText" },
|
||||
{ model::SystemColorType::HotLight, "hotLight" },
|
||||
{ model::SystemColorType::InactiveBorder, "inactiveBorder" },
|
||||
{ model::SystemColorType::InactiveCaption, "inactiveCaption" },
|
||||
{ model::SystemColorType::InactiveCaptionText, "inactiveCaptionText" },
|
||||
{ model::SystemColorType::InfoBack, "infoBk" },
|
||||
{ model::SystemColorType::InfoText, "infoText" },
|
||||
{ model::SystemColorType::Menu, "menu" },
|
||||
{ model::SystemColorType::MenuBar, "menuBar" },
|
||||
{ model::SystemColorType::MenuHighlight, "menuHighlight" },
|
||||
{ model::SystemColorType::MenuText, "menuText" },
|
||||
{ model::SystemColorType::ScrollBar, "scrollBar" },
|
||||
{ model::SystemColorType::Window, "window" },
|
||||
{ model::SystemColorType::WindowFrame, "windowFrame" },
|
||||
{ model::SystemColorType::WindowText, "windowText" },
|
||||
};
|
||||
auto iterator = constThemeColorTypeTokenMap.find(rComplexColor.meSystemColorType);
|
||||
if (iterator != constThemeColorTypeTokenMap.end())
|
||||
auto iterator = constSystemColorTypeTokenMap.find(rComplexColor.meSystemColorType);
|
||||
if (iterator != constSystemColorTypeTokenMap.end())
|
||||
{
|
||||
const char* sValue = iterator->second;
|
||||
mpFS->startElementNS(XML_a, XML_sysClr, XML_val, sValue);
|
||||
|
@ -844,21 +870,7 @@ bool ThemeExport::writeFormatScheme(model::FormatScheme const& rFormatScheme)
|
|||
|
||||
bool ThemeExport::writeColorSet(model::Theme const& rTheme)
|
||||
{
|
||||
static std::unordered_map<sal_Int32, model::ThemeColorType> constTokenMap
|
||||
= { { XML_dk1, model::ThemeColorType::Dark1 },
|
||||
{ XML_lt1, model::ThemeColorType::Light1 },
|
||||
{ XML_dk2, model::ThemeColorType::Dark2 },
|
||||
{ XML_lt2, model::ThemeColorType::Light2 },
|
||||
{ XML_accent1, model::ThemeColorType::Accent1 },
|
||||
{ XML_accent2, model::ThemeColorType::Accent2 },
|
||||
{ XML_accent3, model::ThemeColorType::Accent3 },
|
||||
{ XML_accent4, model::ThemeColorType::Accent4 },
|
||||
{ XML_accent5, model::ThemeColorType::Accent5 },
|
||||
{ XML_accent6, model::ThemeColorType::Accent6 },
|
||||
{ XML_hlink, model::ThemeColorType::Hyperlink },
|
||||
{ XML_folHlink, model::ThemeColorType::FollowedHyperlink } };
|
||||
|
||||
static std::array<sal_Int32, 12> constTokenArray
|
||||
static const constexpr std::array<sal_Int32, 12> constTokenArray
|
||||
= { XML_dk1, XML_lt1, XML_dk2, XML_lt2, XML_accent1, XML_accent2,
|
||||
XML_accent3, XML_accent4, XML_accent5, XML_accent6, XML_hlink, XML_folHlink };
|
||||
|
||||
|
@ -868,11 +880,15 @@ bool ThemeExport::writeColorSet(model::Theme const& rTheme)
|
|||
|
||||
for (auto nToken : constTokenArray)
|
||||
{
|
||||
model::ThemeColorType eColorType = constTokenMap[nToken];
|
||||
Color aColor = pColorSet->getColor(eColorType);
|
||||
mpFS->startElementNS(XML_a, nToken);
|
||||
mpFS->singleElementNS(XML_a, XML_srgbClr, XML_val, I32SHEX(sal_Int32(aColor)));
|
||||
mpFS->endElementNS(XML_a, nToken);
|
||||
auto iterator = constTokenMap.find(nToken);
|
||||
if (iterator != constTokenMap.end())
|
||||
{
|
||||
model::ThemeColorType eColorType = iterator->second;
|
||||
Color aColor = pColorSet->getColor(eColorType);
|
||||
mpFS->startElementNS(XML_a, nToken);
|
||||
mpFS->singleElementNS(XML_a, XML_srgbClr, XML_val, I32SHEX(sal_Int32(aColor)));
|
||||
mpFS->endElementNS(XML_a, nToken);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
|
|
@ -25,6 +25,10 @@
|
|||
#include <tools/multisel.hxx>
|
||||
#include <comphelper/diagnose_ex.hxx>
|
||||
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
#include <com/sun/star/container/XNamed.hpp>
|
||||
#include <com/sun/star/drawing/XMasterPagesSupplier.hpp>
|
||||
#include <com/sun/star/drawing/XDrawPages.hpp>
|
||||
|
@ -72,12 +76,15 @@ using namespace ::com::sun::star::drawing;
|
|||
using namespace ::com::sun::star::presentation;
|
||||
using namespace ::com::sun::star::xml::sax;
|
||||
|
||||
namespace oox::ppt {
|
||||
|
||||
static std::map<PredefinedClrSchemeId, sal_Int32> PredefinedClrTokens =
|
||||
namespace oox::ppt
|
||||
{
|
||||
//{ dk1, XML_dk1 },
|
||||
//{ lt1, XML_lt1 },
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr frozen::unordered_map<PredefinedClrSchemeId, sal_Int32, 12> constPredefinedClrTokens
|
||||
{
|
||||
{ dk1, XML_dk1 },
|
||||
{ lt1, XML_lt1 },
|
||||
{ dk2, XML_dk2 },
|
||||
{ lt2, XML_lt2 },
|
||||
{ accent1, XML_accent1 },
|
||||
|
@ -90,6 +97,15 @@ static std::map<PredefinedClrSchemeId, sal_Int32> PredefinedClrTokens =
|
|||
{ folHlink, XML_folHlink }
|
||||
};
|
||||
|
||||
sal_Int32 getPredefinedClrTokens(PredefinedClrSchemeId eID)
|
||||
{
|
||||
auto iterator = constPredefinedClrTokens.find(eID);
|
||||
if (iterator == constPredefinedClrTokens.end())
|
||||
return XML_TOKEN_INVALID;
|
||||
return iterator->second;
|
||||
}
|
||||
} // end anonymous ns
|
||||
|
||||
PresentationFragmentHandler::PresentationFragmentHandler(XmlFilterBase& rFilter, const OUString& rFragmentPath)
|
||||
: FragmentHandler2( rFilter, rFragmentPath )
|
||||
, mpTextListStyle( std::make_shared<TextListStyle>() )
|
||||
|
@ -227,8 +243,9 @@ void PresentationFragmentHandler::saveThemeToGrabBag(const oox::drawingml::Theme
|
|||
ClrScheme rClrScheme = pThemePtr->getClrScheme();
|
||||
for (int nId = PredefinedClrSchemeId::dk2; nId != PredefinedClrSchemeId::Count; nId++)
|
||||
{
|
||||
sal_uInt32 nToken = PredefinedClrTokens[static_cast<PredefinedClrSchemeId>(nId)];
|
||||
const OUString& sName = PredefinedClrNames[static_cast<PredefinedClrSchemeId>(nId)];
|
||||
auto eID = static_cast<PredefinedClrSchemeId>(nId);
|
||||
sal_uInt32 nToken = getPredefinedClrTokens(eID);
|
||||
OUString sName(getPredefinedClrNames(eID));
|
||||
::Color nColor;
|
||||
|
||||
rClrScheme.getColor(nToken, nColor);
|
||||
|
|
|
@ -10,21 +10,28 @@
|
|||
#include <oox/token/relationship.hxx>
|
||||
|
||||
#include <sal/log.hxx>
|
||||
#include <map>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
namespace oox {
|
||||
namespace oox
|
||||
{
|
||||
|
||||
namespace
|
||||
{
|
||||
|
||||
constexpr frozen::unordered_map<Relationship, std::u16string_view, 48> constRelationshipMap
|
||||
{
|
||||
#include "relationship.inc"
|
||||
};
|
||||
|
||||
} // end anonymous ns
|
||||
|
||||
OUString getRelationship(Relationship eRelationship)
|
||||
{
|
||||
static const std::map<Relationship, OUString> aMap =
|
||||
{
|
||||
#include "relationship.inc"
|
||||
};
|
||||
|
||||
auto itr = aMap.find(eRelationship);
|
||||
if (itr != aMap.end())
|
||||
return itr->second;
|
||||
|
||||
auto iterator = constRelationshipMap.find(eRelationship);
|
||||
if (iterator != constRelationshipMap.end())
|
||||
return OUString(iterator->second);
|
||||
SAL_WARN("oox", "could not find an entry for the relationship: " << static_cast<int>(eRelationship));
|
||||
return OUString();
|
||||
}
|
||||
|
|
|
@ -1,48 +1,48 @@
|
|||
{Relationship::ACTIVEXCONTROLBINARY, "http://schemas.microsoft.com/office/2006/relationships/activeXControlBinary"},
|
||||
{Relationship::CHART, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"},
|
||||
{Relationship::CHARTUSERSHAPES, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartUserShapes"},
|
||||
{Relationship::COMMENTS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"},
|
||||
{Relationship::COMMENTAUTHORS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors"},
|
||||
{Relationship::COMMENTSEXTENDED, "http://schemas.microsoft.com/office/2011/relationships/commentsExtended"},
|
||||
{Relationship::CONTROL, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/control"},
|
||||
{Relationship::CTRLPROP, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/ctrlProp"},
|
||||
{Relationship::CUSTOMXML, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"},
|
||||
{Relationship::CUSTOMXMLPROPS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps"},
|
||||
{Relationship::DIAGRAMCOLORS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramColors"},
|
||||
{Relationship::DIAGRAMDATA, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramData"},
|
||||
{Relationship::DIAGRAMDRAWING, "http://schemas.microsoft.com/office/2007/relationships/diagramDrawing"},
|
||||
{Relationship::DIAGRAMLAYOUT, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramLayout"},
|
||||
{Relationship::DIAGRAMQUICKSTYLE, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramQuickStyle"},
|
||||
{Relationship::DRAWING, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"},
|
||||
{Relationship::ENDNOTES, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes"},
|
||||
{Relationship::EXTERNALLINKPATH, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"},
|
||||
{Relationship::FONT, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/font"},
|
||||
{Relationship::FONTTABLE, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable"},
|
||||
{Relationship::FOOTER, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"},
|
||||
{Relationship::FOOTNOTES, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes"},
|
||||
{Relationship::GLOSSARYDOCUMENT, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument"},
|
||||
{Relationship::HDPHOTO, "http://schemas.microsoft.com/office/2007/relationships/hdphoto"},
|
||||
{Relationship::HEADER, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"},
|
||||
{Relationship::HYPERLINK, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"},
|
||||
{Relationship::IMAGE, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"},
|
||||
{Relationship::MEDIA, "http://schemas.microsoft.com/office/2007/relationships/media"},
|
||||
{Relationship::NOTESMASTER, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster"},
|
||||
{Relationship::NOTESSLIDE, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"},
|
||||
{Relationship::NUMBERING, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering"},
|
||||
{Relationship::OFFICEDOCUMENT, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"},
|
||||
{Relationship::OLEOBJECT, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"},
|
||||
{Relationship::PACKAGE, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/package"},
|
||||
{Relationship::PRESPROPS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"},
|
||||
{Relationship::SETTINGS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings"},
|
||||
{Relationship::SHAREDSTRINGS, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"},
|
||||
{Relationship::SLIDE, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"},
|
||||
{Relationship::SLIDELAYOUT, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"},
|
||||
{Relationship::SLIDEMASTER, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"},
|
||||
{Relationship::STYLES, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"},
|
||||
{Relationship::THEME, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"},
|
||||
{Relationship::VBAPROJECT, "http://schemas.microsoft.com/office/2006/relationships/vbaProject"},
|
||||
{Relationship::VIDEO, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/video"},
|
||||
{Relationship::AUDIO, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio"},
|
||||
{Relationship::VMLDRAWING, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing"},
|
||||
{Relationship::WORDVBADATA, "http://schemas.microsoft.com/office/2006/relationships/wordVbaData"},
|
||||
{Relationship::WORKSHEET, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"}
|
||||
{Relationship::ACTIVEXCONTROLBINARY, u"http://schemas.microsoft.com/office/2006/relationships/activeXControlBinary"},
|
||||
{Relationship::CHART, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart"},
|
||||
{Relationship::CHARTUSERSHAPES, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartUserShapes"},
|
||||
{Relationship::COMMENTS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments"},
|
||||
{Relationship::COMMENTAUTHORS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors"},
|
||||
{Relationship::COMMENTSEXTENDED, u"http://schemas.microsoft.com/office/2011/relationships/commentsExtended"},
|
||||
{Relationship::CONTROL, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/control"},
|
||||
{Relationship::CTRLPROP, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/ctrlProp"},
|
||||
{Relationship::CUSTOMXML, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml"},
|
||||
{Relationship::CUSTOMXMLPROPS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps"},
|
||||
{Relationship::DIAGRAMCOLORS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramColors"},
|
||||
{Relationship::DIAGRAMDATA, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramData"},
|
||||
{Relationship::DIAGRAMDRAWING, u"http://schemas.microsoft.com/office/2007/relationships/diagramDrawing"},
|
||||
{Relationship::DIAGRAMLAYOUT, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramLayout"},
|
||||
{Relationship::DIAGRAMQUICKSTYLE, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/diagramQuickStyle"},
|
||||
{Relationship::DRAWING, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing"},
|
||||
{Relationship::ENDNOTES, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/endnotes"},
|
||||
{Relationship::EXTERNALLINKPATH, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath"},
|
||||
{Relationship::FONT, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/font"},
|
||||
{Relationship::FONTTABLE, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable"},
|
||||
{Relationship::FOOTER, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer"},
|
||||
{Relationship::FOOTNOTES, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/footnotes"},
|
||||
{Relationship::GLOSSARYDOCUMENT, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/glossaryDocument"},
|
||||
{Relationship::HDPHOTO, u"http://schemas.microsoft.com/office/2007/relationships/hdphoto"},
|
||||
{Relationship::HEADER, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/header"},
|
||||
{Relationship::HYPERLINK, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"},
|
||||
{Relationship::IMAGE, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"},
|
||||
{Relationship::MEDIA, u"http://schemas.microsoft.com/office/2007/relationships/media"},
|
||||
{Relationship::NOTESMASTER, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesMaster"},
|
||||
{Relationship::NOTESSLIDE, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide"},
|
||||
{Relationship::NUMBERING, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering"},
|
||||
{Relationship::OFFICEDOCUMENT, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"},
|
||||
{Relationship::OLEOBJECT, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/oleObject"},
|
||||
{Relationship::PACKAGE, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/package"},
|
||||
{Relationship::PRESPROPS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps"},
|
||||
{Relationship::SETTINGS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings"},
|
||||
{Relationship::SHAREDSTRINGS, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings"},
|
||||
{Relationship::SLIDE, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slide"},
|
||||
{Relationship::SLIDELAYOUT, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout"},
|
||||
{Relationship::SLIDEMASTER, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideMaster"},
|
||||
{Relationship::STYLES, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles"},
|
||||
{Relationship::THEME, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme"},
|
||||
{Relationship::VBAPROJECT, u"http://schemas.microsoft.com/office/2006/relationships/vbaProject"},
|
||||
{Relationship::VIDEO, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/video"},
|
||||
{Relationship::AUDIO, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/audio"},
|
||||
{Relationship::VMLDRAWING, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing"},
|
||||
{Relationship::WORDVBADATA, u"http://schemas.microsoft.com/office/2006/relationships/wordVbaData"},
|
||||
{Relationship::WORKSHEET, u"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet"}
|
||||
|
|
|
@ -36,6 +36,7 @@ $(eval $(call gb_Library_use_externals,scfilt,\
|
|||
boost_headers \
|
||||
$(call gb_Helper_optional,OPENCL,clew) \
|
||||
mdds_headers \
|
||||
frozen \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_libraries,scfilt,\
|
||||
|
|
|
@ -109,6 +109,7 @@ $(eval $(call gb_Library_use_externals,sd,\
|
|||
avahi \
|
||||
) \
|
||||
icu_headers \
|
||||
frozen \
|
||||
))
|
||||
|
||||
ifneq ($(DBUS_HAVE_GLIB),)
|
||||
|
|
|
@ -1947,7 +1947,7 @@ void PowerPointExport::WriteDefaultColorSchemes(const FSHelperPtr& pFS)
|
|||
{
|
||||
for (int nId = PredefinedClrSchemeId::dk2; nId != PredefinedClrSchemeId::Count; nId++)
|
||||
{
|
||||
OUString sName = PredefinedClrNames[static_cast<PredefinedClrSchemeId>(nId)];
|
||||
OUString sName(getPredefinedClrNames(static_cast<PredefinedClrSchemeId>(nId)));
|
||||
sal_Int32 nColor = 0;
|
||||
|
||||
switch (nId)
|
||||
|
|
|
@ -56,6 +56,7 @@ $(eval $(call gb_Library_use_externals,writerfilter,\
|
|||
icuuc \
|
||||
icu_headers \
|
||||
libxml2 \
|
||||
frozen \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_add_exception_objects,writerfilter,\
|
||||
|
|
|
@ -18,13 +18,16 @@
|
|||
*/
|
||||
#include <rtl/ustring.hxx>
|
||||
#include "PropertyIds.hxx"
|
||||
#include <unordered_map>
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_map.h>
|
||||
|
||||
namespace writerfilter::dmapper{
|
||||
|
||||
const OUString & getPropertyName( PropertyIds eId )
|
||||
namespace
|
||||
{
|
||||
static const std::unordered_map<PropertyIds, OUString> map {
|
||||
constexpr frozen::unordered_map<PropertyIds, std::u16string_view, 347> constPropertyMap
|
||||
{
|
||||
{ PROP_CHAR_WEIGHT, u"CharWeight"},
|
||||
{ PROP_CHAR_POSTURE, u"CharPosture"},
|
||||
{ PROP_CHAR_STRIKEOUT, u"CharStrikeout"},
|
||||
|
@ -373,7 +376,15 @@ const OUString & getPropertyName( PropertyIds eId )
|
|||
{ PROP_PARA_CONNECT_BORDERS, u"ParaIsConnectBorder"},
|
||||
{ PROP_DECORATIVE, u"Decorative"},
|
||||
};
|
||||
return map.at(eId);
|
||||
} // end anonymous ns
|
||||
|
||||
OUString getPropertyName( PropertyIds eId )
|
||||
{
|
||||
auto iterator = constPropertyMap.find(eId);
|
||||
if (iterator != constPropertyMap.end())
|
||||
return OUString(iterator->second);
|
||||
|
||||
return OUString();
|
||||
}
|
||||
|
||||
bool isCharacterProperty( const PropertyIds eId )
|
||||
|
|
|
@ -377,7 +377,7 @@ enum PropertyIds
|
|||
};
|
||||
|
||||
//Returns the UNO string equivalent to eId.
|
||||
const OUString & getPropertyName(PropertyIds eId);
|
||||
OUString getPropertyName(PropertyIds eId);
|
||||
|
||||
bool isCharacterProperty(const PropertyIds eId);
|
||||
|
||||
|
|
|
@ -41,7 +41,10 @@ $(eval $(call gb_Library_add_defs,xo,\
|
|||
-DXMLOFF_DLLIMPLEMENTATION \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_external,xo,boost_headers))
|
||||
$(eval $(call gb_Library_use_externals,xo,\
|
||||
boost_headers \
|
||||
frozen \
|
||||
))
|
||||
|
||||
$(eval $(call gb_Library_use_custom_headers,xo,\
|
||||
officecfg/registry \
|
||||
|
|
|
@ -18,11 +18,10 @@
|
|||
*/
|
||||
|
||||
#include <XMLRtlGutterPropertyHandler.hxx>
|
||||
|
||||
#include <set>
|
||||
|
||||
#include <frozen/bits/defines.h>
|
||||
#include <frozen/bits/elsa_std.h>
|
||||
#include <frozen/unordered_set.h>
|
||||
#include <com/sun/star/uno/Any.hxx>
|
||||
|
||||
#include <xmloff/xmluconv.hxx>
|
||||
|
||||
using namespace com::sun::star;
|
||||
|
@ -31,13 +30,18 @@ XMLRtlGutterPropertyHandler::XMLRtlGutterPropertyHandler() = default;
|
|||
|
||||
XMLRtlGutterPropertyHandler::~XMLRtlGutterPropertyHandler() = default;
|
||||
|
||||
namespace
|
||||
{
|
||||
constexpr frozen::unordered_set<std::u16string_view, 4> constRtlModes{ u"rl-tb", u"tb-rl", u"rl",
|
||||
u"tb" };
|
||||
} // end anonymous ns
|
||||
|
||||
bool XMLRtlGutterPropertyHandler::importXML(const OUString& rStrImpValue, uno::Any& rValue,
|
||||
const SvXMLUnitConverter&) const
|
||||
{
|
||||
// Infer RtlGutter from WritingMode.
|
||||
std::set<OUString> aRtlModes = { "rl-tb", "tb-rl", "rl", "tb" };
|
||||
auto it = aRtlModes.find(rStrImpValue);
|
||||
rValue <<= (it != aRtlModes.end());
|
||||
auto it = constRtlModes.find(rStrImpValue);
|
||||
rValue <<= (it != constRtlModes.end());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue