xref: /trunk/main/svtools/source/config/optionsdrawinglayer.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 // MARKER(update_precomp.py): autogen include statement, do not remove
28 #include "precompiled_svtools.hxx"
29 
30 #ifdef _MSC_VER
31 #pragma hdrstop
32 #endif
33 
34 //_________________________________________________________________________________________________________________
35 //  includes
36 //_________________________________________________________________________________________________________________
37 
38 #include <svtools/optionsdrawinglayer.hxx>
39 #include <unotools/configmgr.hxx>
40 #include <unotools/configitem.hxx>
41 #include <tools/debug.hxx>
42 #include <com/sun/star/uno/Any.hxx>
43 #include <com/sun/star/uno/Sequence.hxx>
44 #include <vcl/svapp.hxx>
45 #include <vcl/outdev.hxx>
46 
47 //_________________________________________________________________________________________________________________
48 //  namespaces
49 //_________________________________________________________________________________________________________________
50 
51 using namespace ::utl                   ;
52 using namespace ::rtl                   ;
53 using namespace ::osl                   ;
54 using namespace ::com::sun::star::uno   ;
55 
56 //_________________________________________________________________________________________________________________
57 //  const
58 //_________________________________________________________________________________________________________________
59 
60 #define ROOTNODE_START                  OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Drawinglayer"   ))
61 #define DEFAULT_OVERLAYBUFFER           sal_True
62 #define DEFAULT_PAINTBUFFER             sal_True
63 #define DEFAULT_STRIPE_COLOR_A          0
64 #define DEFAULT_STRIPE_COLOR_B          16581375
65 #define DEFAULT_STRIPE_LENGTH           4
66 
67 // #i73602#
68 // #i74769#, #i75172# : Change default for Calc and Writer to True
69 #define DEFAULT_OVERLAYBUFFER_CALC          sal_True
70 #define DEFAULT_OVERLAYBUFFER_WRITER        sal_True
71 #define DEFAULT_OVERLAYBUFFER_DRAWIMPRESS   sal_True
72 
73 // #i74769#, #i75172#
74 #define DEFAULT_PAINTBUFFER_CALC            sal_True
75 #define DEFAULT_PAINTBUFFER_WRITER          sal_True
76 #define DEFAULT_PAINTBUFFER_DRAWIMPRESS     sal_True
77 
78 // #i4219#
79 #define DEFAULT_MAXIMUMPAPERWIDTH           300
80 #define DEFAULT_MAXIMUMPAPERHEIGHT          300
81 #define DEFAULT_MAXIMUMPAPERLEFTMARGIN      9999
82 #define DEFAULT_MAXIMUMPAPERRIGHTMARGIN     9999
83 #define DEFAULT_MAXIMUMPAPERTOPMARGIN       9999
84 #define DEFAULT_MAXIMUMPAPERBOTTOMMARGIN    9999
85 
86 // primitives
87 #define DEFAULT_ANTIALIASING                        sal_True
88 #define DEFAULT_SNAPHORVERLINESTODISCRETE           sal_True
89 #define DEFAULT_SOLIDDRAGCREATE                     sal_True
90 #define DEFAULT_RENDERDECORATEDTEXTDIRECT           sal_True
91 #define DEFAULT_RENDERSIMPLETEXTDIRECT              sal_True
92 #define DEFAULT_QUADRATIC3DRENDERLIMIT              1000000
93 #define DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT     45000
94 
95 // #i97672# selection settings
96 #define DEFAULT_TRANSPARENTSELECTION                sal_True
97 #define DEFAULT_TRANSPARENTSELECTIONPERCENT         75
98 #define DEFAULT_SELECTIONMAXIMUMLUMINANCEPERCENT    70
99 
100 #define PROPERTYNAME_OVERLAYBUFFER      OUString(RTL_CONSTASCII_USTRINGPARAM("OverlayBuffer"    ))
101 #define PROPERTYNAME_PAINTBUFFER        OUString(RTL_CONSTASCII_USTRINGPARAM("PaintBuffer"      ))
102 #define PROPERTYNAME_STRIPE_COLOR_A     OUString(RTL_CONSTASCII_USTRINGPARAM("StripeColorA"     ))
103 #define PROPERTYNAME_STRIPE_COLOR_B     OUString(RTL_CONSTASCII_USTRINGPARAM("StripeColorB"     ))
104 #define PROPERTYNAME_STRIPE_LENGTH      OUString(RTL_CONSTASCII_USTRINGPARAM("StripeLength"     ))
105 
106 // #i73602#
107 #define PROPERTYNAME_OVERLAYBUFFER_CALC         OUString(RTL_CONSTASCII_USTRINGPARAM("OverlayBuffer_Calc"))
108 #define PROPERTYNAME_OVERLAYBUFFER_WRITER       OUString(RTL_CONSTASCII_USTRINGPARAM("OverlayBuffer_Writer"))
109 #define PROPERTYNAME_OVERLAYBUFFER_DRAWIMPRESS  OUString(RTL_CONSTASCII_USTRINGPARAM("OverlayBuffer_DrawImpress"))
110 
111 // #i74769#, #i75172#
112 #define PROPERTYNAME_PAINTBUFFER_CALC           OUString(RTL_CONSTASCII_USTRINGPARAM("PaintBuffer_Calc"))
113 #define PROPERTYNAME_PAINTBUFFER_WRITER         OUString(RTL_CONSTASCII_USTRINGPARAM("PaintBuffer_Writer"))
114 #define PROPERTYNAME_PAINTBUFFER_DRAWIMPRESS    OUString(RTL_CONSTASCII_USTRINGPARAM("PaintBuffer_DrawImpress"))
115 
116 // #i4219#
117 #define PROPERTYNAME_MAXIMUMPAPERWIDTH OUString(RTL_CONSTASCII_USTRINGPARAM("MaximumPaperWidth"))
118 #define PROPERTYNAME_MAXIMUMPAPERHEIGHT OUString(RTL_CONSTASCII_USTRINGPARAM("MaximumPaperHeight"))
119 #define PROPERTYNAME_MAXIMUMPAPERLEFTMARGIN OUString(RTL_CONSTASCII_USTRINGPARAM("MaximumPaperLeftMargin"))
120 #define PROPERTYNAME_MAXIMUMPAPERRIGHTMARGIN OUString(RTL_CONSTASCII_USTRINGPARAM("MaximumPaperRightMargin"))
121 #define PROPERTYNAME_MAXIMUMPAPERTOPMARGIN OUString(RTL_CONSTASCII_USTRINGPARAM("MaximumPaperTopMargin"))
122 #define PROPERTYNAME_MAXIMUMPAPERBOTTOMMARGIN OUString(RTL_CONSTASCII_USTRINGPARAM("MaximumPaperBottomMargin"))
123 
124 // primitives
125 #define PROPERTYNAME_ANTIALIASING OUString(RTL_CONSTASCII_USTRINGPARAM("AntiAliasing"))
126 #define PROPERTYNAME_SNAPHORVERLINESTODISCRETE OUString(RTL_CONSTASCII_USTRINGPARAM("SnapHorVerLinesToDiscrete"))
127 #define PROPERTYNAME_SOLIDDRAGCREATE OUString(RTL_CONSTASCII_USTRINGPARAM("SolidDragCreate"))
128 #define PROPERTYNAME_RENDERDECORATEDTEXTDIRECT OUString(RTL_CONSTASCII_USTRINGPARAM("RenderDecoratedTextDirect"))
129 #define PROPERTYNAME_RENDERSIMPLETEXTDIRECT OUString(RTL_CONSTASCII_USTRINGPARAM("RenderSimpleTextDirect"))
130 #define PROPERTYNAME_QUADRATIC3DRENDERLIMIT OUString(RTL_CONSTASCII_USTRINGPARAM("Quadratic3DRenderLimit"))
131 #define PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT OUString(RTL_CONSTASCII_USTRINGPARAM("QuadraticFormControlRenderLimit"))
132 
133 // #i97672# selection settings
134 #define PROPERTYNAME_TRANSPARENTSELECTION OUString(RTL_CONSTASCII_USTRINGPARAM("TransparentSelection"))
135 #define PROPERTYNAME_TRANSPARENTSELECTIONPERCENT OUString(RTL_CONSTASCII_USTRINGPARAM("TransparentSelectionPercent"))
136 #define PROPERTYNAME_SELECTIONMAXIMUMLUMINANCEPERCENT OUString(RTL_CONSTASCII_USTRINGPARAM("SelectionMaximumLuminancePercent"))
137 
138 #define PROPERTYHANDLE_OVERLAYBUFFER                0
139 #define PROPERTYHANDLE_PAINTBUFFER                  1
140 #define PROPERTYHANDLE_STRIPE_COLOR_A               2
141 #define PROPERTYHANDLE_STRIPE_COLOR_B               3
142 #define PROPERTYHANDLE_STRIPE_LENGTH                4
143 
144 // #i73602#
145 #define PROPERTYHANDLE_OVERLAYBUFFER_CALC           5
146 #define PROPERTYHANDLE_OVERLAYBUFFER_WRITER         6
147 #define PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS    7
148 
149 // #i74769#, #i75172#
150 #define PROPERTYHANDLE_PAINTBUFFER_CALC             8
151 #define PROPERTYHANDLE_PAINTBUFFER_WRITER           9
152 #define PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS      10
153 
154 // #i4219#
155 #define PROPERTYHANDLE_MAXIMUMPAPERWIDTH            11
156 #define PROPERTYHANDLE_MAXIMUMPAPERHEIGHT           12
157 #define PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN       13
158 #define PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN      14
159 #define PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN        15
160 #define PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN     16
161 
162 // primitives
163 #define PROPERTYHANDLE_ANTIALIASING                     17
164 #define PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE        18
165 #define PROPERTYHANDLE_SOLIDDRAGCREATE                  19
166 #define PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT        20
167 #define PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT           21
168 #define PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT           22
169 #define PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT  23
170 
171 // #i97672# selection settings
172 #define PROPERTYHANDLE_TRANSPARENTSELECTION             24
173 #define PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT      25
174 #define PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT 26
175 
176 #define PROPERTYCOUNT                               27
177 
178 class SvtOptionsDrawinglayer_Impl : public ConfigItem
179 {
180 public:
181 
182 //---------------------------------------------------------------------------------------------------------
183 //  constructor / destructor
184 //---------------------------------------------------------------------------------------------------------
185 
186      SvtOptionsDrawinglayer_Impl();
187     ~SvtOptionsDrawinglayer_Impl();
188 
189 //---------------------------------------------------------------------------------------------------------
190 //  overloaded methods of baseclass
191 //---------------------------------------------------------------------------------------------------------
192 
193     virtual void Commit();
194     virtual void Notify( const com::sun::star::uno::Sequence<rtl::OUString>& aPropertyNames);
195 
196 //---------------------------------------------------------------------------------------------------------
197 //  public interface
198 //---------------------------------------------------------------------------------------------------------
199 
200     sal_Bool    IsOverlayBuffer() const;
201     sal_Bool    IsPaintBuffer() const;
202     Color       GetStripeColorA() const;
203     Color       GetStripeColorB() const;
204     sal_uInt16  GetStripeLength() const;
205 
206     // #i73602#
207     sal_Bool    IsOverlayBuffer_Calc() const;
208     sal_Bool    IsOverlayBuffer_Writer() const;
209     sal_Bool    IsOverlayBuffer_DrawImpress() const;
210 
211     // #i74769#, #i75172#
212     sal_Bool    IsPaintBuffer_Calc() const;
213     sal_Bool    IsPaintBuffer_Writer() const;
214     sal_Bool    IsPaintBuffer_DrawImpress() const;
215 
216     void        SetOverlayBuffer( sal_Bool bState );
217     void        SetPaintBuffer( sal_Bool bState );
218     void        SetStripeColorA( Color aColor );
219     void        SetStripeColorB( Color aColor );
220     void        SetStripeLength( sal_uInt16 nLength );
221 
222     // #i73602#
223     void        SetOverlayBuffer_Calc( sal_Bool bState );
224     void        SetOverlayBuffer_Writer( sal_Bool bState );
225     void        SetOverlayBuffer_DrawImpress( sal_Bool bState );
226 
227     // #i74769#, #i75172#
228     void        SetPaintBuffer_Calc( sal_Bool bState );
229     void        SetPaintBuffer_Writer( sal_Bool bState );
230     void        SetPaintBuffer_DrawImpress( sal_Bool bState );
231 
232     // #i4219#
233     sal_uInt32 GetMaximumPaperWidth() const;
234     sal_uInt32 GetMaximumPaperHeight() const;
235     sal_uInt32 GetMaximumPaperLeftMargin() const;
236     sal_uInt32 GetMaximumPaperRightMargin() const;
237     sal_uInt32 GetMaximumPaperTopMargin() const;
238     sal_uInt32 GetMaximumPaperBottomMargin() const;
239 
240     void SetMaximumPaperWidth(sal_uInt32 nNew);
241     void SetMaximumPaperHeight(sal_uInt32 nNew);
242     void SetMaximumPaperLeftMargin(sal_uInt32 nNew);
243     void SetMaximumPaperRightMargin(sal_uInt32 nNew);
244     void SetMaximumPaperTopMargin(sal_uInt32 nNew);
245     void SetMaximumPaperBottomMargin(sal_uInt32 nNew);
246 
247     // helper
248     sal_Bool IsAAPossibleOnThisSystem() const;
249 
250     // primitives
251     sal_Bool    IsAntiAliasing() const;
252     sal_Bool    IsSnapHorVerLinesToDiscrete() const;
253     sal_Bool    IsSolidDragCreate() const;
254     sal_Bool    IsRenderDecoratedTextDirect() const;
255     sal_Bool    IsRenderSimpleTextDirect() const;
256     sal_uInt32  GetQuadratic3DRenderLimit() const;
257     sal_uInt32  GetQuadraticFormControlRenderLimit() const;
258 
259     void        SetAntiAliasing( sal_Bool bState );
260     void        SetSnapHorVerLinesToDiscrete( sal_Bool bState );
261     void        SetSolidDragCreate( sal_Bool bState );
262     void        SetRenderDecoratedTextDirect( sal_Bool bState );
263     void        SetRenderSimpleTextDirect( sal_Bool bState );
264     void        SetQuadratic3DRenderLimit(sal_uInt32 nNew);
265     void        SetQuadraticFormControlRenderLimit(sal_uInt32 nNew);
266 
267     // #i97672# selection settings
268     sal_Bool    IsTransparentSelection() const;
269     sal_uInt16  GetTransparentSelectionPercent() const;
270     sal_uInt16  GetSelectionMaximumLuminancePercent() const;
271 
272     void        SetTransparentSelection( sal_Bool bState );
273     void        SetTransparentSelectionPercent( sal_uInt16 nPercent );
274     void        SetSelectionMaximumLuminancePercent( sal_uInt16 nPercent );
275 
276 //-------------------------------------------------------------------------------------------------------------
277 //  private methods
278 //-------------------------------------------------------------------------------------------------------------
279 
280 private:
281 
282     static Sequence< OUString > impl_GetPropertyNames();
283 
284 //-------------------------------------------------------------------------------------------------------------
285 //  private member
286 //-------------------------------------------------------------------------------------------------------------
287 
288 private:
289 
290         sal_Bool    m_bOverlayBuffer;
291         sal_Bool    m_bPaintBuffer;
292         Color       m_bStripeColorA;
293         Color       m_bStripeColorB;
294         sal_uInt16  m_nStripeLength;
295 
296         // #i73602#
297         sal_Bool    m_bOverlayBuffer_Calc;
298         sal_Bool    m_bOverlayBuffer_Writer;
299         sal_Bool    m_bOverlayBuffer_DrawImpress;
300 
301         // #i74769#, #i75172#
302         sal_Bool    m_bPaintBuffer_Calc;
303         sal_Bool    m_bPaintBuffer_Writer;
304         sal_Bool    m_bPaintBuffer_DrawImpress;
305 
306         // #i4219#
307         sal_uInt32  m_nMaximumPaperWidth;
308         sal_uInt32  m_nMaximumPaperHeight;
309         sal_uInt32  m_nMaximumPaperLeftMargin;
310         sal_uInt32  m_nMaximumPaperRightMargin;
311         sal_uInt32  m_nMaximumPaperTopMargin;
312         sal_uInt32  m_nMaximumPaperBottomMargin;
313 
314         // primitives
315         sal_Bool    m_bAntiAliasing;
316         sal_Bool    m_bSnapHorVerLinesToDiscrete;
317         sal_Bool    m_bSolidDragCreate;
318         sal_Bool    m_bRenderDecoratedTextDirect;
319         sal_Bool    m_bRenderSimpleTextDirect;
320         sal_uInt32  m_nQuadratic3DRenderLimit;
321         sal_uInt32  m_nQuadraticFormControlRenderLimit;
322 
323         // #i97672# selection settings
324         sal_uInt16  m_nTransparentSelectionPercent;
325         sal_uInt16  m_nSelectionMaximumLuminancePercent;
326         sal_Bool    m_bTransparentSelection;
327 
328         // local values
329         bool        m_bAllowAA : 1;
330         bool        m_bAllowAAChecked : 1;
331 };
332 
333 //_________________________________________________________________________________________________________________
334 //  definitions
335 //_________________________________________________________________________________________________________________
336 
337 //*****************************************************************************************************************
338 //  constructor
339 //*****************************************************************************************************************
340 SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() :
341     ConfigItem( ROOTNODE_START  ),
342     m_bOverlayBuffer( DEFAULT_OVERLAYBUFFER ),
343     m_bPaintBuffer( DEFAULT_PAINTBUFFER ),
344     m_bStripeColorA(Color(DEFAULT_STRIPE_COLOR_A)),
345     m_bStripeColorB(Color(DEFAULT_STRIPE_COLOR_B)),
346     m_nStripeLength(DEFAULT_STRIPE_LENGTH),
347 
348     // #i73602#
349     m_bOverlayBuffer_Calc( DEFAULT_OVERLAYBUFFER_CALC ),
350     m_bOverlayBuffer_Writer( DEFAULT_OVERLAYBUFFER_WRITER ),
351     m_bOverlayBuffer_DrawImpress( DEFAULT_OVERLAYBUFFER_DRAWIMPRESS ),
352 
353     // #i74769#, #i75172#
354     m_bPaintBuffer_Calc( DEFAULT_PAINTBUFFER_CALC ),
355     m_bPaintBuffer_Writer( DEFAULT_PAINTBUFFER_WRITER ),
356     m_bPaintBuffer_DrawImpress( DEFAULT_PAINTBUFFER_DRAWIMPRESS ),
357 
358     // #i4219#
359     m_nMaximumPaperWidth(DEFAULT_MAXIMUMPAPERWIDTH),
360     m_nMaximumPaperHeight(DEFAULT_MAXIMUMPAPERHEIGHT),
361     m_nMaximumPaperLeftMargin(DEFAULT_MAXIMUMPAPERLEFTMARGIN),
362     m_nMaximumPaperRightMargin(DEFAULT_MAXIMUMPAPERRIGHTMARGIN),
363     m_nMaximumPaperTopMargin(DEFAULT_MAXIMUMPAPERTOPMARGIN),
364     m_nMaximumPaperBottomMargin(DEFAULT_MAXIMUMPAPERBOTTOMMARGIN),
365 
366     // primitives
367     m_bAntiAliasing(DEFAULT_ANTIALIASING),
368     m_bSnapHorVerLinesToDiscrete(DEFAULT_SNAPHORVERLINESTODISCRETE),
369     m_bSolidDragCreate(DEFAULT_SOLIDDRAGCREATE),
370     m_bRenderDecoratedTextDirect(DEFAULT_RENDERDECORATEDTEXTDIRECT),
371     m_bRenderSimpleTextDirect(DEFAULT_RENDERSIMPLETEXTDIRECT),
372     m_nQuadratic3DRenderLimit(DEFAULT_QUADRATIC3DRENDERLIMIT),
373     m_nQuadraticFormControlRenderLimit(DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT),
374 
375     // #i97672# selection settings
376     m_nTransparentSelectionPercent(DEFAULT_TRANSPARENTSELECTIONPERCENT),
377     m_nSelectionMaximumLuminancePercent(DEFAULT_SELECTIONMAXIMUMLUMINANCEPERCENT),
378     m_bTransparentSelection(DEFAULT_TRANSPARENTSELECTION),
379 
380     // local values
381     m_bAllowAA(true),
382     m_bAllowAAChecked(false)
383 {
384     Sequence< OUString >    seqNames( impl_GetPropertyNames() );
385     Sequence< Any >         seqValues   = GetProperties( seqNames ) ;
386 
387     DBG_ASSERT( !(seqNames.getLength()!=seqValues.getLength()), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nI miss some values of configuration keys!\n" );
388 
389     // Copy values from list in right order to ouer internal member.
390     sal_Int32 nPropertyCount = seqValues.getLength();
391     sal_Int32 nProperty = 0;
392 
393     for( nProperty=0; nProperty<nPropertyCount; ++nProperty )
394     {
395         DBG_ASSERT( !(seqValues[nProperty].hasValue()==sal_False), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nInvalid property value for property detected!\n" );
396 
397         switch( nProperty )
398         {
399             case PROPERTYHANDLE_OVERLAYBUFFER:
400             {
401                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer\"?" );
402                 seqValues[nProperty] >>= m_bOverlayBuffer;
403             }
404             break;
405 
406             case PROPERTYHANDLE_PAINTBUFFER:
407             {
408                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer\"?" );
409                 seqValues[nProperty] >>= m_bPaintBuffer;
410             }
411             break;
412 
413             case PROPERTYHANDLE_STRIPE_COLOR_A:
414             {
415                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeColorA\"?" );
416                 sal_Int32 nValue = 0;
417                 seqValues[nProperty] >>= nValue;
418                 m_bStripeColorA = nValue;
419             }
420             break;
421 
422             case PROPERTYHANDLE_STRIPE_COLOR_B:
423             {
424                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeColorB\"?" );
425                 sal_Int32 nValue = 0;
426                 seqValues[nProperty] >>= nValue;
427                 m_bStripeColorB = nValue;
428             }
429             break;
430 
431             case PROPERTYHANDLE_STRIPE_LENGTH:
432             {
433                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeLength\"?" );
434                 seqValues[nProperty] >>= m_nStripeLength;
435             }
436             break;
437 
438             // #i73602#
439             case PROPERTYHANDLE_OVERLAYBUFFER_CALC:
440             {
441                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_Calc\"?" );
442                 seqValues[nProperty] >>= m_bOverlayBuffer_Calc;
443             }
444             break;
445 
446             case PROPERTYHANDLE_OVERLAYBUFFER_WRITER:
447             {
448                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_Writer\"?" );
449                 seqValues[nProperty] >>= m_bOverlayBuffer_Writer;
450             }
451             break;
452 
453             case PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS:
454             {
455                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_DrawImpress\"?" );
456                 seqValues[nProperty] >>= m_bOverlayBuffer_DrawImpress;
457             }
458             break;
459 
460             // #i74769#, #i75172#
461             case PROPERTYHANDLE_PAINTBUFFER_CALC:
462             {
463                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_Calc\"?" );
464                 seqValues[nProperty] >>= m_bPaintBuffer_Calc;
465             }
466             break;
467 
468             case PROPERTYHANDLE_PAINTBUFFER_WRITER:
469             {
470                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_Writer\"?" );
471                 seqValues[nProperty] >>= m_bPaintBuffer_Writer;
472             }
473             break;
474 
475             case PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS:
476             {
477                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_DrawImpress\"?" );
478                 seqValues[nProperty] >>= m_bPaintBuffer_DrawImpress;
479             }
480             break;
481 
482             // #i4219#
483             case PROPERTYHANDLE_MAXIMUMPAPERWIDTH:
484             {
485                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperWidth\"?" );
486                 seqValues[nProperty] >>= m_nMaximumPaperWidth;
487             }
488             break;
489 
490             case PROPERTYHANDLE_MAXIMUMPAPERHEIGHT:
491             {
492                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperHeight\"?" );
493                 seqValues[nProperty] >>= m_nMaximumPaperHeight;
494             }
495             break;
496 
497             case PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN:
498             {
499                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperLeftMargin\"?" );
500                 seqValues[nProperty] >>= m_nMaximumPaperLeftMargin;
501             }
502             break;
503 
504             case PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN:
505             {
506                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperRightMargin\"?" );
507                 seqValues[nProperty] >>= m_nMaximumPaperRightMargin;
508             }
509             break;
510 
511             case PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN:
512             {
513                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperTopMargin\"?" );
514                 seqValues[nProperty] >>= m_nMaximumPaperTopMargin;
515             }
516             break;
517 
518             case PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN:
519             {
520                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperBottomMargin\"?" );
521                 seqValues[nProperty] >>= m_nMaximumPaperBottomMargin;
522             }
523             break;
524 
525             // primitives
526             case PROPERTYHANDLE_ANTIALIASING:
527             {
528                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\AntiAliasing\"?" );
529                 seqValues[nProperty] >>= m_bAntiAliasing;
530             }
531             break;
532 
533             // primitives
534             case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE:
535             {
536                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SnapHorVerLinesToDiscrete\"?" );
537                 seqValues[nProperty] >>= m_bSnapHorVerLinesToDiscrete;
538             }
539             break;
540 
541             case PROPERTYHANDLE_SOLIDDRAGCREATE:
542             {
543                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SolidDragCreate\"?" );
544                 seqValues[nProperty] >>= m_bSolidDragCreate;
545             }
546             break;
547 
548             case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT:
549             {
550                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderDecoratedTextDirect\"?" );
551                 seqValues[nProperty] >>= m_bRenderDecoratedTextDirect;
552             }
553             break;
554 
555             case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT:
556             {
557                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderSimpleTextDirect\"?" );
558                 seqValues[nProperty] >>= m_bRenderSimpleTextDirect;
559             }
560             break;
561 
562             case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT:
563             {
564                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\Quadratic3DRenderLimit\"?" );
565                 seqValues[nProperty] >>= m_nQuadratic3DRenderLimit;
566             }
567             break;
568 
569             case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT:
570             {
571                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_LONG), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\QuadraticFormControlRenderLimit\"?" );
572                 seqValues[nProperty] >>= m_nQuadraticFormControlRenderLimit;
573             }
574             break;
575 
576             // #i97672# selection settings
577             case PROPERTYHANDLE_TRANSPARENTSELECTION:
578             {
579                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_BOOLEAN), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\TransparentSelection\"?" );
580                 seqValues[nProperty] >>= m_bTransparentSelection;
581             }
582             break;
583 
584             case PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT:
585             {
586                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\TransparentSelectionPercent\"?" );
587                 seqValues[nProperty] >>= m_nTransparentSelectionPercent;
588             }
589 
590             case PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT:
591             {
592                 DBG_ASSERT(!(seqValues[nProperty].getValueTypeClass()!=TypeClass_SHORT), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SelectionMaximumLuminancePercent\"?" );
593                 seqValues[nProperty] >>= m_nSelectionMaximumLuminancePercent;
594             }
595             break;
596         }
597     }
598 }
599 
600 //*****************************************************************************************************************
601 //  destructor
602 //*****************************************************************************************************************
603 SvtOptionsDrawinglayer_Impl::~SvtOptionsDrawinglayer_Impl()
604 {
605     if( IsModified() )
606         Commit();
607 }
608 
609 //*****************************************************************************************************************
610 //  Commit
611 //*****************************************************************************************************************
612 void SvtOptionsDrawinglayer_Impl::Commit()
613 {
614     Sequence< OUString >    aSeqNames( impl_GetPropertyNames() );
615     Sequence< Any >         aSeqValues( aSeqNames.getLength() );
616 
617     for( sal_Int32 nProperty = 0, nCount = aSeqNames.getLength(); nProperty < nCount; ++nProperty )
618     {
619         switch( nProperty )
620         {
621             case PROPERTYHANDLE_OVERLAYBUFFER:
622                 aSeqValues[nProperty] <<= m_bOverlayBuffer;
623             break;
624 
625             case PROPERTYHANDLE_PAINTBUFFER:
626                 aSeqValues[nProperty] <<= m_bPaintBuffer;
627             break;
628 
629             case PROPERTYHANDLE_STRIPE_COLOR_A:
630                 aSeqValues[nProperty] <<= m_bStripeColorA.GetColor();
631             break;
632 
633             case PROPERTYHANDLE_STRIPE_COLOR_B:
634                 aSeqValues[nProperty] <<= m_bStripeColorB.GetColor();
635             break;
636 
637             case PROPERTYHANDLE_STRIPE_LENGTH:
638                 aSeqValues[nProperty] <<= m_nStripeLength;
639             break;
640 
641             // #i73602#
642             case PROPERTYHANDLE_OVERLAYBUFFER_CALC:
643                 aSeqValues[nProperty] <<= m_bOverlayBuffer_Calc;
644             break;
645 
646             case PROPERTYHANDLE_OVERLAYBUFFER_WRITER:
647                 aSeqValues[nProperty] <<= m_bOverlayBuffer_Writer;
648             break;
649 
650             case PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS:
651                 aSeqValues[nProperty] <<= m_bOverlayBuffer_DrawImpress;
652             break;
653 
654             // #i74769#, #i75172#
655             case PROPERTYHANDLE_PAINTBUFFER_CALC:
656                 aSeqValues[nProperty] <<= m_bPaintBuffer_Calc;
657             break;
658 
659             case PROPERTYHANDLE_PAINTBUFFER_WRITER:
660                 aSeqValues[nProperty] <<= m_bPaintBuffer_Writer;
661             break;
662 
663             case PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS:
664                 aSeqValues[nProperty] <<= m_bPaintBuffer_DrawImpress;
665             break;
666 
667             // #i4219#
668             case PROPERTYHANDLE_MAXIMUMPAPERWIDTH:
669                 aSeqValues[nProperty] <<= m_nMaximumPaperWidth;
670             break;
671 
672             case PROPERTYHANDLE_MAXIMUMPAPERHEIGHT:
673                 aSeqValues[nProperty] <<= m_nMaximumPaperHeight;
674             break;
675 
676             case PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN:
677                 aSeqValues[nProperty] <<= m_nMaximumPaperLeftMargin;
678             break;
679 
680             case PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN:
681                 aSeqValues[nProperty] <<= m_nMaximumPaperRightMargin;
682             break;
683 
684             case PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN:
685                 aSeqValues[nProperty] <<= m_nMaximumPaperTopMargin;
686             break;
687 
688             case PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN:
689                 aSeqValues[nProperty] <<= m_nMaximumPaperBottomMargin;
690             break;
691 
692             // primitives
693             case PROPERTYHANDLE_ANTIALIASING:
694                 aSeqValues[nProperty] <<= m_bAntiAliasing;
695             break;
696 
697             case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE:
698                 aSeqValues[nProperty] <<= m_bSnapHorVerLinesToDiscrete;
699             break;
700 
701             case PROPERTYHANDLE_SOLIDDRAGCREATE:
702                 aSeqValues[nProperty] <<= m_bSolidDragCreate;
703             break;
704 
705             case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT:
706                 aSeqValues[nProperty] <<= m_bRenderDecoratedTextDirect;
707             break;
708 
709             case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT:
710                 aSeqValues[nProperty] <<= m_bRenderSimpleTextDirect;
711             break;
712 
713             case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT:
714                 aSeqValues[nProperty] <<= m_nQuadratic3DRenderLimit;
715             break;
716 
717             case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT:
718                 aSeqValues[nProperty] <<= m_nQuadraticFormControlRenderLimit;
719             break;
720 
721             // #i97672# selection settings
722             case PROPERTYHANDLE_TRANSPARENTSELECTION:
723                 aSeqValues[nProperty] <<= m_bTransparentSelection;
724             break;
725 
726             case PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT:
727                 aSeqValues[nProperty] <<= m_nTransparentSelectionPercent;
728             break;
729 
730             case PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT:
731                 aSeqValues[nProperty] <<= m_nSelectionMaximumLuminancePercent;
732             break;
733         }
734     }
735 
736     PutProperties( aSeqNames, aSeqValues );
737 }
738 
739 void SvtOptionsDrawinglayer_Impl::Notify( const com::sun::star::uno::Sequence<rtl::OUString>& )
740 {
741 }
742 
743 //*****************************************************************************************************************
744 //  public method
745 //*****************************************************************************************************************
746 sal_Bool SvtOptionsDrawinglayer_Impl::IsOverlayBuffer() const
747 {
748     return m_bOverlayBuffer;
749 }
750 
751 //*****************************************************************************************************************
752 //  public method
753 //*****************************************************************************************************************
754 sal_Bool SvtOptionsDrawinglayer_Impl::IsPaintBuffer() const
755 {
756     return m_bPaintBuffer;
757 }
758 
759 //*****************************************************************************************************************
760 //  public method
761 //*****************************************************************************************************************
762 Color SvtOptionsDrawinglayer_Impl::GetStripeColorA() const
763 {
764     return m_bStripeColorA;
765 }
766 
767 //*****************************************************************************************************************
768 //  public method
769 //*****************************************************************************************************************
770 Color SvtOptionsDrawinglayer_Impl::GetStripeColorB() const
771 {
772     return m_bStripeColorB;
773 }
774 
775 //*****************************************************************************************************************
776 //  public method
777 //*****************************************************************************************************************
778 sal_uInt16 SvtOptionsDrawinglayer_Impl::GetStripeLength() const
779 {
780     return m_nStripeLength;
781 }
782 
783 // #i73602#
784 sal_Bool SvtOptionsDrawinglayer_Impl::IsOverlayBuffer_Calc() const
785 {
786     return m_bOverlayBuffer_Calc;
787 }
788 
789 sal_Bool SvtOptionsDrawinglayer_Impl::IsOverlayBuffer_Writer() const
790 {
791     return m_bOverlayBuffer_Writer;
792 }
793 
794 sal_Bool SvtOptionsDrawinglayer_Impl::IsOverlayBuffer_DrawImpress() const
795 {
796     return m_bOverlayBuffer_DrawImpress;
797 }
798 
799 // #i74769#, #i75172#
800 sal_Bool SvtOptionsDrawinglayer_Impl::IsPaintBuffer_Calc() const
801 {
802     return m_bPaintBuffer_Calc;
803 }
804 
805 sal_Bool SvtOptionsDrawinglayer_Impl::IsPaintBuffer_Writer() const
806 {
807     return m_bPaintBuffer_Writer;
808 }
809 
810 sal_Bool SvtOptionsDrawinglayer_Impl::IsPaintBuffer_DrawImpress() const
811 {
812     return m_bPaintBuffer_DrawImpress;
813 }
814 
815 // #i4219#
816 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetMaximumPaperWidth() const
817 {
818     return m_nMaximumPaperWidth;
819 }
820 
821 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetMaximumPaperHeight() const
822 {
823     return m_nMaximumPaperHeight;
824 }
825 
826 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetMaximumPaperLeftMargin() const
827 {
828     return m_nMaximumPaperLeftMargin;
829 }
830 
831 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetMaximumPaperRightMargin() const
832 {
833     return m_nMaximumPaperRightMargin;
834 }
835 
836 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetMaximumPaperTopMargin() const
837 {
838     return m_nMaximumPaperTopMargin;
839 }
840 
841 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetMaximumPaperBottomMargin() const
842 {
843     return m_nMaximumPaperBottomMargin;
844 }
845 
846 //*****************************************************************************************************************
847 //  public method
848 //*****************************************************************************************************************
849 void SvtOptionsDrawinglayer_Impl::SetOverlayBuffer( sal_Bool bState )
850 {
851     if(m_bOverlayBuffer != bState)
852     {
853         m_bOverlayBuffer = bState;
854         SetModified();
855     }
856 }
857 
858 //*****************************************************************************************************************
859 //  public method
860 //*****************************************************************************************************************
861 void SvtOptionsDrawinglayer_Impl::SetPaintBuffer( sal_Bool bState )
862 {
863     if(m_bPaintBuffer != bState)
864     {
865         m_bPaintBuffer = bState;
866         SetModified();
867     }
868 }
869 
870 //*****************************************************************************************************************
871 //  public method
872 //*****************************************************************************************************************
873 void SvtOptionsDrawinglayer_Impl::SetStripeColorA( Color aColor )
874 {
875     if(m_bStripeColorA != aColor)
876     {
877         m_bStripeColorA = aColor;
878         SetModified();
879     }
880 }
881 
882 //*****************************************************************************************************************
883 //  public method
884 //*****************************************************************************************************************
885 void SvtOptionsDrawinglayer_Impl::SetStripeColorB( Color aColor )
886 {
887     if(m_bStripeColorB != aColor)
888     {
889         m_bStripeColorB = aColor;
890         SetModified();
891     }
892 }
893 
894 //*****************************************************************************************************************
895 //  public method
896 //*****************************************************************************************************************
897 void SvtOptionsDrawinglayer_Impl::SetStripeLength( sal_uInt16 nLength )
898 {
899     if(m_nStripeLength != nLength)
900     {
901         m_nStripeLength = nLength;
902         SetModified();
903     }
904 }
905 
906 // #i73602#
907 void SvtOptionsDrawinglayer_Impl::SetOverlayBuffer_Calc( sal_Bool bState )
908 {
909     if(m_bOverlayBuffer_Calc != bState)
910     {
911         m_bOverlayBuffer_Calc = bState;
912         SetModified();
913     }
914 }
915 
916 void SvtOptionsDrawinglayer_Impl::SetOverlayBuffer_Writer( sal_Bool bState )
917 {
918     if(m_bOverlayBuffer_Writer != bState)
919     {
920         m_bOverlayBuffer_Writer = bState;
921         SetModified();
922     }
923 }
924 
925 void SvtOptionsDrawinglayer_Impl::SetOverlayBuffer_DrawImpress( sal_Bool bState )
926 {
927     if(m_bOverlayBuffer_DrawImpress != bState)
928     {
929         m_bOverlayBuffer_DrawImpress = bState;
930         SetModified();
931     }
932 }
933 
934 // #i74769#, #i75172#
935 void SvtOptionsDrawinglayer_Impl::SetPaintBuffer_Calc( sal_Bool bState )
936 {
937     if(m_bPaintBuffer_Calc != bState)
938     {
939         m_bPaintBuffer_Calc = bState;
940         SetModified();
941     }
942 }
943 
944 void SvtOptionsDrawinglayer_Impl::SetPaintBuffer_Writer( sal_Bool bState )
945 {
946     if(m_bPaintBuffer_Writer != bState)
947     {
948         m_bPaintBuffer_Writer = bState;
949         SetModified();
950     }
951 }
952 
953 void SvtOptionsDrawinglayer_Impl::SetPaintBuffer_DrawImpress( sal_Bool bState )
954 {
955     if(m_bPaintBuffer_DrawImpress != bState)
956     {
957         m_bPaintBuffer_DrawImpress = bState;
958         SetModified();
959     }
960 }
961 
962 // #i4219#
963 void SvtOptionsDrawinglayer_Impl::SetMaximumPaperWidth( sal_uInt32 nNew )
964 {
965     if(m_nMaximumPaperWidth != nNew)
966     {
967         m_nMaximumPaperWidth = nNew;
968         SetModified();
969     }
970 }
971 
972 void SvtOptionsDrawinglayer_Impl::SetMaximumPaperHeight( sal_uInt32 nNew )
973 {
974     if(m_nMaximumPaperHeight != nNew)
975     {
976         m_nMaximumPaperHeight = nNew;
977         SetModified();
978     }
979 }
980 
981 void SvtOptionsDrawinglayer_Impl::SetMaximumPaperLeftMargin( sal_uInt32 nNew )
982 {
983     if(m_nMaximumPaperLeftMargin != nNew)
984     {
985         m_nMaximumPaperLeftMargin = nNew;
986         SetModified();
987     }
988 }
989 
990 void SvtOptionsDrawinglayer_Impl::SetMaximumPaperRightMargin( sal_uInt32 nNew )
991 {
992     if(m_nMaximumPaperRightMargin != nNew)
993     {
994         m_nMaximumPaperRightMargin = nNew;
995         SetModified();
996     }
997 }
998 
999 void SvtOptionsDrawinglayer_Impl::SetMaximumPaperTopMargin( sal_uInt32 nNew )
1000 {
1001     if(m_nMaximumPaperTopMargin != nNew)
1002     {
1003         m_nMaximumPaperTopMargin = nNew;
1004         SetModified();
1005     }
1006 }
1007 
1008 void SvtOptionsDrawinglayer_Impl::SetMaximumPaperBottomMargin( sal_uInt32 nNew )
1009 {
1010     if(m_nMaximumPaperBottomMargin != nNew)
1011     {
1012         m_nMaximumPaperBottomMargin = nNew;
1013         SetModified();
1014     }
1015 }
1016 
1017 // helper
1018 sal_Bool SvtOptionsDrawinglayer_Impl::IsAAPossibleOnThisSystem() const
1019 {
1020     if(!m_bAllowAAChecked)
1021     {
1022         SvtOptionsDrawinglayer_Impl* pThat = const_cast< SvtOptionsDrawinglayer_Impl* >(this);
1023         pThat->m_bAllowAAChecked = true;
1024 
1025 #ifdef WIN32
1026         // WIN32 uses GDIPlus with VCL forthe first incarnation; this will be enhanced
1027         // in the future to use canvases and the canvas renderer, thus a AA-abled
1028         // canvas needs to be checked here in the future.
1029         // Currently, just allow AA for WIN32
1030 #endif
1031 
1032         // check XRenderExtension
1033         if(m_bAllowAA && !Application::GetDefaultDevice()->supportsOperation( OutDevSupport_TransparentRect ))
1034         {
1035             pThat->m_bAllowAA = false;
1036         }
1037     }
1038 
1039     return m_bAllowAA;
1040 }
1041 
1042 // primitives
1043 sal_Bool SvtOptionsDrawinglayer_Impl::IsAntiAliasing() const
1044 {
1045     return m_bAntiAliasing;
1046 }
1047 
1048 sal_Bool SvtOptionsDrawinglayer_Impl::IsSnapHorVerLinesToDiscrete() const
1049 {
1050     return m_bSnapHorVerLinesToDiscrete;
1051 }
1052 
1053 sal_Bool SvtOptionsDrawinglayer_Impl::IsSolidDragCreate() const
1054 {
1055     return m_bSolidDragCreate;
1056 }
1057 
1058 sal_Bool SvtOptionsDrawinglayer_Impl::IsRenderDecoratedTextDirect() const
1059 {
1060     return m_bRenderDecoratedTextDirect;
1061 }
1062 
1063 sal_Bool SvtOptionsDrawinglayer_Impl::IsRenderSimpleTextDirect() const
1064 {
1065     return m_bRenderSimpleTextDirect;
1066 }
1067 
1068 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetQuadratic3DRenderLimit() const
1069 {
1070     return m_nQuadratic3DRenderLimit;
1071 }
1072 
1073 sal_uInt32 SvtOptionsDrawinglayer_Impl::GetQuadraticFormControlRenderLimit() const
1074 {
1075     return m_nQuadraticFormControlRenderLimit;
1076 }
1077 
1078 void SvtOptionsDrawinglayer_Impl::SetAntiAliasing( sal_Bool bState )
1079 {
1080     if(m_bAntiAliasing != bState)
1081     {
1082         m_bAntiAliasing = bState;
1083         SetModified();
1084     }
1085 }
1086 
1087 void SvtOptionsDrawinglayer_Impl::SetSnapHorVerLinesToDiscrete( sal_Bool bState )
1088 {
1089     if(m_bSnapHorVerLinesToDiscrete != bState)
1090     {
1091         m_bSnapHorVerLinesToDiscrete = bState;
1092         SetModified();
1093     }
1094 }
1095 
1096 void SvtOptionsDrawinglayer_Impl::SetSolidDragCreate( sal_Bool bState )
1097 {
1098     if(m_bSolidDragCreate != bState)
1099     {
1100         m_bSolidDragCreate = bState;
1101         SetModified();
1102     }
1103 }
1104 
1105 void SvtOptionsDrawinglayer_Impl::SetRenderDecoratedTextDirect( sal_Bool bState )
1106 {
1107     if(m_bRenderDecoratedTextDirect != bState)
1108     {
1109         m_bRenderDecoratedTextDirect = bState;
1110         SetModified();
1111     }
1112 }
1113 
1114 void SvtOptionsDrawinglayer_Impl::SetRenderSimpleTextDirect( sal_Bool bState )
1115 {
1116     if(m_bRenderSimpleTextDirect != bState)
1117     {
1118         m_bRenderSimpleTextDirect = bState;
1119         SetModified();
1120     }
1121 }
1122 
1123 void SvtOptionsDrawinglayer_Impl::SetQuadratic3DRenderLimit(sal_uInt32 nNew)
1124 {
1125     if(m_nQuadratic3DRenderLimit != nNew)
1126     {
1127         m_nQuadratic3DRenderLimit = nNew;
1128         SetModified();
1129     }
1130 }
1131 
1132 void SvtOptionsDrawinglayer_Impl::SetQuadraticFormControlRenderLimit(sal_uInt32 nNew)
1133 {
1134     if(m_nQuadraticFormControlRenderLimit != nNew)
1135     {
1136         m_nQuadraticFormControlRenderLimit = nNew;
1137         SetModified();
1138     }
1139 }
1140 
1141 // #i97672# selection settings
1142 sal_Bool SvtOptionsDrawinglayer_Impl::IsTransparentSelection() const
1143 {
1144     return m_bTransparentSelection;
1145 }
1146 
1147 void SvtOptionsDrawinglayer_Impl::SetTransparentSelection( sal_Bool bState )
1148 {
1149     if(m_bTransparentSelection != bState)
1150     {
1151         m_bTransparentSelection = bState;
1152         SetModified();
1153     }
1154 }
1155 
1156 void SvtOptionsDrawinglayer_Impl::SetTransparentSelectionPercent( sal_uInt16 nPercent )
1157 {
1158     if(m_nTransparentSelectionPercent != nPercent)
1159     {
1160         m_nTransparentSelectionPercent = nPercent;
1161         SetModified();
1162     }
1163 }
1164 
1165 sal_uInt16 SvtOptionsDrawinglayer_Impl::GetTransparentSelectionPercent() const
1166 {
1167     return m_nTransparentSelectionPercent;
1168 }
1169 
1170 void SvtOptionsDrawinglayer_Impl::SetSelectionMaximumLuminancePercent( sal_uInt16 nPercent )
1171 {
1172     if(m_nSelectionMaximumLuminancePercent != nPercent)
1173     {
1174         m_nSelectionMaximumLuminancePercent = nPercent;
1175         SetModified();
1176     }
1177 }
1178 
1179 sal_uInt16 SvtOptionsDrawinglayer_Impl::GetSelectionMaximumLuminancePercent() const
1180 {
1181     return m_nSelectionMaximumLuminancePercent;
1182 }
1183 
1184 //*****************************************************************************************************************
1185 //  private method
1186 //*****************************************************************************************************************
1187 Sequence< OUString > SvtOptionsDrawinglayer_Impl::impl_GetPropertyNames()
1188 {
1189     // Build static list of configuration key names.
1190     static const OUString pProperties[] =
1191     {
1192         PROPERTYNAME_OVERLAYBUFFER      ,
1193         PROPERTYNAME_PAINTBUFFER        ,
1194         PROPERTYNAME_STRIPE_COLOR_A     ,
1195         PROPERTYNAME_STRIPE_COLOR_B     ,
1196         PROPERTYNAME_STRIPE_LENGTH      ,
1197 
1198         // #i73602#
1199         PROPERTYNAME_OVERLAYBUFFER_CALC,
1200         PROPERTYNAME_OVERLAYBUFFER_WRITER,
1201         PROPERTYNAME_OVERLAYBUFFER_DRAWIMPRESS,
1202 
1203         // #i74769#, #i75172#
1204         PROPERTYNAME_PAINTBUFFER_CALC,
1205         PROPERTYNAME_PAINTBUFFER_WRITER,
1206         PROPERTYNAME_PAINTBUFFER_DRAWIMPRESS,
1207 
1208         // #i4219#
1209         PROPERTYNAME_MAXIMUMPAPERWIDTH,
1210         PROPERTYNAME_MAXIMUMPAPERHEIGHT,
1211         PROPERTYNAME_MAXIMUMPAPERLEFTMARGIN,
1212         PROPERTYNAME_MAXIMUMPAPERRIGHTMARGIN,
1213         PROPERTYNAME_MAXIMUMPAPERTOPMARGIN,
1214         PROPERTYNAME_MAXIMUMPAPERBOTTOMMARGIN,
1215 
1216         // primitives
1217         PROPERTYNAME_ANTIALIASING,
1218         PROPERTYNAME_SNAPHORVERLINESTODISCRETE,
1219         PROPERTYNAME_SOLIDDRAGCREATE,
1220         PROPERTYNAME_RENDERDECORATEDTEXTDIRECT,
1221         PROPERTYNAME_RENDERSIMPLETEXTDIRECT,
1222         PROPERTYNAME_QUADRATIC3DRENDERLIMIT,
1223         PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT,
1224 
1225         // #i97672# selection settings
1226         PROPERTYNAME_TRANSPARENTSELECTION,
1227         PROPERTYNAME_TRANSPARENTSELECTIONPERCENT,
1228         PROPERTYNAME_SELECTIONMAXIMUMLUMINANCEPERCENT
1229     };
1230 
1231     // Initialize return sequence with these list ...
1232     static const Sequence< OUString > seqPropertyNames( pProperties, PROPERTYCOUNT );
1233     // ... and return it.
1234     return seqPropertyNames;
1235 }
1236 
1237 //*****************************************************************************************************************
1238 //  initialize static member
1239 //  DON'T DO IT IN YOUR HEADER!
1240 //  see definition for further informations
1241 //*****************************************************************************************************************
1242 SvtOptionsDrawinglayer_Impl* SvtOptionsDrawinglayer::m_pDataContainer = NULL;
1243 sal_Int32 SvtOptionsDrawinglayer::m_nRefCount = 0;
1244 
1245 //*****************************************************************************************************************
1246 //  constructor
1247 //*****************************************************************************************************************
1248 SvtOptionsDrawinglayer::SvtOptionsDrawinglayer()
1249 {
1250     // Global access, must be guarded (multithreading!).
1251     MutexGuard aGuard( GetOwnStaticMutex() );
1252     // Increase ouer refcount ...
1253     ++m_nRefCount;
1254     // ... and initialize ouer data container only if it not already!
1255     if( m_pDataContainer == NULL )
1256     {
1257         m_pDataContainer = new SvtOptionsDrawinglayer_Impl();
1258     }
1259 }
1260 
1261 //*****************************************************************************************************************
1262 //  destructor
1263 //*****************************************************************************************************************
1264 SvtOptionsDrawinglayer::~SvtOptionsDrawinglayer()
1265 {
1266     // Global access, must be guarded (multithreading!)
1267     MutexGuard aGuard( GetOwnStaticMutex() );
1268     // Decrease ouer refcount.
1269     --m_nRefCount;
1270     // If last instance was deleted ...
1271     // we must destroy ouer static data container!
1272     if( m_nRefCount <= 0 )
1273     {
1274         delete m_pDataContainer;
1275         m_pDataContainer = NULL;
1276     }
1277 }
1278 
1279 //*****************************************************************************************************************
1280 //  public method
1281 //*****************************************************************************************************************
1282 sal_Bool SvtOptionsDrawinglayer::IsOverlayBuffer() const
1283 {
1284     MutexGuard aGuard( GetOwnStaticMutex() );
1285     return m_pDataContainer->IsOverlayBuffer();
1286 }
1287 
1288 //*****************************************************************************************************************
1289 //  public method
1290 //*****************************************************************************************************************
1291 sal_Bool SvtOptionsDrawinglayer::IsPaintBuffer() const
1292 {
1293     MutexGuard aGuard( GetOwnStaticMutex() );
1294     return m_pDataContainer->IsPaintBuffer();
1295 }
1296 
1297 //*****************************************************************************************************************
1298 //  public method
1299 //*****************************************************************************************************************
1300 Color SvtOptionsDrawinglayer::GetStripeColorA() const
1301 {
1302     MutexGuard aGuard( GetOwnStaticMutex() );
1303     return m_pDataContainer->GetStripeColorA();
1304 }
1305 
1306 //*****************************************************************************************************************
1307 //  public method
1308 //*****************************************************************************************************************
1309 Color SvtOptionsDrawinglayer::GetStripeColorB() const
1310 {
1311     MutexGuard aGuard( GetOwnStaticMutex() );
1312     return m_pDataContainer->GetStripeColorB();
1313 }
1314 
1315 //*****************************************************************************************************************
1316 //  public method
1317 //*****************************************************************************************************************
1318 sal_uInt16 SvtOptionsDrawinglayer::GetStripeLength() const
1319 {
1320     MutexGuard aGuard( GetOwnStaticMutex() );
1321     return m_pDataContainer->GetStripeLength();
1322 }
1323 
1324 // #i73602#
1325 sal_Bool SvtOptionsDrawinglayer::IsOverlayBuffer_Calc() const
1326 {
1327     MutexGuard aGuard( GetOwnStaticMutex() );
1328     return m_pDataContainer->IsOverlayBuffer_Calc();
1329 }
1330 
1331 sal_Bool SvtOptionsDrawinglayer::IsOverlayBuffer_Writer() const
1332 {
1333     MutexGuard aGuard( GetOwnStaticMutex() );
1334     return m_pDataContainer->IsOverlayBuffer_Writer();
1335 }
1336 
1337 sal_Bool SvtOptionsDrawinglayer::IsOverlayBuffer_DrawImpress() const
1338 {
1339     MutexGuard aGuard( GetOwnStaticMutex() );
1340     return m_pDataContainer->IsOverlayBuffer_DrawImpress();
1341 }
1342 
1343 // #i74769#, #i75172#
1344 sal_Bool SvtOptionsDrawinglayer::IsPaintBuffer_Calc() const
1345 {
1346     MutexGuard aGuard( GetOwnStaticMutex() );
1347     return m_pDataContainer->IsPaintBuffer_Calc();
1348 }
1349 
1350 sal_Bool SvtOptionsDrawinglayer::IsPaintBuffer_Writer() const
1351 {
1352     MutexGuard aGuard( GetOwnStaticMutex() );
1353     return m_pDataContainer->IsPaintBuffer_Writer();
1354 }
1355 
1356 sal_Bool SvtOptionsDrawinglayer::IsPaintBuffer_DrawImpress() const
1357 {
1358     MutexGuard aGuard( GetOwnStaticMutex() );
1359     return m_pDataContainer->IsPaintBuffer_DrawImpress();
1360 }
1361 
1362 // #i4219#
1363 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperWidth() const
1364 {
1365     MutexGuard aGuard( GetOwnStaticMutex() );
1366     return m_pDataContainer->GetMaximumPaperWidth();
1367 }
1368 
1369 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperHeight() const
1370 {
1371     MutexGuard aGuard( GetOwnStaticMutex() );
1372     return m_pDataContainer->GetMaximumPaperHeight();
1373 }
1374 
1375 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperLeftMargin() const
1376 {
1377     MutexGuard aGuard( GetOwnStaticMutex() );
1378     return m_pDataContainer->GetMaximumPaperLeftMargin();
1379 }
1380 
1381 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperRightMargin() const
1382 {
1383     MutexGuard aGuard( GetOwnStaticMutex() );
1384     return m_pDataContainer->GetMaximumPaperRightMargin();
1385 }
1386 
1387 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperTopMargin() const
1388 {
1389     MutexGuard aGuard( GetOwnStaticMutex() );
1390     return m_pDataContainer->GetMaximumPaperTopMargin();
1391 }
1392 
1393 sal_uInt32 SvtOptionsDrawinglayer::GetMaximumPaperBottomMargin() const
1394 {
1395     MutexGuard aGuard( GetOwnStaticMutex() );
1396     return m_pDataContainer->GetMaximumPaperBottomMargin();
1397 }
1398 
1399 //*****************************************************************************************************************
1400 //  public method
1401 //*****************************************************************************************************************
1402 void SvtOptionsDrawinglayer::SetOverlayBuffer( sal_Bool bState )
1403 {
1404     MutexGuard aGuard( GetOwnStaticMutex() );
1405     m_pDataContainer->SetOverlayBuffer( bState );
1406 }
1407 
1408 //*****************************************************************************************************************
1409 //  public method
1410 //*****************************************************************************************************************
1411 void SvtOptionsDrawinglayer::SetPaintBuffer( sal_Bool bState )
1412 {
1413     MutexGuard aGuard( GetOwnStaticMutex() );
1414     m_pDataContainer->SetPaintBuffer( bState );
1415 }
1416 
1417 //*****************************************************************************************************************
1418 //  public method
1419 //*****************************************************************************************************************
1420 void SvtOptionsDrawinglayer::SetStripeColorA( Color aColor )
1421 {
1422     MutexGuard aGuard( GetOwnStaticMutex() );
1423     m_pDataContainer->SetStripeColorA( aColor );
1424 }
1425 
1426 //*****************************************************************************************************************
1427 //  public method
1428 //*****************************************************************************************************************
1429 void SvtOptionsDrawinglayer::SetStripeColorB( Color aColor )
1430 {
1431     MutexGuard aGuard( GetOwnStaticMutex() );
1432     m_pDataContainer->SetStripeColorB( aColor );
1433 }
1434 
1435 //*****************************************************************************************************************
1436 //  public method
1437 //*****************************************************************************************************************
1438 void SvtOptionsDrawinglayer::SetStripeLength( sal_uInt16 nLength )
1439 {
1440     MutexGuard aGuard( GetOwnStaticMutex() );
1441     m_pDataContainer->SetStripeLength( nLength );
1442 }
1443 
1444 // #i73602#
1445 void SvtOptionsDrawinglayer::SetOverlayBuffer_Calc( sal_Bool bState )
1446 {
1447     MutexGuard aGuard( GetOwnStaticMutex() );
1448     m_pDataContainer->SetOverlayBuffer_Calc( bState );
1449 }
1450 
1451 void SvtOptionsDrawinglayer::SetOverlayBuffer_Writer( sal_Bool bState )
1452 {
1453     MutexGuard aGuard( GetOwnStaticMutex() );
1454     m_pDataContainer->SetOverlayBuffer_Writer( bState );
1455 }
1456 
1457 void SvtOptionsDrawinglayer::SetOverlayBuffer_DrawImpress( sal_Bool bState )
1458 {
1459     MutexGuard aGuard( GetOwnStaticMutex() );
1460     m_pDataContainer->SetOverlayBuffer_DrawImpress( bState );
1461 }
1462 
1463 // #i74769#, #i75172#
1464 void SvtOptionsDrawinglayer::SetPaintBuffer_Calc( sal_Bool bState )
1465 {
1466     MutexGuard aGuard( GetOwnStaticMutex() );
1467     m_pDataContainer->SetPaintBuffer_Calc( bState );
1468 }
1469 
1470 void SvtOptionsDrawinglayer::SetPaintBuffer_Writer( sal_Bool bState )
1471 {
1472     MutexGuard aGuard( GetOwnStaticMutex() );
1473     m_pDataContainer->SetPaintBuffer_Writer( bState );
1474 }
1475 
1476 void SvtOptionsDrawinglayer::SetPaintBuffer_DrawImpress( sal_Bool bState )
1477 {
1478     MutexGuard aGuard( GetOwnStaticMutex() );
1479     m_pDataContainer->SetPaintBuffer_DrawImpress( bState );
1480 }
1481 
1482 // #i4219#
1483 void SvtOptionsDrawinglayer::SetMaximumPaperWidth( sal_uInt32 nNew )
1484 {
1485     MutexGuard aGuard( GetOwnStaticMutex() );
1486     m_pDataContainer->SetMaximumPaperWidth( nNew );
1487 }
1488 
1489 void SvtOptionsDrawinglayer::SetMaximumPaperHeight( sal_uInt32 nNew )
1490 {
1491     MutexGuard aGuard( GetOwnStaticMutex() );
1492     m_pDataContainer->SetMaximumPaperHeight( nNew );
1493 }
1494 
1495 void SvtOptionsDrawinglayer::SetMaximumPaperLeftMargin( sal_uInt32 nNew )
1496 {
1497     MutexGuard aGuard( GetOwnStaticMutex() );
1498     m_pDataContainer->SetMaximumPaperLeftMargin( nNew );
1499 }
1500 
1501 void SvtOptionsDrawinglayer::SetMaximumPaperRightMargin( sal_uInt32 nNew )
1502 {
1503     MutexGuard aGuard( GetOwnStaticMutex() );
1504     m_pDataContainer->SetMaximumPaperRightMargin( nNew );
1505 }
1506 
1507 void SvtOptionsDrawinglayer::SetMaximumPaperTopMargin( sal_uInt32 nNew )
1508 {
1509     MutexGuard aGuard( GetOwnStaticMutex() );
1510     m_pDataContainer->SetMaximumPaperTopMargin( nNew );
1511 }
1512 
1513 void SvtOptionsDrawinglayer::SetMaximumPaperBottomMargin( sal_uInt32 nNew )
1514 {
1515     MutexGuard aGuard( GetOwnStaticMutex() );
1516     m_pDataContainer->SetMaximumPaperBottomMargin( nNew );
1517 }
1518 
1519 // helper
1520 sal_Bool SvtOptionsDrawinglayer::IsAAPossibleOnThisSystem() const
1521 {
1522     return m_pDataContainer->IsAAPossibleOnThisSystem();
1523 }
1524 
1525 // primitives
1526 sal_Bool SvtOptionsDrawinglayer::IsAntiAliasing() const
1527 {
1528     MutexGuard aGuard( GetOwnStaticMutex() );
1529     return m_pDataContainer->IsAntiAliasing() && IsAAPossibleOnThisSystem();
1530 }
1531 
1532 sal_Bool SvtOptionsDrawinglayer::IsSnapHorVerLinesToDiscrete() const
1533 {
1534     MutexGuard aGuard( GetOwnStaticMutex() );
1535     return m_pDataContainer->IsAntiAliasing() && m_pDataContainer->IsSnapHorVerLinesToDiscrete();
1536 }
1537 
1538 sal_Bool SvtOptionsDrawinglayer::IsSolidDragCreate() const
1539 {
1540     MutexGuard aGuard( GetOwnStaticMutex() );
1541     return m_pDataContainer->IsSolidDragCreate();
1542 }
1543 
1544 sal_Bool SvtOptionsDrawinglayer::IsRenderDecoratedTextDirect() const
1545 {
1546     MutexGuard aGuard( GetOwnStaticMutex() );
1547     return m_pDataContainer->IsRenderDecoratedTextDirect();
1548 }
1549 
1550 sal_Bool SvtOptionsDrawinglayer::IsRenderSimpleTextDirect() const
1551 {
1552     MutexGuard aGuard( GetOwnStaticMutex() );
1553     return m_pDataContainer->IsRenderSimpleTextDirect();
1554 }
1555 
1556 sal_uInt32 SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit() const
1557 {
1558     MutexGuard aGuard( GetOwnStaticMutex() );
1559     return m_pDataContainer->GetQuadratic3DRenderLimit();
1560 }
1561 
1562 sal_uInt32 SvtOptionsDrawinglayer::GetQuadraticFormControlRenderLimit() const
1563 {
1564     MutexGuard aGuard( GetOwnStaticMutex() );
1565     return m_pDataContainer->GetQuadraticFormControlRenderLimit();
1566 }
1567 
1568 void SvtOptionsDrawinglayer::SetAntiAliasing( sal_Bool bState )
1569 {
1570     MutexGuard aGuard( GetOwnStaticMutex() );
1571     m_pDataContainer->SetAntiAliasing( bState );
1572 }
1573 
1574 void SvtOptionsDrawinglayer::SetSnapHorVerLinesToDiscrete( sal_Bool bState )
1575 {
1576     MutexGuard aGuard( GetOwnStaticMutex() );
1577     m_pDataContainer->SetSnapHorVerLinesToDiscrete( bState );
1578 }
1579 
1580 void SvtOptionsDrawinglayer::SetSolidDragCreate( sal_Bool bState )
1581 {
1582     MutexGuard aGuard( GetOwnStaticMutex() );
1583     m_pDataContainer->SetSolidDragCreate( bState );
1584 }
1585 
1586 void SvtOptionsDrawinglayer::SetRenderDecoratedTextDirect( sal_Bool bState )
1587 {
1588     MutexGuard aGuard( GetOwnStaticMutex() );
1589     m_pDataContainer->SetRenderDecoratedTextDirect( bState );
1590 }
1591 
1592 void SvtOptionsDrawinglayer::SetRenderSimpleTextDirect( sal_Bool bState )
1593 {
1594     MutexGuard aGuard( GetOwnStaticMutex() );
1595     m_pDataContainer->SetRenderSimpleTextDirect( bState );
1596 }
1597 
1598 void SvtOptionsDrawinglayer::SetQuadratic3DRenderLimit(sal_uInt32 nNew)
1599 {
1600     MutexGuard aGuard( GetOwnStaticMutex() );
1601     m_pDataContainer->SetQuadratic3DRenderLimit( nNew );
1602 }
1603 
1604 void SvtOptionsDrawinglayer::SetQuadraticFormControlRenderLimit(sal_uInt32 nNew)
1605 {
1606     MutexGuard aGuard( GetOwnStaticMutex() );
1607     m_pDataContainer->SetQuadraticFormControlRenderLimit( nNew );
1608 }
1609 
1610 // #i97672# selection settings
1611 sal_Bool SvtOptionsDrawinglayer::IsTransparentSelection() const
1612 {
1613     MutexGuard aGuard( GetOwnStaticMutex() );
1614     return m_pDataContainer->IsTransparentSelection();
1615 }
1616 
1617 void SvtOptionsDrawinglayer::SetTransparentSelection( sal_Bool bState )
1618 {
1619     MutexGuard aGuard( GetOwnStaticMutex() );
1620     m_pDataContainer->SetTransparentSelection( bState );
1621 }
1622 
1623 sal_uInt16 SvtOptionsDrawinglayer::GetTransparentSelectionPercent() const
1624 {
1625     MutexGuard aGuard( GetOwnStaticMutex() );
1626     sal_uInt16 aRetval(m_pDataContainer->GetTransparentSelectionPercent());
1627 
1628     // crop to range [10% .. 90%]
1629     if(aRetval < 10)
1630     {
1631         aRetval = 10;
1632     }
1633 
1634     if(aRetval > 90)
1635     {
1636         aRetval = 90;
1637     }
1638 
1639     return aRetval;
1640 }
1641 
1642 void SvtOptionsDrawinglayer::SetTransparentSelectionPercent( sal_uInt16 nPercent )
1643 {
1644     MutexGuard aGuard( GetOwnStaticMutex() );
1645 
1646     // crop to range [10% .. 90%]
1647     if(nPercent < 10)
1648     {
1649         nPercent = 10;
1650     }
1651 
1652     if(nPercent > 90)
1653     {
1654         nPercent = 90;
1655     }
1656 
1657     m_pDataContainer->SetTransparentSelectionPercent( nPercent );
1658 }
1659 
1660 sal_uInt16 SvtOptionsDrawinglayer::GetSelectionMaximumLuminancePercent() const
1661 {
1662     MutexGuard aGuard( GetOwnStaticMutex() );
1663     sal_uInt16 aRetval(m_pDataContainer->GetSelectionMaximumLuminancePercent());
1664 
1665     // crop to range [0% .. 100%]
1666     if(aRetval > 90)
1667     {
1668         aRetval = 90;
1669     }
1670 
1671     return aRetval;
1672 }
1673 
1674 void SvtOptionsDrawinglayer::SetSelectionMaximumLuminancePercent( sal_uInt16 nPercent )
1675 {
1676     MutexGuard aGuard( GetOwnStaticMutex() );
1677 
1678     // crop to range [0% .. 100%]
1679     if(nPercent > 90)
1680     {
1681         nPercent = 90;
1682     }
1683 
1684     m_pDataContainer->SetSelectionMaximumLuminancePercent( nPercent );
1685 }
1686 
1687 //*****************************************************************************************************************
1688 //  private method
1689 //*****************************************************************************************************************
1690 Mutex& SvtOptionsDrawinglayer::GetOwnStaticMutex()
1691 {
1692     // Initialize static mutex only for one time!
1693     static Mutex* pMutex = NULL;
1694     // If these method first called (Mutex not already exist!) ...
1695     if( pMutex == NULL )
1696     {
1697         // ... we must create a new one. Protect follow code with the global mutex -
1698         // It must be - we create a static variable!
1699         MutexGuard aGuard( Mutex::getGlobalMutex() );
1700         // We must check our pointer again - because it can be that another instance of ouer class will be fastr then these!
1701         if( pMutex == NULL )
1702         {
1703             // Create the new mutex and set it for return on static variable.
1704             static Mutex aMutex;
1705             pMutex = &aMutex;
1706         }
1707     }
1708     // Return new created or already existing mutex object.
1709     return *pMutex;
1710 }
1711 
1712 // eof
1713 
1714