xref: /aoo42x/main/sfx2/source/sidebar/Theme.cxx (revision ff12d537)
1*ff12d537SAndre Fischer /**************************************************************
2*ff12d537SAndre Fischer  *
3*ff12d537SAndre Fischer  * Licensed to the Apache Software Foundation (ASF) under one
4*ff12d537SAndre Fischer  * or more contributor license agreements.  See the NOTICE file
5*ff12d537SAndre Fischer  * distributed with this work for additional information
6*ff12d537SAndre Fischer  * regarding copyright ownership.  The ASF licenses this file
7*ff12d537SAndre Fischer  * to you under the Apache License, Version 2.0 (the
8*ff12d537SAndre Fischer  * "License"); you may not use this file except in compliance
9*ff12d537SAndre Fischer  * with the License.  You may obtain a copy of the License at
10*ff12d537SAndre Fischer  *
11*ff12d537SAndre Fischer  *   http://www.apache.org/licenses/LICENSE-2.0
12*ff12d537SAndre Fischer  *
13*ff12d537SAndre Fischer  * Unless required by applicable law or agreed to in writing,
14*ff12d537SAndre Fischer  * software distributed under the License is distributed on an
15*ff12d537SAndre Fischer  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*ff12d537SAndre Fischer  * KIND, either express or implied.  See the License for the
17*ff12d537SAndre Fischer  * specific language governing permissions and limitations
18*ff12d537SAndre Fischer  * under the License.
19*ff12d537SAndre Fischer  *
20*ff12d537SAndre Fischer  *************************************************************/
21*ff12d537SAndre Fischer 
22*ff12d537SAndre Fischer #include "precompiled_sfx2.hxx"
23*ff12d537SAndre Fischer 
24*ff12d537SAndre Fischer #include "Theme.hxx"
25*ff12d537SAndre Fischer #include "Paint.hxx"
26*ff12d537SAndre Fischer #include "SidebarResource.hxx"
27*ff12d537SAndre Fischer 
28*ff12d537SAndre Fischer #include <tools/SvBorder.hxx>
29*ff12d537SAndre Fischer #include <tools/rc.hxx>
30*ff12d537SAndre Fischer #include <vcl/svapp.hxx>
31*ff12d537SAndre Fischer 
32*ff12d537SAndre Fischer 
33*ff12d537SAndre Fischer namespace sfx2 { namespace sidebar {
34*ff12d537SAndre Fischer 
35*ff12d537SAndre Fischer void InitializeTheme1 (Theme::Data& rData);
36*ff12d537SAndre Fischer 
37*ff12d537SAndre Fischer class Theme::Data
38*ff12d537SAndre Fischer {
39*ff12d537SAndre Fischer public:
40*ff12d537SAndre Fischer     Data (void) {}
41*ff12d537SAndre Fischer     void Initialize (void) { if ( ! mbIsInitialized) {InitializeTheme1(*this);mbIsInitialized=true;} }
42*ff12d537SAndre Fischer 
43*ff12d537SAndre Fischer     Paint maDeckBackground;
44*ff12d537SAndre Fischer     Paint maDeckTitleBackground;
45*ff12d537SAndre Fischer     SvBorder maDeckPadding;
46*ff12d537SAndre Fischer     sal_Int32 mnDeckBorderSize;
47*ff12d537SAndre Fischer     Color maDeckTitleFontColor;
48*ff12d537SAndre Fischer     sal_Int32 mnDeckTitleBarHeight;
49*ff12d537SAndre Fischer 
50*ff12d537SAndre Fischer     Paint maPanelBackground;
51*ff12d537SAndre Fischer     Paint maPanelTitleBackground;
52*ff12d537SAndre Fischer     Color maPanelTitleFontColor;
53*ff12d537SAndre Fischer     sal_Int32 mnPanelTitleBarHeight;
54*ff12d537SAndre Fischer 
55*ff12d537SAndre Fischer     Paint maTabBarBackground;
56*ff12d537SAndre Fischer     SvBorder maTabBarPadding;
57*ff12d537SAndre Fischer 
58*ff12d537SAndre Fischer     sal_Int32 mnTabMenuPadding;
59*ff12d537SAndre Fischer     Color maTabMenuSeparatorColor;
60*ff12d537SAndre Fischer     sal_Int32 mnTabMenuSeparatorPadding;
61*ff12d537SAndre Fischer 
62*ff12d537SAndre Fischer     Size maTabItemSize;
63*ff12d537SAndre Fischer     Color maTabItemBorderColor;
64*ff12d537SAndre Fischer     Paint maTabItemBackgroundPaint;
65*ff12d537SAndre Fischer 
66*ff12d537SAndre Fischer     Paint maHorizontalBorderPaint;
67*ff12d537SAndre Fischer     Paint maVerticalBorderPaint;
68*ff12d537SAndre Fischer 
69*ff12d537SAndre Fischer     Image maGripImage;
70*ff12d537SAndre Fischer     Image maExpandImage;
71*ff12d537SAndre Fischer     Image maCollapseImage;
72*ff12d537SAndre Fischer     Image maMenuImage;
73*ff12d537SAndre Fischer 
74*ff12d537SAndre Fischer     bool mbIsHighContrastMode;
75*ff12d537SAndre Fischer };
76*ff12d537SAndre Fischer 
77*ff12d537SAndre Fischer 
78*ff12d537SAndre Fischer bool Theme::mbIsInitialized (false);
79*ff12d537SAndre Fischer 
80*ff12d537SAndre Fischer 
81*ff12d537SAndre Fischer 
82*ff12d537SAndre Fischer Theme::Data& Theme::GetCurrentTheme (void)
83*ff12d537SAndre Fischer {
84*ff12d537SAndre Fischer     static Theme::Data maData;
85*ff12d537SAndre Fischer     maData.Initialize();
86*ff12d537SAndre Fischer     return maData;
87*ff12d537SAndre Fischer }
88*ff12d537SAndre Fischer 
89*ff12d537SAndre Fischer Paint& Theme::GetDeckBackground (void)
90*ff12d537SAndre Fischer {
91*ff12d537SAndre Fischer     return GetCurrentTheme().maDeckBackground;
92*ff12d537SAndre Fischer }
93*ff12d537SAndre Fischer 
94*ff12d537SAndre Fischer 
95*ff12d537SAndre Fischer 
96*ff12d537SAndre Fischer 
97*ff12d537SAndre Fischer Paint& Theme::GetDeckTitleBackground (void)
98*ff12d537SAndre Fischer {
99*ff12d537SAndre Fischer     return GetCurrentTheme().maDeckTitleBackground;
100*ff12d537SAndre Fischer }
101*ff12d537SAndre Fischer 
102*ff12d537SAndre Fischer 
103*ff12d537SAndre Fischer 
104*ff12d537SAndre Fischer 
105*ff12d537SAndre Fischer SvBorder& Theme::GetDeckPadding (void)
106*ff12d537SAndre Fischer {
107*ff12d537SAndre Fischer     return GetCurrentTheme().maDeckPadding;
108*ff12d537SAndre Fischer }
109*ff12d537SAndre Fischer 
110*ff12d537SAndre Fischer 
111*ff12d537SAndre Fischer 
112*ff12d537SAndre Fischer 
113*ff12d537SAndre Fischer Color Theme::GetDeckTitleFontColor (void)
114*ff12d537SAndre Fischer {
115*ff12d537SAndre Fischer     return GetCurrentTheme().maDeckTitleFontColor;
116*ff12d537SAndre Fischer }
117*ff12d537SAndre Fischer 
118*ff12d537SAndre Fischer 
119*ff12d537SAndre Fischer 
120*ff12d537SAndre Fischer 
121*ff12d537SAndre Fischer sal_Int32 Theme::GetDeckTitleBarHeight (void)
122*ff12d537SAndre Fischer {
123*ff12d537SAndre Fischer     return GetCurrentTheme().mnDeckTitleBarHeight;
124*ff12d537SAndre Fischer }
125*ff12d537SAndre Fischer 
126*ff12d537SAndre Fischer 
127*ff12d537SAndre Fischer 
128*ff12d537SAndre Fischer 
129*ff12d537SAndre Fischer Paint& Theme::GetPanelBackground (void)
130*ff12d537SAndre Fischer {
131*ff12d537SAndre Fischer     return GetCurrentTheme().maPanelBackground;
132*ff12d537SAndre Fischer }
133*ff12d537SAndre Fischer 
134*ff12d537SAndre Fischer 
135*ff12d537SAndre Fischer 
136*ff12d537SAndre Fischer 
137*ff12d537SAndre Fischer Paint& Theme::GetPanelTitleBackground (void)
138*ff12d537SAndre Fischer {
139*ff12d537SAndre Fischer     return GetCurrentTheme().maPanelTitleBackground;
140*ff12d537SAndre Fischer }
141*ff12d537SAndre Fischer 
142*ff12d537SAndre Fischer 
143*ff12d537SAndre Fischer 
144*ff12d537SAndre Fischer 
145*ff12d537SAndre Fischer Color Theme::GetPanelTitleFontColor (void)
146*ff12d537SAndre Fischer {
147*ff12d537SAndre Fischer     return GetCurrentTheme().maPanelTitleFontColor;
148*ff12d537SAndre Fischer }
149*ff12d537SAndre Fischer 
150*ff12d537SAndre Fischer 
151*ff12d537SAndre Fischer 
152*ff12d537SAndre Fischer 
153*ff12d537SAndre Fischer sal_Int32 Theme::GetPanelTitleBarHeight (void)
154*ff12d537SAndre Fischer {
155*ff12d537SAndre Fischer     return GetCurrentTheme().mnPanelTitleBarHeight;
156*ff12d537SAndre Fischer }
157*ff12d537SAndre Fischer 
158*ff12d537SAndre Fischer 
159*ff12d537SAndre Fischer 
160*ff12d537SAndre Fischer 
161*ff12d537SAndre Fischer Paint& Theme::GetTabBarBackground (void)
162*ff12d537SAndre Fischer {
163*ff12d537SAndre Fischer     return GetCurrentTheme().maTabBarBackground;
164*ff12d537SAndre Fischer }
165*ff12d537SAndre Fischer 
166*ff12d537SAndre Fischer 
167*ff12d537SAndre Fischer 
168*ff12d537SAndre Fischer 
169*ff12d537SAndre Fischer SvBorder& Theme::GetTabBarPadding (void)
170*ff12d537SAndre Fischer {
171*ff12d537SAndre Fischer     return GetCurrentTheme().maTabBarPadding;
172*ff12d537SAndre Fischer }
173*ff12d537SAndre Fischer 
174*ff12d537SAndre Fischer 
175*ff12d537SAndre Fischer 
176*ff12d537SAndre Fischer 
177*ff12d537SAndre Fischer sal_Int32 Theme::GetTabMenuPadding (void)
178*ff12d537SAndre Fischer {
179*ff12d537SAndre Fischer     return GetCurrentTheme().mnTabMenuPadding;
180*ff12d537SAndre Fischer }
181*ff12d537SAndre Fischer 
182*ff12d537SAndre Fischer 
183*ff12d537SAndre Fischer 
184*ff12d537SAndre Fischer 
185*ff12d537SAndre Fischer Color Theme::GetTabMenuSeparatorColor (void)
186*ff12d537SAndre Fischer {
187*ff12d537SAndre Fischer     return GetCurrentTheme().maTabMenuSeparatorColor;
188*ff12d537SAndre Fischer }
189*ff12d537SAndre Fischer 
190*ff12d537SAndre Fischer 
191*ff12d537SAndre Fischer 
192*ff12d537SAndre Fischer 
193*ff12d537SAndre Fischer sal_Int32 Theme::GetTabMenuSeparatorPadding (void)
194*ff12d537SAndre Fischer {
195*ff12d537SAndre Fischer     return GetCurrentTheme().mnTabMenuSeparatorPadding;
196*ff12d537SAndre Fischer }
197*ff12d537SAndre Fischer 
198*ff12d537SAndre Fischer 
199*ff12d537SAndre Fischer 
200*ff12d537SAndre Fischer 
201*ff12d537SAndre Fischer Size Theme::GetTabItemSize (void)
202*ff12d537SAndre Fischer {
203*ff12d537SAndre Fischer     return GetCurrentTheme().maTabItemSize;
204*ff12d537SAndre Fischer }
205*ff12d537SAndre Fischer 
206*ff12d537SAndre Fischer 
207*ff12d537SAndre Fischer 
208*ff12d537SAndre Fischer 
209*ff12d537SAndre Fischer Color Theme::GetTabItemBorderColor (void)
210*ff12d537SAndre Fischer {
211*ff12d537SAndre Fischer     return GetCurrentTheme().maTabItemBorderColor;
212*ff12d537SAndre Fischer }
213*ff12d537SAndre Fischer 
214*ff12d537SAndre Fischer 
215*ff12d537SAndre Fischer 
216*ff12d537SAndre Fischer 
217*ff12d537SAndre Fischer Paint& Theme::GetTabItemBackgroundPaint (void)
218*ff12d537SAndre Fischer {
219*ff12d537SAndre Fischer     return GetCurrentTheme().maTabItemBackgroundPaint;
220*ff12d537SAndre Fischer }
221*ff12d537SAndre Fischer 
222*ff12d537SAndre Fischer 
223*ff12d537SAndre Fischer 
224*ff12d537SAndre Fischer 
225*ff12d537SAndre Fischer Paint& Theme::GetHorizontalBorderPaint (void)
226*ff12d537SAndre Fischer {
227*ff12d537SAndre Fischer     return GetCurrentTheme().maHorizontalBorderPaint;
228*ff12d537SAndre Fischer }
229*ff12d537SAndre Fischer 
230*ff12d537SAndre Fischer 
231*ff12d537SAndre Fischer 
232*ff12d537SAndre Fischer 
233*ff12d537SAndre Fischer Paint& Theme::GetVerticalBorderPaint (void)
234*ff12d537SAndre Fischer {
235*ff12d537SAndre Fischer     return GetCurrentTheme().maVerticalBorderPaint;
236*ff12d537SAndre Fischer }
237*ff12d537SAndre Fischer 
238*ff12d537SAndre Fischer 
239*ff12d537SAndre Fischer 
240*ff12d537SAndre Fischer 
241*ff12d537SAndre Fischer sal_Int32 Theme::GetBorderSize (void)
242*ff12d537SAndre Fischer {
243*ff12d537SAndre Fischer     return GetCurrentTheme().mnDeckBorderSize;
244*ff12d537SAndre Fischer }
245*ff12d537SAndre Fischer 
246*ff12d537SAndre Fischer 
247*ff12d537SAndre Fischer 
248*ff12d537SAndre Fischer 
249*ff12d537SAndre Fischer Image Theme::GetGripImage (void)
250*ff12d537SAndre Fischer {
251*ff12d537SAndre Fischer     return GetCurrentTheme().maGripImage;
252*ff12d537SAndre Fischer }
253*ff12d537SAndre Fischer 
254*ff12d537SAndre Fischer 
255*ff12d537SAndre Fischer 
256*ff12d537SAndre Fischer 
257*ff12d537SAndre Fischer Image Theme::GetExpandImage (void)
258*ff12d537SAndre Fischer {
259*ff12d537SAndre Fischer     return GetCurrentTheme().maExpandImage;
260*ff12d537SAndre Fischer }
261*ff12d537SAndre Fischer 
262*ff12d537SAndre Fischer 
263*ff12d537SAndre Fischer 
264*ff12d537SAndre Fischer 
265*ff12d537SAndre Fischer Image Theme::GetCollapseImage (void)
266*ff12d537SAndre Fischer {
267*ff12d537SAndre Fischer     return GetCurrentTheme().maCollapseImage;
268*ff12d537SAndre Fischer }
269*ff12d537SAndre Fischer 
270*ff12d537SAndre Fischer 
271*ff12d537SAndre Fischer 
272*ff12d537SAndre Fischer 
273*ff12d537SAndre Fischer Image Theme::GetMenuImage (void)
274*ff12d537SAndre Fischer {
275*ff12d537SAndre Fischer     return GetCurrentTheme().maMenuImage;
276*ff12d537SAndre Fischer }
277*ff12d537SAndre Fischer 
278*ff12d537SAndre Fischer 
279*ff12d537SAndre Fischer 
280*ff12d537SAndre Fischer 
281*ff12d537SAndre Fischer bool Theme::IsHighContrastMode (void)
282*ff12d537SAndre Fischer {
283*ff12d537SAndre Fischer     return GetCurrentTheme().mbIsHighContrastMode;
284*ff12d537SAndre Fischer }
285*ff12d537SAndre Fischer 
286*ff12d537SAndre Fischer 
287*ff12d537SAndre Fischer 
288*ff12d537SAndre Fischer 
289*ff12d537SAndre Fischer void Theme::HandleDataChange (void)
290*ff12d537SAndre Fischer {
291*ff12d537SAndre Fischer     mbIsInitialized = false;
292*ff12d537SAndre Fischer }
293*ff12d537SAndre Fischer 
294*ff12d537SAndre Fischer 
295*ff12d537SAndre Fischer 
296*ff12d537SAndre Fischer 
297*ff12d537SAndre Fischer void InitializeTheme1 (Theme::Data& rData)
298*ff12d537SAndre Fischer {
299*ff12d537SAndre Fischer     SidebarResource aLocalResource;
300*ff12d537SAndre Fischer 
301*ff12d537SAndre Fischer     rData.mbIsHighContrastMode = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
302*ff12d537SAndre Fischer 
303*ff12d537SAndre Fischer     rData.maDeckBackground.Set(Paint(Color(
304*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x000000 : 0xf0f0f0)));
305*ff12d537SAndre Fischer     rData.maDeckTitleBackground.Set(Paint(Color(
306*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x000000 :0xf0f0f0)));
307*ff12d537SAndre Fischer     rData.maDeckPadding = SvBorder(2,2,2,2);
308*ff12d537SAndre Fischer     rData.mnDeckBorderSize = 1;
309*ff12d537SAndre Fischer     rData.maDeckTitleFontColor.SetColor(
310*ff12d537SAndre Fischer         rData.mbIsHighContrastMode ? 0x00ff00 : 0x262626);
311*ff12d537SAndre Fischer     rData.mnDeckTitleBarHeight = 26;
312*ff12d537SAndre Fischer 
313*ff12d537SAndre Fischer     rData.maPanelBackground.Set(Paint(Color(
314*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x000000 : 0xffffff)));
315*ff12d537SAndre Fischer     rData.maPanelTitleBackground.Set(Paint(Color(
316*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x000000 : 0xb2b2b2)));
317*ff12d537SAndre Fischer     rData.maPanelTitleFontColor.SetColor(
318*ff12d537SAndre Fischer         rData.mbIsHighContrastMode ? 0x00ff00 : 0x262626);
319*ff12d537SAndre Fischer     rData.mnPanelTitleBarHeight = 26;
320*ff12d537SAndre Fischer 
321*ff12d537SAndre Fischer     rData.maTabBarBackground.Set(Paint(Color(
322*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x000000 : 0xf0f0f0)));
323*ff12d537SAndre Fischer     rData.maTabBarPadding = SvBorder(2,2,2,2);
324*ff12d537SAndre Fischer 
325*ff12d537SAndre Fischer     rData.mnTabMenuPadding = 6;
326*ff12d537SAndre Fischer     rData.maTabMenuSeparatorColor.SetColor(
327*ff12d537SAndre Fischer         rData.mbIsHighContrastMode ? 0x00ff00 : 0xbfbfbf);
328*ff12d537SAndre Fischer     rData.mnTabMenuSeparatorPadding = 7;
329*ff12d537SAndre Fischer 
330*ff12d537SAndre Fischer     rData.maTabItemSize = Size(32,32);
331*ff12d537SAndre Fischer     rData.maTabItemBorderColor.SetColor(
332*ff12d537SAndre Fischer         rData.mbIsHighContrastMode ? 0x00ff00 : 0xbfbfbf);
333*ff12d537SAndre Fischer     rData.maTabItemBackgroundPaint.Set(Paint(Color(
334*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x000000 : 0xffffff)));
335*ff12d537SAndre Fischer 
336*ff12d537SAndre Fischer     rData.maHorizontalBorderPaint.Set(Paint(Color(
337*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x00ff000 : 0xd9d9d9)));
338*ff12d537SAndre Fischer     rData.maVerticalBorderPaint.Set(Paint(Color(
339*ff12d537SAndre Fischer                 rData.mbIsHighContrastMode ? 0x00ff000 : 0xd9d9d9)));
340*ff12d537SAndre Fischer 
341*ff12d537SAndre Fischer     rData.maGripImage = Image(SfxResId(
342*ff12d537SAndre Fischer             rData.mbIsHighContrastMode
343*ff12d537SAndre Fischer                 ? IMAGE_SIDEBAR_GRIP_HC
344*ff12d537SAndre Fischer                 : IMAGE_SIDEBAR_GRIP));
345*ff12d537SAndre Fischer     rData.maExpandImage = Image(SfxResId(
346*ff12d537SAndre Fischer             rData.mbIsHighContrastMode
347*ff12d537SAndre Fischer                 ? IMAGE_SIDEBAR_PLUS_HC
348*ff12d537SAndre Fischer                 : IMAGE_SIDEBAR_PLUS));
349*ff12d537SAndre Fischer     rData.maCollapseImage = Image(SfxResId(
350*ff12d537SAndre Fischer             rData.mbIsHighContrastMode
351*ff12d537SAndre Fischer                 ? IMAGE_SIDEBAR_MINUS_HC
352*ff12d537SAndre Fischer                 : IMAGE_SIDEBAR_MINUS));
353*ff12d537SAndre Fischer     rData.maMenuImage = Image(SfxResId(
354*ff12d537SAndre Fischer             rData.mbIsHighContrastMode
355*ff12d537SAndre Fischer                 ? IMAGE_SIDEBAR_MENU_HC
356*ff12d537SAndre Fischer                 : IMAGE_SIDEBAR_MENU));
357*ff12d537SAndre Fischer }
358*ff12d537SAndre Fischer 
359*ff12d537SAndre Fischer } } // end of namespace sfx2::sidebar
360