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 : #ifndef INCLUDED_VCL_METAACT_HXX
21 : #define INCLUDED_VCL_METAACT_HXX
22 :
23 : #include <vcl/dllapi.h>
24 : #include <vcl/gradient.hxx>
25 : #include <vcl/hatch.hxx>
26 : #include <vcl/wall.hxx>
27 : #include <vcl/font.hxx>
28 : #include <tools/poly.hxx>
29 : #include <vcl/bitmap.hxx>
30 : #include <vcl/bitmapex.hxx>
31 : #include <vcl/region.hxx>
32 : #include <vcl/graph.hxx>
33 : #include <vcl/outdev.hxx>
34 : #include <vcl/gdimtf.hxx>
35 : #include <vcl/gfxlink.hxx>
36 : #include <vcl/lineinfo.hxx>
37 : #include <vcl/metaactiontypes.hxx>
38 : #include <vcl/outdevstate.hxx>
39 :
40 : class SvStream;
41 :
42 : struct ImplMetaReadData
43 : {
44 : rtl_TextEncoding meActualCharSet;
45 :
46 9834 : ImplMetaReadData() :
47 9834 : meActualCharSet( RTL_TEXTENCODING_ASCII_US )
48 9834 : {}
49 : };
50 :
51 : struct ImplMetaWriteData
52 : {
53 : rtl_TextEncoding meActualCharSet;
54 :
55 12128 : ImplMetaWriteData() :
56 12128 : meActualCharSet( RTL_TEXTENCODING_ASCII_US )
57 12128 : {}
58 : };
59 :
60 6388 : class VCL_DLLPUBLIC MetaAction
61 : {
62 : private:
63 : sal_uLong mnRefCount;
64 : sal_uInt16 mnType;
65 :
66 : virtual bool Compare( const MetaAction& ) const;
67 :
68 : protected:
69 : virtual ~MetaAction();
70 :
71 : public:
72 : MetaAction();
73 : explicit MetaAction( sal_uInt16 nType );
74 :
75 : virtual void Execute( OutputDevice* pOut );
76 :
77 : virtual MetaAction* Clone();
78 :
79 : virtual void Move( long nHorzMove, long nVertMove );
80 : virtual void Scale( double fScaleX, double fScaleY );
81 :
82 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData );
83 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData );
84 :
85 1307322 : sal_uInt16 GetType() const { return mnType; }
86 48362 : sal_uLong GetRefCount() const { return mnRefCount; }
87 15176 : void ResetRefCount() { mnRefCount = 1; }
88 1756713 : void Duplicate() { mnRefCount++; }
89 3369124 : void Delete() { if ( 0 == --mnRefCount ) delete this; }
90 :
91 : public:
92 : static MetaAction* ReadMetaAction( SvStream& rIStm, ImplMetaReadData* pData );
93 : };
94 :
95 0 : class VCL_DLLPUBLIC MetaPixelAction : public MetaAction
96 : {
97 : private:
98 : Point maPt;
99 : Color maColor;
100 :
101 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
102 :
103 : public:
104 : MetaPixelAction();
105 : protected:
106 : virtual ~MetaPixelAction();
107 : public:
108 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
109 : virtual MetaAction* Clone() SAL_OVERRIDE;
110 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
111 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
112 :
113 : MetaPixelAction( const Point& rPt, const Color& rColor );
114 :
115 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
116 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
117 :
118 0 : const Point& GetPoint() const { return maPt; }
119 0 : const Color& GetColor() const { return maColor; }
120 : };
121 :
122 0 : class VCL_DLLPUBLIC MetaPointAction : public MetaAction
123 : {
124 : private:
125 : Point maPt;
126 :
127 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
128 :
129 : public:
130 : MetaPointAction();
131 : protected:
132 : virtual ~MetaPointAction();
133 : public:
134 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
135 : virtual MetaAction* Clone() SAL_OVERRIDE;
136 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
137 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
138 :
139 : explicit MetaPointAction( const Point& );
140 :
141 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
142 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
143 :
144 0 : const Point& GetPoint() const { return maPt; }
145 : };
146 :
147 0 : class VCL_DLLPUBLIC MetaLineAction : public MetaAction
148 : {
149 : private:
150 :
151 : LineInfo maLineInfo;
152 : Point maStartPt;
153 : Point maEndPt;
154 :
155 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
156 :
157 : public:
158 : MetaLineAction();
159 : protected:
160 : virtual ~MetaLineAction();
161 : public:
162 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
163 : virtual MetaAction* Clone() SAL_OVERRIDE;
164 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
165 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
166 :
167 : MetaLineAction( const Point& rStart, const Point& rEnd );
168 : MetaLineAction( const Point& rStart, const Point& rEnd,
169 : const LineInfo& rLineInfo );
170 :
171 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
172 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
173 :
174 2274 : const Point& GetStartPoint() const { return maStartPt; }
175 3704 : const Point& GetEndPoint() const { return maEndPt; }
176 1854 : const LineInfo& GetLineInfo() const { return maLineInfo; }
177 : };
178 :
179 0 : class VCL_DLLPUBLIC MetaRectAction : public MetaAction
180 : {
181 : private:
182 :
183 : Rectangle maRect;
184 :
185 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
186 : public:
187 : MetaRectAction();
188 : protected:
189 : virtual ~MetaRectAction();
190 : public:
191 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
192 : virtual MetaAction* Clone() SAL_OVERRIDE;
193 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
194 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
195 :
196 : explicit MetaRectAction( const Rectangle& );
197 :
198 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
199 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
200 :
201 1110 : const Rectangle& GetRect() const { return maRect; }
202 : };
203 :
204 0 : class VCL_DLLPUBLIC MetaRoundRectAction : public MetaAction
205 : {
206 : private:
207 :
208 : Rectangle maRect;
209 : sal_uInt32 mnHorzRound;
210 : sal_uInt32 mnVertRound;
211 :
212 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
213 :
214 : public:
215 : MetaRoundRectAction();
216 : protected:
217 : virtual ~MetaRoundRectAction();
218 : public:
219 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
220 : virtual MetaAction* Clone() SAL_OVERRIDE;
221 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
222 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
223 :
224 : MetaRoundRectAction( const Rectangle& rRect,
225 : sal_uInt32 nHorzRound, sal_uInt32 nVertRound );
226 :
227 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
228 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
229 :
230 0 : const Rectangle& GetRect() const { return maRect; }
231 0 : sal_uInt32 GetHorzRound() const { return mnHorzRound; }
232 0 : sal_uInt32 GetVertRound() const { return mnVertRound; }
233 : };
234 :
235 0 : class VCL_DLLPUBLIC MetaEllipseAction : public MetaAction
236 : {
237 : private:
238 :
239 : Rectangle maRect;
240 :
241 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
242 :
243 : public:
244 : MetaEllipseAction();
245 : protected:
246 : virtual ~MetaEllipseAction();
247 : public:
248 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
249 : virtual MetaAction* Clone() SAL_OVERRIDE;
250 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
251 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
252 :
253 : explicit MetaEllipseAction( const Rectangle& );
254 :
255 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
256 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
257 :
258 0 : const Rectangle& GetRect() const { return maRect; }
259 : };
260 :
261 0 : class VCL_DLLPUBLIC MetaArcAction : public MetaAction
262 : {
263 : private:
264 :
265 : Rectangle maRect;
266 : Point maStartPt;
267 : Point maEndPt;
268 :
269 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
270 :
271 : public:
272 : MetaArcAction();
273 : protected:
274 : virtual ~MetaArcAction();
275 : public:
276 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
277 : virtual MetaAction* Clone() SAL_OVERRIDE;
278 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
279 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
280 :
281 : MetaArcAction( const Rectangle& rRect,
282 : const Point& rStart, const Point& rEnd );
283 :
284 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
285 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
286 :
287 0 : const Rectangle& GetRect() const { return maRect; }
288 0 : const Point& GetStartPoint() const { return maStartPt; }
289 0 : const Point& GetEndPoint() const { return maEndPt; }
290 : };
291 :
292 0 : class VCL_DLLPUBLIC MetaPieAction : public MetaAction
293 : {
294 : private:
295 :
296 : Rectangle maRect;
297 : Point maStartPt;
298 : Point maEndPt;
299 :
300 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
301 :
302 : public:
303 : MetaPieAction();
304 : protected:
305 : virtual ~MetaPieAction();
306 : public:
307 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
308 : virtual MetaAction* Clone() SAL_OVERRIDE;
309 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
310 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
311 :
312 : MetaPieAction( const Rectangle& rRect,
313 : const Point& rStart, const Point& rEnd );
314 :
315 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
316 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
317 :
318 0 : const Rectangle& GetRect() const { return maRect; }
319 0 : const Point& GetStartPoint() const { return maStartPt; }
320 0 : const Point& GetEndPoint() const { return maEndPt; }
321 : };
322 :
323 0 : class VCL_DLLPUBLIC MetaChordAction : public MetaAction
324 : {
325 : private:
326 :
327 : Rectangle maRect;
328 : Point maStartPt;
329 : Point maEndPt;
330 :
331 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
332 :
333 : public:
334 : MetaChordAction();
335 : protected:
336 : virtual ~MetaChordAction();
337 : public:
338 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
339 : virtual MetaAction* Clone() SAL_OVERRIDE;
340 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
341 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
342 :
343 : MetaChordAction( const Rectangle& rRect,
344 : const Point& rStart, const Point& rEnd );
345 :
346 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
347 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
348 :
349 0 : const Rectangle& GetRect() const { return maRect; }
350 0 : const Point& GetStartPoint() const { return maStartPt; }
351 0 : const Point& GetEndPoint() const { return maEndPt; }
352 : };
353 :
354 336 : class VCL_DLLPUBLIC MetaPolyLineAction : public MetaAction
355 : {
356 : private:
357 :
358 : LineInfo maLineInfo;
359 : Polygon maPoly;
360 :
361 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
362 :
363 : public:
364 : MetaPolyLineAction();
365 : protected:
366 : virtual ~MetaPolyLineAction();
367 : public:
368 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
369 : virtual MetaAction* Clone() SAL_OVERRIDE;
370 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
371 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
372 :
373 : explicit MetaPolyLineAction( const Polygon& );
374 : explicit MetaPolyLineAction( const Polygon&, const LineInfo& );
375 :
376 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
377 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
378 :
379 3080 : const Polygon& GetPolygon() const { return maPoly; }
380 158 : const LineInfo& GetLineInfo() const { return maLineInfo; }
381 : };
382 :
383 0 : class VCL_DLLPUBLIC MetaPolygonAction : public MetaAction
384 : {
385 : private:
386 :
387 : Polygon maPoly;
388 :
389 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
390 :
391 : public:
392 : MetaPolygonAction();
393 : protected:
394 : virtual ~MetaPolygonAction();
395 : public:
396 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
397 : virtual MetaAction* Clone() SAL_OVERRIDE;
398 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
399 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
400 :
401 : explicit MetaPolygonAction( const Polygon& );
402 :
403 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
404 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
405 :
406 5250 : const Polygon& GetPolygon() const { return maPoly; }
407 : };
408 :
409 626 : class VCL_DLLPUBLIC MetaPolyPolygonAction : public MetaAction
410 : {
411 : private:
412 :
413 : tools::PolyPolygon maPolyPoly;
414 :
415 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
416 :
417 : public:
418 : MetaPolyPolygonAction();
419 : protected:
420 : virtual ~MetaPolyPolygonAction();
421 : public:
422 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
423 : virtual MetaAction* Clone() SAL_OVERRIDE;
424 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
425 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
426 :
427 : explicit MetaPolyPolygonAction( const tools::PolyPolygon& );
428 :
429 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
430 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
431 :
432 5934 : const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
433 : };
434 :
435 0 : class VCL_DLLPUBLIC MetaTextAction : public MetaAction
436 : {
437 : private:
438 :
439 : Point maPt;
440 : OUString maStr;
441 : sal_Int32 mnIndex;
442 : sal_Int32 mnLen;
443 :
444 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
445 :
446 : public:
447 : MetaTextAction();
448 : protected:
449 : virtual ~MetaTextAction();
450 : public:
451 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
452 : virtual MetaAction* Clone() SAL_OVERRIDE;
453 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
454 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
455 :
456 : MetaTextAction( const Point& rPt, const OUString& rStr,
457 : sal_Int32 nIndex, sal_Int32 nLen );
458 :
459 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
460 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
461 :
462 2104 : const Point& GetPoint() const { return maPt; }
463 10736 : const OUString& GetText() const { return maStr; }
464 3156 : sal_Int32 GetIndex() const { return mnIndex; }
465 2104 : sal_Int32 GetLen() const { return mnLen; }
466 : };
467 :
468 : class VCL_DLLPUBLIC MetaTextArrayAction : public MetaAction
469 : {
470 : private:
471 :
472 : Point maStartPt;
473 : OUString maStr;
474 : long* mpDXAry;
475 : sal_Int32 mnIndex;
476 : sal_Int32 mnLen;
477 :
478 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
479 :
480 : protected:
481 : virtual ~MetaTextArrayAction();
482 :
483 : public:
484 : MetaTextArrayAction();
485 : MetaTextArrayAction( const MetaTextArrayAction& rAction );
486 : MetaTextArrayAction( const Point& rStartPt, const OUString& rStr,
487 : const long* pDXAry, sal_Int32 nIndex,
488 : sal_Int32 nLen );
489 :
490 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
491 :
492 : virtual MetaAction* Clone() SAL_OVERRIDE;
493 :
494 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
495 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
496 :
497 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
498 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
499 :
500 818 : const Point& GetPoint() const { return maStartPt; }
501 10622 : const OUString& GetText() const { return maStr; }
502 1430 : sal_Int32 GetIndex() const { return mnIndex; }
503 10312 : sal_Int32 GetLen() const { return mnLen; }
504 10316 : long* GetDXArray() const { return mpDXAry; }
505 : };
506 :
507 0 : class VCL_DLLPUBLIC MetaStretchTextAction : public MetaAction
508 : {
509 : private:
510 :
511 : Point maPt;
512 : OUString maStr;
513 : sal_uInt32 mnWidth;
514 : sal_Int32 mnIndex;
515 : sal_Int32 mnLen;
516 :
517 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
518 :
519 : public:
520 : MetaStretchTextAction();
521 : protected:
522 : virtual ~MetaStretchTextAction();
523 : public:
524 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
525 : virtual MetaAction* Clone() SAL_OVERRIDE;
526 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
527 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
528 :
529 : MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
530 : const OUString& rStr,
531 : sal_Int32 nIndex, sal_Int32 nLen );
532 :
533 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
534 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
535 :
536 1808 : const Point& GetPoint() const { return maPt; }
537 2752 : const OUString& GetText() const { return maStr; }
538 832 : sal_uInt32 GetWidth() const { return mnWidth; }
539 2752 : sal_Int32 GetIndex() const { return mnIndex; }
540 1376 : sal_Int32 GetLen() const { return mnLen; }
541 : };
542 :
543 0 : class VCL_DLLPUBLIC MetaTextRectAction : public MetaAction
544 : {
545 : private:
546 :
547 : Rectangle maRect;
548 : OUString maStr;
549 : sal_uInt16 mnStyle;
550 :
551 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
552 :
553 : public:
554 : MetaTextRectAction();
555 : protected:
556 : virtual ~MetaTextRectAction();
557 : public:
558 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
559 : virtual MetaAction* Clone() SAL_OVERRIDE;
560 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
561 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
562 :
563 : MetaTextRectAction( const Rectangle& rRect,
564 : const OUString& rStr, sal_uInt16 nStyle );
565 :
566 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
567 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
568 :
569 0 : const Rectangle& GetRect() const { return maRect; }
570 0 : const OUString& GetText() const { return maStr; }
571 0 : sal_uInt16 GetStyle() const { return mnStyle; }
572 : };
573 :
574 0 : class VCL_DLLPUBLIC MetaTextLineAction : public MetaAction
575 : {
576 : private:
577 :
578 : Point maPos;
579 : long mnWidth;
580 : FontStrikeout meStrikeout;
581 : FontUnderline meUnderline;
582 : FontUnderline meOverline;
583 :
584 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
585 :
586 : public:
587 : MetaTextLineAction();
588 : protected:
589 : virtual ~MetaTextLineAction();
590 : public:
591 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
592 : virtual MetaAction* Clone() SAL_OVERRIDE;
593 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
594 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
595 :
596 : MetaTextLineAction( const Point& rPos, long nWidth,
597 : FontStrikeout eStrikeout,
598 : FontUnderline eUnderline,
599 : FontUnderline eOverline );
600 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
601 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
602 :
603 0 : const Point& GetStartPoint() const { return maPos; }
604 0 : long GetWidth() const { return mnWidth; }
605 0 : FontStrikeout GetStrikeout() const { return meStrikeout; }
606 0 : FontUnderline GetUnderline() const { return meUnderline; }
607 0 : FontUnderline GetOverline() const { return meOverline; }
608 : };
609 :
610 0 : class VCL_DLLPUBLIC MetaBmpAction : public MetaAction
611 : {
612 : private:
613 :
614 : Bitmap maBmp;
615 : Point maPt;
616 :
617 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
618 :
619 : public:
620 : MetaBmpAction();
621 : protected:
622 : virtual ~MetaBmpAction();
623 : public:
624 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
625 : virtual MetaAction* Clone() SAL_OVERRIDE;
626 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
627 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
628 :
629 : MetaBmpAction( const Point& rPt, const Bitmap& rBmp );
630 :
631 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
632 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
633 :
634 0 : const Bitmap& GetBitmap() const { return maBmp; }
635 0 : const Point& GetPoint() const { return maPt; }
636 : };
637 :
638 60 : class VCL_DLLPUBLIC MetaBmpScaleAction : public MetaAction
639 : {
640 : private:
641 :
642 : Bitmap maBmp;
643 : Point maPt;
644 : Size maSz;
645 :
646 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
647 :
648 : public:
649 : MetaBmpScaleAction();
650 : protected:
651 : virtual ~MetaBmpScaleAction();
652 : public:
653 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
654 : virtual MetaAction* Clone() SAL_OVERRIDE;
655 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
656 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
657 :
658 : MetaBmpScaleAction( const Point& rPt, const Size& rSz,
659 : const Bitmap& rBmp );
660 :
661 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
662 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
663 :
664 1782 : const Bitmap& GetBitmap() const { return maBmp; }
665 1692 : const Point& GetPoint() const { return maPt; }
666 1692 : const Size& GetSize() const { return maSz; }
667 : };
668 :
669 0 : class VCL_DLLPUBLIC MetaBmpScalePartAction : public MetaAction
670 : {
671 : private:
672 :
673 : Bitmap maBmp;
674 : Point maDstPt;
675 : Size maDstSz;
676 : Point maSrcPt;
677 : Size maSrcSz;
678 :
679 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
680 :
681 : public:
682 : MetaBmpScalePartAction();
683 : protected:
684 : virtual ~MetaBmpScalePartAction();
685 : public:
686 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
687 : virtual MetaAction* Clone() SAL_OVERRIDE;
688 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
689 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
690 :
691 : MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
692 : const Point& rSrcPt, const Size& rSrcSz,
693 : const Bitmap& rBmp );
694 :
695 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
696 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
697 :
698 0 : const Bitmap& GetBitmap() const { return maBmp; }
699 0 : const Point& GetDestPoint() const { return maDstPt; }
700 0 : const Size& GetDestSize() const { return maDstSz; }
701 0 : const Point& GetSrcPoint() const { return maSrcPt; }
702 0 : const Size& GetSrcSize() const { return maSrcSz; }
703 : };
704 :
705 0 : class VCL_DLLPUBLIC MetaBmpExAction : public MetaAction
706 : {
707 : private:
708 :
709 : BitmapEx maBmpEx;
710 : Point maPt;
711 :
712 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
713 :
714 : public:
715 : MetaBmpExAction();
716 : protected:
717 : virtual ~MetaBmpExAction();
718 : public:
719 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
720 : virtual MetaAction* Clone() SAL_OVERRIDE;
721 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
722 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
723 :
724 : MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx );
725 :
726 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
727 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
728 :
729 24 : const BitmapEx& GetBitmapEx() const { return maBmpEx; }
730 24 : const Point& GetPoint() const { return maPt; }
731 : };
732 :
733 6 : class VCL_DLLPUBLIC MetaBmpExScaleAction : public MetaAction
734 : {
735 : private:
736 :
737 : BitmapEx maBmpEx;
738 : Point maPt;
739 : Size maSz;
740 :
741 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
742 :
743 : public:
744 : MetaBmpExScaleAction();
745 : protected:
746 : virtual ~MetaBmpExScaleAction();
747 : public:
748 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
749 : virtual MetaAction* Clone() SAL_OVERRIDE;
750 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
751 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
752 :
753 : MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
754 : const BitmapEx& rBmpEx ) ;
755 :
756 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
757 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
758 :
759 256 : const BitmapEx& GetBitmapEx() const { return maBmpEx; }
760 330 : const Point& GetPoint() const { return maPt; }
761 330 : const Size& GetSize() const { return maSz; }
762 : };
763 :
764 0 : class VCL_DLLPUBLIC MetaBmpExScalePartAction : public MetaAction
765 : {
766 : private:
767 :
768 : BitmapEx maBmpEx;
769 : Point maDstPt;
770 : Size maDstSz;
771 : Point maSrcPt;
772 : Size maSrcSz;
773 :
774 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
775 :
776 : public:
777 : MetaBmpExScalePartAction();
778 : protected:
779 : virtual ~MetaBmpExScalePartAction();
780 : public:
781 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
782 : virtual MetaAction* Clone() SAL_OVERRIDE;
783 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
784 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
785 :
786 : MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
787 : const Point& rSrcPt, const Size& rSrcSz,
788 : const BitmapEx& rBmpEx );
789 :
790 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
791 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
792 :
793 0 : const BitmapEx& GetBitmapEx() const { return maBmpEx; }
794 0 : const Point& GetDestPoint() const { return maDstPt; }
795 0 : const Size& GetDestSize() const { return maDstSz; }
796 0 : const Point& GetSrcPoint() const { return maSrcPt; }
797 0 : const Size& GetSrcSize() const { return maSrcSz; }
798 : };
799 :
800 0 : class VCL_DLLPUBLIC MetaMaskAction : public MetaAction
801 : {
802 : private:
803 :
804 : Bitmap maBmp;
805 : Color maColor;
806 : Point maPt;
807 :
808 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
809 :
810 : public:
811 : MetaMaskAction();
812 : protected:
813 : virtual ~MetaMaskAction();
814 : public:
815 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
816 : virtual MetaAction* Clone() SAL_OVERRIDE;
817 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
818 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
819 :
820 : MetaMaskAction( const Point& rPt,
821 : const Bitmap& rBmp,
822 : const Color& rColor );
823 :
824 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
825 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
826 :
827 0 : const Bitmap& GetBitmap() const { return maBmp; }
828 0 : const Color& GetColor() const { return maColor; }
829 0 : const Point& GetPoint() const { return maPt; }
830 : };
831 :
832 0 : class VCL_DLLPUBLIC MetaMaskScaleAction : public MetaAction
833 : {
834 : private:
835 :
836 : Bitmap maBmp;
837 : Color maColor;
838 : Point maPt;
839 : Size maSz;
840 :
841 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
842 :
843 : public:
844 : MetaMaskScaleAction();
845 : protected:
846 : virtual ~MetaMaskScaleAction();
847 : public:
848 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
849 : virtual MetaAction* Clone() SAL_OVERRIDE;
850 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
851 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
852 :
853 : MetaMaskScaleAction( const Point& rPt, const Size& rSz,
854 : const Bitmap& rBmp,
855 : const Color& rColor );
856 :
857 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
858 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
859 :
860 0 : const Bitmap& GetBitmap() const { return maBmp; }
861 0 : const Color& GetColor() const { return maColor; }
862 0 : const Point& GetPoint() const { return maPt; }
863 0 : const Size& GetSize() const { return maSz; }
864 : };
865 :
866 0 : class VCL_DLLPUBLIC MetaMaskScalePartAction : public MetaAction
867 : {
868 : private:
869 :
870 : Bitmap maBmp;
871 : Color maColor;
872 : Point maDstPt;
873 : Size maDstSz;
874 : Point maSrcPt;
875 : Size maSrcSz;
876 :
877 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
878 :
879 : public:
880 : MetaMaskScalePartAction();
881 : protected:
882 : virtual ~MetaMaskScalePartAction();
883 : public:
884 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
885 : virtual MetaAction* Clone() SAL_OVERRIDE;
886 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
887 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
888 :
889 : MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
890 : const Point& rSrcPt, const Size& rSrcSz,
891 : const Bitmap& rBmp,
892 : const Color& rColor );
893 :
894 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
895 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
896 :
897 0 : const Bitmap& GetBitmap() const { return maBmp; }
898 0 : const Color& GetColor() const { return maColor; }
899 0 : const Point& GetDestPoint() const { return maDstPt; }
900 0 : const Size& GetDestSize() const { return maDstSz; }
901 0 : const Point& GetSrcPoint() const { return maSrcPt; }
902 0 : const Size& GetSrcSize() const { return maSrcSz; }
903 : };
904 :
905 0 : class VCL_DLLPUBLIC MetaGradientAction : public MetaAction
906 : {
907 : private:
908 :
909 : Rectangle maRect;
910 : Gradient maGradient;
911 :
912 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
913 :
914 : public:
915 : MetaGradientAction();
916 : protected:
917 : virtual ~MetaGradientAction();
918 : public:
919 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
920 : virtual MetaAction* Clone() SAL_OVERRIDE;
921 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
922 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
923 :
924 : MetaGradientAction( const Rectangle& rRect, const Gradient& rGradient );
925 :
926 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
927 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
928 :
929 0 : const Rectangle& GetRect() const { return maRect; }
930 0 : const Gradient& GetGradient() const { return maGradient; }
931 : };
932 :
933 0 : class VCL_DLLPUBLIC MetaGradientExAction : public MetaAction
934 : {
935 : private:
936 :
937 : tools::PolyPolygon maPolyPoly;
938 : Gradient maGradient;
939 :
940 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
941 :
942 : public:
943 : MetaGradientExAction();
944 : protected:
945 : virtual ~MetaGradientExAction();
946 : public:
947 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
948 : virtual MetaAction* Clone() SAL_OVERRIDE;
949 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
950 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
951 :
952 : MetaGradientExAction( const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient );
953 :
954 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
955 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
956 :
957 0 : const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
958 0 : const Gradient& GetGradient() const { return maGradient; }
959 : };
960 :
961 2 : class VCL_DLLPUBLIC MetaHatchAction : public MetaAction
962 : {
963 : private:
964 :
965 : tools::PolyPolygon maPolyPoly;
966 : Hatch maHatch;
967 :
968 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
969 :
970 : public:
971 : MetaHatchAction();
972 : protected:
973 : virtual ~MetaHatchAction();
974 : public:
975 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
976 : virtual MetaAction* Clone() SAL_OVERRIDE;
977 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
978 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
979 :
980 : MetaHatchAction( const tools::PolyPolygon& rPolyPoly, const Hatch& rHatch );
981 :
982 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
983 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
984 :
985 28 : const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
986 28 : const Hatch& GetHatch() const { return maHatch; }
987 : };
988 :
989 0 : class VCL_DLLPUBLIC MetaWallpaperAction : public MetaAction
990 : {
991 : private:
992 :
993 : Rectangle maRect;
994 : Wallpaper maWallpaper;
995 :
996 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
997 :
998 : public:
999 : MetaWallpaperAction();
1000 : protected:
1001 : virtual ~MetaWallpaperAction();
1002 : public:
1003 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1004 : virtual MetaAction* Clone() SAL_OVERRIDE;
1005 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1006 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1007 :
1008 : MetaWallpaperAction( const Rectangle& rRect,
1009 : const Wallpaper& rPaper );
1010 :
1011 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1012 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1013 :
1014 0 : const Rectangle& GetRect() const { return maRect; }
1015 0 : const Wallpaper& GetWallpaper() const { return maWallpaper; }
1016 : };
1017 :
1018 84 : class VCL_DLLPUBLIC MetaClipRegionAction : public MetaAction
1019 : {
1020 : private:
1021 :
1022 : vcl::Region maRegion;
1023 : bool mbClip;
1024 :
1025 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1026 :
1027 : public:
1028 : MetaClipRegionAction();
1029 : protected:
1030 : virtual ~MetaClipRegionAction();
1031 : public:
1032 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1033 : virtual MetaAction* Clone() SAL_OVERRIDE;
1034 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1035 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1036 :
1037 : MetaClipRegionAction( const vcl::Region& rRegion, bool bClip );
1038 :
1039 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1040 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1041 :
1042 1984 : const vcl::Region& GetRegion() const { return maRegion; }
1043 688 : bool IsClipping() const { return mbClip; }
1044 : };
1045 :
1046 0 : class VCL_DLLPUBLIC MetaISectRectClipRegionAction : public MetaAction
1047 : {
1048 : private:
1049 :
1050 : Rectangle maRect;
1051 :
1052 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1053 :
1054 : public:
1055 : MetaISectRectClipRegionAction();
1056 : protected:
1057 : virtual ~MetaISectRectClipRegionAction();
1058 : public:
1059 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1060 : virtual MetaAction* Clone() SAL_OVERRIDE;
1061 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1062 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1063 :
1064 : explicit MetaISectRectClipRegionAction( const Rectangle& );
1065 :
1066 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1067 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1068 :
1069 428 : const Rectangle& GetRect() const { return maRect; }
1070 : };
1071 :
1072 0 : class VCL_DLLPUBLIC MetaISectRegionClipRegionAction : public MetaAction
1073 : {
1074 : private:
1075 :
1076 : vcl::Region maRegion;
1077 :
1078 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1079 :
1080 : public:
1081 : MetaISectRegionClipRegionAction();
1082 : protected:
1083 : virtual ~MetaISectRegionClipRegionAction();
1084 : public:
1085 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1086 : virtual MetaAction* Clone() SAL_OVERRIDE;
1087 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1088 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1089 :
1090 : explicit MetaISectRegionClipRegionAction( const vcl::Region& );
1091 :
1092 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1093 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1094 :
1095 14 : const vcl::Region& GetRegion() const { return maRegion; }
1096 : };
1097 :
1098 0 : class VCL_DLLPUBLIC MetaMoveClipRegionAction : public MetaAction
1099 : {
1100 : private:
1101 :
1102 : long mnHorzMove;
1103 : long mnVertMove;
1104 :
1105 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1106 :
1107 : public:
1108 : MetaMoveClipRegionAction();
1109 : protected:
1110 : virtual ~MetaMoveClipRegionAction();
1111 : public:
1112 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1113 : virtual MetaAction* Clone() SAL_OVERRIDE;
1114 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1115 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1116 :
1117 : MetaMoveClipRegionAction( long nHorzMove, long nVertMove );
1118 :
1119 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1120 :
1121 0 : long GetHorzMove() const { return mnHorzMove; }
1122 0 : long GetVertMove() const { return mnVertMove; }
1123 : };
1124 :
1125 2272 : class VCL_DLLPUBLIC MetaLineColorAction : public MetaAction
1126 : {
1127 : private:
1128 :
1129 : Color maColor;
1130 : bool mbSet;
1131 :
1132 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1133 :
1134 : public:
1135 : MetaLineColorAction();
1136 : protected:
1137 : virtual ~MetaLineColorAction();
1138 : public:
1139 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1140 : virtual MetaAction* Clone() SAL_OVERRIDE;
1141 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1142 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1143 :
1144 : MetaLineColorAction( const Color& rColor, bool bSet );
1145 :
1146 1046 : const Color& GetColor() const { return maColor; }
1147 1187 : bool IsSetting() const { return mbSet; }
1148 : };
1149 :
1150 1464 : class VCL_DLLPUBLIC MetaFillColorAction : public MetaAction
1151 : {
1152 : private:
1153 :
1154 : Color maColor;
1155 : bool mbSet;
1156 :
1157 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1158 :
1159 : public:
1160 : MetaFillColorAction();
1161 : protected:
1162 : virtual ~MetaFillColorAction();
1163 : public:
1164 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1165 : virtual MetaAction* Clone() SAL_OVERRIDE;
1166 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1167 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1168 :
1169 : MetaFillColorAction( const Color& rColor, bool bSet );
1170 :
1171 1497 : const Color& GetColor() const { return maColor; }
1172 1583 : bool IsSetting() const { return mbSet; }
1173 : };
1174 :
1175 308 : class VCL_DLLPUBLIC MetaTextColorAction : public MetaAction
1176 : {
1177 : private:
1178 :
1179 : Color maColor;
1180 :
1181 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1182 :
1183 : public:
1184 : MetaTextColorAction();
1185 : protected:
1186 : virtual ~MetaTextColorAction();
1187 : public:
1188 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1189 : virtual MetaAction* Clone() SAL_OVERRIDE;
1190 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1191 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1192 :
1193 : explicit MetaTextColorAction( const Color& );
1194 :
1195 1202 : const Color& GetColor() const { return maColor; }
1196 : };
1197 :
1198 308 : class VCL_DLLPUBLIC MetaTextFillColorAction : public MetaAction
1199 : {
1200 : private:
1201 :
1202 : Color maColor;
1203 : bool mbSet;
1204 :
1205 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1206 :
1207 : public:
1208 : MetaTextFillColorAction();
1209 : protected:
1210 : virtual ~MetaTextFillColorAction();
1211 : public:
1212 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1213 : virtual MetaAction* Clone() SAL_OVERRIDE;
1214 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1215 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1216 :
1217 : MetaTextFillColorAction( const Color& rColor, bool bSet );
1218 :
1219 0 : const Color& GetColor() const { return maColor; }
1220 1404 : bool IsSetting() const { return mbSet; }
1221 : };
1222 :
1223 0 : class VCL_DLLPUBLIC MetaTextLineColorAction : public MetaAction
1224 : {
1225 : private:
1226 :
1227 : Color maColor;
1228 : bool mbSet;
1229 :
1230 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1231 :
1232 : public:
1233 : MetaTextLineColorAction();
1234 : protected:
1235 : virtual ~MetaTextLineColorAction();
1236 : public:
1237 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1238 : virtual MetaAction* Clone() SAL_OVERRIDE;
1239 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1240 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1241 :
1242 : MetaTextLineColorAction( const Color& rColor, bool bSet );
1243 :
1244 0 : const Color& GetColor() const { return maColor; }
1245 0 : bool IsSetting() const { return mbSet; }
1246 : };
1247 :
1248 0 : class VCL_DLLPUBLIC MetaOverlineColorAction : public MetaAction
1249 : {
1250 : private:
1251 :
1252 : Color maColor;
1253 : bool mbSet;
1254 :
1255 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1256 :
1257 : public:
1258 : MetaOverlineColorAction();
1259 : protected:
1260 : virtual ~MetaOverlineColorAction();
1261 : public:
1262 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1263 : virtual MetaAction* Clone() SAL_OVERRIDE;
1264 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1265 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1266 :
1267 : MetaOverlineColorAction( const Color& rColor, bool bSet );
1268 :
1269 0 : const Color& GetColor() const { return maColor; }
1270 0 : bool IsSetting() const { return mbSet; }
1271 : };
1272 :
1273 308 : class VCL_DLLPUBLIC MetaTextAlignAction : public MetaAction
1274 : {
1275 : private:
1276 :
1277 : TextAlign maAlign;
1278 :
1279 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1280 :
1281 : public:
1282 : MetaTextAlignAction();
1283 : protected:
1284 : virtual ~MetaTextAlignAction();
1285 : public:
1286 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1287 : virtual MetaAction* Clone() SAL_OVERRIDE;
1288 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1289 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1290 :
1291 : explicit MetaTextAlignAction( TextAlign eAlign );
1292 :
1293 1350 : TextAlign GetTextAlign() const { return maAlign; }
1294 : };
1295 :
1296 54 : class VCL_DLLPUBLIC MetaMapModeAction : public MetaAction
1297 : {
1298 : private:
1299 :
1300 : MapMode maMapMode;
1301 :
1302 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1303 :
1304 : public:
1305 : MetaMapModeAction();
1306 : protected:
1307 : virtual ~MetaMapModeAction();
1308 : public:
1309 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1310 : virtual MetaAction* Clone() SAL_OVERRIDE;
1311 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1312 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1313 :
1314 : explicit MetaMapModeAction( const MapMode& );
1315 :
1316 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1317 :
1318 26 : const MapMode& GetMapMode() const { return maMapMode; }
1319 : };
1320 :
1321 308 : class VCL_DLLPUBLIC MetaFontAction : public MetaAction
1322 : {
1323 : private:
1324 :
1325 : vcl::Font maFont;
1326 :
1327 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1328 :
1329 : public:
1330 : MetaFontAction();
1331 : protected:
1332 : virtual ~MetaFontAction();
1333 : public:
1334 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1335 : virtual MetaAction* Clone() SAL_OVERRIDE;
1336 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1337 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1338 :
1339 : explicit MetaFontAction( const vcl::Font& );
1340 :
1341 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1342 :
1343 3160 : const vcl::Font& GetFont() const { return maFont; }
1344 : };
1345 :
1346 84 : class VCL_DLLPUBLIC MetaPushAction : public MetaAction
1347 : {
1348 : private:
1349 :
1350 : PushFlags mnFlags;
1351 :
1352 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1353 :
1354 : public:
1355 : MetaPushAction();
1356 : protected:
1357 : virtual ~MetaPushAction();
1358 : public:
1359 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1360 : virtual MetaAction* Clone() SAL_OVERRIDE;
1361 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1362 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1363 :
1364 : explicit MetaPushAction( PushFlags nFlags );
1365 :
1366 2738 : PushFlags GetFlags() const { return mnFlags; }
1367 : };
1368 :
1369 84 : class VCL_DLLPUBLIC MetaPopAction : public MetaAction
1370 : {
1371 : public:
1372 :
1373 : MetaPopAction();
1374 : protected:
1375 : virtual ~MetaPopAction();
1376 : public:
1377 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1378 : virtual MetaAction* Clone() SAL_OVERRIDE;
1379 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1380 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1381 : };
1382 :
1383 0 : class VCL_DLLPUBLIC MetaRasterOpAction : public MetaAction
1384 : {
1385 : private:
1386 :
1387 : RasterOp meRasterOp;
1388 :
1389 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1390 :
1391 : public:
1392 : MetaRasterOpAction();
1393 : protected:
1394 : virtual ~MetaRasterOpAction();
1395 : public:
1396 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1397 : virtual MetaAction* Clone() SAL_OVERRIDE;
1398 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1399 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1400 :
1401 : explicit MetaRasterOpAction( RasterOp eRasterOp );
1402 :
1403 1950 : RasterOp GetRasterOp() const { return meRasterOp; }
1404 : };
1405 :
1406 30 : class VCL_DLLPUBLIC MetaTransparentAction : public MetaAction
1407 : {
1408 : private:
1409 :
1410 : tools::PolyPolygon maPolyPoly;
1411 : sal_uInt16 mnTransPercent;
1412 :
1413 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1414 :
1415 : public:
1416 : MetaTransparentAction();
1417 : protected:
1418 : virtual ~MetaTransparentAction();
1419 : public:
1420 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1421 : virtual MetaAction* Clone() SAL_OVERRIDE;
1422 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1423 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1424 :
1425 : MetaTransparentAction( const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransPercent );
1426 :
1427 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1428 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1429 :
1430 0 : const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
1431 0 : sal_uInt16 GetTransparence() const { return mnTransPercent; }
1432 : };
1433 :
1434 0 : class VCL_DLLPUBLIC MetaFloatTransparentAction : public MetaAction
1435 : {
1436 : private:
1437 :
1438 : GDIMetaFile maMtf;
1439 : Point maPoint;
1440 : Size maSize;
1441 : Gradient maGradient;
1442 :
1443 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1444 :
1445 : public:
1446 : MetaFloatTransparentAction();
1447 : protected:
1448 : virtual ~MetaFloatTransparentAction();
1449 : public:
1450 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1451 : virtual MetaAction* Clone() SAL_OVERRIDE;
1452 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1453 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1454 :
1455 : MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos,
1456 : const Size& rSize, const Gradient& rGradient );
1457 :
1458 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1459 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1460 :
1461 0 : const GDIMetaFile& GetGDIMetaFile() const { return maMtf; }
1462 0 : const Point& GetPoint() const { return maPoint; }
1463 0 : const Size& GetSize() const { return maSize; }
1464 0 : const Gradient& GetGradient() const { return maGradient; }
1465 : };
1466 :
1467 0 : class VCL_DLLPUBLIC MetaEPSAction : public MetaAction
1468 : {
1469 : private:
1470 :
1471 : GfxLink maGfxLink;
1472 : GDIMetaFile maSubst;
1473 : Point maPoint;
1474 : Size maSize;
1475 :
1476 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1477 :
1478 : public:
1479 : MetaEPSAction();
1480 : protected:
1481 : virtual ~MetaEPSAction();
1482 : public:
1483 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1484 : virtual MetaAction* Clone() SAL_OVERRIDE;
1485 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1486 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1487 :
1488 : MetaEPSAction( const Point& rPoint, const Size& rSize,
1489 : const GfxLink& rGfxLink, const GDIMetaFile& rSubst );
1490 :
1491 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1492 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1493 :
1494 0 : const GfxLink& GetLink() const { return maGfxLink; }
1495 0 : const GDIMetaFile& GetSubstitute() const { return maSubst; }
1496 0 : const Point& GetPoint() const { return maPoint; }
1497 0 : const Size& GetSize() const { return maSize; }
1498 : };
1499 :
1500 0 : class VCL_DLLPUBLIC MetaRefPointAction : public MetaAction
1501 : {
1502 : private:
1503 :
1504 : Point maRefPoint;
1505 : bool mbSet;
1506 :
1507 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1508 :
1509 : public:
1510 : MetaRefPointAction();
1511 : protected:
1512 : virtual ~MetaRefPointAction();
1513 : public:
1514 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1515 : virtual MetaAction* Clone() SAL_OVERRIDE;
1516 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1517 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1518 :
1519 : MetaRefPointAction( const Point& rRefPoint, bool bSet );
1520 :
1521 0 : const Point& GetRefPoint() const { return maRefPoint; }
1522 0 : bool IsSetting() const { return mbSet; }
1523 : };
1524 :
1525 : class VCL_DLLPUBLIC MetaCommentAction : public MetaAction
1526 : {
1527 : private:
1528 :
1529 : OString maComment;
1530 : sal_Int32 mnValue;
1531 : sal_uInt32 mnDataSize;
1532 : sal_uInt8* mpData;
1533 :
1534 : SAL_DLLPRIVATE void ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize );
1535 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1536 :
1537 : protected:
1538 : virtual ~MetaCommentAction();
1539 :
1540 : public:
1541 : explicit MetaCommentAction( sal_Int32 nValue = 0L );
1542 : explicit MetaCommentAction( const MetaCommentAction& rAct );
1543 : explicit MetaCommentAction( const OString& rComment, sal_Int32 nValue = 0L, const sal_uInt8* pData = NULL, sal_uInt32 nDataSize = 0UL );
1544 :
1545 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1546 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1547 :
1548 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1549 : virtual MetaAction* Clone() SAL_OVERRIDE;
1550 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1551 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1552 :
1553 12646 : const OString& GetComment() const { return maComment; }
1554 0 : sal_Int32 GetValue() const { return mnValue; }
1555 120 : sal_uInt32 GetDataSize() const { return mnDataSize; }
1556 120 : const sal_uInt8* GetData() const { return mpData; }
1557 : };
1558 :
1559 0 : class VCL_DLLPUBLIC MetaLayoutModeAction : public MetaAction
1560 : {
1561 : private:
1562 :
1563 : ComplexTextLayoutMode mnLayoutMode;
1564 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1565 :
1566 : public:
1567 : MetaLayoutModeAction();
1568 : protected:
1569 : virtual ~MetaLayoutModeAction();
1570 : public:
1571 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1572 : virtual MetaAction* Clone() SAL_OVERRIDE;
1573 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1574 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1575 :
1576 : explicit MetaLayoutModeAction( ComplexTextLayoutMode nLayoutMode );
1577 :
1578 290 : ComplexTextLayoutMode GetLayoutMode() const { return mnLayoutMode; }
1579 : };
1580 :
1581 54 : class VCL_DLLPUBLIC MetaTextLanguageAction : public MetaAction
1582 : {
1583 : private:
1584 :
1585 : LanguageType meTextLanguage;
1586 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1587 :
1588 : public:
1589 : MetaTextLanguageAction();
1590 : protected:
1591 : virtual ~MetaTextLanguageAction();
1592 : public:
1593 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1594 : virtual MetaAction* Clone() SAL_OVERRIDE;
1595 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1596 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1597 :
1598 : explicit MetaTextLanguageAction( LanguageType );
1599 :
1600 8 : LanguageType GetTextLanguage() const { return meTextLanguage; }
1601 : };
1602 :
1603 : #endif // INCLUDED_VCL_METAACT_HXX
1604 :
1605 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|