bump product version to 6.3.0.0.beta1
[LibreOffice.git] / svtools / source / config / optionsdrawinglayer.cxx
blob304c18daca6e81570ab312d2e55e8b82d9135e6b
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 <svtools/optionsdrawinglayer.hxx>
21 #include <unotools/configmgr.hxx>
22 #include <unotools/configitem.hxx>
23 #include <tools/debug.hxx>
24 #include <com/sun/star/uno/Any.hxx>
25 #include <com/sun/star/uno/Sequence.hxx>
26 #include <vcl/svapp.hxx>
27 #include <vcl/outdev.hxx>
28 #include <vcl/settings.hxx>
29 #include <rtl/instance.hxx>
31 // namespaces
33 using namespace ::utl ;
34 using namespace ::osl ;
35 using namespace ::com::sun::star::uno ;
37 #define ROOTNODE_START "Office.Common/Drawinglayer"
38 #define DEFAULT_OVERLAYBUFFER true
39 #define DEFAULT_PAINTBUFFER true
40 #define DEFAULT_STRIPE_COLOR_A Color(0)
41 #define DEFAULT_STRIPE_COLOR_B Color(16581375)
42 #define DEFAULT_STRIPE_LENGTH 4
44 // #i73602#
45 // #i74769#, #i75172# : Change default for Calc and Writer to True
46 #define DEFAULT_OVERLAYBUFFER_CALC true
47 #define DEFAULT_OVERLAYBUFFER_WRITER true
48 #define DEFAULT_OVERLAYBUFFER_DRAWIMPRESS true
50 // #i74769#, #i75172#
51 #define DEFAULT_PAINTBUFFER_CALC true
52 #define DEFAULT_PAINTBUFFER_WRITER true
53 #define DEFAULT_PAINTBUFFER_DRAWIMPRESS true
55 // #i4219#
56 #define DEFAULT_MAXIMUMPAPERWIDTH 600
57 #define DEFAULT_MAXIMUMPAPERHEIGHT 600
58 #define DEFAULT_MAXIMUMPAPERLEFTMARGIN 9999
59 #define DEFAULT_MAXIMUMPAPERRIGHTMARGIN 9999
60 #define DEFAULT_MAXIMUMPAPERTOPMARGIN 9999
61 #define DEFAULT_MAXIMUMPAPERBOTTOMMARGIN 9999
63 // primitives
64 #define DEFAULT_ANTIALIASING true
65 #define DEFAULT_SNAPHORVERLINESTODISCRETE true
66 #define DEFAULT_SOLIDDRAGCREATE true
67 #define DEFAULT_RENDERDECORATEDTEXTDIRECT true
68 #define DEFAULT_RENDERSIMPLETEXTDIRECT true
69 #define DEFAULT_QUADRATIC3DRENDERLIMIT 1000000
70 #define DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT 45000
72 // #i97672# selection settings
73 #define DEFAULT_TRANSPARENTSELECTION true
74 #define DEFAULT_TRANSPARENTSELECTIONPERCENT 75
75 #define DEFAULT_SELECTIONMAXIMUMLUMINANCEPERCENT 70
77 #define PROPERTYNAME_OVERLAYBUFFER OUString("OverlayBuffer" )
78 #define PROPERTYNAME_PAINTBUFFER OUString("PaintBuffer" )
79 #define PROPERTYNAME_STRIPE_COLOR_A OUString("StripeColorA" )
80 #define PROPERTYNAME_STRIPE_COLOR_B OUString("StripeColorB" )
81 #define PROPERTYNAME_STRIPE_LENGTH OUString("StripeLength" )
83 // #i73602#
84 #define PROPERTYNAME_OVERLAYBUFFER_CALC OUString("OverlayBuffer_Calc")
85 #define PROPERTYNAME_OVERLAYBUFFER_WRITER OUString("OverlayBuffer_Writer")
86 #define PROPERTYNAME_OVERLAYBUFFER_DRAWIMPRESS OUString("OverlayBuffer_DrawImpress")
88 // #i74769#, #i75172#
89 #define PROPERTYNAME_PAINTBUFFER_CALC OUString("PaintBuffer_Calc")
90 #define PROPERTYNAME_PAINTBUFFER_WRITER OUString("PaintBuffer_Writer")
91 #define PROPERTYNAME_PAINTBUFFER_DRAWIMPRESS OUString("PaintBuffer_DrawImpress")
93 // #i4219#
94 #define PROPERTYNAME_MAXIMUMPAPERWIDTH OUString("MaximumPaperWidth")
95 #define PROPERTYNAME_MAXIMUMPAPERHEIGHT OUString("MaximumPaperHeight")
96 #define PROPERTYNAME_MAXIMUMPAPERLEFTMARGIN OUString("MaximumPaperLeftMargin")
97 #define PROPERTYNAME_MAXIMUMPAPERRIGHTMARGIN OUString("MaximumPaperRightMargin")
98 #define PROPERTYNAME_MAXIMUMPAPERTOPMARGIN OUString("MaximumPaperTopMargin")
99 #define PROPERTYNAME_MAXIMUMPAPERBOTTOMMARGIN OUString("MaximumPaperBottomMargin")
101 // primitives
102 #define PROPERTYNAME_ANTIALIASING OUString("AntiAliasing")
103 #define PROPERTYNAME_SNAPHORVERLINESTODISCRETE OUString("SnapHorVerLinesToDiscrete")
104 #define PROPERTYNAME_SOLIDDRAGCREATE OUString("SolidDragCreate")
105 #define PROPERTYNAME_RENDERDECORATEDTEXTDIRECT OUString("RenderDecoratedTextDirect")
106 #define PROPERTYNAME_RENDERSIMPLETEXTDIRECT OUString("RenderSimpleTextDirect")
107 #define PROPERTYNAME_QUADRATIC3DRENDERLIMIT OUString("Quadratic3DRenderLimit")
108 #define PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT OUString("QuadraticFormControlRenderLimit")
110 // #i97672# selection settings
111 #define PROPERTYNAME_TRANSPARENTSELECTION OUString("TransparentSelection")
112 #define PROPERTYNAME_TRANSPARENTSELECTIONPERCENT OUString("TransparentSelectionPercent")
113 #define PROPERTYNAME_SELECTIONMAXIMUMLUMINANCEPERCENT OUString("SelectionMaximumLuminancePercent")
115 #define PROPERTYHANDLE_OVERLAYBUFFER 0
116 #define PROPERTYHANDLE_PAINTBUFFER 1
117 #define PROPERTYHANDLE_STRIPE_COLOR_A 2
118 #define PROPERTYHANDLE_STRIPE_COLOR_B 3
119 #define PROPERTYHANDLE_STRIPE_LENGTH 4
121 // #i73602#
122 #define PROPERTYHANDLE_OVERLAYBUFFER_CALC 5
123 #define PROPERTYHANDLE_OVERLAYBUFFER_WRITER 6
124 #define PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS 7
126 // #i74769#, #i75172#
127 #define PROPERTYHANDLE_PAINTBUFFER_CALC 8
128 #define PROPERTYHANDLE_PAINTBUFFER_WRITER 9
129 #define PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS 10
131 // #i4219#
132 #define PROPERTYHANDLE_MAXIMUMPAPERWIDTH 11
133 #define PROPERTYHANDLE_MAXIMUMPAPERHEIGHT 12
134 #define PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN 13
135 #define PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN 14
136 #define PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN 15
137 #define PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN 16
139 // primitives
140 #define PROPERTYHANDLE_ANTIALIASING 17
141 #define PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE 18
142 #define PROPERTYHANDLE_SOLIDDRAGCREATE 19
143 #define PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT 20
144 #define PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT 21
145 #define PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT 22
146 #define PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT 23
148 // #i97672# selection settings
149 #define PROPERTYHANDLE_TRANSPARENTSELECTION 24
150 #define PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT 25
151 #define PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT 26
153 #define PROPERTYCOUNT 27
155 class SvtOptionsDrawinglayer_Impl : public ConfigItem
157 public:
158 SvtOptionsDrawinglayer_Impl();
159 ~SvtOptionsDrawinglayer_Impl() override;
161 virtual void Notify( const css::uno::Sequence<OUString>& aPropertyNames) override;
163 bool IsOverlayBuffer() const { return m_bOverlayBuffer;}
164 bool IsPaintBuffer() const { return m_bPaintBuffer;}
165 const Color& GetStripeColorA() const { return m_bStripeColorA;}
166 const Color& GetStripeColorB() const { return m_bStripeColorB;}
167 sal_uInt16 GetStripeLength() const { return m_nStripeLength;}
169 // #i73602#
170 bool IsOverlayBuffer_Calc() const { return m_bOverlayBuffer_Calc;}
171 bool IsOverlayBuffer_Writer() const { return m_bOverlayBuffer_Writer;}
172 bool IsOverlayBuffer_DrawImpress() const { return m_bOverlayBuffer_DrawImpress;}
174 // #i74769#, #i75172#
175 bool IsPaintBuffer_Calc() const { return m_bPaintBuffer_Calc;}
176 bool IsPaintBuffer_Writer() const { return m_bPaintBuffer_Writer;}
177 bool IsPaintBuffer_DrawImpress() const { return m_bPaintBuffer_DrawImpress;}
179 // #i4219#
180 sal_uInt32 GetMaximumPaperWidth() const { return m_nMaximumPaperWidth;}
181 sal_uInt32 GetMaximumPaperHeight() const { return m_nMaximumPaperHeight;}
182 sal_uInt32 GetMaximumPaperLeftMargin() const { return m_nMaximumPaperLeftMargin;}
183 sal_uInt32 GetMaximumPaperRightMargin() const { return m_nMaximumPaperRightMargin;}
184 sal_uInt32 GetMaximumPaperTopMargin() const { return m_nMaximumPaperTopMargin;}
185 sal_uInt32 GetMaximumPaperBottomMargin() const { return m_nMaximumPaperBottomMargin;}
187 // helper
188 bool IsAAPossibleOnThisSystem() const;
190 // primitives
191 bool IsAntiAliasing() const { return m_bAntiAliasing;}
192 bool IsSnapHorVerLinesToDiscrete() const { return m_bSnapHorVerLinesToDiscrete;}
193 bool IsSolidDragCreate() const { return m_bSolidDragCreate;}
194 bool IsRenderDecoratedTextDirect() const { return m_bRenderDecoratedTextDirect;}
195 bool IsRenderSimpleTextDirect() const { return m_bRenderSimpleTextDirect;}
196 sal_uInt32 GetQuadratic3DRenderLimit() const { return m_nQuadratic3DRenderLimit;}
197 sal_uInt32 GetQuadraticFormControlRenderLimit() const { return m_nQuadraticFormControlRenderLimit;}
199 void SetAntiAliasing( bool bState );
201 // #i97672# selection settings
202 bool IsTransparentSelection() const { return m_bTransparentSelection;}
203 sal_uInt16 GetTransparentSelectionPercent() const { return m_nTransparentSelectionPercent;}
204 sal_uInt16 GetSelectionMaximumLuminancePercent() const { return m_nSelectionMaximumLuminancePercent;}
206 // private methods
208 private:
209 virtual void ImplCommit() final override;
211 static Sequence< OUString > impl_GetPropertyNames();
213 // private member
215 private:
217 bool m_bOverlayBuffer;
218 bool m_bPaintBuffer;
219 Color m_bStripeColorA;
220 Color m_bStripeColorB;
221 sal_uInt16 m_nStripeLength;
223 // #i73602#
224 bool m_bOverlayBuffer_Calc;
225 bool m_bOverlayBuffer_Writer;
226 bool m_bOverlayBuffer_DrawImpress;
228 // #i74769#, #i75172#
229 bool m_bPaintBuffer_Calc;
230 bool m_bPaintBuffer_Writer;
231 bool m_bPaintBuffer_DrawImpress;
233 // #i4219#
234 sal_uInt32 m_nMaximumPaperWidth;
235 sal_uInt32 m_nMaximumPaperHeight;
236 sal_uInt32 m_nMaximumPaperLeftMargin;
237 sal_uInt32 m_nMaximumPaperRightMargin;
238 sal_uInt32 m_nMaximumPaperTopMargin;
239 sal_uInt32 m_nMaximumPaperBottomMargin;
241 // primitives
242 bool m_bAntiAliasing;
243 bool m_bSnapHorVerLinesToDiscrete;
244 bool m_bSolidDragCreate;
245 bool m_bRenderDecoratedTextDirect;
246 bool m_bRenderSimpleTextDirect;
247 sal_uInt32 m_nQuadratic3DRenderLimit;
248 sal_uInt32 m_nQuadraticFormControlRenderLimit;
250 // #i97672# selection settings
251 sal_uInt16 m_nTransparentSelectionPercent;
252 sal_uInt16 m_nSelectionMaximumLuminancePercent;
253 bool m_bTransparentSelection;
255 // local values
256 bool m_bAllowAA : 1;
257 bool m_bAllowAAChecked : 1;
260 SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() :
261 ConfigItem( ROOTNODE_START ),
262 m_bOverlayBuffer( DEFAULT_OVERLAYBUFFER ),
263 m_bPaintBuffer( DEFAULT_PAINTBUFFER ),
264 m_bStripeColorA(DEFAULT_STRIPE_COLOR_A),
265 m_bStripeColorB(DEFAULT_STRIPE_COLOR_B),
266 m_nStripeLength(DEFAULT_STRIPE_LENGTH),
268 // #i73602#
269 m_bOverlayBuffer_Calc( DEFAULT_OVERLAYBUFFER_CALC ),
270 m_bOverlayBuffer_Writer( DEFAULT_OVERLAYBUFFER_WRITER ),
271 m_bOverlayBuffer_DrawImpress( DEFAULT_OVERLAYBUFFER_DRAWIMPRESS ),
273 // #i74769#, #i75172#
274 m_bPaintBuffer_Calc( DEFAULT_PAINTBUFFER_CALC ),
275 m_bPaintBuffer_Writer( DEFAULT_PAINTBUFFER_WRITER ),
276 m_bPaintBuffer_DrawImpress( DEFAULT_PAINTBUFFER_DRAWIMPRESS ),
278 // #i4219#
279 m_nMaximumPaperWidth(DEFAULT_MAXIMUMPAPERWIDTH),
280 m_nMaximumPaperHeight(DEFAULT_MAXIMUMPAPERHEIGHT),
281 m_nMaximumPaperLeftMargin(DEFAULT_MAXIMUMPAPERLEFTMARGIN),
282 m_nMaximumPaperRightMargin(DEFAULT_MAXIMUMPAPERRIGHTMARGIN),
283 m_nMaximumPaperTopMargin(DEFAULT_MAXIMUMPAPERTOPMARGIN),
284 m_nMaximumPaperBottomMargin(DEFAULT_MAXIMUMPAPERBOTTOMMARGIN),
286 // primitives
287 m_bAntiAliasing(DEFAULT_ANTIALIASING),
288 m_bSnapHorVerLinesToDiscrete(DEFAULT_SNAPHORVERLINESTODISCRETE),
289 m_bSolidDragCreate(DEFAULT_SOLIDDRAGCREATE),
290 m_bRenderDecoratedTextDirect(DEFAULT_RENDERDECORATEDTEXTDIRECT),
291 m_bRenderSimpleTextDirect(DEFAULT_RENDERSIMPLETEXTDIRECT),
292 m_nQuadratic3DRenderLimit(DEFAULT_QUADRATIC3DRENDERLIMIT),
293 m_nQuadraticFormControlRenderLimit(DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT),
295 // #i97672# selection settings
296 m_nTransparentSelectionPercent(DEFAULT_TRANSPARENTSELECTIONPERCENT),
297 m_nSelectionMaximumLuminancePercent(DEFAULT_SELECTIONMAXIMUMLUMINANCEPERCENT),
298 m_bTransparentSelection(DEFAULT_TRANSPARENTSELECTION),
300 // local values
301 m_bAllowAA(true),
302 m_bAllowAAChecked(false)
304 Sequence< OUString > seqNames( impl_GetPropertyNames() );
305 Sequence< Any > seqValues = GetProperties( seqNames ) ;
307 DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nI miss some values of configuration keys!\n" );
309 // Copy values from list in right order to our internal member.
310 sal_Int32 nPropertyCount = seqValues.getLength();
311 for(sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty )
313 if (!seqValues[nProperty].hasValue())
314 continue;
316 switch( nProperty )
318 case PROPERTYHANDLE_OVERLAYBUFFER:
320 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer\"?" );
321 seqValues[nProperty] >>= m_bOverlayBuffer;
323 break;
325 case PROPERTYHANDLE_PAINTBUFFER:
327 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer\"?" );
328 seqValues[nProperty] >>= m_bPaintBuffer;
330 break;
332 case PROPERTYHANDLE_STRIPE_COLOR_A:
334 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeColorA\"?" );
335 sal_Int32 nValue = 0;
336 seqValues[nProperty] >>= nValue;
337 m_bStripeColorA = Color(nValue);
339 break;
341 case PROPERTYHANDLE_STRIPE_COLOR_B:
343 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeColorB\"?" );
344 sal_Int32 nValue = 0;
345 seqValues[nProperty] >>= nValue;
346 m_bStripeColorB = Color(nValue);
348 break;
350 case PROPERTYHANDLE_STRIPE_LENGTH:
352 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeLength\"?" );
353 seqValues[nProperty] >>= m_nStripeLength;
355 break;
357 // #i73602#
358 case PROPERTYHANDLE_OVERLAYBUFFER_CALC:
360 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_Calc\"?" );
361 seqValues[nProperty] >>= m_bOverlayBuffer_Calc;
363 break;
365 case PROPERTYHANDLE_OVERLAYBUFFER_WRITER:
367 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_Writer\"?" );
368 seqValues[nProperty] >>= m_bOverlayBuffer_Writer;
370 break;
372 case PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS:
374 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_DrawImpress\"?" );
375 seqValues[nProperty] >>= m_bOverlayBuffer_DrawImpress;
377 break;
379 // #i74769#, #i75172#
380 case PROPERTYHANDLE_PAINTBUFFER_CALC:
382 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_Calc\"?" );
383 seqValues[nProperty] >>= m_bPaintBuffer_Calc;
385 break;
387 case PROPERTYHANDLE_PAINTBUFFER_WRITER:
389 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_Writer\"?" );
390 seqValues[nProperty] >>= m_bPaintBuffer_Writer;
392 break;
394 case PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS:
396 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_DrawImpress\"?" );
397 seqValues[nProperty] >>= m_bPaintBuffer_DrawImpress;
399 break;
401 // #i4219#
402 case PROPERTYHANDLE_MAXIMUMPAPERWIDTH:
404 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperWidth\"?" );
405 seqValues[nProperty] >>= m_nMaximumPaperWidth;
407 break;
409 case PROPERTYHANDLE_MAXIMUMPAPERHEIGHT:
411 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperHeight\"?" );
412 seqValues[nProperty] >>= m_nMaximumPaperHeight;
414 break;
416 case PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN:
418 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperLeftMargin\"?" );
419 seqValues[nProperty] >>= m_nMaximumPaperLeftMargin;
421 break;
423 case PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN:
425 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperRightMargin\"?" );
426 seqValues[nProperty] >>= m_nMaximumPaperRightMargin;
428 break;
430 case PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN:
432 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperTopMargin\"?" );
433 seqValues[nProperty] >>= m_nMaximumPaperTopMargin;
435 break;
437 case PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN:
439 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperBottomMargin\"?" );
440 seqValues[nProperty] >>= m_nMaximumPaperBottomMargin;
442 break;
444 // primitives
445 case PROPERTYHANDLE_ANTIALIASING:
447 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\AntiAliasing\"?" );
448 seqValues[nProperty] >>= m_bAntiAliasing;
450 break;
452 // primitives
453 case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE:
455 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SnapHorVerLinesToDiscrete\"?" );
456 seqValues[nProperty] >>= m_bSnapHorVerLinesToDiscrete;
458 break;
460 case PROPERTYHANDLE_SOLIDDRAGCREATE:
462 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SolidDragCreate\"?" );
463 seqValues[nProperty] >>= m_bSolidDragCreate;
465 break;
467 case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT:
469 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderDecoratedTextDirect\"?" );
470 seqValues[nProperty] >>= m_bRenderDecoratedTextDirect;
472 break;
474 case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT:
476 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderSimpleTextDirect\"?" );
477 seqValues[nProperty] >>= m_bRenderSimpleTextDirect;
479 break;
481 case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT:
483 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\Quadratic3DRenderLimit\"?" );
484 seqValues[nProperty] >>= m_nQuadratic3DRenderLimit;
486 break;
488 case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT:
490 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\QuadraticFormControlRenderLimit\"?" );
491 seqValues[nProperty] >>= m_nQuadraticFormControlRenderLimit;
493 break;
495 // #i97672# selection settings
496 case PROPERTYHANDLE_TRANSPARENTSELECTION:
498 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\TransparentSelection\"?" );
499 seqValues[nProperty] >>= m_bTransparentSelection;
501 break;
503 case PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT:
505 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\TransparentSelectionPercent\"?" );
506 seqValues[nProperty] >>= m_nTransparentSelectionPercent;
508 break;
510 case PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT:
512 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SelectionMaximumLuminancePercent\"?" );
513 seqValues[nProperty] >>= m_nSelectionMaximumLuminancePercent;
515 break;
520 SvtOptionsDrawinglayer_Impl::~SvtOptionsDrawinglayer_Impl()
522 if (IsModified())
523 Commit();
526 // Commit
528 void SvtOptionsDrawinglayer_Impl::ImplCommit()
530 Sequence< OUString > aSeqNames( impl_GetPropertyNames() );
531 Sequence< Any > aSeqValues( aSeqNames.getLength() );
533 for( sal_Int32 nProperty = 0, nCount = aSeqNames.getLength(); nProperty < nCount; ++nProperty )
535 switch( nProperty )
537 case PROPERTYHANDLE_OVERLAYBUFFER:
538 aSeqValues[nProperty] <<= m_bOverlayBuffer;
539 break;
541 case PROPERTYHANDLE_PAINTBUFFER:
542 aSeqValues[nProperty] <<= m_bPaintBuffer;
543 break;
545 case PROPERTYHANDLE_STRIPE_COLOR_A:
546 aSeqValues[nProperty] <<= m_bStripeColorA;
547 break;
549 case PROPERTYHANDLE_STRIPE_COLOR_B:
550 aSeqValues[nProperty] <<= m_bStripeColorB;
551 break;
553 case PROPERTYHANDLE_STRIPE_LENGTH:
554 aSeqValues[nProperty] <<= m_nStripeLength;
555 break;
557 // #i73602#
558 case PROPERTYHANDLE_OVERLAYBUFFER_CALC:
559 aSeqValues[nProperty] <<= m_bOverlayBuffer_Calc;
560 break;
562 case PROPERTYHANDLE_OVERLAYBUFFER_WRITER:
563 aSeqValues[nProperty] <<= m_bOverlayBuffer_Writer;
564 break;
566 case PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS:
567 aSeqValues[nProperty] <<= m_bOverlayBuffer_DrawImpress;
568 break;
570 // #i74769#, #i75172#
571 case PROPERTYHANDLE_PAINTBUFFER_CALC:
572 aSeqValues[nProperty] <<= m_bPaintBuffer_Calc;
573 break;
575 case PROPERTYHANDLE_PAINTBUFFER_WRITER:
576 aSeqValues[nProperty] <<= m_bPaintBuffer_Writer;
577 break;
579 case PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS:
580 aSeqValues[nProperty] <<= m_bPaintBuffer_DrawImpress;
581 break;
583 // #i4219#
584 case PROPERTYHANDLE_MAXIMUMPAPERWIDTH:
585 aSeqValues[nProperty] <<= m_nMaximumPaperWidth;
586 break;
588 case PROPERTYHANDLE_MAXIMUMPAPERHEIGHT:
589 aSeqValues[nProperty] <<= m_nMaximumPaperHeight;
590 break;
592 case PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN:
593 aSeqValues[nProperty] <<= m_nMaximumPaperLeftMargin;
594 break;
596 case PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN:
597 aSeqValues[nProperty] <<= m_nMaximumPaperRightMargin;
598 break;
600 case PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN:
601 aSeqValues[nProperty] <<= m_nMaximumPaperTopMargin;
602 break;
604 case PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN:
605 aSeqValues[nProperty] <<= m_nMaximumPaperBottomMargin;
606 break;
608 // primitives
609 case PROPERTYHANDLE_ANTIALIASING:
610 aSeqValues[nProperty] <<= m_bAntiAliasing;
611 break;
613 case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE:
614 aSeqValues[nProperty] <<= m_bSnapHorVerLinesToDiscrete;
615 break;
617 case PROPERTYHANDLE_SOLIDDRAGCREATE:
618 aSeqValues[nProperty] <<= m_bSolidDragCreate;
619 break;
621 case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT:
622 aSeqValues[nProperty] <<= m_bRenderDecoratedTextDirect;
623 break;
625 case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT:
626 aSeqValues[nProperty] <<= m_bRenderSimpleTextDirect;
627 break;
629 case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT:
630 aSeqValues[nProperty] <<= m_nQuadratic3DRenderLimit;
631 break;
633 case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT:
634 aSeqValues[nProperty] <<= m_nQuadraticFormControlRenderLimit;
635 break;
637 // #i97672# selection settings
638 case PROPERTYHANDLE_TRANSPARENTSELECTION:
639 aSeqValues[nProperty] <<= m_bTransparentSelection;
640 break;
642 case PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT:
643 aSeqValues[nProperty] <<= m_nTransparentSelectionPercent;
644 break;
646 case PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT:
647 aSeqValues[nProperty] <<= m_nSelectionMaximumLuminancePercent;
648 break;
652 PutProperties( aSeqNames, aSeqValues );
655 void SvtOptionsDrawinglayer_Impl::Notify( const css::uno::Sequence<OUString>& )
658 // #i73602#
660 // #i74769#, #i75172#
662 // #i4219#
664 // helper
665 bool SvtOptionsDrawinglayer_Impl::IsAAPossibleOnThisSystem() const
667 if(!m_bAllowAAChecked)
669 SvtOptionsDrawinglayer_Impl* pThat = const_cast< SvtOptionsDrawinglayer_Impl* >(this);
670 pThat->m_bAllowAAChecked = true;
672 #ifdef _WIN32
673 // WIN32 uses GDIPlus with VCL for the first incarnation; this will be enhanced
674 // in the future to use canvases and the canvas renderer, thus a AA-abled
675 // canvas needs to be checked here in the future.
676 // Currently, just allow AA for WIN32
677 #endif
679 // check XRenderExtension
680 if(m_bAllowAA && !Application::GetDefaultDevice()->SupportsOperation( OutDevSupportType::TransparentRect ))
682 pThat->m_bAllowAA = false;
686 return m_bAllowAA;
689 // primitives
691 void SvtOptionsDrawinglayer_Impl::SetAntiAliasing( bool bState )
693 if(m_bAntiAliasing != bState)
695 m_bAntiAliasing = bState;
696 SetModified();
700 // private method
702 Sequence< OUString > SvtOptionsDrawinglayer_Impl::impl_GetPropertyNames()
704 // Build list of configuration key names.
705 const OUString pProperties[] =
707 PROPERTYNAME_OVERLAYBUFFER ,
708 PROPERTYNAME_PAINTBUFFER ,
709 PROPERTYNAME_STRIPE_COLOR_A ,
710 PROPERTYNAME_STRIPE_COLOR_B ,
711 PROPERTYNAME_STRIPE_LENGTH ,
713 // #i73602#
714 PROPERTYNAME_OVERLAYBUFFER_CALC,
715 PROPERTYNAME_OVERLAYBUFFER_WRITER,
716 PROPERTYNAME_OVERLAYBUFFER_DRAWIMPRESS,
718 // #i74769#, #i75172#
719 PROPERTYNAME_PAINTBUFFER_CALC,
720 PROPERTYNAME_PAINTBUFFER_WRITER,
721 PROPERTYNAME_PAINTBUFFER_DRAWIMPRESS,
723 // #i4219#
724 PROPERTYNAME_MAXIMUMPAPERWIDTH,
725 PROPERTYNAME_MAXIMUMPAPERHEIGHT,
726 PROPERTYNAME_MAXIMUMPAPERLEFTMARGIN,
727 PROPERTYNAME_MAXIMUMPAPERRIGHTMARGIN,
728 PROPERTYNAME_MAXIMUMPAPERTOPMARGIN,
729 PROPERTYNAME_MAXIMUMPAPERBOTTOMMARGIN,
731 // primitives
732 PROPERTYNAME_ANTIALIASING,
733 PROPERTYNAME_SNAPHORVERLINESTODISCRETE,
734 PROPERTYNAME_SOLIDDRAGCREATE,
735 PROPERTYNAME_RENDERDECORATEDTEXTDIRECT,
736 PROPERTYNAME_RENDERSIMPLETEXTDIRECT,
737 PROPERTYNAME_QUADRATIC3DRENDERLIMIT,
738 PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT,
740 // #i97672# selection settings
741 PROPERTYNAME_TRANSPARENTSELECTION,
742 PROPERTYNAME_TRANSPARENTSELECTIONPERCENT,
743 PROPERTYNAME_SELECTIONMAXIMUMLUMINANCEPERCENT
746 // Initialize return sequence with these list ...
747 const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT );
748 // ... and return it.
749 return seqPropertyNames;
752 namespace {
753 //global
754 std::weak_ptr<SvtOptionsDrawinglayer_Impl> g_pOptionsDrawinglayer;
757 SvtOptionsDrawinglayer::SvtOptionsDrawinglayer()
759 // Global access, must be guarded (multithreading!).
760 MutexGuard aGuard( GetOwnStaticMutex() );
761 m_pImpl = g_pOptionsDrawinglayer.lock();
762 if( !m_pImpl )
764 m_pImpl = std::make_shared<SvtOptionsDrawinglayer_Impl>();
765 g_pOptionsDrawinglayer = m_pImpl;
769 SvtOptionsDrawinglayer::~SvtOptionsDrawinglayer()
771 // Global access, must be guarded (multithreading!)
772 MutexGuard aGuard( GetOwnStaticMutex() );
774 m_pImpl.reset();
777 // public method
779 bool SvtOptionsDrawinglayer::IsOverlayBuffer() const
781 MutexGuard aGuard( GetOwnStaticMutex() );
782 return m_pImpl->IsOverlayBuffer();
785 // public method
787 bool SvtOptionsDrawinglayer::IsPaintBuffer() const
789 MutexGuard aGuard( GetOwnStaticMutex() );
790 return m_pImpl->IsPaintBuffer();
793 // public method
795 Color SvtOptionsDrawinglayer::GetStripeColorA() const
797 MutexGuard aGuard( GetOwnStaticMutex() );
798 return m_pImpl->GetStripeColorA();
801 // public method
803 Color SvtOptionsDrawinglayer::GetStripeColorB() const
805 MutexGuard aGuard( GetOwnStaticMutex() );
806 return m_pImpl->GetStripeColorB();
809 // public method
811 sal_uInt16 SvtOptionsDrawinglayer::GetStripeLength() const
813 MutexGuard aGuard( GetOwnStaticMutex() );
814 return m_pImpl->GetStripeLength();
817 // #i73602#
818 bool SvtOptionsDrawinglayer::IsOverlayBuffer_Calc() const
820 MutexGuard aGuard( GetOwnStaticMutex() );
821 return m_pImpl->IsOverlayBuffer_Calc();
824 bool SvtOptionsDrawinglayer::IsOverlayBuffer_Writer() const
826 MutexGuard aGuard( GetOwnStaticMutex() );
827 return m_pImpl->IsOverlayBuffer_Writer();
830 bool SvtOptionsDrawinglayer::IsOverlayBuffer_DrawImpress() const
832 MutexGuard aGuard( GetOwnStaticMutex() );
833 return m_pImpl->IsOverlayBuffer_DrawImpress();
836 // #i74769#, #i75172#
837 bool SvtOptionsDrawinglayer::IsPaintBuffer_Calc() const
839 MutexGuard aGuard( GetOwnStaticMutex() );
840 return m_pImpl->IsPaintBuffer_Calc();
843 bool SvtOptionsDrawinglayer::IsPaintBuffer_Writer() const
845 MutexGuard aGuard( GetOwnStaticMutex() );
846 return m_pImpl->IsPaintBuffer_Writer();
849 bool SvtOptionsDrawinglayer::IsPaintBuffer_DrawImpress() const
851 MutexGuard aGuard( GetOwnStaticMutex() );
852 return m_pImpl->IsPaintBuffer_DrawImpress();
855 // #i4219#
856 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperWidth() const
858 MutexGuard aGuard( GetOwnStaticMutex() );
859 return m_pImpl->GetMaximumPaperWidth();
862 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperHeight() const
864 MutexGuard aGuard( GetOwnStaticMutex() );
865 return m_pImpl->GetMaximumPaperHeight();
868 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperLeftMargin() const
870 MutexGuard aGuard( GetOwnStaticMutex() );
871 return m_pImpl->GetMaximumPaperLeftMargin();
874 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperRightMargin() const
876 MutexGuard aGuard( GetOwnStaticMutex() );
877 return m_pImpl->GetMaximumPaperRightMargin();
880 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperTopMargin() const
882 MutexGuard aGuard( GetOwnStaticMutex() );
883 return m_pImpl->GetMaximumPaperTopMargin();
886 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperBottomMargin() const
888 MutexGuard aGuard( GetOwnStaticMutex() );
889 return m_pImpl->GetMaximumPaperBottomMargin();
892 // helper
893 bool SvtOptionsDrawinglayer::IsAAPossibleOnThisSystem() const
895 return m_pImpl->IsAAPossibleOnThisSystem();
898 // primitives
899 bool SvtOptionsDrawinglayer::IsAntiAliasing() const
901 MutexGuard aGuard( GetOwnStaticMutex() );
902 return m_pImpl->IsAntiAliasing() && IsAAPossibleOnThisSystem();
905 bool SvtOptionsDrawinglayer::IsSnapHorVerLinesToDiscrete() const
907 MutexGuard aGuard( GetOwnStaticMutex() );
908 return m_pImpl->IsAntiAliasing() && m_pImpl->IsSnapHorVerLinesToDiscrete();
911 bool SvtOptionsDrawinglayer::IsSolidDragCreate() const
913 MutexGuard aGuard( GetOwnStaticMutex() );
914 return m_pImpl->IsSolidDragCreate();
917 bool SvtOptionsDrawinglayer::IsRenderDecoratedTextDirect() const
919 MutexGuard aGuard( GetOwnStaticMutex() );
920 return m_pImpl->IsRenderDecoratedTextDirect();
923 bool SvtOptionsDrawinglayer::IsRenderSimpleTextDirect() const
925 MutexGuard aGuard( GetOwnStaticMutex() );
926 return m_pImpl->IsRenderSimpleTextDirect();
929 sal_uInt32 SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit() const
931 MutexGuard aGuard( GetOwnStaticMutex() );
932 return m_pImpl->GetQuadratic3DRenderLimit();
935 sal_uInt32 SvtOptionsDrawinglayer::GetQuadraticFormControlRenderLimit() const
937 MutexGuard aGuard( GetOwnStaticMutex() );
938 return m_pImpl->GetQuadraticFormControlRenderLimit();
941 void SvtOptionsDrawinglayer::SetAntiAliasing( bool bState )
943 MutexGuard aGuard( GetOwnStaticMutex() );
944 m_pImpl->SetAntiAliasing( bState );
947 // #i97672# selection settings
948 bool SvtOptionsDrawinglayer::IsTransparentSelection() const
950 MutexGuard aGuard( GetOwnStaticMutex() );
951 return m_pImpl->IsTransparentSelection();
954 sal_uInt16 SvtOptionsDrawinglayer::GetTransparentSelectionPercent() const
956 MutexGuard aGuard( GetOwnStaticMutex() );
957 sal_uInt16 aRetval(m_pImpl->GetTransparentSelectionPercent());
959 // crop to range [10% .. 90%]
960 if(aRetval < 10)
962 aRetval = 10;
965 if(aRetval > 90)
967 aRetval = 90;
970 return aRetval;
973 sal_uInt16 SvtOptionsDrawinglayer::GetSelectionMaximumLuminancePercent() const
975 MutexGuard aGuard( GetOwnStaticMutex() );
976 sal_uInt16 aRetval(m_pImpl->GetSelectionMaximumLuminancePercent());
978 // crop to range [0% .. 100%]
979 if(aRetval > 90)
981 aRetval = 90;
984 return aRetval;
987 Color SvtOptionsDrawinglayer::getHilightColor() const
989 Color aRetval(Application::GetSettings().GetStyleSettings().GetHighlightColor());
990 const basegfx::BColor aSelection(aRetval.getBColor());
991 const double fLuminance(aSelection.luminance());
992 const double fMaxLum(GetSelectionMaximumLuminancePercent() / 100.0);
994 if(fLuminance > fMaxLum)
996 const double fFactor(fMaxLum / fLuminance);
997 const basegfx::BColor aNewSelection(
998 aSelection.getRed() * fFactor,
999 aSelection.getGreen() * fFactor,
1000 aSelection.getBlue() * fFactor);
1002 aRetval = Color(aNewSelection);
1005 return aRetval;
1008 namespace
1010 class theOptionsDrawinglayerMutex : public rtl::Static<osl::Mutex, theOptionsDrawinglayerMutex>{};
1013 // private method
1015 Mutex& SvtOptionsDrawinglayer::GetOwnStaticMutex()
1017 return theOptionsDrawinglayerMutex::get();
1020 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */