diff options
Diffstat (limited to 'include/vcl/metaact.hxx')
-rw-r--r-- | include/vcl/metaact.hxx | 1319 |
1 files changed, 1319 insertions, 0 deletions
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx new file mode 100644 index 000000000000..961baaecd1ff --- /dev/null +++ b/include/vcl/metaact.hxx @@ -0,0 +1,1319 @@ +/* -*- 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 _SV_METAACT_HXX +#define _SV_METAACT_HXX + +#include <vcl/dllapi.h> +#include <vcl/gradient.hxx> +#include <vcl/hatch.hxx> +#include <vcl/wall.hxx> +#include <vcl/font.hxx> +#include <tools/poly.hxx> +#include <vcl/bitmap.hxx> +#include <vcl/bitmapex.hxx> +#include <vcl/region.hxx> +#include <vcl/graph.hxx> +#include <vcl/outdev.hxx> +#include <vcl/gdimtf.hxx> +#include <vcl/gfxlink.hxx> +#include <vcl/lineinfo.hxx> + +class SvStream; + +#define META_NULL_ACTION (0) +#define META_PIXEL_ACTION (100) +#define META_POINT_ACTION (101) +#define META_LINE_ACTION (102) +#define META_RECT_ACTION (103) +#define META_ROUNDRECT_ACTION (104) +#define META_ELLIPSE_ACTION (105) +#define META_ARC_ACTION (106) +#define META_PIE_ACTION (107) +#define META_CHORD_ACTION (108) +#define META_POLYLINE_ACTION (109) +#define META_POLYGON_ACTION (110) +#define META_POLYPOLYGON_ACTION (111) +#define META_TEXT_ACTION (112) +#define META_TEXTARRAY_ACTION (113) +#define META_STRETCHTEXT_ACTION (114) +#define META_TEXTRECT_ACTION (115) +#define META_BMP_ACTION (116) +#define META_BMPSCALE_ACTION (117) +#define META_BMPSCALEPART_ACTION (118) +#define META_BMPEX_ACTION (119) +#define META_BMPEXSCALE_ACTION (120) +#define META_BMPEXSCALEPART_ACTION (121) +#define META_MASK_ACTION (122) +#define META_MASKSCALE_ACTION (123) +#define META_MASKSCALEPART_ACTION (124) +#define META_GRADIENT_ACTION (125) +#define META_HATCH_ACTION (126) +#define META_WALLPAPER_ACTION (127) +#define META_CLIPREGION_ACTION (128) +#define META_ISECTRECTCLIPREGION_ACTION (129) +#define META_ISECTREGIONCLIPREGION_ACTION (130) +#define META_MOVECLIPREGION_ACTION (131) +#define META_LINECOLOR_ACTION (132) +#define META_FILLCOLOR_ACTION (133) +#define META_TEXTCOLOR_ACTION (134) +#define META_TEXTFILLCOLOR_ACTION (135) +#define META_TEXTALIGN_ACTION (136) +#define META_MAPMODE_ACTION (137) +#define META_FONT_ACTION (138) +#define META_PUSH_ACTION (139) +#define META_POP_ACTION (140) +#define META_RASTEROP_ACTION (141) +#define META_TRANSPARENT_ACTION (142) +#define META_EPS_ACTION (143) +#define META_REFPOINT_ACTION (144) +#define META_TEXTLINECOLOR_ACTION (145) +#define META_TEXTLINE_ACTION (146) +#define META_FLOATTRANSPARENT_ACTION (147) +#define META_GRADIENTEX_ACTION (148) +#define META_LAYOUTMODE_ACTION (149) +#define META_TEXTLANGUAGE_ACTION (150) +#define META_OVERLINECOLOR_ACTION (151) + +#define META_COMMENT_ACTION (512) + +struct ImplMetaReadData +{ + rtl_TextEncoding meActualCharSet; + + ImplMetaReadData() : + meActualCharSet( RTL_TEXTENCODING_ASCII_US ) + { + } +}; + +struct ImplMetaWriteData +{ + rtl_TextEncoding meActualCharSet; + + ImplMetaWriteData() : + meActualCharSet( RTL_TEXTENCODING_ASCII_US ) + { + } +}; + +#define DECL_META_ACTION( Name, nType ) \ + Meta##Name##Action(); \ +protected: \ + virtual ~Meta##Name##Action(); \ +public: \ + virtual void Execute( OutputDevice* pOut ); \ + virtual MetaAction* Clone(); \ + virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ); \ + virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ); + +#define IMPL_META_ACTION( Name, nType ) \ +Meta##Name##Action::Meta##Name##Action() : \ + MetaAction( nType ) {} \ +Meta##Name##Action::~Meta##Name##Action() {} + +class VCL_DLLPUBLIC MetaAction +{ +private: + sal_uLong mnRefCount; + sal_uInt16 mnType; + + virtual sal_Bool Compare( const MetaAction& ) const; + +protected: + virtual ~MetaAction(); + +public: + MetaAction(); + MetaAction( sal_uInt16 nType ); + + virtual void Execute( OutputDevice* pOut ); + + virtual MetaAction* Clone(); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ); + virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ); + + sal_uInt16 GetType() const { return mnType; } + sal_uLong GetRefCount() const { return mnRefCount; } + void ResetRefCount() { mnRefCount = 1; } + void Duplicate() { mnRefCount++; } + void Delete() { if ( 0 == --mnRefCount ) delete this; } + +public: + static MetaAction* ReadMetaAction( SvStream& rIStm, ImplMetaReadData* pData ); +}; + +class VCL_DLLPUBLIC MetaPixelAction : public MetaAction +{ +private: + Point maPt; + Color maColor; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Pixel, META_PIXEL_ACTION ) + + MetaPixelAction( const Point& rPt, const Color& rColor ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Point& GetPoint() const { return maPt; } + const Color& GetColor() const { return maColor; } +}; + +class VCL_DLLPUBLIC MetaPointAction : public MetaAction +{ +private: + Point maPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Point, META_POINT_ACTION ) + + MetaPointAction( const Point& rPt ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Point& GetPoint() const { return maPt; } +}; + +class VCL_DLLPUBLIC MetaLineAction : public MetaAction +{ +private: + + LineInfo maLineInfo; + Point maStartPt; + Point maEndPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Line, META_LINE_ACTION ) + + MetaLineAction( const Point& rStart, const Point& rEnd ); + MetaLineAction( const Point& rStart, const Point& rEnd, + const LineInfo& rLineInfo ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Point& GetStartPoint() const { return maStartPt; } + const Point& GetEndPoint() const { return maEndPt; } + const LineInfo& GetLineInfo() const { return maLineInfo; } +}; + +class VCL_DLLPUBLIC MetaRectAction : public MetaAction +{ +private: + + Rectangle maRect; + + virtual sal_Bool Compare( const MetaAction& ) const; +public: + DECL_META_ACTION( Rect, META_RECT_ACTION ) + + MetaRectAction( const Rectangle& rRect ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } +}; + +class VCL_DLLPUBLIC MetaRoundRectAction : public MetaAction +{ +private: + + Rectangle maRect; + sal_uInt32 mnHorzRound; + sal_uInt32 mnVertRound; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( RoundRect, META_ROUNDRECT_ACTION ) + + MetaRoundRectAction( const Rectangle& rRect, + sal_uInt32 nHorzRound, sal_uInt32 nVertRound ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + sal_uInt32 GetHorzRound() const { return mnHorzRound; } + sal_uInt32 GetVertRound() const { return mnVertRound; } +}; + +class VCL_DLLPUBLIC MetaEllipseAction : public MetaAction +{ +private: + + Rectangle maRect; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Ellipse, META_ELLIPSE_ACTION ) + + MetaEllipseAction( const Rectangle& rRect ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } +}; + +class VCL_DLLPUBLIC MetaArcAction : public MetaAction +{ +private: + + Rectangle maRect; + Point maStartPt; + Point maEndPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Arc, META_ARC_ACTION ) + + MetaArcAction( const Rectangle& rRect, + const Point& rStart, const Point& rEnd ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + const Point& GetStartPoint() const { return maStartPt; } + const Point& GetEndPoint() const { return maEndPt; } +}; + +class VCL_DLLPUBLIC MetaPieAction : public MetaAction +{ +private: + + Rectangle maRect; + Point maStartPt; + Point maEndPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Pie, META_PIE_ACTION ) + + MetaPieAction( const Rectangle& rRect, + const Point& rStart, const Point& rEnd ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + const Point& GetStartPoint() const { return maStartPt; } + const Point& GetEndPoint() const { return maEndPt; } +}; + +class VCL_DLLPUBLIC MetaChordAction : public MetaAction +{ +private: + + Rectangle maRect; + Point maStartPt; + Point maEndPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Chord, META_CHORD_ACTION ) + + MetaChordAction( const Rectangle& rRect, + const Point& rStart, const Point& rEnd ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + const Point& GetStartPoint() const { return maStartPt; } + const Point& GetEndPoint() const { return maEndPt; } +}; + +class VCL_DLLPUBLIC MetaPolyLineAction : public MetaAction +{ +private: + + LineInfo maLineInfo; + Polygon maPoly; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( PolyLine, META_POLYLINE_ACTION ) + + MetaPolyLineAction( const Polygon& rPoly ); + MetaPolyLineAction( const Polygon& rPoly, const LineInfo& rLineInfo ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Polygon& GetPolygon() const { return maPoly; } + const LineInfo& GetLineInfo() const { return maLineInfo; } +}; + +class VCL_DLLPUBLIC MetaPolygonAction : public MetaAction +{ +private: + + Polygon maPoly; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Polygon, META_POLYGON_ACTION ) + + MetaPolygonAction( const Polygon& rPoly ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Polygon& GetPolygon() const { return maPoly; } +}; + +class VCL_DLLPUBLIC MetaPolyPolygonAction : public MetaAction +{ +private: + + PolyPolygon maPolyPoly; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( PolyPolygon, META_POLYPOLYGON_ACTION ) + + MetaPolyPolygonAction( const PolyPolygon& rPolyPoly ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; } +}; + +class VCL_DLLPUBLIC MetaTextAction : public MetaAction +{ +private: + + Point maPt; + OUString maStr; + sal_uInt16 mnIndex; + sal_uInt16 mnLen; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Text, META_TEXT_ACTION ) + + MetaTextAction( const Point& rPt, const OUString& rStr, + sal_uInt16 nIndex, sal_uInt16 nLen ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Point& GetPoint() const { return maPt; } + const OUString& GetText() const { return maStr; } + sal_uInt16 GetIndex() const { return mnIndex; } + sal_uInt16 GetLen() const { return mnLen; } +}; + +class VCL_DLLPUBLIC MetaTextArrayAction : public MetaAction +{ +private: + + Point maStartPt; + OUString maStr; + sal_Int32* mpDXAry; + sal_uInt16 mnIndex; + sal_uInt16 mnLen; + + virtual sal_Bool Compare( const MetaAction& ) const; + +protected: + virtual ~MetaTextArrayAction(); + +public: + MetaTextArrayAction(); + MetaTextArrayAction( const MetaTextArrayAction& rAction ); + MetaTextArrayAction( const Point& rStartPt, const OUString& rStr, + const sal_Int32* pDXAry, sal_uInt16 nIndex, + sal_uInt16 nLen ); + + virtual void Execute( OutputDevice* pOut ); + + virtual MetaAction* Clone(); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ); + virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ); + + const Point& GetPoint() const { return maStartPt; } + const OUString& GetText() const { return maStr; } + sal_uInt16 GetIndex() const { return mnIndex; } + sal_uInt16 GetLen() const { return mnLen; } + sal_Int32* GetDXArray() const { return mpDXAry; } +}; + +class VCL_DLLPUBLIC MetaStretchTextAction : public MetaAction +{ +private: + + Point maPt; + OUString maStr; + sal_uInt32 mnWidth; + sal_uInt16 mnIndex; + sal_uInt16 mnLen; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( StretchText, META_STRETCHTEXT_ACTION ) + + MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth, + const OUString& rStr, + sal_uInt16 nIndex, sal_uInt16 nLen ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Point& GetPoint() const { return maPt; } + const OUString& GetText() const { return maStr; } + sal_uInt32 GetWidth() const { return mnWidth; } + sal_uInt16 GetIndex() const { return mnIndex; } + sal_uInt16 GetLen() const { return mnLen; } +}; + +class VCL_DLLPUBLIC MetaTextRectAction : public MetaAction +{ +private: + + Rectangle maRect; + OUString maStr; + sal_uInt16 mnStyle; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextRect, META_TEXTRECT_ACTION ) + + MetaTextRectAction( const Rectangle& rRect, + const OUString& rStr, sal_uInt16 nStyle ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + const OUString& GetText() const { return maStr; } + sal_uInt16 GetStyle() const { return mnStyle; } +}; + +class VCL_DLLPUBLIC MetaTextLineAction : public MetaAction +{ +private: + + Point maPos; + long mnWidth; + FontStrikeout meStrikeout; + FontUnderline meUnderline; + FontUnderline meOverline; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextLine, META_TEXTLINE_ACTION ) + + MetaTextLineAction( const Point& rPos, long nWidth, + FontStrikeout eStrikeout, + FontUnderline eUnderline, + FontUnderline eOverline ); + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Point& GetStartPoint() const { return maPos; } + long GetWidth() const { return mnWidth; } + FontStrikeout GetStrikeout() const { return meStrikeout; } + FontUnderline GetUnderline() const { return meUnderline; } + FontUnderline GetOverline() const { return meOverline; } +}; + +class VCL_DLLPUBLIC MetaBmpAction : public MetaAction +{ +private: + + Bitmap maBmp; + Point maPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Bmp, META_BMP_ACTION ) + + MetaBmpAction( const Point& rPt, const Bitmap& rBmp ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Bitmap& GetBitmap() const { return maBmp; } + const Point& GetPoint() const { return maPt; } +}; + +class VCL_DLLPUBLIC MetaBmpScaleAction : public MetaAction +{ +private: + + Bitmap maBmp; + Point maPt; + Size maSz; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( BmpScale, META_BMPSCALE_ACTION ) + + MetaBmpScaleAction( const Point& rPt, const Size& rSz, + const Bitmap& rBmp ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Bitmap& GetBitmap() const { return maBmp; } + const Point& GetPoint() const { return maPt; } + const Size& GetSize() const { return maSz; } +}; + +class VCL_DLLPUBLIC MetaBmpScalePartAction : public MetaAction +{ +private: + + Bitmap maBmp; + Point maDstPt; + Size maDstSz; + Point maSrcPt; + Size maSrcSz; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( BmpScalePart, META_BMPSCALEPART_ACTION ) + + MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz, + const Point& rSrcPt, const Size& rSrcSz, + const Bitmap& rBmp ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + 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; } +}; + +class VCL_DLLPUBLIC MetaBmpExAction : public MetaAction +{ +private: + + BitmapEx maBmpEx; + Point maPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( BmpEx, META_BMPEX_ACTION ) + + MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const BitmapEx& GetBitmapEx() const { return maBmpEx; } + const Point& GetPoint() const { return maPt; } +}; + +class VCL_DLLPUBLIC MetaBmpExScaleAction : public MetaAction +{ +private: + + BitmapEx maBmpEx; + Point maPt; + Size maSz; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( BmpExScale, META_BMPEXSCALE_ACTION ) + + MetaBmpExScaleAction( const Point& rPt, const Size& rSz, + const BitmapEx& rBmpEx ) ; + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const BitmapEx& GetBitmapEx() const { return maBmpEx; } + const Point& GetPoint() const { return maPt; } + const Size& GetSize() const { return maSz; } +}; + +class VCL_DLLPUBLIC MetaBmpExScalePartAction : public MetaAction +{ +private: + + BitmapEx maBmpEx; + Point maDstPt; + Size maDstSz; + Point maSrcPt; + Size maSrcSz; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( BmpExScalePart, META_BMPEXSCALEPART_ACTION ) + + MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz, + const Point& rSrcPt, const Size& rSrcSz, + const BitmapEx& rBmpEx ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + 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; } +}; + +class VCL_DLLPUBLIC MetaMaskAction : public MetaAction +{ +private: + + Bitmap maBmp; + Color maColor; + Point maPt; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Mask, META_MASK_ACTION ) + + MetaMaskAction( const Point& rPt, + const Bitmap& rBmp, + const Color& rColor ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Bitmap& GetBitmap() const { return maBmp; } + const Color& GetColor() const { return maColor; } + const Point& GetPoint() const { return maPt; } +}; + +class VCL_DLLPUBLIC MetaMaskScaleAction : public MetaAction +{ +private: + + Bitmap maBmp; + Color maColor; + Point maPt; + Size maSz; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( MaskScale, META_MASKSCALE_ACTION ) + + MetaMaskScaleAction( const Point& rPt, const Size& rSz, + const Bitmap& rBmp, + const Color& rColor ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Bitmap& GetBitmap() const { return maBmp; } + const Color& GetColor() const { return maColor; } + const Point& GetPoint() const { return maPt; } + const Size& GetSize() const { return maSz; } +}; + +class VCL_DLLPUBLIC MetaMaskScalePartAction : public MetaAction +{ +private: + + Bitmap maBmp; + Color maColor; + Point maDstPt; + Size maDstSz; + Point maSrcPt; + Size maSrcSz; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( MaskScalePart, META_MASKSCALEPART_ACTION ) + + MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz, + const Point& rSrcPt, const Size& rSrcSz, + const Bitmap& rBmp, + const Color& rColor ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + 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; } +}; + +class VCL_DLLPUBLIC MetaGradientAction : public MetaAction +{ +private: + + Rectangle maRect; + Gradient maGradient; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Gradient, META_GRADIENT_ACTION ) + + MetaGradientAction( const Rectangle& rRect, const Gradient& rGradient ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + const Gradient& GetGradient() const { return maGradient; } +}; + +class VCL_DLLPUBLIC MetaGradientExAction : public MetaAction +{ +private: + + PolyPolygon maPolyPoly; + Gradient maGradient; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( GradientEx, META_GRADIENTEX_ACTION ) + + MetaGradientExAction( const PolyPolygon& rPolyPoly, const Gradient& rGradient ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; } + const Gradient& GetGradient() const { return maGradient; } +}; + +class VCL_DLLPUBLIC MetaHatchAction : public MetaAction +{ +private: + + PolyPolygon maPolyPoly; + Hatch maHatch; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Hatch, META_HATCH_ACTION ) + + MetaHatchAction( const PolyPolygon& rPolyPoly, const Hatch& rHatch ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; } + const Hatch& GetHatch() const { return maHatch; } +}; + +class VCL_DLLPUBLIC MetaWallpaperAction : public MetaAction +{ +private: + + Rectangle maRect; + Wallpaper maWallpaper; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Wallpaper, META_WALLPAPER_ACTION ) + + MetaWallpaperAction( const Rectangle& rRect, + const Wallpaper& rPaper ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } + const Wallpaper& GetWallpaper() const { return maWallpaper; } +}; + +class VCL_DLLPUBLIC MetaClipRegionAction : public MetaAction +{ +private: + + Region maRegion; + sal_Bool mbClip; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( ClipRegion, META_CLIPREGION_ACTION ) + + MetaClipRegionAction( const Region& rRegion, sal_Bool bClip ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Region& GetRegion() const { return maRegion; } + sal_Bool IsClipping() const { return mbClip; } +}; + +class VCL_DLLPUBLIC MetaISectRectClipRegionAction : public MetaAction +{ +private: + + Rectangle maRect; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( ISectRectClipRegion, META_ISECTRECTCLIPREGION_ACTION ) + + MetaISectRectClipRegionAction( const Rectangle& rRect ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Rectangle& GetRect() const { return maRect; } +}; + +class VCL_DLLPUBLIC MetaISectRegionClipRegionAction : public MetaAction +{ +private: + + Region maRegion; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( ISectRegionClipRegion, META_ISECTREGIONCLIPREGION_ACTION ) + + MetaISectRegionClipRegionAction( const Region& rRegion ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const Region& GetRegion() const { return maRegion; } +}; + +class VCL_DLLPUBLIC MetaMoveClipRegionAction : public MetaAction +{ +private: + + long mnHorzMove; + long mnVertMove; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( MoveClipRegion, META_MOVECLIPREGION_ACTION ) + + MetaMoveClipRegionAction( long nHorzMove, long nVertMove ); + + virtual void Scale( double fScaleX, double fScaleY ); + + long GetHorzMove() const { return mnHorzMove; } + long GetVertMove() const { return mnVertMove; } +}; + +class VCL_DLLPUBLIC MetaLineColorAction : public MetaAction +{ +private: + + Color maColor; + sal_Bool mbSet; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( LineColor, META_LINECOLOR_ACTION ) + + MetaLineColorAction( const Color& rColor, sal_Bool bSet ); + + const Color& GetColor() const { return maColor; } + sal_Bool IsSetting() const { return mbSet; } +}; + +class VCL_DLLPUBLIC MetaFillColorAction : public MetaAction +{ +private: + + Color maColor; + sal_Bool mbSet; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( FillColor, META_FILLCOLOR_ACTION ) + + MetaFillColorAction( const Color& rColor, sal_Bool bSet ); + + const Color& GetColor() const { return maColor; } + sal_Bool IsSetting() const { return mbSet; } +}; + +class VCL_DLLPUBLIC MetaTextColorAction : public MetaAction +{ +private: + + Color maColor; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextColor, META_TEXTCOLOR_ACTION ) + + MetaTextColorAction( const Color& rColor ); + + const Color& GetColor() const { return maColor; } +}; + +class VCL_DLLPUBLIC MetaTextFillColorAction : public MetaAction +{ +private: + + Color maColor; + sal_Bool mbSet; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextFillColor, META_TEXTFILLCOLOR_ACTION ) + + MetaTextFillColorAction( const Color& rColor, sal_Bool bSet ); + + const Color& GetColor() const { return maColor; } + sal_Bool IsSetting() const { return mbSet; } +}; + +class VCL_DLLPUBLIC MetaTextLineColorAction : public MetaAction +{ +private: + + Color maColor; + sal_Bool mbSet; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextLineColor, META_TEXTLINECOLOR_ACTION ) + + MetaTextLineColorAction( const Color& rColor, sal_Bool bSet ); + + const Color& GetColor() const { return maColor; } + sal_Bool IsSetting() const { return mbSet; } +}; + +class VCL_DLLPUBLIC MetaOverlineColorAction : public MetaAction +{ +private: + + Color maColor; + sal_Bool mbSet; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( OverlineColor, META_OVERLINECOLOR_ACTION ) + + MetaOverlineColorAction( const Color& rColor, sal_Bool bSet ); + + const Color& GetColor() const { return maColor; } + sal_Bool IsSetting() const { return mbSet; } +}; + +class VCL_DLLPUBLIC MetaTextAlignAction : public MetaAction +{ +private: + + TextAlign maAlign; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextAlign, META_TEXTALIGN_ACTION ) + + MetaTextAlignAction( TextAlign aAlign ); + + TextAlign GetTextAlign() const { return maAlign; } +}; + +class VCL_DLLPUBLIC MetaMapModeAction : public MetaAction +{ +private: + + MapMode maMapMode; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( MapMode, META_MAPMODE_ACTION ) + + MetaMapModeAction( const MapMode& rMapMode ); + + virtual void Scale( double fScaleX, double fScaleY ); + + const MapMode& GetMapMode() const { return maMapMode; } +}; + +class VCL_DLLPUBLIC MetaFontAction : public MetaAction +{ +private: + + Font maFont; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Font, META_FONT_ACTION ) + + MetaFontAction( const Font& rFont ); + + virtual void Scale( double fScaleX, double fScaleY ); + + const Font& GetFont() const { return maFont; } +}; + +class VCL_DLLPUBLIC MetaPushAction : public MetaAction +{ +private: + + sal_uInt16 mnFlags; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Push, META_PUSH_ACTION ) + + MetaPushAction( sal_uInt16 nFlags ); + + sal_uInt16 GetFlags() const { return mnFlags; } +}; + +class VCL_DLLPUBLIC MetaPopAction : public MetaAction +{ +public: + + DECL_META_ACTION( Pop, META_POP_ACTION ) +}; + +class VCL_DLLPUBLIC MetaRasterOpAction : public MetaAction +{ +private: + + RasterOp meRasterOp; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( RasterOp, META_RASTEROP_ACTION ) + + MetaRasterOpAction( RasterOp eRasterOp ); + + RasterOp GetRasterOp() const { return meRasterOp; } +}; + +class VCL_DLLPUBLIC MetaTransparentAction : public MetaAction +{ +private: + + PolyPolygon maPolyPoly; + sal_uInt16 mnTransPercent; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( Transparent, META_TRANSPARENT_ACTION ) + + MetaTransparentAction( const PolyPolygon& rPolyPoly, sal_uInt16 nTransPercent ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const PolyPolygon& GetPolyPolygon() const { return maPolyPoly; } + sal_uInt16 GetTransparence() const { return mnTransPercent; } +}; + +class VCL_DLLPUBLIC MetaFloatTransparentAction : public MetaAction +{ +private: + + GDIMetaFile maMtf; + Point maPoint; + Size maSize; + Gradient maGradient; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( FloatTransparent, META_FLOATTRANSPARENT_ACTION ) + + MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos, + const Size& rSize, const Gradient& rGradient ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const GDIMetaFile& GetGDIMetaFile() const { return maMtf; } + const Point& GetPoint() const { return maPoint; } + const Size& GetSize() const { return maSize; } + const Gradient& GetGradient() const { return maGradient; } +}; + +class VCL_DLLPUBLIC MetaEPSAction : public MetaAction +{ +private: + + GfxLink maGfxLink; + GDIMetaFile maSubst; + Point maPoint; + Size maSize; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( EPS, META_EPS_ACTION ) + + MetaEPSAction( const Point& rPoint, const Size& rSize, + const GfxLink& rGfxLink, const GDIMetaFile& rSubst ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + const GfxLink& GetLink() const { return maGfxLink; } + const GDIMetaFile& GetSubstitute() const { return maSubst; } + const Point& GetPoint() const { return maPoint; } + const Size& GetSize() const { return maSize; } +}; + +class VCL_DLLPUBLIC MetaRefPointAction : public MetaAction +{ +private: + + Point maRefPoint; + sal_Bool mbSet; + + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( RefPoint, META_REFPOINT_ACTION ) + + MetaRefPointAction( const Point& rRefPoint, sal_Bool bSet ); + + const Point& GetRefPoint() const { return maRefPoint; } + sal_Bool IsSetting() const { return mbSet; } +}; + +class VCL_DLLPUBLIC MetaCommentAction : public MetaAction +{ +private: + + OString maComment; + sal_Int32 mnValue; + sal_uInt32 mnDataSize; + sal_uInt8* mpData; + + SAL_DLLPRIVATE void ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize ); + virtual sal_Bool Compare( const MetaAction& ) const; + +protected: + ~MetaCommentAction(); + +public: + MetaCommentAction( sal_Int32 nValue = 0L ); + MetaCommentAction( const MetaCommentAction& rAct ); + MetaCommentAction( const OString& rComment, sal_Int32 nValue = 0L, const sal_uInt8* pData = NULL, sal_uInt32 nDataSize = 0UL ); + + virtual void Move( long nHorzMove, long nVertMove ); + virtual void Scale( double fScaleX, double fScaleY ); + + virtual void Execute( OutputDevice* pOut ); + virtual MetaAction* Clone(); + virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ); + virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ); + + 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; } +}; + +class VCL_DLLPUBLIC MetaLayoutModeAction : public MetaAction +{ +private: + + sal_uInt32 mnLayoutMode; + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( LayoutMode, META_LAYOUTMODE_ACTION ) + + MetaLayoutModeAction( sal_uInt32 nLayoutMode ); + + sal_uInt32 GetLayoutMode() const { return mnLayoutMode; } +}; + +class VCL_DLLPUBLIC MetaTextLanguageAction : public MetaAction +{ +private: + + LanguageType meTextLanguage; + virtual sal_Bool Compare( const MetaAction& ) const; + +public: + DECL_META_ACTION( TextLanguage, META_TEXTLANGUAGE_ACTION ) + + MetaTextLanguageAction( LanguageType ); + + LanguageType GetTextLanguage() const { return meTextLanguage; } +}; + +#endif // _SV_METAACT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |