office-gobmx/include/vcl/metaact.hxx
Noel Grandin cc60e2eacd reduce symbol visibility in vcl
Change-Id: Ia56bb092a4634e301ff8922ae63e6f7ede874d80
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164865
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-03-16 07:31:14 +01:00

1767 lines
75 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef INCLUDED_VCL_METAACT_HXX
#define INCLUDED_VCL_METAACT_HXX
#include <sal/config.h>
#include <rtl/ref.hxx>
#include <salhelper/simplereferenceobject.hxx>
#include <tools/poly.hxx>
#include <vcl/dllapi.h>
#include <vcl/rendercontext/State.hxx>
#include <vcl/bitmapex.hxx>
#include <vcl/font.hxx>
#include <vcl/gdimtf.hxx>
#include <vcl/gfxlink.hxx>
#include <vcl/gradient.hxx>
#include <vcl/hatch.hxx>
#include <vcl/kernarray.hxx>
#include <vcl/lineinfo.hxx>
#include <vcl/metaactiontypes.hxx>
#include <vcl/region.hxx>
#include <vcl/rendercontext/RasterOp.hxx>
#include <vcl/wall.hxx>
#include <basegfx/utils/bgradient.hxx>
#include <memory>
#include <span>
class OutputDevice;
class SvStream;
enum class DrawTextFlags;
struct ImplMetaReadData
{
rtl_TextEncoding meActualCharSet;
int mnParseDepth;
ImplMetaReadData()
: meActualCharSet(RTL_TEXTENCODING_ASCII_US)
, mnParseDepth(0)
{}
};
struct ImplMetaWriteData
{
rtl_TextEncoding meActualCharSet;
ImplMetaWriteData() :
meActualCharSet( RTL_TEXTENCODING_ASCII_US )
{}
};
class VCL_DLLPUBLIC MetaAction : public salhelper::SimpleReferenceObject
{
private:
MetaActionType mnType;
protected:
SAL_DLLPRIVATE virtual ~MetaAction() override;
public:
SAL_DLLPRIVATE MetaAction();
SAL_DLLPRIVATE explicit MetaAction( MetaActionType nType );
SAL_DLLPRIVATE MetaAction( MetaAction const & );
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut );
oslInterlockedCount GetRefCount() const { return m_nCount; }
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const;
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove );
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY );
MetaActionType GetType() const { return mnType; }
/** \#i10613# Extracted from Printer::GetPreparedMetaFile. Returns true
if given action requires special transparency handling
*/
virtual bool IsTransparent() const { return false; }
};
class VCL_DLLPUBLIC MetaPixelAction final : public MetaAction
{
private:
Point maPt;
Color maColor;
public:
SAL_DLLPRIVATE MetaPixelAction();
MetaPixelAction(MetaPixelAction const &) = default;
MetaPixelAction(MetaPixelAction &&) = default;
MetaPixelAction & operator =(MetaPixelAction const &) = delete; // due to MetaAction
MetaPixelAction & operator =(MetaPixelAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPixelAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaPixelAction( const Point& rPt, const Color& rColor );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetPoint() const { return maPt; }
const Color& GetColor() const { return maColor; }
void SetPoint(const Point& rPt) { maPt = rPt; }
void SetColor(Color rColor) { maColor = rColor; }
};
class VCL_DLLPUBLIC MetaPointAction final : public MetaAction
{
private:
Point maPt;
public:
SAL_DLLPRIVATE MetaPointAction();
MetaPointAction(MetaPointAction const &) = default;
MetaPointAction(MetaPointAction &&) = default;
MetaPointAction & operator =(MetaPointAction const &) = delete; // due to MetaAction
MetaPointAction & operator =(MetaPointAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPointAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE explicit MetaPointAction( const Point& );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetPoint() const { return maPt; }
void SetPoint(const Point& rPt) { maPt = rPt; }
};
class VCL_DLLPUBLIC MetaLineAction final : public MetaAction
{
private:
LineInfo maLineInfo;
Point maStartPt;
Point maEndPt;
public:
SAL_DLLPRIVATE MetaLineAction();
MetaLineAction(MetaLineAction const &) = default;
MetaLineAction(MetaLineAction &&) = default;
MetaLineAction & operator =(MetaLineAction const &) = delete; // due to MetaAction
MetaLineAction & operator =(MetaLineAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaLineAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaLineAction( const Point& rStart, const Point& rEnd );
MetaLineAction( const Point& rStart, const Point& rEnd,
LineInfo aLineInfo );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetStartPoint() const { return maStartPt; }
const Point& GetEndPoint() const { return maEndPt; }
const LineInfo& GetLineInfo() const { return maLineInfo; }
void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
void SetLineInfo(const LineInfo& rLineInfo) { maLineInfo = rLineInfo; }
};
class VCL_DLLPUBLIC MetaRectAction final : public MetaAction
{
private:
tools::Rectangle maRect;
public:
SAL_DLLPRIVATE MetaRectAction();
MetaRectAction(MetaRectAction const &) = default;
MetaRectAction(MetaRectAction &&) = default;
MetaRectAction & operator =(MetaRectAction const &) = delete; // due to MetaAction
MetaRectAction & operator =(MetaRectAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaRectAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaRectAction( const tools::Rectangle& );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
};
class VCL_DLLPUBLIC MetaRoundRectAction final : public MetaAction
{
private:
tools::Rectangle maRect;
sal_uInt32 mnHorzRound;
sal_uInt32 mnVertRound;
public:
SAL_DLLPRIVATE MetaRoundRectAction();
MetaRoundRectAction(MetaRoundRectAction const &) = default;
MetaRoundRectAction(MetaRoundRectAction &&) = default;
MetaRoundRectAction & operator =(MetaRoundRectAction const &) = delete; // due to MetaAction
MetaRoundRectAction & operator =(MetaRoundRectAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaRoundRectAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaRoundRectAction( const tools::Rectangle& rRect,
sal_uInt32 nHorzRound, sal_uInt32 nVertRound );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
sal_uInt32 GetHorzRound() const { return mnHorzRound; }
sal_uInt32 GetVertRound() const { return mnVertRound; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
void SetHorzRound(sal_uInt32 rHorzRound) { mnHorzRound = rHorzRound; }
void SetVertRound(sal_uInt32 rVertRound) { mnVertRound = rVertRound; }
};
class VCL_DLLPUBLIC MetaEllipseAction final : public MetaAction
{
private:
tools::Rectangle maRect;
public:
SAL_DLLPRIVATE MetaEllipseAction();
MetaEllipseAction(MetaEllipseAction const &) = default;
MetaEllipseAction(MetaEllipseAction &&) = default;
MetaEllipseAction & operator =(MetaEllipseAction const &) = delete; // due to MetaAction
MetaEllipseAction & operator =(MetaEllipseAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaEllipseAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaEllipseAction( const tools::Rectangle& );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
};
class VCL_DLLPUBLIC MetaArcAction final : public MetaAction
{
private:
tools::Rectangle maRect;
Point maStartPt;
Point maEndPt;
public:
SAL_DLLPRIVATE MetaArcAction();
MetaArcAction(MetaArcAction const &) = default;
MetaArcAction(MetaArcAction &&) = default;
MetaArcAction & operator =(MetaArcAction const &) = delete; // due to MetaAction
MetaArcAction & operator =(MetaArcAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaArcAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaArcAction( const tools::Rectangle& rRect,
const Point& rStart, const Point& rEnd );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
const Point& GetStartPoint() const { return maStartPt; }
const Point& GetEndPoint() const { return maEndPt; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
};
class VCL_DLLPUBLIC MetaPieAction final : public MetaAction
{
private:
tools::Rectangle maRect;
Point maStartPt;
Point maEndPt;
public:
SAL_DLLPRIVATE MetaPieAction();
MetaPieAction(MetaPieAction const &) = default;
MetaPieAction(MetaPieAction &&) = default;
MetaPieAction & operator =(MetaPieAction const &) = delete; // due to MetaAction
MetaPieAction & operator =(MetaPieAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPieAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaPieAction( const tools::Rectangle& rRect,
const Point& rStart, const Point& rEnd );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
const Point& GetStartPoint() const { return maStartPt; }
const Point& GetEndPoint() const { return maEndPt; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
};
class VCL_DLLPUBLIC MetaChordAction final : public MetaAction
{
private:
tools::Rectangle maRect;
Point maStartPt;
Point maEndPt;
public:
SAL_DLLPRIVATE MetaChordAction();
MetaChordAction(MetaChordAction const &) = default;
MetaChordAction(MetaChordAction &&) = default;
MetaChordAction & operator =(MetaChordAction const &) = delete; // due to MetaAction
MetaChordAction & operator =(MetaChordAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaChordAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaChordAction( const tools::Rectangle& rRect,
const Point& rStart, const Point& rEnd );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
const Point& GetStartPoint() const { return maStartPt; }
const Point& GetEndPoint() const { return maEndPt; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
void SetStartPoint(const Point& rPoint) { maStartPt = rPoint; }
void SetEndPoint(const Point& rPoint) { maEndPt = rPoint; }
};
class VCL_DLLPUBLIC MetaPolyLineAction final : public MetaAction
{
private:
LineInfo maLineInfo;
tools::Polygon maPoly;
public:
SAL_DLLPRIVATE MetaPolyLineAction();
MetaPolyLineAction(MetaPolyLineAction const &) = default;
MetaPolyLineAction(MetaPolyLineAction &&) = default;
MetaPolyLineAction & operator =(MetaPolyLineAction const &) = delete; // due to MetaAction
MetaPolyLineAction & operator =(MetaPolyLineAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPolyLineAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE explicit MetaPolyLineAction( tools::Polygon );
explicit MetaPolyLineAction( tools::Polygon , LineInfo );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Polygon& GetPolygon() const { return maPoly; }
const LineInfo& GetLineInfo() const { return maLineInfo; }
void SetLineInfo(const LineInfo& rLineInfo) { maLineInfo = rLineInfo; }
void SetPolygon(const tools::Polygon& rPoly) { maPoly = rPoly; }
};
class VCL_DLLPUBLIC MetaPolygonAction final : public MetaAction
{
private:
tools::Polygon maPoly;
public:
SAL_DLLPRIVATE MetaPolygonAction();
MetaPolygonAction(MetaPolygonAction const &) = default;
MetaPolygonAction(MetaPolygonAction &&) = default;
MetaPolygonAction & operator =(MetaPolygonAction const &) = delete; // due to MetaAction
MetaPolygonAction & operator =(MetaPolygonAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPolygonAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaPolygonAction( tools::Polygon );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Polygon& GetPolygon() const { return maPoly; }
void SetPolygon(const tools::Polygon& rPoly) { maPoly = rPoly; }
};
class VCL_DLLPUBLIC MetaPolyPolygonAction final : public MetaAction
{
private:
tools::PolyPolygon maPolyPoly;
public:
SAL_DLLPRIVATE MetaPolyPolygonAction();
MetaPolyPolygonAction(MetaPolyPolygonAction const &) = default;
MetaPolyPolygonAction(MetaPolyPolygonAction &&) = default;
MetaPolyPolygonAction & operator =(MetaPolyPolygonAction const &) = delete; // due to MetaAction
MetaPolyPolygonAction & operator =(MetaPolyPolygonAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPolyPolygonAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaPolyPolygonAction( tools::PolyPolygon );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
};
class SAL_DLLPUBLIC_RTTI MetaTextAction final : public MetaAction
{
private:
Point maPt;
OUString maStr;
sal_Int32 mnIndex;
sal_Int32 mnLen;
public:
MetaTextAction();
MetaTextAction(MetaTextAction const &) = default;
MetaTextAction(MetaTextAction &&) = default;
MetaTextAction & operator =(MetaTextAction const &) = delete; // due to MetaAction
MetaTextAction & operator =(MetaTextAction &&) = delete; // due to MetaAction
private:
virtual ~MetaTextAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaTextAction( const Point& rPt, OUString aStr,
sal_Int32 nIndex, sal_Int32 nLen );
virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetPoint() const { return maPt; }
const OUString& GetText() const { return maStr; }
sal_Int32 GetIndex() const { return mnIndex; }
sal_Int32 GetLen() const { return mnLen; }
void SetPoint(const Point& rPt) { maPt = rPt; }
void SetText(const OUString& rStr) { maStr = rStr; }
void SetIndex(sal_Int32 rIndex) { mnIndex = rIndex; }
void SetLen(sal_Int32 rLen) { mnLen = rLen; }
};
class VCL_DLLPUBLIC MetaTextArrayAction final : public MetaAction
{
private:
Point maStartPt;
OUString maStr;
KernArray maDXAry;
std::vector<sal_Bool> maKashidaAry;
sal_Int32 mnIndex;
sal_Int32 mnLen;
SAL_DLLPRIVATE virtual ~MetaTextArrayAction() override;
public:
SAL_DLLPRIVATE MetaTextArrayAction();
SAL_DLLPRIVATE MetaTextArrayAction( const MetaTextArrayAction& rAction );
SAL_DLLPRIVATE MetaTextArrayAction( const Point& rStartPt, OUString aStr,
KernArray rDXAry,
std::vector<sal_Bool> pKashidaAry,
sal_Int32 nIndex,
sal_Int32 nLen );
MetaTextArrayAction( const Point& rStartPt, OUString aStr,
KernArraySpan pDXAry,
std::span<const sal_Bool> pKashidaAry,
sal_Int32 nIndex,
sal_Int32 nLen );
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetPoint() const { return maStartPt; }
const OUString& GetText() const { return maStr; }
sal_Int32 GetIndex() const { return mnIndex; }
sal_Int32 GetLen() const { return mnLen; }
const KernArray& GetDXArray() const { return maDXAry; }
const std::vector<sal_Bool> & GetKashidaArray() const { return maKashidaAry; }
void SetPoint(const Point& rPt) { maStartPt = rPt; }
void SetText(const OUString& rStr) { maStr = rStr; }
void SetIndex(sal_Int32 rIndex) { mnIndex = rIndex; }
void SetLen(sal_Int32 rLen) { mnLen = rLen; }
SAL_DLLPRIVATE void SetDXArray(KernArray aArray);
SAL_DLLPRIVATE void SetKashidaArray(std::vector<sal_Bool> aArray);
};
class SAL_DLLPUBLIC_RTTI MetaStretchTextAction final : public MetaAction
{
private:
Point maPt;
OUString maStr;
sal_uInt32 mnWidth;
sal_Int32 mnIndex;
sal_Int32 mnLen;
public:
MetaStretchTextAction();
MetaStretchTextAction(MetaStretchTextAction const &) = default;
MetaStretchTextAction(MetaStretchTextAction &&) = default;
MetaStretchTextAction & operator =(MetaStretchTextAction const &) = delete; // due to MetaAction
MetaStretchTextAction & operator =(MetaStretchTextAction &&) = delete; // due to MetaAction
private:
virtual ~MetaStretchTextAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
OUString aStr,
sal_Int32 nIndex, sal_Int32 nLen );
virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetPoint() const { return maPt; }
const OUString& GetText() const { return maStr; }
sal_uInt32 GetWidth() const { return mnWidth; }
sal_Int32 GetIndex() const { return mnIndex; }
sal_Int32 GetLen() const { return mnLen; }
void SetPoint(const Point& rPt) { maPt = rPt; }
void SetText(const OUString& rStr) { maStr = rStr; }
void SetWidth(sal_uInt32 rWidth) { mnWidth = rWidth; }
void SetIndex(sal_uInt32 rIndex) { mnIndex = rIndex; }
void SetLen(sal_uInt32 rLen) { mnLen = rLen; }
};
class SAL_DLLPUBLIC_RTTI MetaTextRectAction final : public MetaAction
{
private:
tools::Rectangle maRect;
OUString maStr;
DrawTextFlags mnStyle;
public:
MetaTextRectAction();
MetaTextRectAction(MetaTextRectAction const &) = default;
MetaTextRectAction(MetaTextRectAction &&) = default;
MetaTextRectAction & operator =(MetaTextRectAction const &) = delete; // due to MetaAction
MetaTextRectAction & operator =(MetaTextRectAction &&) = delete; // due to MetaAction
private:
virtual ~MetaTextRectAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaTextRectAction( const tools::Rectangle& rRect,
OUString aStr, DrawTextFlags nStyle );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
const OUString& GetText() const { return maStr; }
DrawTextFlags GetStyle() const { return mnStyle; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
void SetText(const OUString& rStr) { maStr = rStr; }
void SetStyle(DrawTextFlags rStyle) { mnStyle = rStyle; }
};
class SAL_DLLPUBLIC_RTTI MetaTextLineAction final : public MetaAction
{
private:
Point maPos;
tools::Long mnWidth;
FontStrikeout meStrikeout;
FontLineStyle meUnderline;
FontLineStyle meOverline;
public:
MetaTextLineAction();
MetaTextLineAction(MetaTextLineAction const &) = default;
MetaTextLineAction(MetaTextLineAction &&) = default;
MetaTextLineAction & operator =(MetaTextLineAction const &) = delete; // due to MetaAction
MetaTextLineAction & operator =(MetaTextLineAction &&) = delete; // due to MetaAction
private:
virtual ~MetaTextLineAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaTextLineAction( const Point& rPos, tools::Long nWidth,
FontStrikeout eStrikeout,
FontLineStyle eUnderline,
FontLineStyle eOverline );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Point& GetStartPoint() const { return maPos; }
tools::Long GetWidth() const { return mnWidth; }
FontStrikeout GetStrikeout() const { return meStrikeout; }
FontLineStyle GetUnderline() const { return meUnderline; }
FontLineStyle GetOverline() const { return meOverline; }
void SetStartPoint(const Point& rPos) { maPos = rPos; }
void SetWidth(tools::Long rWidth) { mnWidth = rWidth; }
void SetStrikeout(FontStrikeout eStrikeout) { meStrikeout = eStrikeout; }
void SetUnderline(FontLineStyle eUnderline) { meUnderline = eUnderline; }
void SetOverline(FontLineStyle eOverline) { meOverline = eOverline; }
};
class VCL_DLLPUBLIC MetaBmpAction final : public MetaAction
{
private:
Bitmap maBmp;
Point maPt;
public:
SAL_DLLPRIVATE MetaBmpAction();
MetaBmpAction(MetaBmpAction const &) = default;
MetaBmpAction(MetaBmpAction &&) = default;
MetaBmpAction & operator =(MetaBmpAction const &) = delete; // due to MetaAction
MetaBmpAction & operator =(MetaBmpAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaBmpAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaBmpAction( const Point& rPt, const Bitmap& rBmp );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Bitmap& GetBitmap() const { return maBmp; }
const Point& GetPoint() const { return maPt; }
void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
void SetPoint(const Point& rPt) { maPt = rPt; }
};
class VCL_DLLPUBLIC MetaBmpScaleAction final : public MetaAction
{
private:
Bitmap maBmp;
Point maPt;
Size maSz;
public:
SAL_DLLPRIVATE MetaBmpScaleAction();
MetaBmpScaleAction(MetaBmpScaleAction const &) = default;
MetaBmpScaleAction(MetaBmpScaleAction &&) = default;
MetaBmpScaleAction & operator =(MetaBmpScaleAction const &) = delete; // due to MetaAction
MetaBmpScaleAction & operator =(MetaBmpScaleAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaBmpScaleAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaBmpScaleAction( const Point& rPt, const Size& rSz,
const Bitmap& rBmp );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Bitmap& GetBitmap() const { return maBmp; }
const Point& GetPoint() const { return maPt; }
const Size& GetSize() const { return maSz; }
void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
void SetPoint(const Point& rPt) { maPt = rPt; }
void SetSize(const Size& rSz) { maSz = rSz; }
};
class VCL_DLLPUBLIC MetaBmpScalePartAction final : public MetaAction
{
private:
Bitmap maBmp;
Point maDstPt;
Size maDstSz;
Point maSrcPt;
Size maSrcSz;
public:
SAL_DLLPRIVATE MetaBmpScalePartAction();
MetaBmpScalePartAction(MetaBmpScalePartAction const &) = default;
MetaBmpScalePartAction(MetaBmpScalePartAction &&) = default;
MetaBmpScalePartAction & operator =(MetaBmpScalePartAction const &) = delete; // due to MetaAction
MetaBmpScalePartAction & operator =(MetaBmpScalePartAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaBmpScalePartAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
const Point& rSrcPt, const Size& rSrcSz,
const Bitmap& rBmp );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Bitmap& GetBitmap() const { return maBmp; }
const Point& GetDestPoint() const { return maDstPt; }
const Size& GetDestSize() const { return maDstSz; }
const Point& GetSrcPoint() const { return maSrcPt; }
const Size& GetSrcSize() const { return maSrcSz; }
void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
void SetDestPoint(const Point& rPt) { maDstPt = rPt; }
void SetDestSize(const Size& rSz) { maDstSz = rSz; }
void SetSrcPoint(const Point& rPt) { maSrcPt = rPt; }
void SetSrcSize(const Size& rSz) { maSrcSz = rSz; }
};
class VCL_DLLPUBLIC MetaBmpExAction final : public MetaAction
{
private:
BitmapEx maBmpEx;
Point maPt;
public:
SAL_DLLPRIVATE MetaBmpExAction();
MetaBmpExAction(MetaBmpExAction const &) = default;
MetaBmpExAction(MetaBmpExAction &&) = default;
MetaBmpExAction & operator =(MetaBmpExAction const &) = delete; // due to MetaAction
MetaBmpExAction & operator =(MetaBmpExAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaBmpExAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const BitmapEx& GetBitmapEx() const { return maBmpEx; }
const Point& GetPoint() const { return maPt; }
void SetBitmapEx(BitmapEx rBmpEx) { maBmpEx = rBmpEx; }
void SetPoint(const Point& rPt) { maPt = rPt; }
bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
class VCL_DLLPUBLIC MetaBmpExScaleAction final : public MetaAction
{
private:
BitmapEx maBmpEx;
Point maPt;
Size maSz;
public:
SAL_DLLPRIVATE MetaBmpExScaleAction();
MetaBmpExScaleAction(MetaBmpExScaleAction const &) = default;
MetaBmpExScaleAction(MetaBmpExScaleAction &&) = default;
MetaBmpExScaleAction & operator =(MetaBmpExScaleAction const &) = delete; // due to MetaAction
MetaBmpExScaleAction & operator =(MetaBmpExScaleAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaBmpExScaleAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
const BitmapEx& rBmpEx ) ;
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const BitmapEx& GetBitmapEx() const { return maBmpEx; }
const Point& GetPoint() const { return maPt; }
const Size& GetSize() const { return maSz; }
void SetBitmapEx(const BitmapEx& rBmpEx) { maBmpEx = rBmpEx; }
void SetPoint(const Point& rPt) { maPt = rPt; }
void SetSize(const Size& rSz) { maSz = rSz; }
bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
class VCL_DLLPUBLIC MetaBmpExScalePartAction final : public MetaAction
{
private:
BitmapEx maBmpEx;
Point maDstPt;
Size maDstSz;
Point maSrcPt;
Size maSrcSz;
public:
SAL_DLLPRIVATE MetaBmpExScalePartAction();
MetaBmpExScalePartAction(MetaBmpExScalePartAction const &) = default;
MetaBmpExScalePartAction(MetaBmpExScalePartAction &&) = default;
MetaBmpExScalePartAction & operator =(MetaBmpExScalePartAction const &) = delete; // due to MetaAction
MetaBmpExScalePartAction & operator =(MetaBmpExScalePartAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaBmpExScalePartAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
const Point& rSrcPt, const Size& rSrcSz,
const BitmapEx& rBmpEx );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const BitmapEx& GetBitmapEx() const { return maBmpEx; }
const Point& GetDestPoint() const { return maDstPt; }
const Size& GetDestSize() const { return maDstSz; }
const Point& GetSrcPoint() const { return maSrcPt; }
const Size& GetSrcSize() const { return maSrcSz; }
void SetBitmapEx(const BitmapEx& rBmpEx) { maBmpEx = rBmpEx; }
void SetDestPoint(const Point& rDstPt) { maDstPt = rDstPt; }
void SetDestSize(const Size& rDstSz) { maDstSz = rDstSz; }
void SetSrcPoint(const Point& rSrcPt) { maSrcPt = rSrcPt; }
void SetSrcSize(const Size& rSrcSz) { maSrcSz = rSrcSz; }
bool IsTransparent() const override { return GetBitmapEx().IsAlpha(); }
};
class SAL_DLLPUBLIC_RTTI MetaMaskAction final : public MetaAction
{
private:
Bitmap maBmp;
Color maColor;
Point maPt;
public:
MetaMaskAction();
MetaMaskAction(MetaMaskAction const &) = default;
MetaMaskAction(MetaMaskAction &&) = default;
MetaMaskAction & operator =(MetaMaskAction const &) = delete; // due to MetaAction
MetaMaskAction & operator =(MetaMaskAction &&) = delete; // due to MetaAction
private:
virtual ~MetaMaskAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaMaskAction( const Point& rPt,
const Bitmap& rBmp,
const Color& rColor );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Bitmap& GetBitmap() const { return maBmp; }
const Color& GetColor() const { return maColor; }
const Point& GetPoint() const { return maPt; }
void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
void SetPoint(const Point& rPt) { maPt = rPt; }
};
class SAL_DLLPUBLIC_RTTI MetaMaskScaleAction final : public MetaAction
{
private:
Bitmap maBmp;
Color maColor;
Point maPt;
Size maSz;
public:
MetaMaskScaleAction();
MetaMaskScaleAction(MetaMaskScaleAction const &) = default;
MetaMaskScaleAction(MetaMaskScaleAction &&) = default;
MetaMaskScaleAction & operator =(MetaMaskScaleAction const &) = delete; // due to MetaAction
MetaMaskScaleAction & operator =(MetaMaskScaleAction &&) = delete; // due to MetaAction
private:
virtual ~MetaMaskScaleAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaMaskScaleAction( const Point& rPt, const Size& rSz,
const Bitmap& rBmp,
const Color& rColor );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Bitmap& GetBitmap() const { return maBmp; }
const Color& GetColor() const { return maColor; }
const Point& GetPoint() const { return maPt; }
const Size& GetSize() const { return maSz; }
void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
void SetPoint(const Point& rPt) { maPt = rPt; }
void SetSize(const Size& rSz) { maSz = rSz; }
};
class SAL_DLLPUBLIC_RTTI MetaMaskScalePartAction final : public MetaAction
{
private:
Bitmap maBmp;
Color maColor;
Point maDstPt;
Size maDstSz;
Point maSrcPt;
Size maSrcSz;
public:
MetaMaskScalePartAction();
MetaMaskScalePartAction(MetaMaskScalePartAction const &) = default;
MetaMaskScalePartAction(MetaMaskScalePartAction &&) = default;
MetaMaskScalePartAction & operator =(MetaMaskScalePartAction const &) = delete; // due to MetaAction
MetaMaskScalePartAction & operator =(MetaMaskScalePartAction &&) = delete; // due to MetaAction
private:
virtual ~MetaMaskScalePartAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
const Point& rSrcPt, const Size& rSrcSz,
const Bitmap& rBmp,
const Color& rColor );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const Bitmap& GetBitmap() const { return maBmp; }
const Color& GetColor() const { return maColor; }
const Point& GetDestPoint() const { return maDstPt; }
const Size& GetDestSize() const { return maDstSz; }
const Point& GetSrcPoint() const { return maSrcPt; }
const Size& GetSrcSize() const { return maSrcSz; }
void SetBitmap(const Bitmap& rBmp) { maBmp = rBmp; }
void SetColor(Color rColor) { maColor = rColor; }
void SetDestPoint(const Point& rPt) { maDstPt = rPt; }
void SetDestSize(const Size& rSz) { maDstSz = rSz; }
void SetSrcPoint(const Point& rPt) { maSrcPt = rPt; }
void SetSrcSize(const Size& rSz) { maSrcSz = rSz; }
};
class SAL_DLLPUBLIC_RTTI MetaGradientAction final : public MetaAction
{
private:
tools::Rectangle maRect;
Gradient maGradient;
public:
MetaGradientAction();
MetaGradientAction(MetaGradientAction const &) = default;
MetaGradientAction(MetaGradientAction &&) = default;
MetaGradientAction & operator =(MetaGradientAction const &) = delete; // due to MetaAction
MetaGradientAction & operator =(MetaGradientAction &&) = delete; // due to MetaAction
private:
virtual ~MetaGradientAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaGradientAction( const tools::Rectangle& rRect, Gradient aGradient );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
const Gradient& GetGradient() const { return maGradient; }
void SetGradient(const Gradient& rGradient) { maGradient = rGradient; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
};
class VCL_DLLPUBLIC MetaGradientExAction final : public MetaAction
{
private:
tools::PolyPolygon maPolyPoly;
Gradient maGradient;
public:
SAL_DLLPRIVATE MetaGradientExAction();
MetaGradientExAction(MetaGradientExAction const &) = default;
MetaGradientExAction(MetaGradientExAction &&) = default;
MetaGradientExAction & operator =(MetaGradientExAction const &) = delete; // due to MetaAction
MetaGradientExAction & operator =(MetaGradientExAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaGradientExAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaGradientExAction( tools::PolyPolygon rPolyPoly, Gradient aGradient );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
const Gradient& GetGradient() const { return maGradient; }
void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
void SetGradient(const Gradient& rGradient) { maGradient = rGradient; }
};
class SAL_DLLPUBLIC_RTTI MetaHatchAction final : public MetaAction
{
private:
tools::PolyPolygon maPolyPoly;
Hatch maHatch;
public:
MetaHatchAction();
MetaHatchAction(MetaHatchAction const &) = default;
MetaHatchAction(MetaHatchAction &&) = default;
MetaHatchAction & operator =(MetaHatchAction const &) = delete; // due to MetaAction
MetaHatchAction & operator =(MetaHatchAction &&) = delete; // due to MetaAction
private:
virtual ~MetaHatchAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaHatchAction( tools::PolyPolygon aPolyPoly, const Hatch& rHatch );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
const Hatch& GetHatch() const { return maHatch; }
void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
void SetHatch(const Hatch& rHatch) { maHatch = rHatch; }
};
class VCL_DLLPUBLIC MetaWallpaperAction final : public MetaAction
{
private:
tools::Rectangle maRect;
Wallpaper maWallpaper;
public:
SAL_DLLPRIVATE MetaWallpaperAction();
MetaWallpaperAction(MetaWallpaperAction const &) = default;
MetaWallpaperAction(MetaWallpaperAction &&) = default;
MetaWallpaperAction & operator =(MetaWallpaperAction const &) = delete; // due to MetaAction
MetaWallpaperAction & operator =(MetaWallpaperAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaWallpaperAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaWallpaperAction( const tools::Rectangle& rRect,
const Wallpaper& rPaper );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
const Wallpaper& GetWallpaper() const { return maWallpaper; }
void SetWallpaper(const Wallpaper& rWallpaper) { maWallpaper = rWallpaper; }
};
class VCL_DLLPUBLIC MetaClipRegionAction final : public MetaAction
{
private:
vcl::Region maRegion;
bool mbClip;
public:
SAL_DLLPRIVATE MetaClipRegionAction();
MetaClipRegionAction(MetaClipRegionAction const &) = default;
MetaClipRegionAction(MetaClipRegionAction &&) = default;
MetaClipRegionAction & operator =(MetaClipRegionAction const &) = delete; // due to MetaAction
MetaClipRegionAction & operator =(MetaClipRegionAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaClipRegionAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaClipRegionAction( vcl::Region aRegion, bool bClip );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const vcl::Region& GetRegion() const { return maRegion; }
bool IsClipping() const { return mbClip; }
void SetRegion(const vcl::Region& rRegion) { maRegion = rRegion; }
void SetClipping(bool bClip) { mbClip = bClip; }
};
class VCL_DLLPUBLIC MetaISectRectClipRegionAction final : public MetaAction
{
private:
tools::Rectangle maRect;
public:
SAL_DLLPRIVATE MetaISectRectClipRegionAction();
MetaISectRectClipRegionAction(MetaISectRectClipRegionAction const &) = default;
MetaISectRectClipRegionAction(MetaISectRectClipRegionAction &&) = default;
MetaISectRectClipRegionAction & operator =(MetaISectRectClipRegionAction const &) = delete; // due to MetaAction
MetaISectRectClipRegionAction & operator =(MetaISectRectClipRegionAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaISectRectClipRegionAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaISectRectClipRegionAction( const tools::Rectangle& );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::Rectangle& GetRect() const { return maRect; }
void SetRect(const tools::Rectangle& rRect) { maRect = rRect; }
};
class VCL_DLLPUBLIC MetaISectRegionClipRegionAction final : public MetaAction
{
private:
vcl::Region maRegion;
public:
SAL_DLLPRIVATE MetaISectRegionClipRegionAction();
MetaISectRegionClipRegionAction(MetaISectRegionClipRegionAction const &) = default;
MetaISectRegionClipRegionAction(MetaISectRegionClipRegionAction &&) = default;
MetaISectRegionClipRegionAction & operator =(MetaISectRegionClipRegionAction const &) = delete; // due to MetaAction
MetaISectRegionClipRegionAction & operator =(MetaISectRegionClipRegionAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaISectRegionClipRegionAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaISectRegionClipRegionAction( vcl::Region );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const vcl::Region& GetRegion() const { return maRegion; }
void SetRegion(const vcl::Region& rRegion) { maRegion = rRegion; }
};
class VCL_DLLPUBLIC MetaMoveClipRegionAction final : public MetaAction
{
private:
tools::Long mnHorzMove;
tools::Long mnVertMove;
public:
SAL_DLLPRIVATE MetaMoveClipRegionAction();
MetaMoveClipRegionAction(MetaMoveClipRegionAction const &) = default;
MetaMoveClipRegionAction(MetaMoveClipRegionAction &&) = default;
MetaMoveClipRegionAction & operator =(MetaMoveClipRegionAction const &) = delete; // due to MetaAction
MetaMoveClipRegionAction & operator =(MetaMoveClipRegionAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaMoveClipRegionAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaMoveClipRegionAction( tools::Long nHorzMove, tools::Long nVertMove );
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
tools::Long GetHorzMove() const { return mnHorzMove; }
tools::Long GetVertMove() const { return mnVertMove; }
void SetHorzMove(tools::Long nHorzMove) { mnHorzMove = nHorzMove; }
void SetVertMove(tools::Long nVertMove) { mnVertMove = nVertMove; }
};
class VCL_DLLPUBLIC MetaLineColorAction final : public MetaAction
{
private:
Color maColor;
bool mbSet;
public:
SAL_DLLPRIVATE MetaLineColorAction();
MetaLineColorAction(MetaLineColorAction const &) = default;
MetaLineColorAction(MetaLineColorAction &&) = default;
MetaLineColorAction & operator =(MetaLineColorAction const &) = delete; // due to MetaAction
MetaLineColorAction & operator =(MetaLineColorAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaLineColorAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaLineColorAction( const Color& rColor, bool bSet );
const Color& GetColor() const { return maColor; }
bool IsSetting() const { return mbSet; }
void SetColor(const Color& rColor) { maColor = rColor; }
void SetSetting(bool rSet) { mbSet = rSet; }
};
class VCL_DLLPUBLIC MetaFillColorAction final : public MetaAction
{
private:
Color maColor;
bool mbSet;
public:
SAL_DLLPRIVATE MetaFillColorAction();
MetaFillColorAction(MetaFillColorAction const &) = default;
MetaFillColorAction(MetaFillColorAction &&) = default;
MetaFillColorAction & operator =(MetaFillColorAction const &) = delete; // due to MetaAction
MetaFillColorAction & operator =(MetaFillColorAction &&) = delete; // due to MetaAction
private:
virtual ~MetaFillColorAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaFillColorAction( const Color& rColor, bool bSet );
const Color& GetColor() const { return maColor; }
bool IsSetting() const { return mbSet; }
void SetSetting(bool rSet) { mbSet = rSet; }
void SetColor(Color rColor) { maColor = rColor; }
};
class VCL_DLLPUBLIC MetaTextColorAction final : public MetaAction
{
private:
Color maColor;
public:
SAL_DLLPRIVATE MetaTextColorAction();
MetaTextColorAction(MetaTextColorAction const &) = default;
MetaTextColorAction(MetaTextColorAction &&) = default;
MetaTextColorAction & operator =(MetaTextColorAction const &) = delete; // due to MetaAction
MetaTextColorAction & operator =(MetaTextColorAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaTextColorAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaTextColorAction( const Color& );
const Color& GetColor() const { return maColor; }
void SetColor(Color rColor) { maColor = rColor; }
};
class VCL_DLLPUBLIC MetaTextFillColorAction final : public MetaAction
{
private:
Color maColor;
bool mbSet;
public:
SAL_DLLPRIVATE MetaTextFillColorAction();
MetaTextFillColorAction(MetaTextFillColorAction const &) = default;
MetaTextFillColorAction(MetaTextFillColorAction &&) = default;
MetaTextFillColorAction & operator =(MetaTextFillColorAction const &) = delete; // due to MetaAction
MetaTextFillColorAction & operator =(MetaTextFillColorAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaTextFillColorAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaTextFillColorAction( const Color& rColor, bool bSet );
const Color& GetColor() const { return maColor; }
void SetColor(Color rColor) { maColor = rColor; }
void SetSetting(bool bSet) { mbSet = bSet; }
bool IsSetting() const { return mbSet; }
};
class VCL_DLLPUBLIC MetaTextLineColorAction final : public MetaAction
{
private:
Color maColor;
bool mbSet;
public:
SAL_DLLPRIVATE MetaTextLineColorAction();
MetaTextLineColorAction(MetaTextLineColorAction const &) = default;
MetaTextLineColorAction(MetaTextLineColorAction &&) = default;
MetaTextLineColorAction & operator =(MetaTextLineColorAction const &) = delete; // due to MetaAction
MetaTextLineColorAction & operator =(MetaTextLineColorAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaTextLineColorAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaTextLineColorAction( const Color& rColor, bool bSet );
const Color& GetColor() const { return maColor; }
void SetColor(const Color& rColor) { maColor = rColor; }
void SetSetting(bool bSet) { mbSet = bSet; }
bool IsSetting() const { return mbSet; }
};
class VCL_DLLPUBLIC MetaOverlineColorAction final : public MetaAction
{
private:
Color maColor;
bool mbSet;
public:
SAL_DLLPRIVATE MetaOverlineColorAction();
MetaOverlineColorAction(MetaOverlineColorAction const &) = default;
MetaOverlineColorAction(MetaOverlineColorAction &&) = default;
MetaOverlineColorAction & operator =(MetaOverlineColorAction const &) = delete; // due to MetaAction
MetaOverlineColorAction & operator =(MetaOverlineColorAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaOverlineColorAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaOverlineColorAction( const Color& rColor, bool bSet );
const Color& GetColor() const { return maColor; }
void SetColor(const Color& rColor) { maColor = rColor; }
void SetSetting(bool bSet) { mbSet = bSet; }
bool IsSetting() const { return mbSet; }
};
class VCL_DLLPUBLIC MetaTextAlignAction final : public MetaAction
{
private:
TextAlign maAlign;
public:
SAL_DLLPRIVATE MetaTextAlignAction();
MetaTextAlignAction(MetaTextAlignAction const &) = default;
MetaTextAlignAction(MetaTextAlignAction &&) = default;
MetaTextAlignAction & operator =(MetaTextAlignAction const &) = delete; // due to MetaAction
MetaTextAlignAction & operator =(MetaTextAlignAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaTextAlignAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaTextAlignAction( TextAlign eAlign );
TextAlign GetTextAlign() const { return maAlign; }
void SetTextAlign(TextAlign eAlign) { maAlign = eAlign; }
};
class VCL_DLLPUBLIC MetaMapModeAction final : public MetaAction
{
private:
MapMode maMapMode;
public:
SAL_DLLPRIVATE MetaMapModeAction();
MetaMapModeAction(MetaMapModeAction const &) = default;
MetaMapModeAction(MetaMapModeAction &&) = default;
MetaMapModeAction & operator =(MetaMapModeAction const &) = delete; // due to MetaAction
MetaMapModeAction & operator =(MetaMapModeAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaMapModeAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE explicit MetaMapModeAction( const MapMode& );
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const MapMode& GetMapMode() const { return maMapMode; }
void SetMapMode(const MapMode& rMapMode) { maMapMode = rMapMode; }
};
// tdf#127471 decl for friend below
namespace emfio { class ScaledFontDetectCorrectHelper; }
class VCL_DLLPUBLIC MetaFontAction final : public MetaAction
{
private:
vcl::Font maFont;
// tdf#127471 for import correction of own wrong written EMF/WMF files allow correction
// of FontScale after import. Only from there, so use a friend here and keep the method private
friend class emfio::ScaledFontDetectCorrectHelper;
void correctFontScale(tools::Long nNewFontScale) { maFont.SetAverageFontWidth(nNewFontScale); }
public:
SAL_DLLPRIVATE MetaFontAction();
MetaFontAction(MetaFontAction const &) = default;
MetaFontAction(MetaFontAction &&) = default;
MetaFontAction & operator =(MetaFontAction const &) = delete; // due to MetaAction
MetaFontAction & operator =(MetaFontAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaFontAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaFontAction( vcl::Font );
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const vcl::Font& GetFont() const { return maFont; }
void SetFont(const vcl::Font& rFont) { maFont = rFont; }
};
class VCL_DLLPUBLIC MetaPushAction final : public MetaAction
{
private:
vcl::PushFlags mnFlags;
public:
SAL_DLLPRIVATE MetaPushAction();
MetaPushAction(MetaPushAction const &) = default;
MetaPushAction(MetaPushAction &&) = default;
MetaPushAction & operator =(MetaPushAction const &) = delete; // due to MetaAction
MetaPushAction & operator =(MetaPushAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPushAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaPushAction( vcl::PushFlags nFlags );
vcl::PushFlags GetFlags() const { return mnFlags; }
void SetPushFlags(const vcl::PushFlags nFlags) { mnFlags = nFlags; }
};
class VCL_DLLPUBLIC MetaPopAction final : public MetaAction
{
public:
MetaPopAction();
MetaPopAction(MetaPopAction const &) = default;
MetaPopAction(MetaPopAction &&) = default;
MetaPopAction & operator =(MetaPopAction const &) = delete; // due to MetaAction
MetaPopAction & operator =(MetaPopAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaPopAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
};
class VCL_DLLPUBLIC MetaRasterOpAction final : public MetaAction
{
private:
RasterOp meRasterOp;
public:
SAL_DLLPRIVATE MetaRasterOpAction();
MetaRasterOpAction(MetaRasterOpAction const &) = default;
MetaRasterOpAction(MetaRasterOpAction &&) = default;
MetaRasterOpAction & operator =(MetaRasterOpAction const &) = delete; // due to MetaAction
MetaRasterOpAction & operator =(MetaRasterOpAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaRasterOpAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaRasterOpAction( RasterOp eRasterOp );
RasterOp GetRasterOp() const { return meRasterOp; }
void SetRasterOp(const RasterOp eRasterOp) { meRasterOp = eRasterOp; }
};
class SAL_DLLPUBLIC_RTTI MetaTransparentAction final : public MetaAction
{
private:
tools::PolyPolygon maPolyPoly;
sal_uInt16 mnTransPercent;
public:
MetaTransparentAction();
MetaTransparentAction(MetaTransparentAction const &) = default;
MetaTransparentAction(MetaTransparentAction &&) = default;
MetaTransparentAction & operator =(MetaTransparentAction const &) = delete; // due to MetaAction
MetaTransparentAction & operator =(MetaTransparentAction &&) = delete; // due to MetaAction
private:
virtual ~MetaTransparentAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaTransparentAction( tools::PolyPolygon aPolyPoly, sal_uInt16 nTransPercent );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const tools::PolyPolygon& GetPolyPolygon() const { return maPolyPoly; }
sal_uInt16 GetTransparence() const { return mnTransPercent; }
void SetPolyPolygon(const tools::PolyPolygon& rPolyPoly) { maPolyPoly = rPolyPoly; }
void SetTransparence(const sal_uInt16 nTransPercent) { mnTransPercent = nTransPercent; }
bool IsTransparent() const override { return true; }
};
class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MetaFloatTransparentAction final : public MetaAction
{
private:
GDIMetaFile maMtf;
Point maPoint;
Size maSize;
Gradient maGradient;
// tdf#155479 allow holding MCGR infos
std::optional<basegfx::BColorStops> maSVGTransparencyColorStops;
public:
MetaFloatTransparentAction();
MetaFloatTransparentAction(MetaFloatTransparentAction const &) = default;
MetaFloatTransparentAction(MetaFloatTransparentAction &&) = default;
MetaFloatTransparentAction & operator =(MetaFloatTransparentAction const &) = delete; // due to MetaAction
MetaFloatTransparentAction & operator =(MetaFloatTransparentAction &&) = delete; // due to MetaAction
private:
virtual ~MetaFloatTransparentAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos,
const Size& rSize, Gradient aGradient );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const GDIMetaFile& GetGDIMetaFile() const { return maMtf; }
const Point& GetPoint() const { return maPoint; }
const Size& GetSize() const { return maSize; }
const Gradient& GetGradient() const { return maGradient; }
void SetGDIMetaFile(const GDIMetaFile &rMtf) { maMtf = rMtf; }
void SetPoint(const Point& rPoint) { maPoint = rPoint; }
void SetSize(const Size& rSize) { maSize = rSize; }
void SetGradient(const Gradient& rGradient) { maGradient = rGradient; }
bool IsTransparent() const override { return true; }
// tdf#155479 allow holding MCGR infos
const basegfx::BColorStops* getSVGTransparencyColorStops() const
{ return !maSVGTransparencyColorStops ? nullptr : &(*maSVGTransparencyColorStops); }
void addSVGTransparencyColorStops(const basegfx::BColorStops& rSVGTransparencyColorStops);
};
class UNLESS_MERGELIBS(VCL_DLLPUBLIC) MetaEPSAction final : public MetaAction
{
private:
GfxLink maGfxLink;
GDIMetaFile maSubst;
Point maPoint;
Size maSize;
public:
MetaEPSAction();
MetaEPSAction(MetaEPSAction const &) = default;
MetaEPSAction(MetaEPSAction &&) = default;
MetaEPSAction & operator =(MetaEPSAction const &) = delete; // due to MetaAction
MetaEPSAction & operator =(MetaEPSAction &&) = delete; // due to MetaAction
private:
virtual ~MetaEPSAction() override;
public:
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
MetaEPSAction( const Point& rPoint, const Size& rSize,
GfxLink aGfxLink, const GDIMetaFile& rSubst );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
const GfxLink& GetLink() const { return maGfxLink; }
const GDIMetaFile& GetSubstitute() const { return maSubst; }
const Point& GetPoint() const { return maPoint; }
const Size& GetSize() const { return maSize; }
void SetLink(const GfxLink& rGfxLink) { maGfxLink = rGfxLink; }
void SetSubstitute(const GDIMetaFile& rSubst) { maSubst = rSubst; }
void SetPoint(const Point& rPoint) { maPoint = rPoint; }
void SetSize(const Size& rSize) { maSize = rSize; }
};
class VCL_DLLPUBLIC MetaRefPointAction final : public MetaAction
{
private:
Point maRefPoint;
bool mbSet;
public:
SAL_DLLPRIVATE MetaRefPointAction();
MetaRefPointAction(MetaRefPointAction const &) = default;
MetaRefPointAction(MetaRefPointAction &&) = default;
MetaRefPointAction & operator =(MetaRefPointAction const &) = delete; // due to MetaAction
MetaRefPointAction & operator =(MetaRefPointAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaRefPointAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE MetaRefPointAction( const Point& rRefPoint, bool bSet );
const Point& GetRefPoint() const { return maRefPoint; }
void SetRefPoint(const Point& rRefPoint) { maRefPoint = rRefPoint; }
void SetSetting(const bool bSet) { mbSet = bSet; }
bool IsSetting() const { return mbSet; }
};
class VCL_DLLPUBLIC MetaCommentAction final : public MetaAction
{
private:
OString maComment;
sal_Int32 mnValue;
sal_uInt32 mnDataSize;
std::unique_ptr<sal_uInt8[]>
mpData;
SAL_DLLPRIVATE void ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize );
private:
SAL_DLLPRIVATE virtual ~MetaCommentAction() override;
public:
SAL_DLLPRIVATE explicit MetaCommentAction();
SAL_DLLPRIVATE explicit MetaCommentAction( const MetaCommentAction& rAct );
explicit MetaCommentAction( OString aComment, sal_Int32 nValue = 0, const sal_uInt8* pData = nullptr, sal_uInt32 nDataSize = 0 );
SAL_DLLPRIVATE virtual void Move( tools::Long nHorzMove, tools::Long nVertMove ) override;
SAL_DLLPRIVATE virtual void Scale( double fScaleX, double fScaleY ) override;
SAL_DLLPRIVATE virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
const OString& GetComment() const { return maComment; }
sal_Int32 GetValue() const { return mnValue; }
sal_uInt32 GetDataSize() const { return mnDataSize; }
const sal_uInt8* GetData() const { return mpData.get(); }
void SetComment(const OString& rComment) { maComment = rComment; }
void SetValue(const sal_Int32 nValue) { mnValue = nValue; }
void SetDataSize(const sal_Int32 nDataSize) { mnDataSize = nDataSize; }
void SetData(const sal_uInt8* pData, const sal_uInt32 nDataSize) { ImplInitDynamicData(pData, nDataSize); }
};
class VCL_DLLPUBLIC MetaLayoutModeAction final : public MetaAction
{
private:
vcl::text::ComplexTextLayoutFlags mnLayoutMode;
public:
SAL_DLLPRIVATE MetaLayoutModeAction();
MetaLayoutModeAction(MetaLayoutModeAction const &) = default;
MetaLayoutModeAction(MetaLayoutModeAction &&) = default;
MetaLayoutModeAction & operator =(MetaLayoutModeAction const &) = delete; // due to MetaAction
MetaLayoutModeAction & operator =(MetaLayoutModeAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaLayoutModeAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
explicit MetaLayoutModeAction( vcl::text::ComplexTextLayoutFlags nLayoutMode );
vcl::text::ComplexTextLayoutFlags GetLayoutMode() const { return mnLayoutMode; }
void SetLayoutMode(const vcl::text::ComplexTextLayoutFlags nLayoutMode) { mnLayoutMode = nLayoutMode; }
};
class VCL_DLLPUBLIC MetaTextLanguageAction final : public MetaAction
{
private:
LanguageType meTextLanguage;
public:
SAL_DLLPRIVATE MetaTextLanguageAction();
MetaTextLanguageAction(MetaTextLanguageAction const &) = default;
MetaTextLanguageAction(MetaTextLanguageAction &&) = default;
MetaTextLanguageAction & operator =(MetaTextLanguageAction const &) = delete; // due to MetaAction
MetaTextLanguageAction & operator =(MetaTextLanguageAction &&) = delete; // due to MetaAction
private:
SAL_DLLPRIVATE virtual ~MetaTextLanguageAction() override;
public:
virtual void Execute( OutputDevice* pOut ) override;
SAL_DLLPRIVATE virtual rtl::Reference<MetaAction> Clone() const override;
SAL_DLLPRIVATE explicit MetaTextLanguageAction( LanguageType );
LanguageType GetTextLanguage() const { return meTextLanguage; }
void SetTextLanguage(const LanguageType eTextLanguage) { meTextLanguage = eTextLanguage; }
};
#endif // INCLUDED_VCL_METAACT_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */