bump product version to 7.2.5.1
[LibreOffice.git] / svx / source / xoutdev / xtabcolr.cxx
blob67e963ce92a6166cdd7278af801e45eaef012b5d
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <memory>
21 #include <XPropertyTable.hxx>
22 #include <unotools/configmgr.hxx>
23 #include <unotools/pathoptions.hxx>
25 #include <svx/strings.hrc>
26 #include <svx/dialmgr.hxx>
27 #include <svx/xtable.hxx>
29 using namespace com::sun::star;
31 XColorListRef XColorList::CreateStdColorList()
33 return XPropertyList::AsColorList(
34 XPropertyList::CreatePropertyList(
35 XPropertyListType::Color, !utl::ConfigManager::IsFuzzing() ?
36 SvtPathOptions().GetPalettePath() :
37 "", ""));
40 XColorListRef XColorList::GetStdColorList()
42 XColorListRef aTable( CreateStdColorList() );
43 return aTable;
46 void XColorList::Replace(tools::Long nIndex, std::unique_ptr<XColorEntry> pEntry)
48 XPropertyList::Replace(std::move(pEntry), nIndex);
50 XColorEntry* XColorList::GetColor(tools::Long nIndex) const
52 return static_cast<XColorEntry*>( XPropertyList::Get(nIndex) );
55 uno::Reference< container::XNameContainer > XColorList::createInstance()
57 return uno::Reference< container::XNameContainer >(
58 SvxUnoXColorTable_createInstance( this ),
59 uno::UNO_QUERY );
62 bool XColorList::Create()
64 sal_uInt32 a(0);
65 sal_uInt32 b(0);
67 // <!-- Gray palette from white to black -->
68 const OUString aStrGrey( SvxResId( RID_SVXSTR_COLOR_GREY ) );
70 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0xff, 0xff ), SvxResId( RID_SVXSTR_COLOR_WHITE ) ) );
71 Insert( std::make_unique<XColorEntry>( Color( 0xee, 0xee, 0xee ), aStrGrey + " 1" ) );
72 Insert( std::make_unique<XColorEntry>( Color( 0xdd, 0xdd, 0xdd ), aStrGrey + " 2" ) );
73 Insert( std::make_unique<XColorEntry>( Color( 0xcc, 0xcc, 0xcc ), aStrGrey + " 3" ) );
74 Insert( std::make_unique<XColorEntry>( Color( 0xb2, 0xb2, 0xb2 ), aStrGrey + " 4" ) );
75 Insert( std::make_unique<XColorEntry>( Color( 0x99, 0x99, 0x99 ), aStrGrey + " 5" ) );
76 Insert( std::make_unique<XColorEntry>( Color( 0x80, 0x80, 0x80 ), aStrGrey + " 6" ) );
77 Insert( std::make_unique<XColorEntry>( Color( 0x66, 0x66, 0x66 ), aStrGrey + " 7" ) );
78 Insert( std::make_unique<XColorEntry>( Color( 0x33, 0x33, 0x33 ), aStrGrey + " 8" ) );
79 Insert( std::make_unique<XColorEntry>( Color( 0x1c, 0x1c, 0x1c ), aStrGrey + " 9" ) );
80 Insert( std::make_unique<XColorEntry>( Color( 0x11, 0x11, 0x11 ), aStrGrey + " 10") );
81 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x00, 0x00 ), SvxResId( RID_SVXSTR_COLOR_BLACK ) ) );
83 // <!-- Base colors step 0 to 10 -->
84 const sal_uInt32 nNumColorsInGroup(12);
85 const sal_uInt32 nNumGroups(11);
86 const OUString aStrCol[nNumColorsInGroup] = {
87 SvxResId(RID_SVXSTR_COLOR_YELLOW),
88 SvxResId(RID_SVXSTR_COLOR_ORANGE),
89 SvxResId(RID_SVXSTR_COLOR_RED),
90 SvxResId(RID_SVXSTR_COLOR_PINK),
91 SvxResId(RID_SVXSTR_COLOR_MAGENTA),
92 SvxResId(RID_SVXSTR_COLOR_PURPLE),
93 SvxResId(RID_SVXSTR_COLOR_BLUE),
94 SvxResId(RID_SVXSTR_COLOR_SKYBLUE),
95 SvxResId(RID_SVXSTR_COLOR_CYAN),
96 SvxResId(RID_SVXSTR_COLOR_TURQUOISE),
97 SvxResId(RID_SVXSTR_COLOR_GREEN),
98 SvxResId(RID_SVXSTR_COLOR_YELLOWGREEN) };
99 static const sal_uInt32 aStdCol[nNumColorsInGroup * nNumGroups] = {
100 0xffff99, 0xff6600, 0xff3333, 0xff00cc, 0xff33ff, 0x9900ff, 0x6666ff, 0x00ccff, 0x66ffff, 0x33ff99, 0x99ff66, 0xccff00,
101 0xffff66, 0xffcc00, 0xff9999, 0xff66cc, 0xff99ff, 0xcc66ff, 0x9999ff, 0x9999ff, 0x99ffff, 0x66ff99, 0x99ff99, 0xccff66,
102 0xffff00, 0xff9900, 0xff6666, 0xff3399, 0xff66ff, 0x9933ff, 0x3333ff, 0x3399ff, 0x00ffff, 0x00ff66, 0x66ff66, 0x99ff33,
103 0xcc9900, 0xff3300, 0xff0000, 0xff0066, 0xff00ff, 0x6600ff, 0x0000ff, 0x0066ff, 0x00cccc, 0x00cc33, 0x00cc00, 0x66ff00,
104 0x996600, 0xcc3300, 0xcc0000, 0xcc0066, 0xcc00cc, 0x6600cc, 0x0000cc, 0x0066cc, 0x009999, 0x009933, 0x009900, 0x66cc00,
105 0x663300, 0x801900, 0x990000, 0x990066, 0x990099, 0x330099, 0x000099, 0x006699, 0x006666, 0x007826, 0x006600, 0x669900,
106 0x333300, 0x461900, 0x330000, 0x330033, 0x660066, 0x000033, 0x000066, 0x000080, 0x003333, 0x00331a, 0x003300, 0x193300,
107 0x666633, 0x661900, 0x663333, 0x660033, 0x663366, 0x330066, 0x333366, 0x003366, 0x336666, 0x006633, 0x336633, 0x336600,
108 0x999966, 0x996633, 0x996666, 0x993366, 0x996699, 0x663399, 0x666699, 0x336699, 0x669999, 0x339966, 0x669966, 0x669933,
109 0xcccc99, 0xcc9966, 0xcc9999, 0xcc6699, 0xcc99cc, 0x9966cc, 0x9999cc, 0x6699cc, 0x99cccc, 0x66cc99, 0x99cc99, 0x99cc66,
110 0xffffcc, 0xffcc99, 0xffcccc, 0xff99cc, 0xffccff, 0xcc99ff, 0xccccff, 0x99ccff, 0xccffff, 0x99ffcc, 0xccffcc, 0xccff99 };
112 for(a = 0; a < nNumGroups; a++)
114 OUString aSuffix;
115 if (a > 0) aSuffix = OUString::number(a);
117 const sal_uInt32 nOffset(a * nNumColorsInGroup);
119 for(b = 0; b < nNumColorsInGroup; b++)
121 Insert( std::make_unique<XColorEntry>( Color(ColorTransparency, aStdCol[nOffset + b]), aStrCol[b] + aSuffix ) );
125 // <!-- use some 'nice' colors from original palette -->
126 Insert( std::make_unique<XColorEntry>( Color( 0xe6, 0xe6, 0xff ), SvxResId( RID_SVXSTR_COLOR_BLUEGREY) ) );
127 Insert( std::make_unique<XColorEntry>( Color( 0xCF, 0xE7, 0xF5 ), SvxResId( RID_SVXSTR_COLOR_BLUE_CLASSIC ) ) );
129 // <!-- add 'pale' colors from original palette -->
130 Insert( std::make_unique<XColorEntry>( Color( 0x99, 0x99, 0xff ), SvxResId( RID_SVXSTR_COLOR_VIOLET ) ) );
131 Insert( std::make_unique<XColorEntry>( Color( 0x99, 0x33, 0x66 ), SvxResId( RID_SVXSTR_COLOR_BORDEAUX ) ) );
132 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0xff, 0xcc ), SvxResId( RID_SVXSTR_COLOR_PALE_YELLOW ) ) );
133 Insert( std::make_unique<XColorEntry>( Color( 0xcc, 0xff, 0xff ), SvxResId( RID_SVXSTR_COLOR_PALE_GREEN ) ) );
134 Insert( std::make_unique<XColorEntry>( Color( 0x66, 0x00, 0x66 ), SvxResId( RID_SVXSTR_COLOR_DARKVIOLET ) ) );
135 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0x80, 0x80 ), SvxResId( RID_SVXSTR_COLOR_SALMON ) ) );
136 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x66, 0xcc ), SvxResId( RID_SVXSTR_COLOR_SEABLUE ) ) );
138 // <!-- add Chart colors from original palette (also 12, coincidence?) -->
139 const OUString aStrChart( SvxResId( RID_SVXSTR_COLOR_CHART ) );
140 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x45, 0x86 ), aStrChart + " 1" ) );
141 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0x42, 0x0e ), aStrChart + " 2" ) );
142 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0xd3, 0x20 ), aStrChart + " 3" ) );
143 Insert( std::make_unique<XColorEntry>( Color( 0x57, 0x9d, 0x1c ), aStrChart + " 4" ) );
144 Insert( std::make_unique<XColorEntry>( Color( 0x7e, 0x00, 0x21 ), aStrChart + " 5" ) );
145 Insert( std::make_unique<XColorEntry>( Color( 0x83, 0xca, 0xff ), aStrChart + " 6" ) );
146 Insert( std::make_unique<XColorEntry>( Color( 0x31, 0x40, 0x04 ), aStrChart + " 7" ) );
147 Insert( std::make_unique<XColorEntry>( Color( 0xae, 0xcf, 0x00 ), aStrChart + " 8" ) );
148 Insert( std::make_unique<XColorEntry>( Color( 0x4b, 0x1f, 0x6f ), aStrChart + " 9" ) );
149 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0x95, 0x0e ), aStrChart + " 10" ) );
150 Insert( std::make_unique<XColorEntry>( Color( 0xc5, 0x00, 0x0b ), aStrChart + " 11" ) );
151 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x84, 0xd1 ), aStrChart + " 12" ) );
153 return(165 == Count());
156 BitmapEx XColorList::CreateBitmapForUI( tools::Long /*nIndex*/ )
158 return BitmapEx();
161 tools::Long XColorList::GetIndexOfColor( const Color& rColor ) const
163 for( tools::Long i = 0, n = maList.size(); i < n; ++i )
165 const Color aColor = static_cast<XColorEntry*>( maList[i].get() )->GetColor();
167 if (aColor == rColor )
168 return i;
171 return -1;
174 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */