1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_VCL_METAACT_HXX
21 #define INCLUDED_VCL_METAACT_HXX
23 #include <sal/config.h>
25 #include <config_options.h>
27 #include <o3tl/span.hxx>
28 #include <rtl/ref.hxx>
29 #include <salhelper/simplereferenceobject.hxx>
30 #include <tools/poly.hxx>
32 #include <vcl/dllapi.h>
33 #include <vcl/rendercontext/State.hxx>
34 #include <vcl/bitmapex.hxx>
35 #include <vcl/font.hxx>
36 #include <vcl/gdimtf.hxx>
37 #include <vcl/gfxlink.hxx>
38 #include <vcl/gradient.hxx>
39 #include <vcl/hatch.hxx>
40 #include <vcl/kernarray.hxx>
41 #include <vcl/lineinfo.hxx>
42 #include <vcl/metaactiontypes.hxx>
43 #include <vcl/region.hxx>
44 #include <vcl/rendercontext/RasterOp.hxx>
45 #include <vcl/wall.hxx>
46 #include <basegfx/utils/bgradient.hxx>
52 enum class DrawTextFlags
;
54 struct ImplMetaReadData
56 rtl_TextEncoding meActualCharSet
;
60 : meActualCharSet(RTL_TEXTENCODING_ASCII_US
)
65 struct ImplMetaWriteData
67 rtl_TextEncoding meActualCharSet
;
70 meActualCharSet( RTL_TEXTENCODING_ASCII_US
)
74 class VCL_DLLPUBLIC MetaAction
: public salhelper::SimpleReferenceObject
77 MetaActionType mnType
;
80 virtual ~MetaAction() override
;
84 explicit MetaAction( MetaActionType nType
);
85 MetaAction( MetaAction
const & );
87 virtual void Execute( OutputDevice
* pOut
);
89 oslInterlockedCount
GetRefCount() const { return m_nCount
; }
91 virtual rtl::Reference
<MetaAction
> Clone() const;
93 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
);
94 virtual void Scale( double fScaleX
, double fScaleY
);
96 MetaActionType
GetType() const { return mnType
; }
97 /** \#i10613# Extracted from Printer::GetPreparedMetaFile. Returns true
98 if given action requires special transparency handling
100 virtual bool IsTransparent() const { return false; }
103 class VCL_DLLPUBLIC MetaPixelAction final
: public MetaAction
111 MetaPixelAction(MetaPixelAction
const &) = default;
112 MetaPixelAction(MetaPixelAction
&&) = default;
113 MetaPixelAction
& operator =(MetaPixelAction
const &) = delete; // due to MetaAction
114 MetaPixelAction
& operator =(MetaPixelAction
&&) = delete; // due to MetaAction
116 virtual ~MetaPixelAction() override
;
118 virtual void Execute( OutputDevice
* pOut
) override
;
119 virtual rtl::Reference
<MetaAction
> Clone() const override
;
121 MetaPixelAction( const Point
& rPt
, const Color
& rColor
);
123 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
124 virtual void Scale( double fScaleX
, double fScaleY
) override
;
126 const Point
& GetPoint() const { return maPt
; }
127 const Color
& GetColor() const { return maColor
; }
128 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
129 void SetColor(Color rColor
) { maColor
= rColor
; }
132 class VCL_DLLPUBLIC MetaPointAction final
: public MetaAction
139 MetaPointAction(MetaPointAction
const &) = default;
140 MetaPointAction(MetaPointAction
&&) = default;
141 MetaPointAction
& operator =(MetaPointAction
const &) = delete; // due to MetaAction
142 MetaPointAction
& operator =(MetaPointAction
&&) = delete; // due to MetaAction
144 virtual ~MetaPointAction() override
;
146 virtual void Execute( OutputDevice
* pOut
) override
;
147 virtual rtl::Reference
<MetaAction
> Clone() const override
;
149 explicit MetaPointAction( const Point
& );
151 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
152 virtual void Scale( double fScaleX
, double fScaleY
) override
;
154 const Point
& GetPoint() const { return maPt
; }
155 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
158 class VCL_DLLPUBLIC MetaLineAction final
: public MetaAction
168 MetaLineAction(MetaLineAction
const &) = default;
169 MetaLineAction(MetaLineAction
&&) = default;
170 MetaLineAction
& operator =(MetaLineAction
const &) = delete; // due to MetaAction
171 MetaLineAction
& operator =(MetaLineAction
&&) = delete; // due to MetaAction
173 virtual ~MetaLineAction() override
;
175 virtual void Execute( OutputDevice
* pOut
) override
;
176 virtual rtl::Reference
<MetaAction
> Clone() const override
;
178 MetaLineAction( const Point
& rStart
, const Point
& rEnd
);
179 MetaLineAction( const Point
& rStart
, const Point
& rEnd
,
180 LineInfo aLineInfo
);
182 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
183 virtual void Scale( double fScaleX
, double fScaleY
) override
;
185 const Point
& GetStartPoint() const { return maStartPt
; }
186 const Point
& GetEndPoint() const { return maEndPt
; }
187 const LineInfo
& GetLineInfo() const { return maLineInfo
; }
188 void SetStartPoint(const Point
& rPoint
) { maStartPt
= rPoint
; }
189 void SetEndPoint(const Point
& rPoint
) { maEndPt
= rPoint
; }
190 void SetLineInfo(const LineInfo
& rLineInfo
) { maLineInfo
= rLineInfo
; }
193 class VCL_DLLPUBLIC MetaRectAction final
: public MetaAction
197 tools::Rectangle maRect
;
201 MetaRectAction(MetaRectAction
const &) = default;
202 MetaRectAction(MetaRectAction
&&) = default;
203 MetaRectAction
& operator =(MetaRectAction
const &) = delete; // due to MetaAction
204 MetaRectAction
& operator =(MetaRectAction
&&) = delete; // due to MetaAction
206 virtual ~MetaRectAction() override
;
208 virtual void Execute( OutputDevice
* pOut
) override
;
209 virtual rtl::Reference
<MetaAction
> Clone() const override
;
211 explicit MetaRectAction( const tools::Rectangle
& );
213 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
214 virtual void Scale( double fScaleX
, double fScaleY
) override
;
216 const tools::Rectangle
& GetRect() const { return maRect
; }
217 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
220 class VCL_DLLPUBLIC MetaRoundRectAction final
: public MetaAction
224 tools::Rectangle maRect
;
225 sal_uInt32 mnHorzRound
;
226 sal_uInt32 mnVertRound
;
229 MetaRoundRectAction();
230 MetaRoundRectAction(MetaRoundRectAction
const &) = default;
231 MetaRoundRectAction(MetaRoundRectAction
&&) = default;
232 MetaRoundRectAction
& operator =(MetaRoundRectAction
const &) = delete; // due to MetaAction
233 MetaRoundRectAction
& operator =(MetaRoundRectAction
&&) = delete; // due to MetaAction
235 virtual ~MetaRoundRectAction() override
;
237 virtual void Execute( OutputDevice
* pOut
) override
;
238 virtual rtl::Reference
<MetaAction
> Clone() const override
;
240 MetaRoundRectAction( const tools::Rectangle
& rRect
,
241 sal_uInt32 nHorzRound
, sal_uInt32 nVertRound
);
243 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
244 virtual void Scale( double fScaleX
, double fScaleY
) override
;
246 const tools::Rectangle
& GetRect() const { return maRect
; }
247 sal_uInt32
GetHorzRound() const { return mnHorzRound
; }
248 sal_uInt32
GetVertRound() const { return mnVertRound
; }
249 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
250 void SetHorzRound(sal_uInt32 rHorzRound
) { mnHorzRound
= rHorzRound
; }
251 void SetVertRound(sal_uInt32 rVertRound
) { mnVertRound
= rVertRound
; }
254 class VCL_DLLPUBLIC MetaEllipseAction final
: public MetaAction
258 tools::Rectangle maRect
;
262 MetaEllipseAction(MetaEllipseAction
const &) = default;
263 MetaEllipseAction(MetaEllipseAction
&&) = default;
264 MetaEllipseAction
& operator =(MetaEllipseAction
const &) = delete; // due to MetaAction
265 MetaEllipseAction
& operator =(MetaEllipseAction
&&) = delete; // due to MetaAction
267 virtual ~MetaEllipseAction() override
;
269 virtual void Execute( OutputDevice
* pOut
) override
;
270 virtual rtl::Reference
<MetaAction
> Clone() const override
;
272 explicit MetaEllipseAction( const tools::Rectangle
& );
274 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
275 virtual void Scale( double fScaleX
, double fScaleY
) override
;
277 const tools::Rectangle
& GetRect() const { return maRect
; }
278 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
281 class VCL_DLLPUBLIC MetaArcAction final
: public MetaAction
285 tools::Rectangle maRect
;
291 MetaArcAction(MetaArcAction
const &) = default;
292 MetaArcAction(MetaArcAction
&&) = default;
293 MetaArcAction
& operator =(MetaArcAction
const &) = delete; // due to MetaAction
294 MetaArcAction
& operator =(MetaArcAction
&&) = delete; // due to MetaAction
296 virtual ~MetaArcAction() override
;
298 virtual void Execute( OutputDevice
* pOut
) override
;
299 virtual rtl::Reference
<MetaAction
> Clone() const override
;
301 MetaArcAction( const tools::Rectangle
& rRect
,
302 const Point
& rStart
, const Point
& rEnd
);
304 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
305 virtual void Scale( double fScaleX
, double fScaleY
) override
;
307 const tools::Rectangle
& GetRect() const { return maRect
; }
308 const Point
& GetStartPoint() const { return maStartPt
; }
309 const Point
& GetEndPoint() const { return maEndPt
; }
310 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
311 void SetStartPoint(const Point
& rPoint
) { maStartPt
= rPoint
; }
312 void SetEndPoint(const Point
& rPoint
) { maEndPt
= rPoint
; }
315 class VCL_DLLPUBLIC MetaPieAction final
: public MetaAction
319 tools::Rectangle maRect
;
325 MetaPieAction(MetaPieAction
const &) = default;
326 MetaPieAction(MetaPieAction
&&) = default;
327 MetaPieAction
& operator =(MetaPieAction
const &) = delete; // due to MetaAction
328 MetaPieAction
& operator =(MetaPieAction
&&) = delete; // due to MetaAction
330 virtual ~MetaPieAction() override
;
332 virtual void Execute( OutputDevice
* pOut
) override
;
333 virtual rtl::Reference
<MetaAction
> Clone() const override
;
335 MetaPieAction( const tools::Rectangle
& rRect
,
336 const Point
& rStart
, const Point
& rEnd
);
338 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
339 virtual void Scale( double fScaleX
, double fScaleY
) override
;
341 const tools::Rectangle
& GetRect() const { return maRect
; }
342 const Point
& GetStartPoint() const { return maStartPt
; }
343 const Point
& GetEndPoint() const { return maEndPt
; }
344 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
345 void SetStartPoint(const Point
& rPoint
) { maStartPt
= rPoint
; }
346 void SetEndPoint(const Point
& rPoint
) { maEndPt
= rPoint
; }
349 class VCL_DLLPUBLIC MetaChordAction final
: public MetaAction
353 tools::Rectangle maRect
;
359 MetaChordAction(MetaChordAction
const &) = default;
360 MetaChordAction(MetaChordAction
&&) = default;
361 MetaChordAction
& operator =(MetaChordAction
const &) = delete; // due to MetaAction
362 MetaChordAction
& operator =(MetaChordAction
&&) = delete; // due to MetaAction
364 virtual ~MetaChordAction() override
;
366 virtual void Execute( OutputDevice
* pOut
) override
;
367 virtual rtl::Reference
<MetaAction
> Clone() const override
;
369 MetaChordAction( const tools::Rectangle
& rRect
,
370 const Point
& rStart
, const Point
& rEnd
);
372 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
373 virtual void Scale( double fScaleX
, double fScaleY
) override
;
375 const tools::Rectangle
& GetRect() const { return maRect
; }
376 const Point
& GetStartPoint() const { return maStartPt
; }
377 const Point
& GetEndPoint() const { return maEndPt
; }
378 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
379 void SetStartPoint(const Point
& rPoint
) { maStartPt
= rPoint
; }
380 void SetEndPoint(const Point
& rPoint
) { maEndPt
= rPoint
; }
383 class VCL_DLLPUBLIC MetaPolyLineAction final
: public MetaAction
388 tools::Polygon maPoly
;
391 MetaPolyLineAction();
392 MetaPolyLineAction(MetaPolyLineAction
const &) = default;
393 MetaPolyLineAction(MetaPolyLineAction
&&) = default;
394 MetaPolyLineAction
& operator =(MetaPolyLineAction
const &) = delete; // due to MetaAction
395 MetaPolyLineAction
& operator =(MetaPolyLineAction
&&) = delete; // due to MetaAction
397 virtual ~MetaPolyLineAction() override
;
399 virtual void Execute( OutputDevice
* pOut
) override
;
400 virtual rtl::Reference
<MetaAction
> Clone() const override
;
402 explicit MetaPolyLineAction( tools::Polygon
);
403 explicit MetaPolyLineAction( tools::Polygon
, LineInfo
);
405 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
406 virtual void Scale( double fScaleX
, double fScaleY
) override
;
408 const tools::Polygon
& GetPolygon() const { return maPoly
; }
409 const LineInfo
& GetLineInfo() const { return maLineInfo
; }
410 void SetLineInfo(const LineInfo
& rLineInfo
) { maLineInfo
= rLineInfo
; }
411 void SetPolygon(const tools::Polygon
& rPoly
) { maPoly
= rPoly
; }
414 class VCL_DLLPUBLIC MetaPolygonAction final
: public MetaAction
418 tools::Polygon maPoly
;
422 MetaPolygonAction(MetaPolygonAction
const &) = default;
423 MetaPolygonAction(MetaPolygonAction
&&) = default;
424 MetaPolygonAction
& operator =(MetaPolygonAction
const &) = delete; // due to MetaAction
425 MetaPolygonAction
& operator =(MetaPolygonAction
&&) = delete; // due to MetaAction
427 virtual ~MetaPolygonAction() override
;
429 virtual void Execute( OutputDevice
* pOut
) override
;
430 virtual rtl::Reference
<MetaAction
> Clone() const override
;
432 explicit MetaPolygonAction( tools::Polygon
);
434 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
435 virtual void Scale( double fScaleX
, double fScaleY
) override
;
437 const tools::Polygon
& GetPolygon() const { return maPoly
; }
438 void SetPolygon(const tools::Polygon
& rPoly
) { maPoly
= rPoly
; }
441 class VCL_DLLPUBLIC MetaPolyPolygonAction final
: public MetaAction
445 tools::PolyPolygon maPolyPoly
;
448 MetaPolyPolygonAction();
449 MetaPolyPolygonAction(MetaPolyPolygonAction
const &) = default;
450 MetaPolyPolygonAction(MetaPolyPolygonAction
&&) = default;
451 MetaPolyPolygonAction
& operator =(MetaPolyPolygonAction
const &) = delete; // due to MetaAction
452 MetaPolyPolygonAction
& operator =(MetaPolyPolygonAction
&&) = delete; // due to MetaAction
454 virtual ~MetaPolyPolygonAction() override
;
456 virtual void Execute( OutputDevice
* pOut
) override
;
457 virtual rtl::Reference
<MetaAction
> Clone() const override
;
459 explicit MetaPolyPolygonAction( tools::PolyPolygon
);
461 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
462 virtual void Scale( double fScaleX
, double fScaleY
) override
;
464 const tools::PolyPolygon
& GetPolyPolygon() const { return maPolyPoly
; }
465 void SetPolyPolygon(const tools::PolyPolygon
& rPolyPoly
) { maPolyPoly
= rPolyPoly
; }
468 class SAL_DLLPUBLIC_RTTI MetaTextAction final
: public MetaAction
479 MetaTextAction(MetaTextAction
const &) = default;
480 MetaTextAction(MetaTextAction
&&) = default;
481 MetaTextAction
& operator =(MetaTextAction
const &) = delete; // due to MetaAction
482 MetaTextAction
& operator =(MetaTextAction
&&) = delete; // due to MetaAction
484 virtual ~MetaTextAction() override
;
486 virtual void Execute( OutputDevice
* pOut
) override
;
487 virtual rtl::Reference
<MetaAction
> Clone() const override
;
489 MetaTextAction( const Point
& rPt
, OUString aStr
,
490 sal_Int32 nIndex
, sal_Int32 nLen
);
492 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
493 virtual void Scale( double fScaleX
, double fScaleY
) override
;
495 const Point
& GetPoint() const { return maPt
; }
496 const OUString
& GetText() const { return maStr
; }
497 sal_Int32
GetIndex() const { return mnIndex
; }
498 sal_Int32
GetLen() const { return mnLen
; }
499 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
500 void SetText(const OUString
& rStr
) { maStr
= rStr
; }
501 void SetIndex(sal_Int32 rIndex
) { mnIndex
= rIndex
; }
502 void SetLen(sal_Int32 rLen
) { mnLen
= rLen
; }
505 class VCL_DLLPUBLIC MetaTextArrayAction final
: public MetaAction
512 std::vector
<sal_Bool
> maKashidaAry
;
516 virtual ~MetaTextArrayAction() override
;
519 MetaTextArrayAction();
520 MetaTextArrayAction( const MetaTextArrayAction
& rAction
);
521 MetaTextArrayAction( const Point
& rStartPt
, OUString aStr
,
523 std::vector
<sal_Bool
> pKashidaAry
,
526 MetaTextArrayAction( const Point
& rStartPt
, OUString aStr
,
527 KernArraySpan pDXAry
,
528 o3tl::span
<const sal_Bool
> pKashidaAry
,
532 virtual void Execute( OutputDevice
* pOut
) override
;
534 virtual rtl::Reference
<MetaAction
> Clone() const override
;
536 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
537 virtual void Scale( double fScaleX
, double fScaleY
) override
;
539 const Point
& GetPoint() const { return maStartPt
; }
540 const OUString
& GetText() const { return maStr
; }
541 sal_Int32
GetIndex() const { return mnIndex
; }
542 sal_Int32
GetLen() const { return mnLen
; }
543 const KernArray
& GetDXArray() const { return maDXAry
; }
544 const std::vector
<sal_Bool
> & GetKashidaArray() const { return maKashidaAry
; }
545 void SetPoint(const Point
& rPt
) { maStartPt
= rPt
; }
546 void SetText(const OUString
& rStr
) { maStr
= rStr
; }
547 void SetIndex(sal_Int32 rIndex
) { mnIndex
= rIndex
; }
548 void SetLen(sal_Int32 rLen
) { mnLen
= rLen
; }
549 void SetDXArray(KernArray aArray
);
550 void SetKashidaArray(std::vector
<sal_Bool
> aArray
);
553 class SAL_DLLPUBLIC_RTTI MetaStretchTextAction final
: public MetaAction
564 MetaStretchTextAction();
565 MetaStretchTextAction(MetaStretchTextAction
const &) = default;
566 MetaStretchTextAction(MetaStretchTextAction
&&) = default;
567 MetaStretchTextAction
& operator =(MetaStretchTextAction
const &) = delete; // due to MetaAction
568 MetaStretchTextAction
& operator =(MetaStretchTextAction
&&) = delete; // due to MetaAction
570 virtual ~MetaStretchTextAction() override
;
572 virtual void Execute( OutputDevice
* pOut
) override
;
573 virtual rtl::Reference
<MetaAction
> Clone() const override
;
575 MetaStretchTextAction( const Point
& rPt
, sal_uInt32 nWidth
,
577 sal_Int32 nIndex
, sal_Int32 nLen
);
579 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
580 virtual void Scale( double fScaleX
, double fScaleY
) override
;
582 const Point
& GetPoint() const { return maPt
; }
583 const OUString
& GetText() const { return maStr
; }
584 sal_uInt32
GetWidth() const { return mnWidth
; }
585 sal_Int32
GetIndex() const { return mnIndex
; }
586 sal_Int32
GetLen() const { return mnLen
; }
587 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
588 void SetText(const OUString
& rStr
) { maStr
= rStr
; }
589 void SetWidth(sal_uInt32 rWidth
) { mnWidth
= rWidth
; }
590 void SetIndex(sal_uInt32 rIndex
) { mnIndex
= rIndex
; }
591 void SetLen(sal_uInt32 rLen
) { mnLen
= rLen
; }
594 class SAL_DLLPUBLIC_RTTI MetaTextRectAction final
: public MetaAction
598 tools::Rectangle maRect
;
600 DrawTextFlags mnStyle
;
603 MetaTextRectAction();
604 MetaTextRectAction(MetaTextRectAction
const &) = default;
605 MetaTextRectAction(MetaTextRectAction
&&) = default;
606 MetaTextRectAction
& operator =(MetaTextRectAction
const &) = delete; // due to MetaAction
607 MetaTextRectAction
& operator =(MetaTextRectAction
&&) = delete; // due to MetaAction
609 virtual ~MetaTextRectAction() override
;
611 virtual void Execute( OutputDevice
* pOut
) override
;
612 virtual rtl::Reference
<MetaAction
> Clone() const override
;
614 MetaTextRectAction( const tools::Rectangle
& rRect
,
615 OUString aStr
, DrawTextFlags nStyle
);
617 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
618 virtual void Scale( double fScaleX
, double fScaleY
) override
;
620 const tools::Rectangle
& GetRect() const { return maRect
; }
621 const OUString
& GetText() const { return maStr
; }
622 DrawTextFlags
GetStyle() const { return mnStyle
; }
623 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
624 void SetText(const OUString
& rStr
) { maStr
= rStr
; }
625 void SetStyle(DrawTextFlags rStyle
) { mnStyle
= rStyle
; }
628 class SAL_DLLPUBLIC_RTTI MetaTextLineAction final
: public MetaAction
634 FontStrikeout meStrikeout
;
635 FontLineStyle meUnderline
;
636 FontLineStyle meOverline
;
639 MetaTextLineAction();
640 MetaTextLineAction(MetaTextLineAction
const &) = default;
641 MetaTextLineAction(MetaTextLineAction
&&) = default;
642 MetaTextLineAction
& operator =(MetaTextLineAction
const &) = delete; // due to MetaAction
643 MetaTextLineAction
& operator =(MetaTextLineAction
&&) = delete; // due to MetaAction
645 virtual ~MetaTextLineAction() override
;
647 virtual void Execute( OutputDevice
* pOut
) override
;
648 virtual rtl::Reference
<MetaAction
> Clone() const override
;
650 MetaTextLineAction( const Point
& rPos
, tools::Long nWidth
,
651 FontStrikeout eStrikeout
,
652 FontLineStyle eUnderline
,
653 FontLineStyle eOverline
);
654 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
655 virtual void Scale( double fScaleX
, double fScaleY
) override
;
657 const Point
& GetStartPoint() const { return maPos
; }
658 tools::Long
GetWidth() const { return mnWidth
; }
659 FontStrikeout
GetStrikeout() const { return meStrikeout
; }
660 FontLineStyle
GetUnderline() const { return meUnderline
; }
661 FontLineStyle
GetOverline() const { return meOverline
; }
662 void SetStartPoint(const Point
& rPos
) { maPos
= rPos
; }
663 void SetWidth(tools::Long rWidth
) { mnWidth
= rWidth
; }
664 void SetStrikeout(FontStrikeout eStrikeout
) { meStrikeout
= eStrikeout
; }
665 void SetUnderline(FontLineStyle eUnderline
) { meUnderline
= eUnderline
; }
666 void SetOverline(FontLineStyle eOverline
) { meOverline
= eOverline
; }
669 class VCL_DLLPUBLIC MetaBmpAction final
: public MetaAction
678 MetaBmpAction(MetaBmpAction
const &) = default;
679 MetaBmpAction(MetaBmpAction
&&) = default;
680 MetaBmpAction
& operator =(MetaBmpAction
const &) = delete; // due to MetaAction
681 MetaBmpAction
& operator =(MetaBmpAction
&&) = delete; // due to MetaAction
683 virtual ~MetaBmpAction() override
;
685 virtual void Execute( OutputDevice
* pOut
) override
;
686 virtual rtl::Reference
<MetaAction
> Clone() const override
;
688 MetaBmpAction( const Point
& rPt
, const Bitmap
& rBmp
);
690 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
691 virtual void Scale( double fScaleX
, double fScaleY
) override
;
693 const Bitmap
& GetBitmap() const { return maBmp
; }
694 const Point
& GetPoint() const { return maPt
; }
695 void SetBitmap(const Bitmap
& rBmp
) { maBmp
= rBmp
; }
696 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
699 class VCL_DLLPUBLIC MetaBmpScaleAction final
: public MetaAction
708 MetaBmpScaleAction();
709 MetaBmpScaleAction(MetaBmpScaleAction
const &) = default;
710 MetaBmpScaleAction(MetaBmpScaleAction
&&) = default;
711 MetaBmpScaleAction
& operator =(MetaBmpScaleAction
const &) = delete; // due to MetaAction
712 MetaBmpScaleAction
& operator =(MetaBmpScaleAction
&&) = delete; // due to MetaAction
714 virtual ~MetaBmpScaleAction() override
;
716 virtual void Execute( OutputDevice
* pOut
) override
;
717 virtual rtl::Reference
<MetaAction
> Clone() const override
;
719 MetaBmpScaleAction( const Point
& rPt
, const Size
& rSz
,
720 const Bitmap
& rBmp
);
722 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
723 virtual void Scale( double fScaleX
, double fScaleY
) override
;
725 const Bitmap
& GetBitmap() const { return maBmp
; }
726 const Point
& GetPoint() const { return maPt
; }
727 const Size
& GetSize() const { return maSz
; }
728 void SetBitmap(const Bitmap
& rBmp
) { maBmp
= rBmp
; }
729 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
730 void SetSize(const Size
& rSz
) { maSz
= rSz
; }
733 class VCL_DLLPUBLIC MetaBmpScalePartAction final
: public MetaAction
744 MetaBmpScalePartAction();
745 MetaBmpScalePartAction(MetaBmpScalePartAction
const &) = default;
746 MetaBmpScalePartAction(MetaBmpScalePartAction
&&) = default;
747 MetaBmpScalePartAction
& operator =(MetaBmpScalePartAction
const &) = delete; // due to MetaAction
748 MetaBmpScalePartAction
& operator =(MetaBmpScalePartAction
&&) = delete; // due to MetaAction
750 virtual ~MetaBmpScalePartAction() override
;
752 virtual void Execute( OutputDevice
* pOut
) override
;
753 virtual rtl::Reference
<MetaAction
> Clone() const override
;
755 MetaBmpScalePartAction( const Point
& rDstPt
, const Size
& rDstSz
,
756 const Point
& rSrcPt
, const Size
& rSrcSz
,
757 const Bitmap
& rBmp
);
759 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
760 virtual void Scale( double fScaleX
, double fScaleY
) override
;
762 const Bitmap
& GetBitmap() const { return maBmp
; }
763 const Point
& GetDestPoint() const { return maDstPt
; }
764 const Size
& GetDestSize() const { return maDstSz
; }
765 const Point
& GetSrcPoint() const { return maSrcPt
; }
766 const Size
& GetSrcSize() const { return maSrcSz
; }
767 void SetBitmap(const Bitmap
& rBmp
) { maBmp
= rBmp
; }
768 void SetDestPoint(const Point
& rPt
) { maDstPt
= rPt
; }
769 void SetDestSize(const Size
& rSz
) { maDstSz
= rSz
; }
770 void SetSrcPoint(const Point
& rPt
) { maSrcPt
= rPt
; }
771 void SetSrcSize(const Size
& rSz
) { maSrcSz
= rSz
; }
774 class VCL_DLLPUBLIC MetaBmpExAction final
: public MetaAction
783 MetaBmpExAction(MetaBmpExAction
const &) = default;
784 MetaBmpExAction(MetaBmpExAction
&&) = default;
785 MetaBmpExAction
& operator =(MetaBmpExAction
const &) = delete; // due to MetaAction
786 MetaBmpExAction
& operator =(MetaBmpExAction
&&) = delete; // due to MetaAction
788 virtual ~MetaBmpExAction() override
;
790 virtual void Execute( OutputDevice
* pOut
) override
;
791 virtual rtl::Reference
<MetaAction
> Clone() const override
;
793 MetaBmpExAction( const Point
& rPt
, const BitmapEx
& rBmpEx
);
795 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
796 virtual void Scale( double fScaleX
, double fScaleY
) override
;
798 const BitmapEx
& GetBitmapEx() const { return maBmpEx
; }
799 const Point
& GetPoint() const { return maPt
; }
800 void SetBitmapEx(BitmapEx rBmpEx
) { maBmpEx
= rBmpEx
; }
801 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
802 bool IsTransparent() const override
{ return GetBitmapEx().IsAlpha(); }
805 class VCL_DLLPUBLIC MetaBmpExScaleAction final
: public MetaAction
814 MetaBmpExScaleAction();
815 MetaBmpExScaleAction(MetaBmpExScaleAction
const &) = default;
816 MetaBmpExScaleAction(MetaBmpExScaleAction
&&) = default;
817 MetaBmpExScaleAction
& operator =(MetaBmpExScaleAction
const &) = delete; // due to MetaAction
818 MetaBmpExScaleAction
& operator =(MetaBmpExScaleAction
&&) = delete; // due to MetaAction
820 virtual ~MetaBmpExScaleAction() override
;
822 virtual void Execute( OutputDevice
* pOut
) override
;
823 virtual rtl::Reference
<MetaAction
> Clone() const override
;
825 MetaBmpExScaleAction( const Point
& rPt
, const Size
& rSz
,
826 const BitmapEx
& rBmpEx
) ;
828 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
829 virtual void Scale( double fScaleX
, double fScaleY
) override
;
831 const BitmapEx
& GetBitmapEx() const { return maBmpEx
; }
832 const Point
& GetPoint() const { return maPt
; }
833 const Size
& GetSize() const { return maSz
; }
834 void SetBitmapEx(const BitmapEx
& rBmpEx
) { maBmpEx
= rBmpEx
; }
835 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
836 void SetSize(const Size
& rSz
) { maSz
= rSz
; }
837 bool IsTransparent() const override
{ return GetBitmapEx().IsAlpha(); }
840 class VCL_DLLPUBLIC MetaBmpExScalePartAction final
: public MetaAction
851 MetaBmpExScalePartAction();
852 MetaBmpExScalePartAction(MetaBmpExScalePartAction
const &) = default;
853 MetaBmpExScalePartAction(MetaBmpExScalePartAction
&&) = default;
854 MetaBmpExScalePartAction
& operator =(MetaBmpExScalePartAction
const &) = delete; // due to MetaAction
855 MetaBmpExScalePartAction
& operator =(MetaBmpExScalePartAction
&&) = delete; // due to MetaAction
857 virtual ~MetaBmpExScalePartAction() override
;
859 virtual void Execute( OutputDevice
* pOut
) override
;
860 virtual rtl::Reference
<MetaAction
> Clone() const override
;
862 MetaBmpExScalePartAction( const Point
& rDstPt
, const Size
& rDstSz
,
863 const Point
& rSrcPt
, const Size
& rSrcSz
,
864 const BitmapEx
& rBmpEx
);
866 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
867 virtual void Scale( double fScaleX
, double fScaleY
) override
;
869 const BitmapEx
& GetBitmapEx() const { return maBmpEx
; }
870 const Point
& GetDestPoint() const { return maDstPt
; }
871 const Size
& GetDestSize() const { return maDstSz
; }
872 const Point
& GetSrcPoint() const { return maSrcPt
; }
873 const Size
& GetSrcSize() const { return maSrcSz
; }
874 void SetBitmapEx(const BitmapEx
& rBmpEx
) { maBmpEx
= rBmpEx
; }
875 void SetDestPoint(const Point
& rDstPt
) { maDstPt
= rDstPt
; }
876 void SetDestSize(const Size
& rDstSz
) { maDstSz
= rDstSz
; }
877 void SetSrcPoint(const Point
& rSrcPt
) { maSrcPt
= rSrcPt
; }
878 void SetSrcSize(const Size
& rSrcSz
) { maSrcSz
= rSrcSz
; }
879 bool IsTransparent() const override
{ return GetBitmapEx().IsAlpha(); }
882 class SAL_DLLPUBLIC_RTTI MetaMaskAction final
: public MetaAction
892 MetaMaskAction(MetaMaskAction
const &) = default;
893 MetaMaskAction(MetaMaskAction
&&) = default;
894 MetaMaskAction
& operator =(MetaMaskAction
const &) = delete; // due to MetaAction
895 MetaMaskAction
& operator =(MetaMaskAction
&&) = delete; // due to MetaAction
897 virtual ~MetaMaskAction() override
;
899 virtual void Execute( OutputDevice
* pOut
) override
;
900 virtual rtl::Reference
<MetaAction
> Clone() const override
;
902 MetaMaskAction( const Point
& rPt
,
904 const Color
& rColor
);
906 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
907 virtual void Scale( double fScaleX
, double fScaleY
) override
;
909 const Bitmap
& GetBitmap() const { return maBmp
; }
910 const Color
& GetColor() const { return maColor
; }
911 const Point
& GetPoint() const { return maPt
; }
912 void SetBitmap(const Bitmap
& rBmp
) { maBmp
= rBmp
; }
913 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
916 class SAL_DLLPUBLIC_RTTI MetaMaskScaleAction final
: public MetaAction
926 MetaMaskScaleAction();
927 MetaMaskScaleAction(MetaMaskScaleAction
const &) = default;
928 MetaMaskScaleAction(MetaMaskScaleAction
&&) = default;
929 MetaMaskScaleAction
& operator =(MetaMaskScaleAction
const &) = delete; // due to MetaAction
930 MetaMaskScaleAction
& operator =(MetaMaskScaleAction
&&) = delete; // due to MetaAction
932 virtual ~MetaMaskScaleAction() override
;
934 virtual void Execute( OutputDevice
* pOut
) override
;
935 virtual rtl::Reference
<MetaAction
> Clone() const override
;
937 MetaMaskScaleAction( const Point
& rPt
, const Size
& rSz
,
939 const Color
& rColor
);
941 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
942 virtual void Scale( double fScaleX
, double fScaleY
) override
;
944 const Bitmap
& GetBitmap() const { return maBmp
; }
945 const Color
& GetColor() const { return maColor
; }
946 const Point
& GetPoint() const { return maPt
; }
947 const Size
& GetSize() const { return maSz
; }
948 void SetBitmap(const Bitmap
& rBmp
) { maBmp
= rBmp
; }
949 void SetPoint(const Point
& rPt
) { maPt
= rPt
; }
950 void SetSize(const Size
& rSz
) { maSz
= rSz
; }
953 class SAL_DLLPUBLIC_RTTI MetaMaskScalePartAction final
: public MetaAction
965 MetaMaskScalePartAction();
966 MetaMaskScalePartAction(MetaMaskScalePartAction
const &) = default;
967 MetaMaskScalePartAction(MetaMaskScalePartAction
&&) = default;
968 MetaMaskScalePartAction
& operator =(MetaMaskScalePartAction
const &) = delete; // due to MetaAction
969 MetaMaskScalePartAction
& operator =(MetaMaskScalePartAction
&&) = delete; // due to MetaAction
971 virtual ~MetaMaskScalePartAction() override
;
973 virtual void Execute( OutputDevice
* pOut
) override
;
974 virtual rtl::Reference
<MetaAction
> Clone() const override
;
976 MetaMaskScalePartAction( const Point
& rDstPt
, const Size
& rDstSz
,
977 const Point
& rSrcPt
, const Size
& rSrcSz
,
979 const Color
& rColor
);
981 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
982 virtual void Scale( double fScaleX
, double fScaleY
) override
;
984 const Bitmap
& GetBitmap() const { return maBmp
; }
985 const Color
& GetColor() const { return maColor
; }
986 const Point
& GetDestPoint() const { return maDstPt
; }
987 const Size
& GetDestSize() const { return maDstSz
; }
988 const Point
& GetSrcPoint() const { return maSrcPt
; }
989 const Size
& GetSrcSize() const { return maSrcSz
; }
990 void SetBitmap(const Bitmap
& rBmp
) { maBmp
= rBmp
; }
991 void SetColor(Color rColor
) { maColor
= rColor
; }
992 void SetDestPoint(const Point
& rPt
) { maDstPt
= rPt
; }
993 void SetDestSize(const Size
& rSz
) { maDstSz
= rSz
; }
994 void SetSrcPoint(const Point
& rPt
) { maSrcPt
= rPt
; }
995 void SetSrcSize(const Size
& rSz
) { maSrcSz
= rSz
; }
998 class SAL_DLLPUBLIC_RTTI MetaGradientAction final
: public MetaAction
1002 tools::Rectangle maRect
;
1003 Gradient maGradient
;
1006 MetaGradientAction();
1007 MetaGradientAction(MetaGradientAction
const &) = default;
1008 MetaGradientAction(MetaGradientAction
&&) = default;
1009 MetaGradientAction
& operator =(MetaGradientAction
const &) = delete; // due to MetaAction
1010 MetaGradientAction
& operator =(MetaGradientAction
&&) = delete; // due to MetaAction
1012 virtual ~MetaGradientAction() override
;
1014 virtual void Execute( OutputDevice
* pOut
) override
;
1015 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1017 MetaGradientAction( const tools::Rectangle
& rRect
, Gradient aGradient
);
1019 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1020 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1022 const tools::Rectangle
& GetRect() const { return maRect
; }
1023 const Gradient
& GetGradient() const { return maGradient
; }
1024 void SetGradient(const Gradient
& rGradient
) { maGradient
= rGradient
; }
1025 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
1028 class VCL_DLLPUBLIC MetaGradientExAction final
: public MetaAction
1032 tools::PolyPolygon maPolyPoly
;
1033 Gradient maGradient
;
1036 MetaGradientExAction();
1037 MetaGradientExAction(MetaGradientExAction
const &) = default;
1038 MetaGradientExAction(MetaGradientExAction
&&) = default;
1039 MetaGradientExAction
& operator =(MetaGradientExAction
const &) = delete; // due to MetaAction
1040 MetaGradientExAction
& operator =(MetaGradientExAction
&&) = delete; // due to MetaAction
1042 virtual ~MetaGradientExAction() override
;
1044 virtual void Execute( OutputDevice
* pOut
) override
;
1045 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1047 MetaGradientExAction( tools::PolyPolygon rPolyPoly
, Gradient aGradient
);
1049 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1050 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1052 const tools::PolyPolygon
& GetPolyPolygon() const { return maPolyPoly
; }
1053 const Gradient
& GetGradient() const { return maGradient
; }
1054 void SetPolyPolygon(const tools::PolyPolygon
& rPolyPoly
) { maPolyPoly
= rPolyPoly
; }
1055 void SetGradient(const Gradient
& rGradient
) { maGradient
= rGradient
; }
1058 class SAL_DLLPUBLIC_RTTI MetaHatchAction final
: public MetaAction
1062 tools::PolyPolygon maPolyPoly
;
1067 MetaHatchAction(MetaHatchAction
const &) = default;
1068 MetaHatchAction(MetaHatchAction
&&) = default;
1069 MetaHatchAction
& operator =(MetaHatchAction
const &) = delete; // due to MetaAction
1070 MetaHatchAction
& operator =(MetaHatchAction
&&) = delete; // due to MetaAction
1072 virtual ~MetaHatchAction() override
;
1074 virtual void Execute( OutputDevice
* pOut
) override
;
1075 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1077 MetaHatchAction( tools::PolyPolygon aPolyPoly
, const Hatch
& rHatch
);
1079 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1080 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1082 const tools::PolyPolygon
& GetPolyPolygon() const { return maPolyPoly
; }
1083 const Hatch
& GetHatch() const { return maHatch
; }
1084 void SetPolyPolygon(const tools::PolyPolygon
& rPolyPoly
) { maPolyPoly
= rPolyPoly
; }
1085 void SetHatch(const Hatch
& rHatch
) { maHatch
= rHatch
; }
1088 class VCL_DLLPUBLIC MetaWallpaperAction final
: public MetaAction
1092 tools::Rectangle maRect
;
1093 Wallpaper maWallpaper
;
1096 MetaWallpaperAction();
1097 MetaWallpaperAction(MetaWallpaperAction
const &) = default;
1098 MetaWallpaperAction(MetaWallpaperAction
&&) = default;
1099 MetaWallpaperAction
& operator =(MetaWallpaperAction
const &) = delete; // due to MetaAction
1100 MetaWallpaperAction
& operator =(MetaWallpaperAction
&&) = delete; // due to MetaAction
1102 virtual ~MetaWallpaperAction() override
;
1104 virtual void Execute( OutputDevice
* pOut
) override
;
1105 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1107 MetaWallpaperAction( const tools::Rectangle
& rRect
,
1108 const Wallpaper
& rPaper
);
1110 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1111 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1113 const tools::Rectangle
& GetRect() const { return maRect
; }
1114 const Wallpaper
& GetWallpaper() const { return maWallpaper
; }
1115 void SetWallpaper(const Wallpaper
& rWallpaper
) { maWallpaper
= rWallpaper
; }
1118 class VCL_DLLPUBLIC MetaClipRegionAction final
: public MetaAction
1122 vcl::Region maRegion
;
1126 MetaClipRegionAction();
1127 MetaClipRegionAction(MetaClipRegionAction
const &) = default;
1128 MetaClipRegionAction(MetaClipRegionAction
&&) = default;
1129 MetaClipRegionAction
& operator =(MetaClipRegionAction
const &) = delete; // due to MetaAction
1130 MetaClipRegionAction
& operator =(MetaClipRegionAction
&&) = delete; // due to MetaAction
1132 virtual ~MetaClipRegionAction() override
;
1134 virtual void Execute( OutputDevice
* pOut
) override
;
1135 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1137 MetaClipRegionAction( vcl::Region aRegion
, bool bClip
);
1139 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1140 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1142 const vcl::Region
& GetRegion() const { return maRegion
; }
1143 bool IsClipping() const { return mbClip
; }
1144 void SetRegion(const vcl::Region
& rRegion
) { maRegion
= rRegion
; }
1145 void SetClipping(bool bClip
) { mbClip
= bClip
; }
1148 class VCL_DLLPUBLIC MetaISectRectClipRegionAction final
: public MetaAction
1152 tools::Rectangle maRect
;
1155 MetaISectRectClipRegionAction();
1156 MetaISectRectClipRegionAction(MetaISectRectClipRegionAction
const &) = default;
1157 MetaISectRectClipRegionAction(MetaISectRectClipRegionAction
&&) = default;
1158 MetaISectRectClipRegionAction
& operator =(MetaISectRectClipRegionAction
const &) = delete; // due to MetaAction
1159 MetaISectRectClipRegionAction
& operator =(MetaISectRectClipRegionAction
&&) = delete; // due to MetaAction
1161 virtual ~MetaISectRectClipRegionAction() override
;
1163 virtual void Execute( OutputDevice
* pOut
) override
;
1164 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1166 explicit MetaISectRectClipRegionAction( const tools::Rectangle
& );
1168 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1169 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1171 const tools::Rectangle
& GetRect() const { return maRect
; }
1172 void SetRect(const tools::Rectangle
& rRect
) { maRect
= rRect
; }
1175 class VCL_DLLPUBLIC MetaISectRegionClipRegionAction final
: public MetaAction
1179 vcl::Region maRegion
;
1182 MetaISectRegionClipRegionAction();
1183 MetaISectRegionClipRegionAction(MetaISectRegionClipRegionAction
const &) = default;
1184 MetaISectRegionClipRegionAction(MetaISectRegionClipRegionAction
&&) = default;
1185 MetaISectRegionClipRegionAction
& operator =(MetaISectRegionClipRegionAction
const &) = delete; // due to MetaAction
1186 MetaISectRegionClipRegionAction
& operator =(MetaISectRegionClipRegionAction
&&) = delete; // due to MetaAction
1188 virtual ~MetaISectRegionClipRegionAction() override
;
1190 virtual void Execute( OutputDevice
* pOut
) override
;
1191 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1193 explicit MetaISectRegionClipRegionAction( vcl::Region
);
1195 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1196 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1198 const vcl::Region
& GetRegion() const { return maRegion
; }
1199 void SetRegion(const vcl::Region
& rRegion
) { maRegion
= rRegion
; }
1202 class VCL_DLLPUBLIC MetaMoveClipRegionAction final
: public MetaAction
1206 tools::Long mnHorzMove
;
1207 tools::Long mnVertMove
;
1210 MetaMoveClipRegionAction();
1211 MetaMoveClipRegionAction(MetaMoveClipRegionAction
const &) = default;
1212 MetaMoveClipRegionAction(MetaMoveClipRegionAction
&&) = default;
1213 MetaMoveClipRegionAction
& operator =(MetaMoveClipRegionAction
const &) = delete; // due to MetaAction
1214 MetaMoveClipRegionAction
& operator =(MetaMoveClipRegionAction
&&) = delete; // due to MetaAction
1216 virtual ~MetaMoveClipRegionAction() override
;
1218 virtual void Execute( OutputDevice
* pOut
) override
;
1219 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1221 MetaMoveClipRegionAction( tools::Long nHorzMove
, tools::Long nVertMove
);
1223 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1225 tools::Long
GetHorzMove() const { return mnHorzMove
; }
1226 tools::Long
GetVertMove() const { return mnVertMove
; }
1227 void SetHorzMove(tools::Long nHorzMove
) { mnHorzMove
= nHorzMove
; }
1228 void SetVertMove(tools::Long nVertMove
) { mnVertMove
= nVertMove
; }
1231 class VCL_DLLPUBLIC MetaLineColorAction final
: public MetaAction
1239 MetaLineColorAction();
1240 MetaLineColorAction(MetaLineColorAction
const &) = default;
1241 MetaLineColorAction(MetaLineColorAction
&&) = default;
1242 MetaLineColorAction
& operator =(MetaLineColorAction
const &) = delete; // due to MetaAction
1243 MetaLineColorAction
& operator =(MetaLineColorAction
&&) = delete; // due to MetaAction
1245 virtual ~MetaLineColorAction() override
;
1247 virtual void Execute( OutputDevice
* pOut
) override
;
1248 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1250 MetaLineColorAction( const Color
& rColor
, bool bSet
);
1252 const Color
& GetColor() const { return maColor
; }
1253 bool IsSetting() const { return mbSet
; }
1254 void SetColor(const Color
& rColor
) { maColor
= rColor
; }
1255 void SetSetting(bool rSet
) { mbSet
= rSet
; }
1258 class VCL_DLLPUBLIC MetaFillColorAction final
: public MetaAction
1266 MetaFillColorAction();
1267 MetaFillColorAction(MetaFillColorAction
const &) = default;
1268 MetaFillColorAction(MetaFillColorAction
&&) = default;
1269 MetaFillColorAction
& operator =(MetaFillColorAction
const &) = delete; // due to MetaAction
1270 MetaFillColorAction
& operator =(MetaFillColorAction
&&) = delete; // due to MetaAction
1272 virtual ~MetaFillColorAction() override
;
1274 virtual void Execute( OutputDevice
* pOut
) override
;
1275 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1277 MetaFillColorAction( const Color
& rColor
, bool bSet
);
1279 const Color
& GetColor() const { return maColor
; }
1280 bool IsSetting() const { return mbSet
; }
1281 void SetSetting(bool rSet
) { mbSet
= rSet
; }
1282 void SetColor(Color rColor
) { maColor
= rColor
; }
1286 class VCL_DLLPUBLIC MetaTextColorAction final
: public MetaAction
1293 MetaTextColorAction();
1294 MetaTextColorAction(MetaTextColorAction
const &) = default;
1295 MetaTextColorAction(MetaTextColorAction
&&) = default;
1296 MetaTextColorAction
& operator =(MetaTextColorAction
const &) = delete; // due to MetaAction
1297 MetaTextColorAction
& operator =(MetaTextColorAction
&&) = delete; // due to MetaAction
1299 virtual ~MetaTextColorAction() override
;
1301 virtual void Execute( OutputDevice
* pOut
) override
;
1302 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1304 explicit MetaTextColorAction( const Color
& );
1306 const Color
& GetColor() const { return maColor
; }
1307 void SetColor(Color rColor
) { maColor
= rColor
; }
1310 class VCL_DLLPUBLIC MetaTextFillColorAction final
: public MetaAction
1318 MetaTextFillColorAction();
1319 MetaTextFillColorAction(MetaTextFillColorAction
const &) = default;
1320 MetaTextFillColorAction(MetaTextFillColorAction
&&) = default;
1321 MetaTextFillColorAction
& operator =(MetaTextFillColorAction
const &) = delete; // due to MetaAction
1322 MetaTextFillColorAction
& operator =(MetaTextFillColorAction
&&) = delete; // due to MetaAction
1324 virtual ~MetaTextFillColorAction() override
;
1326 virtual void Execute( OutputDevice
* pOut
) override
;
1327 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1329 MetaTextFillColorAction( const Color
& rColor
, bool bSet
);
1331 const Color
& GetColor() const { return maColor
; }
1332 void SetColor(Color rColor
) { maColor
= rColor
; }
1333 void SetSetting(bool bSet
) { mbSet
= bSet
; }
1334 bool IsSetting() const { return mbSet
; }
1338 class VCL_DLLPUBLIC MetaTextLineColorAction final
: public MetaAction
1346 MetaTextLineColorAction();
1347 MetaTextLineColorAction(MetaTextLineColorAction
const &) = default;
1348 MetaTextLineColorAction(MetaTextLineColorAction
&&) = default;
1349 MetaTextLineColorAction
& operator =(MetaTextLineColorAction
const &) = delete; // due to MetaAction
1350 MetaTextLineColorAction
& operator =(MetaTextLineColorAction
&&) = delete; // due to MetaAction
1352 virtual ~MetaTextLineColorAction() override
;
1354 virtual void Execute( OutputDevice
* pOut
) override
;
1355 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1357 MetaTextLineColorAction( const Color
& rColor
, bool bSet
);
1359 const Color
& GetColor() const { return maColor
; }
1360 void SetColor(const Color
& rColor
) { maColor
= rColor
; }
1361 void SetSetting(bool bSet
) { mbSet
= bSet
; }
1362 bool IsSetting() const { return mbSet
; }
1365 class VCL_DLLPUBLIC MetaOverlineColorAction final
: public MetaAction
1373 MetaOverlineColorAction();
1374 MetaOverlineColorAction(MetaOverlineColorAction
const &) = default;
1375 MetaOverlineColorAction(MetaOverlineColorAction
&&) = default;
1376 MetaOverlineColorAction
& operator =(MetaOverlineColorAction
const &) = delete; // due to MetaAction
1377 MetaOverlineColorAction
& operator =(MetaOverlineColorAction
&&) = delete; // due to MetaAction
1379 virtual ~MetaOverlineColorAction() override
;
1381 virtual void Execute( OutputDevice
* pOut
) override
;
1382 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1384 MetaOverlineColorAction( const Color
& rColor
, bool bSet
);
1386 const Color
& GetColor() const { return maColor
; }
1387 void SetColor(const Color
& rColor
) { maColor
= rColor
; }
1388 void SetSetting(bool bSet
) { mbSet
= bSet
; }
1389 bool IsSetting() const { return mbSet
; }
1392 class VCL_DLLPUBLIC MetaTextAlignAction final
: public MetaAction
1399 MetaTextAlignAction();
1400 MetaTextAlignAction(MetaTextAlignAction
const &) = default;
1401 MetaTextAlignAction(MetaTextAlignAction
&&) = default;
1402 MetaTextAlignAction
& operator =(MetaTextAlignAction
const &) = delete; // due to MetaAction
1403 MetaTextAlignAction
& operator =(MetaTextAlignAction
&&) = delete; // due to MetaAction
1405 virtual ~MetaTextAlignAction() override
;
1407 virtual void Execute( OutputDevice
* pOut
) override
;
1408 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1410 explicit MetaTextAlignAction( TextAlign eAlign
);
1412 TextAlign
GetTextAlign() const { return maAlign
; }
1413 void SetTextAlign(TextAlign eAlign
) { maAlign
= eAlign
; }
1416 class VCL_DLLPUBLIC MetaMapModeAction final
: public MetaAction
1423 MetaMapModeAction();
1424 MetaMapModeAction(MetaMapModeAction
const &) = default;
1425 MetaMapModeAction(MetaMapModeAction
&&) = default;
1426 MetaMapModeAction
& operator =(MetaMapModeAction
const &) = delete; // due to MetaAction
1427 MetaMapModeAction
& operator =(MetaMapModeAction
&&) = delete; // due to MetaAction
1429 virtual ~MetaMapModeAction() override
;
1431 virtual void Execute( OutputDevice
* pOut
) override
;
1432 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1434 explicit MetaMapModeAction( const MapMode
& );
1436 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1438 const MapMode
& GetMapMode() const { return maMapMode
; }
1439 void SetMapMode(const MapMode
& rMapMode
) { maMapMode
= rMapMode
; }
1442 // tdf#127471 decl for friend below
1443 namespace emfio
{ class ScaledFontDetectCorrectHelper
; }
1445 class VCL_DLLPUBLIC MetaFontAction final
: public MetaAction
1451 // tdf#127471 for import correction of own wrong written EMF/WMF files allow correction
1452 // of FontScale after import. Only from there, so use a friend here and keep the method private
1453 friend class emfio::ScaledFontDetectCorrectHelper
;
1454 void correctFontScale(tools::Long nNewFontScale
) { maFont
.SetAverageFontWidth(nNewFontScale
); }
1458 MetaFontAction(MetaFontAction
const &) = default;
1459 MetaFontAction(MetaFontAction
&&) = default;
1460 MetaFontAction
& operator =(MetaFontAction
const &) = delete; // due to MetaAction
1461 MetaFontAction
& operator =(MetaFontAction
&&) = delete; // due to MetaAction
1463 virtual ~MetaFontAction() override
;
1465 virtual void Execute( OutputDevice
* pOut
) override
;
1466 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1468 explicit MetaFontAction( vcl::Font
);
1470 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1472 const vcl::Font
& GetFont() const { return maFont
; }
1473 void SetFont(const vcl::Font
& rFont
) { maFont
= rFont
; }
1477 class VCL_DLLPUBLIC MetaPushAction final
: public MetaAction
1481 vcl::PushFlags mnFlags
;
1485 MetaPushAction(MetaPushAction
const &) = default;
1486 MetaPushAction(MetaPushAction
&&) = default;
1487 MetaPushAction
& operator =(MetaPushAction
const &) = delete; // due to MetaAction
1488 MetaPushAction
& operator =(MetaPushAction
&&) = delete; // due to MetaAction
1490 virtual ~MetaPushAction() override
;
1492 virtual void Execute( OutputDevice
* pOut
) override
;
1493 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1495 explicit MetaPushAction( vcl::PushFlags nFlags
);
1497 vcl::PushFlags
GetFlags() const { return mnFlags
; }
1498 void SetPushFlags(const vcl::PushFlags nFlags
) { mnFlags
= nFlags
; }
1501 class VCL_DLLPUBLIC MetaPopAction final
: public MetaAction
1506 MetaPopAction(MetaPopAction
const &) = default;
1507 MetaPopAction(MetaPopAction
&&) = default;
1508 MetaPopAction
& operator =(MetaPopAction
const &) = delete; // due to MetaAction
1509 MetaPopAction
& operator =(MetaPopAction
&&) = delete; // due to MetaAction
1511 virtual ~MetaPopAction() override
;
1513 virtual void Execute( OutputDevice
* pOut
) override
;
1514 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1517 class VCL_DLLPUBLIC MetaRasterOpAction final
: public MetaAction
1521 RasterOp meRasterOp
;
1524 MetaRasterOpAction();
1525 MetaRasterOpAction(MetaRasterOpAction
const &) = default;
1526 MetaRasterOpAction(MetaRasterOpAction
&&) = default;
1527 MetaRasterOpAction
& operator =(MetaRasterOpAction
const &) = delete; // due to MetaAction
1528 MetaRasterOpAction
& operator =(MetaRasterOpAction
&&) = delete; // due to MetaAction
1530 virtual ~MetaRasterOpAction() override
;
1532 virtual void Execute( OutputDevice
* pOut
) override
;
1533 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1535 explicit MetaRasterOpAction( RasterOp eRasterOp
);
1537 RasterOp
GetRasterOp() const { return meRasterOp
; }
1538 void SetRasterOp(const RasterOp eRasterOp
) { meRasterOp
= eRasterOp
; }
1541 class SAL_DLLPUBLIC_RTTI MetaTransparentAction final
: public MetaAction
1545 tools::PolyPolygon maPolyPoly
;
1546 sal_uInt16 mnTransPercent
;
1549 MetaTransparentAction();
1550 MetaTransparentAction(MetaTransparentAction
const &) = default;
1551 MetaTransparentAction(MetaTransparentAction
&&) = default;
1552 MetaTransparentAction
& operator =(MetaTransparentAction
const &) = delete; // due to MetaAction
1553 MetaTransparentAction
& operator =(MetaTransparentAction
&&) = delete; // due to MetaAction
1555 virtual ~MetaTransparentAction() override
;
1557 virtual void Execute( OutputDevice
* pOut
) override
;
1558 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1560 MetaTransparentAction( tools::PolyPolygon aPolyPoly
, sal_uInt16 nTransPercent
);
1562 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1563 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1565 const tools::PolyPolygon
& GetPolyPolygon() const { return maPolyPoly
; }
1566 sal_uInt16
GetTransparence() const { return mnTransPercent
; }
1567 void SetPolyPolygon(const tools::PolyPolygon
& rPolyPoly
) { maPolyPoly
= rPolyPoly
; }
1568 void SetTransparence(const sal_uInt16 nTransPercent
) { mnTransPercent
= nTransPercent
; }
1570 bool IsTransparent() const override
{ return true; }
1573 class VCL_DLLPUBLIC MetaFloatTransparentAction final
: public MetaAction
1580 Gradient maGradient
;
1582 // tdf#155479 allow holding MCGR infos
1583 std::optional
<basegfx::BColorStops
> maSVGTransparencyColorStops
;
1586 MetaFloatTransparentAction();
1587 MetaFloatTransparentAction(MetaFloatTransparentAction
const &) = default;
1588 MetaFloatTransparentAction(MetaFloatTransparentAction
&&) = default;
1589 MetaFloatTransparentAction
& operator =(MetaFloatTransparentAction
const &) = delete; // due to MetaAction
1590 MetaFloatTransparentAction
& operator =(MetaFloatTransparentAction
&&) = delete; // due to MetaAction
1592 virtual ~MetaFloatTransparentAction() override
;
1594 virtual void Execute( OutputDevice
* pOut
) override
;
1595 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1597 MetaFloatTransparentAction( const GDIMetaFile
& rMtf
, const Point
& rPos
,
1598 const Size
& rSize
, Gradient aGradient
);
1600 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1601 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1603 const GDIMetaFile
& GetGDIMetaFile() const { return maMtf
; }
1604 const Point
& GetPoint() const { return maPoint
; }
1605 const Size
& GetSize() const { return maSize
; }
1606 const Gradient
& GetGradient() const { return maGradient
; }
1607 void SetGDIMetaFile(const GDIMetaFile
&rMtf
) { maMtf
= rMtf
; }
1608 void SetPoint(const Point
& rPoint
) { maPoint
= rPoint
; }
1609 void SetSize(const Size
& rSize
) { maSize
= rSize
; }
1610 void SetGradient(const Gradient
& rGradient
) { maGradient
= rGradient
; }
1611 bool IsTransparent() const override
{ return true; }
1613 // tdf#155479 allow holding MCGR infos
1614 const basegfx::BColorStops
* getSVGTransparencyColorStops() const
1615 { return !maSVGTransparencyColorStops
? nullptr : &(*maSVGTransparencyColorStops
); }
1616 void addSVGTransparencyColorStops(const basegfx::BColorStops
& rSVGTransparencyColorStops
);
1619 class VCL_DLLPUBLIC MetaEPSAction final
: public MetaAction
1624 GDIMetaFile maSubst
;
1630 MetaEPSAction(MetaEPSAction
const &) = default;
1631 MetaEPSAction(MetaEPSAction
&&) = default;
1632 MetaEPSAction
& operator =(MetaEPSAction
const &) = delete; // due to MetaAction
1633 MetaEPSAction
& operator =(MetaEPSAction
&&) = delete; // due to MetaAction
1635 virtual ~MetaEPSAction() override
;
1637 virtual void Execute( OutputDevice
* pOut
) override
;
1638 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1640 MetaEPSAction( const Point
& rPoint
, const Size
& rSize
,
1641 GfxLink aGfxLink
, const GDIMetaFile
& rSubst
);
1643 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1644 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1646 const GfxLink
& GetLink() const { return maGfxLink
; }
1647 const GDIMetaFile
& GetSubstitute() const { return maSubst
; }
1648 const Point
& GetPoint() const { return maPoint
; }
1649 const Size
& GetSize() const { return maSize
; }
1650 void SetLink(const GfxLink
& rGfxLink
) { maGfxLink
= rGfxLink
; }
1651 void SetSubstitute(const GDIMetaFile
& rSubst
) { maSubst
= rSubst
; }
1652 void SetPoint(const Point
& rPoint
) { maPoint
= rPoint
; }
1653 void SetSize(const Size
& rSize
) { maSize
= rSize
; }
1656 class VCL_DLLPUBLIC MetaRefPointAction final
: public MetaAction
1664 MetaRefPointAction();
1665 MetaRefPointAction(MetaRefPointAction
const &) = default;
1666 MetaRefPointAction(MetaRefPointAction
&&) = default;
1667 MetaRefPointAction
& operator =(MetaRefPointAction
const &) = delete; // due to MetaAction
1668 MetaRefPointAction
& operator =(MetaRefPointAction
&&) = delete; // due to MetaAction
1670 virtual ~MetaRefPointAction() override
;
1672 virtual void Execute( OutputDevice
* pOut
) override
;
1673 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1675 MetaRefPointAction( const Point
& rRefPoint
, bool bSet
);
1677 const Point
& GetRefPoint() const { return maRefPoint
; }
1678 void SetRefPoint(const Point
& rRefPoint
) { maRefPoint
= rRefPoint
; }
1679 void SetSetting(const bool bSet
) { mbSet
= bSet
; }
1680 bool IsSetting() const { return mbSet
; }
1683 class VCL_DLLPUBLIC MetaCommentAction final
: public MetaAction
1689 sal_uInt32 mnDataSize
;
1690 std::unique_ptr
<sal_uInt8
[]>
1693 SAL_DLLPRIVATE
void ImplInitDynamicData( const sal_uInt8
* pData
, sal_uInt32 nDataSize
);
1696 virtual ~MetaCommentAction() override
;
1699 explicit MetaCommentAction();
1700 explicit MetaCommentAction( const MetaCommentAction
& rAct
);
1701 explicit MetaCommentAction( OString aComment
, sal_Int32 nValue
= 0, const sal_uInt8
* pData
= nullptr, sal_uInt32 nDataSize
= 0 );
1703 virtual void Move( tools::Long nHorzMove
, tools::Long nVertMove
) override
;
1704 virtual void Scale( double fScaleX
, double fScaleY
) override
;
1706 virtual void Execute( OutputDevice
* pOut
) override
;
1707 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1709 const OString
& GetComment() const { return maComment
; }
1710 sal_Int32
GetValue() const { return mnValue
; }
1711 sal_uInt32
GetDataSize() const { return mnDataSize
; }
1712 const sal_uInt8
* GetData() const { return mpData
.get(); }
1713 void SetComment(const OString
& rComment
) { maComment
= rComment
; }
1714 void SetValue(const sal_Int32 nValue
) { mnValue
= nValue
; }
1715 void SetDataSize(const sal_Int32 nDataSize
) { mnDataSize
= nDataSize
; }
1716 void SetData(const sal_uInt8
* pData
, const sal_uInt32 nDataSize
) { ImplInitDynamicData(pData
, nDataSize
); }
1719 class VCL_DLLPUBLIC MetaLayoutModeAction final
: public MetaAction
1723 vcl::text::ComplexTextLayoutFlags mnLayoutMode
;
1726 MetaLayoutModeAction();
1727 MetaLayoutModeAction(MetaLayoutModeAction
const &) = default;
1728 MetaLayoutModeAction(MetaLayoutModeAction
&&) = default;
1729 MetaLayoutModeAction
& operator =(MetaLayoutModeAction
const &) = delete; // due to MetaAction
1730 MetaLayoutModeAction
& operator =(MetaLayoutModeAction
&&) = delete; // due to MetaAction
1732 virtual ~MetaLayoutModeAction() override
;
1734 virtual void Execute( OutputDevice
* pOut
) override
;
1735 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1737 explicit MetaLayoutModeAction( vcl::text::ComplexTextLayoutFlags nLayoutMode
);
1739 vcl::text::ComplexTextLayoutFlags
GetLayoutMode() const { return mnLayoutMode
; }
1740 void SetLayoutMode(const vcl::text::ComplexTextLayoutFlags nLayoutMode
) { mnLayoutMode
= nLayoutMode
; }
1743 class VCL_DLLPUBLIC MetaTextLanguageAction final
: public MetaAction
1747 LanguageType meTextLanguage
;
1750 MetaTextLanguageAction();
1751 MetaTextLanguageAction(MetaTextLanguageAction
const &) = default;
1752 MetaTextLanguageAction(MetaTextLanguageAction
&&) = default;
1753 MetaTextLanguageAction
& operator =(MetaTextLanguageAction
const &) = delete; // due to MetaAction
1754 MetaTextLanguageAction
& operator =(MetaTextLanguageAction
&&) = delete; // due to MetaAction
1756 virtual ~MetaTextLanguageAction() override
;
1758 virtual void Execute( OutputDevice
* pOut
) override
;
1759 virtual rtl::Reference
<MetaAction
> Clone() const override
;
1761 explicit MetaTextLanguageAction( LanguageType
);
1763 LanguageType
GetTextLanguage() const { return meTextLanguage
; }
1764 void SetTextLanguage(const LanguageType eTextLanguage
) { meTextLanguage
= eTextLanguage
; }
1767 #endif // INCLUDED_VCL_METAACT_HXX
1769 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */