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 24 #ifndef INCLUDED_SVTOOLS_OPTIONSDRAWINGLAYER_HXX 25 #define INCLUDED_SVTOOLS_OPTIONSDRAWINGLAYER_HXX 26 27 //_________________________________________________________________________________________________________________ 28 // includes 29 //_________________________________________________________________________________________________________________ 30 31 #include "svtools/svtdllapi.h" 32 #include <sal/types.h> 33 #include <osl/mutex.hxx> 34 #include <rtl/ustring.hxx> 35 #include <tools/color.hxx> 36 37 //_________________________________________________________________________________________________________________ 38 // forward declarations 39 //_________________________________________________________________________________________________________________ 40 41 /*-************************************************************************************************************//** 42 @short forward declaration to our private date container implementation 43 @descr We use these class as internal member to support small memory requirements. 44 You can create the container if it is necessary. The class which use these mechanism 45 is faster and smaller then a complete implementation! 46 *//*-*************************************************************************************************************/ 47 48 class SvtOptionsDrawinglayer_Impl; 49 50 //_________________________________________________________________________________________________________________ 51 // declarations 52 //_________________________________________________________________________________________________________________ 53 54 /*-************************************************************************************************************//** 55 @short collect informations about startup features 56 @descr - 57 58 @implements - 59 @base - 60 61 @devstatus ready to use 62 *//*-*************************************************************************************************************/ 63 64 class SVT_DLLPUBLIC SvtOptionsDrawinglayer 65 { 66 //------------------------------------------------------------------------------------------------------------- 67 // public methods 68 //------------------------------------------------------------------------------------------------------------- 69 70 public: 71 72 //--------------------------------------------------------------------------------------------------------- 73 // constructor / destructor 74 //--------------------------------------------------------------------------------------------------------- 75 76 /*-****************************************************************************************************//** 77 @short standard constructor and destructor 78 @descr This will initialize an instance with default values. 79 We implement these class with a refcount mechanism! Every instance of this class increase it 80 at create and decrease it at delete time - but all instances use the same data container! 81 He is implemented as a static member ... 82 83 @seealso member m_nRefCount 84 @seealso member m_pDataContainer 85 86 @param - 87 @return - 88 89 @onerror - 90 *//*-*****************************************************************************************************/ 91 92 SvtOptionsDrawinglayer(); 93 ~SvtOptionsDrawinglayer(); 94 95 //--------------------------------------------------------------------------------------------------------- 96 // interface 97 //--------------------------------------------------------------------------------------------------------- 98 99 /*-****************************************************************************************************//** 100 @short interface methods to get and set value of config key "org.openoffice.Office.Common/Drawinglayer/..." 101 @descr These options describe internal states to enable/disable features of installed office. 102 103 IsOverlayBuffer() 104 SetOverlayBuffer() => Activate this field for letting Overlay use a buffer 105 106 IsPaintBuffer() 107 SetPaintBuffer() => Activate this field for letting Paint use a prerender buffer 108 109 GetStripeColorA() 110 SetStripeColorA() => Set first of two colors which overlay uses to draw stripes 111 112 GetStripeColorB() 113 SetStripeColorB() => Set second of two colors which overlay uses to draw stripes 114 115 GetStripeLength() 116 SetStripeLength() => Set length of a single stripe in pixels 117 118 @seealso configuration package "org.openoffice.Office.Common/Drawinglayer" 119 *//*-*****************************************************************************************************/ 120 121 sal_Bool IsOverlayBuffer() const; 122 sal_Bool IsPaintBuffer() const; 123 Color GetStripeColorA() const; 124 Color GetStripeColorB() const; 125 sal_uInt16 GetStripeLength() const; 126 127 void SetOverlayBuffer( sal_Bool bState ); 128 void SetPaintBuffer( sal_Bool bState ); 129 void SetStripeColorA( Color aColor ); 130 void SetStripeColorB( Color aColor ); 131 void SetStripeLength( sal_uInt16 nLength ); 132 133 // #i73602# 134 sal_Bool IsOverlayBuffer_Calc() const; 135 sal_Bool IsOverlayBuffer_Writer() const; 136 sal_Bool IsOverlayBuffer_DrawImpress() const; 137 void SetOverlayBuffer_Calc( sal_Bool bState ); 138 void SetOverlayBuffer_Writer( sal_Bool bState ); 139 void SetOverlayBuffer_DrawImpress( sal_Bool bState ); 140 141 // #i74769#, #i75172# 142 sal_Bool IsPaintBuffer_Calc() const; 143 sal_Bool IsPaintBuffer_Writer() const; 144 sal_Bool IsPaintBuffer_DrawImpress() const; 145 void SetPaintBuffer_Calc( sal_Bool bState ); 146 void SetPaintBuffer_Writer( sal_Bool bState ); 147 void SetPaintBuffer_DrawImpress( sal_Bool bState ); 148 149 // #i4219# 150 sal_uInt32 GetMaximumPaperWidth() const; 151 sal_uInt32 GetMaximumPaperHeight() const; 152 sal_uInt32 GetMaximumPaperLeftMargin() const; 153 sal_uInt32 GetMaximumPaperRightMargin() const; 154 sal_uInt32 GetMaximumPaperTopMargin() const; 155 sal_uInt32 GetMaximumPaperBottomMargin() const; 156 157 void SetMaximumPaperWidth(sal_uInt32 nNew); 158 void SetMaximumPaperHeight(sal_uInt32 nNew); 159 void SetMaximumPaperLeftMargin(sal_uInt32 nNew); 160 void SetMaximumPaperRightMargin(sal_uInt32 nNew); 161 void SetMaximumPaperTopMargin(sal_uInt32 nNew); 162 void SetMaximumPaperBottomMargin(sal_uInt32 nNew); 163 164 // #i95644# helper to check if AA is allowed on this system. Currently, for WIN its disabled 165 // and OutDevSupport_TransparentRect is checked (this hits XRenderExtension, e.g. 166 // currently for SunRay as long as not supported there) 167 sal_Bool IsAAPossibleOnThisSystem() const; 168 169 // primitives 170 sal_Bool IsAntiAliasing() const; 171 sal_Bool IsSnapHorVerLinesToDiscrete() const; 172 sal_Bool IsSolidDragCreate() const; 173 sal_Bool IsRenderDecoratedTextDirect() const; 174 sal_Bool IsRenderSimpleTextDirect() const; 175 sal_uInt32 GetQuadratic3DRenderLimit() const; 176 sal_uInt32 GetQuadraticFormControlRenderLimit() const; 177 178 void SetAntiAliasing( sal_Bool bState ); 179 void SetSnapHorVerLinesToDiscrete( sal_Bool bState ); 180 void SetSolidDragCreate( sal_Bool bState ); 181 void SetRenderDecoratedTextDirect( sal_Bool bState ); 182 void SetRenderSimpleTextDirect( sal_Bool bState ); 183 void SetQuadratic3DRenderLimit(sal_uInt32 nNew); 184 void SetQuadraticFormControlRenderLimit(sal_uInt32 nNew); 185 186 // #i97672# selection settings 187 sal_Bool IsTransparentSelection() const; 188 sal_uInt16 GetTransparentSelectionPercent() const; 189 sal_uInt16 GetSelectionMaximumLuminancePercent() const; 190 191 // get system hilight color, limited to the maximum allowed luminance 192 // (defined in GetSelectionMaximumLuminancePercent() in SvtOptionsDrawinglayer, 193 // combined with Application::GetSettings().GetStyleSettings().GetHighlightColor()) 194 Color getHilightColor() const; 195 196 void SetTransparentSelection( sal_Bool bState ); 197 void SetTransparentSelectionPercent( sal_uInt16 nPercent ); 198 void SetSelectionMaximumLuminancePercent( sal_uInt16 nPercent ); 199 200 //------------------------------------------------------------------------------------------------------------- 201 // private methods 202 //------------------------------------------------------------------------------------------------------------- 203 204 private: 205 206 /*-****************************************************************************************************//** 207 @short return a reference to a static mutex 208 @descr These class use his own static mutex to be threadsafe. 209 We create a static mutex only for one ime and use at different times. 210 211 @seealso - 212 213 @param - 214 @return A reference to a static mutex member. 215 216 @onerror - 217 *//*-*****************************************************************************************************/ 218 SVT_DLLPRIVATE static ::osl::Mutex& GetOwnStaticMutex(); 219 220 //------------------------------------------------------------------------------------------------------------- 221 // private member 222 //------------------------------------------------------------------------------------------------------------- 223 224 private: 225 226 /*Attention 227 228 Don't initialize these static member in these header! 229 a) Double dfined symbols will be detected ... 230 b) and unresolved externals exist at linking time. 231 Do it in your source only. 232 */ 233 234 static SvtOptionsDrawinglayer_Impl* m_pDataContainer ; /// impl. data container as dynamic pointer for smaller memory requirements! 235 static sal_Int32 m_nRefCount ; /// internal ref count mechanism 236 237 }; // class SvtOptionsDrawinglayer 238 239 #endif // #ifndef INCLUDED_SVTOOLS_OPTIONSDRAWINGLAYER_HXX 240