15900e8ecSAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
35900e8ecSAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
45900e8ecSAndrew Rist * or more contributor license agreements. See the NOTICE file
55900e8ecSAndrew Rist * distributed with this work for additional information
65900e8ecSAndrew Rist * regarding copyright ownership. The ASF licenses this file
75900e8ecSAndrew Rist * to you under the Apache License, Version 2.0 (the
85900e8ecSAndrew Rist * "License"); you may not use this file except in compliance
95900e8ecSAndrew Rist * with the License. You may obtain a copy of the License at
105900e8ecSAndrew Rist *
115900e8ecSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
125900e8ecSAndrew Rist *
135900e8ecSAndrew Rist * Unless required by applicable law or agreed to in writing,
145900e8ecSAndrew Rist * software distributed under the License is distributed on an
155900e8ecSAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
165900e8ecSAndrew Rist * KIND, either express or implied. See the License for the
175900e8ecSAndrew Rist * specific language governing permissions and limitations
185900e8ecSAndrew Rist * under the License.
195900e8ecSAndrew Rist *
205900e8ecSAndrew Rist *************************************************************/
215900e8ecSAndrew Rist
225900e8ecSAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_svtools.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir //_________________________________________________________________________________________________________________
28cdf0e10cSrcweir // includes
29cdf0e10cSrcweir //_________________________________________________________________________________________________________________
30cdf0e10cSrcweir
31cdf0e10cSrcweir #include <svtools/printoptions.hxx>
32cdf0e10cSrcweir #include <unotools/configmgr.hxx>
33cdf0e10cSrcweir #include <unotools/configitem.hxx>
34cdf0e10cSrcweir #include <tools/debug.hxx>
35cdf0e10cSrcweir #include <vcl/print.hxx>
36cdf0e10cSrcweir #include <com/sun/star/uno/Any.hxx>
37cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
38cdf0e10cSrcweir
39cdf0e10cSrcweir #ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
40cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
41cdf0e10cSrcweir #endif
42cdf0e10cSrcweir
43cdf0e10cSrcweir #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
44cdf0e10cSrcweir #include <com/sun/star/container/XNameAccess.hpp>
45cdf0e10cSrcweir #endif
46cdf0e10cSrcweir
47cdf0e10cSrcweir #ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
48cdf0e10cSrcweir #include <com/sun/star/container/XNameContainer.hpp>
49cdf0e10cSrcweir #endif
50cdf0e10cSrcweir
51cdf0e10cSrcweir #ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_
52cdf0e10cSrcweir #include <com/sun/star/lang/XSingleServiceFactory.hpp>
53cdf0e10cSrcweir #endif
54cdf0e10cSrcweir
55cdf0e10cSrcweir #ifndef _COMPHELPER_CONFIGURATIONHELPER_HXX_
56cdf0e10cSrcweir #include <comphelper/configurationhelper.hxx>
57cdf0e10cSrcweir #endif
58cdf0e10cSrcweir
59cdf0e10cSrcweir #ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
60cdf0e10cSrcweir #include <unotools/processfactory.hxx>
61cdf0e10cSrcweir #endif
62cdf0e10cSrcweir
63cdf0e10cSrcweir #ifndef _SVT_LOGHELPER_HXX
64cdf0e10cSrcweir #include <unotools/loghelper.hxx>
65cdf0e10cSrcweir #endif
66cdf0e10cSrcweir
67cdf0e10cSrcweir #include <itemholder2.hxx>
68cdf0e10cSrcweir
69cdf0e10cSrcweir
70cdf0e10cSrcweir // -----------
71cdf0e10cSrcweir // - statics -
72cdf0e10cSrcweir // -----------
73cdf0e10cSrcweir
74cdf0e10cSrcweir static sal_uInt16 aDPIArray[] = { 72, 96, 150, 200, 300, 600 };
75cdf0e10cSrcweir
76cdf0e10cSrcweir #define DPI_COUNT (sizeof(aDPIArray)/sizeof(aDPIArray[0 ]))
77cdf0e10cSrcweir
78cdf0e10cSrcweir // -----------
79cdf0e10cSrcweir // - Defines -
80cdf0e10cSrcweir // -----------
81cdf0e10cSrcweir
82cdf0e10cSrcweir #define ROOTNODE_START OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Print/Option"))
83cdf0e10cSrcweir #define ROOTNODE_PRINTOPTION OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Common/Print/Option"))
84cdf0e10cSrcweir
85cdf0e10cSrcweir #define PROPERTYNAME_REDUCETRANSPARENCY OUString(RTL_CONSTASCII_USTRINGPARAM("ReduceTransparency"))
86cdf0e10cSrcweir #define PROPERTYNAME_REDUCEDTRANSPARENCYMODE OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedTransparencyMode"))
87cdf0e10cSrcweir #define PROPERTYNAME_REDUCEGRADIENTS OUString(RTL_CONSTASCII_USTRINGPARAM("ReduceGradients"))
88cdf0e10cSrcweir #define PROPERTYNAME_REDUCEDGRADIENTMODE OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedGradientMode"))
89cdf0e10cSrcweir #define PROPERTYNAME_REDUCEDGRADIENTSTEPCOUNT OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedGradientStepCount"))
90cdf0e10cSrcweir #define PROPERTYNAME_REDUCEBITMAPS OUString(RTL_CONSTASCII_USTRINGPARAM("ReduceBitmaps"))
91cdf0e10cSrcweir #define PROPERTYNAME_REDUCEDBITMAPMODE OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedBitmapMode"))
92cdf0e10cSrcweir #define PROPERTYNAME_REDUCEDBITMAPRESOLUTION OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedBitmapResolution"))
93cdf0e10cSrcweir #define PROPERTYNAME_REDUCEDBITMAPINCLUDESTRANSPARENCY OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedBitmapIncludesTransparency"))
94cdf0e10cSrcweir #define PROPERTYNAME_CONVERTTOGREYSCALES OUString(RTL_CONSTASCII_USTRINGPARAM("ConvertToGreyscales"))
95cdf0e10cSrcweir
96cdf0e10cSrcweir // --------------
97cdf0e10cSrcweir // - Namespaces -
98cdf0e10cSrcweir // --------------
99cdf0e10cSrcweir
100cdf0e10cSrcweir using namespace ::utl;
101cdf0e10cSrcweir using namespace ::rtl;
102cdf0e10cSrcweir using namespace ::osl;
103cdf0e10cSrcweir using namespace ::com::sun::star::uno;
104cdf0e10cSrcweir namespace css = com::sun::star;
105cdf0e10cSrcweir
106cdf0e10cSrcweir // -----------
107cdf0e10cSrcweir // - statics -
108cdf0e10cSrcweir // -----------
109cdf0e10cSrcweir
110cdf0e10cSrcweir static SvtPrintOptions_Impl* pPrinterOptionsDataContainer = NULL;
111cdf0e10cSrcweir static SvtPrintOptions_Impl* pPrintFileOptionsDataContainer = NULL;
112cdf0e10cSrcweir
113cdf0e10cSrcweir SvtPrintOptions_Impl* SvtPrinterOptions::m_pStaticDataContainer = NULL;
114cdf0e10cSrcweir sal_Int32 SvtPrinterOptions::m_nRefCount = 0;
115cdf0e10cSrcweir
116cdf0e10cSrcweir SvtPrintOptions_Impl* SvtPrintFileOptions::m_pStaticDataContainer = NULL;
117cdf0e10cSrcweir sal_Int32 SvtPrintFileOptions::m_nRefCount = 0;
118cdf0e10cSrcweir
119cdf0e10cSrcweir // ------------------------
120cdf0e10cSrcweir // - SvtPrintOptions_Impl -
121cdf0e10cSrcweir // ------------------------
122cdf0e10cSrcweir
123cdf0e10cSrcweir class SvtPrintOptions_Impl
124cdf0e10cSrcweir {
125cdf0e10cSrcweir public:
126cdf0e10cSrcweir
127cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
128cdf0e10cSrcweir // constructor / destructor
129cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
130cdf0e10cSrcweir
131cdf0e10cSrcweir SvtPrintOptions_Impl( const OUString& rConfigRoot );
132cdf0e10cSrcweir ~SvtPrintOptions_Impl();
133cdf0e10cSrcweir
134cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
135cdf0e10cSrcweir // public interface
136cdf0e10cSrcweir //---------------------------------------------------------------------------------------------------------
137cdf0e10cSrcweir
138cdf0e10cSrcweir sal_Bool IsReduceTransparency() const ;
139cdf0e10cSrcweir sal_Int16 GetReducedTransparencyMode() const ;
140cdf0e10cSrcweir sal_Bool IsReduceGradients() const ;
141cdf0e10cSrcweir sal_Int16 GetReducedGradientMode() const ;
142cdf0e10cSrcweir sal_Int16 GetReducedGradientStepCount() const ;
143cdf0e10cSrcweir sal_Bool IsReduceBitmaps() const ;
144cdf0e10cSrcweir sal_Int16 GetReducedBitmapMode() const ;
145cdf0e10cSrcweir sal_Int16 GetReducedBitmapResolution() const ;
146cdf0e10cSrcweir sal_Bool IsReducedBitmapIncludesTransparency() const ;
147cdf0e10cSrcweir sal_Bool IsConvertToGreyscales() const;
148cdf0e10cSrcweir
149cdf0e10cSrcweir void SetReduceTransparency( sal_Bool bState ) ;
150cdf0e10cSrcweir void SetReducedTransparencyMode( sal_Int16 nMode ) ;
151cdf0e10cSrcweir void SetReduceGradients( sal_Bool bState ) ;
152cdf0e10cSrcweir void SetReducedGradientMode( sal_Int16 nMode ) ;
153cdf0e10cSrcweir void SetReducedGradientStepCount( sal_Int16 nStepCount ) ;
154cdf0e10cSrcweir void SetReduceBitmaps( sal_Bool bState ) ;
155cdf0e10cSrcweir void SetReducedBitmapMode( sal_Int16 nMode ) ;
156cdf0e10cSrcweir void SetReducedBitmapResolution( sal_Int16 nResolution ) ;
157cdf0e10cSrcweir void SetReducedBitmapIncludesTransparency( sal_Bool bState ) ;
158cdf0e10cSrcweir void SetConvertToGreyscales( sal_Bool bState ) ;
159cdf0e10cSrcweir
160cdf0e10cSrcweir //-------------------------------------------------------------------------------------------------------------
161cdf0e10cSrcweir // private API
162cdf0e10cSrcweir //-------------------------------------------------------------------------------------------------------------
163cdf0e10cSrcweir
164cdf0e10cSrcweir private:
165cdf0e10cSrcweir void impl_setValue (const ::rtl::OUString& sProp,
166cdf0e10cSrcweir ::sal_Bool bNew );
167cdf0e10cSrcweir void impl_setValue (const ::rtl::OUString& sProp,
168cdf0e10cSrcweir ::sal_Int16 nNew );
169cdf0e10cSrcweir
170cdf0e10cSrcweir //-------------------------------------------------------------------------------------------------------------
171cdf0e10cSrcweir // private member
172cdf0e10cSrcweir //-------------------------------------------------------------------------------------------------------------
173cdf0e10cSrcweir
174cdf0e10cSrcweir private:
175cdf0e10cSrcweir css::uno::Reference< css::container::XNameAccess > m_xCfg;
176cdf0e10cSrcweir css::uno::Reference< css::container::XNameAccess > m_xNode;
177cdf0e10cSrcweir };
178cdf0e10cSrcweir
SvtPrintOptions_Impl(const OUString & rConfigRoot)179cdf0e10cSrcweir SvtPrintOptions_Impl::SvtPrintOptions_Impl(const OUString& rConfigRoot)
180cdf0e10cSrcweir {
181cdf0e10cSrcweir try
182cdf0e10cSrcweir {
183cdf0e10cSrcweir m_xCfg = css::uno::Reference< css::container::XNameAccess >(
184cdf0e10cSrcweir ::comphelper::ConfigurationHelper::openConfig(
185cdf0e10cSrcweir utl::getProcessServiceFactory(),
186cdf0e10cSrcweir ROOTNODE_PRINTOPTION,
187cdf0e10cSrcweir ::comphelper::ConfigurationHelper::E_STANDARD),
188cdf0e10cSrcweir css::uno::UNO_QUERY);
189cdf0e10cSrcweir
190cdf0e10cSrcweir if (m_xCfg.is())
191cdf0e10cSrcweir {
192cdf0e10cSrcweir UniString sTmp = UniString(rConfigRoot);
193cdf0e10cSrcweir xub_StrLen nTokenCount = sTmp.GetTokenCount('/');
194cdf0e10cSrcweir sTmp = sTmp.GetToken(nTokenCount - 1, '/');
195cdf0e10cSrcweir m_xCfg->getByName(OUString(sTmp.GetBuffer())) >>= m_xNode;
196cdf0e10cSrcweir }
197cdf0e10cSrcweir }
198cdf0e10cSrcweir catch (const css::uno::Exception& ex)
199cdf0e10cSrcweir {
200cdf0e10cSrcweir m_xNode.clear();
201cdf0e10cSrcweir m_xCfg.clear();
202cdf0e10cSrcweir LogHelper::logIt(ex);
203cdf0e10cSrcweir }
204cdf0e10cSrcweir }
205cdf0e10cSrcweir
IsReduceTransparency() const206cdf0e10cSrcweir sal_Bool SvtPrintOptions_Impl::IsReduceTransparency() const
207cdf0e10cSrcweir {
208cdf0e10cSrcweir sal_Bool bRet = sal_False;
209cdf0e10cSrcweir try
210cdf0e10cSrcweir {
211cdf0e10cSrcweir if (m_xNode.is())
212cdf0e10cSrcweir {
213cdf0e10cSrcweir css::uno::Reference< css::beans::XPropertySet > xSet(m_xNode, css::uno::UNO_QUERY);
214cdf0e10cSrcweir if (xSet.is())
215cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCETRANSPARENCY) >>= bRet;
216cdf0e10cSrcweir }
217cdf0e10cSrcweir }
218cdf0e10cSrcweir catch (const css::uno::Exception& ex)
219cdf0e10cSrcweir {
220cdf0e10cSrcweir LogHelper::logIt(ex);
221cdf0e10cSrcweir }
222cdf0e10cSrcweir
223cdf0e10cSrcweir return bRet;
224cdf0e10cSrcweir }
225cdf0e10cSrcweir
GetReducedTransparencyMode() const226cdf0e10cSrcweir sal_Int16 SvtPrintOptions_Impl::GetReducedTransparencyMode() const
227cdf0e10cSrcweir {
228cdf0e10cSrcweir sal_Int16 nRet = 0;
229cdf0e10cSrcweir try
230cdf0e10cSrcweir {
231cdf0e10cSrcweir if (m_xNode.is())
232cdf0e10cSrcweir {
233cdf0e10cSrcweir css::uno::Reference< css::beans::XPropertySet > xSet(m_xNode, css::uno::UNO_QUERY);
234cdf0e10cSrcweir if (xSet.is())
235cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEDTRANSPARENCYMODE) >>= nRet;
236cdf0e10cSrcweir }
237cdf0e10cSrcweir }
238cdf0e10cSrcweir catch (const css::uno::Exception& ex)
239cdf0e10cSrcweir {
240cdf0e10cSrcweir LogHelper::logIt(ex);
241cdf0e10cSrcweir }
242cdf0e10cSrcweir
243cdf0e10cSrcweir return nRet;
244cdf0e10cSrcweir }
245cdf0e10cSrcweir
IsReduceGradients() const246cdf0e10cSrcweir sal_Bool SvtPrintOptions_Impl::IsReduceGradients() const
247cdf0e10cSrcweir {
248cdf0e10cSrcweir sal_Bool bRet = sal_False;
249cdf0e10cSrcweir try
250cdf0e10cSrcweir {
251cdf0e10cSrcweir if (m_xNode.is())
252cdf0e10cSrcweir {
253cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
254cdf0e10cSrcweir if (xSet.is())
255cdf0e10cSrcweir {
256cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEGRADIENTS) >>= bRet;
257cdf0e10cSrcweir }
258cdf0e10cSrcweir }
259cdf0e10cSrcweir }
260cdf0e10cSrcweir catch (const css::uno::Exception& ex)
261cdf0e10cSrcweir {
262cdf0e10cSrcweir LogHelper::logIt(ex);
263cdf0e10cSrcweir }
264cdf0e10cSrcweir
265cdf0e10cSrcweir return bRet;
266cdf0e10cSrcweir }
267cdf0e10cSrcweir
GetReducedGradientMode() const268cdf0e10cSrcweir sal_Int16 SvtPrintOptions_Impl::GetReducedGradientMode() const
269cdf0e10cSrcweir {
270cdf0e10cSrcweir sal_Int16 nRet = 0;
271cdf0e10cSrcweir try
272cdf0e10cSrcweir {
273cdf0e10cSrcweir if (m_xNode.is())
274cdf0e10cSrcweir {
275cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
276cdf0e10cSrcweir if (xSet.is())
277cdf0e10cSrcweir {
278cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEDGRADIENTMODE) >>= nRet;
279cdf0e10cSrcweir }
280cdf0e10cSrcweir }
281cdf0e10cSrcweir }
282cdf0e10cSrcweir catch (const css::uno::Exception& ex)
283cdf0e10cSrcweir {
284cdf0e10cSrcweir LogHelper::logIt(ex);
285cdf0e10cSrcweir }
286cdf0e10cSrcweir
287cdf0e10cSrcweir return nRet;
288cdf0e10cSrcweir }
289cdf0e10cSrcweir
GetReducedGradientStepCount() const290cdf0e10cSrcweir sal_Int16 SvtPrintOptions_Impl::GetReducedGradientStepCount() const
291cdf0e10cSrcweir {
292cdf0e10cSrcweir sal_Int16 nRet = 64;
293cdf0e10cSrcweir try
294cdf0e10cSrcweir {
295cdf0e10cSrcweir if (m_xNode.is())
296cdf0e10cSrcweir {
297cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
298cdf0e10cSrcweir if (xSet.is())
299cdf0e10cSrcweir {
300cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEDGRADIENTSTEPCOUNT) >>= nRet;
301cdf0e10cSrcweir }
302cdf0e10cSrcweir }
303cdf0e10cSrcweir }
304cdf0e10cSrcweir catch (const css::uno::Exception& ex)
305cdf0e10cSrcweir {
306cdf0e10cSrcweir LogHelper::logIt(ex);
307cdf0e10cSrcweir }
308cdf0e10cSrcweir
309cdf0e10cSrcweir return nRet;
310cdf0e10cSrcweir }
311cdf0e10cSrcweir
IsReduceBitmaps() const312cdf0e10cSrcweir sal_Bool SvtPrintOptions_Impl::IsReduceBitmaps() const
313cdf0e10cSrcweir {
314cdf0e10cSrcweir sal_Bool bRet = sal_False;
315cdf0e10cSrcweir try
316cdf0e10cSrcweir {
317cdf0e10cSrcweir if (m_xNode.is())
318cdf0e10cSrcweir {
319cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
320cdf0e10cSrcweir if (xSet.is())
321cdf0e10cSrcweir {
322cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEBITMAPS) >>= bRet;
323cdf0e10cSrcweir }
324cdf0e10cSrcweir }
325cdf0e10cSrcweir }
326cdf0e10cSrcweir catch (const css::uno::Exception& ex)
327cdf0e10cSrcweir {
328cdf0e10cSrcweir LogHelper::logIt(ex);
329cdf0e10cSrcweir }
330cdf0e10cSrcweir
331cdf0e10cSrcweir return bRet;
332cdf0e10cSrcweir }
333cdf0e10cSrcweir
GetReducedBitmapMode() const334cdf0e10cSrcweir sal_Int16 SvtPrintOptions_Impl::GetReducedBitmapMode() const
335cdf0e10cSrcweir {
336cdf0e10cSrcweir sal_Int16 nRet = 1;
337cdf0e10cSrcweir try
338cdf0e10cSrcweir {
339cdf0e10cSrcweir if (m_xNode.is())
340cdf0e10cSrcweir {
341cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
342cdf0e10cSrcweir if (xSet.is())
343cdf0e10cSrcweir {
344cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEDBITMAPMODE) >>= nRet;
345cdf0e10cSrcweir }
346cdf0e10cSrcweir }
347cdf0e10cSrcweir }
348cdf0e10cSrcweir catch (const css::uno::Exception& ex)
349cdf0e10cSrcweir {
350cdf0e10cSrcweir LogHelper::logIt(ex);
351cdf0e10cSrcweir }
352cdf0e10cSrcweir
353cdf0e10cSrcweir return nRet;
354cdf0e10cSrcweir }
355cdf0e10cSrcweir
GetReducedBitmapResolution() const356cdf0e10cSrcweir sal_Int16 SvtPrintOptions_Impl::GetReducedBitmapResolution() const
357cdf0e10cSrcweir {
358cdf0e10cSrcweir sal_Int16 nRet = 3;
359cdf0e10cSrcweir try
360cdf0e10cSrcweir {
361cdf0e10cSrcweir if (m_xNode.is())
362cdf0e10cSrcweir {
363cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
364cdf0e10cSrcweir if (xSet.is())
365cdf0e10cSrcweir {
366cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEDBITMAPRESOLUTION) >>= nRet;
367cdf0e10cSrcweir }
368cdf0e10cSrcweir }
369cdf0e10cSrcweir }
370cdf0e10cSrcweir catch (const css::uno::Exception& ex)
371cdf0e10cSrcweir {
372cdf0e10cSrcweir LogHelper::logIt(ex);
373cdf0e10cSrcweir }
374cdf0e10cSrcweir
375cdf0e10cSrcweir return nRet;
376cdf0e10cSrcweir }
377cdf0e10cSrcweir
IsReducedBitmapIncludesTransparency() const378cdf0e10cSrcweir sal_Bool SvtPrintOptions_Impl::IsReducedBitmapIncludesTransparency() const
379cdf0e10cSrcweir {
380cdf0e10cSrcweir sal_Bool bRet = sal_True;
381cdf0e10cSrcweir try
382cdf0e10cSrcweir {
383cdf0e10cSrcweir if (m_xNode.is())
384cdf0e10cSrcweir {
385cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
386cdf0e10cSrcweir if (xSet.is())
387cdf0e10cSrcweir {
388cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_REDUCEDBITMAPINCLUDESTRANSPARENCY) >>= bRet;
389cdf0e10cSrcweir }
390cdf0e10cSrcweir }
391cdf0e10cSrcweir }
392cdf0e10cSrcweir catch (const css::uno::Exception& ex)
393cdf0e10cSrcweir {
394cdf0e10cSrcweir LogHelper::logIt(ex);
395cdf0e10cSrcweir }
396cdf0e10cSrcweir
397cdf0e10cSrcweir return bRet;
398cdf0e10cSrcweir }
399cdf0e10cSrcweir
IsConvertToGreyscales() const400cdf0e10cSrcweir sal_Bool SvtPrintOptions_Impl::IsConvertToGreyscales() const
401cdf0e10cSrcweir {
402cdf0e10cSrcweir sal_Bool bRet = sal_False;
403cdf0e10cSrcweir try
404cdf0e10cSrcweir {
405cdf0e10cSrcweir if (m_xNode.is())
406cdf0e10cSrcweir {
407cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
408cdf0e10cSrcweir if (xSet.is())
409cdf0e10cSrcweir {
410cdf0e10cSrcweir xSet->getPropertyValue(PROPERTYNAME_CONVERTTOGREYSCALES) >>= bRet;
411cdf0e10cSrcweir }
412cdf0e10cSrcweir }
413cdf0e10cSrcweir }
414cdf0e10cSrcweir catch (const css::uno::Exception& ex)
415cdf0e10cSrcweir {
416cdf0e10cSrcweir LogHelper::logIt(ex);
417cdf0e10cSrcweir }
418cdf0e10cSrcweir
419cdf0e10cSrcweir return bRet;
420cdf0e10cSrcweir
421cdf0e10cSrcweir }
422cdf0e10cSrcweir
SetReduceTransparency(sal_Bool bState)423cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReduceTransparency(sal_Bool bState)
424cdf0e10cSrcweir {
425cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCETRANSPARENCY, bState);
426cdf0e10cSrcweir }
427cdf0e10cSrcweir
SetReducedTransparencyMode(sal_Int16 nMode)428cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReducedTransparencyMode(sal_Int16 nMode)
429cdf0e10cSrcweir {
430cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEDTRANSPARENCYMODE, nMode);
431cdf0e10cSrcweir }
432cdf0e10cSrcweir
SetReduceGradients(sal_Bool bState)433cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReduceGradients(sal_Bool bState)
434cdf0e10cSrcweir {
435cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEGRADIENTS, bState);
436cdf0e10cSrcweir }
437cdf0e10cSrcweir
SetReducedGradientMode(sal_Int16 nMode)438cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReducedGradientMode(sal_Int16 nMode)
439cdf0e10cSrcweir {
440cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEDGRADIENTMODE, nMode);
441cdf0e10cSrcweir }
442cdf0e10cSrcweir
SetReducedGradientStepCount(sal_Int16 nStepCount)443cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReducedGradientStepCount(sal_Int16 nStepCount )
444cdf0e10cSrcweir {
445cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEDGRADIENTSTEPCOUNT, nStepCount);
446cdf0e10cSrcweir }
447cdf0e10cSrcweir
SetReduceBitmaps(sal_Bool bState)448cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReduceBitmaps(sal_Bool bState )
449cdf0e10cSrcweir {
450cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEBITMAPS, bState);
451cdf0e10cSrcweir }
452cdf0e10cSrcweir
SetReducedBitmapMode(sal_Int16 nMode)453cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReducedBitmapMode(sal_Int16 nMode )
454cdf0e10cSrcweir {
455cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEDBITMAPMODE, nMode);
456cdf0e10cSrcweir }
457cdf0e10cSrcweir
SetReducedBitmapResolution(sal_Int16 nResolution)458cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReducedBitmapResolution(sal_Int16 nResolution )
459cdf0e10cSrcweir {
460cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEDBITMAPRESOLUTION, nResolution);
461cdf0e10cSrcweir }
462cdf0e10cSrcweir
SetReducedBitmapIncludesTransparency(sal_Bool bState)463cdf0e10cSrcweir void SvtPrintOptions_Impl::SetReducedBitmapIncludesTransparency(sal_Bool bState )
464cdf0e10cSrcweir {
465cdf0e10cSrcweir impl_setValue(PROPERTYNAME_REDUCEDBITMAPINCLUDESTRANSPARENCY, bState);
466cdf0e10cSrcweir }
467cdf0e10cSrcweir
SetConvertToGreyscales(sal_Bool bState)468cdf0e10cSrcweir void SvtPrintOptions_Impl::SetConvertToGreyscales(sal_Bool bState)
469cdf0e10cSrcweir {
470cdf0e10cSrcweir impl_setValue(PROPERTYNAME_CONVERTTOGREYSCALES, bState);
471cdf0e10cSrcweir }
472cdf0e10cSrcweir
~SvtPrintOptions_Impl()473cdf0e10cSrcweir SvtPrintOptions_Impl::~SvtPrintOptions_Impl()
474cdf0e10cSrcweir {
475cdf0e10cSrcweir m_xNode.clear();
476cdf0e10cSrcweir m_xCfg.clear();
477cdf0e10cSrcweir }
478cdf0e10cSrcweir
impl_setValue(const::rtl::OUString & sProp,::sal_Bool bNew)479cdf0e10cSrcweir void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp,
480cdf0e10cSrcweir ::sal_Bool bNew )
481cdf0e10cSrcweir {
482cdf0e10cSrcweir try
483cdf0e10cSrcweir {
484cdf0e10cSrcweir if ( ! m_xNode.is())
485cdf0e10cSrcweir return;
486cdf0e10cSrcweir
487cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
488cdf0e10cSrcweir if ( ! xSet.is())
489cdf0e10cSrcweir return;
490cdf0e10cSrcweir
491cdf0e10cSrcweir ::sal_Bool bOld = ! bNew;
492cdf0e10cSrcweir if ( ! (xSet->getPropertyValue(sProp) >>= bOld))
493cdf0e10cSrcweir return;
494cdf0e10cSrcweir
495cdf0e10cSrcweir if (bOld != bNew)
496cdf0e10cSrcweir {
497cdf0e10cSrcweir xSet->setPropertyValue(sProp, css::uno::makeAny(bNew));
498cdf0e10cSrcweir ::comphelper::ConfigurationHelper::flush(m_xCfg);
499cdf0e10cSrcweir }
500cdf0e10cSrcweir }
501cdf0e10cSrcweir catch(const css::uno::Exception& ex)
502cdf0e10cSrcweir {
503cdf0e10cSrcweir LogHelper::logIt(ex);
504cdf0e10cSrcweir }
505cdf0e10cSrcweir }
506cdf0e10cSrcweir
impl_setValue(const::rtl::OUString & sProp,::sal_Int16 nNew)507cdf0e10cSrcweir void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString& sProp,
508cdf0e10cSrcweir ::sal_Int16 nNew )
509cdf0e10cSrcweir {
510cdf0e10cSrcweir try
511cdf0e10cSrcweir {
512cdf0e10cSrcweir if ( ! m_xNode.is())
513cdf0e10cSrcweir return;
514cdf0e10cSrcweir
515cdf0e10cSrcweir css::uno::Reference<css::beans::XPropertySet> xSet(m_xNode, css::uno::UNO_QUERY);
516cdf0e10cSrcweir if ( ! xSet.is())
517cdf0e10cSrcweir return;
518cdf0e10cSrcweir
519cdf0e10cSrcweir ::sal_Int16 nOld = nNew+1;
520cdf0e10cSrcweir if ( ! (xSet->getPropertyValue(sProp) >>= nOld))
521cdf0e10cSrcweir return;
522cdf0e10cSrcweir
523cdf0e10cSrcweir if (nOld != nNew)
524cdf0e10cSrcweir {
525cdf0e10cSrcweir xSet->setPropertyValue(sProp, css::uno::makeAny(nNew));
526cdf0e10cSrcweir ::comphelper::ConfigurationHelper::flush(m_xCfg);
527cdf0e10cSrcweir }
528cdf0e10cSrcweir }
529cdf0e10cSrcweir catch(const css::uno::Exception& ex)
530cdf0e10cSrcweir {
531cdf0e10cSrcweir LogHelper::logIt(ex);
532cdf0e10cSrcweir }
533cdf0e10cSrcweir }
534cdf0e10cSrcweir
535cdf0e10cSrcweir // -----------------------------------------------------------------------------
536cdf0e10cSrcweir
537cdf0e10cSrcweir
538cdf0e10cSrcweir // -----------------------
539cdf0e10cSrcweir // - SvtBasePrintOptions -
540cdf0e10cSrcweir // -----------------------
541cdf0e10cSrcweir
SvtBasePrintOptions()542cdf0e10cSrcweir SvtBasePrintOptions::SvtBasePrintOptions()
543cdf0e10cSrcweir {
544cdf0e10cSrcweir }
545cdf0e10cSrcweir
546cdf0e10cSrcweir // -----------------------------------------------------------------------------
547cdf0e10cSrcweir
~SvtBasePrintOptions()548cdf0e10cSrcweir SvtBasePrintOptions::~SvtBasePrintOptions()
549cdf0e10cSrcweir {
550cdf0e10cSrcweir }
551cdf0e10cSrcweir
552cdf0e10cSrcweir // -----------------------------------------------------------------------------
553cdf0e10cSrcweir
GetOwnStaticMutex()554cdf0e10cSrcweir Mutex& SvtBasePrintOptions::GetOwnStaticMutex()
555cdf0e10cSrcweir {
556cdf0e10cSrcweir // Initialize static mutex only for one time!
557cdf0e10cSrcweir static Mutex* pMutex = NULL;
558cdf0e10cSrcweir // If these method first called (Mutex not already exist!) ...
559cdf0e10cSrcweir if( pMutex == NULL )
560cdf0e10cSrcweir {
561cdf0e10cSrcweir // ... we must create a new one. Protect follow code with the global mutex -
562cdf0e10cSrcweir // It must be - we create a static variable!
563cdf0e10cSrcweir MutexGuard aGuard( Mutex::getGlobalMutex() );
564*6b5a962bSmseidel // We must check our pointer again - because it can be that another instance of our class will be faster than these!
565cdf0e10cSrcweir if( pMutex == NULL )
566cdf0e10cSrcweir {
567cdf0e10cSrcweir // Create the new mutex and set it for return on static variable.
568cdf0e10cSrcweir static Mutex aMutex;
569cdf0e10cSrcweir pMutex = &aMutex;
570cdf0e10cSrcweir }
571cdf0e10cSrcweir }
572cdf0e10cSrcweir // Return new created or already existing mutex object.
573cdf0e10cSrcweir return *pMutex;
574cdf0e10cSrcweir }
575cdf0e10cSrcweir
576cdf0e10cSrcweir // -----------------------------------------------------------------------------
577cdf0e10cSrcweir
IsReduceTransparency() const578cdf0e10cSrcweir sal_Bool SvtBasePrintOptions::IsReduceTransparency() const
579cdf0e10cSrcweir {
580cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
581cdf0e10cSrcweir return m_pDataContainer->IsReduceTransparency();
582cdf0e10cSrcweir }
583cdf0e10cSrcweir
584cdf0e10cSrcweir // -----------------------------------------------------------------------------
585cdf0e10cSrcweir
GetReducedTransparencyMode() const586cdf0e10cSrcweir sal_Int16 SvtBasePrintOptions::GetReducedTransparencyMode() const
587cdf0e10cSrcweir {
588cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
589cdf0e10cSrcweir return m_pDataContainer->GetReducedTransparencyMode();
590cdf0e10cSrcweir }
591cdf0e10cSrcweir
592cdf0e10cSrcweir // -----------------------------------------------------------------------------
593cdf0e10cSrcweir
IsReduceGradients() const594cdf0e10cSrcweir sal_Bool SvtBasePrintOptions::IsReduceGradients() const
595cdf0e10cSrcweir {
596cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
597cdf0e10cSrcweir return m_pDataContainer->IsReduceGradients();
598cdf0e10cSrcweir }
599cdf0e10cSrcweir
600cdf0e10cSrcweir // -----------------------------------------------------------------------------
601cdf0e10cSrcweir
GetReducedGradientMode() const602cdf0e10cSrcweir sal_Int16 SvtBasePrintOptions::GetReducedGradientMode() const
603cdf0e10cSrcweir {
604cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
605cdf0e10cSrcweir return m_pDataContainer->GetReducedGradientMode();
606cdf0e10cSrcweir }
607cdf0e10cSrcweir
608cdf0e10cSrcweir // -----------------------------------------------------------------------------
609cdf0e10cSrcweir
GetReducedGradientStepCount() const610cdf0e10cSrcweir sal_Int16 SvtBasePrintOptions::GetReducedGradientStepCount() const
611cdf0e10cSrcweir {
612cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
613cdf0e10cSrcweir return m_pDataContainer->GetReducedGradientStepCount();
614cdf0e10cSrcweir }
615cdf0e10cSrcweir
616cdf0e10cSrcweir // -----------------------------------------------------------------------------
617cdf0e10cSrcweir
IsReduceBitmaps() const618cdf0e10cSrcweir sal_Bool SvtBasePrintOptions::IsReduceBitmaps() const
619cdf0e10cSrcweir {
620cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
621cdf0e10cSrcweir return m_pDataContainer->IsReduceBitmaps();
622cdf0e10cSrcweir }
623cdf0e10cSrcweir
624cdf0e10cSrcweir // -----------------------------------------------------------------------------
625cdf0e10cSrcweir
GetReducedBitmapMode() const626cdf0e10cSrcweir sal_Int16 SvtBasePrintOptions::GetReducedBitmapMode() const
627cdf0e10cSrcweir {
628cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
629cdf0e10cSrcweir return m_pDataContainer->GetReducedBitmapMode();
630cdf0e10cSrcweir }
631cdf0e10cSrcweir
632cdf0e10cSrcweir // -----------------------------------------------------------------------------
633cdf0e10cSrcweir
GetReducedBitmapResolution() const634cdf0e10cSrcweir sal_Int16 SvtBasePrintOptions::GetReducedBitmapResolution() const
635cdf0e10cSrcweir {
636cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
637cdf0e10cSrcweir return m_pDataContainer->GetReducedBitmapResolution();
638cdf0e10cSrcweir }
639cdf0e10cSrcweir
640cdf0e10cSrcweir // -----------------------------------------------------------------------------
641cdf0e10cSrcweir
IsReducedBitmapIncludesTransparency() const642cdf0e10cSrcweir sal_Bool SvtBasePrintOptions::IsReducedBitmapIncludesTransparency() const
643cdf0e10cSrcweir {
644cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
645cdf0e10cSrcweir return m_pDataContainer->IsReducedBitmapIncludesTransparency();
646cdf0e10cSrcweir }
647cdf0e10cSrcweir
648cdf0e10cSrcweir // -----------------------------------------------------------------------------
649cdf0e10cSrcweir
IsConvertToGreyscales() const650cdf0e10cSrcweir sal_Bool SvtBasePrintOptions::IsConvertToGreyscales() const
651cdf0e10cSrcweir {
652cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
653cdf0e10cSrcweir return m_pDataContainer->IsConvertToGreyscales();
654cdf0e10cSrcweir }
655cdf0e10cSrcweir
656cdf0e10cSrcweir // -----------------------------------------------------------------------------
657cdf0e10cSrcweir
SetReduceTransparency(sal_Bool bState)658cdf0e10cSrcweir void SvtBasePrintOptions::SetReduceTransparency( sal_Bool bState )
659cdf0e10cSrcweir {
660cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
661cdf0e10cSrcweir m_pDataContainer->SetReduceTransparency( bState ) ;
662cdf0e10cSrcweir }
663cdf0e10cSrcweir
664cdf0e10cSrcweir // -----------------------------------------------------------------------------
665cdf0e10cSrcweir
SetReducedTransparencyMode(sal_Int16 nMode)666cdf0e10cSrcweir void SvtBasePrintOptions::SetReducedTransparencyMode( sal_Int16 nMode )
667cdf0e10cSrcweir {
668cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
669cdf0e10cSrcweir m_pDataContainer->SetReducedTransparencyMode( nMode );
670cdf0e10cSrcweir }
671cdf0e10cSrcweir
672cdf0e10cSrcweir // -----------------------------------------------------------------------------
673cdf0e10cSrcweir
SetReduceGradients(sal_Bool bState)674cdf0e10cSrcweir void SvtBasePrintOptions::SetReduceGradients( sal_Bool bState )
675cdf0e10cSrcweir {
676cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
677cdf0e10cSrcweir m_pDataContainer->SetReduceGradients( bState );
678cdf0e10cSrcweir }
679cdf0e10cSrcweir
680cdf0e10cSrcweir // -----------------------------------------------------------------------------
681cdf0e10cSrcweir
SetReducedGradientMode(sal_Int16 nMode)682cdf0e10cSrcweir void SvtBasePrintOptions::SetReducedGradientMode( sal_Int16 nMode )
683cdf0e10cSrcweir {
684cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
685cdf0e10cSrcweir m_pDataContainer->SetReducedGradientMode( nMode );
686cdf0e10cSrcweir }
687cdf0e10cSrcweir
688cdf0e10cSrcweir // -----------------------------------------------------------------------------
689cdf0e10cSrcweir
SetReducedGradientStepCount(sal_Int16 nStepCount)690cdf0e10cSrcweir void SvtBasePrintOptions::SetReducedGradientStepCount( sal_Int16 nStepCount )
691cdf0e10cSrcweir {
692cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
693cdf0e10cSrcweir m_pDataContainer->SetReducedGradientStepCount( nStepCount );
694cdf0e10cSrcweir }
695cdf0e10cSrcweir
696cdf0e10cSrcweir // -----------------------------------------------------------------------------
697cdf0e10cSrcweir
SetReduceBitmaps(sal_Bool bState)698cdf0e10cSrcweir void SvtBasePrintOptions::SetReduceBitmaps( sal_Bool bState )
699cdf0e10cSrcweir {
700cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
701cdf0e10cSrcweir m_pDataContainer->SetReduceBitmaps( bState );
702cdf0e10cSrcweir }
703cdf0e10cSrcweir
704cdf0e10cSrcweir // -----------------------------------------------------------------------------
705cdf0e10cSrcweir
SetReducedBitmapMode(sal_Int16 nMode)706cdf0e10cSrcweir void SvtBasePrintOptions::SetReducedBitmapMode( sal_Int16 nMode )
707cdf0e10cSrcweir {
708cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
709cdf0e10cSrcweir m_pDataContainer->SetReducedBitmapMode( nMode );
710cdf0e10cSrcweir }
711cdf0e10cSrcweir
712cdf0e10cSrcweir // -----------------------------------------------------------------------------
713cdf0e10cSrcweir
SetReducedBitmapResolution(sal_Int16 nResolution)714cdf0e10cSrcweir void SvtBasePrintOptions::SetReducedBitmapResolution( sal_Int16 nResolution )
715cdf0e10cSrcweir {
716cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
717cdf0e10cSrcweir m_pDataContainer->SetReducedBitmapResolution( nResolution );
718cdf0e10cSrcweir }
719cdf0e10cSrcweir
720cdf0e10cSrcweir // -----------------------------------------------------------------------------
721cdf0e10cSrcweir
SetReducedBitmapIncludesTransparency(sal_Bool bState)722cdf0e10cSrcweir void SvtBasePrintOptions::SetReducedBitmapIncludesTransparency( sal_Bool bState )
723cdf0e10cSrcweir {
724cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
725cdf0e10cSrcweir m_pDataContainer->SetReducedBitmapIncludesTransparency( bState );
726cdf0e10cSrcweir }
727cdf0e10cSrcweir
728cdf0e10cSrcweir // -----------------------------------------------------------------------------
729cdf0e10cSrcweir
SetConvertToGreyscales(sal_Bool bState)730cdf0e10cSrcweir void SvtBasePrintOptions::SetConvertToGreyscales( sal_Bool bState )
731cdf0e10cSrcweir {
732cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
733cdf0e10cSrcweir m_pDataContainer->SetConvertToGreyscales( bState );
734cdf0e10cSrcweir }
735cdf0e10cSrcweir
736cdf0e10cSrcweir // -----------------------------------------------------------------------------
737cdf0e10cSrcweir
GetPrinterOptions(PrinterOptions & rOptions) const738cdf0e10cSrcweir void SvtBasePrintOptions::GetPrinterOptions( PrinterOptions& rOptions ) const
739cdf0e10cSrcweir {
740cdf0e10cSrcweir rOptions.SetReduceTransparency( IsReduceTransparency() );
741cdf0e10cSrcweir rOptions.SetReducedTransparencyMode( (PrinterTransparencyMode) GetReducedTransparencyMode() );
742cdf0e10cSrcweir rOptions.SetReduceGradients( IsReduceGradients() );
743cdf0e10cSrcweir rOptions.SetReducedGradientMode( (PrinterGradientMode) GetReducedGradientMode() );
744cdf0e10cSrcweir rOptions.SetReducedGradientStepCount( GetReducedGradientStepCount() );
745cdf0e10cSrcweir rOptions.SetReduceBitmaps( IsReduceBitmaps() );
746cdf0e10cSrcweir rOptions.SetReducedBitmapMode( (PrinterBitmapMode) GetReducedBitmapMode() );
747cdf0e10cSrcweir rOptions.SetReducedBitmapResolution( aDPIArray[ Min( (sal_uInt16) GetReducedBitmapResolution(), (sal_uInt16)( DPI_COUNT - 1 ) ) ] );
748cdf0e10cSrcweir rOptions.SetReducedBitmapIncludesTransparency( IsReducedBitmapIncludesTransparency() );
749cdf0e10cSrcweir rOptions.SetConvertToGreyscales( IsConvertToGreyscales() );
750cdf0e10cSrcweir }
751cdf0e10cSrcweir
752cdf0e10cSrcweir // -----------------------------------------------------------------------------
753cdf0e10cSrcweir
SetPrinterOptions(const PrinterOptions & rOptions)754cdf0e10cSrcweir void SvtBasePrintOptions::SetPrinterOptions( const PrinterOptions& rOptions )
755cdf0e10cSrcweir {
756cdf0e10cSrcweir SetReduceTransparency( rOptions.IsReduceTransparency() );
757cdf0e10cSrcweir SetReducedTransparencyMode(
758cdf0e10cSrcweir sal::static_int_cast< sal_Int16 >(
759cdf0e10cSrcweir rOptions.GetReducedTransparencyMode()) );
760cdf0e10cSrcweir SetReduceGradients( rOptions.IsReduceGradients() );
761cdf0e10cSrcweir SetReducedGradientMode(
762cdf0e10cSrcweir sal::static_int_cast< sal_Int16 >(rOptions.GetReducedGradientMode()) );
763cdf0e10cSrcweir SetReducedGradientStepCount( rOptions.GetReducedGradientStepCount() );
764cdf0e10cSrcweir SetReduceBitmaps( rOptions.IsReduceBitmaps() );
765cdf0e10cSrcweir SetReducedBitmapMode(
766cdf0e10cSrcweir sal::static_int_cast< sal_Int16 >(rOptions.GetReducedBitmapMode()) );
767cdf0e10cSrcweir SetReducedBitmapIncludesTransparency( rOptions.IsReducedBitmapIncludesTransparency() );
768cdf0e10cSrcweir SetConvertToGreyscales( rOptions.IsConvertToGreyscales() );
769cdf0e10cSrcweir
770cdf0e10cSrcweir const sal_uInt16 nDPI = rOptions.GetReducedBitmapResolution();
771cdf0e10cSrcweir
772cdf0e10cSrcweir if( nDPI < aDPIArray[ 0 ] )
773cdf0e10cSrcweir SetReducedBitmapResolution( 0 );
774cdf0e10cSrcweir else
775cdf0e10cSrcweir {
776cdf0e10cSrcweir for( long i = ( DPI_COUNT - 1 ); i >= 0; i-- )
777cdf0e10cSrcweir {
778cdf0e10cSrcweir if( nDPI >= aDPIArray[ i ] )
779cdf0e10cSrcweir {
780cdf0e10cSrcweir SetReducedBitmapResolution( (sal_Int16) i );
781cdf0e10cSrcweir i = -1;
782cdf0e10cSrcweir }
783cdf0e10cSrcweir }
784cdf0e10cSrcweir }
785cdf0e10cSrcweir }
786cdf0e10cSrcweir
787cdf0e10cSrcweir // ---------------------
788cdf0e10cSrcweir // - SvtPrinterOptions -
789cdf0e10cSrcweir // ---------------------
790cdf0e10cSrcweir
SvtPrinterOptions()791cdf0e10cSrcweir SvtPrinterOptions::SvtPrinterOptions()
792cdf0e10cSrcweir {
793cdf0e10cSrcweir // Global access, must be guarded (multithreading!).
794cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
795*6b5a962bSmseidel // Increase our refcount ...
796cdf0e10cSrcweir ++m_nRefCount;
797*6b5a962bSmseidel // ... and initialize our data container only if it not already!
798cdf0e10cSrcweir if( m_pStaticDataContainer == NULL )
799cdf0e10cSrcweir {
800cdf0e10cSrcweir OUString aRootPath( ROOTNODE_START );
801cdf0e10cSrcweir m_pStaticDataContainer = new SvtPrintOptions_Impl( aRootPath += OUString( RTL_CONSTASCII_USTRINGPARAM( "/Printer" ) ) );
802cdf0e10cSrcweir pPrinterOptionsDataContainer = m_pStaticDataContainer;
803cdf0e10cSrcweir ItemHolder2::holdConfigItem(E_PRINTOPTIONS);
804cdf0e10cSrcweir }
805cdf0e10cSrcweir
806cdf0e10cSrcweir SetDataContainer( m_pStaticDataContainer );
807cdf0e10cSrcweir }
808cdf0e10cSrcweir
809cdf0e10cSrcweir // -----------------------------------------------------------------------------
810cdf0e10cSrcweir
~SvtPrinterOptions()811cdf0e10cSrcweir SvtPrinterOptions::~SvtPrinterOptions()
812cdf0e10cSrcweir {
813cdf0e10cSrcweir // Global access, must be guarded (multithreading!)
814cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
815*6b5a962bSmseidel // Decrease our refcount.
816cdf0e10cSrcweir --m_nRefCount;
817cdf0e10cSrcweir // If last instance was deleted ...
818*6b5a962bSmseidel // we must destroy our static data container!
819cdf0e10cSrcweir if( m_nRefCount <= 0 )
820cdf0e10cSrcweir {
821cdf0e10cSrcweir delete m_pStaticDataContainer;
822cdf0e10cSrcweir m_pStaticDataContainer = NULL;
823cdf0e10cSrcweir pPrinterOptionsDataContainer = NULL;
824cdf0e10cSrcweir }
825cdf0e10cSrcweir }
826cdf0e10cSrcweir
827cdf0e10cSrcweir // ---------------------
828cdf0e10cSrcweir // - SvtPrintFileOptions -
829cdf0e10cSrcweir // ---------------------
830cdf0e10cSrcweir
SvtPrintFileOptions()831cdf0e10cSrcweir SvtPrintFileOptions::SvtPrintFileOptions()
832cdf0e10cSrcweir {
833cdf0e10cSrcweir // Global access, must be guarded (multithreading!).
834cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
835*6b5a962bSmseidel // Increase our refcount ...
836cdf0e10cSrcweir ++m_nRefCount;
837*6b5a962bSmseidel // ... and initialize our data container only if it not already!
838cdf0e10cSrcweir if( m_pStaticDataContainer == NULL )
839cdf0e10cSrcweir {
840cdf0e10cSrcweir OUString aRootPath( ROOTNODE_START );
841cdf0e10cSrcweir m_pStaticDataContainer = new SvtPrintOptions_Impl( aRootPath += OUString( RTL_CONSTASCII_USTRINGPARAM( "/File" ) ) );
842cdf0e10cSrcweir pPrintFileOptionsDataContainer = m_pStaticDataContainer;
843cdf0e10cSrcweir
844cdf0e10cSrcweir ItemHolder2::holdConfigItem(E_PRINTFILEOPTIONS);
845cdf0e10cSrcweir }
846cdf0e10cSrcweir
847cdf0e10cSrcweir SetDataContainer( m_pStaticDataContainer );
848cdf0e10cSrcweir }
849cdf0e10cSrcweir
850cdf0e10cSrcweir // -----------------------------------------------------------------------------
851cdf0e10cSrcweir
~SvtPrintFileOptions()852cdf0e10cSrcweir SvtPrintFileOptions::~SvtPrintFileOptions()
853cdf0e10cSrcweir {
854cdf0e10cSrcweir // Global access, must be guarded (multithreading!)
855cdf0e10cSrcweir MutexGuard aGuard( GetOwnStaticMutex() );
856*6b5a962bSmseidel // Decrease our refcount.
857cdf0e10cSrcweir --m_nRefCount;
858cdf0e10cSrcweir // If last instance was deleted ...
859*6b5a962bSmseidel // we must destroy our static data container!
860cdf0e10cSrcweir if( m_nRefCount <= 0 )
861cdf0e10cSrcweir {
862cdf0e10cSrcweir delete m_pStaticDataContainer;
863cdf0e10cSrcweir m_pStaticDataContainer = NULL;
864cdf0e10cSrcweir pPrintFileOptionsDataContainer = NULL;
865cdf0e10cSrcweir }
866cdf0e10cSrcweir }
867