workaround segfault in compiler on macos-clang-intel
[LibreOffice.git] / include / vcl / metaact.hxx
blob79a91a629783d8617aaf235eacf81d9e61c72dec
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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 <rtl/ref.hxx>
26 #include <salhelper/simplereferenceobject.hxx>
27 #include <tools/poly.hxx>
29 #include <vcl/dllapi.h>
30 #include <vcl/rendercontext/State.hxx>
31 #include <vcl/bitmapex.hxx>
32 #include <vcl/font.hxx>
33 #include <vcl/gdimtf.hxx>
34 #include <vcl/gfxlink.hxx>
35 #include <vcl/gradient.hxx>
36 #include <vcl/hatch.hxx>
37 #include <vcl/kernarray.hxx>
38 #include <vcl/lineinfo.hxx>
39 #include <vcl/metaactiontypes.hxx>
40 #include <vcl/region.hxx>
41 #include <vcl/rendercontext/RasterOp.hxx>
42 #include <vcl/wall.hxx>
43 #include <basegfx/utils/bgradient.hxx>
45 #include <memory>
46 #include <span>
48 class OutputDevice;
49 class SvStream;
50 enum class DrawTextFlags;
52 struct ImplMetaReadData
54 rtl_TextEncoding meActualCharSet;
55 int mnParseDepth;
57 ImplMetaReadData()
58 : meActualCharSet(RTL_TEXTENCODING_ASCII_US)
59 , mnParseDepth(0)
63 struct ImplMetaWriteData
65 rtl_TextEncoding meActualCharSet;
67 ImplMetaWriteData() :
68 meActualCharSet( RTL_TEXTENCODING_ASCII_US )
72 class VCL_DLLPUBLIC MetaAction : public salhelper::SimpleReferenceObject
74 private:
75 MetaActionType mnType;
77 protected:
78 SAL_DLLPRIVATE virtual ~MetaAction() override;
80 public:
81 SAL_DLLPRIVATE MetaAction();
82 SAL_DLLPRIVATE explicit MetaAction( MetaActionType nType );
83 SAL_DLLPRIVATE MetaAction( MetaAction const & );
85 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut );
87 oslInterlockedCount GetRefCount() const { return m_nCount; }
89 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const;
91 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove );
92 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY );
94 MetaActionType GetType() const { return mnType; }
95 /** \#i10613# Extracted from Printer::GetPreparedMetaFile. Returns true
96 if given action requires special transparency handling
98 virtual bool IsTransparent() const { return false; }
101 class VCL_DLLPUBLIC MetaPixelAction final : public MetaAction
103 private:
104 Point maPt;
105 Color maColor;
107 public:
108 SAL_DLLPRIVATE MetaPixelAction();
109 MetaPixelAction(MetaPixelAction const &) = default;
110 MetaPixelAction(MetaPixelAction &&) = default;
111 MetaPixelAction & operator =(MetaPixelAction const &) = delete; // due to MetaAction
112 MetaPixelAction & operator =(MetaPixelAction &&) = delete; // due to MetaAction
113 private:
114 SAL_DLLPRIVATE virtual ~MetaPixelAction() override;
115 public:
116 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
117 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
119 MetaPixelAction( const Point& rPt, const Color& rColor );
121 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
122 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
124 const Point& GetPoint() const { return maPt; }
125 const Color& GetColor() const { return maColor; }
126 void SetPoint(const Point& rPt) { maPt = rPt; }
127 void SetColor(Color rColor) { maColor = rColor; }
130 class VCL_DLLPUBLIC MetaPointAction final : public MetaAction
132 private:
133 Point maPt;
135 public:
136 SAL_DLLPRIVATE MetaPointAction();
137 MetaPointAction(MetaPointAction const &) = default;
138 MetaPointAction(MetaPointAction &&) = default;
139 MetaPointAction & operator =(MetaPointAction const &) = delete; // due to MetaAction
140 MetaPointAction & operator =(MetaPointAction &&) = delete; // due to MetaAction
141 private:
142 SAL_DLLPRIVATE virtual ~MetaPointAction() override;
143 public:
144 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
145 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
147 SAL_DLLPRIVATE explicit MetaPointAction( const Point& );
149 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
150 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
152 const Point& GetPoint() const { return maPt; }
153 void SetPoint(const Point& rPt) { maPt = rPt; }
156 class VCL_DLLPUBLIC MetaLineAction final : public MetaAction
158 private:
160 LineInfo maLineInfo;
161 Point maStartPt;
162 Point maEndPt;
164 public:
165 SAL_DLLPRIVATE MetaLineAction();
166 MetaLineAction(MetaLineAction const &) = default;
167 MetaLineAction(MetaLineAction &&) = default;
168 MetaLineAction & operator =(MetaLineAction const &) = delete; // due to MetaAction
169 MetaLineAction & operator =(MetaLineAction &&) = delete; // due to MetaAction
170 private:
171 SAL_DLLPRIVATE virtual ~MetaLineAction() override;
172 public:
173 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
174 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
176 SAL_DLLPRIVATE MetaLineAction( const Point& rStart, const Point& rEnd );
177 MetaLineAction( const Point& rStart, const Point& rEnd,
178 LineInfo aLineInfo );
180 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
181 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
183 const Point& GetStartPoint() const { return maStartPt; }
184 const Point& GetEndPoint() const { return maEndPt; }
185 const LineInfo& GetLineInfo() const { return maLineInfo; }
186 void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
187 void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
188 void SetLineInfo(const LineInfo& rLineInfo) { maLineInfo = rLineInfo; }
191 class VCL_DLLPUBLIC MetaRectAction final : public MetaAction
193 private:
195 tools::Rectangle maRect;
197 public:
198 SAL_DLLPRIVATE MetaRectAction();
199 MetaRectAction(MetaRectAction const &) = default;
200 MetaRectAction(MetaRectAction &&) = default;
201 MetaRectAction & operator =(MetaRectAction const &) = delete; // due to MetaAction
202 MetaRectAction & operator =(MetaRectAction &&) = delete; // due to MetaAction
203 private:
204 SAL_DLLPRIVATE virtual ~MetaRectAction() override;
205 public:
206 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
207 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
209 explicit MetaRectAction( const tools::Rectangle& );
211 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
212 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
214 const tools::Rectangle& GetRect() const { return maRect; }
215 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
218 class VCL_DLLPUBLIC MetaRoundRectAction final : public MetaAction
220 private:
222 tools::Rectangle maRect;
223 sal_uInt32 mnHorzRound;
224 sal_uInt32 mnVertRound;
226 public:
227 SAL_DLLPRIVATE MetaRoundRectAction();
228 MetaRoundRectAction(MetaRoundRectAction const &) = default;
229 MetaRoundRectAction(MetaRoundRectAction &&) = default;
230 MetaRoundRectAction & operator =(MetaRoundRectAction const &) = delete; // due to MetaAction
231 MetaRoundRectAction & operator =(MetaRoundRectAction &&) = delete; // due to MetaAction
232 private:
233 SAL_DLLPRIVATE virtual ~MetaRoundRectAction() override;
234 public:
235 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
236 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
238 MetaRoundRectAction( const tools::Rectangle& rRect,
239 sal_uInt32 nHorzRound, sal_uInt32 nVertRound );
241 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
242 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
244 const tools::Rectangle& GetRect() const { return maRect; }
245 sal_uInt32 GetHorzRound() const { return mnHorzRound; }
246 sal_uInt32 GetVertRound() const { return mnVertRound; }
247 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
248 void SetHorzRound(sal_uInt32 rHorzRound) { mnHorzRound = rHorzRound; }
249 void SetVertRound(sal_uInt32 rVertRound) { mnVertRound = rVertRound; }
252 class VCL_DLLPUBLIC MetaEllipseAction final : public MetaAction
254 private:
256 tools::Rectangle maRect;
258 public:
259 SAL_DLLPRIVATE MetaEllipseAction();
260 MetaEllipseAction(MetaEllipseAction const &) = default;
261 MetaEllipseAction(MetaEllipseAction &&) = default;
262 MetaEllipseAction & operator =(MetaEllipseAction const &) = delete; // due to MetaAction
263 MetaEllipseAction & operator =(MetaEllipseAction &&) = delete; // due to MetaAction
264 private:
265 SAL_DLLPRIVATE virtual ~MetaEllipseAction() override;
266 public:
267 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
268 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
270 explicit MetaEllipseAction( const tools::Rectangle& );
272 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
273 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
275 const tools::Rectangle& GetRect() const { return maRect; }
276 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
279 class VCL_DLLPUBLIC MetaArcAction final : public MetaAction
281 private:
283 tools::Rectangle maRect;
284 Point maStartPt;
285 Point maEndPt;
287 public:
288 SAL_DLLPRIVATE MetaArcAction();
289 MetaArcAction(MetaArcAction const &) = default;
290 MetaArcAction(MetaArcAction &&) = default;
291 MetaArcAction & operator =(MetaArcAction const &) = delete; // due to MetaAction
292 MetaArcAction & operator =(MetaArcAction &&) = delete; // due to MetaAction
293 private:
294 SAL_DLLPRIVATE virtual ~MetaArcAction() override;
295 public:
296 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
297 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
299 MetaArcAction( const tools::Rectangle& rRect,
300 const Point& rStart, const Point& rEnd );
302 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
303 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
305 const tools::Rectangle& GetRect() const { return maRect; }
306 const Point& GetStartPoint() const { return maStartPt; }
307 const Point& GetEndPoint() const { return maEndPt; }
308 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
309 void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
310 void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
313 class VCL_DLLPUBLIC MetaPieAction final : public MetaAction
315 private:
317 tools::Rectangle maRect;
318 Point maStartPt;
319 Point maEndPt;
321 public:
322 SAL_DLLPRIVATE MetaPieAction();
323 MetaPieAction(MetaPieAction const &) = default;
324 MetaPieAction(MetaPieAction &&) = default;
325 MetaPieAction & operator =(MetaPieAction const &) = delete; // due to MetaAction
326 MetaPieAction & operator =(MetaPieAction &&) = delete; // due to MetaAction
327 private:
328 SAL_DLLPRIVATE virtual ~MetaPieAction() override;
329 public:
330 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
331 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
333 MetaPieAction( const tools::Rectangle& rRect,
334 const Point& rStart, const Point& rEnd );
336 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
337 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
339 const tools::Rectangle& GetRect() const { return maRect; }
340 const Point& GetStartPoint() const { return maStartPt; }
341 const Point& GetEndPoint() const { return maEndPt; }
342 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
343 void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
344 void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
347 class VCL_DLLPUBLIC MetaChordAction final : public MetaAction
349 private:
351 tools::Rectangle maRect;
352 Point maStartPt;
353 Point maEndPt;
355 public:
356 SAL_DLLPRIVATE MetaChordAction();
357 MetaChordAction(MetaChordAction const &) = default;
358 MetaChordAction(MetaChordAction &&) = default;
359 MetaChordAction & operator =(MetaChordAction const &) = delete; // due to MetaAction
360 MetaChordAction & operator =(MetaChordAction &&) = delete; // due to MetaAction
361 private:
362 SAL_DLLPRIVATE virtual ~MetaChordAction() override;
363 public:
364 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
365 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
367 MetaChordAction( const tools::Rectangle& rRect,
368 const Point& rStart, const Point& rEnd );
370 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
371 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
373 const tools::Rectangle& GetRect() const { return maRect; }
374 const Point& GetStartPoint() const { return maStartPt; }
375 const Point& GetEndPoint() const { return maEndPt; }
376 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
377 void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
378 void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
381 class VCL_DLLPUBLIC MetaPolyLineAction final : public MetaAction
383 private:
385 LineInfo maLineInfo;
386 tools::Polygon maPoly;
388 public:
389 SAL_DLLPRIVATE MetaPolyLineAction();
390 MetaPolyLineAction(MetaPolyLineAction const &) = default;
391 MetaPolyLineAction(MetaPolyLineAction &&) = default;
392 MetaPolyLineAction & operator =(MetaPolyLineAction const &) = delete; // due to MetaAction
393 MetaPolyLineAction & operator =(MetaPolyLineAction &&) = delete; // due to MetaAction
394 private:
395 SAL_DLLPRIVATE virtual ~MetaPolyLineAction() override;
396 public:
397 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
398 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
400 SAL_DLLPRIVATE explicit MetaPolyLineAction( tools::Polygon );
401 explicit MetaPolyLineAction( tools::Polygon , LineInfo );
403 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
404 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
406 const tools::Polygon& GetPolygon() const { return maPoly; }
407 const LineInfo& GetLineInfo() const { return maLineInfo; }
408 void SetLineInfo(const LineInfo& rLineInfo) { maLineInfo = rLineInfo; }
409 void SetPolygon(const tools::Polygon& rPoly) { maPoly = rPoly; }
412 class VCL_DLLPUBLIC MetaPolygonAction final : public MetaAction
414 private:
416 tools::Polygon maPoly;
418 public:
419 SAL_DLLPRIVATE MetaPolygonAction();
420 MetaPolygonAction(MetaPolygonAction const &) = default;
421 MetaPolygonAction(MetaPolygonAction &&) = default;
422 MetaPolygonAction & operator =(MetaPolygonAction const &) = delete; // due to MetaAction
423 MetaPolygonAction & operator =(MetaPolygonAction &&) = delete; // due to MetaAction
424 private:
425 SAL_DLLPRIVATE virtual ~MetaPolygonAction() override;
426 public:
427 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
428 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
430 explicit MetaPolygonAction( tools::Polygon );
432 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
433 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
435 const tools::Polygon& GetPolygon() const { return maPoly; }
436 void SetPolygon(const tools::Polygon& rPoly) { maPoly = rPoly; }
439 class VCL_DLLPUBLIC MetaPolyPolygonAction final : public MetaAction
441 private:
443 tools::PolyPolygon maPolyPoly;
445 public:
446 SAL_DLLPRIVATE MetaPolyPolygonAction();
447 MetaPolyPolygonAction(MetaPolyPolygonAction const &) = default;
448 MetaPolyPolygonAction(MetaPolyPolygonAction &&) = default;
449 MetaPolyPolygonAction & operator =(MetaPolyPolygonAction const &) = delete; // due to MetaAction
450 MetaPolyPolygonAction & operator =(MetaPolyPolygonAction &&) = delete; // due to MetaAction
451 private:
452 SAL_DLLPRIVATE virtual ~MetaPolyPolygonAction() override;
453 public:
454 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
455 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
457 explicit MetaPolyPolygonAction( tools::PolyPolygon );
459 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
460 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
462 const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
463 void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
466 class SAL_DLLPUBLIC_RTTI MetaTextAction final : public MetaAction
468 private:
470 Point maPt;
471 OUString maStr;
472 sal_Int32 mnIndex;
473 sal_Int32 mnLen;
475 public:
476 MetaTextAction();
477 MetaTextAction(MetaTextAction const &) = default;
478 MetaTextAction(MetaTextAction &&) = default;
479 MetaTextAction & operator =(MetaTextAction const &) = delete; // due to MetaAction
480 MetaTextAction & operator =(MetaTextAction &&) = delete; // due to MetaAction
481 private:
482 virtual ~MetaTextAction() override;
483 public:
484 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
485 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
487 MetaTextAction( const Point& rPt, OUString aStr,
488 sal_Int32 nIndex, sal_Int32 nLen );
490 virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
491 virtual void Scale( double fScaleX, double fScaleY ) override;
493 const Point& GetPoint() const { return maPt; }
494 const OUString& GetText() const { return maStr; }
495 sal_Int32 GetIndex() const { return mnIndex; }
496 sal_Int32 GetLen() const { return mnLen; }
497 void SetPoint(const Point& rPt) { maPt = rPt; }
498 void SetText(const OUString& rStr) { maStr = rStr; }
499 void SetIndex(sal_Int32 rIndex) { mnIndex = rIndex; }
500 void SetLen(sal_Int32 rLen) { mnLen = rLen; }
503 class VCL_DLLPUBLIC MetaTextArrayAction final : public MetaAction
505 private:
507 Point maStartPt;
508 OUString maStr;
509 KernArray maDXAry;
510 std::vector<sal_Bool> maKashidaAry;
511 sal_Int32 mnIndex;
512 sal_Int32 mnLen;
513 sal_Int32 mnLayoutContextIndex = -1;
514 sal_Int32 mnLayoutContextLen = -1;
516 SAL_DLLPRIVATE virtual ~MetaTextArrayAction() override;
518 public:
519 SAL_DLLPRIVATE MetaTextArrayAction();
520 SAL_DLLPRIVATE MetaTextArrayAction( const MetaTextArrayAction& rAction );
521 SAL_DLLPRIVATE MetaTextArrayAction( const Point& rStartPt, OUString aStr,
522 KernArray rDXAry,
523 std::vector<sal_Bool> pKashidaAry,
524 sal_Int32 nIndex,
525 sal_Int32 nLen );
526 MetaTextArrayAction( const Point& rStartPt, OUString aStr,
527 KernArraySpan pDXAry,
528 std::span<const sal_Bool> pKashidaAry,
529 sal_Int32 nIndex,
530 sal_Int32 nLen );
531 MetaTextArrayAction(const Point& rStartPt, OUString aStr, KernArraySpan pDXAry,
532 std::span<const sal_Bool> pKashidaAry, sal_Int32 nIndex, sal_Int32 nLen,
533 sal_Int32 nLayoutContextIndex, sal_Int32 nLayoutContextLen);
535 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
537 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
539 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
540 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
542 const Point& GetPoint() const { return maStartPt; }
543 const OUString& GetText() const { return maStr; }
544 sal_Int32 GetIndex() const { return mnIndex; }
545 sal_Int32 GetLen() const { return mnLen; }
546 sal_Int32 GetLayoutContextIndex() const { return mnLayoutContextIndex; }
547 sal_Int32 GetLayoutContextLen() const { return mnLayoutContextLen; }
548 const KernArray& GetDXArray() const { return maDXAry; }
549 const std::vector<sal_Bool> & GetKashidaArray() const { return maKashidaAry; }
550 void SetPoint(const Point& rPt) { maStartPt = rPt; }
551 void SetText(const OUString& rStr) { maStr = rStr; }
552 void SetIndex(sal_Int32 rIndex) { mnIndex = rIndex; }
553 void SetLen(sal_Int32 rLen) { mnLen = rLen; }
554 void SetLayoutContextIndex(sal_Int32 nLayoutContextIndex)
556 mnLayoutContextIndex = nLayoutContextIndex;
558 void SetLayoutContextLen(sal_Int32 nLayoutContextLen)
560 mnLayoutContextLen = nLayoutContextLen;
562 SAL_DLLPRIVATE void SetDXArray(KernArray aArray);
563 SAL_DLLPRIVATE void SetKashidaArray(std::vector<sal_Bool> aArray);
566 class SAL_DLLPUBLIC_RTTI MetaStretchTextAction final : public MetaAction
568 private:
570 Point maPt;
571 OUString maStr;
572 sal_uInt32 mnWidth;
573 sal_Int32 mnIndex;
574 sal_Int32 mnLen;
576 public:
577 MetaStretchTextAction();
578 MetaStretchTextAction(MetaStretchTextAction const &) = default;
579 MetaStretchTextAction(MetaStretchTextAction &&) = default;
580 MetaStretchTextAction & operator =(MetaStretchTextAction const &) = delete; // due to MetaAction
581 MetaStretchTextAction & operator =(MetaStretchTextAction &&) = delete; // due to MetaAction
582 private:
583 virtual ~MetaStretchTextAction() override;
584 public:
585 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
586 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
588 MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
589 OUString aStr,
590 sal_Int32 nIndex, sal_Int32 nLen );
592 virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
593 virtual void Scale( double fScaleX, double fScaleY ) override;
595 const Point& GetPoint() const { return maPt; }
596 const OUString& GetText() const { return maStr; }
597 sal_uInt32 GetWidth() const { return mnWidth; }
598 sal_Int32 GetIndex() const { return mnIndex; }
599 sal_Int32 GetLen() const { return mnLen; }
600 void SetPoint(const Point& rPt) { maPt = rPt; }
601 void SetText(const OUString& rStr) { maStr = rStr; }
602 void SetWidth(sal_uInt32 rWidth) { mnWidth = rWidth; }
603 void SetIndex(sal_uInt32 rIndex) { mnIndex = rIndex; }
604 void SetLen(sal_uInt32 rLen) { mnLen = rLen; }
607 class SAL_DLLPUBLIC_RTTI MetaTextRectAction final : public MetaAction
609 private:
611 tools::Rectangle maRect;
612 OUString maStr;
613 DrawTextFlags mnStyle;
615 public:
616 MetaTextRectAction();
617 MetaTextRectAction(MetaTextRectAction const &) = default;
618 MetaTextRectAction(MetaTextRectAction &&) = default;
619 MetaTextRectAction & operator =(MetaTextRectAction const &) = delete; // due to MetaAction
620 MetaTextRectAction & operator =(MetaTextRectAction &&) = delete; // due to MetaAction
621 private:
622 virtual ~MetaTextRectAction() override;
623 public:
624 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
625 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
627 MetaTextRectAction( const tools::Rectangle& rRect,
628 OUString aStr, DrawTextFlags nStyle );
630 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
631 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
633 const tools::Rectangle& GetRect() const { return maRect; }
634 const OUString& GetText() const { return maStr; }
635 DrawTextFlags GetStyle() const { return mnStyle; }
636 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
637 void SetText(const OUString& rStr) { maStr = rStr; }
638 void SetStyle(DrawTextFlags rStyle) { mnStyle = rStyle; }
641 class SAL_DLLPUBLIC_RTTI MetaTextLineAction final : public MetaAction
643 private:
645 Point maPos;
646 tools::Long mnWidth;
647 FontStrikeout meStrikeout;
648 FontLineStyle meUnderline;
649 FontLineStyle meOverline;
651 public:
652 MetaTextLineAction();
653 MetaTextLineAction(MetaTextLineAction const &) = default;
654 MetaTextLineAction(MetaTextLineAction &&) = default;
655 MetaTextLineAction & operator =(MetaTextLineAction const &) = delete; // due to MetaAction
656 MetaTextLineAction & operator =(MetaTextLineAction &&) = delete; // due to MetaAction
657 private:
658 virtual ~MetaTextLineAction() override;
659 public:
660 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
661 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
663 MetaTextLineAction( const Point& rPos, tools::Long nWidth,
664 FontStrikeout eStrikeout,
665 FontLineStyle eUnderline,
666 FontLineStyle eOverline );
667 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
668 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
670 const Point& GetStartPoint() const { return maPos; }
671 tools::Long GetWidth() const { return mnWidth; }
672 FontStrikeout GetStrikeout() const { return meStrikeout; }
673 FontLineStyle GetUnderline() const { return meUnderline; }
674 FontLineStyle GetOverline() const { return meOverline; }
675 void SetStartPoint(const Point& rPos) { maPos = rPos; }
676 void SetWidth(tools::Long rWidth) { mnWidth = rWidth; }
677 void SetStrikeout(FontStrikeout eStrikeout) { meStrikeout = eStrikeout; }
678 void SetUnderline(FontLineStyle eUnderline) { meUnderline = eUnderline; }
679 void SetOverline(FontLineStyle eOverline) { meOverline = eOverline; }
682 class VCL_DLLPUBLIC MetaBmpAction final : public MetaAction
684 private:
686 Bitmap maBmp;
687 Point maPt;
689 public:
690 SAL_DLLPRIVATE MetaBmpAction();
691 MetaBmpAction(MetaBmpAction const &) = default;
692 MetaBmpAction(MetaBmpAction &&) = default;
693 MetaBmpAction & operator =(MetaBmpAction const &) = delete; // due to MetaAction
694 MetaBmpAction & operator =(MetaBmpAction &&) = delete; // due to MetaAction
695 private:
696 SAL_DLLPRIVATE virtual ~MetaBmpAction() override;
697 public:
698 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
699 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
701 MetaBmpAction( const Point& rPt, const Bitmap& rBmp );
703 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
704 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
706 const Bitmap& GetBitmap() const { return maBmp; }
707 const Point& GetPoint() const { return maPt; }
708 void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
709 void SetPoint(const Point& rPt) { maPt = rPt; }
712 class VCL_DLLPUBLIC MetaBmpScaleAction final : public MetaAction
714 private:
716 Bitmap maBmp;
717 Point maPt;
718 Size maSz;
720 public:
721 SAL_DLLPRIVATE MetaBmpScaleAction();
722 MetaBmpScaleAction(MetaBmpScaleAction const &) = default;
723 MetaBmpScaleAction(MetaBmpScaleAction &&) = default;
724 MetaBmpScaleAction & operator =(MetaBmpScaleAction const &) = delete; // due to MetaAction
725 MetaBmpScaleAction & operator =(MetaBmpScaleAction &&) = delete; // due to MetaAction
726 private:
727 SAL_DLLPRIVATE virtual ~MetaBmpScaleAction() override;
728 public:
729 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
730 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
732 MetaBmpScaleAction( const Point& rPt, const Size& rSz,
733 const Bitmap& rBmp );
735 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
736 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
738 const Bitmap& GetBitmap() const { return maBmp; }
739 const Point& GetPoint() const { return maPt; }
740 const Size& GetSize() const { return maSz; }
741 void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
742 void SetPoint(const Point& rPt) { maPt = rPt; }
743 void SetSize(const Size& rSz) { maSz = rSz; }
746 class VCL_DLLPUBLIC MetaBmpScalePartAction final : public MetaAction
748 private:
750 Bitmap maBmp;
751 Point maDstPt;
752 Size maDstSz;
753 Point maSrcPt;
754 Size maSrcSz;
756 public:
757 SAL_DLLPRIVATE MetaBmpScalePartAction();
758 MetaBmpScalePartAction(MetaBmpScalePartAction const &) = default;
759 MetaBmpScalePartAction(MetaBmpScalePartAction &&) = default;
760 MetaBmpScalePartAction & operator =(MetaBmpScalePartAction const &) = delete; // due to MetaAction
761 MetaBmpScalePartAction & operator =(MetaBmpScalePartAction &&) = delete; // due to MetaAction
762 private:
763 SAL_DLLPRIVATE virtual ~MetaBmpScalePartAction() override;
764 public:
765 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
766 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
768 MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
769 const Point& rSrcPt, const Size& rSrcSz,
770 const Bitmap& rBmp );
772 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
773 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
775 const Bitmap& GetBitmap() const { return maBmp; }
776 const Point& GetDestPoint() const { return maDstPt; }
777 const Size& GetDestSize() const { return maDstSz; }
778 const Point& GetSrcPoint() const { return maSrcPt; }
779 const Size& GetSrcSize() const { return maSrcSz; }
780 void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
781 void SetDestPoint(const Point& rPt) { maDstPt = rPt; }
782 void SetDestSize(const Size& rSz) { maDstSz = rSz; }
783 void SetSrcPoint(const Point& rPt) { maSrcPt = rPt; }
784 void SetSrcSize(const Size& rSz) { maSrcSz = rSz; }
787 class VCL_DLLPUBLIC MetaBmpExAction final : public MetaAction
789 private:
791 BitmapEx maBmpEx;
792 Point maPt;
794 public:
795 SAL_DLLPRIVATE MetaBmpExAction();
796 MetaBmpExAction(MetaBmpExAction const &) = default;
797 MetaBmpExAction(MetaBmpExAction &&) = default;
798 MetaBmpExAction & operator =(MetaBmpExAction const &) = delete; // due to MetaAction
799 MetaBmpExAction & operator =(MetaBmpExAction &&) = delete; // due to MetaAction
800 private:
801 SAL_DLLPRIVATE virtual ~MetaBmpExAction() override;
802 public:
803 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
804 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
806 MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx );
808 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
809 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
811 const BitmapEx& GetBitmapEx() const { return maBmpEx; }
812 const Point& GetPoint() const { return maPt; }
813 void SetBitmapEx(BitmapEx rBmpEx) { maBmpEx = rBmpEx; }
814 void SetPoint(const Point& rPt) { maPt = rPt; }
815 bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
818 class VCL_DLLPUBLIC MetaBmpExScaleAction final : public MetaAction
820 private:
822 BitmapEx maBmpEx;
823 Point maPt;
824 Size maSz;
826 public:
827 SAL_DLLPRIVATE MetaBmpExScaleAction();
828 MetaBmpExScaleAction(MetaBmpExScaleAction const &) = default;
829 MetaBmpExScaleAction(MetaBmpExScaleAction &&) = default;
830 MetaBmpExScaleAction & operator =(MetaBmpExScaleAction const &) = delete; // due to MetaAction
831 MetaBmpExScaleAction & operator =(MetaBmpExScaleAction &&) = delete; // due to MetaAction
832 private:
833 SAL_DLLPRIVATE virtual ~MetaBmpExScaleAction() override;
834 public:
835 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
836 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
838 MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
839 const BitmapEx& rBmpEx ) ;
841 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
842 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
844 const BitmapEx& GetBitmapEx() const { return maBmpEx; }
845 const Point& GetPoint() const { return maPt; }
846 const Size& GetSize() const { return maSz; }
847 void SetBitmapEx(const BitmapEx& rBmpEx) { maBmpEx = rBmpEx; }
848 void SetPoint(const Point& rPt) { maPt = rPt; }
849 void SetSize(const Size& rSz) { maSz = rSz; }
850 bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
853 class VCL_DLLPUBLIC MetaBmpExScalePartAction final : public MetaAction
855 private:
857 BitmapEx maBmpEx;
858 Point maDstPt;
859 Size maDstSz;
860 Point maSrcPt;
861 Size maSrcSz;
863 public:
864 SAL_DLLPRIVATE MetaBmpExScalePartAction();
865 MetaBmpExScalePartAction(MetaBmpExScalePartAction const &) = default;
866 MetaBmpExScalePartAction(MetaBmpExScalePartAction &&) = default;
867 MetaBmpExScalePartAction & operator =(MetaBmpExScalePartAction const &) = delete; // due to MetaAction
868 MetaBmpExScalePartAction & operator =(MetaBmpExScalePartAction &&) = delete; // due to MetaAction
869 private:
870 SAL_DLLPRIVATE virtual ~MetaBmpExScalePartAction() override;
871 public:
872 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
873 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
875 MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
876 const Point& rSrcPt, const Size& rSrcSz,
877 const BitmapEx& rBmpEx );
879 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
880 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
882 const BitmapEx& GetBitmapEx() const { return maBmpEx; }
883 const Point& GetDestPoint() const { return maDstPt; }
884 const Size& GetDestSize() const { return maDstSz; }
885 const Point& GetSrcPoint() const { return maSrcPt; }
886 const Size& GetSrcSize() const { return maSrcSz; }
887 void SetBitmapEx(const BitmapEx& rBmpEx) { maBmpEx = rBmpEx; }
888 void SetDestPoint(const Point& rDstPt) { maDstPt = rDstPt; }
889 void SetDestSize(const Size& rDstSz) { maDstSz = rDstSz; }
890 void SetSrcPoint(const Point& rSrcPt) { maSrcPt = rSrcPt; }
891 void SetSrcSize(const Size& rSrcSz) { maSrcSz = rSrcSz; }
892 bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
895 class SAL_DLLPUBLIC_RTTI MetaMaskAction final : public MetaAction
897 private:
899 Bitmap maBmp;
900 Color maColor;
901 Point maPt;
903 public:
904 MetaMaskAction();
905 MetaMaskAction(MetaMaskAction const &) = default;
906 MetaMaskAction(MetaMaskAction &&) = default;
907 MetaMaskAction & operator =(MetaMaskAction const &) = delete; // due to MetaAction
908 MetaMaskAction & operator =(MetaMaskAction &&) = delete; // due to MetaAction
909 private:
910 virtual ~MetaMaskAction() override;
911 public:
912 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
913 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
915 MetaMaskAction( const Point& rPt,
916 const Bitmap& rBmp,
917 const Color& rColor );
919 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
920 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
922 const Bitmap& GetBitmap() const { return maBmp; }
923 const Color& GetColor() const { return maColor; }
924 const Point& GetPoint() const { return maPt; }
925 void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
926 void SetPoint(const Point& rPt) { maPt = rPt; }
929 class SAL_DLLPUBLIC_RTTI MetaMaskScaleAction final : public MetaAction
931 private:
933 Bitmap maBmp;
934 Color maColor;
935 Point maPt;
936 Size maSz;
938 public:
939 MetaMaskScaleAction();
940 MetaMaskScaleAction(MetaMaskScaleAction const &) = default;
941 MetaMaskScaleAction(MetaMaskScaleAction &&) = default;
942 MetaMaskScaleAction & operator =(MetaMaskScaleAction const &) = delete; // due to MetaAction
943 MetaMaskScaleAction & operator =(MetaMaskScaleAction &&) = delete; // due to MetaAction
944 private:
945 virtual ~MetaMaskScaleAction() override;
946 public:
947 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
948 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
950 MetaMaskScaleAction( const Point& rPt, const Size& rSz,
951 const Bitmap& rBmp,
952 const Color& rColor );
954 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
955 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
957 const Bitmap& GetBitmap() const { return maBmp; }
958 const Color& GetColor() const { return maColor; }
959 const Point& GetPoint() const { return maPt; }
960 const Size& GetSize() const { return maSz; }
961 void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
962 void SetPoint(const Point& rPt) { maPt = rPt; }
963 void SetSize(const Size& rSz) { maSz = rSz; }
966 class SAL_DLLPUBLIC_RTTI MetaMaskScalePartAction final : public MetaAction
968 private:
970 Bitmap maBmp;
971 Color maColor;
972 Point maDstPt;
973 Size maDstSz;
974 Point maSrcPt;
975 Size maSrcSz;
977 public:
978 MetaMaskScalePartAction();
979 MetaMaskScalePartAction(MetaMaskScalePartAction const &) = default;
980 MetaMaskScalePartAction(MetaMaskScalePartAction &&) = default;
981 MetaMaskScalePartAction & operator =(MetaMaskScalePartAction const &) = delete; // due to MetaAction
982 MetaMaskScalePartAction & operator =(MetaMaskScalePartAction &&) = delete; // due to MetaAction
983 private:
984 virtual ~MetaMaskScalePartAction() override;
985 public:
986 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
987 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
989 MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
990 const Point& rSrcPt, const Size& rSrcSz,
991 const Bitmap& rBmp,
992 const Color& rColor );
994 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
995 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
997 const Bitmap& GetBitmap() const { return maBmp; }
998 const Color& GetColor() const { return maColor; }
999 const Point& GetDestPoint() const { return maDstPt; }
1000 const Size& GetDestSize() const { return maDstSz; }
1001 const Point& GetSrcPoint() const { return maSrcPt; }
1002 const Size& GetSrcSize() const { return maSrcSz; }
1003 void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
1004 void SetColor(Color rColor) { maColor = rColor; }
1005 void SetDestPoint(const Point& rPt) { maDstPt = rPt; }
1006 void SetDestSize(const Size& rSz) { maDstSz = rSz; }
1007 void SetSrcPoint(const Point& rPt) { maSrcPt = rPt; }
1008 void SetSrcSize(const Size& rSz) { maSrcSz = rSz; }
1011 class SAL_DLLPUBLIC_RTTI MetaGradientAction final : public MetaAction
1013 private:
1015 tools::Rectangle maRect;
1016 Gradient maGradient;
1018 public:
1019 MetaGradientAction();
1020 MetaGradientAction(MetaGradientAction const &) = default;
1021 MetaGradientAction(MetaGradientAction &&) = default;
1022 MetaGradientAction & operator =(MetaGradientAction const &) = delete; // due to MetaAction
1023 MetaGradientAction & operator =(MetaGradientAction &&) = delete; // due to MetaAction
1024 private:
1025 virtual ~MetaGradientAction() override;
1026 public:
1027 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1028 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1030 MetaGradientAction( const tools::Rectangle& rRect, Gradient aGradient );
1032 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1033 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1035 const tools::Rectangle& GetRect() const { return maRect; }
1036 const Gradient& GetGradient() const { return maGradient; }
1037 void SetGradient(const Gradient& rGradient) { maGradient = rGradient; }
1038 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
1041 class VCL_DLLPUBLIC MetaGradientExAction final : public MetaAction
1043 private:
1045 tools::PolyPolygon maPolyPoly;
1046 Gradient maGradient;
1048 public:
1049 SAL_DLLPRIVATE MetaGradientExAction();
1050 MetaGradientExAction(MetaGradientExAction const &) = default;
1051 MetaGradientExAction(MetaGradientExAction &&) = default;
1052 MetaGradientExAction & operator =(MetaGradientExAction const &) = delete; // due to MetaAction
1053 MetaGradientExAction & operator =(MetaGradientExAction &&) = delete; // due to MetaAction
1054 private:
1055 SAL_DLLPRIVATE virtual ~MetaGradientExAction() override;
1056 public:
1057 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1058 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1060 SAL_DLLPRIVATE MetaGradientExAction( tools::PolyPolygon rPolyPoly, Gradient aGradient );
1062 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1063 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1065 const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
1066 const Gradient& GetGradient() const { return maGradient; }
1067 void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
1068 void SetGradient(const Gradient& rGradient) { maGradient = rGradient; }
1071 class SAL_DLLPUBLIC_RTTI MetaHatchAction final : public MetaAction
1073 private:
1075 tools::PolyPolygon maPolyPoly;
1076 Hatch maHatch;
1078 public:
1079 MetaHatchAction();
1080 MetaHatchAction(MetaHatchAction const &) = default;
1081 MetaHatchAction(MetaHatchAction &&) = default;
1082 MetaHatchAction & operator =(MetaHatchAction const &) = delete; // due to MetaAction
1083 MetaHatchAction & operator =(MetaHatchAction &&) = delete; // due to MetaAction
1084 private:
1085 virtual ~MetaHatchAction() override;
1086 public:
1087 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1088 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1090 MetaHatchAction( tools::PolyPolygon aPolyPoly, const Hatch& rHatch );
1092 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1093 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1095 const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
1096 const Hatch& GetHatch() const { return maHatch; }
1097 void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
1098 void SetHatch(const Hatch& rHatch) { maHatch = rHatch; }
1101 class VCL_DLLPUBLIC MetaWallpaperAction final : public MetaAction
1103 private:
1105 tools::Rectangle maRect;
1106 Wallpaper maWallpaper;
1108 public:
1109 SAL_DLLPRIVATE MetaWallpaperAction();
1110 MetaWallpaperAction(MetaWallpaperAction const &) = default;
1111 MetaWallpaperAction(MetaWallpaperAction &&) = default;
1112 MetaWallpaperAction & operator =(MetaWallpaperAction const &) = delete; // due to MetaAction
1113 MetaWallpaperAction & operator =(MetaWallpaperAction &&) = delete; // due to MetaAction
1114 private:
1115 SAL_DLLPRIVATE virtual ~MetaWallpaperAction() override;
1116 public:
1117 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1118 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1120 MetaWallpaperAction( const tools::Rectangle& rRect,
1121 const Wallpaper& rPaper );
1123 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1124 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1126 const tools::Rectangle& GetRect() const { return maRect; }
1127 const Wallpaper& GetWallpaper() const { return maWallpaper; }
1128 void SetWallpaper(const Wallpaper& rWallpaper) { maWallpaper = rWallpaper; }
1131 class VCL_DLLPUBLIC MetaClipRegionAction final : public MetaAction
1133 private:
1135 vcl::Region maRegion;
1136 bool mbClip;
1138 public:
1139 SAL_DLLPRIVATE MetaClipRegionAction();
1140 MetaClipRegionAction(MetaClipRegionAction const &) = default;
1141 MetaClipRegionAction(MetaClipRegionAction &&) = default;
1142 MetaClipRegionAction & operator =(MetaClipRegionAction const &) = delete; // due to MetaAction
1143 MetaClipRegionAction & operator =(MetaClipRegionAction &&) = delete; // due to MetaAction
1144 private:
1145 SAL_DLLPRIVATE virtual ~MetaClipRegionAction() override;
1146 public:
1147 virtual void Execute( OutputDevice* pOut ) override;
1148 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1150 SAL_DLLPRIVATE MetaClipRegionAction( vcl::Region aRegion, bool bClip );
1152 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1153 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1155 const vcl::Region& GetRegion() const { return maRegion; }
1156 bool IsClipping() const { return mbClip; }
1157 void SetRegion(const vcl::Region& rRegion) { maRegion = rRegion; }
1158 void SetClipping(bool bClip) { mbClip = bClip; }
1161 class VCL_DLLPUBLIC MetaISectRectClipRegionAction final : public MetaAction
1163 private:
1165 tools::Rectangle maRect;
1167 public:
1168 SAL_DLLPRIVATE MetaISectRectClipRegionAction();
1169 MetaISectRectClipRegionAction(MetaISectRectClipRegionAction const &) = default;
1170 MetaISectRectClipRegionAction(MetaISectRectClipRegionAction &&) = default;
1171 MetaISectRectClipRegionAction & operator =(MetaISectRectClipRegionAction const &) = delete; // due to MetaAction
1172 MetaISectRectClipRegionAction & operator =(MetaISectRectClipRegionAction &&) = delete; // due to MetaAction
1173 private:
1174 SAL_DLLPRIVATE virtual ~MetaISectRectClipRegionAction() override;
1175 public:
1176 virtual void Execute( OutputDevice* pOut ) override;
1177 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1179 explicit MetaISectRectClipRegionAction( const tools::Rectangle& );
1181 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1182 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1184 const tools::Rectangle& GetRect() const { return maRect; }
1185 void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
1188 class VCL_DLLPUBLIC MetaISectRegionClipRegionAction final : public MetaAction
1190 private:
1192 vcl::Region maRegion;
1194 public:
1195 SAL_DLLPRIVATE MetaISectRegionClipRegionAction();
1196 MetaISectRegionClipRegionAction(MetaISectRegionClipRegionAction const &) = default;
1197 MetaISectRegionClipRegionAction(MetaISectRegionClipRegionAction &&) = default;
1198 MetaISectRegionClipRegionAction & operator =(MetaISectRegionClipRegionAction const &) = delete; // due to MetaAction
1199 MetaISectRegionClipRegionAction & operator =(MetaISectRegionClipRegionAction &&) = delete; // due to MetaAction
1200 private:
1201 SAL_DLLPRIVATE virtual ~MetaISectRegionClipRegionAction() override;
1202 public:
1203 virtual void Execute( OutputDevice* pOut ) override;
1204 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1206 explicit MetaISectRegionClipRegionAction( vcl::Region );
1208 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1209 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1211 const vcl::Region& GetRegion() const { return maRegion; }
1212 void SetRegion(const vcl::Region& rRegion) { maRegion = rRegion; }
1215 class VCL_DLLPUBLIC MetaMoveClipRegionAction final : public MetaAction
1217 private:
1219 tools::Long mnHorzMove;
1220 tools::Long mnVertMove;
1222 public:
1223 SAL_DLLPRIVATE MetaMoveClipRegionAction();
1224 MetaMoveClipRegionAction(MetaMoveClipRegionAction const &) = default;
1225 MetaMoveClipRegionAction(MetaMoveClipRegionAction &&) = default;
1226 MetaMoveClipRegionAction & operator =(MetaMoveClipRegionAction const &) = delete; // due to MetaAction
1227 MetaMoveClipRegionAction & operator =(MetaMoveClipRegionAction &&) = delete; // due to MetaAction
1228 private:
1229 SAL_DLLPRIVATE virtual ~MetaMoveClipRegionAction() override;
1230 public:
1231 virtual void Execute( OutputDevice* pOut ) override;
1232 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1234 SAL_DLLPRIVATE MetaMoveClipRegionAction( tools::Long nHorzMove, tools::Long nVertMove );
1236 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1238 tools::Long GetHorzMove() const { return mnHorzMove; }
1239 tools::Long GetVertMove() const { return mnVertMove; }
1240 void SetHorzMove(tools::Long nHorzMove) { mnHorzMove = nHorzMove; }
1241 void SetVertMove(tools::Long nVertMove) { mnVertMove = nVertMove; }
1244 class VCL_DLLPUBLIC MetaLineColorAction final : public MetaAction
1246 private:
1248 Color maColor;
1249 bool mbSet;
1251 public:
1252 SAL_DLLPRIVATE MetaLineColorAction();
1253 MetaLineColorAction(MetaLineColorAction const &) = default;
1254 MetaLineColorAction(MetaLineColorAction &&) = default;
1255 MetaLineColorAction & operator =(MetaLineColorAction const &) = delete; // due to MetaAction
1256 MetaLineColorAction & operator =(MetaLineColorAction &&) = delete; // due to MetaAction
1257 private:
1258 SAL_DLLPRIVATE virtual ~MetaLineColorAction() override;
1259 public:
1260 virtual void Execute( OutputDevice* pOut ) override;
1261 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1263 MetaLineColorAction( const Color& rColor, bool bSet );
1265 const Color& GetColor() const { return maColor; }
1266 bool IsSetting() const { return mbSet; }
1267 void SetColor(const Color& rColor) { maColor = rColor; }
1268 void SetSetting(bool rSet) { mbSet = rSet; }
1271 class VCL_DLLPUBLIC MetaFillColorAction final : public MetaAction
1273 private:
1275 Color maColor;
1276 bool mbSet;
1278 public:
1279 SAL_DLLPRIVATE MetaFillColorAction();
1280 MetaFillColorAction(MetaFillColorAction const &) = default;
1281 MetaFillColorAction(MetaFillColorAction &&) = default;
1282 MetaFillColorAction & operator =(MetaFillColorAction const &) = delete; // due to MetaAction
1283 MetaFillColorAction & operator =(MetaFillColorAction &&) = delete; // due to MetaAction
1284 private:
1285 virtual ~MetaFillColorAction() override;
1286 public:
1287 virtual void Execute( OutputDevice* pOut ) override;
1288 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1290 MetaFillColorAction( const Color& rColor, bool bSet );
1292 const Color& GetColor() const { return maColor; }
1293 bool IsSetting() const { return mbSet; }
1294 void SetSetting(bool rSet) { mbSet = rSet; }
1295 void SetColor(Color rColor) { maColor = rColor; }
1299 class VCL_DLLPUBLIC MetaTextColorAction final : public MetaAction
1301 private:
1303 Color maColor;
1305 public:
1306 SAL_DLLPRIVATE MetaTextColorAction();
1307 MetaTextColorAction(MetaTextColorAction const &) = default;
1308 MetaTextColorAction(MetaTextColorAction &&) = default;
1309 MetaTextColorAction & operator =(MetaTextColorAction const &) = delete; // due to MetaAction
1310 MetaTextColorAction & operator =(MetaTextColorAction &&) = delete; // due to MetaAction
1311 private:
1312 SAL_DLLPRIVATE virtual ~MetaTextColorAction() override;
1313 public:
1314 virtual void Execute( OutputDevice* pOut ) override;
1315 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1317 explicit MetaTextColorAction( const Color& );
1319 const Color& GetColor() const { return maColor; }
1320 void SetColor(Color rColor) { maColor = rColor; }
1323 class VCL_DLLPUBLIC MetaTextFillColorAction final : public MetaAction
1325 private:
1327 Color maColor;
1328 bool mbSet;
1330 public:
1331 SAL_DLLPRIVATE MetaTextFillColorAction();
1332 MetaTextFillColorAction(MetaTextFillColorAction const &) = default;
1333 MetaTextFillColorAction(MetaTextFillColorAction &&) = default;
1334 MetaTextFillColorAction & operator =(MetaTextFillColorAction const &) = delete; // due to MetaAction
1335 MetaTextFillColorAction & operator =(MetaTextFillColorAction &&) = delete; // due to MetaAction
1336 private:
1337 SAL_DLLPRIVATE virtual ~MetaTextFillColorAction() override;
1338 public:
1339 virtual void Execute( OutputDevice* pOut ) override;
1340 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1342 MetaTextFillColorAction( const Color& rColor, bool bSet );
1344 const Color& GetColor() const { return maColor; }
1345 void SetColor(Color rColor) { maColor = rColor; }
1346 void SetSetting(bool bSet) { mbSet = bSet; }
1347 bool IsSetting() const { return mbSet; }
1351 class VCL_DLLPUBLIC MetaTextLineColorAction final : public MetaAction
1353 private:
1355 Color maColor;
1356 bool mbSet;
1358 public:
1359 SAL_DLLPRIVATE MetaTextLineColorAction();
1360 MetaTextLineColorAction(MetaTextLineColorAction const &) = default;
1361 MetaTextLineColorAction(MetaTextLineColorAction &&) = default;
1362 MetaTextLineColorAction & operator =(MetaTextLineColorAction const &) = delete; // due to MetaAction
1363 MetaTextLineColorAction & operator =(MetaTextLineColorAction &&) = delete; // due to MetaAction
1364 private:
1365 SAL_DLLPRIVATE virtual ~MetaTextLineColorAction() override;
1366 public:
1367 virtual void Execute( OutputDevice* pOut ) override;
1368 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1370 SAL_DLLPRIVATE MetaTextLineColorAction( const Color& rColor, bool bSet );
1372 const Color& GetColor() const { return maColor; }
1373 void SetColor(const Color& rColor) { maColor = rColor; }
1374 void SetSetting(bool bSet) { mbSet = bSet; }
1375 bool IsSetting() const { return mbSet; }
1378 class VCL_DLLPUBLIC MetaOverlineColorAction final : public MetaAction
1380 private:
1382 Color maColor;
1383 bool mbSet;
1385 public:
1386 SAL_DLLPRIVATE MetaOverlineColorAction();
1387 MetaOverlineColorAction(MetaOverlineColorAction const &) = default;
1388 MetaOverlineColorAction(MetaOverlineColorAction &&) = default;
1389 MetaOverlineColorAction & operator =(MetaOverlineColorAction const &) = delete; // due to MetaAction
1390 MetaOverlineColorAction & operator =(MetaOverlineColorAction &&) = delete; // due to MetaAction
1391 private:
1392 SAL_DLLPRIVATE virtual ~MetaOverlineColorAction() override;
1393 public:
1394 virtual void Execute( OutputDevice* pOut ) override;
1395 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1397 SAL_DLLPRIVATE MetaOverlineColorAction( const Color& rColor, bool bSet );
1399 const Color& GetColor() const { return maColor; }
1400 void SetColor(const Color& rColor) { maColor = rColor; }
1401 void SetSetting(bool bSet) { mbSet = bSet; }
1402 bool IsSetting() const { return mbSet; }
1405 class VCL_DLLPUBLIC MetaTextAlignAction final : public MetaAction
1407 private:
1409 TextAlign maAlign;
1411 public:
1412 SAL_DLLPRIVATE MetaTextAlignAction();
1413 MetaTextAlignAction(MetaTextAlignAction const &) = default;
1414 MetaTextAlignAction(MetaTextAlignAction &&) = default;
1415 MetaTextAlignAction & operator =(MetaTextAlignAction const &) = delete; // due to MetaAction
1416 MetaTextAlignAction & operator =(MetaTextAlignAction &&) = delete; // due to MetaAction
1417 private:
1418 SAL_DLLPRIVATE virtual ~MetaTextAlignAction() override;
1419 public:
1420 virtual void Execute( OutputDevice* pOut ) override;
1421 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1423 explicit MetaTextAlignAction( TextAlign eAlign );
1425 TextAlign GetTextAlign() const { return maAlign; }
1426 void SetTextAlign(TextAlign eAlign) { maAlign = eAlign; }
1429 class VCL_DLLPUBLIC MetaMapModeAction final : public MetaAction
1431 private:
1433 MapMode maMapMode;
1435 public:
1436 SAL_DLLPRIVATE MetaMapModeAction();
1437 MetaMapModeAction(MetaMapModeAction const &) = default;
1438 MetaMapModeAction(MetaMapModeAction &&) = default;
1439 MetaMapModeAction & operator =(MetaMapModeAction const &) = delete; // due to MetaAction
1440 MetaMapModeAction & operator =(MetaMapModeAction &&) = delete; // due to MetaAction
1441 private:
1442 SAL_DLLPRIVATE virtual ~MetaMapModeAction() override;
1443 public:
1444 virtual void Execute( OutputDevice* pOut ) override;
1445 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1447 SAL_DLLPRIVATE explicit MetaMapModeAction( const MapMode& );
1449 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1451 const MapMode& GetMapMode() const { return maMapMode; }
1452 void SetMapMode(const MapMode& rMapMode) { maMapMode = rMapMode; }
1455 // tdf#127471 decl for friend below
1456 namespace emfio { class ScaledFontDetectCorrectHelper; }
1458 class VCL_DLLPUBLIC MetaFontAction final : public MetaAction
1460 private:
1462 vcl::Font maFont;
1464 // tdf#127471 for import correction of own wrong written EMF/WMF files allow correction
1465 // of FontScale after import. Only from there, so use a friend here and keep the method private
1466 friend class emfio::ScaledFontDetectCorrectHelper;
1467 void correctFontScale(tools::Long nNewFontScale) { maFont.SetAverageFontWidth(nNewFontScale); }
1469 public:
1470 SAL_DLLPRIVATE MetaFontAction();
1471 MetaFontAction(MetaFontAction const &) = default;
1472 MetaFontAction(MetaFontAction &&) = default;
1473 MetaFontAction & operator =(MetaFontAction const &) = delete; // due to MetaAction
1474 MetaFontAction & operator =(MetaFontAction &&) = delete; // due to MetaAction
1475 private:
1476 SAL_DLLPRIVATE virtual ~MetaFontAction() override;
1477 public:
1478 virtual void Execute( OutputDevice* pOut ) override;
1479 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1481 explicit MetaFontAction( vcl::Font );
1483 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1485 const vcl::Font& GetFont() const { return maFont; }
1486 void SetFont(const vcl::Font& rFont) { maFont = rFont; }
1490 class VCL_DLLPUBLIC MetaPushAction final : public MetaAction
1492 private:
1494 vcl::PushFlags mnFlags;
1496 public:
1497 SAL_DLLPRIVATE MetaPushAction();
1498 MetaPushAction(MetaPushAction const &) = default;
1499 MetaPushAction(MetaPushAction &&) = default;
1500 MetaPushAction & operator =(MetaPushAction const &) = delete; // due to MetaAction
1501 MetaPushAction & operator =(MetaPushAction &&) = delete; // due to MetaAction
1502 private:
1503 SAL_DLLPRIVATE virtual ~MetaPushAction() override;
1504 public:
1505 virtual void Execute( OutputDevice* pOut ) override;
1506 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1508 explicit MetaPushAction( vcl::PushFlags nFlags );
1510 vcl::PushFlags GetFlags() const { return mnFlags; }
1511 void SetPushFlags(const vcl::PushFlags nFlags) { mnFlags = nFlags; }
1514 class VCL_DLLPUBLIC MetaPopAction final : public MetaAction
1516 public:
1518 MetaPopAction();
1519 MetaPopAction(MetaPopAction const &) = default;
1520 MetaPopAction(MetaPopAction &&) = default;
1521 MetaPopAction & operator =(MetaPopAction const &) = delete; // due to MetaAction
1522 MetaPopAction & operator =(MetaPopAction &&) = delete; // due to MetaAction
1523 private:
1524 SAL_DLLPRIVATE virtual ~MetaPopAction() override;
1525 public:
1526 virtual void Execute( OutputDevice* pOut ) override;
1527 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1530 class VCL_DLLPUBLIC MetaRasterOpAction final : public MetaAction
1532 private:
1534 RasterOp meRasterOp;
1536 public:
1537 SAL_DLLPRIVATE MetaRasterOpAction();
1538 MetaRasterOpAction(MetaRasterOpAction const &) = default;
1539 MetaRasterOpAction(MetaRasterOpAction &&) = default;
1540 MetaRasterOpAction & operator =(MetaRasterOpAction const &) = delete; // due to MetaAction
1541 MetaRasterOpAction & operator =(MetaRasterOpAction &&) = delete; // due to MetaAction
1542 private:
1543 SAL_DLLPRIVATE virtual ~MetaRasterOpAction() override;
1544 public:
1545 virtual void Execute( OutputDevice* pOut ) override;
1546 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1548 explicit MetaRasterOpAction( RasterOp eRasterOp );
1550 RasterOp GetRasterOp() const { return meRasterOp; }
1551 void SetRasterOp(const RasterOp eRasterOp) { meRasterOp = eRasterOp; }
1554 class SAL_DLLPUBLIC_RTTI MetaTransparentAction final : public MetaAction
1556 private:
1558 tools::PolyPolygon maPolyPoly;
1559 sal_uInt16 mnTransPercent;
1561 public:
1562 MetaTransparentAction();
1563 MetaTransparentAction(MetaTransparentAction const &) = default;
1564 MetaTransparentAction(MetaTransparentAction &&) = default;
1565 MetaTransparentAction & operator =(MetaTransparentAction const &) = delete; // due to MetaAction
1566 MetaTransparentAction & operator =(MetaTransparentAction &&) = delete; // due to MetaAction
1567 private:
1568 virtual ~MetaTransparentAction() override;
1569 public:
1570 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1571 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1573 MetaTransparentAction( tools::PolyPolygon aPolyPoly, sal_uInt16 nTransPercent );
1575 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1576 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1578 const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
1579 sal_uInt16 GetTransparence() const { return mnTransPercent; }
1580 void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
1581 void SetTransparence(const sal_uInt16 nTransPercent) { mnTransPercent = nTransPercent; }
1583 bool IsTransparent() const override { return true; }
1586 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MetaFloatTransparentAction final : public MetaAction
1588 private:
1590 GDIMetaFile maMtf;
1591 Point maPoint;
1592 Size maSize;
1593 Gradient maGradient;
1595 // tdf#155479 allow holding MCGR infos
1596 std::optional<basegfx::BColorStops> maSVGTransparencyColorStops;
1598 public:
1599 MetaFloatTransparentAction();
1600 MetaFloatTransparentAction(MetaFloatTransparentAction const &) = default;
1601 MetaFloatTransparentAction(MetaFloatTransparentAction &&) = default;
1602 MetaFloatTransparentAction & operator =(MetaFloatTransparentAction const &) = delete; // due to MetaAction
1603 MetaFloatTransparentAction & operator =(MetaFloatTransparentAction &&) = delete; // due to MetaAction
1604 private:
1605 virtual ~MetaFloatTransparentAction() override;
1606 public:
1607 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1608 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1610 MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos,
1611 const Size& rSize, Gradient aGradient );
1613 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1614 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1616 const GDIMetaFile& GetGDIMetaFile() const { return maMtf; }
1617 const Point& GetPoint() const { return maPoint; }
1618 const Size& GetSize() const { return maSize; }
1619 const Gradient& GetGradient() const { return maGradient; }
1620 void SetGDIMetaFile(const GDIMetaFile &rMtf) { maMtf = rMtf; }
1621 void SetPoint(const Point& rPoint) { maPoint = rPoint; }
1622 void SetSize(const Size& rSize) { maSize = rSize; }
1623 void SetGradient(const Gradient& rGradient) { maGradient = rGradient; }
1624 bool IsTransparent() const override { return true; }
1626 // tdf#155479 allow holding MCGR infos
1627 const basegfx::BColorStops* getSVGTransparencyColorStops() const
1628 { return !maSVGTransparencyColorStops ? nullptr : &(*maSVGTransparencyColorStops); }
1629 void addSVGTransparencyColorStops(const basegfx::BColorStops& rSVGTransparencyColorStops);
1632 class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MetaEPSAction final : public MetaAction
1634 private:
1636 GfxLink maGfxLink;
1637 GDIMetaFile maSubst;
1638 Point maPoint;
1639 Size maSize;
1641 public:
1642 MetaEPSAction();
1643 MetaEPSAction(MetaEPSAction const &) = default;
1644 MetaEPSAction(MetaEPSAction &&) = default;
1645 MetaEPSAction & operator =(MetaEPSAction const &) = delete; // due to MetaAction
1646 MetaEPSAction & operator =(MetaEPSAction &&) = delete; // due to MetaAction
1647 private:
1648 virtual ~MetaEPSAction() override;
1649 public:
1650 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1651 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1653 MetaEPSAction( const Point& rPoint, const Size& rSize,
1654 GfxLink aGfxLink, const GDIMetaFile& rSubst );
1656 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1657 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1659 const GfxLink& GetLink() const { return maGfxLink; }
1660 const GDIMetaFile& GetSubstitute() const { return maSubst; }
1661 const Point& GetPoint() const { return maPoint; }
1662 const Size& GetSize() const { return maSize; }
1663 void SetLink(const GfxLink& rGfxLink) { maGfxLink = rGfxLink; }
1664 void SetSubstitute(const GDIMetaFile& rSubst) { maSubst = rSubst; }
1665 void SetPoint(const Point& rPoint) { maPoint = rPoint; }
1666 void SetSize(const Size& rSize) { maSize = rSize; }
1669 class VCL_DLLPUBLIC MetaRefPointAction final : public MetaAction
1671 private:
1673 Point maRefPoint;
1674 bool mbSet;
1676 public:
1677 SAL_DLLPRIVATE MetaRefPointAction();
1678 MetaRefPointAction(MetaRefPointAction const &) = default;
1679 MetaRefPointAction(MetaRefPointAction &&) = default;
1680 MetaRefPointAction & operator =(MetaRefPointAction const &) = delete; // due to MetaAction
1681 MetaRefPointAction & operator =(MetaRefPointAction &&) = delete; // due to MetaAction
1682 private:
1683 SAL_DLLPRIVATE virtual ~MetaRefPointAction() override;
1684 public:
1685 virtual void Execute( OutputDevice* pOut ) override;
1686 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1688 SAL_DLLPRIVATE MetaRefPointAction( const Point& rRefPoint, bool bSet );
1690 const Point& GetRefPoint() const { return maRefPoint; }
1691 void SetRefPoint(const Point& rRefPoint) { maRefPoint = rRefPoint; }
1692 void SetSetting(const bool bSet) { mbSet = bSet; }
1693 bool IsSetting() const { return mbSet; }
1696 class VCL_DLLPUBLIC MetaCommentAction final : public MetaAction
1698 private:
1700 OString maComment;
1701 sal_Int32 mnValue;
1702 sal_uInt32 mnDataSize;
1703 std::unique_ptr<sal_uInt8[]>
1704 mpData;
1706 SAL_DLLPRIVATE void ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize );
1708 private:
1709 SAL_DLLPRIVATE virtual ~MetaCommentAction() override;
1711 public:
1712 SAL_DLLPRIVATE explicit MetaCommentAction();
1713 SAL_DLLPRIVATE explicit MetaCommentAction( const MetaCommentAction& rAct );
1714 explicit MetaCommentAction( OString aComment, sal_Int32 nValue = 0, const sal_uInt8* pData = nullptr, sal_uInt32 nDataSize = 0 );
1716 SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
1717 SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
1719 SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
1720 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1722 const OString& GetComment() const { return maComment; }
1723 sal_Int32 GetValue() const { return mnValue; }
1724 sal_uInt32 GetDataSize() const { return mnDataSize; }
1725 const sal_uInt8* GetData() const { return mpData.get(); }
1726 void SetComment(const OString& rComment) { maComment = rComment; }
1727 void SetValue(const sal_Int32 nValue) { mnValue = nValue; }
1728 void SetDataSize(const sal_Int32 nDataSize) { mnDataSize = nDataSize; }
1729 void SetData(const sal_uInt8* pData, const sal_uInt32 nDataSize) { ImplInitDynamicData(pData, nDataSize); }
1732 class VCL_DLLPUBLIC MetaLayoutModeAction final : public MetaAction
1734 private:
1736 vcl::text::ComplexTextLayoutFlags mnLayoutMode;
1738 public:
1739 SAL_DLLPRIVATE MetaLayoutModeAction();
1740 MetaLayoutModeAction(MetaLayoutModeAction const &) = default;
1741 MetaLayoutModeAction(MetaLayoutModeAction &&) = default;
1742 MetaLayoutModeAction & operator =(MetaLayoutModeAction const &) = delete; // due to MetaAction
1743 MetaLayoutModeAction & operator =(MetaLayoutModeAction &&) = delete; // due to MetaAction
1744 private:
1745 SAL_DLLPRIVATE virtual ~MetaLayoutModeAction() override;
1746 public:
1747 virtual void Execute( OutputDevice* pOut ) override;
1748 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1750 explicit MetaLayoutModeAction( vcl::text::ComplexTextLayoutFlags nLayoutMode );
1752 vcl::text::ComplexTextLayoutFlags GetLayoutMode() const { return mnLayoutMode; }
1753 void SetLayoutMode(const vcl::text::ComplexTextLayoutFlags nLayoutMode) { mnLayoutMode = nLayoutMode; }
1756 class VCL_DLLPUBLIC MetaTextLanguageAction final : public MetaAction
1758 private:
1760 LanguageType meTextLanguage;
1762 public:
1763 SAL_DLLPRIVATE MetaTextLanguageAction();
1764 MetaTextLanguageAction(MetaTextLanguageAction const &) = default;
1765 MetaTextLanguageAction(MetaTextLanguageAction &&) = default;
1766 MetaTextLanguageAction & operator =(MetaTextLanguageAction const &) = delete; // due to MetaAction
1767 MetaTextLanguageAction & operator =(MetaTextLanguageAction &&) = delete; // due to MetaAction
1768 private:
1769 SAL_DLLPRIVATE virtual ~MetaTextLanguageAction() override;
1770 public:
1771 virtual void Execute( OutputDevice* pOut ) override;
1772 SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
1774 SAL_DLLPRIVATE explicit MetaTextLanguageAction( LanguageType );
1776 LanguageType GetTextLanguage() const { return meTextLanguage; }
1777 void SetTextLanguage(const LanguageType eTextLanguage) { meTextLanguage = eTextLanguage; }
1780 #endif // INCLUDED_VCL_METAACT_HXX
1782 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */