/* -*- 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;
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_Int32 mnLayoutContextIndex = -1;
sal_Int32 mnLayoutContextLen = -1;
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 );
MetaTextArrayAction(const Point& rStartPt, OUString aStr, KernArraySpan pDXAry,
std::span<const sal_Bool> pKashidaAry, sal_Int32 nIndex, sal_Int32 nLen,
sal_Int32 nLayoutContextIndex, sal_Int32 nLayoutContextLen);
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; }
sal_Int32 GetLayoutContextIndex() const { return mnLayoutContextIndex; }
sal_Int32 GetLayoutContextLen() const { return mnLayoutContextLen; }
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; }
void SetLayoutContextIndex(sal_Int32 nLayoutContextIndex)
{
mnLayoutContextIndex = nLayoutContextIndex;
}
void SetLayoutContextLen(sal_Int32 nLayoutContextLen)
{
mnLayoutContextLen = nLayoutContextLen;
}
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(const 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;
--> --------------------
--> maximum size reached
--> --------------------
Messung V0.5 C=95 H=98 G=96
¤ Dauer der Verarbeitung: 0.25 Sekunden
(vorverarbeitet)
¤
*© Formatika GbR, Deutschland