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