Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #include <pdfwriter_impl.hxx>
21 : #include <vcl/bitmapex.hxx>
22 : #include <vcl/image.hxx>
23 :
24 : using namespace vcl;
25 :
26 0 : PDFWriter::AnyWidget::~AnyWidget()
27 : {
28 0 : }
29 :
30 0 : PDFWriter::PDFWriter( const PDFWriter::PDFWriterContext& rContext, const com::sun::star::uno::Reference< com::sun::star::beans::XMaterialHolder >& xEnc )
31 : :
32 0 : xImplementation( new PDFWriterImpl( rContext, xEnc, *this ) )
33 : {
34 0 : }
35 :
36 0 : PDFWriter::~PDFWriter()
37 : {
38 0 : }
39 :
40 0 : OutputDevice* PDFWriter::GetReferenceDevice()
41 : {
42 0 : return xImplementation->getReferenceDevice();
43 : }
44 :
45 0 : sal_Int32 PDFWriter::NewPage( sal_Int32 nPageWidth, sal_Int32 nPageHeight, Orientation eOrientation )
46 : {
47 0 : return xImplementation->newPage( nPageWidth, nPageHeight, eOrientation );
48 : }
49 :
50 0 : bool PDFWriter::Emit()
51 : {
52 0 : return xImplementation->emit();
53 : }
54 :
55 0 : void PDFWriter::SetDocumentLocale( const com::sun::star::lang::Locale& rLoc )
56 : {
57 0 : xImplementation->setDocumentLocale( rLoc );
58 0 : }
59 :
60 0 : void PDFWriter::SetFont( const vcl::Font& rFont )
61 : {
62 0 : xImplementation->setFont( rFont );
63 0 : }
64 :
65 0 : void PDFWriter::DrawText( const Point& rPos, const OUString& rText )
66 : {
67 0 : xImplementation->drawText( rPos, rText, 0, rText.getLength() );
68 0 : }
69 :
70 0 : void PDFWriter::DrawTextLine(
71 : const Point& rPos,
72 : long nWidth,
73 : FontStrikeout eStrikeout,
74 : FontUnderline eUnderline,
75 : FontUnderline eOverline,
76 : bool bUnderlineAbove )
77 : {
78 0 : xImplementation->drawTextLine( rPos, nWidth, eStrikeout, eUnderline, eOverline, bUnderlineAbove );
79 0 : }
80 :
81 0 : void PDFWriter::DrawTextArray(
82 : const Point& rStartPt,
83 : const OUString& rStr,
84 : const long* pDXAry,
85 : sal_Int32 nIndex,
86 : sal_Int32 nLen )
87 : {
88 0 : xImplementation->drawTextArray( rStartPt, rStr, pDXAry, nIndex, nLen );
89 0 : }
90 :
91 0 : void PDFWriter::DrawStretchText(
92 : const Point& rStartPt,
93 : sal_uLong nWidth,
94 : const OUString& rStr,
95 : sal_Int32 nIndex,
96 : sal_Int32 nLen )
97 : {
98 0 : xImplementation->drawStretchText( rStartPt, nWidth, rStr, nIndex, nLen );
99 0 : }
100 :
101 0 : void PDFWriter::DrawText(
102 : const Rectangle& rRect,
103 : const OUString& rStr,
104 : DrawTextFlags nStyle )
105 : {
106 0 : xImplementation->drawText( rRect, rStr, nStyle );
107 0 : }
108 :
109 0 : void PDFWriter::DrawLine( const Point& rStart, const Point& rStop )
110 : {
111 0 : xImplementation->drawLine( rStart, rStop );
112 0 : }
113 :
114 0 : void PDFWriter::DrawLine( const Point& rStart, const Point& rStop, const LineInfo& rInfo )
115 : {
116 0 : xImplementation->drawLine( rStart, rStop, rInfo );
117 0 : }
118 :
119 0 : void PDFWriter::DrawPolygon( const Polygon& rPoly )
120 : {
121 0 : xImplementation->drawPolygon( rPoly );
122 0 : }
123 :
124 0 : void PDFWriter::DrawPolyLine( const Polygon& rPoly )
125 : {
126 0 : xImplementation->drawPolyLine( rPoly );
127 0 : }
128 :
129 0 : void PDFWriter::DrawRect( const Rectangle& rRect )
130 : {
131 0 : xImplementation->drawRectangle( rRect );
132 0 : }
133 :
134 0 : void PDFWriter::DrawRect( const Rectangle& rRect, sal_uLong nHorzRound, sal_uLong nVertRound )
135 : {
136 0 : xImplementation->drawRectangle( rRect, nHorzRound, nVertRound );
137 0 : }
138 :
139 0 : void PDFWriter::DrawEllipse( const Rectangle& rRect )
140 : {
141 0 : xImplementation->drawEllipse( rRect );
142 0 : }
143 :
144 0 : void PDFWriter::DrawArc( const Rectangle& rRect, const Point& rStart, const Point& rStop )
145 : {
146 0 : xImplementation->drawArc( rRect, rStart, rStop, false, false );
147 0 : }
148 :
149 0 : void PDFWriter::DrawPie( const Rectangle& rRect, const Point& rStart, const Point& rStop )
150 : {
151 0 : xImplementation->drawArc( rRect, rStart, rStop, true, false );
152 0 : }
153 :
154 0 : void PDFWriter::DrawChord( const Rectangle& rRect, const Point& rStart, const Point& rStop )
155 : {
156 0 : xImplementation->drawArc( rRect, rStart, rStop, false, true );
157 0 : }
158 :
159 0 : void PDFWriter::DrawPolyLine( const Polygon& rPoly, const LineInfo& rInfo )
160 : {
161 0 : xImplementation->drawPolyLine( rPoly, rInfo );
162 0 : }
163 :
164 0 : void PDFWriter::DrawPolyLine( const Polygon& rPoly, const ExtLineInfo& rInfo )
165 : {
166 0 : xImplementation->drawPolyLine( rPoly, rInfo );
167 0 : }
168 :
169 0 : void PDFWriter::DrawPolyPolygon( const tools::PolyPolygon& rPolyPoly )
170 : {
171 0 : xImplementation->drawPolyPolygon( rPolyPoly );
172 0 : }
173 :
174 0 : void PDFWriter::DrawPixel( const Point& rPos, const Color& rColor )
175 : {
176 0 : xImplementation->drawPixel( rPos, rColor );
177 0 : }
178 :
179 0 : void PDFWriter::DrawBitmap( const Point& rDestPt, const Size& rDestSize, const Bitmap& rBitmap )
180 : {
181 0 : xImplementation->drawBitmap( rDestPt, rDestSize, rBitmap );
182 0 : }
183 :
184 0 : void PDFWriter::DrawBitmapEx( const Point& rDestPt, const Size& rDestSize, const BitmapEx& rBitmap )
185 : {
186 0 : xImplementation->drawBitmap( rDestPt, rDestSize, rBitmap );
187 0 : }
188 :
189 0 : void PDFWriter::DrawHatch( const tools::PolyPolygon& rPolyPoly, const Hatch& rHatch )
190 : {
191 0 : xImplementation->drawHatch( rPolyPoly, rHatch );
192 0 : }
193 :
194 0 : void PDFWriter::DrawGradient( const Rectangle& rRect, const Gradient& rGradient )
195 : {
196 0 : xImplementation->drawGradient( rRect, rGradient );
197 0 : }
198 :
199 0 : void PDFWriter::DrawGradient( const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient )
200 : {
201 0 : xImplementation->push(PushFlags::CLIPREGION);
202 0 : xImplementation->setClipRegion( rPolyPoly.getB2DPolyPolygon() );
203 0 : xImplementation->drawGradient( rPolyPoly.GetBoundRect(), rGradient );
204 0 : xImplementation->pop();
205 0 : }
206 :
207 0 : void PDFWriter::DrawWallpaper( const Rectangle& rRect, const Wallpaper& rWallpaper )
208 : {
209 0 : xImplementation->drawWallpaper( rRect, rWallpaper );
210 0 : }
211 :
212 0 : void PDFWriter::DrawTransparent( const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransparencePercent )
213 : {
214 0 : xImplementation->drawTransparent( rPolyPoly, nTransparencePercent );
215 0 : }
216 :
217 0 : void PDFWriter::BeginTransparencyGroup()
218 : {
219 0 : xImplementation->beginTransparencyGroup();
220 0 : }
221 :
222 0 : void PDFWriter::EndTransparencyGroup( const Rectangle& rRect, sal_uInt16 nTransparentPercent )
223 : {
224 0 : xImplementation->endTransparencyGroup( rRect, nTransparentPercent );
225 0 : }
226 :
227 0 : void PDFWriter::Push( PushFlags nFlags )
228 : {
229 0 : xImplementation->push( nFlags );
230 0 : }
231 :
232 0 : void PDFWriter::Pop()
233 : {
234 0 : xImplementation->pop();
235 0 : }
236 :
237 0 : void PDFWriter::SetMapMode( const MapMode& rMapMode )
238 : {
239 0 : xImplementation->setMapMode( rMapMode );
240 0 : }
241 :
242 0 : void PDFWriter::SetLineColor( const Color& rColor )
243 : {
244 0 : xImplementation->setLineColor( rColor );
245 0 : }
246 :
247 0 : void PDFWriter::SetFillColor( const Color& rColor )
248 : {
249 0 : xImplementation->setFillColor( rColor );
250 0 : }
251 :
252 0 : void PDFWriter::SetClipRegion()
253 : {
254 0 : xImplementation->clearClipRegion();
255 0 : }
256 :
257 0 : void PDFWriter::SetClipRegion( const basegfx::B2DPolyPolygon& rRegion )
258 : {
259 0 : xImplementation->setClipRegion( rRegion );
260 0 : }
261 :
262 0 : void PDFWriter::MoveClipRegion( long nHorzMove, long nVertMove )
263 : {
264 0 : xImplementation->moveClipRegion( nHorzMove, nVertMove );
265 0 : }
266 :
267 0 : void PDFWriter::IntersectClipRegion( const basegfx::B2DPolyPolygon& rRegion )
268 : {
269 0 : xImplementation->intersectClipRegion( rRegion );
270 0 : }
271 :
272 0 : void PDFWriter::IntersectClipRegion( const Rectangle& rRect )
273 : {
274 0 : xImplementation->intersectClipRegion( rRect );
275 0 : }
276 :
277 0 : void PDFWriter::SetLayoutMode( ComplexTextLayoutMode nMode )
278 : {
279 0 : xImplementation->setLayoutMode( nMode );
280 0 : }
281 :
282 0 : void PDFWriter::SetDigitLanguage( LanguageType eLang )
283 : {
284 0 : xImplementation->setDigitLanguage( eLang );
285 0 : }
286 :
287 0 : void PDFWriter::SetTextColor( const Color& rColor )
288 : {
289 0 : xImplementation->setTextColor( rColor );
290 0 : }
291 :
292 0 : void PDFWriter::SetTextFillColor()
293 : {
294 0 : xImplementation->setTextFillColor();
295 0 : }
296 :
297 0 : void PDFWriter::SetTextFillColor( const Color& rColor )
298 : {
299 0 : xImplementation->setTextFillColor( rColor );
300 0 : }
301 :
302 0 : void PDFWriter::SetTextLineColor()
303 : {
304 0 : xImplementation->setTextLineColor();
305 0 : }
306 :
307 0 : void PDFWriter::SetTextLineColor( const Color& rColor )
308 : {
309 0 : xImplementation->setTextLineColor( rColor );
310 0 : }
311 :
312 0 : void PDFWriter::SetOverlineColor()
313 : {
314 0 : xImplementation->setOverlineColor();
315 0 : }
316 :
317 0 : void PDFWriter::SetOverlineColor( const Color& rColor )
318 : {
319 0 : xImplementation->setOverlineColor( rColor );
320 0 : }
321 :
322 0 : void PDFWriter::SetTextAlign( ::TextAlign eAlign )
323 : {
324 0 : xImplementation->setTextAlign( eAlign );
325 0 : }
326 :
327 0 : void PDFWriter::DrawJPGBitmap( SvStream& rStreamData, bool bIsTrueColor, const Size& rSrcSizePixel, const Rectangle& rTargetArea, const Bitmap& rMask )
328 : {
329 0 : xImplementation->drawJPGBitmap( rStreamData, bIsTrueColor, rSrcSizePixel, rTargetArea, rMask );
330 0 : }
331 :
332 0 : sal_Int32 PDFWriter::CreateLink( const Rectangle& rRect, sal_Int32 nPageNr )
333 : {
334 0 : return xImplementation->createLink( rRect, nPageNr );
335 : }
336 0 : sal_Int32 PDFWriter::RegisterDestReference( sal_Int32 nDestId, const Rectangle& rRect, sal_Int32 nPageNr, DestAreaType eType )
337 : {
338 0 : return xImplementation->registerDestReference( nDestId, rRect, nPageNr, eType );
339 : }
340 : //--->i56629
341 0 : sal_Int32 PDFWriter::CreateNamedDest( const OUString& sDestName, const Rectangle& rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType )
342 : {
343 0 : return xImplementation->createNamedDest( sDestName, rRect, nPageNr, eType );
344 : }
345 0 : sal_Int32 PDFWriter::CreateDest( const Rectangle& rRect, sal_Int32 nPageNr, PDFWriter::DestAreaType eType )
346 : {
347 0 : return xImplementation->createDest( rRect, nPageNr, eType );
348 : }
349 :
350 0 : sal_Int32 PDFWriter::SetLinkDest( sal_Int32 nLinkId, sal_Int32 nDestId )
351 : {
352 0 : return xImplementation->setLinkDest( nLinkId, nDestId );
353 : }
354 :
355 0 : sal_Int32 PDFWriter::SetLinkURL( sal_Int32 nLinkId, const OUString& rURL )
356 : {
357 0 : return xImplementation->setLinkURL( nLinkId, rURL );
358 : }
359 :
360 0 : void PDFWriter::SetLinkPropertyID( sal_Int32 nLinkId, sal_Int32 nPropertyId )
361 : {
362 0 : xImplementation->setLinkPropertyId( nLinkId, nPropertyId );
363 0 : }
364 :
365 0 : sal_Int32 PDFWriter::CreateOutlineItem( sal_Int32 nParent, const OUString& rText, sal_Int32 nDestID )
366 : {
367 0 : return xImplementation->createOutlineItem( nParent, rText, nDestID );
368 : }
369 :
370 0 : sal_Int32 PDFWriter::SetOutlineItemParent( sal_Int32 nItem, sal_Int32 nNewParent )
371 : {
372 0 : return xImplementation->setOutlineItemParent( nItem, nNewParent );
373 : }
374 :
375 0 : sal_Int32 PDFWriter::SetOutlineItemText( sal_Int32 nItem, const OUString& rText )
376 : {
377 0 : return xImplementation->setOutlineItemText( nItem, rText );
378 : }
379 :
380 0 : sal_Int32 PDFWriter::SetOutlineItemDest( sal_Int32 nItem, sal_Int32 nDest )
381 : {
382 0 : return xImplementation->setOutlineItemDest( nItem, nDest );
383 : }
384 :
385 0 : void PDFWriter::CreateNote( const Rectangle& rRect, const PDFNote& rNote, sal_Int32 nPageNr )
386 : {
387 0 : xImplementation->createNote( rRect, rNote, nPageNr );
388 0 : }
389 :
390 0 : sal_Int32 PDFWriter::BeginStructureElement( PDFWriter::StructElement eType, const OUString& rAlias )
391 : {
392 0 : return xImplementation->beginStructureElement( eType, rAlias );
393 : }
394 :
395 0 : void PDFWriter::EndStructureElement()
396 : {
397 0 : xImplementation->endStructureElement();
398 0 : }
399 :
400 0 : bool PDFWriter::SetCurrentStructureElement( sal_Int32 nID )
401 : {
402 0 : return xImplementation->setCurrentStructureElement( nID );
403 : }
404 :
405 0 : bool PDFWriter::SetStructureAttribute( enum StructAttribute eAttr, enum StructAttributeValue eVal )
406 : {
407 0 : return xImplementation->setStructureAttribute( eAttr, eVal );
408 : }
409 :
410 0 : bool PDFWriter::SetStructureAttributeNumerical( enum StructAttribute eAttr, sal_Int32 nValue )
411 : {
412 0 : return xImplementation->setStructureAttributeNumerical( eAttr, nValue );
413 : }
414 :
415 0 : void PDFWriter::SetStructureBoundingBox( const Rectangle& rRect )
416 : {
417 0 : xImplementation->setStructureBoundingBox( rRect );
418 0 : }
419 :
420 0 : void PDFWriter::SetActualText( const OUString& rText )
421 : {
422 0 : xImplementation->setActualText( rText );
423 0 : }
424 :
425 0 : void PDFWriter::SetAlternateText( const OUString& rText )
426 : {
427 0 : xImplementation->setAlternateText( rText );
428 0 : }
429 :
430 0 : void PDFWriter::SetAutoAdvanceTime( sal_uInt32 nSeconds, sal_Int32 nPageNr )
431 : {
432 0 : xImplementation->setAutoAdvanceTime( nSeconds, nPageNr );
433 0 : }
434 :
435 0 : void PDFWriter::SetPageTransition( PDFWriter::PageTransition eType, sal_uInt32 nMilliSec, sal_Int32 nPageNr )
436 : {
437 0 : xImplementation->setPageTransition( eType, nMilliSec, nPageNr );
438 0 : }
439 :
440 0 : sal_Int32 PDFWriter::CreateControl( const PDFWriter::AnyWidget& rControl, sal_Int32 nPageNr )
441 : {
442 0 : return xImplementation->createControl( rControl, nPageNr );
443 : }
444 :
445 0 : PDFOutputStream::~PDFOutputStream()
446 : {
447 0 : }
448 :
449 0 : void PDFWriter::AddStream( const OUString& rMimeType, PDFOutputStream* pStream, bool bCompress )
450 : {
451 0 : xImplementation->addStream( rMimeType, pStream, bCompress );
452 0 : }
453 :
454 0 : std::set< PDFWriter::ErrorCode > PDFWriter::GetErrors()
455 : {
456 0 : return xImplementation->getErrors();
457 : }
458 :
459 : com::sun::star::uno::Reference< com::sun::star::beans::XMaterialHolder >
460 0 : PDFWriter::InitEncryption( const OUString& i_rOwnerPassword,
461 : const OUString& i_rUserPassword,
462 : bool b128Bit
463 : )
464 : {
465 0 : return PDFWriterImpl::initEncryption( i_rOwnerPassword, i_rUserPassword, b128Bit );
466 : }
467 :
468 0 : void PDFWriter::PlayMetafile( const GDIMetaFile& i_rMTF, const vcl::PDFWriter::PlayMetafileContext& i_rPlayContext, PDFExtOutDevData* i_pData )
469 : {
470 0 : xImplementation->playMetafile( i_rMTF, i_pData, i_rPlayContext, NULL);
471 801 : }
472 :
473 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|