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