Best effort to create directories of SAL_LOG_FILE
[LibreOffice.git] / svx / source / xoutdev / xtabcolr.cxx
blobb4f5769cad99d56272d75d0b34bfd8191c9d6822
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 <comphelper/configuration.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, !comphelper::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 SvxUnoXColorTable_createInstance( *this );
60 bool XColorList::Create()
62 sal_uInt32 a(0);
63 sal_uInt32 b(0);
65 // <!-- Gray palette from white to black -->
66 const OUString aStrGrey( SvxResId( RID_SVXSTR_COLOR_GREY ) );
68 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0xff, 0xff ), SvxResId( RID_SVXSTR_COLOR_WHITE ) ) );
69 Insert( std::make_unique<XColorEntry>( Color( 0xee, 0xee, 0xee ), aStrGrey + " 1" ) );
70 Insert( std::make_unique<XColorEntry>( Color( 0xdd, 0xdd, 0xdd ), aStrGrey + " 2" ) );
71 Insert( std::make_unique<XColorEntry>( Color( 0xcc, 0xcc, 0xcc ), aStrGrey + " 3" ) );
72 Insert( std::make_unique<XColorEntry>( Color( 0xb2, 0xb2, 0xb2 ), aStrGrey + " 4" ) );
73 Insert( std::make_unique<XColorEntry>( Color( 0x99, 0x99, 0x99 ), aStrGrey + " 5" ) );
74 Insert( std::make_unique<XColorEntry>( Color( 0x80, 0x80, 0x80 ), aStrGrey + " 6" ) );
75 Insert( std::make_unique<XColorEntry>( Color( 0x66, 0x66, 0x66 ), aStrGrey + " 7" ) );
76 Insert( std::make_unique<XColorEntry>( Color( 0x33, 0x33, 0x33 ), aStrGrey + " 8" ) );
77 Insert( std::make_unique<XColorEntry>( Color( 0x1c, 0x1c, 0x1c ), aStrGrey + " 9" ) );
78 Insert( std::make_unique<XColorEntry>( Color( 0x11, 0x11, 0x11 ), aStrGrey + " 10") );
79 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x00, 0x00 ), SvxResId( RID_SVXSTR_COLOR_BLACK ) ) );
81 // <!-- Base colors step 0 to 10 -->
82 const sal_uInt32 nNumColorsInGroup(12);
83 const sal_uInt32 nNumGroups(11);
84 const OUString aStrCol[nNumColorsInGroup] = {
85 SvxResId(RID_SVXSTR_COLOR_YELLOW),
86 SvxResId(RID_SVXSTR_COLOR_ORANGE),
87 SvxResId(RID_SVXSTR_COLOR_RED),
88 SvxResId(RID_SVXSTR_COLOR_PINK),
89 SvxResId(RID_SVXSTR_COLOR_MAGENTA),
90 SvxResId(RID_SVXSTR_COLOR_PURPLE),
91 SvxResId(RID_SVXSTR_COLOR_BLUE),
92 SvxResId(RID_SVXSTR_COLOR_SKYBLUE),
93 SvxResId(RID_SVXSTR_COLOR_CYAN),
94 SvxResId(RID_SVXSTR_COLOR_TURQUOISE),
95 SvxResId(RID_SVXSTR_COLOR_GREEN),
96 SvxResId(RID_SVXSTR_COLOR_YELLOWGREEN) };
97 static const sal_uInt32 aStdCol[nNumColorsInGroup * nNumGroups] = {
98 0xffff99, 0xff6600, 0xff3333, 0xff00cc, 0xff33ff, 0x9900ff, 0x6666ff, 0x00ccff, 0x66ffff, 0x33ff99, 0x99ff66, 0xccff00,
99 0xffff66, 0xffcc00, 0xff9999, 0xff66cc, 0xff99ff, 0xcc66ff, 0x9999ff, 0x9999ff, 0x99ffff, 0x66ff99, 0x99ff99, 0xccff66,
100 0xffff00, 0xff9900, 0xff6666, 0xff3399, 0xff66ff, 0x9933ff, 0x3333ff, 0x3399ff, 0x00ffff, 0x00ff66, 0x66ff66, 0x99ff33,
101 0xcc9900, 0xff3300, 0xff0000, 0xff0066, 0xff00ff, 0x6600ff, 0x0000ff, 0x0066ff, 0x00cccc, 0x00cc33, 0x00cc00, 0x66ff00,
102 0x996600, 0xcc3300, 0xcc0000, 0xcc0066, 0xcc00cc, 0x6600cc, 0x0000cc, 0x0066cc, 0x009999, 0x009933, 0x009900, 0x66cc00,
103 0x663300, 0x801900, 0x990000, 0x990066, 0x990099, 0x330099, 0x000099, 0x006699, 0x006666, 0x007826, 0x006600, 0x669900,
104 0x333300, 0x461900, 0x330000, 0x330033, 0x660066, 0x000033, 0x000066, 0x000080, 0x003333, 0x00331a, 0x003300, 0x193300,
105 0x666633, 0x661900, 0x663333, 0x660033, 0x663366, 0x330066, 0x333366, 0x003366, 0x336666, 0x006633, 0x336633, 0x336600,
106 0x999966, 0x996633, 0x996666, 0x993366, 0x996699, 0x663399, 0x666699, 0x336699, 0x669999, 0x339966, 0x669966, 0x669933,
107 0xcccc99, 0xcc9966, 0xcc9999, 0xcc6699, 0xcc99cc, 0x9966cc, 0x9999cc, 0x6699cc, 0x99cccc, 0x66cc99, 0x99cc99, 0x99cc66,
108 0xffffcc, 0xffcc99, 0xffcccc, 0xff99cc, 0xffccff, 0xcc99ff, 0xccccff, 0x99ccff, 0xccffff, 0x99ffcc, 0xccffcc, 0xccff99 };
110 for(a = 0; a < nNumGroups; a++)
112 OUString aSuffix;
113 if (a > 0) aSuffix = OUString::number(a);
115 const sal_uInt32 nOffset(a * nNumColorsInGroup);
117 for(b = 0; b < nNumColorsInGroup; b++)
119 Insert( std::make_unique<XColorEntry>( Color(ColorTransparency, aStdCol[nOffset + b]), aStrCol[b] + aSuffix ) );
123 // <!-- use some 'nice' colors from original palette -->
124 Insert( std::make_unique<XColorEntry>( Color( 0xe6, 0xe6, 0xff ), SvxResId( RID_SVXSTR_COLOR_BLUEGREY) ) );
125 Insert( std::make_unique<XColorEntry>( Color( 0xCF, 0xE7, 0xF5 ), SvxResId( RID_SVXSTR_COLOR_BLUE_CLASSIC ) ) );
127 // <!-- add 'pale' colors from original palette -->
128 Insert( std::make_unique<XColorEntry>( Color( 0x99, 0x99, 0xff ), SvxResId( RID_SVXSTR_COLOR_VIOLET ) ) );
129 Insert( std::make_unique<XColorEntry>( Color( 0x99, 0x33, 0x66 ), SvxResId( RID_SVXSTR_COLOR_BORDEAUX ) ) );
130 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0xff, 0xcc ), SvxResId( RID_SVXSTR_COLOR_PALE_YELLOW ) ) );
131 Insert( std::make_unique<XColorEntry>( Color( 0xcc, 0xff, 0xff ), SvxResId( RID_SVXSTR_COLOR_PALE_GREEN ) ) );
132 Insert( std::make_unique<XColorEntry>( Color( 0x66, 0x00, 0x66 ), SvxResId( RID_SVXSTR_COLOR_DARKVIOLET ) ) );
133 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0x80, 0x80 ), SvxResId( RID_SVXSTR_COLOR_SALMON ) ) );
134 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x66, 0xcc ), SvxResId( RID_SVXSTR_COLOR_SEABLUE ) ) );
136 // <!-- add Chart colors from original palette (also 12, coincidence?) -->
137 const OUString aStrChart( SvxResId( RID_SVXSTR_COLOR_CHART ) );
138 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x45, 0x86 ), aStrChart + " 1" ) );
139 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0x42, 0x0e ), aStrChart + " 2" ) );
140 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0xd3, 0x20 ), aStrChart + " 3" ) );
141 Insert( std::make_unique<XColorEntry>( Color( 0x57, 0x9d, 0x1c ), aStrChart + " 4" ) );
142 Insert( std::make_unique<XColorEntry>( Color( 0x7e, 0x00, 0x21 ), aStrChart + " 5" ) );
143 Insert( std::make_unique<XColorEntry>( Color( 0x83, 0xca, 0xff ), aStrChart + " 6" ) );
144 Insert( std::make_unique<XColorEntry>( Color( 0x31, 0x40, 0x04 ), aStrChart + " 7" ) );
145 Insert( std::make_unique<XColorEntry>( Color( 0xae, 0xcf, 0x00 ), aStrChart + " 8" ) );
146 Insert( std::make_unique<XColorEntry>( Color( 0x4b, 0x1f, 0x6f ), aStrChart + " 9" ) );
147 Insert( std::make_unique<XColorEntry>( Color( 0xff, 0x95, 0x0e ), aStrChart + " 10" ) );
148 Insert( std::make_unique<XColorEntry>( Color( 0xc5, 0x00, 0x0b ), aStrChart + " 11" ) );
149 Insert( std::make_unique<XColorEntry>( Color( 0x00, 0x84, 0xd1 ), aStrChart + " 12" ) );
151 return(165 == Count());
154 BitmapEx XColorList::CreateBitmapForUI( tools::Long /*nIndex*/ )
156 return BitmapEx();
159 tools::Long XColorList::GetIndexOfColor( const Color& rColor ) const
161 for( tools::Long i = 0, n = maList.size(); i < n; ++i )
163 const Color aColor = static_cast<XColorEntry*>( maList[i].get() )->GetColor();
165 if (aColor == rColor )
166 return i;
169 return -1;
172 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */