1b0724fc6SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3b0724fc6SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4b0724fc6SAndrew Rist * or more contributor license agreements. See the NOTICE file
5b0724fc6SAndrew Rist * distributed with this work for additional information
6b0724fc6SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7b0724fc6SAndrew Rist * to you under the Apache License, Version 2.0 (the
8b0724fc6SAndrew Rist * "License"); you may not use this file except in compliance
9b0724fc6SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11b0724fc6SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13b0724fc6SAndrew Rist * Unless required by applicable law or agreed to in writing,
14b0724fc6SAndrew Rist * software distributed under the License is distributed on an
15b0724fc6SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b0724fc6SAndrew Rist * KIND, either express or implied. See the License for the
17b0724fc6SAndrew Rist * specific language governing permissions and limitations
18b0724fc6SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20b0724fc6SAndrew Rist *************************************************************/
21b0724fc6SAndrew Rist
22b0724fc6SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_toolkit.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir
28cdf0e10cSrcweir #include <toolkit/awt/vclxprinter.hxx>
29cdf0e10cSrcweir #include <toolkit/helper/macros.hxx>
30cdf0e10cSrcweir #include <cppuhelper/typeprovider.hxx>
31cdf0e10cSrcweir #include <rtl/memory.h>
32cdf0e10cSrcweir #include <rtl/uuid.h>
33cdf0e10cSrcweir
34cdf0e10cSrcweir
35cdf0e10cSrcweir #include <vcl/print.hxx>
36cdf0e10cSrcweir #include <vcl/jobset.hxx>
37cdf0e10cSrcweir #include <vcl/svapp.hxx>
38cdf0e10cSrcweir
39cdf0e10cSrcweir #include <tools/debug.hxx>
40cdf0e10cSrcweir #include <tools/stream.hxx>
41cdf0e10cSrcweir
42cdf0e10cSrcweir #include <toolkit/awt/vclxdevice.hxx>
43cdf0e10cSrcweir
44cdf0e10cSrcweir
45cdf0e10cSrcweir #define BINARYSETUPMARKER 0x23864691
46cdf0e10cSrcweir
47cdf0e10cSrcweir #define PROPERTY_Orientation 0
48cdf0e10cSrcweir #define PROPERTY_Horizontal 1
49cdf0e10cSrcweir
ImplGetProperties(sal_uInt16 & rElementCount)50cdf0e10cSrcweir ::com::sun::star::beans::Property* ImplGetProperties( sal_uInt16& rElementCount )
51cdf0e10cSrcweir {
52cdf0e10cSrcweir static ::com::sun::star::beans::Property* pProperties = NULL;
53cdf0e10cSrcweir static sal_uInt16 nElements = 0;
54cdf0e10cSrcweir if( !pProperties )
55cdf0e10cSrcweir {
56cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( ::osl::Mutex::getGlobalMutex() );
57cdf0e10cSrcweir if( !pProperties )
58cdf0e10cSrcweir {
59cdf0e10cSrcweir static ::com::sun::star::beans::Property __FAR_DATA aPropTable[] =
60cdf0e10cSrcweir {
61cdf0e10cSrcweir ::com::sun::star::beans::Property( ::rtl::OUString::createFromAscii( "Orientation" ), PROPERTY_Orientation, ::getCppuType((const sal_Int16*)0), 0 ),
62cdf0e10cSrcweir ::com::sun::star::beans::Property( ::rtl::OUString::createFromAscii( "Horizontal" ), PROPERTY_Horizontal, ::getBooleanCppuType(), 0 )
63cdf0e10cSrcweir };
64cdf0e10cSrcweir pProperties = aPropTable;
65cdf0e10cSrcweir nElements = sizeof( aPropTable ) / sizeof( ::com::sun::star::beans::Property );
66cdf0e10cSrcweir }
67cdf0e10cSrcweir }
68cdf0e10cSrcweir rElementCount = nElements;
69cdf0e10cSrcweir return pProperties;
70cdf0e10cSrcweir }
71cdf0e10cSrcweir
72cdf0e10cSrcweir // ----------------------------------------------------
73cdf0e10cSrcweir // class VCLXPrinterPropertySet
74cdf0e10cSrcweir // ----------------------------------------------------
75cdf0e10cSrcweir
IMPLEMENT_FORWARD_XINTERFACE2(VCLXPrinterPropertySet,VCLXPrinterPropertySet_Base,OPropertySetHelper)767cf0cab2SAndrew Rist IMPLEMENT_FORWARD_XINTERFACE2( VCLXPrinterPropertySet, VCLXPrinterPropertySet_Base, OPropertySetHelper )
777cf0cab2SAndrew Rist IMPLEMENT_FORWARD_XTYPEPROVIDER2( VCLXPrinterPropertySet, VCLXPrinterPropertySet_Base, ::cppu::OPropertySetHelper )
78cdf0e10cSrcweir
79cdf0e10cSrcweir VCLXPrinterPropertySet::VCLXPrinterPropertySet( const String& rPrinterName )
80cdf0e10cSrcweir : OPropertySetHelper( BrdcstHelper )
81cdf0e10cSrcweir , mpPrinter( new Printer( rPrinterName ) )
82cdf0e10cSrcweir {
83cdf0e10cSrcweir osl::Guard< vos::IMutex > aSolarGuard( Application::GetSolarMutex() );
84cdf0e10cSrcweir
85cdf0e10cSrcweir mnOrientation = 0;
86cdf0e10cSrcweir mbHorizontal = sal_False;
87cdf0e10cSrcweir }
88cdf0e10cSrcweir
~VCLXPrinterPropertySet()89cdf0e10cSrcweir VCLXPrinterPropertySet::~VCLXPrinterPropertySet()
90cdf0e10cSrcweir {
91cdf0e10cSrcweir osl::Guard< vos::IMutex > aSolarGuard( Application::GetSolarMutex() );
92cdf0e10cSrcweir mpPrinter.reset();
93cdf0e10cSrcweir }
94cdf0e10cSrcweir
GetDevice()95cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDevice > VCLXPrinterPropertySet::GetDevice()
96cdf0e10cSrcweir {
97cdf0e10cSrcweir if ( !mxPrnDevice.is() )
98cdf0e10cSrcweir {
99cdf0e10cSrcweir VCLXDevice* pDev = new VCLXDevice;
100cdf0e10cSrcweir pDev->SetOutputDevice( GetPrinter() );
101cdf0e10cSrcweir mxPrnDevice = pDev;
102cdf0e10cSrcweir }
103cdf0e10cSrcweir return mxPrnDevice;
104cdf0e10cSrcweir }
105cdf0e10cSrcweir
getPropertySetInfo()106cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > VCLXPrinterPropertySet::getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
107cdf0e10cSrcweir {
108cdf0e10cSrcweir static ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
109cdf0e10cSrcweir return xInfo;
110cdf0e10cSrcweir }
111cdf0e10cSrcweir
getInfoHelper()112cdf0e10cSrcweir ::cppu::IPropertyArrayHelper& VCLXPrinterPropertySet::getInfoHelper()
113cdf0e10cSrcweir {
114cdf0e10cSrcweir static ::cppu::OPropertyArrayHelper* pPropertyArrayHelper = NULL;
115cdf0e10cSrcweir if ( !pPropertyArrayHelper )
116cdf0e10cSrcweir {
117cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( ::osl::Mutex::getGlobalMutex() );
118cdf0e10cSrcweir if( !pPropertyArrayHelper )
119cdf0e10cSrcweir {
120cdf0e10cSrcweir sal_uInt16 nElements;
121cdf0e10cSrcweir ::com::sun::star::beans::Property* pProps = ImplGetProperties( nElements );
122cdf0e10cSrcweir pPropertyArrayHelper = new ::cppu::OPropertyArrayHelper( pProps, nElements, sal_False );
123cdf0e10cSrcweir }
124cdf0e10cSrcweir }
125cdf0e10cSrcweir return *pPropertyArrayHelper ;
126cdf0e10cSrcweir }
127cdf0e10cSrcweir
convertFastPropertyValue(::com::sun::star::uno::Any & rConvertedValue,::com::sun::star::uno::Any & rOldValue,sal_Int32 nHandle,const::com::sun::star::uno::Any & rValue)128cdf0e10cSrcweir sal_Bool VCLXPrinterPropertySet::convertFastPropertyValue( ::com::sun::star::uno::Any & rConvertedValue, ::com::sun::star::uno::Any & rOldValue, sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::lang::IllegalArgumentException)
129cdf0e10cSrcweir {
130cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
131cdf0e10cSrcweir
132cdf0e10cSrcweir sal_Bool bDifferent = sal_False;
133cdf0e10cSrcweir switch ( nHandle )
134cdf0e10cSrcweir {
135cdf0e10cSrcweir case PROPERTY_Orientation:
136cdf0e10cSrcweir {
137cdf0e10cSrcweir sal_Int16 n;
138cdf0e10cSrcweir if( ( rValue >>= n ) && ( n != mnOrientation ) )
139cdf0e10cSrcweir {
140cdf0e10cSrcweir rConvertedValue <<= n;
141cdf0e10cSrcweir rOldValue <<= mnOrientation;
142cdf0e10cSrcweir bDifferent = sal_True;
143cdf0e10cSrcweir }
144cdf0e10cSrcweir }
145cdf0e10cSrcweir break;
146cdf0e10cSrcweir case PROPERTY_Horizontal:
147cdf0e10cSrcweir {
148cdf0e10cSrcweir sal_Bool b;
149cdf0e10cSrcweir if( ( rValue >>= b ) && ( b != mbHorizontal ) )
150cdf0e10cSrcweir {
151cdf0e10cSrcweir rConvertedValue <<= b;
152cdf0e10cSrcweir rOldValue <<= mbHorizontal;
153cdf0e10cSrcweir bDifferent = sal_True;
154cdf0e10cSrcweir }
155cdf0e10cSrcweir }
156cdf0e10cSrcweir break;
157cdf0e10cSrcweir default:
158cdf0e10cSrcweir {
159cdf0e10cSrcweir DBG_ERROR( "VCLXPrinterPropertySet_Impl::convertFastPropertyValue - invalid Handle" );
160cdf0e10cSrcweir }
161cdf0e10cSrcweir }
162cdf0e10cSrcweir return bDifferent;
163cdf0e10cSrcweir }
164cdf0e10cSrcweir
setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const::com::sun::star::uno::Any & rValue)165cdf0e10cSrcweir void VCLXPrinterPropertySet::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::uno::Exception)
166cdf0e10cSrcweir {
167cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
168cdf0e10cSrcweir
169cdf0e10cSrcweir switch( nHandle )
170cdf0e10cSrcweir {
171cdf0e10cSrcweir case PROPERTY_Orientation:
172cdf0e10cSrcweir {
173cdf0e10cSrcweir rValue >>= mnOrientation;
174cdf0e10cSrcweir }
175cdf0e10cSrcweir break;
176cdf0e10cSrcweir case PROPERTY_Horizontal:
177cdf0e10cSrcweir {
178cdf0e10cSrcweir rValue >>= mbHorizontal;
179cdf0e10cSrcweir }
180cdf0e10cSrcweir break;
181cdf0e10cSrcweir default:
182cdf0e10cSrcweir {
183cdf0e10cSrcweir DBG_ERROR( "VCLXPrinterPropertySet_Impl::convertFastPropertyValue - invalid Handle" );
184cdf0e10cSrcweir }
185cdf0e10cSrcweir }
186cdf0e10cSrcweir }
187cdf0e10cSrcweir
getFastPropertyValue(::com::sun::star::uno::Any & rValue,sal_Int32 nHandle) const188cdf0e10cSrcweir void VCLXPrinterPropertySet::getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const
189cdf0e10cSrcweir {
190cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( ((VCLXPrinterPropertySet*)this)->Mutex );
191cdf0e10cSrcweir
192cdf0e10cSrcweir switch( nHandle )
193cdf0e10cSrcweir {
194cdf0e10cSrcweir case PROPERTY_Orientation:
195cdf0e10cSrcweir rValue <<= mnOrientation;
196cdf0e10cSrcweir break;
197cdf0e10cSrcweir case PROPERTY_Horizontal:
198cdf0e10cSrcweir rValue <<= mbHorizontal;
199cdf0e10cSrcweir break;
200cdf0e10cSrcweir default:
201cdf0e10cSrcweir {
202cdf0e10cSrcweir DBG_ERROR( "VCLXPrinterPropertySet_Impl::convertFastPropertyValue - invalid Handle" );
203cdf0e10cSrcweir }
204cdf0e10cSrcweir }
205cdf0e10cSrcweir }
206cdf0e10cSrcweir
207cdf0e10cSrcweir // ::com::sun::star::awt::XPrinterPropertySet
setHorizontal(sal_Bool bHorizontal)208cdf0e10cSrcweir void VCLXPrinterPropertySet::setHorizontal( sal_Bool bHorizontal ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
209cdf0e10cSrcweir {
210cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
211cdf0e10cSrcweir
212cdf0e10cSrcweir ::com::sun::star::uno::Any aValue;
213cdf0e10cSrcweir aValue <<= bHorizontal;
214cdf0e10cSrcweir setFastPropertyValue( PROPERTY_Horizontal, aValue );
215cdf0e10cSrcweir }
216cdf0e10cSrcweir
getFormDescriptions()217cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > VCLXPrinterPropertySet::getFormDescriptions( ) throw(::com::sun::star::uno::RuntimeException)
218cdf0e10cSrcweir {
219cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
220cdf0e10cSrcweir
221cdf0e10cSrcweir sal_uInt16 nPaperBinCount = GetPrinter()->GetPaperBinCount();
222cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > aDescriptions( nPaperBinCount );
223cdf0e10cSrcweir for ( sal_uInt16 n = 0; n < nPaperBinCount; n++ )
224cdf0e10cSrcweir {
225cdf0e10cSrcweir // Format: <DisplayFormName;FormNameId;DisplayPaperBinName;PaperBinNameId;DisplayPaperName;PaperNameId>
226cdf0e10cSrcweir String aDescr( RTL_CONSTASCII_USTRINGPARAM( "*;*;" ) );
227cdf0e10cSrcweir aDescr += GetPrinter()->GetPaperBinName( n );
228cdf0e10cSrcweir aDescr += ';';
229cdf0e10cSrcweir aDescr += n;
230cdf0e10cSrcweir aDescr.AppendAscii( ";*;*", 4 );
231cdf0e10cSrcweir
232cdf0e10cSrcweir aDescriptions.getArray()[n] = aDescr;
233cdf0e10cSrcweir }
234cdf0e10cSrcweir return aDescriptions;
235cdf0e10cSrcweir }
236cdf0e10cSrcweir
selectForm(const::rtl::OUString & rFormDescription)237cdf0e10cSrcweir void VCLXPrinterPropertySet::selectForm( const ::rtl::OUString& rFormDescription ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
238cdf0e10cSrcweir {
239cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
240cdf0e10cSrcweir
241cdf0e10cSrcweir sal_Int32 nIndex = 0;
242cdf0e10cSrcweir sal_uInt16 nPaperBin = sal::static_int_cast< sal_uInt16 >(
243cdf0e10cSrcweir rFormDescription.getToken( 3, ';', nIndex ).toInt32());
244cdf0e10cSrcweir GetPrinter()->SetPaperBin( nPaperBin );
245cdf0e10cSrcweir }
246cdf0e10cSrcweir
getBinarySetup()247cdf0e10cSrcweir ::com::sun::star::uno::Sequence< sal_Int8 > VCLXPrinterPropertySet::getBinarySetup( ) throw(::com::sun::star::uno::RuntimeException)
248cdf0e10cSrcweir {
249cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
250cdf0e10cSrcweir
251cdf0e10cSrcweir SvMemoryStream aMem;
252cdf0e10cSrcweir aMem << BINARYSETUPMARKER;
253cdf0e10cSrcweir aMem << GetPrinter()->GetJobSetup();
254cdf0e10cSrcweir return ::com::sun::star::uno::Sequence<sal_Int8>( (sal_Int8*) aMem.GetData(), aMem.Tell() );
255cdf0e10cSrcweir }
256cdf0e10cSrcweir
setBinarySetup(const::com::sun::star::uno::Sequence<sal_Int8> & data)257cdf0e10cSrcweir void VCLXPrinterPropertySet::setBinarySetup( const ::com::sun::star::uno::Sequence< sal_Int8 >& data ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
258cdf0e10cSrcweir {
259cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
260cdf0e10cSrcweir
261cdf0e10cSrcweir SvMemoryStream aMem( (char*) data.getConstArray(), data.getLength(), STREAM_READ );
262cdf0e10cSrcweir sal_uInt32 nMarker;
263cdf0e10cSrcweir aMem >> nMarker;
264cdf0e10cSrcweir DBG_ASSERT( nMarker == BINARYSETUPMARKER, "setBinarySetup - invalid!" );
265cdf0e10cSrcweir if ( nMarker == BINARYSETUPMARKER )
266cdf0e10cSrcweir {
267cdf0e10cSrcweir JobSetup aSetup;
268cdf0e10cSrcweir aMem >> aSetup;
269cdf0e10cSrcweir GetPrinter()->SetJobSetup( aSetup );
270cdf0e10cSrcweir }
271cdf0e10cSrcweir }
272cdf0e10cSrcweir
273cdf0e10cSrcweir
274cdf0e10cSrcweir // ----------------------------------------------------
275cdf0e10cSrcweir // class VCLXPrinter
276cdf0e10cSrcweir // ----------------------------------------------------
VCLXPrinter(const String & rPrinterName)277cdf0e10cSrcweir VCLXPrinter::VCLXPrinter( const String& rPrinterName )
2787cf0cab2SAndrew Rist : VCLXPrinter_Base( rPrinterName )
279cdf0e10cSrcweir {
280cdf0e10cSrcweir }
281cdf0e10cSrcweir
~VCLXPrinter()282cdf0e10cSrcweir VCLXPrinter::~VCLXPrinter()
283cdf0e10cSrcweir {
284cdf0e10cSrcweir }
285cdf0e10cSrcweir
start(const::rtl::OUString &,sal_Int16,sal_Bool)286cdf0e10cSrcweir sal_Bool VCLXPrinter::start( const ::rtl::OUString& /*rJobName*/, sal_Int16 /*nCopies*/, sal_Bool /*bCollate*/ ) throw(::com::sun::star::awt::PrinterException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException)
287cdf0e10cSrcweir {
288cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
289cdf0e10cSrcweir
290cdf0e10cSrcweir sal_Bool bDone = sal_True;
291*44b09b52SAriel Constenla-Haile if ( mpPrinter.get() )
292cdf0e10cSrcweir {
293cdf0e10cSrcweir maInitJobSetup = mpPrinter->GetJobSetup();
294cdf0e10cSrcweir mpListener.reset( new vcl::OldStylePrintAdaptor( mpPrinter ) );
295cdf0e10cSrcweir }
296cdf0e10cSrcweir
297cdf0e10cSrcweir return bDone;
298cdf0e10cSrcweir }
299cdf0e10cSrcweir
end()300cdf0e10cSrcweir void VCLXPrinter::end( ) throw(::com::sun::star::awt::PrinterException, ::com::sun::star::uno::RuntimeException)
301cdf0e10cSrcweir {
302cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
303cdf0e10cSrcweir
304cdf0e10cSrcweir if ( mpListener.get() )
305cdf0e10cSrcweir {
306cdf0e10cSrcweir Printer::PrintJob( mpListener, maInitJobSetup );
307cdf0e10cSrcweir mpListener.reset();
308cdf0e10cSrcweir }
309cdf0e10cSrcweir }
310cdf0e10cSrcweir
terminate()311cdf0e10cSrcweir void VCLXPrinter::terminate( ) throw(::com::sun::star::uno::RuntimeException)
312cdf0e10cSrcweir {
313cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
314cdf0e10cSrcweir
315cdf0e10cSrcweir mpListener.reset();
316cdf0e10cSrcweir }
317cdf0e10cSrcweir
startPage()318cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDevice > VCLXPrinter::startPage( ) throw(::com::sun::star::awt::PrinterException, ::com::sun::star::uno::RuntimeException)
319cdf0e10cSrcweir {
320cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
321cdf0e10cSrcweir
322cdf0e10cSrcweir if ( mpListener.get() )
323cdf0e10cSrcweir {
324cdf0e10cSrcweir mpListener->StartPage();
325cdf0e10cSrcweir }
326cdf0e10cSrcweir return GetDevice();
327cdf0e10cSrcweir }
328cdf0e10cSrcweir
endPage()329cdf0e10cSrcweir void VCLXPrinter::endPage( ) throw(::com::sun::star::awt::PrinterException, ::com::sun::star::uno::RuntimeException)
330cdf0e10cSrcweir {
331cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
332cdf0e10cSrcweir
333cdf0e10cSrcweir if ( mpListener.get() )
334cdf0e10cSrcweir {
335cdf0e10cSrcweir mpListener->EndPage();
336cdf0e10cSrcweir }
337cdf0e10cSrcweir }
338cdf0e10cSrcweir
339cdf0e10cSrcweir
340cdf0e10cSrcweir // ----------------------------------------------------
341cdf0e10cSrcweir // class VCLXInfoPrinter
342cdf0e10cSrcweir // ----------------------------------------------------
343cdf0e10cSrcweir
VCLXInfoPrinter(const String & rPrinterName)344cdf0e10cSrcweir VCLXInfoPrinter::VCLXInfoPrinter( const String& rPrinterName )
3457cf0cab2SAndrew Rist : VCLXInfoPrinter_Base( rPrinterName )
346cdf0e10cSrcweir {
347cdf0e10cSrcweir }
348cdf0e10cSrcweir
~VCLXInfoPrinter()349cdf0e10cSrcweir VCLXInfoPrinter::~VCLXInfoPrinter()
350cdf0e10cSrcweir {
351cdf0e10cSrcweir }
352cdf0e10cSrcweir
353cdf0e10cSrcweir // ::com::sun::star::awt::XInfoPrinter
createDevice()354cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XDevice > VCLXInfoPrinter::createDevice( ) throw(::com::sun::star::uno::RuntimeException)
355cdf0e10cSrcweir {
356cdf0e10cSrcweir ::osl::Guard< ::osl::Mutex > aGuard( Mutex );
357cdf0e10cSrcweir
358cdf0e10cSrcweir return GetDevice();
359cdf0e10cSrcweir }
360cdf0e10cSrcweir
361cdf0e10cSrcweir // ----------------------------------------------------
362cdf0e10cSrcweir // class VCLXPrinterServer
363cdf0e10cSrcweir // ----------------------------------------------------
364cdf0e10cSrcweir
365cdf0e10cSrcweir // ::com::sun::star::awt::XPrinterServer
getPrinterNames()366cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > VCLXPrinterServer::getPrinterNames( ) throw(::com::sun::star::uno::RuntimeException)
367cdf0e10cSrcweir {
368cdf0e10cSrcweir const std::vector<rtl::OUString>& rQueues = Printer::GetPrinterQueues();
369cdf0e10cSrcweir sal_uInt32 nPrinters = rQueues.size();
370cdf0e10cSrcweir
371cdf0e10cSrcweir ::com::sun::star::uno::Sequence< ::rtl::OUString > aNames( nPrinters );
372cdf0e10cSrcweir for ( sal_uInt32 n = 0; n < nPrinters; n++ )
373cdf0e10cSrcweir aNames.getArray()[n] = rQueues[n];
374cdf0e10cSrcweir
375cdf0e10cSrcweir return aNames;
376cdf0e10cSrcweir }
377cdf0e10cSrcweir
createPrinter(const::rtl::OUString & rPrinterName)378cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPrinter > VCLXPrinterServer::createPrinter( const ::rtl::OUString& rPrinterName ) throw(::com::sun::star::uno::RuntimeException)
379cdf0e10cSrcweir {
380cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPrinter > xP;
381cdf0e10cSrcweir xP = new VCLXPrinter( rPrinterName );
382cdf0e10cSrcweir return xP;
383cdf0e10cSrcweir }
384cdf0e10cSrcweir
createInfoPrinter(const::rtl::OUString & rPrinterName)385cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XInfoPrinter > VCLXPrinterServer::createInfoPrinter( const ::rtl::OUString& rPrinterName ) throw(::com::sun::star::uno::RuntimeException)
386cdf0e10cSrcweir {
387cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::awt::XInfoPrinter > xP;
388cdf0e10cSrcweir xP = new VCLXInfoPrinter( rPrinterName );
389cdf0e10cSrcweir return xP;
390cdf0e10cSrcweir }
391cdf0e10cSrcweir
392cdf0e10cSrcweir
393