1*5b190011SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*5b190011SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*5b190011SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*5b190011SAndrew Rist * distributed with this work for additional information
6*5b190011SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*5b190011SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*5b190011SAndrew Rist * "License"); you may not use this file except in compliance
9*5b190011SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*5b190011SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*5b190011SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*5b190011SAndrew Rist * software distributed under the License is distributed on an
15*5b190011SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*5b190011SAndrew Rist * KIND, either express or implied. See the License for the
17*5b190011SAndrew Rist * specific language governing permissions and limitations
18*5b190011SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*5b190011SAndrew Rist *************************************************************/
21*5b190011SAndrew Rist
22*5b190011SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #include "precompiled_sd.hxx"
25cdf0e10cSrcweir
26cdf0e10cSrcweir #include "view/SlsTheme.hxx"
27cdf0e10cSrcweir #include "SlsResource.hxx"
28cdf0e10cSrcweir #include "controller/SlsProperties.hxx"
29cdf0e10cSrcweir #include "sdresid.hxx"
30cdf0e10cSrcweir #include <tools/color.hxx>
31cdf0e10cSrcweir #include <vcl/outdev.hxx>
32cdf0e10cSrcweir #include <vcl/image.hxx>
33cdf0e10cSrcweir #include <vcl/svapp.hxx>
34cdf0e10cSrcweir #include <svtools/colorcfg.hxx>
35cdf0e10cSrcweir
36cdf0e10cSrcweir namespace sd { namespace slidesorter { namespace view {
37cdf0e10cSrcweir
38cdf0e10cSrcweir const static ColorData Black = 0x000000;
39cdf0e10cSrcweir const static ColorData White = 0xffffff;
40cdf0e10cSrcweir
41cdf0e10cSrcweir
42cdf0e10cSrcweir
ChangeLuminance(const ColorData aColorData,const int nValue)43cdf0e10cSrcweir ColorData ChangeLuminance (const ColorData aColorData, const int nValue)
44cdf0e10cSrcweir {
45cdf0e10cSrcweir Color aColor (aColorData);
46cdf0e10cSrcweir if (nValue > 0)
47cdf0e10cSrcweir aColor.IncreaseLuminance(nValue);
48cdf0e10cSrcweir else
49cdf0e10cSrcweir aColor.DecreaseLuminance(-nValue);
50cdf0e10cSrcweir return aColor.GetColor();
51cdf0e10cSrcweir }
52cdf0e10cSrcweir
HGBAdapt(const ColorData aColorData,const sal_Int32 nNewSaturation,const sal_Int32 nNewBrightness)53cdf0e10cSrcweir ColorData HGBAdapt (
54cdf0e10cSrcweir const ColorData aColorData,
55cdf0e10cSrcweir const sal_Int32 nNewSaturation,
56cdf0e10cSrcweir const sal_Int32 nNewBrightness)
57cdf0e10cSrcweir {
58cdf0e10cSrcweir sal_uInt16 nHue (0);
59cdf0e10cSrcweir sal_uInt16 nSaturation (0);
60cdf0e10cSrcweir sal_uInt16 nBrightness (0);
61cdf0e10cSrcweir Color(aColorData).RGBtoHSB(nHue, nSaturation, nBrightness);
62cdf0e10cSrcweir return Color::HSBtoRGB(
63cdf0e10cSrcweir nHue,
64cdf0e10cSrcweir nNewSaturation>=0 ? nNewSaturation : nSaturation,
65cdf0e10cSrcweir nNewBrightness>=0 ? nNewBrightness : nBrightness);
66cdf0e10cSrcweir }
67cdf0e10cSrcweir
68cdf0e10cSrcweir
69cdf0e10cSrcweir
70cdf0e10cSrcweir
Theme(const::boost::shared_ptr<controller::Properties> & rpProperties)71cdf0e10cSrcweir Theme::Theme (const ::boost::shared_ptr<controller::Properties>& rpProperties)
72cdf0e10cSrcweir : mbIsHighContrastMode(false),
73cdf0e10cSrcweir maBackgroundColor(rpProperties->GetBackgroundColor().GetColor()),
74cdf0e10cSrcweir maPageBackgroundColor(COL_WHITE),
75cdf0e10cSrcweir maGradients(),
76cdf0e10cSrcweir maIcons(),
77cdf0e10cSrcweir maColor(),
78cdf0e10cSrcweir maIntegerValues()
79cdf0e10cSrcweir {
80cdf0e10cSrcweir {
81cdf0e10cSrcweir LocalResource aResource (RID_SLIDESORTER_ICONS);
82cdf0e10cSrcweir
83cdf0e10cSrcweir maStrings.resize(_StringType_Size_);
84cdf0e10cSrcweir maStrings[String_DragAndDropPages] = String(SdResId(STRING_DRAG_AND_DROP_PAGES));
85cdf0e10cSrcweir maStrings[String_DragAndDropSlides] = String(SdResId(STRING_DRAG_AND_DROP_SLIDES));
86cdf0e10cSrcweir maStrings[String_Command1] = String(SdResId(STRING_COMMAND1));
87cdf0e10cSrcweir maStrings[String_Command2] = String(SdResId(STRING_COMMAND2_A));
88cdf0e10cSrcweir maStrings[String_Command2B] = String(SdResId(STRING_COMMAND2_B));
89cdf0e10cSrcweir maStrings[String_Command3] = String(SdResId(STRING_COMMAND3));
90cdf0e10cSrcweir
91cdf0e10cSrcweir maColor.resize(_ColorType_Size_);
92cdf0e10cSrcweir maColor[Color_Background] = maBackgroundColor;
93cdf0e10cSrcweir maColor[Color_ButtonBackground] = Black;
94cdf0e10cSrcweir maColor[Color_ButtonText] = 0xc0c0c0;
95cdf0e10cSrcweir maColor[Color_ButtonTextHover] = White;
96cdf0e10cSrcweir maColor[Color_PageNumberDefault] = 0x0808080;
97cdf0e10cSrcweir maColor[Color_PageNumberHover] = 0x4c4c4c;
98cdf0e10cSrcweir maColor[Color_PageNumberHighContrast] = White;
99cdf0e10cSrcweir maColor[Color_PageNumberBrightBackground] = 0x333333;
100cdf0e10cSrcweir maColor[Color_PageNumberDarkBackground] = 0xcccccc;
101cdf0e10cSrcweir maColor[Color_PreviewBorder] = 0x949599;
102cdf0e10cSrcweir
103cdf0e10cSrcweir maIntegerValues.resize(_IntegerValueType_Size_);
104cdf0e10cSrcweir maIntegerValues[Integer_ButtonCornerRadius] = 3;
105cdf0e10cSrcweir maIntegerValues[Integer_ButtonMaxAlpha] = 0;
106cdf0e10cSrcweir maIntegerValues[Integer_ButtonBarMaxAlpha] = 0;
107cdf0e10cSrcweir maIntegerValues[Integer_ButtonPaintType] = 1;
108cdf0e10cSrcweir maIntegerValues[Integer_ButtonBorder] = 4;
109cdf0e10cSrcweir maIntegerValues[Integer_ButtonGap] = 0;
110cdf0e10cSrcweir maIntegerValues[Integer_ButtonFadeInDelay] = 800;
111cdf0e10cSrcweir maIntegerValues[Integer_ButtonFadeInDuration] = 100;
112cdf0e10cSrcweir maIntegerValues[Integer_ButtonFadeOutDelay] = 0;
113cdf0e10cSrcweir maIntegerValues[Integer_ButtonFadeOutDuration] = 100;
114cdf0e10cSrcweir maIntegerValues[Integer_ToolTipDelay] = 1000;
115cdf0e10cSrcweir maIntegerValues[Integer_FocusIndicatorWidth] = 3;
116cdf0e10cSrcweir }
117cdf0e10cSrcweir
118cdf0e10cSrcweir Update(rpProperties);
119cdf0e10cSrcweir }
120cdf0e10cSrcweir
121cdf0e10cSrcweir
122cdf0e10cSrcweir
123cdf0e10cSrcweir
Update(const::boost::shared_ptr<controller::Properties> & rpProperties)124cdf0e10cSrcweir void Theme::Update (const ::boost::shared_ptr<controller::Properties>& rpProperties)
125cdf0e10cSrcweir {
126cdf0e10cSrcweir const bool bSavedHighContrastMode (mbIsHighContrastMode);
127cdf0e10cSrcweir mbIsHighContrastMode = rpProperties->IsHighContrastModeActive();
128cdf0e10cSrcweir
129cdf0e10cSrcweir // Set up colors.
130cdf0e10cSrcweir maBackgroundColor = rpProperties->GetBackgroundColor().GetColor();
131cdf0e10cSrcweir maPageBackgroundColor = svtools::ColorConfig().GetColorValue(svtools::DOCCOLOR).nColor;
132cdf0e10cSrcweir
133cdf0e10cSrcweir maColor[Color_Background] = maBackgroundColor;
134cdf0e10cSrcweir
135cdf0e10cSrcweir maGradients.resize(_GradientColorType_Size_);
136cdf0e10cSrcweir
137cdf0e10cSrcweir maColor[Color_Background] = maBackgroundColor;
138cdf0e10cSrcweir const ColorData aSelectionColor (rpProperties->GetSelectionColor().GetColor());
139cdf0e10cSrcweir maColor[Color_Selection] = aSelectionColor;
140cdf0e10cSrcweir if (Color(aSelectionColor).IsBright())
141cdf0e10cSrcweir maColor[Color_PageCountFontColor] = Black;
142cdf0e10cSrcweir else
143cdf0e10cSrcweir maColor[Color_PageCountFontColor] = White;
144cdf0e10cSrcweir
145cdf0e10cSrcweir // Set up gradients.
146cdf0e10cSrcweir SetGradient(Gradient_SelectedPage, aSelectionColor, 50, 50, +100,+100, +50,+25);
147cdf0e10cSrcweir SetGradient(Gradient_MouseOverPage, aSelectionColor, 75, 75, +100,+100, +50,+25);
148cdf0e10cSrcweir SetGradient(Gradient_SelectedAndFocusedPage, aSelectionColor, 50, 50, +100,+100, -50,-75);
149cdf0e10cSrcweir SetGradient(Gradient_MouseOverSelectedAndFocusedPage, aSelectionColor, 75, 75, +100,+100, -50,-75);
150cdf0e10cSrcweir SetGradient(Gradient_FocusedPage, aSelectionColor, -1,-1, 0,0, -50,-75);
151cdf0e10cSrcweir
152cdf0e10cSrcweir SetGradient(Gradient_ButtonBackground, Black, -1,-1, 0,0, 0,0);
153cdf0e10cSrcweir SetGradient(Gradient_NormalPage, maBackgroundColor, -1,-1, 0,0, 0,0);
154cdf0e10cSrcweir
155cdf0e10cSrcweir // The focused gradient needs special handling because its fill color is
156cdf0e10cSrcweir // like that of the NormalPage gradient.
157cdf0e10cSrcweir GetGradient(Gradient_FocusedPage).maFillColor1 = GetGradient(Gradient_NormalPage).maFillColor1;
158cdf0e10cSrcweir GetGradient(Gradient_FocusedPage).maFillColor2 = GetGradient(Gradient_NormalPage).maFillColor2;
159cdf0e10cSrcweir
160cdf0e10cSrcweir // Set up icons.
161cdf0e10cSrcweir if (bSavedHighContrastMode != mbIsHighContrastMode || maIcons.empty())
162cdf0e10cSrcweir {
163cdf0e10cSrcweir LocalResource aResource (RID_SLIDESORTER_ICONS);
164cdf0e10cSrcweir
165cdf0e10cSrcweir maIcons.resize(_IconType_Size_);
166cdf0e10cSrcweir if (mbIsHighContrastMode)
167cdf0e10cSrcweir {
168cdf0e10cSrcweir InitializeIcon(Icon_RawShadow, IMAGE_SHADOW);
169cdf0e10cSrcweir InitializeIcon(Icon_RawInsertShadow, IMAGE_INSERT_SHADOW);
170cdf0e10cSrcweir InitializeIcon(Icon_HideSlideOverlay, IMAGE_HIDE_SLIDE_OVERLAY);
171cdf0e10cSrcweir
172cdf0e10cSrcweir InitializeIcon(Icon_ButtonBarLarge, IMAGE_BUTTONBAR_LARGE_HC);
173cdf0e10cSrcweir InitializeIcon(Icon_ButtonBarMedium, IMAGE_BUTTONBAR_MEDIUM_HC);
174cdf0e10cSrcweir InitializeIcon(Icon_ButtonBarSmall, IMAGE_BUTTONBAR_SMALL_HC);
175cdf0e10cSrcweir
176cdf0e10cSrcweir InitializeIcon(Icon_Command1Large, IMAGE_COMMAND1_LARGE_HC);
177cdf0e10cSrcweir InitializeIcon(Icon_Command1LargeHover, IMAGE_COMMAND1_LARGE_HOVER_HC);
178cdf0e10cSrcweir InitializeIcon(Icon_Command1Medium, IMAGE_COMMAND1_MEDIUM_HC);
179cdf0e10cSrcweir InitializeIcon(Icon_Command1MediumHover, IMAGE_COMMAND1_MEDIUM_HOVER_HC);
180cdf0e10cSrcweir InitializeIcon(Icon_Command1Small, IMAGE_COMMAND1_SMALL_HC);
181cdf0e10cSrcweir InitializeIcon(Icon_Command1SmallHover, IMAGE_COMMAND1_SMALL_HOVER_HC);
182cdf0e10cSrcweir
183cdf0e10cSrcweir InitializeIcon(Icon_Command2Large, IMAGE_COMMAND2_LARGE_HC);
184cdf0e10cSrcweir InitializeIcon(Icon_Command2LargeHover, IMAGE_COMMAND2_LARGE_HOVER_HC);
185cdf0e10cSrcweir InitializeIcon(Icon_Command2Medium, IMAGE_COMMAND2_MEDIUM_HC);
186cdf0e10cSrcweir InitializeIcon(Icon_Command2MediumHover, IMAGE_COMMAND2_MEDIUM_HOVER_HC);
187cdf0e10cSrcweir InitializeIcon(Icon_Command2Small, IMAGE_COMMAND2_SMALL_HC);
188cdf0e10cSrcweir InitializeIcon(Icon_Command2SmallHover, IMAGE_COMMAND2_SMALL_HOVER_HC);
189cdf0e10cSrcweir
190cdf0e10cSrcweir InitializeIcon(Icon_Command2BLarge, IMAGE_COMMAND2B_LARGE_HC);
191cdf0e10cSrcweir InitializeIcon(Icon_Command2BLargeHover, IMAGE_COMMAND2B_LARGE_HOVER_HC);
192cdf0e10cSrcweir InitializeIcon(Icon_Command2BMedium, IMAGE_COMMAND2B_MEDIUM_HC);
193cdf0e10cSrcweir InitializeIcon(Icon_Command2BMediumHover, IMAGE_COMMAND2B_MEDIUM_HOVER_HC);
194cdf0e10cSrcweir InitializeIcon(Icon_Command2BSmall, IMAGE_COMMAND2B_SMALL_HC);
195cdf0e10cSrcweir InitializeIcon(Icon_Command2BSmallHover, IMAGE_COMMAND2B_SMALL_HOVER_HC);
196cdf0e10cSrcweir
197cdf0e10cSrcweir InitializeIcon(Icon_Command3Large, IMAGE_COMMAND3_LARGE_HC);
198cdf0e10cSrcweir InitializeIcon(Icon_Command3LargeHover, IMAGE_COMMAND3_LARGE_HOVER_HC);
199cdf0e10cSrcweir InitializeIcon(Icon_Command3Medium, IMAGE_COMMAND3_SMALL_HC);
200cdf0e10cSrcweir InitializeIcon(Icon_Command3MediumHover, IMAGE_COMMAND3_SMALL_HOVER_HC);
201cdf0e10cSrcweir InitializeIcon(Icon_Command3Small, IMAGE_COMMAND3_SMALL_HC);
202cdf0e10cSrcweir InitializeIcon(Icon_Command3SmallHover, IMAGE_COMMAND3_SMALL_HOVER_HC);
203cdf0e10cSrcweir }
204cdf0e10cSrcweir else
205cdf0e10cSrcweir {
206cdf0e10cSrcweir InitializeIcon(Icon_RawShadow, IMAGE_SHADOW);
207cdf0e10cSrcweir InitializeIcon(Icon_RawInsertShadow, IMAGE_INSERT_SHADOW);
208cdf0e10cSrcweir InitializeIcon(Icon_HideSlideOverlay, IMAGE_HIDE_SLIDE_OVERLAY);
209cdf0e10cSrcweir
210cdf0e10cSrcweir InitializeIcon(Icon_ButtonBarLarge, IMAGE_BUTTONBAR_LARGE);
211cdf0e10cSrcweir InitializeIcon(Icon_ButtonBarMedium, IMAGE_BUTTONBAR_MEDIUM);
212cdf0e10cSrcweir InitializeIcon(Icon_ButtonBarSmall, IMAGE_BUTTONBAR_SMALL);
213cdf0e10cSrcweir
214cdf0e10cSrcweir InitializeIcon(Icon_Command1Large, IMAGE_COMMAND1_LARGE);
215cdf0e10cSrcweir InitializeIcon(Icon_Command1LargeHover, IMAGE_COMMAND1_LARGE_HOVER);
216cdf0e10cSrcweir InitializeIcon(Icon_Command1Medium, IMAGE_COMMAND1_MEDIUM);
217cdf0e10cSrcweir InitializeIcon(Icon_Command1MediumHover, IMAGE_COMMAND1_MEDIUM_HOVER);
218cdf0e10cSrcweir InitializeIcon(Icon_Command1Small, IMAGE_COMMAND1_SMALL);
219cdf0e10cSrcweir InitializeIcon(Icon_Command1SmallHover, IMAGE_COMMAND1_SMALL_HOVER);
220cdf0e10cSrcweir
221cdf0e10cSrcweir InitializeIcon(Icon_Command2Large, IMAGE_COMMAND2_LARGE);
222cdf0e10cSrcweir InitializeIcon(Icon_Command2LargeHover, IMAGE_COMMAND2_LARGE_HOVER);
223cdf0e10cSrcweir InitializeIcon(Icon_Command2Medium, IMAGE_COMMAND2_MEDIUM);
224cdf0e10cSrcweir InitializeIcon(Icon_Command2MediumHover, IMAGE_COMMAND2_MEDIUM_HOVER);
225cdf0e10cSrcweir InitializeIcon(Icon_Command2Small, IMAGE_COMMAND2_SMALL);
226cdf0e10cSrcweir InitializeIcon(Icon_Command2SmallHover, IMAGE_COMMAND2_SMALL_HOVER);
227cdf0e10cSrcweir
228cdf0e10cSrcweir InitializeIcon(Icon_Command2BLarge, IMAGE_COMMAND2B_LARGE);
229cdf0e10cSrcweir InitializeIcon(Icon_Command2BLargeHover, IMAGE_COMMAND2B_LARGE_HOVER);
230cdf0e10cSrcweir InitializeIcon(Icon_Command2BMedium, IMAGE_COMMAND2B_MEDIUM);
231cdf0e10cSrcweir InitializeIcon(Icon_Command2BMediumHover, IMAGE_COMMAND2B_MEDIUM_HOVER);
232cdf0e10cSrcweir InitializeIcon(Icon_Command2BSmall, IMAGE_COMMAND2B_SMALL);
233cdf0e10cSrcweir InitializeIcon(Icon_Command2BSmallHover, IMAGE_COMMAND2B_SMALL_HOVER);
234cdf0e10cSrcweir
235cdf0e10cSrcweir InitializeIcon(Icon_Command3Large, IMAGE_COMMAND3_LARGE);
236cdf0e10cSrcweir InitializeIcon(Icon_Command3LargeHover, IMAGE_COMMAND3_LARGE_HOVER);
237cdf0e10cSrcweir InitializeIcon(Icon_Command3Medium, IMAGE_COMMAND3_MEDIUM);
238cdf0e10cSrcweir InitializeIcon(Icon_Command3MediumHover, IMAGE_COMMAND3_MEDIUM_HOVER);
239cdf0e10cSrcweir InitializeIcon(Icon_Command3Small, IMAGE_COMMAND3_SMALL);
240cdf0e10cSrcweir InitializeIcon(Icon_Command3SmallHover, IMAGE_COMMAND3_SMALL_HOVER);
241cdf0e10cSrcweir }
242cdf0e10cSrcweir InitializeIcon(Icon_FocusBorder, IMAGE_FOCUS_BORDER);
243cdf0e10cSrcweir }
244cdf0e10cSrcweir }
245cdf0e10cSrcweir
246cdf0e10cSrcweir
247cdf0e10cSrcweir
248cdf0e10cSrcweir
GetFont(const FontType eType,const OutputDevice & rDevice)249cdf0e10cSrcweir ::boost::shared_ptr<Font> Theme::GetFont (
250cdf0e10cSrcweir const FontType eType,
251cdf0e10cSrcweir const OutputDevice& rDevice)
252cdf0e10cSrcweir {
253cdf0e10cSrcweir ::boost::shared_ptr<Font> pFont;
254cdf0e10cSrcweir
255cdf0e10cSrcweir switch (eType)
256cdf0e10cSrcweir {
257cdf0e10cSrcweir case Font_PageNumber:
258cdf0e10cSrcweir pFont.reset(new Font(Application::GetSettings().GetStyleSettings().GetAppFont()));
259cdf0e10cSrcweir pFont->SetTransparent(sal_True);
260cdf0e10cSrcweir pFont->SetWeight(WEIGHT_BOLD);
261cdf0e10cSrcweir break;
262cdf0e10cSrcweir
263cdf0e10cSrcweir case Font_PageCount:
264cdf0e10cSrcweir pFont.reset(new Font(Application::GetSettings().GetStyleSettings().GetAppFont()));
265cdf0e10cSrcweir pFont->SetTransparent(sal_True);
266cdf0e10cSrcweir pFont->SetWeight(WEIGHT_NORMAL);
267cdf0e10cSrcweir {
268cdf0e10cSrcweir const Size aSize (pFont->GetSize());
269cdf0e10cSrcweir pFont->SetSize(Size(aSize.Width()*5/3, aSize.Height()*5/3));
270cdf0e10cSrcweir }
271cdf0e10cSrcweir break;
272cdf0e10cSrcweir
273cdf0e10cSrcweir case Font_Button:
274cdf0e10cSrcweir pFont.reset(new Font(Application::GetSettings().GetStyleSettings().GetAppFont()));
275cdf0e10cSrcweir pFont->SetTransparent(sal_True);
276cdf0e10cSrcweir pFont->SetWeight(WEIGHT_BOLD);
277cdf0e10cSrcweir {
278cdf0e10cSrcweir const Size aSize (pFont->GetSize());
279cdf0e10cSrcweir pFont->SetSize(Size(aSize.Width()*4/3, aSize.Height()*4/3));
280cdf0e10cSrcweir }
281cdf0e10cSrcweir break;
282cdf0e10cSrcweir }
283cdf0e10cSrcweir
284cdf0e10cSrcweir if (pFont)
285cdf0e10cSrcweir {
286cdf0e10cSrcweir // Transform the point size to pixel size.
287cdf0e10cSrcweir const MapMode aFontMapMode (MAP_POINT);
288cdf0e10cSrcweir const Size aFontSize (rDevice.LogicToPixel(pFont->GetSize(), aFontMapMode));
289cdf0e10cSrcweir
290cdf0e10cSrcweir // Transform the font size to the logical coordinates of the device.
291cdf0e10cSrcweir pFont->SetSize(rDevice.PixelToLogic(aFontSize));
292cdf0e10cSrcweir }
293cdf0e10cSrcweir
294cdf0e10cSrcweir return pFont;
295cdf0e10cSrcweir }
296cdf0e10cSrcweir
297cdf0e10cSrcweir
298cdf0e10cSrcweir
299cdf0e10cSrcweir
GetColor(const ColorType eType)300cdf0e10cSrcweir ColorData Theme::GetColor (const ColorType eType)
301cdf0e10cSrcweir {
302cdf0e10cSrcweir if (eType>=0 && sal_uInt32(eType)<maColor.size())
303cdf0e10cSrcweir return maColor[eType];
304cdf0e10cSrcweir else
305cdf0e10cSrcweir return 0;
306cdf0e10cSrcweir }
307cdf0e10cSrcweir
308cdf0e10cSrcweir
309cdf0e10cSrcweir
310cdf0e10cSrcweir
SetColor(const ColorType eType,const ColorData aData)311cdf0e10cSrcweir void Theme::SetColor (
312cdf0e10cSrcweir const ColorType eType,
313cdf0e10cSrcweir const ColorData aData)
314cdf0e10cSrcweir {
315cdf0e10cSrcweir if (eType>=0 && sal_uInt32(eType)<maColor.size())
316cdf0e10cSrcweir maColor[eType] = aData;
317cdf0e10cSrcweir }
318cdf0e10cSrcweir
319cdf0e10cSrcweir
320cdf0e10cSrcweir
321cdf0e10cSrcweir
GetGradientColor(const GradientColorType eType,const GradientColorClass eClass)322cdf0e10cSrcweir ColorData Theme::GetGradientColor (
323cdf0e10cSrcweir const GradientColorType eType,
324cdf0e10cSrcweir const GradientColorClass eClass)
325cdf0e10cSrcweir {
326cdf0e10cSrcweir GradientDescriptor& rDescriptor (GetGradient(eType));
327cdf0e10cSrcweir
328cdf0e10cSrcweir switch (eClass)
329cdf0e10cSrcweir {
330cdf0e10cSrcweir case Border1: return rDescriptor.maBorderColor1;
331cdf0e10cSrcweir case Border2: return rDescriptor.maBorderColor2;
332cdf0e10cSrcweir case Fill1: return rDescriptor.maFillColor1;
333cdf0e10cSrcweir case Fill2: return rDescriptor.maFillColor2;
334cdf0e10cSrcweir default: OSL_ASSERT(false); // fall through
335cdf0e10cSrcweir case Base: return rDescriptor.maBaseColor;
336cdf0e10cSrcweir }
337cdf0e10cSrcweir }
338cdf0e10cSrcweir
339cdf0e10cSrcweir
340cdf0e10cSrcweir
341cdf0e10cSrcweir
GetGradientOffset(const GradientColorType eType,const GradientColorClass eClass)342cdf0e10cSrcweir sal_Int32 Theme::GetGradientOffset (
343cdf0e10cSrcweir const GradientColorType eType,
344cdf0e10cSrcweir const GradientColorClass eClass)
345cdf0e10cSrcweir {
346cdf0e10cSrcweir GradientDescriptor& rDescriptor (GetGradient(eType));
347cdf0e10cSrcweir
348cdf0e10cSrcweir switch (eClass)
349cdf0e10cSrcweir {
350cdf0e10cSrcweir case Border1: return rDescriptor.mnBorderOffset1;
351cdf0e10cSrcweir case Border2: return rDescriptor.mnBorderOffset2;
352cdf0e10cSrcweir case Fill1: return rDescriptor.mnFillOffset1;
353cdf0e10cSrcweir case Fill2: return rDescriptor.mnFillOffset2;
354cdf0e10cSrcweir default: OSL_ASSERT(false); // fall through
355cdf0e10cSrcweir case Base: return 0;
356cdf0e10cSrcweir }
357cdf0e10cSrcweir }
358cdf0e10cSrcweir
359cdf0e10cSrcweir
360cdf0e10cSrcweir
361cdf0e10cSrcweir
SetGradient(const GradientColorType eType,const ColorData aBaseColor,const sal_Int32 nSaturationOverride,const sal_Int32 nBrightnessOverride,const sal_Int32 nFillStartOffset,const sal_Int32 nFillEndOffset,const sal_Int32 nBorderStartOffset,const sal_Int32 nBorderEndOffset)362cdf0e10cSrcweir void Theme::SetGradient (
363cdf0e10cSrcweir const GradientColorType eType,
364cdf0e10cSrcweir const ColorData aBaseColor,
365cdf0e10cSrcweir const sal_Int32 nSaturationOverride,
366cdf0e10cSrcweir const sal_Int32 nBrightnessOverride,
367cdf0e10cSrcweir const sal_Int32 nFillStartOffset,
368cdf0e10cSrcweir const sal_Int32 nFillEndOffset,
369cdf0e10cSrcweir const sal_Int32 nBorderStartOffset,
370cdf0e10cSrcweir const sal_Int32 nBorderEndOffset)
371cdf0e10cSrcweir {
372cdf0e10cSrcweir GradientDescriptor& rGradient (GetGradient(eType));
373cdf0e10cSrcweir
374cdf0e10cSrcweir rGradient.maBaseColor = aBaseColor;
375cdf0e10cSrcweir
376cdf0e10cSrcweir rGradient.mnSaturationOverride = nSaturationOverride;
377cdf0e10cSrcweir rGradient.mnBrightnessOverride = nBrightnessOverride;
378cdf0e10cSrcweir const ColorData aColor (nSaturationOverride>=0 || nBrightnessOverride>=0
379cdf0e10cSrcweir ? HGBAdapt(aBaseColor, nSaturationOverride, nBrightnessOverride)
380cdf0e10cSrcweir : aBaseColor);
381cdf0e10cSrcweir
382cdf0e10cSrcweir rGradient.maFillColor1 = ChangeLuminance(aColor, nFillStartOffset);
383cdf0e10cSrcweir rGradient.maFillColor2 = ChangeLuminance(aColor, nFillEndOffset);
384cdf0e10cSrcweir rGradient.maBorderColor1 = ChangeLuminance(aColor, nBorderStartOffset);
385cdf0e10cSrcweir rGradient.maBorderColor2 = ChangeLuminance(aColor, nBorderEndOffset);
386cdf0e10cSrcweir
387cdf0e10cSrcweir rGradient.mnFillOffset1 = nFillStartOffset;
388cdf0e10cSrcweir rGradient.mnFillOffset2 = nFillEndOffset;
389cdf0e10cSrcweir rGradient.mnBorderOffset1 = nBorderStartOffset;
390cdf0e10cSrcweir rGradient.mnBorderOffset2 = nBorderEndOffset;
391cdf0e10cSrcweir }
392cdf0e10cSrcweir
393cdf0e10cSrcweir
394cdf0e10cSrcweir
395cdf0e10cSrcweir
GetGradientSaturationOverride(const GradientColorType eType)396cdf0e10cSrcweir sal_Int32 Theme::GetGradientSaturationOverride (const GradientColorType eType)
397cdf0e10cSrcweir {
398cdf0e10cSrcweir GradientDescriptor& rGradient (GetGradient(eType));
399cdf0e10cSrcweir return rGradient.mnSaturationOverride;
400cdf0e10cSrcweir }
401cdf0e10cSrcweir
402cdf0e10cSrcweir
403cdf0e10cSrcweir
404cdf0e10cSrcweir
GetGradientBrightnessOverride(const GradientColorType eType)405cdf0e10cSrcweir sal_Int32 Theme::GetGradientBrightnessOverride (const GradientColorType eType)
406cdf0e10cSrcweir {
407cdf0e10cSrcweir GradientDescriptor& rGradient (GetGradient(eType));
408cdf0e10cSrcweir return rGradient.mnBrightnessOverride;
409cdf0e10cSrcweir }
410cdf0e10cSrcweir
411cdf0e10cSrcweir
412cdf0e10cSrcweir
413cdf0e10cSrcweir
SetGradientSaturationOverride(const GradientColorType eType,const sal_Int32 nValue)414cdf0e10cSrcweir void Theme::SetGradientSaturationOverride (const GradientColorType eType, const sal_Int32 nValue)
415cdf0e10cSrcweir {
416cdf0e10cSrcweir GradientDescriptor& rGradient (GetGradient(eType));
417cdf0e10cSrcweir SetGradient(
418cdf0e10cSrcweir eType,
419cdf0e10cSrcweir rGradient.maBaseColor,
420cdf0e10cSrcweir nValue,
421cdf0e10cSrcweir rGradient.mnBrightnessOverride,
422cdf0e10cSrcweir rGradient.mnFillOffset1,
423cdf0e10cSrcweir rGradient.mnFillOffset2,
424cdf0e10cSrcweir rGradient.mnBorderOffset1,
425cdf0e10cSrcweir rGradient.mnBorderOffset2);
426cdf0e10cSrcweir }
427cdf0e10cSrcweir
428cdf0e10cSrcweir
429cdf0e10cSrcweir
430cdf0e10cSrcweir
SetGradientBrightnessOverride(const GradientColorType eType,const sal_Int32 nValue)431cdf0e10cSrcweir void Theme::SetGradientBrightnessOverride (const GradientColorType eType, const sal_Int32 nValue)
432cdf0e10cSrcweir {
433cdf0e10cSrcweir GradientDescriptor& rGradient (GetGradient(eType));
434cdf0e10cSrcweir SetGradient(eType,
435cdf0e10cSrcweir rGradient.maBaseColor,
436cdf0e10cSrcweir rGradient.mnSaturationOverride,
437cdf0e10cSrcweir nValue,
438cdf0e10cSrcweir rGradient.mnFillOffset1,
439cdf0e10cSrcweir rGradient.mnFillOffset2,
440cdf0e10cSrcweir rGradient.mnBorderOffset1,
441cdf0e10cSrcweir rGradient.mnBorderOffset2);
442cdf0e10cSrcweir }
443cdf0e10cSrcweir
444cdf0e10cSrcweir
445cdf0e10cSrcweir
446cdf0e10cSrcweir
GetIcon(const IconType eType)447cdf0e10cSrcweir const BitmapEx& Theme::GetIcon (const IconType eType)
448cdf0e10cSrcweir {
449cdf0e10cSrcweir if (eType>=0 && size_t(eType)<maIcons.size())
450cdf0e10cSrcweir return maIcons[eType];
451cdf0e10cSrcweir else
452cdf0e10cSrcweir {
453cdf0e10cSrcweir OSL_ASSERT(eType>=0 && size_t(eType)<maIcons.size());
454cdf0e10cSrcweir return maIcons[0];
455cdf0e10cSrcweir }
456cdf0e10cSrcweir }
457cdf0e10cSrcweir
458cdf0e10cSrcweir
459cdf0e10cSrcweir
460cdf0e10cSrcweir
GetIntegerValue(const IntegerValueType eType) const461cdf0e10cSrcweir sal_Int32 Theme::GetIntegerValue (const IntegerValueType eType) const
462cdf0e10cSrcweir {
463cdf0e10cSrcweir if (eType>=0 && size_t(eType)<maIntegerValues.size())
464cdf0e10cSrcweir return maIntegerValues[eType];
465cdf0e10cSrcweir else
466cdf0e10cSrcweir {
467cdf0e10cSrcweir OSL_ASSERT(eType>=0 && size_t(eType)<maIntegerValues.size());
468cdf0e10cSrcweir return 0;
469cdf0e10cSrcweir }
470cdf0e10cSrcweir }
471cdf0e10cSrcweir
472cdf0e10cSrcweir
473cdf0e10cSrcweir
474cdf0e10cSrcweir
SetIntegerValue(const IntegerValueType eType,const sal_Int32 nValue)475cdf0e10cSrcweir void Theme::SetIntegerValue (const IntegerValueType eType, const sal_Int32 nValue)
476cdf0e10cSrcweir {
477cdf0e10cSrcweir if (eType>=0 && size_t(eType)<maIntegerValues.size())
478cdf0e10cSrcweir maIntegerValues[eType] = nValue;
479cdf0e10cSrcweir else
480cdf0e10cSrcweir {
481cdf0e10cSrcweir OSL_ASSERT(eType>=0 && size_t(eType)<maIntegerValues.size());
482cdf0e10cSrcweir }
483cdf0e10cSrcweir }
484cdf0e10cSrcweir
485cdf0e10cSrcweir
486cdf0e10cSrcweir
487cdf0e10cSrcweir
GetString(const StringType eType) const488cdf0e10cSrcweir ::rtl::OUString Theme::GetString (const StringType eType) const
489cdf0e10cSrcweir {
490cdf0e10cSrcweir if (eType>=0 && size_t(eType)<maStrings.size())
491cdf0e10cSrcweir return maStrings[eType];
492cdf0e10cSrcweir else
493cdf0e10cSrcweir {
494cdf0e10cSrcweir OSL_ASSERT(eType>=0 && size_t(eType)<maStrings.size());
495cdf0e10cSrcweir return ::rtl::OUString();
496cdf0e10cSrcweir }
497cdf0e10cSrcweir }
498cdf0e10cSrcweir
499cdf0e10cSrcweir
500cdf0e10cSrcweir
501cdf0e10cSrcweir
GetGradient(const GradientColorType eType)502cdf0e10cSrcweir Theme::GradientDescriptor& Theme::GetGradient (const GradientColorType eType)
503cdf0e10cSrcweir {
504cdf0e10cSrcweir if (eType>=0 && size_t(eType)<maGradients.size())
505cdf0e10cSrcweir return maGradients[eType];
506cdf0e10cSrcweir else
507cdf0e10cSrcweir {
508cdf0e10cSrcweir OSL_ASSERT(eType>=0 && size_t(eType)<maGradients.size());
509cdf0e10cSrcweir return maGradients[0];
510cdf0e10cSrcweir }
511cdf0e10cSrcweir }
512cdf0e10cSrcweir
513cdf0e10cSrcweir
514cdf0e10cSrcweir
515cdf0e10cSrcweir
InitializeIcon(const IconType eType,sal_uInt16 nResourceId)516cdf0e10cSrcweir void Theme::InitializeIcon (const IconType eType, sal_uInt16 nResourceId)
517cdf0e10cSrcweir {
518cdf0e10cSrcweir if (eType>=0 && size_t(eType)<maIcons.size())
519cdf0e10cSrcweir {
520cdf0e10cSrcweir const BitmapEx aIcon (Image(SdResId(nResourceId)).GetBitmapEx());
521cdf0e10cSrcweir maIcons[eType] = aIcon;
522cdf0e10cSrcweir }
523cdf0e10cSrcweir else
524cdf0e10cSrcweir {
525cdf0e10cSrcweir OSL_ASSERT(eType>=0 && size_t(eType)<maIcons.size());
526cdf0e10cSrcweir }
527cdf0e10cSrcweir }
528cdf0e10cSrcweir
529cdf0e10cSrcweir
530cdf0e10cSrcweir
531cdf0e10cSrcweir
532cdf0e10cSrcweir } } } // end of namespace ::sd::slidesorter::view
533