LCOV - code coverage report
Current view: top level - include/vcl - metaact.hxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 81 190 42.6 %
Date: 2014-11-03 Functions: 77 186 41.4 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef INCLUDED_VCL_METAACT_HXX
      21             : #define INCLUDED_VCL_METAACT_HXX
      22             : 
      23             : #include <vcl/dllapi.h>
      24             : #include <vcl/gradient.hxx>
      25             : #include <vcl/hatch.hxx>
      26             : #include <vcl/wall.hxx>
      27             : #include <vcl/font.hxx>
      28             : #include <tools/poly.hxx>
      29             : #include <vcl/bitmap.hxx>
      30             : #include <vcl/bitmapex.hxx>
      31             : #include <vcl/region.hxx>
      32             : #include <vcl/graph.hxx>
      33             : #include <vcl/outdev.hxx>
      34             : #include <vcl/gdimtf.hxx>
      35             : #include <vcl/gfxlink.hxx>
      36             : #include <vcl/lineinfo.hxx>
      37             : #include <vcl/metaactiontypes.hxx>
      38             : #include <vcl/outdevstate.hxx>
      39             : 
      40             : class SvStream;
      41             : 
      42             : struct ImplMetaReadData
      43             : {
      44             :     rtl_TextEncoding meActualCharSet;
      45             : 
      46        9834 :     ImplMetaReadData() :
      47        9834 :         meActualCharSet( RTL_TEXTENCODING_ASCII_US )
      48        9834 :     {}
      49             : };
      50             : 
      51             : struct ImplMetaWriteData
      52             : {
      53             :     rtl_TextEncoding meActualCharSet;
      54             : 
      55       12128 :     ImplMetaWriteData() :
      56       12128 :         meActualCharSet( RTL_TEXTENCODING_ASCII_US )
      57       12128 :     {}
      58             : };
      59             : 
      60        6388 : class VCL_DLLPUBLIC MetaAction
      61             : {
      62             : private:
      63             :     sal_uLong               mnRefCount;
      64             :     sal_uInt16              mnType;
      65             : 
      66             :     virtual bool    Compare( const MetaAction& ) const;
      67             : 
      68             : protected:
      69             :     virtual             ~MetaAction();
      70             : 
      71             : public:
      72             :                         MetaAction();
      73             :     explicit            MetaAction( sal_uInt16 nType );
      74             : 
      75             :     virtual void        Execute( OutputDevice* pOut );
      76             : 
      77             :     virtual MetaAction* Clone();
      78             : 
      79             :     virtual void        Move( long nHorzMove, long nVertMove );
      80             :     virtual void        Scale( double fScaleX, double fScaleY );
      81             : 
      82             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData );
      83             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData );
      84             : 
      85     1307322 :     sal_uInt16              GetType() const { return mnType; }
      86       48362 :     sal_uLong               GetRefCount() const { return mnRefCount; }
      87       15176 :     void                ResetRefCount() { mnRefCount = 1; }
      88     1756713 :     void                Duplicate()  { mnRefCount++; }
      89     3369124 :     void                Delete() { if ( 0 == --mnRefCount ) delete this; }
      90             : 
      91             : public:
      92             :     static MetaAction*  ReadMetaAction( SvStream& rIStm, ImplMetaReadData* pData );
      93             : };
      94             : 
      95           0 : class VCL_DLLPUBLIC MetaPixelAction : public MetaAction
      96             : {
      97             : private:
      98             :     Point               maPt;
      99             :     Color               maColor;
     100             : 
     101             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     102             : 
     103             : public:
     104             :                         MetaPixelAction();
     105             : protected:
     106             :     virtual             ~MetaPixelAction();
     107             : public:
     108             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     109             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     110             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     111             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     112             : 
     113             :                         MetaPixelAction( const Point& rPt, const Color& rColor );
     114             : 
     115             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     116             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     117             : 
     118           0 :     const Point&        GetPoint() const { return maPt; }
     119           0 :     const Color&        GetColor() const { return maColor; }
     120             : };
     121             : 
     122           0 : class VCL_DLLPUBLIC MetaPointAction : public MetaAction
     123             : {
     124             : private:
     125             :     Point               maPt;
     126             : 
     127             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     128             : 
     129             : public:
     130             :                         MetaPointAction();
     131             : protected:
     132             :     virtual             ~MetaPointAction();
     133             : public:
     134             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     135             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     136             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     137             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     138             : 
     139             :     explicit            MetaPointAction( const Point& );
     140             : 
     141             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     142             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     143             : 
     144           0 :     const Point&        GetPoint() const { return maPt; }
     145             : };
     146             : 
     147           0 : class VCL_DLLPUBLIC MetaLineAction : public MetaAction
     148             : {
     149             : private:
     150             : 
     151             :     LineInfo            maLineInfo;
     152             :     Point               maStartPt;
     153             :     Point               maEndPt;
     154             : 
     155             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     156             : 
     157             : public:
     158             :                         MetaLineAction();
     159             : protected:
     160             :     virtual             ~MetaLineAction();
     161             : public:
     162             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     163             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     164             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     165             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     166             : 
     167             :                         MetaLineAction( const Point& rStart, const Point& rEnd );
     168             :                         MetaLineAction( const Point& rStart, const Point& rEnd,
     169             :                                         const LineInfo& rLineInfo );
     170             : 
     171             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     172             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     173             : 
     174        2274 :     const Point&        GetStartPoint() const { return maStartPt; }
     175        3704 :     const Point&        GetEndPoint() const { return maEndPt; }
     176        1854 :     const LineInfo&     GetLineInfo() const { return maLineInfo; }
     177             : };
     178             : 
     179           0 : class VCL_DLLPUBLIC MetaRectAction : public MetaAction
     180             : {
     181             : private:
     182             : 
     183             :     Rectangle           maRect;
     184             : 
     185             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     186             : public:
     187             :                         MetaRectAction();
     188             : protected:
     189             :     virtual             ~MetaRectAction();
     190             : public:
     191             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     192             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     193             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     194             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     195             : 
     196             :     explicit            MetaRectAction( const Rectangle& );
     197             : 
     198             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     199             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     200             : 
     201        1110 :     const Rectangle&    GetRect() const { return maRect; }
     202             : };
     203             : 
     204           0 : class VCL_DLLPUBLIC MetaRoundRectAction : public MetaAction
     205             : {
     206             : private:
     207             : 
     208             :     Rectangle           maRect;
     209             :     sal_uInt32          mnHorzRound;
     210             :     sal_uInt32          mnVertRound;
     211             : 
     212             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     213             : 
     214             : public:
     215             :                         MetaRoundRectAction();
     216             : protected:
     217             :     virtual             ~MetaRoundRectAction();
     218             : public:
     219             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     220             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     221             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     222             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     223             : 
     224             :                         MetaRoundRectAction( const Rectangle& rRect,
     225             :                                              sal_uInt32 nHorzRound, sal_uInt32 nVertRound );
     226             : 
     227             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     228             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     229             : 
     230           0 :     const Rectangle&    GetRect() const { return maRect; }
     231           0 :     sal_uInt32          GetHorzRound() const { return mnHorzRound; }
     232           0 :     sal_uInt32          GetVertRound() const { return mnVertRound; }
     233             : };
     234             : 
     235           0 : class VCL_DLLPUBLIC MetaEllipseAction : public MetaAction
     236             : {
     237             : private:
     238             : 
     239             :     Rectangle           maRect;
     240             : 
     241             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     242             : 
     243             : public:
     244             :                         MetaEllipseAction();
     245             : protected:
     246             :     virtual             ~MetaEllipseAction();
     247             : public:
     248             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     249             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     250             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     251             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     252             : 
     253             :     explicit            MetaEllipseAction( const Rectangle& );
     254             : 
     255             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     256             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     257             : 
     258           0 :     const Rectangle&    GetRect() const { return maRect; }
     259             : };
     260             : 
     261           0 : class VCL_DLLPUBLIC MetaArcAction : public MetaAction
     262             : {
     263             : private:
     264             : 
     265             :     Rectangle           maRect;
     266             :     Point               maStartPt;
     267             :     Point               maEndPt;
     268             : 
     269             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     270             : 
     271             : public:
     272             :                         MetaArcAction();
     273             : protected:
     274             :     virtual             ~MetaArcAction();
     275             : public:
     276             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     277             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     278             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     279             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     280             : 
     281             :                         MetaArcAction( const Rectangle& rRect,
     282             :                                        const Point& rStart, const Point& rEnd );
     283             : 
     284             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     285             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     286             : 
     287           0 :     const Rectangle&    GetRect() const { return maRect; }
     288           0 :     const Point&        GetStartPoint() const { return maStartPt; }
     289           0 :     const Point&        GetEndPoint() const { return maEndPt; }
     290             : };
     291             : 
     292           0 : class VCL_DLLPUBLIC MetaPieAction : public MetaAction
     293             : {
     294             : private:
     295             : 
     296             :     Rectangle           maRect;
     297             :     Point               maStartPt;
     298             :     Point               maEndPt;
     299             : 
     300             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     301             : 
     302             : public:
     303             :                         MetaPieAction();
     304             : protected:
     305             :     virtual             ~MetaPieAction();
     306             : public:
     307             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     308             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     309             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     310             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     311             : 
     312             :                         MetaPieAction( const Rectangle& rRect,
     313             :                                        const Point& rStart, const Point& rEnd );
     314             : 
     315             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     316             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     317             : 
     318           0 :     const Rectangle&    GetRect() const { return maRect; }
     319           0 :     const Point&        GetStartPoint() const { return maStartPt; }
     320           0 :     const Point&        GetEndPoint() const { return maEndPt; }
     321             : };
     322             : 
     323           0 : class VCL_DLLPUBLIC MetaChordAction : public MetaAction
     324             : {
     325             : private:
     326             : 
     327             :     Rectangle           maRect;
     328             :     Point               maStartPt;
     329             :     Point               maEndPt;
     330             : 
     331             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     332             : 
     333             : public:
     334             :                         MetaChordAction();
     335             : protected:
     336             :     virtual             ~MetaChordAction();
     337             : public:
     338             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     339             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     340             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     341             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     342             : 
     343             :                         MetaChordAction( const Rectangle& rRect,
     344             :                                          const Point& rStart, const Point& rEnd );
     345             : 
     346             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     347             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     348             : 
     349           0 :     const Rectangle&    GetRect() const { return maRect; }
     350           0 :     const Point&        GetStartPoint() const { return maStartPt; }
     351           0 :     const Point&        GetEndPoint() const { return maEndPt; }
     352             : };
     353             : 
     354         336 : class VCL_DLLPUBLIC MetaPolyLineAction : public MetaAction
     355             : {
     356             : private:
     357             : 
     358             :     LineInfo            maLineInfo;
     359             :     Polygon             maPoly;
     360             : 
     361             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     362             : 
     363             : public:
     364             :                         MetaPolyLineAction();
     365             : protected:
     366             :     virtual             ~MetaPolyLineAction();
     367             : public:
     368             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     369             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     370             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     371             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     372             : 
     373             :     explicit            MetaPolyLineAction( const Polygon& );
     374             :     explicit            MetaPolyLineAction( const Polygon&, const LineInfo& );
     375             : 
     376             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     377             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     378             : 
     379        3080 :     const Polygon&      GetPolygon() const { return maPoly; }
     380         158 :     const LineInfo&     GetLineInfo() const { return maLineInfo; }
     381             : };
     382             : 
     383           0 : class VCL_DLLPUBLIC MetaPolygonAction : public MetaAction
     384             : {
     385             : private:
     386             : 
     387             :     Polygon             maPoly;
     388             : 
     389             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     390             : 
     391             : public:
     392             :                         MetaPolygonAction();
     393             : protected:
     394             :     virtual             ~MetaPolygonAction();
     395             : public:
     396             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     397             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     398             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     399             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     400             : 
     401             :     explicit            MetaPolygonAction( const Polygon& );
     402             : 
     403             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     404             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     405             : 
     406        5250 :     const Polygon&      GetPolygon() const { return maPoly; }
     407             : };
     408             : 
     409         626 : class VCL_DLLPUBLIC MetaPolyPolygonAction : public MetaAction
     410             : {
     411             : private:
     412             : 
     413             :     tools::PolyPolygon  maPolyPoly;
     414             : 
     415             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     416             : 
     417             : public:
     418             :                         MetaPolyPolygonAction();
     419             : protected:
     420             :     virtual             ~MetaPolyPolygonAction();
     421             : public:
     422             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     423             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     424             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     425             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     426             : 
     427             :     explicit            MetaPolyPolygonAction( const tools::PolyPolygon& );
     428             : 
     429             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     430             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     431             : 
     432        5934 :     const tools::PolyPolygon&  GetPolyPolygon() const { return maPolyPoly; }
     433             : };
     434             : 
     435           0 : class VCL_DLLPUBLIC MetaTextAction : public MetaAction
     436             : {
     437             : private:
     438             : 
     439             :     Point           maPt;
     440             :     OUString        maStr;
     441             :     sal_Int32       mnIndex;
     442             :     sal_Int32       mnLen;
     443             : 
     444             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     445             : 
     446             : public:
     447             :                         MetaTextAction();
     448             : protected:
     449             :     virtual             ~MetaTextAction();
     450             : public:
     451             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     452             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     453             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     454             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     455             : 
     456             :     MetaTextAction( const Point& rPt, const OUString& rStr,
     457             :                     sal_Int32 nIndex, sal_Int32 nLen );
     458             : 
     459             :     virtual void    Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     460             :     virtual void    Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     461             : 
     462        2104 :     const Point&    GetPoint() const { return maPt; }
     463       10736 :     const OUString& GetText() const { return maStr; }
     464        3156 :     sal_Int32       GetIndex() const { return mnIndex; }
     465        2104 :     sal_Int32       GetLen() const { return mnLen; }
     466             : };
     467             : 
     468             : class VCL_DLLPUBLIC MetaTextArrayAction : public MetaAction
     469             : {
     470             : private:
     471             : 
     472             :     Point       maStartPt;
     473             :     OUString    maStr;
     474             :     long*       mpDXAry;
     475             :     sal_Int32   mnIndex;
     476             :     sal_Int32   mnLen;
     477             : 
     478             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     479             : 
     480             : protected:
     481             :     virtual             ~MetaTextArrayAction();
     482             : 
     483             : public:
     484             :                         MetaTextArrayAction();
     485             :                         MetaTextArrayAction( const MetaTextArrayAction& rAction );
     486             :     MetaTextArrayAction( const Point& rStartPt, const OUString& rStr,
     487             :                          const long* pDXAry, sal_Int32 nIndex,
     488             :                          sal_Int32 nLen );
     489             : 
     490             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     491             : 
     492             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     493             : 
     494             :     virtual void    Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     495             :     virtual void    Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     496             : 
     497             :     virtual void    Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     498             :     virtual void    Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     499             : 
     500         818 :     const Point&    GetPoint() const { return maStartPt; }
     501       10622 :     const OUString& GetText() const { return maStr; }
     502        1430 :     sal_Int32       GetIndex() const { return mnIndex; }
     503       10312 :     sal_Int32       GetLen() const { return mnLen; }
     504       10316 :     long*           GetDXArray() const { return mpDXAry; }
     505             : };
     506             : 
     507           0 : class VCL_DLLPUBLIC MetaStretchTextAction : public MetaAction
     508             : {
     509             : private:
     510             : 
     511             :     Point       maPt;
     512             :     OUString    maStr;
     513             :     sal_uInt32  mnWidth;
     514             :     sal_Int32   mnIndex;
     515             :     sal_Int32   mnLen;
     516             : 
     517             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     518             : 
     519             : public:
     520             :                         MetaStretchTextAction();
     521             : protected:
     522             :     virtual             ~MetaStretchTextAction();
     523             : public:
     524             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     525             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     526             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     527             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     528             : 
     529             :     MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
     530             :                            const OUString& rStr,
     531             :                            sal_Int32 nIndex, sal_Int32 nLen );
     532             : 
     533             :     virtual void    Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     534             :     virtual void    Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     535             : 
     536        1808 :     const Point&    GetPoint() const { return maPt; }
     537        2752 :     const OUString& GetText() const { return maStr; }
     538         832 :     sal_uInt32      GetWidth() const { return mnWidth; }
     539        2752 :     sal_Int32       GetIndex() const { return mnIndex; }
     540        1376 :     sal_Int32       GetLen() const { return mnLen; }
     541             : };
     542             : 
     543           0 : class VCL_DLLPUBLIC MetaTextRectAction : public MetaAction
     544             : {
     545             : private:
     546             : 
     547             :     Rectangle           maRect;
     548             :     OUString       maStr;
     549             :     sal_uInt16          mnStyle;
     550             : 
     551             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     552             : 
     553             : public:
     554             :                         MetaTextRectAction();
     555             : protected:
     556             :     virtual             ~MetaTextRectAction();
     557             : public:
     558             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     559             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     560             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     561             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     562             : 
     563             :     MetaTextRectAction( const Rectangle& rRect,
     564             :                         const OUString& rStr, sal_uInt16 nStyle );
     565             : 
     566             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     567             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     568             : 
     569           0 :     const Rectangle&    GetRect() const { return maRect; }
     570           0 :     const OUString& GetText() const { return maStr; }
     571           0 :     sal_uInt16              GetStyle() const { return mnStyle; }
     572             : };
     573             : 
     574           0 : class VCL_DLLPUBLIC MetaTextLineAction : public MetaAction
     575             : {
     576             : private:
     577             : 
     578             :     Point               maPos;
     579             :     long                mnWidth;
     580             :     FontStrikeout       meStrikeout;
     581             :     FontUnderline       meUnderline;
     582             :     FontUnderline       meOverline;
     583             : 
     584             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     585             : 
     586             : public:
     587             :                         MetaTextLineAction();
     588             : protected:
     589             :     virtual             ~MetaTextLineAction();
     590             : public:
     591             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     592             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     593             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     594             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     595             : 
     596             :                         MetaTextLineAction( const Point& rPos, long nWidth,
     597             :                                             FontStrikeout eStrikeout,
     598             :                                             FontUnderline eUnderline,
     599             :                                             FontUnderline eOverline );
     600             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     601             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     602             : 
     603           0 :     const Point&        GetStartPoint() const { return maPos; }
     604           0 :     long                GetWidth() const { return mnWidth; }
     605           0 :     FontStrikeout       GetStrikeout() const { return meStrikeout; }
     606           0 :     FontUnderline       GetUnderline() const { return meUnderline; }
     607           0 :     FontUnderline       GetOverline()  const { return meOverline; }
     608             : };
     609             : 
     610           0 : class VCL_DLLPUBLIC MetaBmpAction : public MetaAction
     611             : {
     612             : private:
     613             : 
     614             :     Bitmap              maBmp;
     615             :     Point               maPt;
     616             : 
     617             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     618             : 
     619             : public:
     620             :                         MetaBmpAction();
     621             : protected:
     622             :     virtual             ~MetaBmpAction();
     623             : public:
     624             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     625             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     626             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     627             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     628             : 
     629             :                         MetaBmpAction( const Point& rPt, const Bitmap& rBmp );
     630             : 
     631             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     632             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     633             : 
     634           0 :     const Bitmap&       GetBitmap() const { return maBmp; }
     635           0 :     const Point&        GetPoint() const { return maPt; }
     636             : };
     637             : 
     638          60 : class VCL_DLLPUBLIC MetaBmpScaleAction : public MetaAction
     639             : {
     640             : private:
     641             : 
     642             :     Bitmap              maBmp;
     643             :     Point               maPt;
     644             :     Size                maSz;
     645             : 
     646             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     647             : 
     648             : public:
     649             :                         MetaBmpScaleAction();
     650             : protected:
     651             :     virtual             ~MetaBmpScaleAction();
     652             : public:
     653             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     654             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     655             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     656             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     657             : 
     658             :                         MetaBmpScaleAction( const Point& rPt, const Size& rSz,
     659             :                                             const Bitmap& rBmp );
     660             : 
     661             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     662             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     663             : 
     664        1782 :     const Bitmap&       GetBitmap() const { return maBmp; }
     665        1692 :     const Point&        GetPoint() const { return maPt; }
     666        1692 :     const Size&         GetSize() const { return maSz; }
     667             : };
     668             : 
     669           0 : class VCL_DLLPUBLIC MetaBmpScalePartAction : public MetaAction
     670             : {
     671             : private:
     672             : 
     673             :     Bitmap              maBmp;
     674             :     Point               maDstPt;
     675             :     Size                maDstSz;
     676             :     Point               maSrcPt;
     677             :     Size                maSrcSz;
     678             : 
     679             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     680             : 
     681             : public:
     682             :                         MetaBmpScalePartAction();
     683             : protected:
     684             :     virtual             ~MetaBmpScalePartAction();
     685             : public:
     686             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     687             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     688             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     689             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     690             : 
     691             :                         MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
     692             :                                                 const Point& rSrcPt, const Size& rSrcSz,
     693             :                                                 const Bitmap& rBmp );
     694             : 
     695             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     696             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     697             : 
     698           0 :     const Bitmap&       GetBitmap() const { return maBmp; }
     699           0 :     const Point&        GetDestPoint() const { return maDstPt; }
     700           0 :     const Size&         GetDestSize() const { return maDstSz; }
     701           0 :     const Point&        GetSrcPoint() const { return maSrcPt; }
     702           0 :     const Size&         GetSrcSize() const { return maSrcSz; }
     703             : };
     704             : 
     705           0 : class VCL_DLLPUBLIC MetaBmpExAction : public MetaAction
     706             : {
     707             : private:
     708             : 
     709             :     BitmapEx            maBmpEx;
     710             :     Point               maPt;
     711             : 
     712             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     713             : 
     714             : public:
     715             :                         MetaBmpExAction();
     716             : protected:
     717             :     virtual             ~MetaBmpExAction();
     718             : public:
     719             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     720             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     721             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     722             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     723             : 
     724             :                         MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx );
     725             : 
     726             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     727             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     728             : 
     729          24 :     const BitmapEx&     GetBitmapEx() const { return maBmpEx; }
     730          24 :     const Point&        GetPoint() const { return maPt; }
     731             : };
     732             : 
     733           6 : class VCL_DLLPUBLIC MetaBmpExScaleAction : public MetaAction
     734             : {
     735             : private:
     736             : 
     737             :     BitmapEx            maBmpEx;
     738             :     Point               maPt;
     739             :     Size                maSz;
     740             : 
     741             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     742             : 
     743             : public:
     744             :                         MetaBmpExScaleAction();
     745             : protected:
     746             :     virtual             ~MetaBmpExScaleAction();
     747             : public:
     748             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     749             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     750             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     751             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     752             : 
     753             :                         MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
     754             :                                               const BitmapEx& rBmpEx ) ;
     755             : 
     756             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     757             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     758             : 
     759         256 :     const BitmapEx&     GetBitmapEx() const { return maBmpEx; }
     760         330 :     const Point&        GetPoint() const { return maPt; }
     761         330 :     const Size&         GetSize() const { return maSz; }
     762             : };
     763             : 
     764           0 : class VCL_DLLPUBLIC MetaBmpExScalePartAction : public MetaAction
     765             : {
     766             : private:
     767             : 
     768             :     BitmapEx            maBmpEx;
     769             :     Point               maDstPt;
     770             :     Size                maDstSz;
     771             :     Point               maSrcPt;
     772             :     Size                maSrcSz;
     773             : 
     774             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     775             : 
     776             : public:
     777             :                         MetaBmpExScalePartAction();
     778             : protected:
     779             :     virtual             ~MetaBmpExScalePartAction();
     780             : public:
     781             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     782             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     783             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     784             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     785             : 
     786             :                         MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
     787             :                                                   const Point& rSrcPt, const Size& rSrcSz,
     788             :                                                   const BitmapEx& rBmpEx );
     789             : 
     790             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     791             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     792             : 
     793           0 :     const BitmapEx&     GetBitmapEx() const { return maBmpEx; }
     794           0 :     const Point&        GetDestPoint() const { return maDstPt; }
     795           0 :     const Size&         GetDestSize() const { return maDstSz; }
     796           0 :     const Point&        GetSrcPoint() const { return maSrcPt; }
     797           0 :     const Size&         GetSrcSize() const { return maSrcSz; }
     798             : };
     799             : 
     800           0 : class VCL_DLLPUBLIC MetaMaskAction : public MetaAction
     801             : {
     802             : private:
     803             : 
     804             :     Bitmap              maBmp;
     805             :     Color               maColor;
     806             :     Point               maPt;
     807             : 
     808             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     809             : 
     810             : public:
     811             :                         MetaMaskAction();
     812             : protected:
     813             :     virtual             ~MetaMaskAction();
     814             : public:
     815             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     816             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     817             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     818             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     819             : 
     820             :                         MetaMaskAction( const Point& rPt,
     821             :                                         const Bitmap& rBmp,
     822             :                                         const Color& rColor );
     823             : 
     824             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     825             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     826             : 
     827           0 :     const Bitmap&       GetBitmap() const { return maBmp; }
     828           0 :     const Color&        GetColor() const { return maColor; }
     829           0 :     const Point&        GetPoint() const { return maPt; }
     830             : };
     831             : 
     832           0 : class VCL_DLLPUBLIC MetaMaskScaleAction : public MetaAction
     833             : {
     834             : private:
     835             : 
     836             :     Bitmap              maBmp;
     837             :     Color               maColor;
     838             :     Point               maPt;
     839             :     Size                maSz;
     840             : 
     841             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     842             : 
     843             : public:
     844             :                         MetaMaskScaleAction();
     845             : protected:
     846             :     virtual             ~MetaMaskScaleAction();
     847             : public:
     848             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     849             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     850             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     851             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     852             : 
     853             :                         MetaMaskScaleAction( const Point& rPt, const Size& rSz,
     854             :                                              const Bitmap& rBmp,
     855             :                                              const Color& rColor );
     856             : 
     857             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     858             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     859             : 
     860           0 :     const Bitmap&       GetBitmap() const { return maBmp; }
     861           0 :     const Color&        GetColor() const { return maColor; }
     862           0 :     const Point&        GetPoint() const { return maPt; }
     863           0 :     const Size&         GetSize() const { return maSz; }
     864             : };
     865             : 
     866           0 : class VCL_DLLPUBLIC MetaMaskScalePartAction : public MetaAction
     867             : {
     868             : private:
     869             : 
     870             :     Bitmap              maBmp;
     871             :     Color               maColor;
     872             :     Point               maDstPt;
     873             :     Size                maDstSz;
     874             :     Point               maSrcPt;
     875             :     Size                maSrcSz;
     876             : 
     877             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     878             : 
     879             : public:
     880             :                         MetaMaskScalePartAction();
     881             : protected:
     882             :     virtual             ~MetaMaskScalePartAction();
     883             : public:
     884             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     885             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     886             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     887             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     888             : 
     889             :                         MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
     890             :                                                  const Point& rSrcPt, const Size& rSrcSz,
     891             :                                                  const Bitmap& rBmp,
     892             :                                                  const Color& rColor );
     893             : 
     894             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     895             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     896             : 
     897           0 :     const Bitmap&       GetBitmap() const { return maBmp; }
     898           0 :     const Color&        GetColor() const { return maColor; }
     899           0 :     const Point&        GetDestPoint() const { return maDstPt; }
     900           0 :     const Size&         GetDestSize() const { return maDstSz; }
     901           0 :     const Point&        GetSrcPoint() const { return maSrcPt; }
     902           0 :     const Size&         GetSrcSize() const { return maSrcSz; }
     903             : };
     904             : 
     905           0 : class VCL_DLLPUBLIC MetaGradientAction : public MetaAction
     906             : {
     907             : private:
     908             : 
     909             :     Rectangle           maRect;
     910             :     Gradient            maGradient;
     911             : 
     912             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     913             : 
     914             : public:
     915             :                         MetaGradientAction();
     916             : protected:
     917             :     virtual             ~MetaGradientAction();
     918             : public:
     919             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     920             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     921             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     922             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     923             : 
     924             :                         MetaGradientAction( const Rectangle& rRect, const Gradient& rGradient );
     925             : 
     926             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     927             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     928             : 
     929           0 :     const Rectangle&    GetRect() const { return maRect; }
     930           0 :     const Gradient&     GetGradient() const { return maGradient; }
     931             : };
     932             : 
     933           0 : class VCL_DLLPUBLIC MetaGradientExAction : public MetaAction
     934             : {
     935             : private:
     936             : 
     937             :     tools::PolyPolygon  maPolyPoly;
     938             :     Gradient            maGradient;
     939             : 
     940             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     941             : 
     942             : public:
     943             :                         MetaGradientExAction();
     944             : protected:
     945             :     virtual             ~MetaGradientExAction();
     946             : public:
     947             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     948             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     949             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     950             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     951             : 
     952             :                         MetaGradientExAction( const tools::PolyPolygon& rPolyPoly, const Gradient& rGradient );
     953             : 
     954             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     955             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     956             : 
     957           0 :     const tools::PolyPolygon&  GetPolyPolygon() const { return maPolyPoly; }
     958           0 :     const Gradient&     GetGradient() const { return maGradient; }
     959             : };
     960             : 
     961           2 : class VCL_DLLPUBLIC MetaHatchAction : public MetaAction
     962             : {
     963             : private:
     964             : 
     965             :     tools::PolyPolygon  maPolyPoly;
     966             :     Hatch               maHatch;
     967             : 
     968             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     969             : 
     970             : public:
     971             :                         MetaHatchAction();
     972             : protected:
     973             :     virtual             ~MetaHatchAction();
     974             : public:
     975             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
     976             :     virtual MetaAction* Clone() SAL_OVERRIDE;
     977             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
     978             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
     979             : 
     980             :                         MetaHatchAction( const tools::PolyPolygon& rPolyPoly, const Hatch& rHatch );
     981             : 
     982             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
     983             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
     984             : 
     985          28 :     const tools::PolyPolygon&  GetPolyPolygon() const { return maPolyPoly; }
     986          28 :     const Hatch&        GetHatch() const { return maHatch; }
     987             : };
     988             : 
     989           0 : class VCL_DLLPUBLIC MetaWallpaperAction : public MetaAction
     990             : {
     991             : private:
     992             : 
     993             :     Rectangle           maRect;
     994             :     Wallpaper           maWallpaper;
     995             : 
     996             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
     997             : 
     998             : public:
     999             :                         MetaWallpaperAction();
    1000             : protected:
    1001             :     virtual             ~MetaWallpaperAction();
    1002             : public:
    1003             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1004             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1005             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1006             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1007             : 
    1008             :                         MetaWallpaperAction( const Rectangle& rRect,
    1009             :                                              const Wallpaper& rPaper );
    1010             : 
    1011             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1012             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1013             : 
    1014           0 :     const Rectangle&    GetRect() const { return maRect; }
    1015           0 :     const Wallpaper&    GetWallpaper() const { return maWallpaper; }
    1016             : };
    1017             : 
    1018          84 : class VCL_DLLPUBLIC MetaClipRegionAction : public MetaAction
    1019             : {
    1020             : private:
    1021             : 
    1022             :     vcl::Region              maRegion;
    1023             :     bool                mbClip;
    1024             : 
    1025             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1026             : 
    1027             : public:
    1028             :                         MetaClipRegionAction();
    1029             : protected:
    1030             :     virtual             ~MetaClipRegionAction();
    1031             : public:
    1032             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1033             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1034             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1035             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1036             : 
    1037             :                         MetaClipRegionAction( const vcl::Region& rRegion, bool bClip );
    1038             : 
    1039             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1040             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1041             : 
    1042        1984 :     const vcl::Region&       GetRegion() const { return maRegion; }
    1043         688 :     bool                IsClipping() const { return mbClip; }
    1044             : };
    1045             : 
    1046           0 : class VCL_DLLPUBLIC MetaISectRectClipRegionAction : public MetaAction
    1047             : {
    1048             : private:
    1049             : 
    1050             :     Rectangle           maRect;
    1051             : 
    1052             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1053             : 
    1054             : public:
    1055             :                         MetaISectRectClipRegionAction();
    1056             : protected:
    1057             :     virtual             ~MetaISectRectClipRegionAction();
    1058             : public:
    1059             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1060             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1061             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1062             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1063             : 
    1064             :     explicit            MetaISectRectClipRegionAction( const Rectangle& );
    1065             : 
    1066             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1067             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1068             : 
    1069         428 :     const Rectangle&    GetRect() const { return maRect; }
    1070             : };
    1071             : 
    1072           0 : class VCL_DLLPUBLIC MetaISectRegionClipRegionAction : public MetaAction
    1073             : {
    1074             : private:
    1075             : 
    1076             :     vcl::Region              maRegion;
    1077             : 
    1078             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1079             : 
    1080             : public:
    1081             :                         MetaISectRegionClipRegionAction();
    1082             : protected:
    1083             :     virtual             ~MetaISectRegionClipRegionAction();
    1084             : public:
    1085             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1086             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1087             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1088             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1089             : 
    1090             :     explicit            MetaISectRegionClipRegionAction( const vcl::Region& );
    1091             : 
    1092             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1093             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1094             : 
    1095          14 :     const vcl::Region&       GetRegion() const { return maRegion; }
    1096             : };
    1097             : 
    1098           0 : class VCL_DLLPUBLIC MetaMoveClipRegionAction : public MetaAction
    1099             : {
    1100             : private:
    1101             : 
    1102             :     long                mnHorzMove;
    1103             :     long                mnVertMove;
    1104             : 
    1105             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1106             : 
    1107             : public:
    1108             :                         MetaMoveClipRegionAction();
    1109             : protected:
    1110             :     virtual             ~MetaMoveClipRegionAction();
    1111             : public:
    1112             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1113             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1114             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1115             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1116             : 
    1117             :                         MetaMoveClipRegionAction( long nHorzMove, long nVertMove );
    1118             : 
    1119             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1120             : 
    1121           0 :     long                GetHorzMove() const { return mnHorzMove; }
    1122           0 :     long                GetVertMove() const { return mnVertMove; }
    1123             : };
    1124             : 
    1125        2272 : class VCL_DLLPUBLIC MetaLineColorAction : public MetaAction
    1126             : {
    1127             : private:
    1128             : 
    1129             :     Color               maColor;
    1130             :     bool                mbSet;
    1131             : 
    1132             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1133             : 
    1134             : public:
    1135             :                         MetaLineColorAction();
    1136             : protected:
    1137             :     virtual             ~MetaLineColorAction();
    1138             : public:
    1139             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1140             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1141             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1142             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1143             : 
    1144             :                         MetaLineColorAction( const Color& rColor, bool bSet );
    1145             : 
    1146        1046 :     const Color&        GetColor() const { return maColor; }
    1147        1187 :     bool                IsSetting() const { return mbSet; }
    1148             : };
    1149             : 
    1150        1464 : class VCL_DLLPUBLIC MetaFillColorAction : public MetaAction
    1151             : {
    1152             : private:
    1153             : 
    1154             :     Color               maColor;
    1155             :     bool                mbSet;
    1156             : 
    1157             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1158             : 
    1159             : public:
    1160             :                         MetaFillColorAction();
    1161             : protected:
    1162             :     virtual             ~MetaFillColorAction();
    1163             : public:
    1164             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1165             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1166             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1167             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1168             : 
    1169             :                         MetaFillColorAction( const Color& rColor, bool bSet );
    1170             : 
    1171        1497 :     const Color&        GetColor() const { return maColor; }
    1172        1583 :     bool                IsSetting() const { return mbSet; }
    1173             : };
    1174             : 
    1175         308 : class VCL_DLLPUBLIC MetaTextColorAction : public MetaAction
    1176             : {
    1177             : private:
    1178             : 
    1179             :     Color               maColor;
    1180             : 
    1181             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1182             : 
    1183             : public:
    1184             :                         MetaTextColorAction();
    1185             : protected:
    1186             :     virtual             ~MetaTextColorAction();
    1187             : public:
    1188             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1189             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1190             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1191             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1192             : 
    1193             :     explicit            MetaTextColorAction( const Color& );
    1194             : 
    1195        1202 :     const Color&        GetColor() const { return maColor; }
    1196             : };
    1197             : 
    1198         308 : class VCL_DLLPUBLIC MetaTextFillColorAction : public MetaAction
    1199             : {
    1200             : private:
    1201             : 
    1202             :     Color               maColor;
    1203             :     bool                mbSet;
    1204             : 
    1205             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1206             : 
    1207             : public:
    1208             :                         MetaTextFillColorAction();
    1209             : protected:
    1210             :     virtual             ~MetaTextFillColorAction();
    1211             : public:
    1212             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1213             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1214             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1215             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1216             : 
    1217             :                         MetaTextFillColorAction( const Color& rColor, bool bSet );
    1218             : 
    1219           0 :     const Color&        GetColor() const { return maColor; }
    1220        1404 :     bool                IsSetting() const { return mbSet; }
    1221             : };
    1222             : 
    1223           0 : class VCL_DLLPUBLIC MetaTextLineColorAction : public MetaAction
    1224             : {
    1225             : private:
    1226             : 
    1227             :     Color               maColor;
    1228             :     bool                mbSet;
    1229             : 
    1230             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1231             : 
    1232             : public:
    1233             :                         MetaTextLineColorAction();
    1234             : protected:
    1235             :     virtual             ~MetaTextLineColorAction();
    1236             : public:
    1237             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1238             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1239             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1240             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1241             : 
    1242             :                         MetaTextLineColorAction( const Color& rColor, bool bSet );
    1243             : 
    1244           0 :     const Color&        GetColor() const { return maColor; }
    1245           0 :     bool                IsSetting() const { return mbSet; }
    1246             : };
    1247             : 
    1248           0 : class VCL_DLLPUBLIC MetaOverlineColorAction : public MetaAction
    1249             : {
    1250             : private:
    1251             : 
    1252             :     Color               maColor;
    1253             :     bool                mbSet;
    1254             : 
    1255             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1256             : 
    1257             : public:
    1258             :                         MetaOverlineColorAction();
    1259             : protected:
    1260             :     virtual             ~MetaOverlineColorAction();
    1261             : public:
    1262             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1263             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1264             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1265             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1266             : 
    1267             :                         MetaOverlineColorAction( const Color& rColor, bool bSet );
    1268             : 
    1269           0 :     const Color&        GetColor() const { return maColor; }
    1270           0 :     bool                IsSetting() const { return mbSet; }
    1271             : };
    1272             : 
    1273         308 : class VCL_DLLPUBLIC MetaTextAlignAction : public MetaAction
    1274             : {
    1275             : private:
    1276             : 
    1277             :     TextAlign           maAlign;
    1278             : 
    1279             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1280             : 
    1281             : public:
    1282             :                         MetaTextAlignAction();
    1283             : protected:
    1284             :     virtual             ~MetaTextAlignAction();
    1285             : public:
    1286             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1287             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1288             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1289             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1290             : 
    1291             :     explicit            MetaTextAlignAction( TextAlign eAlign );
    1292             : 
    1293        1350 :     TextAlign           GetTextAlign() const { return maAlign; }
    1294             : };
    1295             : 
    1296          54 : class VCL_DLLPUBLIC MetaMapModeAction : public MetaAction
    1297             : {
    1298             : private:
    1299             : 
    1300             :     MapMode             maMapMode;
    1301             : 
    1302             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1303             : 
    1304             : public:
    1305             :                         MetaMapModeAction();
    1306             : protected:
    1307             :     virtual             ~MetaMapModeAction();
    1308             : public:
    1309             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1310             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1311             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1312             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1313             : 
    1314             :     explicit            MetaMapModeAction( const MapMode& );
    1315             : 
    1316             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1317             : 
    1318          26 :     const MapMode&      GetMapMode() const { return maMapMode; }
    1319             : };
    1320             : 
    1321         308 : class VCL_DLLPUBLIC MetaFontAction : public MetaAction
    1322             : {
    1323             : private:
    1324             : 
    1325             :     vcl::Font           maFont;
    1326             : 
    1327             :     virtual bool        Compare( const MetaAction& ) const SAL_OVERRIDE;
    1328             : 
    1329             : public:
    1330             :                         MetaFontAction();
    1331             : protected:
    1332             :     virtual             ~MetaFontAction();
    1333             : public:
    1334             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1335             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1336             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1337             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1338             : 
    1339             :     explicit            MetaFontAction( const vcl::Font& );
    1340             : 
    1341             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1342             : 
    1343        3160 :     const vcl::Font&    GetFont() const { return maFont; }
    1344             : };
    1345             : 
    1346          84 : class VCL_DLLPUBLIC MetaPushAction : public MetaAction
    1347             : {
    1348             : private:
    1349             : 
    1350             :     PushFlags              mnFlags;
    1351             : 
    1352             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1353             : 
    1354             : public:
    1355             :                         MetaPushAction();
    1356             : protected:
    1357             :     virtual             ~MetaPushAction();
    1358             : public:
    1359             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1360             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1361             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1362             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1363             : 
    1364             :     explicit            MetaPushAction( PushFlags nFlags );
    1365             : 
    1366        2738 :     PushFlags           GetFlags() const { return mnFlags; }
    1367             : };
    1368             : 
    1369          84 : class VCL_DLLPUBLIC MetaPopAction : public MetaAction
    1370             : {
    1371             : public:
    1372             : 
    1373             :                         MetaPopAction();
    1374             : protected:
    1375             :     virtual             ~MetaPopAction();
    1376             : public:
    1377             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1378             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1379             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1380             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1381             : };
    1382             : 
    1383           0 : class VCL_DLLPUBLIC MetaRasterOpAction : public MetaAction
    1384             : {
    1385             : private:
    1386             : 
    1387             :     RasterOp            meRasterOp;
    1388             : 
    1389             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1390             : 
    1391             : public:
    1392             :                         MetaRasterOpAction();
    1393             : protected:
    1394             :     virtual             ~MetaRasterOpAction();
    1395             : public:
    1396             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1397             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1398             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1399             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1400             : 
    1401             :     explicit            MetaRasterOpAction( RasterOp eRasterOp );
    1402             : 
    1403        1950 :     RasterOp            GetRasterOp() const { return meRasterOp; }
    1404             : };
    1405             : 
    1406          30 : class VCL_DLLPUBLIC MetaTransparentAction : public MetaAction
    1407             : {
    1408             : private:
    1409             : 
    1410             :     tools::PolyPolygon      maPolyPoly;
    1411             :     sal_uInt16              mnTransPercent;
    1412             : 
    1413             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1414             : 
    1415             : public:
    1416             :                         MetaTransparentAction();
    1417             : protected:
    1418             :     virtual             ~MetaTransparentAction();
    1419             : public:
    1420             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1421             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1422             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1423             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1424             : 
    1425             :                         MetaTransparentAction( const tools::PolyPolygon& rPolyPoly, sal_uInt16 nTransPercent );
    1426             : 
    1427             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1428             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1429             : 
    1430           0 :     const tools::PolyPolygon&  GetPolyPolygon() const { return maPolyPoly; }
    1431           0 :     sal_uInt16              GetTransparence() const { return mnTransPercent; }
    1432             : };
    1433             : 
    1434           0 : class VCL_DLLPUBLIC MetaFloatTransparentAction : public MetaAction
    1435             : {
    1436             : private:
    1437             : 
    1438             :     GDIMetaFile         maMtf;
    1439             :     Point               maPoint;
    1440             :     Size                maSize;
    1441             :     Gradient            maGradient;
    1442             : 
    1443             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1444             : 
    1445             : public:
    1446             :                         MetaFloatTransparentAction();
    1447             : protected:
    1448             :     virtual             ~MetaFloatTransparentAction();
    1449             : public:
    1450             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1451             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1452             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1453             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1454             : 
    1455             :                         MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos,
    1456             :                                                     const Size& rSize, const Gradient& rGradient );
    1457             : 
    1458             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1459             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1460             : 
    1461           0 :     const GDIMetaFile&  GetGDIMetaFile() const { return maMtf; }
    1462           0 :     const Point&        GetPoint() const { return maPoint; }
    1463           0 :     const Size&         GetSize() const { return maSize; }
    1464           0 :     const Gradient&     GetGradient() const { return maGradient; }
    1465             : };
    1466             : 
    1467           0 : class VCL_DLLPUBLIC MetaEPSAction : public MetaAction
    1468             : {
    1469             : private:
    1470             : 
    1471             :     GfxLink             maGfxLink;
    1472             :     GDIMetaFile         maSubst;
    1473             :     Point               maPoint;
    1474             :     Size                maSize;
    1475             : 
    1476             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1477             : 
    1478             : public:
    1479             :                         MetaEPSAction();
    1480             : protected:
    1481             :     virtual             ~MetaEPSAction();
    1482             : public:
    1483             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1484             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1485             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1486             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1487             : 
    1488             :                         MetaEPSAction( const Point& rPoint, const Size& rSize,
    1489             :                                        const GfxLink& rGfxLink, const GDIMetaFile& rSubst );
    1490             : 
    1491             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1492             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1493             : 
    1494           0 :     const GfxLink&      GetLink() const { return maGfxLink; }
    1495           0 :     const GDIMetaFile&  GetSubstitute() const { return maSubst; }
    1496           0 :     const Point&        GetPoint() const { return maPoint; }
    1497           0 :     const Size&         GetSize() const { return maSize; }
    1498             : };
    1499             : 
    1500           0 : class VCL_DLLPUBLIC MetaRefPointAction : public MetaAction
    1501             : {
    1502             : private:
    1503             : 
    1504             :     Point               maRefPoint;
    1505             :     bool                mbSet;
    1506             : 
    1507             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1508             : 
    1509             : public:
    1510             :                         MetaRefPointAction();
    1511             : protected:
    1512             :     virtual             ~MetaRefPointAction();
    1513             : public:
    1514             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1515             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1516             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1517             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1518             : 
    1519             :                         MetaRefPointAction( const Point& rRefPoint, bool bSet );
    1520             : 
    1521           0 :     const Point&        GetRefPoint() const { return maRefPoint; }
    1522           0 :     bool                IsSetting() const { return mbSet; }
    1523             : };
    1524             : 
    1525             : class VCL_DLLPUBLIC MetaCommentAction : public MetaAction
    1526             : {
    1527             : private:
    1528             : 
    1529             :     OString        maComment;
    1530             :     sal_Int32           mnValue;
    1531             :     sal_uInt32          mnDataSize;
    1532             :     sal_uInt8*          mpData;
    1533             : 
    1534             :     SAL_DLLPRIVATE void ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize );
    1535             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1536             : 
    1537             : protected:
    1538             :     virtual             ~MetaCommentAction();
    1539             : 
    1540             : public:
    1541             :     explicit            MetaCommentAction( sal_Int32 nValue = 0L );
    1542             :     explicit            MetaCommentAction( const MetaCommentAction& rAct );
    1543             :     explicit            MetaCommentAction( const OString& rComment, sal_Int32 nValue = 0L, const sal_uInt8* pData = NULL, sal_uInt32 nDataSize = 0UL );
    1544             : 
    1545             :     virtual void        Move( long nHorzMove, long nVertMove ) SAL_OVERRIDE;
    1546             :     virtual void        Scale( double fScaleX, double fScaleY ) SAL_OVERRIDE;
    1547             : 
    1548             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1549             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1550             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1551             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1552             : 
    1553       12646 :     const OString& GetComment() const { return maComment; }
    1554           0 :     sal_Int32           GetValue() const { return mnValue; }
    1555         120 :     sal_uInt32          GetDataSize() const { return mnDataSize; }
    1556         120 :     const sal_uInt8*        GetData() const { return mpData; }
    1557             : };
    1558             : 
    1559           0 : class VCL_DLLPUBLIC MetaLayoutModeAction : public MetaAction
    1560             : {
    1561             : private:
    1562             : 
    1563             :     ComplexTextLayoutMode  mnLayoutMode;
    1564             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1565             : 
    1566             : public:
    1567             :                         MetaLayoutModeAction();
    1568             : protected:
    1569             :     virtual             ~MetaLayoutModeAction();
    1570             : public:
    1571             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1572             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1573             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1574             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1575             : 
    1576             :     explicit            MetaLayoutModeAction( ComplexTextLayoutMode nLayoutMode );
    1577             : 
    1578         290 :     ComplexTextLayoutMode  GetLayoutMode() const { return mnLayoutMode; }
    1579             : };
    1580             : 
    1581          54 : class VCL_DLLPUBLIC MetaTextLanguageAction : public MetaAction
    1582             : {
    1583             : private:
    1584             : 
    1585             :     LanguageType        meTextLanguage;
    1586             :     virtual bool    Compare( const MetaAction& ) const SAL_OVERRIDE;
    1587             : 
    1588             : public:
    1589             :                         MetaTextLanguageAction();
    1590             : protected:
    1591             :     virtual             ~MetaTextLanguageAction();
    1592             : public:
    1593             :     virtual void        Execute( OutputDevice* pOut ) SAL_OVERRIDE;
    1594             :     virtual MetaAction* Clone() SAL_OVERRIDE;
    1595             :     virtual void        Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
    1596             :     virtual void        Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
    1597             : 
    1598             :     explicit            MetaTextLanguageAction( LanguageType );
    1599             : 
    1600           8 :     LanguageType        GetTextLanguage() const { return meTextLanguage; }
    1601             : };
    1602             : 
    1603             : #endif // INCLUDED_VCL_METAACT_HXX
    1604             : 
    1605             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10