1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: printoptions.cxx,v $
10 * $Revision: 1.14.236.3 $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
31 // MARKER(update_precomp.py): autogen include statement, do not remove
32 #include "precompiled_svtools.hxx"
34 #ifdef SVL_DLLIMPLEMENTATION
35 #undef SVL_DLLIMPLEMENTATION
37 #define SVT_DLLIMPLEMENTATION
39 //_________________________________________________________________________________________________________________
41 //_________________________________________________________________________________________________________________
43 #include <svtools/printoptions.hxx>
44 #include <unotools/configmgr.hxx>
45 #include <unotools/configitem.hxx>
46 #include <tools/debug.hxx>
47 #include <vcl/print.hxx>
48 #include <com/sun/star/uno/Any.hxx>
49 #include <com/sun/star/uno/Sequence.hxx>
51 #ifndef _COM_SUN_STAR_BEANS_XPROPERTYSET_HPP_
52 #include <com/sun/star/beans/XPropertySet.hpp>
55 #ifndef _COM_SUN_STAR_CONTAINER_XNAMEACCESS_HPP_
56 #include <com/sun/star/container/XNameAccess.hpp>
59 #ifndef _COM_SUN_STAR_CONTAINER_XNAMECONTAINER_HPP_
60 #include <com/sun/star/container/XNameContainer.hpp>
63 #ifndef _COM_SUN_STAR_LANG_XSINGLESERVICEFACTORY_HPP_
64 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
67 #ifndef _COMPHELPER_CONFIGURATIONHELPER_HXX_
68 #include <comphelper/configurationhelper.hxx>
71 #ifndef _UNOTOOLS_PROCESSFACTORY_HXX_
72 #include <unotools/processfactory.hxx>
75 #ifndef _SVT_LOGHELPER_HXX
76 #include <loghelper.hxx>
79 #include <itemholder2.hxx>
86 static USHORT aDPIArray
[] = { 72, 96, 150, 200, 300, 600 };
88 #define DPI_COUNT (sizeof(aDPIArray)/sizeof(aDPIArray[0 ]))
94 #define ROOTNODE_START OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Print/Option"))
95 #define ROOTNODE_PRINTOPTION OUString(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.Common/Print/Option"))
97 #define PROPERTYNAME_REDUCETRANSPARENCY OUString(RTL_CONSTASCII_USTRINGPARAM("ReduceTransparency"))
98 #define PROPERTYNAME_REDUCEDTRANSPARENCYMODE OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedTransparencyMode"))
99 #define PROPERTYNAME_REDUCEGRADIENTS OUString(RTL_CONSTASCII_USTRINGPARAM("ReduceGradients"))
100 #define PROPERTYNAME_REDUCEDGRADIENTMODE OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedGradientMode"))
101 #define PROPERTYNAME_REDUCEDGRADIENTSTEPCOUNT OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedGradientStepCount"))
102 #define PROPERTYNAME_REDUCEBITMAPS OUString(RTL_CONSTASCII_USTRINGPARAM("ReduceBitmaps"))
103 #define PROPERTYNAME_REDUCEDBITMAPMODE OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedBitmapMode"))
104 #define PROPERTYNAME_REDUCEDBITMAPRESOLUTION OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedBitmapResolution"))
105 #define PROPERTYNAME_REDUCEDBITMAPINCLUDESTRANSPARENCY OUString(RTL_CONSTASCII_USTRINGPARAM("ReducedBitmapIncludesTransparency"))
106 #define PROPERTYNAME_CONVERTTOGREYSCALES OUString(RTL_CONSTASCII_USTRINGPARAM("ConvertToGreyscales"))
112 using namespace ::utl
;
113 using namespace ::rtl
;
114 using namespace ::osl
;
115 using namespace ::com::sun::star::uno
;
116 namespace css
= com::sun::star
;
122 static SvtPrintOptions_Impl
* pPrinterOptionsDataContainer
= NULL
;
123 static SvtPrintOptions_Impl
* pPrintFileOptionsDataContainer
= NULL
;
125 SvtPrintOptions_Impl
* SvtPrinterOptions::m_pStaticDataContainer
= NULL
;
126 sal_Int32
SvtPrinterOptions::m_nRefCount
= 0;
128 SvtPrintOptions_Impl
* SvtPrintFileOptions::m_pStaticDataContainer
= NULL
;
129 sal_Int32
SvtPrintFileOptions::m_nRefCount
= 0;
131 // ------------------------
132 // - SvtPrintOptions_Impl -
133 // ------------------------
135 class SvtPrintOptions_Impl
139 //---------------------------------------------------------------------------------------------------------
140 // constructor / destructor
141 //---------------------------------------------------------------------------------------------------------
143 SvtPrintOptions_Impl( const OUString
& rConfigRoot
);
144 ~SvtPrintOptions_Impl();
146 //---------------------------------------------------------------------------------------------------------
148 //---------------------------------------------------------------------------------------------------------
150 sal_Bool
IsReduceTransparency() const ;
151 sal_Int16
GetReducedTransparencyMode() const ;
152 sal_Bool
IsReduceGradients() const ;
153 sal_Int16
GetReducedGradientMode() const ;
154 sal_Int16
GetReducedGradientStepCount() const ;
155 sal_Bool
IsReduceBitmaps() const ;
156 sal_Int16
GetReducedBitmapMode() const ;
157 sal_Int16
GetReducedBitmapResolution() const ;
158 sal_Bool
IsReducedBitmapIncludesTransparency() const ;
159 sal_Bool
IsConvertToGreyscales() const;
161 void SetReduceTransparency( sal_Bool bState
) ;
162 void SetReducedTransparencyMode( sal_Int16 nMode
) ;
163 void SetReduceGradients( sal_Bool bState
) ;
164 void SetReducedGradientMode( sal_Int16 nMode
) ;
165 void SetReducedGradientStepCount( sal_Int16 nStepCount
) ;
166 void SetReduceBitmaps( sal_Bool bState
) ;
167 void SetReducedBitmapMode( sal_Int16 nMode
) ;
168 void SetReducedBitmapResolution( sal_Int16 nResolution
) ;
169 void SetReducedBitmapIncludesTransparency( sal_Bool bState
) ;
170 void SetConvertToGreyscales( sal_Bool bState
) ;
172 //-------------------------------------------------------------------------------------------------------------
174 //-------------------------------------------------------------------------------------------------------------
177 void impl_setValue (const ::rtl::OUString
& sProp
,
179 void impl_setValue (const ::rtl::OUString
& sProp
,
182 //-------------------------------------------------------------------------------------------------------------
184 //-------------------------------------------------------------------------------------------------------------
187 css::uno::Reference
< css::container::XNameAccess
> m_xCfg
;
188 css::uno::Reference
< css::container::XNameAccess
> m_xNode
;
191 SvtPrintOptions_Impl::SvtPrintOptions_Impl(const OUString
& rConfigRoot
)
195 m_xCfg
= css::uno::Reference
< css::container::XNameAccess
>(
196 ::comphelper::ConfigurationHelper::openConfig(
197 utl::getProcessServiceFactory(),
198 ROOTNODE_PRINTOPTION
,
199 ::comphelper::ConfigurationHelper::E_STANDARD
),
200 css::uno::UNO_QUERY
);
204 UniString sTmp
= UniString(rConfigRoot
);
205 xub_StrLen nTokenCount
= sTmp
.GetTokenCount('/');
206 sTmp
= sTmp
.GetToken(nTokenCount
- 1, '/');
207 m_xCfg
->getByName(OUString(sTmp
.GetBuffer())) >>= m_xNode
;
210 catch (const css::uno::Exception
& ex
)
214 LogHelper::logIt(ex
);
218 sal_Bool
SvtPrintOptions_Impl::IsReduceTransparency() const
220 sal_Bool bRet
= sal_False
;
225 css::uno::Reference
< css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
227 xSet
->getPropertyValue(PROPERTYNAME_REDUCETRANSPARENCY
) >>= bRet
;
230 catch (const css::uno::Exception
& ex
)
232 LogHelper::logIt(ex
);
238 sal_Int16
SvtPrintOptions_Impl::GetReducedTransparencyMode() const
245 css::uno::Reference
< css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
247 xSet
->getPropertyValue(PROPERTYNAME_REDUCEDTRANSPARENCYMODE
) >>= nRet
;
250 catch (const css::uno::Exception
& ex
)
252 LogHelper::logIt(ex
);
258 sal_Bool
SvtPrintOptions_Impl::IsReduceGradients() const
260 sal_Bool bRet
= sal_False
;
265 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
268 xSet
->getPropertyValue(PROPERTYNAME_REDUCEGRADIENTS
) >>= bRet
;
272 catch (const css::uno::Exception
& ex
)
274 LogHelper::logIt(ex
);
280 sal_Int16
SvtPrintOptions_Impl::GetReducedGradientMode() const
287 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
290 xSet
->getPropertyValue(PROPERTYNAME_REDUCEDGRADIENTMODE
) >>= nRet
;
294 catch (const css::uno::Exception
& ex
)
296 LogHelper::logIt(ex
);
302 sal_Int16
SvtPrintOptions_Impl::GetReducedGradientStepCount() const
309 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
312 xSet
->getPropertyValue(PROPERTYNAME_REDUCEDGRADIENTSTEPCOUNT
) >>= nRet
;
316 catch (const css::uno::Exception
& ex
)
318 LogHelper::logIt(ex
);
324 sal_Bool
SvtPrintOptions_Impl::IsReduceBitmaps() const
326 sal_Bool bRet
= sal_False
;
331 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
334 xSet
->getPropertyValue(PROPERTYNAME_REDUCEBITMAPS
) >>= bRet
;
338 catch (const css::uno::Exception
& ex
)
340 LogHelper::logIt(ex
);
346 sal_Int16
SvtPrintOptions_Impl::GetReducedBitmapMode() const
353 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
356 xSet
->getPropertyValue(PROPERTYNAME_REDUCEDBITMAPMODE
) >>= nRet
;
360 catch (const css::uno::Exception
& ex
)
362 LogHelper::logIt(ex
);
368 sal_Int16
SvtPrintOptions_Impl::GetReducedBitmapResolution() const
375 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
378 xSet
->getPropertyValue(PROPERTYNAME_REDUCEDBITMAPRESOLUTION
) >>= nRet
;
382 catch (const css::uno::Exception
& ex
)
384 LogHelper::logIt(ex
);
390 sal_Bool
SvtPrintOptions_Impl::IsReducedBitmapIncludesTransparency() const
392 sal_Bool bRet
= sal_True
;
397 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
400 xSet
->getPropertyValue(PROPERTYNAME_REDUCEDBITMAPINCLUDESTRANSPARENCY
) >>= bRet
;
404 catch (const css::uno::Exception
& ex
)
406 LogHelper::logIt(ex
);
412 sal_Bool
SvtPrintOptions_Impl::IsConvertToGreyscales() const
414 sal_Bool bRet
= sal_False
;
419 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
422 xSet
->getPropertyValue(PROPERTYNAME_CONVERTTOGREYSCALES
) >>= bRet
;
426 catch (const css::uno::Exception
& ex
)
428 LogHelper::logIt(ex
);
435 void SvtPrintOptions_Impl::SetReduceTransparency(sal_Bool bState
)
437 impl_setValue(PROPERTYNAME_REDUCETRANSPARENCY
, bState
);
440 void SvtPrintOptions_Impl::SetReducedTransparencyMode(sal_Int16 nMode
)
442 impl_setValue(PROPERTYNAME_REDUCEDTRANSPARENCYMODE
, nMode
);
445 void SvtPrintOptions_Impl::SetReduceGradients(sal_Bool bState
)
447 impl_setValue(PROPERTYNAME_REDUCEGRADIENTS
, bState
);
450 void SvtPrintOptions_Impl::SetReducedGradientMode(sal_Int16 nMode
)
452 impl_setValue(PROPERTYNAME_REDUCEDGRADIENTMODE
, nMode
);
455 void SvtPrintOptions_Impl::SetReducedGradientStepCount(sal_Int16 nStepCount
)
457 impl_setValue(PROPERTYNAME_REDUCEDGRADIENTSTEPCOUNT
, nStepCount
);
460 void SvtPrintOptions_Impl::SetReduceBitmaps(sal_Bool bState
)
462 impl_setValue(PROPERTYNAME_REDUCEBITMAPS
, bState
);
465 void SvtPrintOptions_Impl::SetReducedBitmapMode(sal_Int16 nMode
)
467 impl_setValue(PROPERTYNAME_REDUCEDBITMAPMODE
, nMode
);
470 void SvtPrintOptions_Impl::SetReducedBitmapResolution(sal_Int16 nResolution
)
472 impl_setValue(PROPERTYNAME_REDUCEDBITMAPRESOLUTION
, nResolution
);
475 void SvtPrintOptions_Impl::SetReducedBitmapIncludesTransparency(sal_Bool bState
)
477 impl_setValue(PROPERTYNAME_REDUCEDBITMAPINCLUDESTRANSPARENCY
, bState
);
480 void SvtPrintOptions_Impl::SetConvertToGreyscales(sal_Bool bState
)
482 impl_setValue(PROPERTYNAME_CONVERTTOGREYSCALES
, bState
);
485 SvtPrintOptions_Impl::~SvtPrintOptions_Impl()
491 void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString
& sProp
,
499 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
503 ::sal_Bool bOld
= ! bNew
;
504 if ( ! (xSet
->getPropertyValue(sProp
) >>= bOld
))
509 xSet
->setPropertyValue(sProp
, css::uno::makeAny(bNew
));
510 ::comphelper::ConfigurationHelper::flush(m_xCfg
);
513 catch(const css::uno::Exception
& ex
)
515 LogHelper::logIt(ex
);
519 void SvtPrintOptions_Impl::impl_setValue (const ::rtl::OUString
& sProp
,
527 css::uno::Reference
<css::beans::XPropertySet
> xSet(m_xNode
, css::uno::UNO_QUERY
);
531 ::sal_Int16 nOld
= nNew
+1;
532 if ( ! (xSet
->getPropertyValue(sProp
) >>= nOld
))
537 xSet
->setPropertyValue(sProp
, css::uno::makeAny(nNew
));
538 ::comphelper::ConfigurationHelper::flush(m_xCfg
);
541 catch(const css::uno::Exception
& ex
)
543 LogHelper::logIt(ex
);
547 // -----------------------------------------------------------------------------
550 // -----------------------
551 // - SvtBasePrintOptions -
552 // -----------------------
554 SvtBasePrintOptions::SvtBasePrintOptions()
558 // -----------------------------------------------------------------------------
560 SvtBasePrintOptions::~SvtBasePrintOptions()
564 // -----------------------------------------------------------------------------
566 Mutex
& SvtBasePrintOptions::GetOwnStaticMutex()
568 // Initialize static mutex only for one time!
569 static Mutex
* pMutex
= NULL
;
570 // If these method first called (Mutex not already exist!) ...
573 // ... we must create a new one. Protect follow code with the global mutex -
574 // It must be - we create a static variable!
575 MutexGuard
aGuard( Mutex::getGlobalMutex() );
576 // We must check our pointer again - because it can be that another instance of ouer class will be fastr then these!
579 // Create the new mutex and set it for return on static variable.
584 // Return new created or already existing mutex object.
588 // -----------------------------------------------------------------------------
590 sal_Bool
SvtBasePrintOptions::IsReduceTransparency() const
592 MutexGuard
aGuard( GetOwnStaticMutex() );
593 return m_pDataContainer
->IsReduceTransparency();
596 // -----------------------------------------------------------------------------
598 sal_Int16
SvtBasePrintOptions::GetReducedTransparencyMode() const
600 MutexGuard
aGuard( GetOwnStaticMutex() );
601 return m_pDataContainer
->GetReducedTransparencyMode();
604 // -----------------------------------------------------------------------------
606 sal_Bool
SvtBasePrintOptions::IsReduceGradients() const
608 MutexGuard
aGuard( GetOwnStaticMutex() );
609 return m_pDataContainer
->IsReduceGradients();
612 // -----------------------------------------------------------------------------
614 sal_Int16
SvtBasePrintOptions::GetReducedGradientMode() const
616 MutexGuard
aGuard( GetOwnStaticMutex() );
617 return m_pDataContainer
->GetReducedGradientMode();
620 // -----------------------------------------------------------------------------
622 sal_Int16
SvtBasePrintOptions::GetReducedGradientStepCount() const
624 MutexGuard
aGuard( GetOwnStaticMutex() );
625 return m_pDataContainer
->GetReducedGradientStepCount();
628 // -----------------------------------------------------------------------------
630 sal_Bool
SvtBasePrintOptions::IsReduceBitmaps() const
632 MutexGuard
aGuard( GetOwnStaticMutex() );
633 return m_pDataContainer
->IsReduceBitmaps();
636 // -----------------------------------------------------------------------------
638 sal_Int16
SvtBasePrintOptions::GetReducedBitmapMode() const
640 MutexGuard
aGuard( GetOwnStaticMutex() );
641 return m_pDataContainer
->GetReducedBitmapMode();
644 // -----------------------------------------------------------------------------
646 sal_Int16
SvtBasePrintOptions::GetReducedBitmapResolution() const
648 MutexGuard
aGuard( GetOwnStaticMutex() );
649 return m_pDataContainer
->GetReducedBitmapResolution();
652 // -----------------------------------------------------------------------------
654 sal_Bool
SvtBasePrintOptions::IsReducedBitmapIncludesTransparency() const
656 MutexGuard
aGuard( GetOwnStaticMutex() );
657 return m_pDataContainer
->IsReducedBitmapIncludesTransparency();
660 // -----------------------------------------------------------------------------
662 sal_Bool
SvtBasePrintOptions::IsConvertToGreyscales() const
664 MutexGuard
aGuard( GetOwnStaticMutex() );
665 return m_pDataContainer
->IsConvertToGreyscales();
668 // -----------------------------------------------------------------------------
670 void SvtBasePrintOptions::SetReduceTransparency( sal_Bool bState
)
672 MutexGuard
aGuard( GetOwnStaticMutex() );
673 m_pDataContainer
->SetReduceTransparency( bState
) ;
676 // -----------------------------------------------------------------------------
678 void SvtBasePrintOptions::SetReducedTransparencyMode( sal_Int16 nMode
)
680 MutexGuard
aGuard( GetOwnStaticMutex() );
681 m_pDataContainer
->SetReducedTransparencyMode( nMode
);
684 // -----------------------------------------------------------------------------
686 void SvtBasePrintOptions::SetReduceGradients( sal_Bool bState
)
688 MutexGuard
aGuard( GetOwnStaticMutex() );
689 m_pDataContainer
->SetReduceGradients( bState
);
692 // -----------------------------------------------------------------------------
694 void SvtBasePrintOptions::SetReducedGradientMode( sal_Int16 nMode
)
696 MutexGuard
aGuard( GetOwnStaticMutex() );
697 m_pDataContainer
->SetReducedGradientMode( nMode
);
700 // -----------------------------------------------------------------------------
702 void SvtBasePrintOptions::SetReducedGradientStepCount( sal_Int16 nStepCount
)
704 MutexGuard
aGuard( GetOwnStaticMutex() );
705 m_pDataContainer
->SetReducedGradientStepCount( nStepCount
);
708 // -----------------------------------------------------------------------------
710 void SvtBasePrintOptions::SetReduceBitmaps( sal_Bool bState
)
712 MutexGuard
aGuard( GetOwnStaticMutex() );
713 m_pDataContainer
->SetReduceBitmaps( bState
);
716 // -----------------------------------------------------------------------------
718 void SvtBasePrintOptions::SetReducedBitmapMode( sal_Int16 nMode
)
720 MutexGuard
aGuard( GetOwnStaticMutex() );
721 m_pDataContainer
->SetReducedBitmapMode( nMode
);
724 // -----------------------------------------------------------------------------
726 void SvtBasePrintOptions::SetReducedBitmapResolution( sal_Int16 nResolution
)
728 MutexGuard
aGuard( GetOwnStaticMutex() );
729 m_pDataContainer
->SetReducedBitmapResolution( nResolution
);
732 // -----------------------------------------------------------------------------
734 void SvtBasePrintOptions::SetReducedBitmapIncludesTransparency( sal_Bool bState
)
736 MutexGuard
aGuard( GetOwnStaticMutex() );
737 m_pDataContainer
->SetReducedBitmapIncludesTransparency( bState
);
740 // -----------------------------------------------------------------------------
742 void SvtBasePrintOptions::SetConvertToGreyscales( sal_Bool bState
)
744 MutexGuard
aGuard( GetOwnStaticMutex() );
745 m_pDataContainer
->SetConvertToGreyscales( bState
);
748 // -----------------------------------------------------------------------------
750 void SvtBasePrintOptions::GetPrinterOptions( PrinterOptions
& rOptions
) const
752 rOptions
.SetReduceTransparency( IsReduceTransparency() );
753 rOptions
.SetReducedTransparencyMode( (PrinterTransparencyMode
) GetReducedTransparencyMode() );
754 rOptions
.SetReduceGradients( IsReduceGradients() );
755 rOptions
.SetReducedGradientMode( (PrinterGradientMode
) GetReducedGradientMode() );
756 rOptions
.SetReducedGradientStepCount( GetReducedGradientStepCount() );
757 rOptions
.SetReduceBitmaps( IsReduceBitmaps() );
758 rOptions
.SetReducedBitmapMode( (PrinterBitmapMode
) GetReducedBitmapMode() );
759 rOptions
.SetReducedBitmapResolution( aDPIArray
[ Min( (USHORT
) GetReducedBitmapResolution(), (USHORT
)( DPI_COUNT
- 1 ) ) ] );
760 rOptions
.SetReducedBitmapIncludesTransparency( IsReducedBitmapIncludesTransparency() );
761 rOptions
.SetConvertToGreyscales( IsConvertToGreyscales() );
764 // -----------------------------------------------------------------------------
766 void SvtBasePrintOptions::SetPrinterOptions( const PrinterOptions
& rOptions
)
768 SetReduceTransparency( rOptions
.IsReduceTransparency() );
769 SetReducedTransparencyMode(
770 sal::static_int_cast
< sal_Int16
>(
771 rOptions
.GetReducedTransparencyMode()) );
772 SetReduceGradients( rOptions
.IsReduceGradients() );
773 SetReducedGradientMode(
774 sal::static_int_cast
< sal_Int16
>(rOptions
.GetReducedGradientMode()) );
775 SetReducedGradientStepCount( rOptions
.GetReducedGradientStepCount() );
776 SetReduceBitmaps( rOptions
.IsReduceBitmaps() );
777 SetReducedBitmapMode(
778 sal::static_int_cast
< sal_Int16
>(rOptions
.GetReducedBitmapMode()) );
779 SetReducedBitmapIncludesTransparency( rOptions
.IsReducedBitmapIncludesTransparency() );
780 SetConvertToGreyscales( rOptions
.IsConvertToGreyscales() );
782 const USHORT nDPI
= rOptions
.GetReducedBitmapResolution();
784 if( nDPI
< aDPIArray
[ 0 ] )
785 SetReducedBitmapResolution( 0 );
788 for( long i
= ( DPI_COUNT
- 1 ); i
>= 0; i
-- )
790 if( nDPI
>= aDPIArray
[ i
] )
792 SetReducedBitmapResolution( (sal_Int16
) i
);
799 // ---------------------
800 // - SvtPrinterOptions -
801 // ---------------------
803 SvtPrinterOptions::SvtPrinterOptions()
805 // Global access, must be guarded (multithreading!).
806 MutexGuard
aGuard( GetOwnStaticMutex() );
807 // Increase ouer refcount ...
809 // ... and initialize ouer data container only if it not already!
810 if( m_pStaticDataContainer
== NULL
)
812 OUString
aRootPath( ROOTNODE_START
);
813 m_pStaticDataContainer
= new SvtPrintOptions_Impl( aRootPath
+= OUString( RTL_CONSTASCII_USTRINGPARAM( "/Printer" ) ) );
814 pPrinterOptionsDataContainer
= m_pStaticDataContainer
;
815 ItemHolder2::holdConfigItem(E_PRINTOPTIONS
);
818 SetDataContainer( m_pStaticDataContainer
);
821 // -----------------------------------------------------------------------------
823 SvtPrinterOptions::~SvtPrinterOptions()
825 // Global access, must be guarded (multithreading!)
826 MutexGuard
aGuard( GetOwnStaticMutex() );
827 // Decrease ouer refcount.
829 // If last instance was deleted ...
830 // we must destroy ouer static data container!
831 if( m_nRefCount
<= 0 )
833 delete m_pStaticDataContainer
;
834 m_pStaticDataContainer
= NULL
;
835 pPrinterOptionsDataContainer
= NULL
;
839 // ---------------------
840 // - SvtPrintFileOptions -
841 // ---------------------
843 SvtPrintFileOptions::SvtPrintFileOptions()
845 // Global access, must be guarded (multithreading!).
846 MutexGuard
aGuard( GetOwnStaticMutex() );
847 // Increase ouer refcount ...
849 // ... and initialize ouer data container only if it not already!
850 if( m_pStaticDataContainer
== NULL
)
852 OUString
aRootPath( ROOTNODE_START
);
853 m_pStaticDataContainer
= new SvtPrintOptions_Impl( aRootPath
+= OUString( RTL_CONSTASCII_USTRINGPARAM( "/File" ) ) );
854 pPrintFileOptionsDataContainer
= m_pStaticDataContainer
;
856 ItemHolder2::holdConfigItem(E_PRINTFILEOPTIONS
);
859 SetDataContainer( m_pStaticDataContainer
);
862 // -----------------------------------------------------------------------------
864 SvtPrintFileOptions::~SvtPrintFileOptions()
866 // Global access, must be guarded (multithreading!)
867 MutexGuard
aGuard( GetOwnStaticMutex() );
868 // Decrease ouer refcount.
870 // If last instance was deleted ...
871 // we must destroy ouer static data container!
872 if( m_nRefCount
<= 0 )
874 delete m_pStaticDataContainer
;
875 m_pStaticDataContainer
= NULL
;
876 pPrintFileOptionsDataContainer
= NULL
;