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 :
38 : class SvStream;
39 :
40 : #define META_NULL_ACTION (0)
41 : #define META_PIXEL_ACTION (100)
42 : #define META_POINT_ACTION (101)
43 : #define META_LINE_ACTION (102)
44 : #define META_RECT_ACTION (103)
45 : #define META_ROUNDRECT_ACTION (104)
46 : #define META_ELLIPSE_ACTION (105)
47 : #define META_ARC_ACTION (106)
48 : #define META_PIE_ACTION (107)
49 : #define META_CHORD_ACTION (108)
50 : #define META_POLYLINE_ACTION (109)
51 : #define META_POLYGON_ACTION (110)
52 : #define META_POLYPOLYGON_ACTION (111)
53 : #define META_TEXT_ACTION (112)
54 : #define META_TEXTARRAY_ACTION (113)
55 : #define META_STRETCHTEXT_ACTION (114)
56 : #define META_TEXTRECT_ACTION (115)
57 : #define META_BMP_ACTION (116)
58 : #define META_BMPSCALE_ACTION (117)
59 : #define META_BMPSCALEPART_ACTION (118)
60 : #define META_BMPEX_ACTION (119)
61 : #define META_BMPEXSCALE_ACTION (120)
62 : #define META_BMPEXSCALEPART_ACTION (121)
63 : #define META_MASK_ACTION (122)
64 : #define META_MASKSCALE_ACTION (123)
65 : #define META_MASKSCALEPART_ACTION (124)
66 : #define META_GRADIENT_ACTION (125)
67 : #define META_HATCH_ACTION (126)
68 : #define META_WALLPAPER_ACTION (127)
69 : #define META_CLIPREGION_ACTION (128)
70 : #define META_ISECTRECTCLIPREGION_ACTION (129)
71 : #define META_ISECTREGIONCLIPREGION_ACTION (130)
72 : #define META_MOVECLIPREGION_ACTION (131)
73 : #define META_LINECOLOR_ACTION (132)
74 : #define META_FILLCOLOR_ACTION (133)
75 : #define META_TEXTCOLOR_ACTION (134)
76 : #define META_TEXTFILLCOLOR_ACTION (135)
77 : #define META_TEXTALIGN_ACTION (136)
78 : #define META_MAPMODE_ACTION (137)
79 : #define META_FONT_ACTION (138)
80 : #define META_PUSH_ACTION (139)
81 : #define META_POP_ACTION (140)
82 : #define META_RASTEROP_ACTION (141)
83 : #define META_TRANSPARENT_ACTION (142)
84 : #define META_EPS_ACTION (143)
85 : #define META_REFPOINT_ACTION (144)
86 : #define META_TEXTLINECOLOR_ACTION (145)
87 : #define META_TEXTLINE_ACTION (146)
88 : #define META_FLOATTRANSPARENT_ACTION (147)
89 : #define META_GRADIENTEX_ACTION (148)
90 : #define META_LAYOUTMODE_ACTION (149)
91 : #define META_TEXTLANGUAGE_ACTION (150)
92 : #define META_OVERLINECOLOR_ACTION (151)
93 :
94 : #define META_COMMENT_ACTION (512)
95 :
96 : struct ImplMetaReadData
97 : {
98 : rtl_TextEncoding meActualCharSet;
99 :
100 0 : ImplMetaReadData() :
101 0 : meActualCharSet( RTL_TEXTENCODING_ASCII_US )
102 : {
103 0 : }
104 : };
105 :
106 : struct ImplMetaWriteData
107 : {
108 : rtl_TextEncoding meActualCharSet;
109 :
110 0 : ImplMetaWriteData() :
111 0 : meActualCharSet( RTL_TEXTENCODING_ASCII_US )
112 : {
113 0 : }
114 : };
115 :
116 : #define DECL_META_ACTION( Name, nType ) \
117 : Meta##Name##Action(); \
118 : protected: \
119 : virtual ~Meta##Name##Action(); \
120 : public: \
121 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE; \
122 : virtual MetaAction* Clone() SAL_OVERRIDE; \
123 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE; \
124 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
125 :
126 : #define IMPL_META_ACTION( Name, nType ) \
127 : Meta##Name##Action::Meta##Name##Action() : \
128 : MetaAction( nType ) {} \
129 : Meta##Name##Action::~Meta##Name##Action() {}
130 :
131 0 : class VCL_DLLPUBLIC MetaAction
132 : {
133 : private:
134 : sal_uLong mnRefCount;
135 : sal_uInt16 mnType;
136 :
137 : virtual bool Compare( const MetaAction& ) const;
138 :
139 : protected:
140 : virtual ~MetaAction();
141 :
142 : public:
143 : MetaAction();
144 : explicit MetaAction( sal_uInt16 nType );
145 :
146 : virtual void Execute( OutputDevice* pOut );
147 :
148 : virtual MetaAction* Clone();
149 :
150 : virtual void Move( long nHorzMove, long nVertMove );
151 : virtual void Scale( double fScaleX, double fScaleY );
152 :
153 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData );
154 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData );
155 :
156 0 : sal_uInt16 GetType() const { return mnType; }
157 0 : sal_uLong GetRefCount() const { return mnRefCount; }
158 0 : void ResetRefCount() { mnRefCount = 1; }
159 0 : void Duplicate() { mnRefCount++; }
160 0 : void Delete() { if ( 0 == --mnRefCount ) delete this; }
161 :
162 : public:
163 : static MetaAction* ReadMetaAction( SvStream& rIStm, ImplMetaReadData* pData );
164 : };
165 :
166 0 : class VCL_DLLPUBLIC MetaPixelAction : public MetaAction
167 : {
168 : private:
169 : Point maPt;
170 : Color maColor;
171 :
172 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
173 :
174 : public:
175 : DECL_META_ACTION( Pixel, META_PIXEL_ACTION )
176 :
177 : MetaPixelAction( const Point& rPt, const Color& rColor );
178 :
179 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
180 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
181 :
182 0 : const Point& GetPoint() const { return maPt; }
183 0 : const Color& GetColor() const { return maColor; }
184 : };
185 :
186 0 : class VCL_DLLPUBLIC MetaPointAction : public MetaAction
187 : {
188 : private:
189 : Point maPt;
190 :
191 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
192 :
193 : public:
194 : DECL_META_ACTION( Point, META_POINT_ACTION )
195 :
196 : explicit MetaPointAction( const Point& );
197 :
198 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
199 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
200 :
201 0 : const Point& GetPoint() const { return maPt; }
202 : };
203 :
204 0 : class VCL_DLLPUBLIC MetaLineAction : public MetaAction
205 : {
206 : private:
207 :
208 : LineInfo maLineInfo;
209 : Point maStartPt;
210 : Point maEndPt;
211 :
212 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
213 :
214 : public:
215 : DECL_META_ACTION( Line, META_LINE_ACTION )
216 :
217 : MetaLineAction( const Point& rStart, const Point& rEnd );
218 : MetaLineAction( const Point& rStart, const Point& rEnd,
219 : const LineInfo& rLineInfo );
220 :
221 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
222 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
223 :
224 0 : const Point& GetStartPoint() const { return maStartPt; }
225 0 : const Point& GetEndPoint() const { return maEndPt; }
226 0 : const LineInfo& GetLineInfo() const { return maLineInfo; }
227 : };
228 :
229 0 : class VCL_DLLPUBLIC MetaRectAction : public MetaAction
230 : {
231 : private:
232 :
233 : Rectangle maRect;
234 :
235 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
236 : public:
237 : DECL_META_ACTION( Rect, META_RECT_ACTION )
238 :
239 : explicit MetaRectAction( const Rectangle& );
240 :
241 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
242 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
243 :
244 0 : const Rectangle& GetRect() const { return maRect; }
245 : };
246 :
247 0 : class VCL_DLLPUBLIC MetaRoundRectAction : public MetaAction
248 : {
249 : private:
250 :
251 : Rectangle maRect;
252 : sal_uInt32 mnHorzRound;
253 : sal_uInt32 mnVertRound;
254 :
255 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
256 :
257 : public:
258 : DECL_META_ACTION( RoundRect, META_ROUNDRECT_ACTION )
259 :
260 : MetaRoundRectAction( const Rectangle& rRect,
261 : sal_uInt32 nHorzRound, sal_uInt32 nVertRound );
262 :
263 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
264 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
265 :
266 0 : const Rectangle& GetRect() const { return maRect; }
267 0 : sal_uInt32 GetHorzRound() const { return mnHorzRound; }
268 0 : sal_uInt32 GetVertRound() const { return mnVertRound; }
269 : };
270 :
271 0 : class VCL_DLLPUBLIC MetaEllipseAction : public MetaAction
272 : {
273 : private:
274 :
275 : Rectangle maRect;
276 :
277 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
278 :
279 : public:
280 : DECL_META_ACTION( Ellipse, META_ELLIPSE_ACTION )
281 :
282 : explicit MetaEllipseAction( const Rectangle& );
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 : };
289 :
290 0 : class VCL_DLLPUBLIC MetaArcAction : public MetaAction
291 : {
292 : private:
293 :
294 : Rectangle maRect;
295 : Point maStartPt;
296 : Point maEndPt;
297 :
298 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
299 :
300 : public:
301 : DECL_META_ACTION( Arc, META_ARC_ACTION )
302 :
303 : MetaArcAction( const Rectangle& rRect,
304 : const Point& rStart, const Point& rEnd );
305 :
306 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
307 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
308 :
309 0 : const Rectangle& GetRect() const { return maRect; }
310 0 : const Point& GetStartPoint() const { return maStartPt; }
311 0 : const Point& GetEndPoint() const { return maEndPt; }
312 : };
313 :
314 0 : class VCL_DLLPUBLIC MetaPieAction : public MetaAction
315 : {
316 : private:
317 :
318 : Rectangle maRect;
319 : Point maStartPt;
320 : Point maEndPt;
321 :
322 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
323 :
324 : public:
325 : DECL_META_ACTION( Pie, META_PIE_ACTION )
326 :
327 : MetaPieAction( const Rectangle& rRect,
328 : const Point& rStart, const Point& rEnd );
329 :
330 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
331 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
332 :
333 0 : const Rectangle& GetRect() const { return maRect; }
334 0 : const Point& GetStartPoint() const { return maStartPt; }
335 0 : const Point& GetEndPoint() const { return maEndPt; }
336 : };
337 :
338 0 : class VCL_DLLPUBLIC MetaChordAction : public MetaAction
339 : {
340 : private:
341 :
342 : Rectangle maRect;
343 : Point maStartPt;
344 : Point maEndPt;
345 :
346 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
347 :
348 : public:
349 : DECL_META_ACTION( Chord, META_CHORD_ACTION )
350 :
351 : MetaChordAction( const Rectangle& rRect,
352 : const Point& rStart, const Point& rEnd );
353 :
354 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
355 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
356 :
357 0 : const Rectangle& GetRect() const { return maRect; }
358 0 : const Point& GetStartPoint() const { return maStartPt; }
359 0 : const Point& GetEndPoint() const { return maEndPt; }
360 : };
361 :
362 0 : class VCL_DLLPUBLIC MetaPolyLineAction : public MetaAction
363 : {
364 : private:
365 :
366 : LineInfo maLineInfo;
367 : Polygon maPoly;
368 :
369 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
370 :
371 : public:
372 : DECL_META_ACTION( PolyLine, META_POLYLINE_ACTION )
373 :
374 : explicit MetaPolyLineAction( const Polygon& );
375 : explicit MetaPolyLineAction( const Polygon&, const LineInfo& );
376 :
377 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
378 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
379 :
380 0 : const Polygon& GetPolygon() const { return maPoly; }
381 0 : const LineInfo& GetLineInfo() const { return maLineInfo; }
382 : };
383 :
384 0 : class VCL_DLLPUBLIC MetaPolygonAction : public MetaAction
385 : {
386 : private:
387 :
388 : Polygon maPoly;
389 :
390 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
391 :
392 : public:
393 : DECL_META_ACTION( Polygon, META_POLYGON_ACTION )
394 :
395 : explicit MetaPolygonAction( const Polygon& );
396 :
397 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
398 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
399 :
400 0 : const Polygon& GetPolygon() const { return maPoly; }
401 : };
402 :
403 0 : class VCL_DLLPUBLIC MetaPolyPolygonAction : public MetaAction
404 : {
405 : private:
406 :
407 : PolyPolygon maPolyPoly;
408 :
409 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
410 :
411 : public:
412 : DECL_META_ACTION( PolyPolygon, META_POLYPOLYGON_ACTION )
413 :
414 : explicit MetaPolyPolygonAction( const PolyPolygon& );
415 :
416 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
417 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
418 :
419 0 : const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
420 : };
421 :
422 0 : class VCL_DLLPUBLIC MetaTextAction : public MetaAction
423 : {
424 : private:
425 :
426 : Point maPt;
427 : OUString maStr;
428 : sal_Int32 mnIndex;
429 : sal_Int32 mnLen;
430 :
431 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
432 :
433 : public:
434 : DECL_META_ACTION( Text, META_TEXT_ACTION )
435 :
436 : MetaTextAction( const Point& rPt, const OUString& rStr,
437 : sal_Int32 nIndex, sal_Int32 nLen );
438 :
439 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
440 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
441 :
442 0 : const Point& GetPoint() const { return maPt; }
443 0 : const OUString& GetText() const { return maStr; }
444 0 : sal_Int32 GetIndex() const { return mnIndex; }
445 0 : sal_Int32 GetLen() const { return mnLen; }
446 : };
447 :
448 : class VCL_DLLPUBLIC MetaTextArrayAction : public MetaAction
449 : {
450 : private:
451 :
452 : Point maStartPt;
453 : OUString maStr;
454 : sal_Int32* mpDXAry;
455 : sal_Int32 mnIndex;
456 : sal_Int32 mnLen;
457 :
458 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
459 :
460 : protected:
461 : virtual ~MetaTextArrayAction();
462 :
463 : public:
464 : MetaTextArrayAction();
465 : MetaTextArrayAction( const MetaTextArrayAction& rAction );
466 : MetaTextArrayAction( const Point& rStartPt, const OUString& rStr,
467 : const sal_Int32* pDXAry, sal_Int32 nIndex,
468 : sal_Int32 nLen );
469 :
470 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
471 :
472 : virtual MetaAction* Clone() SAL_OVERRIDE;
473 :
474 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
475 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
476 :
477 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
478 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
479 :
480 0 : const Point& GetPoint() const { return maStartPt; }
481 0 : const OUString& GetText() const { return maStr; }
482 0 : sal_Int32 GetIndex() const { return mnIndex; }
483 0 : sal_Int32 GetLen() const { return mnLen; }
484 0 : sal_Int32* GetDXArray() const { return mpDXAry; }
485 : };
486 :
487 0 : class VCL_DLLPUBLIC MetaStretchTextAction : public MetaAction
488 : {
489 : private:
490 :
491 : Point maPt;
492 : OUString maStr;
493 : sal_uInt32 mnWidth;
494 : sal_Int32 mnIndex;
495 : sal_Int32 mnLen;
496 :
497 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
498 :
499 : public:
500 : DECL_META_ACTION( StretchText, META_STRETCHTEXT_ACTION )
501 :
502 : MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
503 : const OUString& rStr,
504 : sal_Int32 nIndex, sal_Int32 nLen );
505 :
506 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
507 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
508 :
509 0 : const Point& GetPoint() const { return maPt; }
510 0 : const OUString& GetText() const { return maStr; }
511 0 : sal_uInt32 GetWidth() const { return mnWidth; }
512 0 : sal_Int32 GetIndex() const { return mnIndex; }
513 0 : sal_Int32 GetLen() const { return mnLen; }
514 : };
515 :
516 0 : class VCL_DLLPUBLIC MetaTextRectAction : public MetaAction
517 : {
518 : private:
519 :
520 : Rectangle maRect;
521 : OUString maStr;
522 : sal_uInt16 mnStyle;
523 :
524 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
525 :
526 : public:
527 : DECL_META_ACTION( TextRect, META_TEXTRECT_ACTION )
528 :
529 : MetaTextRectAction( const Rectangle& rRect,
530 : const OUString& rStr, sal_uInt16 nStyle );
531 :
532 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
533 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
534 :
535 0 : const Rectangle& GetRect() const { return maRect; }
536 0 : const OUString& GetText() const { return maStr; }
537 0 : sal_uInt16 GetStyle() const { return mnStyle; }
538 : };
539 :
540 0 : class VCL_DLLPUBLIC MetaTextLineAction : public MetaAction
541 : {
542 : private:
543 :
544 : Point maPos;
545 : long mnWidth;
546 : FontStrikeout meStrikeout;
547 : FontUnderline meUnderline;
548 : FontUnderline meOverline;
549 :
550 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
551 :
552 : public:
553 : DECL_META_ACTION( TextLine, META_TEXTLINE_ACTION )
554 :
555 : MetaTextLineAction( const Point& rPos, long nWidth,
556 : FontStrikeout eStrikeout,
557 : FontUnderline eUnderline,
558 : FontUnderline eOverline );
559 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
560 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
561 :
562 0 : const Point& GetStartPoint() const { return maPos; }
563 0 : long GetWidth() const { return mnWidth; }
564 0 : FontStrikeout GetStrikeout() const { return meStrikeout; }
565 0 : FontUnderline GetUnderline() const { return meUnderline; }
566 0 : FontUnderline GetOverline() const { return meOverline; }
567 : };
568 :
569 0 : class VCL_DLLPUBLIC MetaBmpAction : public MetaAction
570 : {
571 : private:
572 :
573 : Bitmap maBmp;
574 : Point maPt;
575 :
576 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
577 :
578 : public:
579 : DECL_META_ACTION( Bmp, META_BMP_ACTION )
580 :
581 : MetaBmpAction( const Point& rPt, const Bitmap& rBmp );
582 :
583 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
584 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
585 :
586 0 : const Bitmap& GetBitmap() const { return maBmp; }
587 0 : const Point& GetPoint() const { return maPt; }
588 : };
589 :
590 0 : class VCL_DLLPUBLIC MetaBmpScaleAction : public MetaAction
591 : {
592 : private:
593 :
594 : Bitmap maBmp;
595 : Point maPt;
596 : Size maSz;
597 :
598 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
599 :
600 : public:
601 : DECL_META_ACTION( BmpScale, META_BMPSCALE_ACTION )
602 :
603 : MetaBmpScaleAction( const Point& rPt, const Size& rSz,
604 : const Bitmap& rBmp );
605 :
606 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
607 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
608 :
609 0 : const Bitmap& GetBitmap() const { return maBmp; }
610 0 : const Point& GetPoint() const { return maPt; }
611 0 : const Size& GetSize() const { return maSz; }
612 : };
613 :
614 0 : class VCL_DLLPUBLIC MetaBmpScalePartAction : public MetaAction
615 : {
616 : private:
617 :
618 : Bitmap maBmp;
619 : Point maDstPt;
620 : Size maDstSz;
621 : Point maSrcPt;
622 : Size maSrcSz;
623 :
624 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
625 :
626 : public:
627 : DECL_META_ACTION( BmpScalePart, META_BMPSCALEPART_ACTION )
628 :
629 : MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
630 : const Point& rSrcPt, const Size& rSrcSz,
631 : const Bitmap& rBmp );
632 :
633 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
634 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
635 :
636 0 : const Bitmap& GetBitmap() const { return maBmp; }
637 0 : const Point& GetDestPoint() const { return maDstPt; }
638 0 : const Size& GetDestSize() const { return maDstSz; }
639 0 : const Point& GetSrcPoint() const { return maSrcPt; }
640 0 : const Size& GetSrcSize() const { return maSrcSz; }
641 : };
642 :
643 0 : class VCL_DLLPUBLIC MetaBmpExAction : public MetaAction
644 : {
645 : private:
646 :
647 : BitmapEx maBmpEx;
648 : Point maPt;
649 :
650 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
651 :
652 : public:
653 : DECL_META_ACTION( BmpEx, META_BMPEX_ACTION )
654 :
655 : MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx );
656 :
657 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
658 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
659 :
660 0 : const BitmapEx& GetBitmapEx() const { return maBmpEx; }
661 0 : const Point& GetPoint() const { return maPt; }
662 : };
663 :
664 0 : class VCL_DLLPUBLIC MetaBmpExScaleAction : public MetaAction
665 : {
666 : private:
667 :
668 : BitmapEx maBmpEx;
669 : Point maPt;
670 : Size maSz;
671 :
672 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
673 :
674 : public:
675 : DECL_META_ACTION( BmpExScale, META_BMPEXSCALE_ACTION )
676 :
677 : MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
678 : const BitmapEx& rBmpEx ) ;
679 :
680 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
681 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
682 :
683 0 : const BitmapEx& GetBitmapEx() const { return maBmpEx; }
684 0 : const Point& GetPoint() const { return maPt; }
685 0 : const Size& GetSize() const { return maSz; }
686 : };
687 :
688 0 : class VCL_DLLPUBLIC MetaBmpExScalePartAction : public MetaAction
689 : {
690 : private:
691 :
692 : BitmapEx maBmpEx;
693 : Point maDstPt;
694 : Size maDstSz;
695 : Point maSrcPt;
696 : Size maSrcSz;
697 :
698 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
699 :
700 : public:
701 : DECL_META_ACTION( BmpExScalePart, META_BMPEXSCALEPART_ACTION )
702 :
703 : MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
704 : const Point& rSrcPt, const Size& rSrcSz,
705 : const BitmapEx& rBmpEx );
706 :
707 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
708 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
709 :
710 0 : const BitmapEx& GetBitmapEx() const { return maBmpEx; }
711 0 : const Point& GetDestPoint() const { return maDstPt; }
712 0 : const Size& GetDestSize() const { return maDstSz; }
713 0 : const Point& GetSrcPoint() const { return maSrcPt; }
714 0 : const Size& GetSrcSize() const { return maSrcSz; }
715 : };
716 :
717 0 : class VCL_DLLPUBLIC MetaMaskAction : public MetaAction
718 : {
719 : private:
720 :
721 : Bitmap maBmp;
722 : Color maColor;
723 : Point maPt;
724 :
725 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
726 :
727 : public:
728 : DECL_META_ACTION( Mask, META_MASK_ACTION )
729 :
730 : MetaMaskAction( const Point& rPt,
731 : const Bitmap& rBmp,
732 : const Color& rColor );
733 :
734 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
735 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
736 :
737 0 : const Bitmap& GetBitmap() const { return maBmp; }
738 0 : const Color& GetColor() const { return maColor; }
739 0 : const Point& GetPoint() const { return maPt; }
740 : };
741 :
742 0 : class VCL_DLLPUBLIC MetaMaskScaleAction : public MetaAction
743 : {
744 : private:
745 :
746 : Bitmap maBmp;
747 : Color maColor;
748 : Point maPt;
749 : Size maSz;
750 :
751 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
752 :
753 : public:
754 : DECL_META_ACTION( MaskScale, META_MASKSCALE_ACTION )
755 :
756 : MetaMaskScaleAction( const Point& rPt, const Size& rSz,
757 : const Bitmap& rBmp,
758 : const Color& rColor );
759 :
760 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
761 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
762 :
763 0 : const Bitmap& GetBitmap() const { return maBmp; }
764 0 : const Color& GetColor() const { return maColor; }
765 0 : const Point& GetPoint() const { return maPt; }
766 0 : const Size& GetSize() const { return maSz; }
767 : };
768 :
769 0 : class VCL_DLLPUBLIC MetaMaskScalePartAction : public MetaAction
770 : {
771 : private:
772 :
773 : Bitmap maBmp;
774 : Color maColor;
775 : Point maDstPt;
776 : Size maDstSz;
777 : Point maSrcPt;
778 : Size maSrcSz;
779 :
780 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
781 :
782 : public:
783 : DECL_META_ACTION( MaskScalePart, META_MASKSCALEPART_ACTION )
784 :
785 : MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
786 : const Point& rSrcPt, const Size& rSrcSz,
787 : const Bitmap& rBmp,
788 : const Color& rColor );
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 Bitmap& GetBitmap() const { return maBmp; }
794 0 : const Color& GetColor() const { return maColor; }
795 0 : const Point& GetDestPoint() const { return maDstPt; }
796 0 : const Size& GetDestSize() const { return maDstSz; }
797 0 : const Point& GetSrcPoint() const { return maSrcPt; }
798 0 : const Size& GetSrcSize() const { return maSrcSz; }
799 : };
800 :
801 0 : class VCL_DLLPUBLIC MetaGradientAction : public MetaAction
802 : {
803 : private:
804 :
805 : Rectangle maRect;
806 : Gradient maGradient;
807 :
808 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
809 :
810 : public:
811 : DECL_META_ACTION( Gradient, META_GRADIENT_ACTION )
812 :
813 : MetaGradientAction( const Rectangle& rRect, const Gradient& rGradient );
814 :
815 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
816 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
817 :
818 0 : const Rectangle& GetRect() const { return maRect; }
819 0 : const Gradient& GetGradient() const { return maGradient; }
820 : };
821 :
822 0 : class VCL_DLLPUBLIC MetaGradientExAction : public MetaAction
823 : {
824 : private:
825 :
826 : PolyPolygon maPolyPoly;
827 : Gradient maGradient;
828 :
829 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
830 :
831 : public:
832 : DECL_META_ACTION( GradientEx, META_GRADIENTEX_ACTION )
833 :
834 : MetaGradientExAction( const PolyPolygon& rPolyPoly, const Gradient& rGradient );
835 :
836 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
837 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
838 :
839 0 : const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
840 0 : const Gradient& GetGradient() const { return maGradient; }
841 : };
842 :
843 0 : class VCL_DLLPUBLIC MetaHatchAction : public MetaAction
844 : {
845 : private:
846 :
847 : PolyPolygon maPolyPoly;
848 : Hatch maHatch;
849 :
850 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
851 :
852 : public:
853 : DECL_META_ACTION( Hatch, META_HATCH_ACTION )
854 :
855 : MetaHatchAction( const PolyPolygon& rPolyPoly, const Hatch& rHatch );
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 PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
861 0 : const Hatch& GetHatch() const { return maHatch; }
862 : };
863 :
864 0 : class VCL_DLLPUBLIC MetaWallpaperAction : public MetaAction
865 : {
866 : private:
867 :
868 : Rectangle maRect;
869 : Wallpaper maWallpaper;
870 :
871 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
872 :
873 : public:
874 : DECL_META_ACTION( Wallpaper, META_WALLPAPER_ACTION )
875 :
876 : MetaWallpaperAction( const Rectangle& rRect,
877 : const Wallpaper& rPaper );
878 :
879 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
880 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
881 :
882 0 : const Rectangle& GetRect() const { return maRect; }
883 0 : const Wallpaper& GetWallpaper() const { return maWallpaper; }
884 : };
885 :
886 0 : class VCL_DLLPUBLIC MetaClipRegionAction : public MetaAction
887 : {
888 : private:
889 :
890 : Region maRegion;
891 : bool mbClip;
892 :
893 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
894 :
895 : public:
896 : DECL_META_ACTION( ClipRegion, META_CLIPREGION_ACTION )
897 :
898 : MetaClipRegionAction( const Region& rRegion, bool bClip );
899 :
900 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
901 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
902 :
903 0 : const Region& GetRegion() const { return maRegion; }
904 0 : bool IsClipping() const { return mbClip; }
905 : };
906 :
907 0 : class VCL_DLLPUBLIC MetaISectRectClipRegionAction : public MetaAction
908 : {
909 : private:
910 :
911 : Rectangle maRect;
912 :
913 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
914 :
915 : public:
916 : DECL_META_ACTION( ISectRectClipRegion, META_ISECTRECTCLIPREGION_ACTION )
917 :
918 : explicit MetaISectRectClipRegionAction( const Rectangle& );
919 :
920 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
921 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
922 :
923 0 : const Rectangle& GetRect() const { return maRect; }
924 : };
925 :
926 0 : class VCL_DLLPUBLIC MetaISectRegionClipRegionAction : public MetaAction
927 : {
928 : private:
929 :
930 : Region maRegion;
931 :
932 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
933 :
934 : public:
935 : DECL_META_ACTION( ISectRegionClipRegion, META_ISECTREGIONCLIPREGION_ACTION )
936 :
937 : explicit MetaISectRegionClipRegionAction( const Region& );
938 :
939 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
940 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
941 :
942 0 : const Region& GetRegion() const { return maRegion; }
943 : };
944 :
945 0 : class VCL_DLLPUBLIC MetaMoveClipRegionAction : public MetaAction
946 : {
947 : private:
948 :
949 : long mnHorzMove;
950 : long mnVertMove;
951 :
952 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
953 :
954 : public:
955 : DECL_META_ACTION( MoveClipRegion, META_MOVECLIPREGION_ACTION )
956 :
957 : MetaMoveClipRegionAction( long nHorzMove, long nVertMove );
958 :
959 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
960 :
961 0 : long GetHorzMove() const { return mnHorzMove; }
962 0 : long GetVertMove() const { return mnVertMove; }
963 : };
964 :
965 0 : class VCL_DLLPUBLIC MetaLineColorAction : public MetaAction
966 : {
967 : private:
968 :
969 : Color maColor;
970 : bool mbSet;
971 :
972 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
973 :
974 : public:
975 : DECL_META_ACTION( LineColor, META_LINECOLOR_ACTION )
976 :
977 : MetaLineColorAction( const Color& rColor, bool bSet );
978 :
979 0 : const Color& GetColor() const { return maColor; }
980 0 : bool IsSetting() const { return mbSet; }
981 : };
982 :
983 0 : class VCL_DLLPUBLIC MetaFillColorAction : public MetaAction
984 : {
985 : private:
986 :
987 : Color maColor;
988 : bool mbSet;
989 :
990 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
991 :
992 : public:
993 : DECL_META_ACTION( FillColor, META_FILLCOLOR_ACTION )
994 :
995 : MetaFillColorAction( const Color& rColor, bool bSet );
996 :
997 0 : const Color& GetColor() const { return maColor; }
998 0 : bool IsSetting() const { return mbSet; }
999 : };
1000 :
1001 0 : class VCL_DLLPUBLIC MetaTextColorAction : public MetaAction
1002 : {
1003 : private:
1004 :
1005 : Color maColor;
1006 :
1007 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1008 :
1009 : public:
1010 : DECL_META_ACTION( TextColor, META_TEXTCOLOR_ACTION )
1011 :
1012 : explicit MetaTextColorAction( const Color& );
1013 :
1014 0 : const Color& GetColor() const { return maColor; }
1015 : };
1016 :
1017 0 : class VCL_DLLPUBLIC MetaTextFillColorAction : public MetaAction
1018 : {
1019 : private:
1020 :
1021 : Color maColor;
1022 : bool mbSet;
1023 :
1024 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1025 :
1026 : public:
1027 : DECL_META_ACTION( TextFillColor, META_TEXTFILLCOLOR_ACTION )
1028 :
1029 : MetaTextFillColorAction( const Color& rColor, bool bSet );
1030 :
1031 0 : const Color& GetColor() const { return maColor; }
1032 0 : bool IsSetting() const { return mbSet; }
1033 : };
1034 :
1035 0 : class VCL_DLLPUBLIC MetaTextLineColorAction : public MetaAction
1036 : {
1037 : private:
1038 :
1039 : Color maColor;
1040 : bool mbSet;
1041 :
1042 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1043 :
1044 : public:
1045 : DECL_META_ACTION( TextLineColor, META_TEXTLINECOLOR_ACTION )
1046 :
1047 : MetaTextLineColorAction( const Color& rColor, bool bSet );
1048 :
1049 0 : const Color& GetColor() const { return maColor; }
1050 0 : bool IsSetting() const { return mbSet; }
1051 : };
1052 :
1053 0 : class VCL_DLLPUBLIC MetaOverlineColorAction : public MetaAction
1054 : {
1055 : private:
1056 :
1057 : Color maColor;
1058 : bool mbSet;
1059 :
1060 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1061 :
1062 : public:
1063 : DECL_META_ACTION( OverlineColor, META_OVERLINECOLOR_ACTION )
1064 :
1065 : MetaOverlineColorAction( const Color& rColor, bool bSet );
1066 :
1067 0 : const Color& GetColor() const { return maColor; }
1068 0 : bool IsSetting() const { return mbSet; }
1069 : };
1070 :
1071 0 : class VCL_DLLPUBLIC MetaTextAlignAction : public MetaAction
1072 : {
1073 : private:
1074 :
1075 : TextAlign maAlign;
1076 :
1077 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1078 :
1079 : public:
1080 : DECL_META_ACTION( TextAlign, META_TEXTALIGN_ACTION )
1081 :
1082 : explicit MetaTextAlignAction( TextAlign eAlign );
1083 :
1084 0 : TextAlign GetTextAlign() const { return maAlign; }
1085 : };
1086 :
1087 0 : class VCL_DLLPUBLIC MetaMapModeAction : public MetaAction
1088 : {
1089 : private:
1090 :
1091 : MapMode maMapMode;
1092 :
1093 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1094 :
1095 : public:
1096 : DECL_META_ACTION( MapMode, META_MAPMODE_ACTION )
1097 :
1098 : explicit MetaMapModeAction( const MapMode& );
1099 :
1100 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1101 :
1102 0 : const MapMode& GetMapMode() const { return maMapMode; }
1103 : };
1104 :
1105 0 : class VCL_DLLPUBLIC MetaFontAction : public MetaAction
1106 : {
1107 : private:
1108 :
1109 : Font maFont;
1110 :
1111 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1112 :
1113 : public:
1114 : DECL_META_ACTION( Font, META_FONT_ACTION )
1115 :
1116 : explicit MetaFontAction( const Font& );
1117 :
1118 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1119 :
1120 0 : const Font& GetFont() const { return maFont; }
1121 : };
1122 :
1123 0 : class VCL_DLLPUBLIC MetaPushAction : public MetaAction
1124 : {
1125 : private:
1126 :
1127 : sal_uInt16 mnFlags;
1128 :
1129 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1130 :
1131 : public:
1132 : DECL_META_ACTION( Push, META_PUSH_ACTION )
1133 :
1134 : explicit MetaPushAction( sal_uInt16 nFlags );
1135 :
1136 0 : sal_uInt16 GetFlags() const { return mnFlags; }
1137 : };
1138 :
1139 0 : class VCL_DLLPUBLIC MetaPopAction : public MetaAction
1140 : {
1141 : public:
1142 :
1143 : DECL_META_ACTION( Pop, META_POP_ACTION )
1144 : };
1145 :
1146 0 : class VCL_DLLPUBLIC MetaRasterOpAction : public MetaAction
1147 : {
1148 : private:
1149 :
1150 : RasterOp meRasterOp;
1151 :
1152 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1153 :
1154 : public:
1155 : DECL_META_ACTION( RasterOp, META_RASTEROP_ACTION )
1156 :
1157 : explicit MetaRasterOpAction( RasterOp eRasterOp );
1158 :
1159 0 : RasterOp GetRasterOp() const { return meRasterOp; }
1160 : };
1161 :
1162 0 : class VCL_DLLPUBLIC MetaTransparentAction : public MetaAction
1163 : {
1164 : private:
1165 :
1166 : PolyPolygon maPolyPoly;
1167 : sal_uInt16 mnTransPercent;
1168 :
1169 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1170 :
1171 : public:
1172 : DECL_META_ACTION( Transparent, META_TRANSPARENT_ACTION )
1173 :
1174 : MetaTransparentAction( const PolyPolygon& rPolyPoly, sal_uInt16 nTransPercent );
1175 :
1176 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1177 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1178 :
1179 0 : const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
1180 0 : sal_uInt16 GetTransparence() const { return mnTransPercent; }
1181 : };
1182 :
1183 0 : class VCL_DLLPUBLIC MetaFloatTransparentAction : public MetaAction
1184 : {
1185 : private:
1186 :
1187 : GDIMetaFile maMtf;
1188 : Point maPoint;
1189 : Size maSize;
1190 : Gradient maGradient;
1191 :
1192 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1193 :
1194 : public:
1195 : DECL_META_ACTION( FloatTransparent, META_FLOATTRANSPARENT_ACTION )
1196 :
1197 : MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos,
1198 : const Size& rSize, const Gradient& rGradient );
1199 :
1200 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1201 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1202 :
1203 0 : const GDIMetaFile& GetGDIMetaFile() const { return maMtf; }
1204 0 : const Point& GetPoint() const { return maPoint; }
1205 0 : const Size& GetSize() const { return maSize; }
1206 0 : const Gradient& GetGradient() const { return maGradient; }
1207 : };
1208 :
1209 0 : class VCL_DLLPUBLIC MetaEPSAction : public MetaAction
1210 : {
1211 : private:
1212 :
1213 : GfxLink maGfxLink;
1214 : GDIMetaFile maSubst;
1215 : Point maPoint;
1216 : Size maSize;
1217 :
1218 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1219 :
1220 : public:
1221 : DECL_META_ACTION( EPS, META_EPS_ACTION )
1222 :
1223 : MetaEPSAction( const Point& rPoint, const Size& rSize,
1224 : const GfxLink& rGfxLink, const GDIMetaFile& rSubst );
1225 :
1226 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1227 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1228 :
1229 0 : const GfxLink& GetLink() const { return maGfxLink; }
1230 0 : const GDIMetaFile& GetSubstitute() const { return maSubst; }
1231 0 : const Point& GetPoint() const { return maPoint; }
1232 0 : const Size& GetSize() const { return maSize; }
1233 : };
1234 :
1235 0 : class VCL_DLLPUBLIC MetaRefPointAction : public MetaAction
1236 : {
1237 : private:
1238 :
1239 : Point maRefPoint;
1240 : bool mbSet;
1241 :
1242 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1243 :
1244 : public:
1245 : DECL_META_ACTION( RefPoint, META_REFPOINT_ACTION )
1246 :
1247 : MetaRefPointAction( const Point& rRefPoint, bool bSet );
1248 :
1249 0 : const Point& GetRefPoint() const { return maRefPoint; }
1250 0 : bool IsSetting() const { return mbSet; }
1251 : };
1252 :
1253 : class VCL_DLLPUBLIC MetaCommentAction : public MetaAction
1254 : {
1255 : private:
1256 :
1257 : OString maComment;
1258 : sal_Int32 mnValue;
1259 : sal_uInt32 mnDataSize;
1260 : sal_uInt8* mpData;
1261 :
1262 : SAL_DLLPRIVATE void ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize );
1263 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1264 :
1265 : protected:
1266 : virtual ~MetaCommentAction();
1267 :
1268 : public:
1269 : explicit MetaCommentAction( sal_Int32 nValue = 0L );
1270 : explicit MetaCommentAction( const MetaCommentAction& rAct );
1271 : explicit MetaCommentAction( const OString& rComment, sal_Int32 nValue = 0L, const sal_uInt8* pData = NULL, sal_uInt32 nDataSize = 0UL );
1272 :
1273 : virtual void Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
1274 : virtual void Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
1275 :
1276 : virtual void Execute( OutputDevice* pOut ) SAL_OVERRIDE;
1277 : virtual MetaAction* Clone() SAL_OVERRIDE;
1278 : virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
1279 : virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
1280 :
1281 0 : const OString& GetComment() const { return maComment; }
1282 0 : sal_Int32 GetValue() const { return mnValue; }
1283 0 : sal_uInt32 GetDataSize() const { return mnDataSize; }
1284 0 : const sal_uInt8* GetData() const { return mpData; }
1285 : };
1286 :
1287 0 : class VCL_DLLPUBLIC MetaLayoutModeAction : public MetaAction
1288 : {
1289 : private:
1290 :
1291 : sal_uInt32 mnLayoutMode;
1292 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1293 :
1294 : public:
1295 : DECL_META_ACTION( LayoutMode, META_LAYOUTMODE_ACTION )
1296 :
1297 : explicit MetaLayoutModeAction( sal_uInt32 nLayoutMode );
1298 :
1299 0 : sal_uInt32 GetLayoutMode() const { return mnLayoutMode; }
1300 : };
1301 :
1302 0 : class VCL_DLLPUBLIC MetaTextLanguageAction : public MetaAction
1303 : {
1304 : private:
1305 :
1306 : LanguageType meTextLanguage;
1307 : virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
1308 :
1309 : public:
1310 : DECL_META_ACTION( TextLanguage, META_TEXTLANGUAGE_ACTION )
1311 :
1312 : explicit MetaTextLanguageAction( LanguageType );
1313 :
1314 0 : LanguageType GetTextLanguage() const { return meTextLanguage; }
1315 : };
1316 :
1317 : #endif // INCLUDED_VCL_METAACT_HXX
1318 :
1319 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|