1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #include <svtools/optionsdrawinglayer.hxx>
21 #include <unotools/configmgr.hxx>
22 #include <unotools/configitem.hxx>
23 #include <tools/debug.hxx>
24 #include <com/sun/star/uno/Any.hxx>
25 #include <com/sun/star/uno/Sequence.hxx>
26 #include <vcl/svapp.hxx>
27 #include <vcl/outdev.hxx>
28 #include <vcl/settings.hxx>
29 #include <rtl/instance.hxx>
33 using namespace ::utl
;
34 using namespace ::osl
;
35 using namespace ::com::sun::star::uno
;
37 #define ROOTNODE_START "Office.Common/Drawinglayer"
38 #define DEFAULT_OVERLAYBUFFER true
39 #define DEFAULT_PAINTBUFFER true
40 #define DEFAULT_STRIPE_COLOR_A Color(0)
41 #define DEFAULT_STRIPE_COLOR_B Color(16581375)
42 #define DEFAULT_STRIPE_LENGTH 4
45 // #i74769#, #i75172# : Change default for Calc and Writer to True
46 #define DEFAULT_OVERLAYBUFFER_CALC true
47 #define DEFAULT_OVERLAYBUFFER_WRITER true
48 #define DEFAULT_OVERLAYBUFFER_DRAWIMPRESS true
51 #define DEFAULT_PAINTBUFFER_CALC true
52 #define DEFAULT_PAINTBUFFER_WRITER true
53 #define DEFAULT_PAINTBUFFER_DRAWIMPRESS true
56 #define DEFAULT_MAXIMUMPAPERWIDTH 600
57 #define DEFAULT_MAXIMUMPAPERHEIGHT 600
58 #define DEFAULT_MAXIMUMPAPERLEFTMARGIN 9999
59 #define DEFAULT_MAXIMUMPAPERRIGHTMARGIN 9999
60 #define DEFAULT_MAXIMUMPAPERTOPMARGIN 9999
61 #define DEFAULT_MAXIMUMPAPERBOTTOMMARGIN 9999
64 #define DEFAULT_ANTIALIASING true
65 #define DEFAULT_SNAPHORVERLINESTODISCRETE true
66 #define DEFAULT_SOLIDDRAGCREATE true
67 #define DEFAULT_RENDERDECORATEDTEXTDIRECT true
68 #define DEFAULT_RENDERSIMPLETEXTDIRECT true
69 #define DEFAULT_QUADRATIC3DRENDERLIMIT 1000000
70 #define DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT 45000
72 // #i97672# selection settings
73 #define DEFAULT_TRANSPARENTSELECTION true
74 #define DEFAULT_TRANSPARENTSELECTIONPERCENT 75
75 #define DEFAULT_SELECTIONMAXIMUMLUMINANCEPERCENT 70
77 #define PROPERTYNAME_OVERLAYBUFFER OUString("OverlayBuffer" )
78 #define PROPERTYNAME_PAINTBUFFER OUString("PaintBuffer" )
79 #define PROPERTYNAME_STRIPE_COLOR_A OUString("StripeColorA" )
80 #define PROPERTYNAME_STRIPE_COLOR_B OUString("StripeColorB" )
81 #define PROPERTYNAME_STRIPE_LENGTH OUString("StripeLength" )
84 #define PROPERTYNAME_OVERLAYBUFFER_CALC OUString("OverlayBuffer_Calc")
85 #define PROPERTYNAME_OVERLAYBUFFER_WRITER OUString("OverlayBuffer_Writer")
86 #define PROPERTYNAME_OVERLAYBUFFER_DRAWIMPRESS OUString("OverlayBuffer_DrawImpress")
89 #define PROPERTYNAME_PAINTBUFFER_CALC OUString("PaintBuffer_Calc")
90 #define PROPERTYNAME_PAINTBUFFER_WRITER OUString("PaintBuffer_Writer")
91 #define PROPERTYNAME_PAINTBUFFER_DRAWIMPRESS OUString("PaintBuffer_DrawImpress")
94 #define PROPERTYNAME_MAXIMUMPAPERWIDTH OUString("MaximumPaperWidth")
95 #define PROPERTYNAME_MAXIMUMPAPERHEIGHT OUString("MaximumPaperHeight")
96 #define PROPERTYNAME_MAXIMUMPAPERLEFTMARGIN OUString("MaximumPaperLeftMargin")
97 #define PROPERTYNAME_MAXIMUMPAPERRIGHTMARGIN OUString("MaximumPaperRightMargin")
98 #define PROPERTYNAME_MAXIMUMPAPERTOPMARGIN OUString("MaximumPaperTopMargin")
99 #define PROPERTYNAME_MAXIMUMPAPERBOTTOMMARGIN OUString("MaximumPaperBottomMargin")
102 #define PROPERTYNAME_ANTIALIASING OUString("AntiAliasing")
103 #define PROPERTYNAME_SNAPHORVERLINESTODISCRETE OUString("SnapHorVerLinesToDiscrete")
104 #define PROPERTYNAME_SOLIDDRAGCREATE OUString("SolidDragCreate")
105 #define PROPERTYNAME_RENDERDECORATEDTEXTDIRECT OUString("RenderDecoratedTextDirect")
106 #define PROPERTYNAME_RENDERSIMPLETEXTDIRECT OUString("RenderSimpleTextDirect")
107 #define PROPERTYNAME_QUADRATIC3DRENDERLIMIT OUString("Quadratic3DRenderLimit")
108 #define PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT OUString("QuadraticFormControlRenderLimit")
110 // #i97672# selection settings
111 #define PROPERTYNAME_TRANSPARENTSELECTION OUString("TransparentSelection")
112 #define PROPERTYNAME_TRANSPARENTSELECTIONPERCENT OUString("TransparentSelectionPercent")
113 #define PROPERTYNAME_SELECTIONMAXIMUMLUMINANCEPERCENT OUString("SelectionMaximumLuminancePercent")
115 #define PROPERTYHANDLE_OVERLAYBUFFER 0
116 #define PROPERTYHANDLE_PAINTBUFFER 1
117 #define PROPERTYHANDLE_STRIPE_COLOR_A 2
118 #define PROPERTYHANDLE_STRIPE_COLOR_B 3
119 #define PROPERTYHANDLE_STRIPE_LENGTH 4
122 #define PROPERTYHANDLE_OVERLAYBUFFER_CALC 5
123 #define PROPERTYHANDLE_OVERLAYBUFFER_WRITER 6
124 #define PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS 7
126 // #i74769#, #i75172#
127 #define PROPERTYHANDLE_PAINTBUFFER_CALC 8
128 #define PROPERTYHANDLE_PAINTBUFFER_WRITER 9
129 #define PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS 10
132 #define PROPERTYHANDLE_MAXIMUMPAPERWIDTH 11
133 #define PROPERTYHANDLE_MAXIMUMPAPERHEIGHT 12
134 #define PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN 13
135 #define PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN 14
136 #define PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN 15
137 #define PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN 16
140 #define PROPERTYHANDLE_ANTIALIASING 17
141 #define PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE 18
142 #define PROPERTYHANDLE_SOLIDDRAGCREATE 19
143 #define PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT 20
144 #define PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT 21
145 #define PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT 22
146 #define PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT 23
148 // #i97672# selection settings
149 #define PROPERTYHANDLE_TRANSPARENTSELECTION 24
150 #define PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT 25
151 #define PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT 26
153 #define PROPERTYCOUNT 27
155 class SvtOptionsDrawinglayer_Impl
: public ConfigItem
158 SvtOptionsDrawinglayer_Impl();
159 ~SvtOptionsDrawinglayer_Impl() override
;
161 virtual void Notify( const css::uno::Sequence
<OUString
>& aPropertyNames
) override
;
163 bool IsOverlayBuffer() const { return m_bOverlayBuffer
;}
164 bool IsPaintBuffer() const { return m_bPaintBuffer
;}
165 const Color
& GetStripeColorA() const { return m_bStripeColorA
;}
166 const Color
& GetStripeColorB() const { return m_bStripeColorB
;}
167 sal_uInt16
GetStripeLength() const { return m_nStripeLength
;}
170 bool IsOverlayBuffer_Calc() const { return m_bOverlayBuffer_Calc
;}
171 bool IsOverlayBuffer_Writer() const { return m_bOverlayBuffer_Writer
;}
172 bool IsOverlayBuffer_DrawImpress() const { return m_bOverlayBuffer_DrawImpress
;}
174 // #i74769#, #i75172#
175 bool IsPaintBuffer_Calc() const { return m_bPaintBuffer_Calc
;}
176 bool IsPaintBuffer_Writer() const { return m_bPaintBuffer_Writer
;}
177 bool IsPaintBuffer_DrawImpress() const { return m_bPaintBuffer_DrawImpress
;}
180 sal_uInt32
GetMaximumPaperWidth() const { return m_nMaximumPaperWidth
;}
181 sal_uInt32
GetMaximumPaperHeight() const { return m_nMaximumPaperHeight
;}
182 sal_uInt32
GetMaximumPaperLeftMargin() const { return m_nMaximumPaperLeftMargin
;}
183 sal_uInt32
GetMaximumPaperRightMargin() const { return m_nMaximumPaperRightMargin
;}
184 sal_uInt32
GetMaximumPaperTopMargin() const { return m_nMaximumPaperTopMargin
;}
185 sal_uInt32
GetMaximumPaperBottomMargin() const { return m_nMaximumPaperBottomMargin
;}
188 bool IsAAPossibleOnThisSystem() const;
191 bool IsAntiAliasing() const { return m_bAntiAliasing
;}
192 bool IsSnapHorVerLinesToDiscrete() const { return m_bSnapHorVerLinesToDiscrete
;}
193 bool IsSolidDragCreate() const { return m_bSolidDragCreate
;}
194 bool IsRenderDecoratedTextDirect() const { return m_bRenderDecoratedTextDirect
;}
195 bool IsRenderSimpleTextDirect() const { return m_bRenderSimpleTextDirect
;}
196 sal_uInt32
GetQuadratic3DRenderLimit() const { return m_nQuadratic3DRenderLimit
;}
197 sal_uInt32
GetQuadraticFormControlRenderLimit() const { return m_nQuadraticFormControlRenderLimit
;}
199 void SetAntiAliasing( bool bState
);
201 // #i97672# selection settings
202 bool IsTransparentSelection() const { return m_bTransparentSelection
;}
203 sal_uInt16
GetTransparentSelectionPercent() const { return m_nTransparentSelectionPercent
;}
204 sal_uInt16
GetSelectionMaximumLuminancePercent() const { return m_nSelectionMaximumLuminancePercent
;}
209 virtual void ImplCommit() final override
;
211 static Sequence
< OUString
> impl_GetPropertyNames();
217 bool m_bOverlayBuffer
;
219 Color m_bStripeColorA
;
220 Color m_bStripeColorB
;
221 sal_uInt16 m_nStripeLength
;
224 bool m_bOverlayBuffer_Calc
;
225 bool m_bOverlayBuffer_Writer
;
226 bool m_bOverlayBuffer_DrawImpress
;
228 // #i74769#, #i75172#
229 bool m_bPaintBuffer_Calc
;
230 bool m_bPaintBuffer_Writer
;
231 bool m_bPaintBuffer_DrawImpress
;
234 sal_uInt32 m_nMaximumPaperWidth
;
235 sal_uInt32 m_nMaximumPaperHeight
;
236 sal_uInt32 m_nMaximumPaperLeftMargin
;
237 sal_uInt32 m_nMaximumPaperRightMargin
;
238 sal_uInt32 m_nMaximumPaperTopMargin
;
239 sal_uInt32 m_nMaximumPaperBottomMargin
;
242 bool m_bAntiAliasing
;
243 bool m_bSnapHorVerLinesToDiscrete
;
244 bool m_bSolidDragCreate
;
245 bool m_bRenderDecoratedTextDirect
;
246 bool m_bRenderSimpleTextDirect
;
247 sal_uInt32 m_nQuadratic3DRenderLimit
;
248 sal_uInt32 m_nQuadraticFormControlRenderLimit
;
250 // #i97672# selection settings
251 sal_uInt16 m_nTransparentSelectionPercent
;
252 sal_uInt16 m_nSelectionMaximumLuminancePercent
;
253 bool m_bTransparentSelection
;
257 bool m_bAllowAAChecked
: 1;
260 SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl() :
261 ConfigItem( ROOTNODE_START
),
262 m_bOverlayBuffer( DEFAULT_OVERLAYBUFFER
),
263 m_bPaintBuffer( DEFAULT_PAINTBUFFER
),
264 m_bStripeColorA(DEFAULT_STRIPE_COLOR_A
),
265 m_bStripeColorB(DEFAULT_STRIPE_COLOR_B
),
266 m_nStripeLength(DEFAULT_STRIPE_LENGTH
),
269 m_bOverlayBuffer_Calc( DEFAULT_OVERLAYBUFFER_CALC
),
270 m_bOverlayBuffer_Writer( DEFAULT_OVERLAYBUFFER_WRITER
),
271 m_bOverlayBuffer_DrawImpress( DEFAULT_OVERLAYBUFFER_DRAWIMPRESS
),
273 // #i74769#, #i75172#
274 m_bPaintBuffer_Calc( DEFAULT_PAINTBUFFER_CALC
),
275 m_bPaintBuffer_Writer( DEFAULT_PAINTBUFFER_WRITER
),
276 m_bPaintBuffer_DrawImpress( DEFAULT_PAINTBUFFER_DRAWIMPRESS
),
279 m_nMaximumPaperWidth(DEFAULT_MAXIMUMPAPERWIDTH
),
280 m_nMaximumPaperHeight(DEFAULT_MAXIMUMPAPERHEIGHT
),
281 m_nMaximumPaperLeftMargin(DEFAULT_MAXIMUMPAPERLEFTMARGIN
),
282 m_nMaximumPaperRightMargin(DEFAULT_MAXIMUMPAPERRIGHTMARGIN
),
283 m_nMaximumPaperTopMargin(DEFAULT_MAXIMUMPAPERTOPMARGIN
),
284 m_nMaximumPaperBottomMargin(DEFAULT_MAXIMUMPAPERBOTTOMMARGIN
),
287 m_bAntiAliasing(DEFAULT_ANTIALIASING
),
288 m_bSnapHorVerLinesToDiscrete(DEFAULT_SNAPHORVERLINESTODISCRETE
),
289 m_bSolidDragCreate(DEFAULT_SOLIDDRAGCREATE
),
290 m_bRenderDecoratedTextDirect(DEFAULT_RENDERDECORATEDTEXTDIRECT
),
291 m_bRenderSimpleTextDirect(DEFAULT_RENDERSIMPLETEXTDIRECT
),
292 m_nQuadratic3DRenderLimit(DEFAULT_QUADRATIC3DRENDERLIMIT
),
293 m_nQuadraticFormControlRenderLimit(DEFAULT_QUADRATICFORMCONTROLRENDERLIMIT
),
295 // #i97672# selection settings
296 m_nTransparentSelectionPercent(DEFAULT_TRANSPARENTSELECTIONPERCENT
),
297 m_nSelectionMaximumLuminancePercent(DEFAULT_SELECTIONMAXIMUMLUMINANCEPERCENT
),
298 m_bTransparentSelection(DEFAULT_TRANSPARENTSELECTION
),
302 m_bAllowAAChecked(false)
304 Sequence
< OUString
> seqNames( impl_GetPropertyNames() );
305 Sequence
< Any
> seqValues
= GetProperties( seqNames
) ;
307 DBG_ASSERT( !(seqNames
.getLength()!=seqValues
.getLength()), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nI miss some values of configuration keys!\n" );
309 // Copy values from list in right order to our internal member.
310 sal_Int32 nPropertyCount
= seqValues
.getLength();
311 for(sal_Int32 nProperty
=0; nProperty
<nPropertyCount
; ++nProperty
)
313 if (!seqValues
[nProperty
].hasValue())
318 case PROPERTYHANDLE_OVERLAYBUFFER
:
320 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer\"?" );
321 seqValues
[nProperty
] >>= m_bOverlayBuffer
;
325 case PROPERTYHANDLE_PAINTBUFFER
:
327 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer\"?" );
328 seqValues
[nProperty
] >>= m_bPaintBuffer
;
332 case PROPERTYHANDLE_STRIPE_COLOR_A
:
334 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeColorA\"?" );
335 sal_Int32 nValue
= 0;
336 seqValues
[nProperty
] >>= nValue
;
337 m_bStripeColorA
= Color(nValue
);
341 case PROPERTYHANDLE_STRIPE_COLOR_B
:
343 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeColorB\"?" );
344 sal_Int32 nValue
= 0;
345 seqValues
[nProperty
] >>= nValue
;
346 m_bStripeColorB
= Color(nValue
);
350 case PROPERTYHANDLE_STRIPE_LENGTH
:
352 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_SHORT
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\StripeLength\"?" );
353 seqValues
[nProperty
] >>= m_nStripeLength
;
358 case PROPERTYHANDLE_OVERLAYBUFFER_CALC
:
360 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_Calc\"?" );
361 seqValues
[nProperty
] >>= m_bOverlayBuffer_Calc
;
365 case PROPERTYHANDLE_OVERLAYBUFFER_WRITER
:
367 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_Writer\"?" );
368 seqValues
[nProperty
] >>= m_bOverlayBuffer_Writer
;
372 case PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS
:
374 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\OverlayBuffer_DrawImpress\"?" );
375 seqValues
[nProperty
] >>= m_bOverlayBuffer_DrawImpress
;
379 // #i74769#, #i75172#
380 case PROPERTYHANDLE_PAINTBUFFER_CALC
:
382 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_Calc\"?" );
383 seqValues
[nProperty
] >>= m_bPaintBuffer_Calc
;
387 case PROPERTYHANDLE_PAINTBUFFER_WRITER
:
389 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_Writer\"?" );
390 seqValues
[nProperty
] >>= m_bPaintBuffer_Writer
;
394 case PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS
:
396 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\PaintBuffer_DrawImpress\"?" );
397 seqValues
[nProperty
] >>= m_bPaintBuffer_DrawImpress
;
402 case PROPERTYHANDLE_MAXIMUMPAPERWIDTH
:
404 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperWidth\"?" );
405 seqValues
[nProperty
] >>= m_nMaximumPaperWidth
;
409 case PROPERTYHANDLE_MAXIMUMPAPERHEIGHT
:
411 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperHeight\"?" );
412 seqValues
[nProperty
] >>= m_nMaximumPaperHeight
;
416 case PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN
:
418 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperLeftMargin\"?" );
419 seqValues
[nProperty
] >>= m_nMaximumPaperLeftMargin
;
423 case PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN
:
425 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperRightMargin\"?" );
426 seqValues
[nProperty
] >>= m_nMaximumPaperRightMargin
;
430 case PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN
:
432 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperTopMargin\"?" );
433 seqValues
[nProperty
] >>= m_nMaximumPaperTopMargin
;
437 case PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN
:
439 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\MaximumPaperBottomMargin\"?" );
440 seqValues
[nProperty
] >>= m_nMaximumPaperBottomMargin
;
445 case PROPERTYHANDLE_ANTIALIASING
:
447 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\AntiAliasing\"?" );
448 seqValues
[nProperty
] >>= m_bAntiAliasing
;
453 case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE
:
455 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SnapHorVerLinesToDiscrete\"?" );
456 seqValues
[nProperty
] >>= m_bSnapHorVerLinesToDiscrete
;
460 case PROPERTYHANDLE_SOLIDDRAGCREATE
:
462 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SolidDragCreate\"?" );
463 seqValues
[nProperty
] >>= m_bSolidDragCreate
;
467 case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT
:
469 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderDecoratedTextDirect\"?" );
470 seqValues
[nProperty
] >>= m_bRenderDecoratedTextDirect
;
474 case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT
:
476 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\RenderSimpleTextDirect\"?" );
477 seqValues
[nProperty
] >>= m_bRenderSimpleTextDirect
;
481 case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT
:
483 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\Quadratic3DRenderLimit\"?" );
484 seqValues
[nProperty
] >>= m_nQuadratic3DRenderLimit
;
488 case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT
:
490 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_LONG
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\QuadraticFormControlRenderLimit\"?" );
491 seqValues
[nProperty
] >>= m_nQuadraticFormControlRenderLimit
;
495 // #i97672# selection settings
496 case PROPERTYHANDLE_TRANSPARENTSELECTION
:
498 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_BOOLEAN
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\TransparentSelection\"?" );
499 seqValues
[nProperty
] >>= m_bTransparentSelection
;
503 case PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT
:
505 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_SHORT
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\TransparentSelectionPercent\"?" );
506 seqValues
[nProperty
] >>= m_nTransparentSelectionPercent
;
510 case PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT
:
512 DBG_ASSERT(!(seqValues
[nProperty
].getValueTypeClass()!=TypeClass_SHORT
), "SvtOptionsDrawinglayer_Impl::SvtOptionsDrawinglayer_Impl()\nWho has changed the value type of \"Office.Common\\Drawinglayer\\SelectionMaximumLuminancePercent\"?" );
513 seqValues
[nProperty
] >>= m_nSelectionMaximumLuminancePercent
;
520 SvtOptionsDrawinglayer_Impl::~SvtOptionsDrawinglayer_Impl()
528 void SvtOptionsDrawinglayer_Impl::ImplCommit()
530 Sequence
< OUString
> aSeqNames( impl_GetPropertyNames() );
531 Sequence
< Any
> aSeqValues( aSeqNames
.getLength() );
533 for( sal_Int32 nProperty
= 0, nCount
= aSeqNames
.getLength(); nProperty
< nCount
; ++nProperty
)
537 case PROPERTYHANDLE_OVERLAYBUFFER
:
538 aSeqValues
[nProperty
] <<= m_bOverlayBuffer
;
541 case PROPERTYHANDLE_PAINTBUFFER
:
542 aSeqValues
[nProperty
] <<= m_bPaintBuffer
;
545 case PROPERTYHANDLE_STRIPE_COLOR_A
:
546 aSeqValues
[nProperty
] <<= m_bStripeColorA
;
549 case PROPERTYHANDLE_STRIPE_COLOR_B
:
550 aSeqValues
[nProperty
] <<= m_bStripeColorB
;
553 case PROPERTYHANDLE_STRIPE_LENGTH
:
554 aSeqValues
[nProperty
] <<= m_nStripeLength
;
558 case PROPERTYHANDLE_OVERLAYBUFFER_CALC
:
559 aSeqValues
[nProperty
] <<= m_bOverlayBuffer_Calc
;
562 case PROPERTYHANDLE_OVERLAYBUFFER_WRITER
:
563 aSeqValues
[nProperty
] <<= m_bOverlayBuffer_Writer
;
566 case PROPERTYHANDLE_OVERLAYBUFFER_DRAWIMPRESS
:
567 aSeqValues
[nProperty
] <<= m_bOverlayBuffer_DrawImpress
;
570 // #i74769#, #i75172#
571 case PROPERTYHANDLE_PAINTBUFFER_CALC
:
572 aSeqValues
[nProperty
] <<= m_bPaintBuffer_Calc
;
575 case PROPERTYHANDLE_PAINTBUFFER_WRITER
:
576 aSeqValues
[nProperty
] <<= m_bPaintBuffer_Writer
;
579 case PROPERTYHANDLE_PAINTBUFFER_DRAWIMPRESS
:
580 aSeqValues
[nProperty
] <<= m_bPaintBuffer_DrawImpress
;
584 case PROPERTYHANDLE_MAXIMUMPAPERWIDTH
:
585 aSeqValues
[nProperty
] <<= m_nMaximumPaperWidth
;
588 case PROPERTYHANDLE_MAXIMUMPAPERHEIGHT
:
589 aSeqValues
[nProperty
] <<= m_nMaximumPaperHeight
;
592 case PROPERTYHANDLE_MAXIMUMPAPERLEFTMARGIN
:
593 aSeqValues
[nProperty
] <<= m_nMaximumPaperLeftMargin
;
596 case PROPERTYHANDLE_MAXIMUMPAPERRIGHTMARGIN
:
597 aSeqValues
[nProperty
] <<= m_nMaximumPaperRightMargin
;
600 case PROPERTYHANDLE_MAXIMUMPAPERTOPMARGIN
:
601 aSeqValues
[nProperty
] <<= m_nMaximumPaperTopMargin
;
604 case PROPERTYHANDLE_MAXIMUMPAPERBOTTOMMARGIN
:
605 aSeqValues
[nProperty
] <<= m_nMaximumPaperBottomMargin
;
609 case PROPERTYHANDLE_ANTIALIASING
:
610 aSeqValues
[nProperty
] <<= m_bAntiAliasing
;
613 case PROPERTYHANDLE_SNAPHORVERLINESTODISCRETE
:
614 aSeqValues
[nProperty
] <<= m_bSnapHorVerLinesToDiscrete
;
617 case PROPERTYHANDLE_SOLIDDRAGCREATE
:
618 aSeqValues
[nProperty
] <<= m_bSolidDragCreate
;
621 case PROPERTYHANDLE_RENDERDECORATEDTEXTDIRECT
:
622 aSeqValues
[nProperty
] <<= m_bRenderDecoratedTextDirect
;
625 case PROPERTYHANDLE_RENDERSIMPLETEXTDIRECT
:
626 aSeqValues
[nProperty
] <<= m_bRenderSimpleTextDirect
;
629 case PROPERTYHANDLE_QUADRATIC3DRENDERLIMIT
:
630 aSeqValues
[nProperty
] <<= m_nQuadratic3DRenderLimit
;
633 case PROPERTYHANDLE_QUADRATICFORMCONTROLRENDERLIMIT
:
634 aSeqValues
[nProperty
] <<= m_nQuadraticFormControlRenderLimit
;
637 // #i97672# selection settings
638 case PROPERTYHANDLE_TRANSPARENTSELECTION
:
639 aSeqValues
[nProperty
] <<= m_bTransparentSelection
;
642 case PROPERTYHANDLE_TRANSPARENTSELECTIONPERCENT
:
643 aSeqValues
[nProperty
] <<= m_nTransparentSelectionPercent
;
646 case PROPERTYHANDLE_SELECTIONMAXIMUMLUMINANCEPERCENT
:
647 aSeqValues
[nProperty
] <<= m_nSelectionMaximumLuminancePercent
;
652 PutProperties( aSeqNames
, aSeqValues
);
655 void SvtOptionsDrawinglayer_Impl::Notify( const css::uno::Sequence
<OUString
>& )
660 // #i74769#, #i75172#
665 bool SvtOptionsDrawinglayer_Impl::IsAAPossibleOnThisSystem() const
667 if(!m_bAllowAAChecked
)
669 SvtOptionsDrawinglayer_Impl
* pThat
= const_cast< SvtOptionsDrawinglayer_Impl
* >(this);
670 pThat
->m_bAllowAAChecked
= true;
673 // WIN32 uses GDIPlus with VCL for the first incarnation; this will be enhanced
674 // in the future to use canvases and the canvas renderer, thus a AA-abled
675 // canvas needs to be checked here in the future.
676 // Currently, just allow AA for WIN32
679 // check XRenderExtension
680 if(m_bAllowAA
&& !Application::GetDefaultDevice()->SupportsOperation( OutDevSupportType::TransparentRect
))
682 pThat
->m_bAllowAA
= false;
691 void SvtOptionsDrawinglayer_Impl::SetAntiAliasing( bool bState
)
693 if(m_bAntiAliasing
!= bState
)
695 m_bAntiAliasing
= bState
;
702 Sequence
< OUString
> SvtOptionsDrawinglayer_Impl::impl_GetPropertyNames()
704 // Build list of configuration key names.
705 const OUString pProperties
[] =
707 PROPERTYNAME_OVERLAYBUFFER
,
708 PROPERTYNAME_PAINTBUFFER
,
709 PROPERTYNAME_STRIPE_COLOR_A
,
710 PROPERTYNAME_STRIPE_COLOR_B
,
711 PROPERTYNAME_STRIPE_LENGTH
,
714 PROPERTYNAME_OVERLAYBUFFER_CALC
,
715 PROPERTYNAME_OVERLAYBUFFER_WRITER
,
716 PROPERTYNAME_OVERLAYBUFFER_DRAWIMPRESS
,
718 // #i74769#, #i75172#
719 PROPERTYNAME_PAINTBUFFER_CALC
,
720 PROPERTYNAME_PAINTBUFFER_WRITER
,
721 PROPERTYNAME_PAINTBUFFER_DRAWIMPRESS
,
724 PROPERTYNAME_MAXIMUMPAPERWIDTH
,
725 PROPERTYNAME_MAXIMUMPAPERHEIGHT
,
726 PROPERTYNAME_MAXIMUMPAPERLEFTMARGIN
,
727 PROPERTYNAME_MAXIMUMPAPERRIGHTMARGIN
,
728 PROPERTYNAME_MAXIMUMPAPERTOPMARGIN
,
729 PROPERTYNAME_MAXIMUMPAPERBOTTOMMARGIN
,
732 PROPERTYNAME_ANTIALIASING
,
733 PROPERTYNAME_SNAPHORVERLINESTODISCRETE
,
734 PROPERTYNAME_SOLIDDRAGCREATE
,
735 PROPERTYNAME_RENDERDECORATEDTEXTDIRECT
,
736 PROPERTYNAME_RENDERSIMPLETEXTDIRECT
,
737 PROPERTYNAME_QUADRATIC3DRENDERLIMIT
,
738 PROPERTYNAME_QUADRATICFORMCONTROLRENDERLIMIT
,
740 // #i97672# selection settings
741 PROPERTYNAME_TRANSPARENTSELECTION
,
742 PROPERTYNAME_TRANSPARENTSELECTIONPERCENT
,
743 PROPERTYNAME_SELECTIONMAXIMUMLUMINANCEPERCENT
746 // Initialize return sequence with these list ...
747 const Sequence
< OUString
> seqPropertyNames( pProperties
, PROPERTYCOUNT
);
748 // ... and return it.
749 return seqPropertyNames
;
754 std::weak_ptr
<SvtOptionsDrawinglayer_Impl
> g_pOptionsDrawinglayer
;
757 SvtOptionsDrawinglayer::SvtOptionsDrawinglayer()
759 // Global access, must be guarded (multithreading!).
760 MutexGuard
aGuard( GetOwnStaticMutex() );
761 m_pImpl
= g_pOptionsDrawinglayer
.lock();
764 m_pImpl
= std::make_shared
<SvtOptionsDrawinglayer_Impl
>();
765 g_pOptionsDrawinglayer
= m_pImpl
;
769 SvtOptionsDrawinglayer::~SvtOptionsDrawinglayer()
771 // Global access, must be guarded (multithreading!)
772 MutexGuard
aGuard( GetOwnStaticMutex() );
779 bool SvtOptionsDrawinglayer::IsOverlayBuffer() const
781 MutexGuard
aGuard( GetOwnStaticMutex() );
782 return m_pImpl
->IsOverlayBuffer();
787 bool SvtOptionsDrawinglayer::IsPaintBuffer() const
789 MutexGuard
aGuard( GetOwnStaticMutex() );
790 return m_pImpl
->IsPaintBuffer();
795 Color
SvtOptionsDrawinglayer::GetStripeColorA() const
797 MutexGuard
aGuard( GetOwnStaticMutex() );
798 return m_pImpl
->GetStripeColorA();
803 Color
SvtOptionsDrawinglayer::GetStripeColorB() const
805 MutexGuard
aGuard( GetOwnStaticMutex() );
806 return m_pImpl
->GetStripeColorB();
811 sal_uInt16
SvtOptionsDrawinglayer::GetStripeLength() const
813 MutexGuard
aGuard( GetOwnStaticMutex() );
814 return m_pImpl
->GetStripeLength();
818 bool SvtOptionsDrawinglayer::IsOverlayBuffer_Calc() const
820 MutexGuard
aGuard( GetOwnStaticMutex() );
821 return m_pImpl
->IsOverlayBuffer_Calc();
824 bool SvtOptionsDrawinglayer::IsOverlayBuffer_Writer() const
826 MutexGuard
aGuard( GetOwnStaticMutex() );
827 return m_pImpl
->IsOverlayBuffer_Writer();
830 bool SvtOptionsDrawinglayer::IsOverlayBuffer_DrawImpress() const
832 MutexGuard
aGuard( GetOwnStaticMutex() );
833 return m_pImpl
->IsOverlayBuffer_DrawImpress();
836 // #i74769#, #i75172#
837 bool SvtOptionsDrawinglayer::IsPaintBuffer_Calc() const
839 MutexGuard
aGuard( GetOwnStaticMutex() );
840 return m_pImpl
->IsPaintBuffer_Calc();
843 bool SvtOptionsDrawinglayer::IsPaintBuffer_Writer() const
845 MutexGuard
aGuard( GetOwnStaticMutex() );
846 return m_pImpl
->IsPaintBuffer_Writer();
849 bool SvtOptionsDrawinglayer::IsPaintBuffer_DrawImpress() const
851 MutexGuard
aGuard( GetOwnStaticMutex() );
852 return m_pImpl
->IsPaintBuffer_DrawImpress();
856 sal_uInt32
SvtOptionsDrawinglayer::GetMaximumPaperWidth() const
858 MutexGuard
aGuard( GetOwnStaticMutex() );
859 return m_pImpl
->GetMaximumPaperWidth();
862 sal_uInt32
SvtOptionsDrawinglayer::GetMaximumPaperHeight() const
864 MutexGuard
aGuard( GetOwnStaticMutex() );
865 return m_pImpl
->GetMaximumPaperHeight();
868 sal_uInt32
SvtOptionsDrawinglayer::GetMaximumPaperLeftMargin() const
870 MutexGuard
aGuard( GetOwnStaticMutex() );
871 return m_pImpl
->GetMaximumPaperLeftMargin();
874 sal_uInt32
SvtOptionsDrawinglayer::GetMaximumPaperRightMargin() const
876 MutexGuard
aGuard( GetOwnStaticMutex() );
877 return m_pImpl
->GetMaximumPaperRightMargin();
880 sal_uInt32
SvtOptionsDrawinglayer::GetMaximumPaperTopMargin() const
882 MutexGuard
aGuard( GetOwnStaticMutex() );
883 return m_pImpl
->GetMaximumPaperTopMargin();
886 sal_uInt32
SvtOptionsDrawinglayer::GetMaximumPaperBottomMargin() const
888 MutexGuard
aGuard( GetOwnStaticMutex() );
889 return m_pImpl
->GetMaximumPaperBottomMargin();
893 bool SvtOptionsDrawinglayer::IsAAPossibleOnThisSystem() const
895 return m_pImpl
->IsAAPossibleOnThisSystem();
899 bool SvtOptionsDrawinglayer::IsAntiAliasing() const
901 MutexGuard
aGuard( GetOwnStaticMutex() );
902 return m_pImpl
->IsAntiAliasing() && IsAAPossibleOnThisSystem();
905 bool SvtOptionsDrawinglayer::IsSnapHorVerLinesToDiscrete() const
907 MutexGuard
aGuard( GetOwnStaticMutex() );
908 return m_pImpl
->IsAntiAliasing() && m_pImpl
->IsSnapHorVerLinesToDiscrete();
911 bool SvtOptionsDrawinglayer::IsSolidDragCreate() const
913 MutexGuard
aGuard( GetOwnStaticMutex() );
914 return m_pImpl
->IsSolidDragCreate();
917 bool SvtOptionsDrawinglayer::IsRenderDecoratedTextDirect() const
919 MutexGuard
aGuard( GetOwnStaticMutex() );
920 return m_pImpl
->IsRenderDecoratedTextDirect();
923 bool SvtOptionsDrawinglayer::IsRenderSimpleTextDirect() const
925 MutexGuard
aGuard( GetOwnStaticMutex() );
926 return m_pImpl
->IsRenderSimpleTextDirect();
929 sal_uInt32
SvtOptionsDrawinglayer::GetQuadratic3DRenderLimit() const
931 MutexGuard
aGuard( GetOwnStaticMutex() );
932 return m_pImpl
->GetQuadratic3DRenderLimit();
935 sal_uInt32
SvtOptionsDrawinglayer::GetQuadraticFormControlRenderLimit() const
937 MutexGuard
aGuard( GetOwnStaticMutex() );
938 return m_pImpl
->GetQuadraticFormControlRenderLimit();
941 void SvtOptionsDrawinglayer::SetAntiAliasing( bool bState
)
943 MutexGuard
aGuard( GetOwnStaticMutex() );
944 m_pImpl
->SetAntiAliasing( bState
);
947 // #i97672# selection settings
948 bool SvtOptionsDrawinglayer::IsTransparentSelection() const
950 MutexGuard
aGuard( GetOwnStaticMutex() );
951 return m_pImpl
->IsTransparentSelection();
954 sal_uInt16
SvtOptionsDrawinglayer::GetTransparentSelectionPercent() const
956 MutexGuard
aGuard( GetOwnStaticMutex() );
957 sal_uInt16
aRetval(m_pImpl
->GetTransparentSelectionPercent());
959 // crop to range [10% .. 90%]
973 sal_uInt16
SvtOptionsDrawinglayer::GetSelectionMaximumLuminancePercent() const
975 MutexGuard
aGuard( GetOwnStaticMutex() );
976 sal_uInt16
aRetval(m_pImpl
->GetSelectionMaximumLuminancePercent());
978 // crop to range [0% .. 100%]
987 Color
SvtOptionsDrawinglayer::getHilightColor() const
989 Color
aRetval(Application::GetSettings().GetStyleSettings().GetHighlightColor());
990 const basegfx::BColor
aSelection(aRetval
.getBColor());
991 const double fLuminance(aSelection
.luminance());
992 const double fMaxLum(GetSelectionMaximumLuminancePercent() / 100.0);
994 if(fLuminance
> fMaxLum
)
996 const double fFactor(fMaxLum
/ fLuminance
);
997 const basegfx::BColor
aNewSelection(
998 aSelection
.getRed() * fFactor
,
999 aSelection
.getGreen() * fFactor
,
1000 aSelection
.getBlue() * fFactor
);
1002 aRetval
= Color(aNewSelection
);
1010 class theOptionsDrawinglayerMutex
: public rtl::Static
<osl::Mutex
, theOptionsDrawinglayerMutex
>{};
1015 Mutex
& SvtOptionsDrawinglayer::GetOwnStaticMutex()
1017 return theOptionsDrawinglayerMutex::get();
1020 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */