xref: /aoo4110/main/vcl/source/gdi/metaact.cxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
23*b1cdbd2cSJim Jagielski #include "precompiled_vcl.hxx"
24*b1cdbd2cSJim Jagielski 
25*b1cdbd2cSJim Jagielski #define ENABLE_BYTESTRING_STREAM_OPERATORS
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <algorithm>
28*b1cdbd2cSJim Jagielski #include <string.h>
29*b1cdbd2cSJim Jagielski #include <tools/stream.hxx>
30*b1cdbd2cSJim Jagielski #include <tools/vcompat.hxx>
31*b1cdbd2cSJim Jagielski #include <vcl/outdev.hxx>
32*b1cdbd2cSJim Jagielski #include <vcl/salbtype.hxx>
33*b1cdbd2cSJim Jagielski #include <vcl/metaact.hxx>
34*b1cdbd2cSJim Jagielski #include <vcl/graphictools.hxx>
35*b1cdbd2cSJim Jagielski #include <basegfx/matrix/b2dhommatrixtools.hxx>
36*b1cdbd2cSJim Jagielski #include <vcl/dibtools.hxx>
37*b1cdbd2cSJim Jagielski 
38*b1cdbd2cSJim Jagielski // ========================================================================
39*b1cdbd2cSJim Jagielski 
ImplScalePoint(Point & rPt,double fScaleX,double fScaleY)40*b1cdbd2cSJim Jagielski inline void ImplScalePoint( Point& rPt, double fScaleX, double fScaleY )
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski 	rPt.X() = FRound( fScaleX * rPt.X() );
43*b1cdbd2cSJim Jagielski 	rPt.Y() = FRound( fScaleY * rPt.Y() );
44*b1cdbd2cSJim Jagielski }
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
47*b1cdbd2cSJim Jagielski 
ImplScaleRect(Rectangle & rRect,double fScaleX,double fScaleY)48*b1cdbd2cSJim Jagielski inline void ImplScaleRect( Rectangle& rRect, double fScaleX, double fScaleY )
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski 	Point aTL( rRect.TopLeft() );
51*b1cdbd2cSJim Jagielski 	Point aBR( rRect.BottomRight() );
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski 	ImplScalePoint( aTL, fScaleX, fScaleY );
54*b1cdbd2cSJim Jagielski 	ImplScalePoint( aBR, fScaleX, fScaleY );
55*b1cdbd2cSJim Jagielski 
56*b1cdbd2cSJim Jagielski 	rRect = Rectangle( aTL, aBR );
57*b1cdbd2cSJim Jagielski     rRect.Justify();
58*b1cdbd2cSJim Jagielski }
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
61*b1cdbd2cSJim Jagielski 
ImplScalePoly(Polygon & rPoly,double fScaleX,double fScaleY)62*b1cdbd2cSJim Jagielski inline void ImplScalePoly( Polygon& rPoly, double fScaleX, double fScaleY )
63*b1cdbd2cSJim Jagielski {
64*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i = 0, nCount = rPoly.GetSize(); i < nCount; i++ )
65*b1cdbd2cSJim Jagielski 		ImplScalePoint( rPoly[ i ], fScaleX, fScaleY );
66*b1cdbd2cSJim Jagielski }
67*b1cdbd2cSJim Jagielski 
68*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
69*b1cdbd2cSJim Jagielski 
ImplScaleLineInfo(LineInfo & rLineInfo,double fScaleX,double fScaleY)70*b1cdbd2cSJim Jagielski inline void ImplScaleLineInfo( LineInfo& rLineInfo, double fScaleX, double fScaleY )
71*b1cdbd2cSJim Jagielski {
72*b1cdbd2cSJim Jagielski 	if( !rLineInfo.IsDefault() )
73*b1cdbd2cSJim Jagielski 	{
74*b1cdbd2cSJim Jagielski 		const double fScale = ( fabs(fScaleX) + fabs(fScaleY) ) * 0.5;
75*b1cdbd2cSJim Jagielski 
76*b1cdbd2cSJim Jagielski 		rLineInfo.SetWidth( FRound( fScale * rLineInfo.GetWidth() ) );
77*b1cdbd2cSJim Jagielski 		rLineInfo.SetDashLen( FRound( fScale * rLineInfo.GetDashLen() ) );
78*b1cdbd2cSJim Jagielski 		rLineInfo.SetDotLen( FRound( fScale * rLineInfo.GetDotLen() ) );
79*b1cdbd2cSJim Jagielski 		rLineInfo.SetDistance( FRound( fScale * rLineInfo.GetDistance() ) );
80*b1cdbd2cSJim Jagielski 	}
81*b1cdbd2cSJim Jagielski }
82*b1cdbd2cSJim Jagielski 
83*b1cdbd2cSJim Jagielski // ========================================================================
84*b1cdbd2cSJim Jagielski 
85*b1cdbd2cSJim Jagielski #define COMPAT( _def_rIStm ) VersionCompat aCompat( ( _def_rIStm ), STREAM_READ );
86*b1cdbd2cSJim Jagielski #define COMPAT_VERSION() aCompat.GetVersion()
87*b1cdbd2cSJim Jagielski #define WRITE_BASE_COMPAT( _def_rOStm, _def_nVer, _pWriteData ) 		\
88*b1cdbd2cSJim Jagielski 	MetaAction::Write( ( _def_rOStm ), _pWriteData );					\
89*b1cdbd2cSJim Jagielski 	VersionCompat aCompat( ( _def_rOStm ), STREAM_WRITE, ( _def_nVer ) );
90*b1cdbd2cSJim Jagielski 
91*b1cdbd2cSJim Jagielski // ========================================================================
92*b1cdbd2cSJim Jagielski 
MetaAction()93*b1cdbd2cSJim Jagielski MetaAction::MetaAction() :
94*b1cdbd2cSJim Jagielski 	mnRefCount( 1 ),
95*b1cdbd2cSJim Jagielski 	mnType( META_NULL_ACTION )
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski }
98*b1cdbd2cSJim Jagielski 
99*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
100*b1cdbd2cSJim Jagielski 
MetaAction(sal_uInt16 nType)101*b1cdbd2cSJim Jagielski MetaAction::MetaAction( sal_uInt16 nType ) :
102*b1cdbd2cSJim Jagielski 	mnRefCount( 1 ),
103*b1cdbd2cSJim Jagielski 	mnType( nType )
104*b1cdbd2cSJim Jagielski {
105*b1cdbd2cSJim Jagielski }
106*b1cdbd2cSJim Jagielski 
107*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
108*b1cdbd2cSJim Jagielski 
~MetaAction()109*b1cdbd2cSJim Jagielski MetaAction::~MetaAction()
110*b1cdbd2cSJim Jagielski {
111*b1cdbd2cSJim Jagielski }
112*b1cdbd2cSJim Jagielski 
113*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
114*b1cdbd2cSJim Jagielski 
Execute(OutputDevice *)115*b1cdbd2cSJim Jagielski void MetaAction::Execute( OutputDevice* )
116*b1cdbd2cSJim Jagielski {
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
120*b1cdbd2cSJim Jagielski 
Clone()121*b1cdbd2cSJim Jagielski MetaAction* MetaAction::Clone()
122*b1cdbd2cSJim Jagielski {
123*b1cdbd2cSJim Jagielski 	return new MetaAction;
124*b1cdbd2cSJim Jagielski }
125*b1cdbd2cSJim Jagielski 
126*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
127*b1cdbd2cSJim Jagielski 
Move(long,long)128*b1cdbd2cSJim Jagielski void MetaAction::Move( long, long )
129*b1cdbd2cSJim Jagielski {
130*b1cdbd2cSJim Jagielski }
131*b1cdbd2cSJim Jagielski 
132*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
133*b1cdbd2cSJim Jagielski 
Scale(double,double)134*b1cdbd2cSJim Jagielski void MetaAction::Scale( double, double )
135*b1cdbd2cSJim Jagielski {
136*b1cdbd2cSJim Jagielski }
137*b1cdbd2cSJim Jagielski 
138*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
139*b1cdbd2cSJim Jagielski 
Compare(const MetaAction &) const140*b1cdbd2cSJim Jagielski sal_Bool MetaAction::Compare( const MetaAction& ) const
141*b1cdbd2cSJim Jagielski {
142*b1cdbd2cSJim Jagielski 	return sal_True;
143*b1cdbd2cSJim Jagielski }
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
146*b1cdbd2cSJim Jagielski 
IsEqual(const MetaAction & rMetaAction) const147*b1cdbd2cSJim Jagielski sal_Bool MetaAction::IsEqual( const MetaAction& rMetaAction ) const
148*b1cdbd2cSJim Jagielski {
149*b1cdbd2cSJim Jagielski 	if ( mnType != rMetaAction.mnType )
150*b1cdbd2cSJim Jagielski 		return sal_False;
151*b1cdbd2cSJim Jagielski 	else
152*b1cdbd2cSJim Jagielski 		return Compare( rMetaAction );
153*b1cdbd2cSJim Jagielski }
154*b1cdbd2cSJim Jagielski 
155*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
156*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData *)157*b1cdbd2cSJim Jagielski void MetaAction::Write( SvStream& rOStm, ImplMetaWriteData* )
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski 	rOStm << mnType;
160*b1cdbd2cSJim Jagielski }
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
163*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)164*b1cdbd2cSJim Jagielski void MetaAction::Read( SvStream& rIStm, ImplMetaReadData* )
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski 	rIStm >> mnType;
167*b1cdbd2cSJim Jagielski }
168*b1cdbd2cSJim Jagielski 
169*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
170*b1cdbd2cSJim Jagielski 
ReadMetaAction(SvStream & rIStm,ImplMetaReadData * pData)171*b1cdbd2cSJim Jagielski MetaAction* MetaAction::ReadMetaAction( SvStream& rIStm, ImplMetaReadData* pData )
172*b1cdbd2cSJim Jagielski {
173*b1cdbd2cSJim Jagielski 	MetaAction* pAction = NULL;
174*b1cdbd2cSJim Jagielski 	sal_uInt16		nType;
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski 	rIStm >> nType;
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski 	switch( nType )
179*b1cdbd2cSJim Jagielski 	{
180*b1cdbd2cSJim Jagielski 		case( META_NULL_ACTION ): pAction = new MetaAction; break;
181*b1cdbd2cSJim Jagielski 		case( META_PIXEL_ACTION ): pAction = new MetaPixelAction; break;
182*b1cdbd2cSJim Jagielski 		case( META_POINT_ACTION ): pAction = new MetaPointAction; break;
183*b1cdbd2cSJim Jagielski 		case( META_LINE_ACTION ): pAction = new MetaLineAction; break;
184*b1cdbd2cSJim Jagielski 		case( META_RECT_ACTION ): pAction = new MetaRectAction; break;
185*b1cdbd2cSJim Jagielski 		case( META_ROUNDRECT_ACTION ): pAction = new MetaRoundRectAction; break;
186*b1cdbd2cSJim Jagielski 		case( META_ELLIPSE_ACTION ): pAction = new MetaEllipseAction; break;
187*b1cdbd2cSJim Jagielski 		case( META_ARC_ACTION ): pAction = new MetaArcAction; break;
188*b1cdbd2cSJim Jagielski 		case( META_PIE_ACTION ): pAction = new MetaPieAction; break;
189*b1cdbd2cSJim Jagielski 		case( META_CHORD_ACTION ): pAction = new MetaChordAction; break;
190*b1cdbd2cSJim Jagielski 		case( META_POLYLINE_ACTION ): pAction = new MetaPolyLineAction; break;
191*b1cdbd2cSJim Jagielski 		case( META_POLYGON_ACTION ): pAction = new MetaPolygonAction; break;
192*b1cdbd2cSJim Jagielski 		case( META_POLYPOLYGON_ACTION ): pAction = new MetaPolyPolygonAction; break;
193*b1cdbd2cSJim Jagielski 		case( META_TEXT_ACTION ): pAction = new MetaTextAction; break;
194*b1cdbd2cSJim Jagielski 		case( META_TEXTARRAY_ACTION ): pAction = new MetaTextArrayAction; break;
195*b1cdbd2cSJim Jagielski 		case( META_STRETCHTEXT_ACTION ): pAction = new MetaStretchTextAction; break;
196*b1cdbd2cSJim Jagielski 		case( META_TEXTRECT_ACTION ): pAction = new MetaTextRectAction; break;
197*b1cdbd2cSJim Jagielski 		case( META_TEXTLINE_ACTION ): pAction = new MetaTextLineAction; break;
198*b1cdbd2cSJim Jagielski 		case( META_BMP_ACTION ): pAction = new MetaBmpAction; break;
199*b1cdbd2cSJim Jagielski 		case( META_BMPSCALE_ACTION ): pAction = new MetaBmpScaleAction; break;
200*b1cdbd2cSJim Jagielski 		case( META_BMPSCALEPART_ACTION ): pAction = new MetaBmpScalePartAction; break;
201*b1cdbd2cSJim Jagielski 		case( META_BMPEX_ACTION ): pAction = new MetaBmpExAction; break;
202*b1cdbd2cSJim Jagielski 		case( META_BMPEXSCALE_ACTION ): pAction = new MetaBmpExScaleAction; break;
203*b1cdbd2cSJim Jagielski 		case( META_BMPEXSCALEPART_ACTION ): pAction = new MetaBmpExScalePartAction; break;
204*b1cdbd2cSJim Jagielski 		case( META_MASK_ACTION ): pAction = new MetaMaskAction; break;
205*b1cdbd2cSJim Jagielski 		case( META_MASKSCALE_ACTION ): pAction = new MetaMaskScaleAction; break;
206*b1cdbd2cSJim Jagielski 		case( META_MASKSCALEPART_ACTION ): pAction = new MetaMaskScalePartAction; break;
207*b1cdbd2cSJim Jagielski 		case( META_GRADIENT_ACTION ): pAction = new MetaGradientAction; break;
208*b1cdbd2cSJim Jagielski 		case( META_GRADIENTEX_ACTION ): pAction = new MetaGradientExAction; break;
209*b1cdbd2cSJim Jagielski 		case( META_HATCH_ACTION ): pAction = new MetaHatchAction; break;
210*b1cdbd2cSJim Jagielski 		case( META_WALLPAPER_ACTION ): pAction = new MetaWallpaperAction; break;
211*b1cdbd2cSJim Jagielski 		case( META_CLIPREGION_ACTION ): pAction = new MetaClipRegionAction; break;
212*b1cdbd2cSJim Jagielski 		case( META_ISECTRECTCLIPREGION_ACTION ): pAction = new MetaISectRectClipRegionAction; break;
213*b1cdbd2cSJim Jagielski 		case( META_ISECTREGIONCLIPREGION_ACTION ): pAction = new MetaISectRegionClipRegionAction; break;
214*b1cdbd2cSJim Jagielski 		case( META_MOVECLIPREGION_ACTION ): pAction = new MetaMoveClipRegionAction; break;
215*b1cdbd2cSJim Jagielski 		case( META_LINECOLOR_ACTION ): pAction = new MetaLineColorAction; break;
216*b1cdbd2cSJim Jagielski 		case( META_FILLCOLOR_ACTION ): pAction = new MetaFillColorAction; break;
217*b1cdbd2cSJim Jagielski 		case( META_TEXTCOLOR_ACTION ): pAction = new MetaTextColorAction; break;
218*b1cdbd2cSJim Jagielski 		case( META_TEXTFILLCOLOR_ACTION ): pAction = new MetaTextFillColorAction; break;
219*b1cdbd2cSJim Jagielski 		case( META_TEXTLINECOLOR_ACTION ): pAction = new MetaTextLineColorAction; break;
220*b1cdbd2cSJim Jagielski 		case( META_OVERLINECOLOR_ACTION ): pAction = new MetaOverlineColorAction; break;
221*b1cdbd2cSJim Jagielski 		case( META_TEXTALIGN_ACTION ): pAction = new MetaTextAlignAction; break;
222*b1cdbd2cSJim Jagielski 		case( META_MAPMODE_ACTION ): pAction = new MetaMapModeAction; break;
223*b1cdbd2cSJim Jagielski 		case( META_FONT_ACTION ): pAction = new MetaFontAction; break;
224*b1cdbd2cSJim Jagielski 		case( META_PUSH_ACTION ): pAction = new MetaPushAction; break;
225*b1cdbd2cSJim Jagielski 		case( META_POP_ACTION ): pAction = new MetaPopAction; break;
226*b1cdbd2cSJim Jagielski 		case( META_RASTEROP_ACTION ): pAction = new MetaRasterOpAction; break;
227*b1cdbd2cSJim Jagielski 		case( META_TRANSPARENT_ACTION ): pAction = new MetaTransparentAction; break;
228*b1cdbd2cSJim Jagielski 		case( META_FLOATTRANSPARENT_ACTION ): pAction = new MetaFloatTransparentAction; break;
229*b1cdbd2cSJim Jagielski 		case( META_EPS_ACTION ): pAction = new MetaEPSAction; break;
230*b1cdbd2cSJim Jagielski 		case( META_REFPOINT_ACTION ): pAction = new MetaRefPointAction; break;
231*b1cdbd2cSJim Jagielski 		case( META_COMMENT_ACTION ): pAction = new MetaCommentAction; break;
232*b1cdbd2cSJim Jagielski 		case( META_LAYOUTMODE_ACTION ): pAction = new MetaLayoutModeAction; break;
233*b1cdbd2cSJim Jagielski 		case( META_TEXTLANGUAGE_ACTION ): pAction = new MetaTextLanguageAction; break;
234*b1cdbd2cSJim Jagielski 
235*b1cdbd2cSJim Jagielski 		default:
236*b1cdbd2cSJim Jagielski 		{
237*b1cdbd2cSJim Jagielski 			// Action ueberlesen durch Kombination Ctor/Dtor,
238*b1cdbd2cSJim Jagielski 			// new/delete, weil Compiler sonst vielleicht wegoptimieren
239*b1cdbd2cSJim Jagielski 			delete ( new VersionCompat( rIStm, STREAM_READ ) );
240*b1cdbd2cSJim Jagielski 		}
241*b1cdbd2cSJim Jagielski 		break;
242*b1cdbd2cSJim Jagielski 	}
243*b1cdbd2cSJim Jagielski 
244*b1cdbd2cSJim Jagielski 	if( pAction )
245*b1cdbd2cSJim Jagielski 		pAction->Read( rIStm, pData );
246*b1cdbd2cSJim Jagielski 
247*b1cdbd2cSJim Jagielski 	return pAction;
248*b1cdbd2cSJim Jagielski }
249*b1cdbd2cSJim Jagielski 
250*b1cdbd2cSJim Jagielski // ========================================================================
251*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Pixel,META_PIXEL_ACTION)252*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Pixel, META_PIXEL_ACTION )
253*b1cdbd2cSJim Jagielski 
254*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski MetaPixelAction::MetaPixelAction( const Point& rPt, const Color& rColor ) :
257*b1cdbd2cSJim Jagielski 	MetaAction	( META_PIXEL_ACTION ),
258*b1cdbd2cSJim Jagielski 	maPt		( rPt ),
259*b1cdbd2cSJim Jagielski 	maColor 	( rColor )
260*b1cdbd2cSJim Jagielski {
261*b1cdbd2cSJim Jagielski }
262*b1cdbd2cSJim Jagielski 
263*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
264*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)265*b1cdbd2cSJim Jagielski void MetaPixelAction::Execute( OutputDevice* pOut )
266*b1cdbd2cSJim Jagielski {
267*b1cdbd2cSJim Jagielski 	pOut->DrawPixel( maPt, maColor );
268*b1cdbd2cSJim Jagielski }
269*b1cdbd2cSJim Jagielski 
270*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
271*b1cdbd2cSJim Jagielski 
Clone()272*b1cdbd2cSJim Jagielski MetaAction* MetaPixelAction::Clone()
273*b1cdbd2cSJim Jagielski {
274*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPixelAction( *this );
275*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
276*b1cdbd2cSJim Jagielski 	return pClone;
277*b1cdbd2cSJim Jagielski }
278*b1cdbd2cSJim Jagielski 
279*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
280*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)281*b1cdbd2cSJim Jagielski void MetaPixelAction::Move( long nHorzMove, long nVertMove )
282*b1cdbd2cSJim Jagielski {
283*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
284*b1cdbd2cSJim Jagielski }
285*b1cdbd2cSJim Jagielski 
286*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
287*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)288*b1cdbd2cSJim Jagielski void MetaPixelAction::Scale( double fScaleX, double fScaleY )
289*b1cdbd2cSJim Jagielski {
290*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
291*b1cdbd2cSJim Jagielski }
292*b1cdbd2cSJim Jagielski 
293*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
294*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const295*b1cdbd2cSJim Jagielski sal_Bool MetaPixelAction::Compare( const MetaAction& rMetaAction ) const
296*b1cdbd2cSJim Jagielski {
297*b1cdbd2cSJim Jagielski 	return ( maPt == ((MetaPixelAction&)rMetaAction).maPt ) &&
298*b1cdbd2cSJim Jagielski 		   ( maColor == ((MetaPixelAction&)rMetaAction).maColor );
299*b1cdbd2cSJim Jagielski }
300*b1cdbd2cSJim Jagielski 
301*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
302*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)303*b1cdbd2cSJim Jagielski void MetaPixelAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
304*b1cdbd2cSJim Jagielski {
305*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
306*b1cdbd2cSJim Jagielski 	rOStm << maPt;
307*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
308*b1cdbd2cSJim Jagielski }
309*b1cdbd2cSJim Jagielski 
310*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
311*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)312*b1cdbd2cSJim Jagielski void MetaPixelAction::Read( SvStream& rIStm, ImplMetaReadData* )
313*b1cdbd2cSJim Jagielski {
314*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
315*b1cdbd2cSJim Jagielski 	rIStm >> maPt;
316*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
317*b1cdbd2cSJim Jagielski }
318*b1cdbd2cSJim Jagielski 
319*b1cdbd2cSJim Jagielski // ========================================================================
320*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Point,META_POINT_ACTION)321*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Point, META_POINT_ACTION )
322*b1cdbd2cSJim Jagielski 
323*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
324*b1cdbd2cSJim Jagielski 
325*b1cdbd2cSJim Jagielski MetaPointAction::MetaPointAction( const Point& rPt ) :
326*b1cdbd2cSJim Jagielski 	MetaAction	( META_POINT_ACTION ),
327*b1cdbd2cSJim Jagielski 	maPt		( rPt )
328*b1cdbd2cSJim Jagielski {
329*b1cdbd2cSJim Jagielski }
330*b1cdbd2cSJim Jagielski 
331*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
332*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)333*b1cdbd2cSJim Jagielski void MetaPointAction::Execute( OutputDevice* pOut )
334*b1cdbd2cSJim Jagielski {
335*b1cdbd2cSJim Jagielski 	pOut->DrawPixel( maPt );
336*b1cdbd2cSJim Jagielski }
337*b1cdbd2cSJim Jagielski 
338*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
339*b1cdbd2cSJim Jagielski 
Clone()340*b1cdbd2cSJim Jagielski MetaAction* MetaPointAction::Clone()
341*b1cdbd2cSJim Jagielski {
342*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPointAction( *this );
343*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
344*b1cdbd2cSJim Jagielski 	return pClone;
345*b1cdbd2cSJim Jagielski }
346*b1cdbd2cSJim Jagielski 
347*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
348*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)349*b1cdbd2cSJim Jagielski void MetaPointAction::Move( long nHorzMove, long nVertMove )
350*b1cdbd2cSJim Jagielski {
351*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
352*b1cdbd2cSJim Jagielski }
353*b1cdbd2cSJim Jagielski 
354*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
355*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)356*b1cdbd2cSJim Jagielski void MetaPointAction::Scale( double fScaleX, double fScaleY )
357*b1cdbd2cSJim Jagielski {
358*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski 
361*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
362*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const363*b1cdbd2cSJim Jagielski sal_Bool MetaPointAction::Compare( const MetaAction& rMetaAction ) const
364*b1cdbd2cSJim Jagielski {
365*b1cdbd2cSJim Jagielski 	return maPt == ((MetaPointAction&)rMetaAction).maPt;
366*b1cdbd2cSJim Jagielski }
367*b1cdbd2cSJim Jagielski 
368*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
369*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)370*b1cdbd2cSJim Jagielski void MetaPointAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
371*b1cdbd2cSJim Jagielski {
372*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
373*b1cdbd2cSJim Jagielski 	rOStm << maPt;
374*b1cdbd2cSJim Jagielski }
375*b1cdbd2cSJim Jagielski 
376*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
377*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)378*b1cdbd2cSJim Jagielski void MetaPointAction::Read( SvStream& rIStm, ImplMetaReadData* )
379*b1cdbd2cSJim Jagielski {
380*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
381*b1cdbd2cSJim Jagielski 	rIStm >> maPt;
382*b1cdbd2cSJim Jagielski }
383*b1cdbd2cSJim Jagielski 
384*b1cdbd2cSJim Jagielski // ========================================================================
385*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Line,META_LINE_ACTION)386*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Line, META_LINE_ACTION )
387*b1cdbd2cSJim Jagielski 
388*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
389*b1cdbd2cSJim Jagielski 
390*b1cdbd2cSJim Jagielski MetaLineAction::MetaLineAction( const Point& rStart, const Point& rEnd ) :
391*b1cdbd2cSJim Jagielski 	MetaAction	( META_LINE_ACTION ),
392*b1cdbd2cSJim Jagielski 	maStartPt	( rStart ),
393*b1cdbd2cSJim Jagielski 	maEndPt 	( rEnd )
394*b1cdbd2cSJim Jagielski {
395*b1cdbd2cSJim Jagielski }
396*b1cdbd2cSJim Jagielski 
397*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
398*b1cdbd2cSJim Jagielski 
MetaLineAction(const Point & rStart,const Point & rEnd,const LineInfo & rLineInfo)399*b1cdbd2cSJim Jagielski MetaLineAction::MetaLineAction( const Point& rStart, const Point& rEnd,
400*b1cdbd2cSJim Jagielski 								const LineInfo& rLineInfo ) :
401*b1cdbd2cSJim Jagielski 	MetaAction	( META_LINE_ACTION ),
402*b1cdbd2cSJim Jagielski 	maLineInfo	( rLineInfo ),
403*b1cdbd2cSJim Jagielski 	maStartPt	( rStart ),
404*b1cdbd2cSJim Jagielski 	maEndPt 	( rEnd )
405*b1cdbd2cSJim Jagielski {
406*b1cdbd2cSJim Jagielski }
407*b1cdbd2cSJim Jagielski 
408*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
409*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)410*b1cdbd2cSJim Jagielski void MetaLineAction::Execute( OutputDevice* pOut )
411*b1cdbd2cSJim Jagielski {
412*b1cdbd2cSJim Jagielski 	if( maLineInfo.IsDefault() )
413*b1cdbd2cSJim Jagielski 		pOut->DrawLine( maStartPt, maEndPt );
414*b1cdbd2cSJim Jagielski 	else
415*b1cdbd2cSJim Jagielski 		pOut->DrawLine( maStartPt, maEndPt, maLineInfo );
416*b1cdbd2cSJim Jagielski }
417*b1cdbd2cSJim Jagielski 
418*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
419*b1cdbd2cSJim Jagielski 
Clone()420*b1cdbd2cSJim Jagielski MetaAction* MetaLineAction::Clone()
421*b1cdbd2cSJim Jagielski {
422*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaLineAction( *this );
423*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
424*b1cdbd2cSJim Jagielski 	return pClone;
425*b1cdbd2cSJim Jagielski }
426*b1cdbd2cSJim Jagielski 
427*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
428*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)429*b1cdbd2cSJim Jagielski void MetaLineAction::Move( long nHorzMove, long nVertMove )
430*b1cdbd2cSJim Jagielski {
431*b1cdbd2cSJim Jagielski 	maStartPt.Move( nHorzMove, nVertMove );
432*b1cdbd2cSJim Jagielski 	maEndPt.Move( nHorzMove, nVertMove );
433*b1cdbd2cSJim Jagielski }
434*b1cdbd2cSJim Jagielski 
435*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
436*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)437*b1cdbd2cSJim Jagielski void MetaLineAction::Scale( double fScaleX, double fScaleY )
438*b1cdbd2cSJim Jagielski {
439*b1cdbd2cSJim Jagielski 	ImplScalePoint( maStartPt, fScaleX, fScaleY );
440*b1cdbd2cSJim Jagielski 	ImplScalePoint( maEndPt, fScaleX, fScaleY );
441*b1cdbd2cSJim Jagielski 	ImplScaleLineInfo( maLineInfo, fScaleX, fScaleY );
442*b1cdbd2cSJim Jagielski }
443*b1cdbd2cSJim Jagielski 
444*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
445*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const446*b1cdbd2cSJim Jagielski sal_Bool MetaLineAction::Compare( const MetaAction& rMetaAction ) const
447*b1cdbd2cSJim Jagielski {
448*b1cdbd2cSJim Jagielski 	return ( maLineInfo == ((MetaLineAction&)rMetaAction).maLineInfo ) &&
449*b1cdbd2cSJim Jagielski 	       ( maStartPt == ((MetaLineAction&)rMetaAction).maStartPt ) &&
450*b1cdbd2cSJim Jagielski 		   ( maEndPt == ((MetaLineAction&)rMetaAction).maEndPt );
451*b1cdbd2cSJim Jagielski }
452*b1cdbd2cSJim Jagielski 
453*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
454*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)455*b1cdbd2cSJim Jagielski void MetaLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
456*b1cdbd2cSJim Jagielski {
457*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
458*b1cdbd2cSJim Jagielski 
459*b1cdbd2cSJim Jagielski 	rOStm << maStartPt << maEndPt;	// Version 1
460*b1cdbd2cSJim Jagielski 	rOStm << maLineInfo;			// Version 2
461*b1cdbd2cSJim Jagielski }
462*b1cdbd2cSJim Jagielski 
463*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
464*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)465*b1cdbd2cSJim Jagielski void MetaLineAction::Read( SvStream& rIStm, ImplMetaReadData* )
466*b1cdbd2cSJim Jagielski {
467*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
468*b1cdbd2cSJim Jagielski 
469*b1cdbd2cSJim Jagielski 	// Version 1
470*b1cdbd2cSJim Jagielski 	rIStm >> maStartPt >> maEndPt;
471*b1cdbd2cSJim Jagielski 
472*b1cdbd2cSJim Jagielski 	// Version 2
473*b1cdbd2cSJim Jagielski 	if( aCompat.GetVersion() >= 2 )
474*b1cdbd2cSJim Jagielski 	{
475*b1cdbd2cSJim Jagielski 		rIStm >> maLineInfo;
476*b1cdbd2cSJim Jagielski 	}
477*b1cdbd2cSJim Jagielski }
478*b1cdbd2cSJim Jagielski 
479*b1cdbd2cSJim Jagielski // ========================================================================
480*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Rect,META_RECT_ACTION)481*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Rect, META_RECT_ACTION )
482*b1cdbd2cSJim Jagielski 
483*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
484*b1cdbd2cSJim Jagielski 
485*b1cdbd2cSJim Jagielski MetaRectAction::MetaRectAction( const Rectangle& rRect ) :
486*b1cdbd2cSJim Jagielski 	MetaAction	( META_RECT_ACTION ),
487*b1cdbd2cSJim Jagielski 	maRect		( rRect )
488*b1cdbd2cSJim Jagielski {
489*b1cdbd2cSJim Jagielski }
490*b1cdbd2cSJim Jagielski 
491*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
492*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)493*b1cdbd2cSJim Jagielski void MetaRectAction::Execute( OutputDevice* pOut )
494*b1cdbd2cSJim Jagielski {
495*b1cdbd2cSJim Jagielski 	pOut->DrawRect( maRect );
496*b1cdbd2cSJim Jagielski }
497*b1cdbd2cSJim Jagielski 
498*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
499*b1cdbd2cSJim Jagielski 
Clone()500*b1cdbd2cSJim Jagielski MetaAction* MetaRectAction::Clone()
501*b1cdbd2cSJim Jagielski {
502*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaRectAction( *this );
503*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
504*b1cdbd2cSJim Jagielski 	return pClone;
505*b1cdbd2cSJim Jagielski }
506*b1cdbd2cSJim Jagielski 
507*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
508*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)509*b1cdbd2cSJim Jagielski void MetaRectAction::Move( long nHorzMove, long nVertMove )
510*b1cdbd2cSJim Jagielski {
511*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
512*b1cdbd2cSJim Jagielski }
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
515*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)516*b1cdbd2cSJim Jagielski void MetaRectAction::Scale( double fScaleX, double fScaleY )
517*b1cdbd2cSJim Jagielski {
518*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
519*b1cdbd2cSJim Jagielski }
520*b1cdbd2cSJim Jagielski 
521*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
522*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const523*b1cdbd2cSJim Jagielski sal_Bool MetaRectAction::Compare( const MetaAction& rMetaAction ) const
524*b1cdbd2cSJim Jagielski {
525*b1cdbd2cSJim Jagielski 	return maRect == ((MetaRectAction&)rMetaAction).maRect;
526*b1cdbd2cSJim Jagielski }
527*b1cdbd2cSJim Jagielski 
528*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
529*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)530*b1cdbd2cSJim Jagielski void MetaRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
531*b1cdbd2cSJim Jagielski {
532*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
533*b1cdbd2cSJim Jagielski 	rOStm << maRect;
534*b1cdbd2cSJim Jagielski }
535*b1cdbd2cSJim Jagielski 
536*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
537*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)538*b1cdbd2cSJim Jagielski void MetaRectAction::Read( SvStream& rIStm, ImplMetaReadData* )
539*b1cdbd2cSJim Jagielski {
540*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
541*b1cdbd2cSJim Jagielski 	rIStm >> maRect;
542*b1cdbd2cSJim Jagielski }
543*b1cdbd2cSJim Jagielski 
544*b1cdbd2cSJim Jagielski // ========================================================================
545*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(RoundRect,META_ROUNDRECT_ACTION)546*b1cdbd2cSJim Jagielski IMPL_META_ACTION( RoundRect, META_ROUNDRECT_ACTION )
547*b1cdbd2cSJim Jagielski 
548*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
549*b1cdbd2cSJim Jagielski 
550*b1cdbd2cSJim Jagielski MetaRoundRectAction::MetaRoundRectAction( const Rectangle& rRect,
551*b1cdbd2cSJim Jagielski 										  sal_uInt32 nHorzRound, sal_uInt32 nVertRound ) :
552*b1cdbd2cSJim Jagielski 	MetaAction	( META_ROUNDRECT_ACTION ),
553*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
554*b1cdbd2cSJim Jagielski 	mnHorzRound ( nHorzRound ),
555*b1cdbd2cSJim Jagielski 	mnVertRound ( nVertRound )
556*b1cdbd2cSJim Jagielski {
557*b1cdbd2cSJim Jagielski }
558*b1cdbd2cSJim Jagielski 
559*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
560*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)561*b1cdbd2cSJim Jagielski void MetaRoundRectAction::Execute( OutputDevice* pOut )
562*b1cdbd2cSJim Jagielski {
563*b1cdbd2cSJim Jagielski 	pOut->DrawRect( maRect, mnHorzRound, mnVertRound );
564*b1cdbd2cSJim Jagielski }
565*b1cdbd2cSJim Jagielski 
566*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
567*b1cdbd2cSJim Jagielski 
Clone()568*b1cdbd2cSJim Jagielski MetaAction* MetaRoundRectAction::Clone()
569*b1cdbd2cSJim Jagielski {
570*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaRoundRectAction( *this );
571*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
572*b1cdbd2cSJim Jagielski 	return pClone;
573*b1cdbd2cSJim Jagielski }
574*b1cdbd2cSJim Jagielski 
575*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
576*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)577*b1cdbd2cSJim Jagielski void MetaRoundRectAction::Move( long nHorzMove, long nVertMove )
578*b1cdbd2cSJim Jagielski {
579*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
580*b1cdbd2cSJim Jagielski }
581*b1cdbd2cSJim Jagielski 
582*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
583*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)584*b1cdbd2cSJim Jagielski void MetaRoundRectAction::Scale( double fScaleX, double fScaleY )
585*b1cdbd2cSJim Jagielski {
586*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
587*b1cdbd2cSJim Jagielski 	mnHorzRound = FRound( mnHorzRound * fabs(fScaleX) );
588*b1cdbd2cSJim Jagielski 	mnVertRound = FRound( mnVertRound * fabs(fScaleY) );
589*b1cdbd2cSJim Jagielski }
590*b1cdbd2cSJim Jagielski 
591*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
592*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const593*b1cdbd2cSJim Jagielski sal_Bool MetaRoundRectAction::Compare( const MetaAction& rMetaAction ) const
594*b1cdbd2cSJim Jagielski {
595*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaRoundRectAction&)rMetaAction).maRect ) &&
596*b1cdbd2cSJim Jagielski 		   ( mnHorzRound == ((MetaRoundRectAction&)rMetaAction).mnHorzRound ) &&
597*b1cdbd2cSJim Jagielski 		   ( mnVertRound == ((MetaRoundRectAction&)rMetaAction).mnVertRound );
598*b1cdbd2cSJim Jagielski }
599*b1cdbd2cSJim Jagielski 
600*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
601*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)602*b1cdbd2cSJim Jagielski void MetaRoundRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
603*b1cdbd2cSJim Jagielski {
604*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
605*b1cdbd2cSJim Jagielski 	rOStm << maRect << mnHorzRound << mnVertRound;
606*b1cdbd2cSJim Jagielski }
607*b1cdbd2cSJim Jagielski 
608*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
609*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)610*b1cdbd2cSJim Jagielski void MetaRoundRectAction::Read( SvStream& rIStm, ImplMetaReadData* )
611*b1cdbd2cSJim Jagielski {
612*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
613*b1cdbd2cSJim Jagielski 	rIStm >> maRect >> mnHorzRound >> mnVertRound;
614*b1cdbd2cSJim Jagielski }
615*b1cdbd2cSJim Jagielski 
616*b1cdbd2cSJim Jagielski // ========================================================================
617*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Ellipse,META_ELLIPSE_ACTION)618*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Ellipse, META_ELLIPSE_ACTION )
619*b1cdbd2cSJim Jagielski 
620*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
621*b1cdbd2cSJim Jagielski 
622*b1cdbd2cSJim Jagielski MetaEllipseAction::MetaEllipseAction( const Rectangle& rRect ) :
623*b1cdbd2cSJim Jagielski 	MetaAction	( META_ELLIPSE_ACTION ),
624*b1cdbd2cSJim Jagielski 	maRect		( rRect )
625*b1cdbd2cSJim Jagielski {
626*b1cdbd2cSJim Jagielski }
627*b1cdbd2cSJim Jagielski 
628*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
629*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)630*b1cdbd2cSJim Jagielski void MetaEllipseAction::Execute( OutputDevice* pOut )
631*b1cdbd2cSJim Jagielski {
632*b1cdbd2cSJim Jagielski 	pOut->DrawEllipse( maRect );
633*b1cdbd2cSJim Jagielski }
634*b1cdbd2cSJim Jagielski 
635*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
636*b1cdbd2cSJim Jagielski 
Clone()637*b1cdbd2cSJim Jagielski MetaAction* MetaEllipseAction::Clone()
638*b1cdbd2cSJim Jagielski {
639*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaEllipseAction( *this );
640*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
641*b1cdbd2cSJim Jagielski 	return pClone;
642*b1cdbd2cSJim Jagielski }
643*b1cdbd2cSJim Jagielski 
644*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
645*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)646*b1cdbd2cSJim Jagielski void MetaEllipseAction::Move( long nHorzMove, long nVertMove )
647*b1cdbd2cSJim Jagielski {
648*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
649*b1cdbd2cSJim Jagielski }
650*b1cdbd2cSJim Jagielski 
651*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
652*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)653*b1cdbd2cSJim Jagielski void MetaEllipseAction::Scale( double fScaleX, double fScaleY )
654*b1cdbd2cSJim Jagielski {
655*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
656*b1cdbd2cSJim Jagielski }
657*b1cdbd2cSJim Jagielski 
658*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
659*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const660*b1cdbd2cSJim Jagielski sal_Bool MetaEllipseAction::Compare( const MetaAction& rMetaAction ) const
661*b1cdbd2cSJim Jagielski {
662*b1cdbd2cSJim Jagielski 	return maRect == ((MetaEllipseAction&)rMetaAction).maRect;
663*b1cdbd2cSJim Jagielski }
664*b1cdbd2cSJim Jagielski 
665*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
666*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)667*b1cdbd2cSJim Jagielski void MetaEllipseAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
668*b1cdbd2cSJim Jagielski {
669*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
670*b1cdbd2cSJim Jagielski 	rOStm << maRect;
671*b1cdbd2cSJim Jagielski }
672*b1cdbd2cSJim Jagielski 
673*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
674*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)675*b1cdbd2cSJim Jagielski void MetaEllipseAction::Read( SvStream& rIStm, ImplMetaReadData* )
676*b1cdbd2cSJim Jagielski {
677*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
678*b1cdbd2cSJim Jagielski 	rIStm >> maRect;
679*b1cdbd2cSJim Jagielski }
680*b1cdbd2cSJim Jagielski 
681*b1cdbd2cSJim Jagielski // ========================================================================
682*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Arc,META_ARC_ACTION)683*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Arc, META_ARC_ACTION )
684*b1cdbd2cSJim Jagielski 
685*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
686*b1cdbd2cSJim Jagielski 
687*b1cdbd2cSJim Jagielski MetaArcAction::MetaArcAction( const Rectangle& rRect,
688*b1cdbd2cSJim Jagielski 							  const Point& rStart, const Point& rEnd ) :
689*b1cdbd2cSJim Jagielski 	MetaAction	( META_ARC_ACTION ),
690*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
691*b1cdbd2cSJim Jagielski 	maStartPt	( rStart ),
692*b1cdbd2cSJim Jagielski 	maEndPt 	( rEnd )
693*b1cdbd2cSJim Jagielski {
694*b1cdbd2cSJim Jagielski }
695*b1cdbd2cSJim Jagielski 
696*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
697*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)698*b1cdbd2cSJim Jagielski void MetaArcAction::Execute( OutputDevice* pOut )
699*b1cdbd2cSJim Jagielski {
700*b1cdbd2cSJim Jagielski 	pOut->DrawArc( maRect, maStartPt, maEndPt );
701*b1cdbd2cSJim Jagielski }
702*b1cdbd2cSJim Jagielski 
703*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
704*b1cdbd2cSJim Jagielski 
Clone()705*b1cdbd2cSJim Jagielski MetaAction* MetaArcAction::Clone()
706*b1cdbd2cSJim Jagielski {
707*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaArcAction( *this );
708*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
709*b1cdbd2cSJim Jagielski 	return pClone;
710*b1cdbd2cSJim Jagielski }
711*b1cdbd2cSJim Jagielski 
712*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
713*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)714*b1cdbd2cSJim Jagielski void MetaArcAction::Move( long nHorzMove, long nVertMove )
715*b1cdbd2cSJim Jagielski {
716*b1cdbd2cSJim Jagielski 	maRect.Move(  nHorzMove, nVertMove );
717*b1cdbd2cSJim Jagielski 	maStartPt.Move(  nHorzMove, nVertMove );
718*b1cdbd2cSJim Jagielski 	maEndPt.Move(  nHorzMove, nVertMove );
719*b1cdbd2cSJim Jagielski }
720*b1cdbd2cSJim Jagielski 
721*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
722*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)723*b1cdbd2cSJim Jagielski void MetaArcAction::Scale( double fScaleX, double fScaleY )
724*b1cdbd2cSJim Jagielski {
725*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
726*b1cdbd2cSJim Jagielski 	ImplScalePoint( maStartPt, fScaleX, fScaleY );
727*b1cdbd2cSJim Jagielski 	ImplScalePoint( maEndPt, fScaleX, fScaleY );
728*b1cdbd2cSJim Jagielski }
729*b1cdbd2cSJim Jagielski 
730*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
731*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const732*b1cdbd2cSJim Jagielski sal_Bool MetaArcAction::Compare( const MetaAction& rMetaAction ) const
733*b1cdbd2cSJim Jagielski {
734*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaArcAction&)rMetaAction).maRect ) &&
735*b1cdbd2cSJim Jagielski 		   ( maStartPt == ((MetaArcAction&)rMetaAction).maStartPt ) &&
736*b1cdbd2cSJim Jagielski 		   ( maEndPt == ((MetaArcAction&)rMetaAction).maEndPt );
737*b1cdbd2cSJim Jagielski }
738*b1cdbd2cSJim Jagielski 
739*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
740*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)741*b1cdbd2cSJim Jagielski void MetaArcAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
742*b1cdbd2cSJim Jagielski {
743*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
744*b1cdbd2cSJim Jagielski 	rOStm << maRect << maStartPt << maEndPt;
745*b1cdbd2cSJim Jagielski }
746*b1cdbd2cSJim Jagielski 
747*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
748*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)749*b1cdbd2cSJim Jagielski void MetaArcAction::Read( SvStream& rIStm, ImplMetaReadData* )
750*b1cdbd2cSJim Jagielski {
751*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
752*b1cdbd2cSJim Jagielski 	rIStm >> maRect >> maStartPt >> maEndPt;
753*b1cdbd2cSJim Jagielski }
754*b1cdbd2cSJim Jagielski 
755*b1cdbd2cSJim Jagielski // ========================================================================
756*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Pie,META_PIE_ACTION)757*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Pie, META_PIE_ACTION )
758*b1cdbd2cSJim Jagielski 
759*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
760*b1cdbd2cSJim Jagielski 
761*b1cdbd2cSJim Jagielski MetaPieAction::MetaPieAction( const Rectangle& rRect,
762*b1cdbd2cSJim Jagielski 							  const Point& rStart, const Point& rEnd ) :
763*b1cdbd2cSJim Jagielski 	MetaAction	( META_PIE_ACTION ),
764*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
765*b1cdbd2cSJim Jagielski 	maStartPt	( rStart ),
766*b1cdbd2cSJim Jagielski 	maEndPt 	( rEnd )
767*b1cdbd2cSJim Jagielski {
768*b1cdbd2cSJim Jagielski }
769*b1cdbd2cSJim Jagielski 
770*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
771*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)772*b1cdbd2cSJim Jagielski void MetaPieAction::Execute( OutputDevice* pOut )
773*b1cdbd2cSJim Jagielski {
774*b1cdbd2cSJim Jagielski 	pOut->DrawPie( maRect, maStartPt, maEndPt );
775*b1cdbd2cSJim Jagielski }
776*b1cdbd2cSJim Jagielski 
777*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
778*b1cdbd2cSJim Jagielski 
Clone()779*b1cdbd2cSJim Jagielski MetaAction* MetaPieAction::Clone()
780*b1cdbd2cSJim Jagielski {
781*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPieAction( *this );
782*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
783*b1cdbd2cSJim Jagielski 	return pClone;
784*b1cdbd2cSJim Jagielski }
785*b1cdbd2cSJim Jagielski 
786*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
787*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)788*b1cdbd2cSJim Jagielski void MetaPieAction::Move( long nHorzMove, long nVertMove )
789*b1cdbd2cSJim Jagielski {
790*b1cdbd2cSJim Jagielski 	maRect.Move(  nHorzMove, nVertMove );
791*b1cdbd2cSJim Jagielski 	maStartPt.Move(  nHorzMove, nVertMove );
792*b1cdbd2cSJim Jagielski 	maEndPt.Move(  nHorzMove, nVertMove );
793*b1cdbd2cSJim Jagielski }
794*b1cdbd2cSJim Jagielski 
795*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
796*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)797*b1cdbd2cSJim Jagielski void MetaPieAction::Scale( double fScaleX, double fScaleY )
798*b1cdbd2cSJim Jagielski {
799*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
800*b1cdbd2cSJim Jagielski 	ImplScalePoint( maStartPt, fScaleX, fScaleY );
801*b1cdbd2cSJim Jagielski 	ImplScalePoint( maEndPt, fScaleX, fScaleY );
802*b1cdbd2cSJim Jagielski }
803*b1cdbd2cSJim Jagielski 
804*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
805*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const806*b1cdbd2cSJim Jagielski sal_Bool MetaPieAction::Compare( const MetaAction& rMetaAction ) const
807*b1cdbd2cSJim Jagielski {
808*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaPieAction&)rMetaAction).maRect ) &&
809*b1cdbd2cSJim Jagielski 		   ( maStartPt == ((MetaPieAction&)rMetaAction).maStartPt ) &&
810*b1cdbd2cSJim Jagielski 		   ( maEndPt == ((MetaPieAction&)rMetaAction).maEndPt );
811*b1cdbd2cSJim Jagielski }
812*b1cdbd2cSJim Jagielski 
813*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
814*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)815*b1cdbd2cSJim Jagielski void MetaPieAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
816*b1cdbd2cSJim Jagielski {
817*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
818*b1cdbd2cSJim Jagielski 	rOStm << maRect << maStartPt << maEndPt;
819*b1cdbd2cSJim Jagielski }
820*b1cdbd2cSJim Jagielski 
821*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
822*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)823*b1cdbd2cSJim Jagielski void MetaPieAction::Read( SvStream& rIStm, ImplMetaReadData* )
824*b1cdbd2cSJim Jagielski {
825*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
826*b1cdbd2cSJim Jagielski 	rIStm >> maRect >> maStartPt >> maEndPt;
827*b1cdbd2cSJim Jagielski }
828*b1cdbd2cSJim Jagielski 
829*b1cdbd2cSJim Jagielski // ========================================================================
830*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Chord,META_CHORD_ACTION)831*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Chord, META_CHORD_ACTION )
832*b1cdbd2cSJim Jagielski 
833*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
834*b1cdbd2cSJim Jagielski 
835*b1cdbd2cSJim Jagielski MetaChordAction::MetaChordAction( const Rectangle& rRect,
836*b1cdbd2cSJim Jagielski 								  const Point& rStart, const Point& rEnd ) :
837*b1cdbd2cSJim Jagielski 	MetaAction	( META_CHORD_ACTION ),
838*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
839*b1cdbd2cSJim Jagielski 	maStartPt	( rStart ),
840*b1cdbd2cSJim Jagielski 	maEndPt 	( rEnd )
841*b1cdbd2cSJim Jagielski {
842*b1cdbd2cSJim Jagielski }
843*b1cdbd2cSJim Jagielski 
844*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
845*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)846*b1cdbd2cSJim Jagielski void MetaChordAction::Execute( OutputDevice* pOut )
847*b1cdbd2cSJim Jagielski {
848*b1cdbd2cSJim Jagielski 	pOut->DrawChord( maRect, maStartPt, maEndPt );
849*b1cdbd2cSJim Jagielski }
850*b1cdbd2cSJim Jagielski 
851*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
852*b1cdbd2cSJim Jagielski 
Clone()853*b1cdbd2cSJim Jagielski MetaAction* MetaChordAction::Clone()
854*b1cdbd2cSJim Jagielski {
855*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaChordAction( *this );
856*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
857*b1cdbd2cSJim Jagielski 	return pClone;
858*b1cdbd2cSJim Jagielski }
859*b1cdbd2cSJim Jagielski 
860*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
861*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)862*b1cdbd2cSJim Jagielski void MetaChordAction::Move( long nHorzMove, long nVertMove )
863*b1cdbd2cSJim Jagielski {
864*b1cdbd2cSJim Jagielski 	maRect.Move(  nHorzMove, nVertMove );
865*b1cdbd2cSJim Jagielski 	maStartPt.Move(  nHorzMove, nVertMove );
866*b1cdbd2cSJim Jagielski 	maEndPt.Move(  nHorzMove, nVertMove );
867*b1cdbd2cSJim Jagielski }
868*b1cdbd2cSJim Jagielski 
869*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
870*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)871*b1cdbd2cSJim Jagielski void MetaChordAction::Scale( double fScaleX, double fScaleY )
872*b1cdbd2cSJim Jagielski {
873*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
874*b1cdbd2cSJim Jagielski 	ImplScalePoint( maStartPt, fScaleX, fScaleY );
875*b1cdbd2cSJim Jagielski 	ImplScalePoint( maEndPt, fScaleX, fScaleY );
876*b1cdbd2cSJim Jagielski }
877*b1cdbd2cSJim Jagielski 
878*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
879*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const880*b1cdbd2cSJim Jagielski sal_Bool MetaChordAction::Compare( const MetaAction& rMetaAction ) const
881*b1cdbd2cSJim Jagielski {
882*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaChordAction&)rMetaAction).maRect ) &&
883*b1cdbd2cSJim Jagielski 		   ( maStartPt == ((MetaChordAction&)rMetaAction).maStartPt ) &&
884*b1cdbd2cSJim Jagielski 		   ( maEndPt == ((MetaChordAction&)rMetaAction).maEndPt );
885*b1cdbd2cSJim Jagielski }
886*b1cdbd2cSJim Jagielski 
887*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
888*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)889*b1cdbd2cSJim Jagielski void MetaChordAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
890*b1cdbd2cSJim Jagielski {
891*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
892*b1cdbd2cSJim Jagielski 	rOStm << maRect << maStartPt << maEndPt;
893*b1cdbd2cSJim Jagielski }
894*b1cdbd2cSJim Jagielski 
895*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
896*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)897*b1cdbd2cSJim Jagielski void MetaChordAction::Read( SvStream& rIStm, ImplMetaReadData* )
898*b1cdbd2cSJim Jagielski {
899*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
900*b1cdbd2cSJim Jagielski 	rIStm >> maRect >> maStartPt >> maEndPt;
901*b1cdbd2cSJim Jagielski }
902*b1cdbd2cSJim Jagielski 
903*b1cdbd2cSJim Jagielski // ========================================================================
904*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(PolyLine,META_POLYLINE_ACTION)905*b1cdbd2cSJim Jagielski IMPL_META_ACTION( PolyLine, META_POLYLINE_ACTION )
906*b1cdbd2cSJim Jagielski 
907*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
908*b1cdbd2cSJim Jagielski 
909*b1cdbd2cSJim Jagielski MetaPolyLineAction::MetaPolyLineAction( const Polygon& rPoly ) :
910*b1cdbd2cSJim Jagielski 	MetaAction	( META_POLYLINE_ACTION ),
911*b1cdbd2cSJim Jagielski 	maPoly		( rPoly )
912*b1cdbd2cSJim Jagielski {
913*b1cdbd2cSJim Jagielski }
914*b1cdbd2cSJim Jagielski 
915*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
916*b1cdbd2cSJim Jagielski 
MetaPolyLineAction(const Polygon & rPoly,const LineInfo & rLineInfo)917*b1cdbd2cSJim Jagielski MetaPolyLineAction::MetaPolyLineAction( const Polygon& rPoly, const LineInfo& rLineInfo ) :
918*b1cdbd2cSJim Jagielski 	MetaAction	( META_POLYLINE_ACTION ),
919*b1cdbd2cSJim Jagielski 	maLineInfo	( rLineInfo ),
920*b1cdbd2cSJim Jagielski 	maPoly		( rPoly )
921*b1cdbd2cSJim Jagielski {
922*b1cdbd2cSJim Jagielski }
923*b1cdbd2cSJim Jagielski 
924*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
925*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)926*b1cdbd2cSJim Jagielski void MetaPolyLineAction::Execute( OutputDevice* pOut )
927*b1cdbd2cSJim Jagielski {
928*b1cdbd2cSJim Jagielski 	if( maLineInfo.IsDefault() )
929*b1cdbd2cSJim Jagielski 		pOut->DrawPolyLine( maPoly );
930*b1cdbd2cSJim Jagielski 	else
931*b1cdbd2cSJim Jagielski 		pOut->DrawPolyLine( maPoly, maLineInfo );
932*b1cdbd2cSJim Jagielski }
933*b1cdbd2cSJim Jagielski 
934*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
935*b1cdbd2cSJim Jagielski 
Clone()936*b1cdbd2cSJim Jagielski MetaAction* MetaPolyLineAction::Clone()
937*b1cdbd2cSJim Jagielski {
938*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPolyLineAction( *this );
939*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
940*b1cdbd2cSJim Jagielski 	return pClone;
941*b1cdbd2cSJim Jagielski }
942*b1cdbd2cSJim Jagielski 
943*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
944*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)945*b1cdbd2cSJim Jagielski void MetaPolyLineAction::Move( long nHorzMove, long nVertMove )
946*b1cdbd2cSJim Jagielski {
947*b1cdbd2cSJim Jagielski 	maPoly.Move( nHorzMove, nVertMove );
948*b1cdbd2cSJim Jagielski }
949*b1cdbd2cSJim Jagielski 
950*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
951*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)952*b1cdbd2cSJim Jagielski void MetaPolyLineAction::Scale( double fScaleX, double fScaleY )
953*b1cdbd2cSJim Jagielski {
954*b1cdbd2cSJim Jagielski 	ImplScalePoly( maPoly, fScaleX, fScaleY );
955*b1cdbd2cSJim Jagielski 	ImplScaleLineInfo( maLineInfo, fScaleX, fScaleY );
956*b1cdbd2cSJim Jagielski }
957*b1cdbd2cSJim Jagielski 
958*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
959*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const960*b1cdbd2cSJim Jagielski sal_Bool MetaPolyLineAction::Compare( const MetaAction& rMetaAction ) const
961*b1cdbd2cSJim Jagielski {
962*b1cdbd2cSJim Jagielski 	sal_Bool bIsEqual = sal_True;;
963*b1cdbd2cSJim Jagielski 	if ( maLineInfo != ((MetaPolyLineAction&)rMetaAction).maLineInfo )
964*b1cdbd2cSJim Jagielski 		bIsEqual = sal_False;
965*b1cdbd2cSJim Jagielski 	else
966*b1cdbd2cSJim Jagielski 		bIsEqual = maPoly.IsEqual(((MetaPolyLineAction&)rMetaAction).maPoly );
967*b1cdbd2cSJim Jagielski 	return bIsEqual;
968*b1cdbd2cSJim Jagielski 
969*b1cdbd2cSJim Jagielski }
970*b1cdbd2cSJim Jagielski 
971*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
972*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)973*b1cdbd2cSJim Jagielski void MetaPolyLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
974*b1cdbd2cSJim Jagielski {
975*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 3, pData );
976*b1cdbd2cSJim Jagielski 
977*b1cdbd2cSJim Jagielski 	Polygon aSimplePoly;
978*b1cdbd2cSJim Jagielski 	maPoly.AdaptiveSubdivide( aSimplePoly );
979*b1cdbd2cSJim Jagielski 
980*b1cdbd2cSJim Jagielski 	rOStm << aSimplePoly;								// Version 1
981*b1cdbd2cSJim Jagielski 	rOStm << maLineInfo;								// Version 2
982*b1cdbd2cSJim Jagielski 
983*b1cdbd2cSJim Jagielski 	sal_uInt8 bHasPolyFlags = maPoly.HasFlags();		// Version 3
984*b1cdbd2cSJim Jagielski 	rOStm << bHasPolyFlags;
985*b1cdbd2cSJim Jagielski 	if ( bHasPolyFlags )
986*b1cdbd2cSJim Jagielski 		maPoly.Write( rOStm );
987*b1cdbd2cSJim Jagielski }
988*b1cdbd2cSJim Jagielski 
989*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
990*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)991*b1cdbd2cSJim Jagielski void MetaPolyLineAction::Read( SvStream& rIStm, ImplMetaReadData* )
992*b1cdbd2cSJim Jagielski {
993*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
994*b1cdbd2cSJim Jagielski 
995*b1cdbd2cSJim Jagielski 	// Version 1
996*b1cdbd2cSJim Jagielski 	rIStm >> maPoly;
997*b1cdbd2cSJim Jagielski 
998*b1cdbd2cSJim Jagielski 	// Version 2
999*b1cdbd2cSJim Jagielski 	if( aCompat.GetVersion() >= 2 )
1000*b1cdbd2cSJim Jagielski 		rIStm >> maLineInfo;
1001*b1cdbd2cSJim Jagielski 	if ( aCompat.GetVersion() >= 3 )
1002*b1cdbd2cSJim Jagielski 	{
1003*b1cdbd2cSJim Jagielski 		sal_uInt8 bHasPolyFlags;
1004*b1cdbd2cSJim Jagielski 		rIStm >> bHasPolyFlags;
1005*b1cdbd2cSJim Jagielski 		if ( bHasPolyFlags )
1006*b1cdbd2cSJim Jagielski 			maPoly.Read( rIStm );
1007*b1cdbd2cSJim Jagielski 	}
1008*b1cdbd2cSJim Jagielski }
1009*b1cdbd2cSJim Jagielski 
1010*b1cdbd2cSJim Jagielski // ========================================================================
1011*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Polygon,META_POLYGON_ACTION)1012*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Polygon, META_POLYGON_ACTION )
1013*b1cdbd2cSJim Jagielski 
1014*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1015*b1cdbd2cSJim Jagielski 
1016*b1cdbd2cSJim Jagielski MetaPolygonAction::MetaPolygonAction( const Polygon& rPoly ) :
1017*b1cdbd2cSJim Jagielski 	MetaAction	( META_POLYGON_ACTION ),
1018*b1cdbd2cSJim Jagielski 	maPoly		( rPoly )
1019*b1cdbd2cSJim Jagielski {
1020*b1cdbd2cSJim Jagielski }
1021*b1cdbd2cSJim Jagielski 
1022*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1023*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1024*b1cdbd2cSJim Jagielski void MetaPolygonAction::Execute( OutputDevice* pOut )
1025*b1cdbd2cSJim Jagielski {
1026*b1cdbd2cSJim Jagielski 	pOut->DrawPolygon( maPoly );
1027*b1cdbd2cSJim Jagielski }
1028*b1cdbd2cSJim Jagielski 
1029*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1030*b1cdbd2cSJim Jagielski 
Clone()1031*b1cdbd2cSJim Jagielski MetaAction* MetaPolygonAction::Clone()
1032*b1cdbd2cSJim Jagielski {
1033*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPolygonAction( *this );
1034*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1035*b1cdbd2cSJim Jagielski 	return pClone;
1036*b1cdbd2cSJim Jagielski }
1037*b1cdbd2cSJim Jagielski 
1038*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1039*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1040*b1cdbd2cSJim Jagielski void MetaPolygonAction::Move( long nHorzMove, long nVertMove )
1041*b1cdbd2cSJim Jagielski {
1042*b1cdbd2cSJim Jagielski 	maPoly.Move( nHorzMove, nVertMove );
1043*b1cdbd2cSJim Jagielski }
1044*b1cdbd2cSJim Jagielski 
1045*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1046*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1047*b1cdbd2cSJim Jagielski void MetaPolygonAction::Scale( double fScaleX, double fScaleY )
1048*b1cdbd2cSJim Jagielski {
1049*b1cdbd2cSJim Jagielski 	ImplScalePoly( maPoly, fScaleX, fScaleY );
1050*b1cdbd2cSJim Jagielski }
1051*b1cdbd2cSJim Jagielski 
1052*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1053*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1054*b1cdbd2cSJim Jagielski sal_Bool MetaPolygonAction::Compare( const MetaAction& rMetaAction ) const
1055*b1cdbd2cSJim Jagielski {
1056*b1cdbd2cSJim Jagielski 	return maPoly.IsEqual(((MetaPolygonAction&)rMetaAction).maPoly );
1057*b1cdbd2cSJim Jagielski }
1058*b1cdbd2cSJim Jagielski 
1059*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1060*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1061*b1cdbd2cSJim Jagielski void MetaPolygonAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1062*b1cdbd2cSJim Jagielski {
1063*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1064*b1cdbd2cSJim Jagielski 
1065*b1cdbd2cSJim Jagielski 	Polygon aSimplePoly;							// Version 1
1066*b1cdbd2cSJim Jagielski 	maPoly.AdaptiveSubdivide( aSimplePoly );
1067*b1cdbd2cSJim Jagielski 	rOStm << aSimplePoly;
1068*b1cdbd2cSJim Jagielski 
1069*b1cdbd2cSJim Jagielski 	sal_uInt8 bHasPolyFlags = maPoly.HasFlags();	// Version 2
1070*b1cdbd2cSJim Jagielski 	rOStm << bHasPolyFlags;
1071*b1cdbd2cSJim Jagielski 	if ( bHasPolyFlags )
1072*b1cdbd2cSJim Jagielski 		maPoly.Write( rOStm );
1073*b1cdbd2cSJim Jagielski }
1074*b1cdbd2cSJim Jagielski 
1075*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1076*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)1077*b1cdbd2cSJim Jagielski void MetaPolygonAction::Read( SvStream& rIStm, ImplMetaReadData* )
1078*b1cdbd2cSJim Jagielski {
1079*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1080*b1cdbd2cSJim Jagielski 
1081*b1cdbd2cSJim Jagielski 	rIStm >> maPoly;					// Version 1
1082*b1cdbd2cSJim Jagielski 
1083*b1cdbd2cSJim Jagielski 	if( aCompat.GetVersion() >= 2 )		// Version 2
1084*b1cdbd2cSJim Jagielski 	{
1085*b1cdbd2cSJim Jagielski 		sal_uInt8 bHasPolyFlags;
1086*b1cdbd2cSJim Jagielski 		rIStm >> bHasPolyFlags;
1087*b1cdbd2cSJim Jagielski 		if ( bHasPolyFlags )
1088*b1cdbd2cSJim Jagielski 			maPoly.Read( rIStm );
1089*b1cdbd2cSJim Jagielski 	}
1090*b1cdbd2cSJim Jagielski }
1091*b1cdbd2cSJim Jagielski 
1092*b1cdbd2cSJim Jagielski // ========================================================================
1093*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(PolyPolygon,META_POLYPOLYGON_ACTION)1094*b1cdbd2cSJim Jagielski IMPL_META_ACTION( PolyPolygon, META_POLYPOLYGON_ACTION )
1095*b1cdbd2cSJim Jagielski 
1096*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1097*b1cdbd2cSJim Jagielski 
1098*b1cdbd2cSJim Jagielski MetaPolyPolygonAction::MetaPolyPolygonAction( const PolyPolygon& rPolyPoly ) :
1099*b1cdbd2cSJim Jagielski 	MetaAction	( META_POLYPOLYGON_ACTION ),
1100*b1cdbd2cSJim Jagielski 	maPolyPoly	( rPolyPoly )
1101*b1cdbd2cSJim Jagielski {
1102*b1cdbd2cSJim Jagielski }
1103*b1cdbd2cSJim Jagielski 
1104*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1105*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1106*b1cdbd2cSJim Jagielski void MetaPolyPolygonAction::Execute( OutputDevice* pOut )
1107*b1cdbd2cSJim Jagielski {
1108*b1cdbd2cSJim Jagielski 	pOut->DrawPolyPolygon( maPolyPoly );
1109*b1cdbd2cSJim Jagielski }
1110*b1cdbd2cSJim Jagielski 
1111*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1112*b1cdbd2cSJim Jagielski 
Clone()1113*b1cdbd2cSJim Jagielski MetaAction* MetaPolyPolygonAction::Clone()
1114*b1cdbd2cSJim Jagielski {
1115*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPolyPolygonAction( *this );
1116*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1117*b1cdbd2cSJim Jagielski 	return pClone;
1118*b1cdbd2cSJim Jagielski }
1119*b1cdbd2cSJim Jagielski 
1120*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1121*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1122*b1cdbd2cSJim Jagielski void MetaPolyPolygonAction::Move( long nHorzMove, long nVertMove )
1123*b1cdbd2cSJim Jagielski {
1124*b1cdbd2cSJim Jagielski 	maPolyPoly.Move( nHorzMove, nVertMove );
1125*b1cdbd2cSJim Jagielski }
1126*b1cdbd2cSJim Jagielski 
1127*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1128*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1129*b1cdbd2cSJim Jagielski void MetaPolyPolygonAction::Scale( double fScaleX, double fScaleY )
1130*b1cdbd2cSJim Jagielski {
1131*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
1132*b1cdbd2cSJim Jagielski 		ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
1133*b1cdbd2cSJim Jagielski }
1134*b1cdbd2cSJim Jagielski 
1135*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1136*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1137*b1cdbd2cSJim Jagielski sal_Bool MetaPolyPolygonAction::Compare( const MetaAction& rMetaAction ) const
1138*b1cdbd2cSJim Jagielski {
1139*b1cdbd2cSJim Jagielski 	return maPolyPoly.IsEqual(((MetaPolyPolygonAction&)rMetaAction).maPolyPoly );
1140*b1cdbd2cSJim Jagielski }
1141*b1cdbd2cSJim Jagielski 
1142*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1143*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1144*b1cdbd2cSJim Jagielski void MetaPolyPolygonAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1145*b1cdbd2cSJim Jagielski {
1146*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1147*b1cdbd2cSJim Jagielski 
1148*b1cdbd2cSJim Jagielski 	sal_uInt16 nNumberOfComplexPolygons = 0;
1149*b1cdbd2cSJim Jagielski 	sal_uInt16 i, nPolyCount = maPolyPoly.Count();
1150*b1cdbd2cSJim Jagielski 
1151*b1cdbd2cSJim Jagielski 	Polygon aSimplePoly;								// Version 1
1152*b1cdbd2cSJim Jagielski 	rOStm << nPolyCount;
1153*b1cdbd2cSJim Jagielski 	for ( i = 0; i < nPolyCount; i++ )
1154*b1cdbd2cSJim Jagielski 	{
1155*b1cdbd2cSJim Jagielski 		const Polygon& rPoly = maPolyPoly.GetObject( i );
1156*b1cdbd2cSJim Jagielski 		if ( rPoly.HasFlags() )
1157*b1cdbd2cSJim Jagielski 			nNumberOfComplexPolygons++;
1158*b1cdbd2cSJim Jagielski 		rPoly.AdaptiveSubdivide( aSimplePoly );
1159*b1cdbd2cSJim Jagielski 		rOStm << aSimplePoly;
1160*b1cdbd2cSJim Jagielski 	}
1161*b1cdbd2cSJim Jagielski 
1162*b1cdbd2cSJim Jagielski 	rOStm << nNumberOfComplexPolygons;					// Version 2
1163*b1cdbd2cSJim Jagielski 	for ( i = 0; nNumberOfComplexPolygons && ( i < nPolyCount ); i++ )
1164*b1cdbd2cSJim Jagielski 	{
1165*b1cdbd2cSJim Jagielski 		const Polygon& rPoly = maPolyPoly.GetObject( i );
1166*b1cdbd2cSJim Jagielski 		if ( rPoly.HasFlags() )
1167*b1cdbd2cSJim Jagielski 		{
1168*b1cdbd2cSJim Jagielski 			rOStm << i;
1169*b1cdbd2cSJim Jagielski 			rPoly.Write( rOStm );
1170*b1cdbd2cSJim Jagielski 
1171*b1cdbd2cSJim Jagielski 			nNumberOfComplexPolygons--;
1172*b1cdbd2cSJim Jagielski 		}
1173*b1cdbd2cSJim Jagielski 	}
1174*b1cdbd2cSJim Jagielski }
1175*b1cdbd2cSJim Jagielski 
1176*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1177*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)1178*b1cdbd2cSJim Jagielski void MetaPolyPolygonAction::Read( SvStream& rIStm, ImplMetaReadData* )
1179*b1cdbd2cSJim Jagielski {
1180*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1181*b1cdbd2cSJim Jagielski 	rIStm >> maPolyPoly;				// Version 1
1182*b1cdbd2cSJim Jagielski 
1183*b1cdbd2cSJim Jagielski 	if ( aCompat.GetVersion() >= 2 )	// Version 2
1184*b1cdbd2cSJim Jagielski 	{
1185*b1cdbd2cSJim Jagielski 		sal_uInt16 i, nIndex, nNumberOfComplexPolygons;
1186*b1cdbd2cSJim Jagielski 		rIStm >> nNumberOfComplexPolygons;
1187*b1cdbd2cSJim Jagielski 		for ( i = 0; i < nNumberOfComplexPolygons; i++ )
1188*b1cdbd2cSJim Jagielski 		{
1189*b1cdbd2cSJim Jagielski 			rIStm >> nIndex;
1190*b1cdbd2cSJim Jagielski 			Polygon aPoly;
1191*b1cdbd2cSJim Jagielski 			aPoly.Read( rIStm );
1192*b1cdbd2cSJim Jagielski 			maPolyPoly.Replace( aPoly, nIndex );
1193*b1cdbd2cSJim Jagielski 		}
1194*b1cdbd2cSJim Jagielski 	}
1195*b1cdbd2cSJim Jagielski }
1196*b1cdbd2cSJim Jagielski 
1197*b1cdbd2cSJim Jagielski // ========================================================================
1198*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Text,META_TEXT_ACTION)1199*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Text, META_TEXT_ACTION )
1200*b1cdbd2cSJim Jagielski 
1201*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1202*b1cdbd2cSJim Jagielski 
1203*b1cdbd2cSJim Jagielski MetaTextAction::MetaTextAction( const Point& rPt, const XubString& rStr,
1204*b1cdbd2cSJim Jagielski 								sal_uInt16 nIndex, sal_uInt16 nLen ) :
1205*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXT_ACTION ),
1206*b1cdbd2cSJim Jagielski 	maPt		( rPt ),
1207*b1cdbd2cSJim Jagielski 	maStr		( rStr ),
1208*b1cdbd2cSJim Jagielski 	mnIndex 	( nIndex ),
1209*b1cdbd2cSJim Jagielski 	mnLen		( nLen )
1210*b1cdbd2cSJim Jagielski {
1211*b1cdbd2cSJim Jagielski }
1212*b1cdbd2cSJim Jagielski 
1213*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1214*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1215*b1cdbd2cSJim Jagielski void MetaTextAction::Execute( OutputDevice* pOut )
1216*b1cdbd2cSJim Jagielski {
1217*b1cdbd2cSJim Jagielski 	pOut->DrawText( maPt, maStr, mnIndex, mnLen );
1218*b1cdbd2cSJim Jagielski }
1219*b1cdbd2cSJim Jagielski 
1220*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1221*b1cdbd2cSJim Jagielski 
Clone()1222*b1cdbd2cSJim Jagielski MetaAction* MetaTextAction::Clone()
1223*b1cdbd2cSJim Jagielski {
1224*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextAction( *this );
1225*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1226*b1cdbd2cSJim Jagielski 	return pClone;
1227*b1cdbd2cSJim Jagielski }
1228*b1cdbd2cSJim Jagielski 
1229*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1230*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1231*b1cdbd2cSJim Jagielski void MetaTextAction::Move( long nHorzMove, long nVertMove )
1232*b1cdbd2cSJim Jagielski {
1233*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
1234*b1cdbd2cSJim Jagielski }
1235*b1cdbd2cSJim Jagielski 
1236*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1237*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1238*b1cdbd2cSJim Jagielski void MetaTextAction::Scale( double fScaleX, double fScaleY )
1239*b1cdbd2cSJim Jagielski {
1240*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
1241*b1cdbd2cSJim Jagielski }
1242*b1cdbd2cSJim Jagielski 
1243*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1244*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1245*b1cdbd2cSJim Jagielski sal_Bool MetaTextAction::Compare( const MetaAction& rMetaAction ) const
1246*b1cdbd2cSJim Jagielski {
1247*b1cdbd2cSJim Jagielski 	return ( maPt == ((MetaTextAction&)rMetaAction).maPt ) &&
1248*b1cdbd2cSJim Jagielski 		   ( maStr == ((MetaTextAction&)rMetaAction).maStr ) &&
1249*b1cdbd2cSJim Jagielski 		   ( mnIndex == ((MetaTextAction&)rMetaAction).mnIndex ) &&
1250*b1cdbd2cSJim Jagielski 		   ( mnLen == ((MetaTextAction&)rMetaAction).mnLen );
1251*b1cdbd2cSJim Jagielski }
1252*b1cdbd2cSJim Jagielski 
1253*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1254*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1255*b1cdbd2cSJim Jagielski void MetaTextAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1256*b1cdbd2cSJim Jagielski {
1257*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1258*b1cdbd2cSJim Jagielski 	rOStm	<< maPt;
1259*b1cdbd2cSJim Jagielski 	rOStm.WriteByteString( maStr, pData->meActualCharSet );
1260*b1cdbd2cSJim Jagielski 	rOStm	<< mnIndex;
1261*b1cdbd2cSJim Jagielski 	rOStm	<< mnLen;
1262*b1cdbd2cSJim Jagielski 
1263*b1cdbd2cSJim Jagielski 	sal_uInt16 i, nLen = maStr.Len();							// version 2
1264*b1cdbd2cSJim Jagielski 	rOStm << nLen;
1265*b1cdbd2cSJim Jagielski 	for ( i = 0; i < nLen; i++ )
1266*b1cdbd2cSJim Jagielski 	{
1267*b1cdbd2cSJim Jagielski 		sal_Unicode nUni = maStr.GetChar( i );
1268*b1cdbd2cSJim Jagielski 		rOStm << nUni;
1269*b1cdbd2cSJim Jagielski 	}
1270*b1cdbd2cSJim Jagielski }
1271*b1cdbd2cSJim Jagielski 
1272*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1273*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData * pData)1274*b1cdbd2cSJim Jagielski void MetaTextAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
1275*b1cdbd2cSJim Jagielski {
1276*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1277*b1cdbd2cSJim Jagielski 	rIStm	>> maPt;
1278*b1cdbd2cSJim Jagielski 	rIStm.ReadByteString( maStr, pData->meActualCharSet );
1279*b1cdbd2cSJim Jagielski 	rIStm	>> mnIndex;
1280*b1cdbd2cSJim Jagielski 	rIStm	>> mnLen;
1281*b1cdbd2cSJim Jagielski 
1282*b1cdbd2cSJim Jagielski 	if ( aCompat.GetVersion() >= 2 )							// Version 2
1283*b1cdbd2cSJim Jagielski 	{
1284*b1cdbd2cSJim Jagielski 		sal_uInt16 nLen;
1285*b1cdbd2cSJim Jagielski 		rIStm >> nLen;
1286*b1cdbd2cSJim Jagielski 		sal_Unicode* pBuffer = maStr.AllocBuffer( nLen );
1287*b1cdbd2cSJim Jagielski 		while ( nLen-- )
1288*b1cdbd2cSJim Jagielski 			rIStm >> *pBuffer++;
1289*b1cdbd2cSJim Jagielski 	}
1290*b1cdbd2cSJim Jagielski }
1291*b1cdbd2cSJim Jagielski 
1292*b1cdbd2cSJim Jagielski // ========================================================================
1293*b1cdbd2cSJim Jagielski 
MetaTextArrayAction()1294*b1cdbd2cSJim Jagielski MetaTextArrayAction::MetaTextArrayAction() :
1295*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTARRAY_ACTION ),
1296*b1cdbd2cSJim Jagielski 	mpDXAry 	( NULL ),
1297*b1cdbd2cSJim Jagielski 	mnIndex 	( 0 ),
1298*b1cdbd2cSJim Jagielski 	mnLen		( 0 )
1299*b1cdbd2cSJim Jagielski {
1300*b1cdbd2cSJim Jagielski }
1301*b1cdbd2cSJim Jagielski 
1302*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1303*b1cdbd2cSJim Jagielski 
MetaTextArrayAction(const MetaTextArrayAction & rAction)1304*b1cdbd2cSJim Jagielski MetaTextArrayAction::MetaTextArrayAction( const MetaTextArrayAction& rAction ) :
1305*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTARRAY_ACTION ),
1306*b1cdbd2cSJim Jagielski 	maStartPt	( rAction.maStartPt ),
1307*b1cdbd2cSJim Jagielski 	maStr		( rAction.maStr ),
1308*b1cdbd2cSJim Jagielski 	mnIndex 	( rAction.mnIndex ),
1309*b1cdbd2cSJim Jagielski 	mnLen		( rAction.mnLen )
1310*b1cdbd2cSJim Jagielski {
1311*b1cdbd2cSJim Jagielski 	if( rAction.mpDXAry )
1312*b1cdbd2cSJim Jagielski 	{
1313*b1cdbd2cSJim Jagielski 		const sal_uLong nAryLen = mnLen;
1314*b1cdbd2cSJim Jagielski 
1315*b1cdbd2cSJim Jagielski 		mpDXAry = new sal_Int32[ nAryLen ];
1316*b1cdbd2cSJim Jagielski 		memcpy( mpDXAry, rAction.mpDXAry, nAryLen * sizeof( sal_Int32 ) );
1317*b1cdbd2cSJim Jagielski 	}
1318*b1cdbd2cSJim Jagielski 	else
1319*b1cdbd2cSJim Jagielski 		mpDXAry = NULL;
1320*b1cdbd2cSJim Jagielski }
1321*b1cdbd2cSJim Jagielski 
1322*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1323*b1cdbd2cSJim Jagielski 
MetaTextArrayAction(const Point & rStartPt,const XubString & rStr,const sal_Int32 * pDXAry,sal_uInt16 nIndex,sal_uInt16 nLen)1324*b1cdbd2cSJim Jagielski MetaTextArrayAction::MetaTextArrayAction( const Point& rStartPt,
1325*b1cdbd2cSJim Jagielski 										  const XubString& rStr,
1326*b1cdbd2cSJim Jagielski 										  const sal_Int32* pDXAry,
1327*b1cdbd2cSJim Jagielski 										  sal_uInt16 nIndex,
1328*b1cdbd2cSJim Jagielski 										  sal_uInt16 nLen ) :
1329*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTARRAY_ACTION ),
1330*b1cdbd2cSJim Jagielski 	maStartPt	( rStartPt ),
1331*b1cdbd2cSJim Jagielski 	maStr		( rStr ),
1332*b1cdbd2cSJim Jagielski 	mnIndex 	( nIndex ),
1333*b1cdbd2cSJim Jagielski 	mnLen		( ( nLen == STRING_LEN ) ? rStr.Len() : nLen )
1334*b1cdbd2cSJim Jagielski {
1335*b1cdbd2cSJim Jagielski     const sal_uLong nAryLen = pDXAry ? mnLen : 0;
1336*b1cdbd2cSJim Jagielski 
1337*b1cdbd2cSJim Jagielski 	if( nAryLen )
1338*b1cdbd2cSJim Jagielski 	{
1339*b1cdbd2cSJim Jagielski 		mpDXAry = new sal_Int32[ nAryLen ];
1340*b1cdbd2cSJim Jagielski 		memcpy( mpDXAry, pDXAry, nAryLen * sizeof( sal_Int32 ) );
1341*b1cdbd2cSJim Jagielski 	}
1342*b1cdbd2cSJim Jagielski 	else
1343*b1cdbd2cSJim Jagielski 		mpDXAry = NULL;
1344*b1cdbd2cSJim Jagielski }
1345*b1cdbd2cSJim Jagielski 
1346*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1347*b1cdbd2cSJim Jagielski 
~MetaTextArrayAction()1348*b1cdbd2cSJim Jagielski MetaTextArrayAction::~MetaTextArrayAction()
1349*b1cdbd2cSJim Jagielski {
1350*b1cdbd2cSJim Jagielski 	delete[] mpDXAry;
1351*b1cdbd2cSJim Jagielski }
1352*b1cdbd2cSJim Jagielski 
1353*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1354*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1355*b1cdbd2cSJim Jagielski void MetaTextArrayAction::Execute( OutputDevice* pOut )
1356*b1cdbd2cSJim Jagielski {
1357*b1cdbd2cSJim Jagielski 	pOut->DrawTextArray( maStartPt, maStr, mpDXAry, mnIndex, mnLen );
1358*b1cdbd2cSJim Jagielski }
1359*b1cdbd2cSJim Jagielski 
1360*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1361*b1cdbd2cSJim Jagielski 
Clone()1362*b1cdbd2cSJim Jagielski MetaAction* MetaTextArrayAction::Clone()
1363*b1cdbd2cSJim Jagielski {
1364*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextArrayAction( *this );
1365*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1366*b1cdbd2cSJim Jagielski 	return pClone;
1367*b1cdbd2cSJim Jagielski }
1368*b1cdbd2cSJim Jagielski 
1369*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1370*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1371*b1cdbd2cSJim Jagielski void MetaTextArrayAction::Move( long nHorzMove, long nVertMove )
1372*b1cdbd2cSJim Jagielski {
1373*b1cdbd2cSJim Jagielski 	maStartPt.Move( nHorzMove, nVertMove );
1374*b1cdbd2cSJim Jagielski }
1375*b1cdbd2cSJim Jagielski 
1376*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1377*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1378*b1cdbd2cSJim Jagielski void MetaTextArrayAction::Scale( double fScaleX, double fScaleY )
1379*b1cdbd2cSJim Jagielski {
1380*b1cdbd2cSJim Jagielski 	ImplScalePoint( maStartPt, fScaleX, fScaleY );
1381*b1cdbd2cSJim Jagielski 
1382*b1cdbd2cSJim Jagielski 	if ( mpDXAry && mnLen )
1383*b1cdbd2cSJim Jagielski 	{
1384*b1cdbd2cSJim Jagielski 		for ( sal_uInt16 i = 0, nCount = mnLen; i < nCount; i++ )
1385*b1cdbd2cSJim Jagielski 			mpDXAry[ i ] = FRound( mpDXAry[ i ] * fabs(fScaleX) );
1386*b1cdbd2cSJim Jagielski 	}
1387*b1cdbd2cSJim Jagielski }
1388*b1cdbd2cSJim Jagielski 
1389*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1390*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1391*b1cdbd2cSJim Jagielski sal_Bool MetaTextArrayAction::Compare( const MetaAction& rMetaAction ) const
1392*b1cdbd2cSJim Jagielski {
1393*b1cdbd2cSJim Jagielski 	return ( maStartPt == ((MetaTextArrayAction&)rMetaAction).maStartPt ) &&
1394*b1cdbd2cSJim Jagielski 		   ( maStr == ((MetaTextArrayAction&)rMetaAction).maStr ) &&
1395*b1cdbd2cSJim Jagielski 		   ( mnIndex == ((MetaTextArrayAction&)rMetaAction).mnIndex ) &&
1396*b1cdbd2cSJim Jagielski 		   ( mnLen == ((MetaTextArrayAction&)rMetaAction).mnLen ) &&
1397*b1cdbd2cSJim Jagielski 		   ( memcmp( mpDXAry, ((MetaTextArrayAction&)rMetaAction).mpDXAry, mnLen ) == 0 );
1398*b1cdbd2cSJim Jagielski }
1399*b1cdbd2cSJim Jagielski 
1400*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1401*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1402*b1cdbd2cSJim Jagielski void MetaTextArrayAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1403*b1cdbd2cSJim Jagielski {
1404*b1cdbd2cSJim Jagielski     const sal_uInt32 nAryLen = mpDXAry ? mnLen : 0;
1405*b1cdbd2cSJim Jagielski 
1406*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1407*b1cdbd2cSJim Jagielski 	rOStm	<< maStartPt;
1408*b1cdbd2cSJim Jagielski 	rOStm.WriteByteString( maStr, pData->meActualCharSet );
1409*b1cdbd2cSJim Jagielski 	rOStm	<< mnIndex;
1410*b1cdbd2cSJim Jagielski 	rOStm	<< mnLen;
1411*b1cdbd2cSJim Jagielski 	rOStm	<< nAryLen;
1412*b1cdbd2cSJim Jagielski 
1413*b1cdbd2cSJim Jagielski 	for( sal_uLong i = 0UL; i < nAryLen; i++ )
1414*b1cdbd2cSJim Jagielski 		rOStm << mpDXAry[ i ];
1415*b1cdbd2cSJim Jagielski 
1416*b1cdbd2cSJim Jagielski 	sal_uInt16 j, nLen = maStr.Len();							// version 2
1417*b1cdbd2cSJim Jagielski 	rOStm << nLen;
1418*b1cdbd2cSJim Jagielski 	for ( j = 0; j < nLen; j++ )
1419*b1cdbd2cSJim Jagielski 	{
1420*b1cdbd2cSJim Jagielski 		sal_Unicode nUni = maStr.GetChar( j );
1421*b1cdbd2cSJim Jagielski 		rOStm << nUni;
1422*b1cdbd2cSJim Jagielski 	}
1423*b1cdbd2cSJim Jagielski }
1424*b1cdbd2cSJim Jagielski 
1425*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1426*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData * pData)1427*b1cdbd2cSJim Jagielski void MetaTextArrayAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
1428*b1cdbd2cSJim Jagielski {
1429*b1cdbd2cSJim Jagielski 	sal_uInt32 nAryLen;
1430*b1cdbd2cSJim Jagielski 
1431*b1cdbd2cSJim Jagielski 	delete[] mpDXAry;
1432*b1cdbd2cSJim Jagielski 
1433*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1434*b1cdbd2cSJim Jagielski 	rIStm	>> maStartPt;
1435*b1cdbd2cSJim Jagielski 	rIStm.ReadByteString( maStr, pData->meActualCharSet );
1436*b1cdbd2cSJim Jagielski 	rIStm	>> mnIndex;
1437*b1cdbd2cSJim Jagielski 	rIStm	>> mnLen;
1438*b1cdbd2cSJim Jagielski 	rIStm	>> nAryLen;
1439*b1cdbd2cSJim Jagielski 
1440*b1cdbd2cSJim Jagielski 	if ( mnIndex + mnLen > maStr.Len() )
1441*b1cdbd2cSJim Jagielski 	{
1442*b1cdbd2cSJim Jagielski 		mnIndex = 0;
1443*b1cdbd2cSJim Jagielski 		mpDXAry = 0;
1444*b1cdbd2cSJim Jagielski 		return;
1445*b1cdbd2cSJim Jagielski 	}
1446*b1cdbd2cSJim Jagielski 
1447*b1cdbd2cSJim Jagielski 	if( nAryLen )
1448*b1cdbd2cSJim Jagielski 	{
1449*b1cdbd2cSJim Jagielski         // #i9762#, #106172# Ensure that DX array is at least mnLen entries long
1450*b1cdbd2cSJim Jagielski 		if ( mnLen >= nAryLen )
1451*b1cdbd2cSJim Jagielski 		{
1452*b1cdbd2cSJim Jagielski 			mpDXAry = new (std::nothrow)sal_Int32[ mnLen ];
1453*b1cdbd2cSJim Jagielski 			if ( mpDXAry )
1454*b1cdbd2cSJim Jagielski 			{
1455*b1cdbd2cSJim Jagielski 	       		sal_uLong i;
1456*b1cdbd2cSJim Jagielski 				for( i = 0UL; i < nAryLen; i++ )
1457*b1cdbd2cSJim Jagielski 					rIStm >> mpDXAry[ i ];
1458*b1cdbd2cSJim Jagielski 
1459*b1cdbd2cSJim Jagielski 				// #106172# setup remainder
1460*b1cdbd2cSJim Jagielski 				for( ; i < mnLen; i++ )
1461*b1cdbd2cSJim Jagielski 					mpDXAry[ i ] = 0;
1462*b1cdbd2cSJim Jagielski 			}
1463*b1cdbd2cSJim Jagielski 		}
1464*b1cdbd2cSJim Jagielski 		else
1465*b1cdbd2cSJim Jagielski 		{
1466*b1cdbd2cSJim Jagielski 			mpDXAry = NULL;
1467*b1cdbd2cSJim Jagielski 			return;
1468*b1cdbd2cSJim Jagielski 		}
1469*b1cdbd2cSJim Jagielski 	}
1470*b1cdbd2cSJim Jagielski 	else
1471*b1cdbd2cSJim Jagielski 		mpDXAry = NULL;
1472*b1cdbd2cSJim Jagielski 
1473*b1cdbd2cSJim Jagielski 	if ( aCompat.GetVersion() >= 2 )							// Version 2
1474*b1cdbd2cSJim Jagielski 	{
1475*b1cdbd2cSJim Jagielski 		sal_uInt16 nLen;
1476*b1cdbd2cSJim Jagielski 		rIStm >> nLen;
1477*b1cdbd2cSJim Jagielski 		sal_Unicode* pBuffer = maStr.AllocBuffer( nLen );
1478*b1cdbd2cSJim Jagielski 		while ( nLen-- )
1479*b1cdbd2cSJim Jagielski 			rIStm >> *pBuffer++;
1480*b1cdbd2cSJim Jagielski 
1481*b1cdbd2cSJim Jagielski 		if ( mnIndex + mnLen > maStr.Len() )
1482*b1cdbd2cSJim Jagielski 		{
1483*b1cdbd2cSJim Jagielski 			mnIndex = 0;
1484*b1cdbd2cSJim Jagielski 			delete[] mpDXAry, mpDXAry = NULL;
1485*b1cdbd2cSJim Jagielski 		}
1486*b1cdbd2cSJim Jagielski 	}
1487*b1cdbd2cSJim Jagielski }
1488*b1cdbd2cSJim Jagielski 
1489*b1cdbd2cSJim Jagielski // ========================================================================
1490*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(StretchText,META_STRETCHTEXT_ACTION)1491*b1cdbd2cSJim Jagielski IMPL_META_ACTION( StretchText, META_STRETCHTEXT_ACTION )
1492*b1cdbd2cSJim Jagielski 
1493*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1494*b1cdbd2cSJim Jagielski 
1495*b1cdbd2cSJim Jagielski MetaStretchTextAction::MetaStretchTextAction( const Point& rPt, sal_uInt32 nWidth,
1496*b1cdbd2cSJim Jagielski 											  const XubString& rStr,
1497*b1cdbd2cSJim Jagielski 											  sal_uInt16 nIndex, sal_uInt16 nLen ) :
1498*b1cdbd2cSJim Jagielski 	MetaAction	( META_STRETCHTEXT_ACTION ),
1499*b1cdbd2cSJim Jagielski 	maPt		( rPt ),
1500*b1cdbd2cSJim Jagielski 	maStr		( rStr ),
1501*b1cdbd2cSJim Jagielski 	mnWidth 	( nWidth ),
1502*b1cdbd2cSJim Jagielski 	mnIndex 	( nIndex ),
1503*b1cdbd2cSJim Jagielski 	mnLen		( nLen )
1504*b1cdbd2cSJim Jagielski {
1505*b1cdbd2cSJim Jagielski }
1506*b1cdbd2cSJim Jagielski 
1507*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1508*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1509*b1cdbd2cSJim Jagielski void MetaStretchTextAction::Execute( OutputDevice* pOut )
1510*b1cdbd2cSJim Jagielski {
1511*b1cdbd2cSJim Jagielski 	pOut->DrawStretchText( maPt, mnWidth, maStr, mnIndex, mnLen );
1512*b1cdbd2cSJim Jagielski }
1513*b1cdbd2cSJim Jagielski 
1514*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1515*b1cdbd2cSJim Jagielski 
Clone()1516*b1cdbd2cSJim Jagielski MetaAction* MetaStretchTextAction::Clone()
1517*b1cdbd2cSJim Jagielski {
1518*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaStretchTextAction( *this );
1519*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1520*b1cdbd2cSJim Jagielski 	return pClone;
1521*b1cdbd2cSJim Jagielski }
1522*b1cdbd2cSJim Jagielski 
1523*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1524*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1525*b1cdbd2cSJim Jagielski void MetaStretchTextAction::Move( long nHorzMove, long nVertMove )
1526*b1cdbd2cSJim Jagielski {
1527*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
1528*b1cdbd2cSJim Jagielski }
1529*b1cdbd2cSJim Jagielski 
1530*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1531*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1532*b1cdbd2cSJim Jagielski void MetaStretchTextAction::Scale( double fScaleX, double fScaleY )
1533*b1cdbd2cSJim Jagielski {
1534*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
1535*b1cdbd2cSJim Jagielski 	mnWidth = (sal_uLong)FRound( mnWidth * fabs(fScaleX) );
1536*b1cdbd2cSJim Jagielski }
1537*b1cdbd2cSJim Jagielski 
1538*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1539*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1540*b1cdbd2cSJim Jagielski sal_Bool MetaStretchTextAction::Compare( const MetaAction& rMetaAction ) const
1541*b1cdbd2cSJim Jagielski {
1542*b1cdbd2cSJim Jagielski 	return ( maPt == ((MetaStretchTextAction&)rMetaAction).maPt ) &&
1543*b1cdbd2cSJim Jagielski 		   ( maStr == ((MetaStretchTextAction&)rMetaAction).maStr ) &&
1544*b1cdbd2cSJim Jagielski 		   ( mnWidth == ((MetaStretchTextAction&)rMetaAction).mnWidth ) &&
1545*b1cdbd2cSJim Jagielski 		   ( mnIndex == ((MetaStretchTextAction&)rMetaAction).mnIndex ) &&
1546*b1cdbd2cSJim Jagielski 		   ( mnLen == ((MetaStretchTextAction&)rMetaAction).mnLen );
1547*b1cdbd2cSJim Jagielski }
1548*b1cdbd2cSJim Jagielski 
1549*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1550*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1551*b1cdbd2cSJim Jagielski void MetaStretchTextAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1552*b1cdbd2cSJim Jagielski {
1553*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1554*b1cdbd2cSJim Jagielski 	rOStm	<< maPt;
1555*b1cdbd2cSJim Jagielski 	rOStm.WriteByteString( maStr, pData->meActualCharSet );
1556*b1cdbd2cSJim Jagielski 	rOStm	<< mnWidth;
1557*b1cdbd2cSJim Jagielski 	rOStm	<< mnIndex;
1558*b1cdbd2cSJim Jagielski 	rOStm	<< mnLen;
1559*b1cdbd2cSJim Jagielski 
1560*b1cdbd2cSJim Jagielski 	sal_uInt16 i, nLen = maStr.Len();							// version 2
1561*b1cdbd2cSJim Jagielski 	rOStm << nLen;
1562*b1cdbd2cSJim Jagielski 	for ( i = 0; i < nLen; i++ )
1563*b1cdbd2cSJim Jagielski 	{
1564*b1cdbd2cSJim Jagielski 		sal_Unicode nUni = maStr.GetChar( i );
1565*b1cdbd2cSJim Jagielski 		rOStm << nUni;
1566*b1cdbd2cSJim Jagielski 	}
1567*b1cdbd2cSJim Jagielski }
1568*b1cdbd2cSJim Jagielski 
1569*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1570*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData * pData)1571*b1cdbd2cSJim Jagielski void MetaStretchTextAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
1572*b1cdbd2cSJim Jagielski {
1573*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1574*b1cdbd2cSJim Jagielski 	rIStm	>> maPt;
1575*b1cdbd2cSJim Jagielski 	rIStm.ReadByteString( maStr, pData->meActualCharSet );
1576*b1cdbd2cSJim Jagielski 	rIStm	>> mnWidth;
1577*b1cdbd2cSJim Jagielski 	rIStm	>> mnIndex;
1578*b1cdbd2cSJim Jagielski 	rIStm	>> mnLen;
1579*b1cdbd2cSJim Jagielski 
1580*b1cdbd2cSJim Jagielski 	if ( aCompat.GetVersion() >= 2 )							// Version 2
1581*b1cdbd2cSJim Jagielski 	{
1582*b1cdbd2cSJim Jagielski 		sal_uInt16 nLen;
1583*b1cdbd2cSJim Jagielski 		rIStm >> nLen;
1584*b1cdbd2cSJim Jagielski 		sal_Unicode* pBuffer = maStr.AllocBuffer( nLen );
1585*b1cdbd2cSJim Jagielski 		while ( nLen-- )
1586*b1cdbd2cSJim Jagielski 			rIStm >> *pBuffer++;
1587*b1cdbd2cSJim Jagielski 	}
1588*b1cdbd2cSJim Jagielski }
1589*b1cdbd2cSJim Jagielski 
1590*b1cdbd2cSJim Jagielski // ========================================================================
1591*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextRect,META_TEXTRECT_ACTION)1592*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextRect, META_TEXTRECT_ACTION )
1593*b1cdbd2cSJim Jagielski 
1594*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1595*b1cdbd2cSJim Jagielski 
1596*b1cdbd2cSJim Jagielski MetaTextRectAction::MetaTextRectAction( const Rectangle& rRect,
1597*b1cdbd2cSJim Jagielski 										const XubString& rStr, sal_uInt16 nStyle ) :
1598*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTRECT_ACTION ),
1599*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
1600*b1cdbd2cSJim Jagielski 	maStr		( rStr ),
1601*b1cdbd2cSJim Jagielski 	mnStyle 	( nStyle )
1602*b1cdbd2cSJim Jagielski {
1603*b1cdbd2cSJim Jagielski }
1604*b1cdbd2cSJim Jagielski 
1605*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1606*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1607*b1cdbd2cSJim Jagielski void MetaTextRectAction::Execute( OutputDevice* pOut )
1608*b1cdbd2cSJim Jagielski {
1609*b1cdbd2cSJim Jagielski 	pOut->DrawText( maRect, maStr, mnStyle );
1610*b1cdbd2cSJim Jagielski }
1611*b1cdbd2cSJim Jagielski 
1612*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1613*b1cdbd2cSJim Jagielski 
Clone()1614*b1cdbd2cSJim Jagielski MetaAction* MetaTextRectAction::Clone()
1615*b1cdbd2cSJim Jagielski {
1616*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextRectAction( *this );
1617*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1618*b1cdbd2cSJim Jagielski 	return pClone;
1619*b1cdbd2cSJim Jagielski }
1620*b1cdbd2cSJim Jagielski 
1621*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1622*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1623*b1cdbd2cSJim Jagielski void MetaTextRectAction::Move( long nHorzMove, long nVertMove )
1624*b1cdbd2cSJim Jagielski {
1625*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
1626*b1cdbd2cSJim Jagielski }
1627*b1cdbd2cSJim Jagielski 
1628*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1629*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1630*b1cdbd2cSJim Jagielski void MetaTextRectAction::Scale( double fScaleX, double fScaleY )
1631*b1cdbd2cSJim Jagielski {
1632*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
1633*b1cdbd2cSJim Jagielski }
1634*b1cdbd2cSJim Jagielski 
1635*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1636*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1637*b1cdbd2cSJim Jagielski sal_Bool MetaTextRectAction::Compare( const MetaAction& rMetaAction ) const
1638*b1cdbd2cSJim Jagielski {
1639*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaTextRectAction&)rMetaAction).maRect ) &&
1640*b1cdbd2cSJim Jagielski 		   ( maStr == ((MetaTextRectAction&)rMetaAction).maStr ) &&
1641*b1cdbd2cSJim Jagielski 		   ( mnStyle == ((MetaTextRectAction&)rMetaAction).mnStyle );
1642*b1cdbd2cSJim Jagielski }
1643*b1cdbd2cSJim Jagielski 
1644*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1645*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1646*b1cdbd2cSJim Jagielski void MetaTextRectAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1647*b1cdbd2cSJim Jagielski {
1648*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1649*b1cdbd2cSJim Jagielski 	rOStm	<< maRect;
1650*b1cdbd2cSJim Jagielski 	rOStm.WriteByteString( maStr, pData->meActualCharSet );
1651*b1cdbd2cSJim Jagielski 	rOStm	<< mnStyle;
1652*b1cdbd2cSJim Jagielski 
1653*b1cdbd2cSJim Jagielski 	sal_uInt16 i, nLen = maStr.Len();							// version 2
1654*b1cdbd2cSJim Jagielski 	rOStm << nLen;
1655*b1cdbd2cSJim Jagielski 	for ( i = 0; i < nLen; i++ )
1656*b1cdbd2cSJim Jagielski 	{
1657*b1cdbd2cSJim Jagielski 		sal_Unicode nUni = maStr.GetChar( i );
1658*b1cdbd2cSJim Jagielski 		rOStm << nUni;
1659*b1cdbd2cSJim Jagielski 	}
1660*b1cdbd2cSJim Jagielski }
1661*b1cdbd2cSJim Jagielski 
1662*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1663*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData * pData)1664*b1cdbd2cSJim Jagielski void MetaTextRectAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
1665*b1cdbd2cSJim Jagielski {
1666*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1667*b1cdbd2cSJim Jagielski 	rIStm	>> maRect;
1668*b1cdbd2cSJim Jagielski 	rIStm.ReadByteString( maStr, pData->meActualCharSet );
1669*b1cdbd2cSJim Jagielski 	rIStm	>> mnStyle;
1670*b1cdbd2cSJim Jagielski 
1671*b1cdbd2cSJim Jagielski 	if ( aCompat.GetVersion() >= 2 )							// Version 2
1672*b1cdbd2cSJim Jagielski 	{
1673*b1cdbd2cSJim Jagielski 		sal_uInt16 nLen;
1674*b1cdbd2cSJim Jagielski 		rIStm >> nLen;
1675*b1cdbd2cSJim Jagielski 		sal_Unicode* pBuffer = maStr.AllocBuffer( nLen );
1676*b1cdbd2cSJim Jagielski 		while ( nLen-- )
1677*b1cdbd2cSJim Jagielski 			rIStm >> *pBuffer++;
1678*b1cdbd2cSJim Jagielski 	}
1679*b1cdbd2cSJim Jagielski }
1680*b1cdbd2cSJim Jagielski 
1681*b1cdbd2cSJim Jagielski // ========================================================================
1682*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextLine,META_TEXTLINE_ACTION)1683*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextLine, META_TEXTLINE_ACTION )
1684*b1cdbd2cSJim Jagielski 
1685*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1686*b1cdbd2cSJim Jagielski 
1687*b1cdbd2cSJim Jagielski MetaTextLineAction::MetaTextLineAction( const Point& rPos, long nWidth,
1688*b1cdbd2cSJim Jagielski 										FontStrikeout eStrikeout,
1689*b1cdbd2cSJim Jagielski 										FontUnderline eUnderline,
1690*b1cdbd2cSJim Jagielski 										FontUnderline eOverline ) :
1691*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTLINE_ACTION ),
1692*b1cdbd2cSJim Jagielski 	maPos		( rPos ),
1693*b1cdbd2cSJim Jagielski 	mnWidth 	( nWidth ),
1694*b1cdbd2cSJim Jagielski 	meStrikeout ( eStrikeout ),
1695*b1cdbd2cSJim Jagielski 	meUnderline ( eUnderline ),
1696*b1cdbd2cSJim Jagielski 	meOverline  ( eOverline )
1697*b1cdbd2cSJim Jagielski {
1698*b1cdbd2cSJim Jagielski }
1699*b1cdbd2cSJim Jagielski 
1700*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1701*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1702*b1cdbd2cSJim Jagielski void MetaTextLineAction::Execute( OutputDevice* pOut )
1703*b1cdbd2cSJim Jagielski {
1704*b1cdbd2cSJim Jagielski 	pOut->DrawTextLine( maPos, mnWidth, meStrikeout, meUnderline, meOverline );
1705*b1cdbd2cSJim Jagielski }
1706*b1cdbd2cSJim Jagielski 
1707*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1708*b1cdbd2cSJim Jagielski 
Clone()1709*b1cdbd2cSJim Jagielski MetaAction* MetaTextLineAction::Clone()
1710*b1cdbd2cSJim Jagielski {
1711*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*)new MetaTextLineAction( *this );
1712*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1713*b1cdbd2cSJim Jagielski 	return pClone;
1714*b1cdbd2cSJim Jagielski }
1715*b1cdbd2cSJim Jagielski 
1716*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1717*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1718*b1cdbd2cSJim Jagielski void MetaTextLineAction::Move( long nHorzMove, long nVertMove )
1719*b1cdbd2cSJim Jagielski {
1720*b1cdbd2cSJim Jagielski 	maPos.Move( nHorzMove, nVertMove );
1721*b1cdbd2cSJim Jagielski }
1722*b1cdbd2cSJim Jagielski 
1723*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1724*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1725*b1cdbd2cSJim Jagielski void MetaTextLineAction::Scale( double fScaleX, double fScaleY )
1726*b1cdbd2cSJim Jagielski {
1727*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPos, fScaleX, fScaleY );
1728*b1cdbd2cSJim Jagielski 	mnWidth = FRound( mnWidth * fabs(fScaleX) );
1729*b1cdbd2cSJim Jagielski }
1730*b1cdbd2cSJim Jagielski 
1731*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1732*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1733*b1cdbd2cSJim Jagielski sal_Bool MetaTextLineAction::Compare( const MetaAction& rMetaAction ) const
1734*b1cdbd2cSJim Jagielski {
1735*b1cdbd2cSJim Jagielski 	return ( maPos == ((MetaTextLineAction&)rMetaAction).maPos ) &&
1736*b1cdbd2cSJim Jagielski 		   ( mnWidth == ((MetaTextLineAction&)rMetaAction).mnWidth ) &&
1737*b1cdbd2cSJim Jagielski 		   ( meStrikeout == ((MetaTextLineAction&)rMetaAction).meStrikeout ) &&
1738*b1cdbd2cSJim Jagielski 		   ( meUnderline == ((MetaTextLineAction&)rMetaAction).meUnderline ) &&
1739*b1cdbd2cSJim Jagielski 		   ( meOverline  == ((MetaTextLineAction&)rMetaAction).meOverline );
1740*b1cdbd2cSJim Jagielski }
1741*b1cdbd2cSJim Jagielski 
1742*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1743*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1744*b1cdbd2cSJim Jagielski void MetaTextLineAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1745*b1cdbd2cSJim Jagielski {
1746*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 2, pData );
1747*b1cdbd2cSJim Jagielski 
1748*b1cdbd2cSJim Jagielski 	rOStm << maPos;
1749*b1cdbd2cSJim Jagielski 	rOStm << mnWidth;
1750*b1cdbd2cSJim Jagielski 	rOStm << static_cast<sal_uInt32>(meStrikeout);
1751*b1cdbd2cSJim Jagielski 	rOStm << static_cast<sal_uInt32>(meUnderline);
1752*b1cdbd2cSJim Jagielski     // new in version 2
1753*b1cdbd2cSJim Jagielski 	rOStm << static_cast<sal_uInt32>(meOverline);
1754*b1cdbd2cSJim Jagielski }
1755*b1cdbd2cSJim Jagielski 
1756*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1757*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)1758*b1cdbd2cSJim Jagielski void MetaTextLineAction::Read( SvStream& rIStm, ImplMetaReadData* )
1759*b1cdbd2cSJim Jagielski {
1760*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1761*b1cdbd2cSJim Jagielski 
1762*b1cdbd2cSJim Jagielski 	sal_uInt32 nTemp;
1763*b1cdbd2cSJim Jagielski 	rIStm >> maPos;
1764*b1cdbd2cSJim Jagielski 	rIStm >> mnWidth;
1765*b1cdbd2cSJim Jagielski 	rIStm >> nTemp;
1766*b1cdbd2cSJim Jagielski 	meStrikeout = (FontStrikeout)nTemp;
1767*b1cdbd2cSJim Jagielski 	rIStm >> nTemp;
1768*b1cdbd2cSJim Jagielski 	meUnderline = (FontUnderline)nTemp;
1769*b1cdbd2cSJim Jagielski     if ( aCompat.GetVersion() >= 2 ) {
1770*b1cdbd2cSJim Jagielski         rIStm >> nTemp;
1771*b1cdbd2cSJim Jagielski         meUnderline = (FontUnderline)nTemp;
1772*b1cdbd2cSJim Jagielski     }
1773*b1cdbd2cSJim Jagielski }
1774*b1cdbd2cSJim Jagielski 
1775*b1cdbd2cSJim Jagielski // ========================================================================
1776*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Bmp,META_BMP_ACTION)1777*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Bmp, META_BMP_ACTION )
1778*b1cdbd2cSJim Jagielski 
1779*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1780*b1cdbd2cSJim Jagielski 
1781*b1cdbd2cSJim Jagielski MetaBmpAction::MetaBmpAction( const Point& rPt, const Bitmap& rBmp ) :
1782*b1cdbd2cSJim Jagielski 	MetaAction	( META_BMP_ACTION ),
1783*b1cdbd2cSJim Jagielski 	maBmp		( rBmp ),
1784*b1cdbd2cSJim Jagielski 	maPt		( rPt )
1785*b1cdbd2cSJim Jagielski {
1786*b1cdbd2cSJim Jagielski }
1787*b1cdbd2cSJim Jagielski 
1788*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1789*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1790*b1cdbd2cSJim Jagielski void MetaBmpAction::Execute( OutputDevice* pOut )
1791*b1cdbd2cSJim Jagielski {
1792*b1cdbd2cSJim Jagielski 	pOut->DrawBitmap( maPt, maBmp );
1793*b1cdbd2cSJim Jagielski }
1794*b1cdbd2cSJim Jagielski 
1795*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1796*b1cdbd2cSJim Jagielski 
Clone()1797*b1cdbd2cSJim Jagielski MetaAction* MetaBmpAction::Clone()
1798*b1cdbd2cSJim Jagielski {
1799*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaBmpAction( *this );
1800*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1801*b1cdbd2cSJim Jagielski 	return pClone;
1802*b1cdbd2cSJim Jagielski }
1803*b1cdbd2cSJim Jagielski 
1804*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1805*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1806*b1cdbd2cSJim Jagielski void MetaBmpAction::Move( long nHorzMove, long nVertMove )
1807*b1cdbd2cSJim Jagielski {
1808*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
1809*b1cdbd2cSJim Jagielski }
1810*b1cdbd2cSJim Jagielski 
1811*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1812*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1813*b1cdbd2cSJim Jagielski void MetaBmpAction::Scale( double fScaleX, double fScaleY )
1814*b1cdbd2cSJim Jagielski {
1815*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
1816*b1cdbd2cSJim Jagielski }
1817*b1cdbd2cSJim Jagielski 
1818*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1819*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1820*b1cdbd2cSJim Jagielski sal_Bool MetaBmpAction::Compare( const MetaAction& rMetaAction ) const
1821*b1cdbd2cSJim Jagielski {
1822*b1cdbd2cSJim Jagielski 	return maBmp.IsEqual(((MetaBmpAction&)rMetaAction).maBmp ) &&
1823*b1cdbd2cSJim Jagielski 		   ( maPt == ((MetaBmpAction&)rMetaAction).maPt );
1824*b1cdbd2cSJim Jagielski }
1825*b1cdbd2cSJim Jagielski 
1826*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1827*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1828*b1cdbd2cSJim Jagielski void MetaBmpAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1829*b1cdbd2cSJim Jagielski {
1830*b1cdbd2cSJim Jagielski 	if( !!maBmp )
1831*b1cdbd2cSJim Jagielski 	{
1832*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
1833*b1cdbd2cSJim Jagielski         WriteDIB(maBmp, rOStm, false, true);
1834*b1cdbd2cSJim Jagielski 		rOStm << maPt;
1835*b1cdbd2cSJim Jagielski 	}
1836*b1cdbd2cSJim Jagielski }
1837*b1cdbd2cSJim Jagielski 
1838*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1839*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)1840*b1cdbd2cSJim Jagielski void MetaBmpAction::Read( SvStream& rIStm, ImplMetaReadData* )
1841*b1cdbd2cSJim Jagielski {
1842*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1843*b1cdbd2cSJim Jagielski     ReadDIB(maBmp, rIStm, true);
1844*b1cdbd2cSJim Jagielski 	rIStm >> maPt;
1845*b1cdbd2cSJim Jagielski }
1846*b1cdbd2cSJim Jagielski 
1847*b1cdbd2cSJim Jagielski // ========================================================================
1848*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(BmpScale,META_BMPSCALE_ACTION)1849*b1cdbd2cSJim Jagielski IMPL_META_ACTION( BmpScale, META_BMPSCALE_ACTION )
1850*b1cdbd2cSJim Jagielski 
1851*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1852*b1cdbd2cSJim Jagielski 
1853*b1cdbd2cSJim Jagielski MetaBmpScaleAction::MetaBmpScaleAction( const Point& rPt, const Size& rSz,
1854*b1cdbd2cSJim Jagielski 										const Bitmap& rBmp ) :
1855*b1cdbd2cSJim Jagielski 	MetaAction	( META_BMPSCALE_ACTION ),
1856*b1cdbd2cSJim Jagielski 	maBmp		( rBmp ),
1857*b1cdbd2cSJim Jagielski 	maPt		( rPt ),
1858*b1cdbd2cSJim Jagielski 	maSz		( rSz )
1859*b1cdbd2cSJim Jagielski {
1860*b1cdbd2cSJim Jagielski }
1861*b1cdbd2cSJim Jagielski 
1862*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1863*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1864*b1cdbd2cSJim Jagielski void MetaBmpScaleAction::Execute( OutputDevice* pOut )
1865*b1cdbd2cSJim Jagielski {
1866*b1cdbd2cSJim Jagielski 	pOut->DrawBitmap( maPt, maSz, maBmp );
1867*b1cdbd2cSJim Jagielski }
1868*b1cdbd2cSJim Jagielski 
1869*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1870*b1cdbd2cSJim Jagielski 
Clone()1871*b1cdbd2cSJim Jagielski MetaAction* MetaBmpScaleAction::Clone()
1872*b1cdbd2cSJim Jagielski {
1873*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaBmpScaleAction( *this );
1874*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1875*b1cdbd2cSJim Jagielski 	return pClone;
1876*b1cdbd2cSJim Jagielski }
1877*b1cdbd2cSJim Jagielski 
1878*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1879*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1880*b1cdbd2cSJim Jagielski void MetaBmpScaleAction::Move( long nHorzMove, long nVertMove )
1881*b1cdbd2cSJim Jagielski {
1882*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
1883*b1cdbd2cSJim Jagielski }
1884*b1cdbd2cSJim Jagielski 
1885*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1886*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1887*b1cdbd2cSJim Jagielski void MetaBmpScaleAction::Scale( double fScaleX, double fScaleY )
1888*b1cdbd2cSJim Jagielski {
1889*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maPt, maSz);
1890*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
1891*b1cdbd2cSJim Jagielski     maPt = aRectangle.TopLeft();
1892*b1cdbd2cSJim Jagielski     maSz = aRectangle.GetSize();
1893*b1cdbd2cSJim Jagielski }
1894*b1cdbd2cSJim Jagielski 
1895*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1896*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1897*b1cdbd2cSJim Jagielski sal_Bool MetaBmpScaleAction::Compare( const MetaAction& rMetaAction ) const
1898*b1cdbd2cSJim Jagielski {
1899*b1cdbd2cSJim Jagielski 	return ( maBmp.IsEqual(((MetaBmpScaleAction&)rMetaAction).maBmp )) &&
1900*b1cdbd2cSJim Jagielski 		   ( maPt == ((MetaBmpScaleAction&)rMetaAction).maPt ) &&
1901*b1cdbd2cSJim Jagielski 		   ( maSz == ((MetaBmpScaleAction&)rMetaAction).maSz );
1902*b1cdbd2cSJim Jagielski }
1903*b1cdbd2cSJim Jagielski 
1904*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1905*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1906*b1cdbd2cSJim Jagielski void MetaBmpScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1907*b1cdbd2cSJim Jagielski {
1908*b1cdbd2cSJim Jagielski 	if( !!maBmp )
1909*b1cdbd2cSJim Jagielski 	{
1910*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
1911*b1cdbd2cSJim Jagielski         WriteDIB(maBmp, rOStm, false, true);
1912*b1cdbd2cSJim Jagielski 		rOStm << maPt << maSz;
1913*b1cdbd2cSJim Jagielski 	}
1914*b1cdbd2cSJim Jagielski }
1915*b1cdbd2cSJim Jagielski 
1916*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1917*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)1918*b1cdbd2cSJim Jagielski void MetaBmpScaleAction::Read( SvStream& rIStm, ImplMetaReadData* )
1919*b1cdbd2cSJim Jagielski {
1920*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
1921*b1cdbd2cSJim Jagielski     ReadDIB(maBmp, rIStm, true);
1922*b1cdbd2cSJim Jagielski 	rIStm >> maPt >> maSz;
1923*b1cdbd2cSJim Jagielski }
1924*b1cdbd2cSJim Jagielski 
1925*b1cdbd2cSJim Jagielski // ========================================================================
1926*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(BmpScalePart,META_BMPSCALEPART_ACTION)1927*b1cdbd2cSJim Jagielski IMPL_META_ACTION( BmpScalePart, META_BMPSCALEPART_ACTION )
1928*b1cdbd2cSJim Jagielski 
1929*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1930*b1cdbd2cSJim Jagielski 
1931*b1cdbd2cSJim Jagielski MetaBmpScalePartAction::MetaBmpScalePartAction( const Point& rDstPt, const Size& rDstSz,
1932*b1cdbd2cSJim Jagielski 												const Point& rSrcPt, const Size& rSrcSz,
1933*b1cdbd2cSJim Jagielski 												const Bitmap& rBmp ) :
1934*b1cdbd2cSJim Jagielski 	MetaAction	( META_BMPSCALEPART_ACTION ),
1935*b1cdbd2cSJim Jagielski 	maBmp		( rBmp ),
1936*b1cdbd2cSJim Jagielski 	maDstPt 	( rDstPt ),
1937*b1cdbd2cSJim Jagielski 	maDstSz 	( rDstSz ),
1938*b1cdbd2cSJim Jagielski 	maSrcPt 	( rSrcPt ),
1939*b1cdbd2cSJim Jagielski 	maSrcSz 	( rSrcSz )
1940*b1cdbd2cSJim Jagielski {
1941*b1cdbd2cSJim Jagielski }
1942*b1cdbd2cSJim Jagielski 
1943*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1944*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)1945*b1cdbd2cSJim Jagielski void MetaBmpScalePartAction::Execute( OutputDevice* pOut )
1946*b1cdbd2cSJim Jagielski {
1947*b1cdbd2cSJim Jagielski 	pOut->DrawBitmap( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmp );
1948*b1cdbd2cSJim Jagielski }
1949*b1cdbd2cSJim Jagielski 
1950*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1951*b1cdbd2cSJim Jagielski 
Clone()1952*b1cdbd2cSJim Jagielski MetaAction* MetaBmpScalePartAction::Clone()
1953*b1cdbd2cSJim Jagielski {
1954*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaBmpScalePartAction( *this );
1955*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
1956*b1cdbd2cSJim Jagielski 	return pClone;
1957*b1cdbd2cSJim Jagielski }
1958*b1cdbd2cSJim Jagielski 
1959*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1960*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)1961*b1cdbd2cSJim Jagielski void MetaBmpScalePartAction::Move( long nHorzMove, long nVertMove )
1962*b1cdbd2cSJim Jagielski {
1963*b1cdbd2cSJim Jagielski 	maDstPt.Move( nHorzMove, nVertMove );
1964*b1cdbd2cSJim Jagielski }
1965*b1cdbd2cSJim Jagielski 
1966*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1967*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)1968*b1cdbd2cSJim Jagielski void MetaBmpScalePartAction::Scale( double fScaleX, double fScaleY )
1969*b1cdbd2cSJim Jagielski {
1970*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maDstPt, maDstSz);
1971*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
1972*b1cdbd2cSJim Jagielski     maDstPt = aRectangle.TopLeft();
1973*b1cdbd2cSJim Jagielski     maDstSz = aRectangle.GetSize();
1974*b1cdbd2cSJim Jagielski }
1975*b1cdbd2cSJim Jagielski 
1976*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1977*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const1978*b1cdbd2cSJim Jagielski sal_Bool MetaBmpScalePartAction::Compare( const MetaAction& rMetaAction ) const
1979*b1cdbd2cSJim Jagielski {
1980*b1cdbd2cSJim Jagielski 	return ( maBmp.IsEqual(((MetaBmpScalePartAction&)rMetaAction).maBmp )) &&
1981*b1cdbd2cSJim Jagielski 		   ( maDstPt == ((MetaBmpScalePartAction&)rMetaAction).maDstPt ) &&
1982*b1cdbd2cSJim Jagielski 		   ( maDstSz == ((MetaBmpScalePartAction&)rMetaAction).maDstSz ) &&
1983*b1cdbd2cSJim Jagielski 		   ( maSrcPt == ((MetaBmpScalePartAction&)rMetaAction).maSrcPt ) &&
1984*b1cdbd2cSJim Jagielski 		   ( maSrcSz == ((MetaBmpScalePartAction&)rMetaAction).maSrcSz );
1985*b1cdbd2cSJim Jagielski }
1986*b1cdbd2cSJim Jagielski 
1987*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
1988*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)1989*b1cdbd2cSJim Jagielski void MetaBmpScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
1990*b1cdbd2cSJim Jagielski {
1991*b1cdbd2cSJim Jagielski 	if( !!maBmp )
1992*b1cdbd2cSJim Jagielski 	{
1993*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
1994*b1cdbd2cSJim Jagielski         WriteDIB(maBmp, rOStm, false, true);
1995*b1cdbd2cSJim Jagielski 		rOStm << maDstPt << maDstSz << maSrcPt << maSrcSz;
1996*b1cdbd2cSJim Jagielski 	}
1997*b1cdbd2cSJim Jagielski }
1998*b1cdbd2cSJim Jagielski 
1999*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2000*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2001*b1cdbd2cSJim Jagielski void MetaBmpScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
2002*b1cdbd2cSJim Jagielski {
2003*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2004*b1cdbd2cSJim Jagielski     ReadDIB(maBmp, rIStm, true);
2005*b1cdbd2cSJim Jagielski 	rIStm >> maDstPt >> maDstSz >> maSrcPt >> maSrcSz;
2006*b1cdbd2cSJim Jagielski }
2007*b1cdbd2cSJim Jagielski 
2008*b1cdbd2cSJim Jagielski // ========================================================================
2009*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(BmpEx,META_BMPEX_ACTION)2010*b1cdbd2cSJim Jagielski IMPL_META_ACTION( BmpEx, META_BMPEX_ACTION )
2011*b1cdbd2cSJim Jagielski 
2012*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2013*b1cdbd2cSJim Jagielski 
2014*b1cdbd2cSJim Jagielski MetaBmpExAction::MetaBmpExAction( const Point& rPt, const BitmapEx& rBmpEx ) :
2015*b1cdbd2cSJim Jagielski 	MetaAction	( META_BMPEX_ACTION ),
2016*b1cdbd2cSJim Jagielski 	maBmpEx 	( rBmpEx ),
2017*b1cdbd2cSJim Jagielski 	maPt		( rPt )
2018*b1cdbd2cSJim Jagielski {
2019*b1cdbd2cSJim Jagielski }
2020*b1cdbd2cSJim Jagielski 
2021*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2022*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2023*b1cdbd2cSJim Jagielski void MetaBmpExAction::Execute( OutputDevice* pOut )
2024*b1cdbd2cSJim Jagielski {
2025*b1cdbd2cSJim Jagielski 	pOut->DrawBitmapEx( maPt, maBmpEx );
2026*b1cdbd2cSJim Jagielski }
2027*b1cdbd2cSJim Jagielski 
2028*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2029*b1cdbd2cSJim Jagielski 
Clone()2030*b1cdbd2cSJim Jagielski MetaAction* MetaBmpExAction::Clone()
2031*b1cdbd2cSJim Jagielski {
2032*b1cdbd2cSJim Jagielski 	MetaBmpExAction* pClone = new MetaBmpExAction( *this );
2033*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2034*b1cdbd2cSJim Jagielski 	return pClone;
2035*b1cdbd2cSJim Jagielski }
2036*b1cdbd2cSJim Jagielski 
2037*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2038*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2039*b1cdbd2cSJim Jagielski void MetaBmpExAction::Move( long nHorzMove, long nVertMove )
2040*b1cdbd2cSJim Jagielski {
2041*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
2042*b1cdbd2cSJim Jagielski }
2043*b1cdbd2cSJim Jagielski 
2044*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2045*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2046*b1cdbd2cSJim Jagielski void MetaBmpExAction::Scale( double fScaleX, double fScaleY )
2047*b1cdbd2cSJim Jagielski {
2048*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
2049*b1cdbd2cSJim Jagielski }
2050*b1cdbd2cSJim Jagielski 
2051*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2052*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2053*b1cdbd2cSJim Jagielski sal_Bool MetaBmpExAction::Compare( const MetaAction& rMetaAction ) const
2054*b1cdbd2cSJim Jagielski {
2055*b1cdbd2cSJim Jagielski 	return ( maBmpEx.IsEqual(((MetaBmpExAction&)rMetaAction).maBmpEx )) &&
2056*b1cdbd2cSJim Jagielski 		   ( maPt == ((MetaBmpExAction&)rMetaAction).maPt );
2057*b1cdbd2cSJim Jagielski }
2058*b1cdbd2cSJim Jagielski 
2059*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2060*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2061*b1cdbd2cSJim Jagielski void MetaBmpExAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2062*b1cdbd2cSJim Jagielski {
2063*b1cdbd2cSJim Jagielski 	if( !!maBmpEx.GetBitmap() )
2064*b1cdbd2cSJim Jagielski 	{
2065*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
2066*b1cdbd2cSJim Jagielski         WriteDIBBitmapEx(maBmpEx, rOStm);
2067*b1cdbd2cSJim Jagielski 		rOStm << maPt;
2068*b1cdbd2cSJim Jagielski 	}
2069*b1cdbd2cSJim Jagielski }
2070*b1cdbd2cSJim Jagielski 
2071*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2072*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2073*b1cdbd2cSJim Jagielski void MetaBmpExAction::Read( SvStream& rIStm, ImplMetaReadData* )
2074*b1cdbd2cSJim Jagielski {
2075*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2076*b1cdbd2cSJim Jagielski     ReadDIBBitmapEx(maBmpEx, rIStm);
2077*b1cdbd2cSJim Jagielski 	rIStm >> maPt;
2078*b1cdbd2cSJim Jagielski }
2079*b1cdbd2cSJim Jagielski 
2080*b1cdbd2cSJim Jagielski // ========================================================================
2081*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(BmpExScale,META_BMPEXSCALE_ACTION)2082*b1cdbd2cSJim Jagielski IMPL_META_ACTION( BmpExScale, META_BMPEXSCALE_ACTION )
2083*b1cdbd2cSJim Jagielski 
2084*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2085*b1cdbd2cSJim Jagielski 
2086*b1cdbd2cSJim Jagielski MetaBmpExScaleAction::MetaBmpExScaleAction( const Point& rPt, const Size& rSz,
2087*b1cdbd2cSJim Jagielski 											const BitmapEx& rBmpEx ) :
2088*b1cdbd2cSJim Jagielski 	MetaAction	( META_BMPEXSCALE_ACTION ),
2089*b1cdbd2cSJim Jagielski 	maBmpEx 	( rBmpEx ),
2090*b1cdbd2cSJim Jagielski 	maPt		( rPt ),
2091*b1cdbd2cSJim Jagielski 	maSz		( rSz )
2092*b1cdbd2cSJim Jagielski {
2093*b1cdbd2cSJim Jagielski }
2094*b1cdbd2cSJim Jagielski 
2095*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2096*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2097*b1cdbd2cSJim Jagielski void MetaBmpExScaleAction::Execute( OutputDevice* pOut )
2098*b1cdbd2cSJim Jagielski {
2099*b1cdbd2cSJim Jagielski 	pOut->DrawBitmapEx( maPt, maSz, maBmpEx );
2100*b1cdbd2cSJim Jagielski }
2101*b1cdbd2cSJim Jagielski 
2102*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2103*b1cdbd2cSJim Jagielski 
Clone()2104*b1cdbd2cSJim Jagielski MetaAction* MetaBmpExScaleAction::Clone()
2105*b1cdbd2cSJim Jagielski {
2106*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaBmpExScaleAction( *this );
2107*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2108*b1cdbd2cSJim Jagielski 	return pClone;
2109*b1cdbd2cSJim Jagielski }
2110*b1cdbd2cSJim Jagielski 
2111*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2112*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2113*b1cdbd2cSJim Jagielski void MetaBmpExScaleAction::Move( long nHorzMove, long nVertMove )
2114*b1cdbd2cSJim Jagielski {
2115*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
2116*b1cdbd2cSJim Jagielski }
2117*b1cdbd2cSJim Jagielski 
2118*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2119*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2120*b1cdbd2cSJim Jagielski void MetaBmpExScaleAction::Scale( double fScaleX, double fScaleY )
2121*b1cdbd2cSJim Jagielski {
2122*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maPt, maSz);
2123*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
2124*b1cdbd2cSJim Jagielski     maPt = aRectangle.TopLeft();
2125*b1cdbd2cSJim Jagielski     maSz = aRectangle.GetSize();
2126*b1cdbd2cSJim Jagielski }
2127*b1cdbd2cSJim Jagielski 
2128*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2129*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2130*b1cdbd2cSJim Jagielski sal_Bool MetaBmpExScaleAction::Compare( const MetaAction& rMetaAction ) const
2131*b1cdbd2cSJim Jagielski {
2132*b1cdbd2cSJim Jagielski 	return ( maBmpEx.IsEqual(((MetaBmpExScaleAction&)rMetaAction).maBmpEx )) &&
2133*b1cdbd2cSJim Jagielski 		   ( maPt == ((MetaBmpExScaleAction&)rMetaAction).maPt ) &&
2134*b1cdbd2cSJim Jagielski 		   ( maSz == ((MetaBmpExScaleAction&)rMetaAction).maSz );
2135*b1cdbd2cSJim Jagielski }
2136*b1cdbd2cSJim Jagielski 
2137*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2138*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2139*b1cdbd2cSJim Jagielski void MetaBmpExScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2140*b1cdbd2cSJim Jagielski {
2141*b1cdbd2cSJim Jagielski 	if( !!maBmpEx.GetBitmap() )
2142*b1cdbd2cSJim Jagielski 	{
2143*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
2144*b1cdbd2cSJim Jagielski         WriteDIBBitmapEx(maBmpEx, rOStm);
2145*b1cdbd2cSJim Jagielski 		rOStm << maPt << maSz;
2146*b1cdbd2cSJim Jagielski 	}
2147*b1cdbd2cSJim Jagielski }
2148*b1cdbd2cSJim Jagielski 
2149*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2150*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2151*b1cdbd2cSJim Jagielski void MetaBmpExScaleAction::Read( SvStream& rIStm, ImplMetaReadData* )
2152*b1cdbd2cSJim Jagielski {
2153*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2154*b1cdbd2cSJim Jagielski     ReadDIBBitmapEx(maBmpEx, rIStm);
2155*b1cdbd2cSJim Jagielski 	rIStm >> maPt >> maSz;
2156*b1cdbd2cSJim Jagielski }
2157*b1cdbd2cSJim Jagielski 
2158*b1cdbd2cSJim Jagielski // ========================================================================
2159*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(BmpExScalePart,META_BMPEXSCALEPART_ACTION)2160*b1cdbd2cSJim Jagielski IMPL_META_ACTION( BmpExScalePart, META_BMPEXSCALEPART_ACTION )
2161*b1cdbd2cSJim Jagielski 
2162*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2163*b1cdbd2cSJim Jagielski 
2164*b1cdbd2cSJim Jagielski MetaBmpExScalePartAction::MetaBmpExScalePartAction( const Point& rDstPt, const Size& rDstSz,
2165*b1cdbd2cSJim Jagielski 													const Point& rSrcPt, const Size& rSrcSz,
2166*b1cdbd2cSJim Jagielski 													const BitmapEx& rBmpEx ) :
2167*b1cdbd2cSJim Jagielski 	MetaAction	( META_BMPEXSCALEPART_ACTION ),
2168*b1cdbd2cSJim Jagielski 	maBmpEx 	( rBmpEx ),
2169*b1cdbd2cSJim Jagielski 	maDstPt 	( rDstPt ),
2170*b1cdbd2cSJim Jagielski 	maDstSz 	( rDstSz ),
2171*b1cdbd2cSJim Jagielski 	maSrcPt 	( rSrcPt ),
2172*b1cdbd2cSJim Jagielski 	maSrcSz 	( rSrcSz )
2173*b1cdbd2cSJim Jagielski {
2174*b1cdbd2cSJim Jagielski }
2175*b1cdbd2cSJim Jagielski 
2176*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2177*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2178*b1cdbd2cSJim Jagielski void MetaBmpExScalePartAction::Execute( OutputDevice* pOut )
2179*b1cdbd2cSJim Jagielski {
2180*b1cdbd2cSJim Jagielski 	pOut->DrawBitmapEx( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmpEx );
2181*b1cdbd2cSJim Jagielski }
2182*b1cdbd2cSJim Jagielski 
2183*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2184*b1cdbd2cSJim Jagielski 
Clone()2185*b1cdbd2cSJim Jagielski MetaAction* MetaBmpExScalePartAction::Clone()
2186*b1cdbd2cSJim Jagielski {
2187*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaBmpExScalePartAction( *this );
2188*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2189*b1cdbd2cSJim Jagielski 	return pClone;
2190*b1cdbd2cSJim Jagielski }
2191*b1cdbd2cSJim Jagielski 
2192*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2193*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2194*b1cdbd2cSJim Jagielski void MetaBmpExScalePartAction::Move( long nHorzMove, long nVertMove )
2195*b1cdbd2cSJim Jagielski {
2196*b1cdbd2cSJim Jagielski 	maDstPt.Move( nHorzMove, nVertMove );
2197*b1cdbd2cSJim Jagielski }
2198*b1cdbd2cSJim Jagielski 
2199*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2200*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2201*b1cdbd2cSJim Jagielski void MetaBmpExScalePartAction::Scale( double fScaleX, double fScaleY )
2202*b1cdbd2cSJim Jagielski {
2203*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maDstPt, maDstSz);
2204*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
2205*b1cdbd2cSJim Jagielski     maDstPt = aRectangle.TopLeft();
2206*b1cdbd2cSJim Jagielski     maDstSz = aRectangle.GetSize();
2207*b1cdbd2cSJim Jagielski }
2208*b1cdbd2cSJim Jagielski 
2209*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2210*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2211*b1cdbd2cSJim Jagielski sal_Bool MetaBmpExScalePartAction::Compare( const MetaAction& rMetaAction ) const
2212*b1cdbd2cSJim Jagielski {
2213*b1cdbd2cSJim Jagielski 	return ( maBmpEx.IsEqual(((MetaBmpExScalePartAction&)rMetaAction).maBmpEx )) &&
2214*b1cdbd2cSJim Jagielski 		   ( maDstPt == ((MetaBmpExScalePartAction&)rMetaAction).maDstPt ) &&
2215*b1cdbd2cSJim Jagielski 		   ( maDstSz == ((MetaBmpExScalePartAction&)rMetaAction).maDstSz ) &&
2216*b1cdbd2cSJim Jagielski 		   ( maSrcPt == ((MetaBmpExScalePartAction&)rMetaAction).maSrcPt ) &&
2217*b1cdbd2cSJim Jagielski 		   ( maSrcSz == ((MetaBmpExScalePartAction&)rMetaAction).maSrcSz );
2218*b1cdbd2cSJim Jagielski }
2219*b1cdbd2cSJim Jagielski 
2220*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2221*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2222*b1cdbd2cSJim Jagielski void MetaBmpExScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2223*b1cdbd2cSJim Jagielski {
2224*b1cdbd2cSJim Jagielski 	if( !!maBmpEx.GetBitmap() )
2225*b1cdbd2cSJim Jagielski 	{
2226*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
2227*b1cdbd2cSJim Jagielski         WriteDIBBitmapEx(maBmpEx, rOStm);
2228*b1cdbd2cSJim Jagielski 		rOStm << maDstPt << maDstSz << maSrcPt << maSrcSz;
2229*b1cdbd2cSJim Jagielski 	}
2230*b1cdbd2cSJim Jagielski }
2231*b1cdbd2cSJim Jagielski 
2232*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2233*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2234*b1cdbd2cSJim Jagielski void MetaBmpExScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
2235*b1cdbd2cSJim Jagielski {
2236*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2237*b1cdbd2cSJim Jagielski     ReadDIBBitmapEx(maBmpEx, rIStm);
2238*b1cdbd2cSJim Jagielski 	rIStm >> maDstPt >> maDstSz >> maSrcPt >> maSrcSz;
2239*b1cdbd2cSJim Jagielski }
2240*b1cdbd2cSJim Jagielski 
2241*b1cdbd2cSJim Jagielski // ========================================================================
2242*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Mask,META_MASK_ACTION)2243*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Mask, META_MASK_ACTION )
2244*b1cdbd2cSJim Jagielski 
2245*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2246*b1cdbd2cSJim Jagielski 
2247*b1cdbd2cSJim Jagielski MetaMaskAction::MetaMaskAction( const Point& rPt,
2248*b1cdbd2cSJim Jagielski 								const Bitmap& rBmp,
2249*b1cdbd2cSJim Jagielski 								const Color& rColor ) :
2250*b1cdbd2cSJim Jagielski 	MetaAction	( META_MASK_ACTION ),
2251*b1cdbd2cSJim Jagielski 	maBmp		( rBmp ),
2252*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
2253*b1cdbd2cSJim Jagielski 	maPt		( rPt )
2254*b1cdbd2cSJim Jagielski {
2255*b1cdbd2cSJim Jagielski }
2256*b1cdbd2cSJim Jagielski 
2257*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2258*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2259*b1cdbd2cSJim Jagielski void MetaMaskAction::Execute( OutputDevice* pOut )
2260*b1cdbd2cSJim Jagielski {
2261*b1cdbd2cSJim Jagielski 	pOut->DrawMask( maPt, maBmp, maColor );
2262*b1cdbd2cSJim Jagielski }
2263*b1cdbd2cSJim Jagielski 
2264*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2265*b1cdbd2cSJim Jagielski 
Clone()2266*b1cdbd2cSJim Jagielski MetaAction* MetaMaskAction::Clone()
2267*b1cdbd2cSJim Jagielski {
2268*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaMaskAction( *this );
2269*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2270*b1cdbd2cSJim Jagielski 	return pClone;
2271*b1cdbd2cSJim Jagielski }
2272*b1cdbd2cSJim Jagielski 
2273*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2274*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2275*b1cdbd2cSJim Jagielski void MetaMaskAction::Move( long nHorzMove, long nVertMove )
2276*b1cdbd2cSJim Jagielski {
2277*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
2278*b1cdbd2cSJim Jagielski }
2279*b1cdbd2cSJim Jagielski 
2280*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2281*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2282*b1cdbd2cSJim Jagielski void MetaMaskAction::Scale( double fScaleX, double fScaleY )
2283*b1cdbd2cSJim Jagielski {
2284*b1cdbd2cSJim Jagielski 	ImplScalePoint( maPt, fScaleX, fScaleY );
2285*b1cdbd2cSJim Jagielski }
2286*b1cdbd2cSJim Jagielski 
2287*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2288*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2289*b1cdbd2cSJim Jagielski sal_Bool MetaMaskAction::Compare( const MetaAction& rMetaAction ) const
2290*b1cdbd2cSJim Jagielski {
2291*b1cdbd2cSJim Jagielski 	return ( maBmp.IsEqual(((MetaMaskAction&)rMetaAction).maBmp )) &&
2292*b1cdbd2cSJim Jagielski 		   ( maColor == ((MetaMaskAction&)rMetaAction).maColor ) &&
2293*b1cdbd2cSJim Jagielski 		   ( maPt == ((MetaMaskAction&)rMetaAction).maPt );
2294*b1cdbd2cSJim Jagielski }
2295*b1cdbd2cSJim Jagielski 
2296*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2297*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2298*b1cdbd2cSJim Jagielski void MetaMaskAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2299*b1cdbd2cSJim Jagielski {
2300*b1cdbd2cSJim Jagielski 	if( !!maBmp )
2301*b1cdbd2cSJim Jagielski 	{
2302*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
2303*b1cdbd2cSJim Jagielski         WriteDIB(maBmp, rOStm, false, true);
2304*b1cdbd2cSJim Jagielski 		rOStm << maPt;
2305*b1cdbd2cSJim Jagielski 	}
2306*b1cdbd2cSJim Jagielski }
2307*b1cdbd2cSJim Jagielski 
2308*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2309*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2310*b1cdbd2cSJim Jagielski void MetaMaskAction::Read( SvStream& rIStm, ImplMetaReadData* )
2311*b1cdbd2cSJim Jagielski {
2312*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2313*b1cdbd2cSJim Jagielski     ReadDIB(maBmp, rIStm, true);
2314*b1cdbd2cSJim Jagielski 	rIStm >> maPt;
2315*b1cdbd2cSJim Jagielski }
2316*b1cdbd2cSJim Jagielski 
2317*b1cdbd2cSJim Jagielski // ========================================================================
2318*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(MaskScale,META_MASKSCALE_ACTION)2319*b1cdbd2cSJim Jagielski IMPL_META_ACTION( MaskScale, META_MASKSCALE_ACTION )
2320*b1cdbd2cSJim Jagielski 
2321*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2322*b1cdbd2cSJim Jagielski 
2323*b1cdbd2cSJim Jagielski MetaMaskScaleAction::MetaMaskScaleAction( const Point& rPt, const Size& rSz,
2324*b1cdbd2cSJim Jagielski 										  const Bitmap& rBmp,
2325*b1cdbd2cSJim Jagielski 										  const Color& rColor ) :
2326*b1cdbd2cSJim Jagielski 	MetaAction	( META_MASKSCALE_ACTION ),
2327*b1cdbd2cSJim Jagielski 	maBmp		( rBmp ),
2328*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
2329*b1cdbd2cSJim Jagielski 	maPt		( rPt ),
2330*b1cdbd2cSJim Jagielski 	maSz		( rSz )
2331*b1cdbd2cSJim Jagielski {
2332*b1cdbd2cSJim Jagielski }
2333*b1cdbd2cSJim Jagielski 
2334*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2335*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2336*b1cdbd2cSJim Jagielski void MetaMaskScaleAction::Execute( OutputDevice* pOut )
2337*b1cdbd2cSJim Jagielski {
2338*b1cdbd2cSJim Jagielski 	pOut->DrawMask( maPt, maSz, maBmp, maColor );
2339*b1cdbd2cSJim Jagielski }
2340*b1cdbd2cSJim Jagielski 
2341*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2342*b1cdbd2cSJim Jagielski 
Clone()2343*b1cdbd2cSJim Jagielski MetaAction* MetaMaskScaleAction::Clone()
2344*b1cdbd2cSJim Jagielski {
2345*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaMaskScaleAction( *this );
2346*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2347*b1cdbd2cSJim Jagielski 	return pClone;
2348*b1cdbd2cSJim Jagielski }
2349*b1cdbd2cSJim Jagielski 
2350*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2351*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2352*b1cdbd2cSJim Jagielski void MetaMaskScaleAction::Move( long nHorzMove, long nVertMove )
2353*b1cdbd2cSJim Jagielski {
2354*b1cdbd2cSJim Jagielski 	maPt.Move( nHorzMove, nVertMove );
2355*b1cdbd2cSJim Jagielski }
2356*b1cdbd2cSJim Jagielski 
2357*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2358*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2359*b1cdbd2cSJim Jagielski void MetaMaskScaleAction::Scale( double fScaleX, double fScaleY )
2360*b1cdbd2cSJim Jagielski {
2361*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maPt, maSz);
2362*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
2363*b1cdbd2cSJim Jagielski     maPt = aRectangle.TopLeft();
2364*b1cdbd2cSJim Jagielski     maSz = aRectangle.GetSize();
2365*b1cdbd2cSJim Jagielski }
2366*b1cdbd2cSJim Jagielski 
2367*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2368*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2369*b1cdbd2cSJim Jagielski sal_Bool MetaMaskScaleAction::Compare( const MetaAction& rMetaAction ) const
2370*b1cdbd2cSJim Jagielski {
2371*b1cdbd2cSJim Jagielski 	return ( maBmp.IsEqual(((MetaMaskScaleAction&)rMetaAction).maBmp )) &&
2372*b1cdbd2cSJim Jagielski 		   ( maColor == ((MetaMaskScaleAction&)rMetaAction).maColor ) &&
2373*b1cdbd2cSJim Jagielski 		   ( maPt == ((MetaMaskScaleAction&)rMetaAction).maPt ) &&
2374*b1cdbd2cSJim Jagielski 		   ( maSz == ((MetaMaskScaleAction&)rMetaAction).maSz );
2375*b1cdbd2cSJim Jagielski }
2376*b1cdbd2cSJim Jagielski 
2377*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2378*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2379*b1cdbd2cSJim Jagielski void MetaMaskScaleAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2380*b1cdbd2cSJim Jagielski {
2381*b1cdbd2cSJim Jagielski 	if( !!maBmp )
2382*b1cdbd2cSJim Jagielski 	{
2383*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
2384*b1cdbd2cSJim Jagielski         WriteDIB(maBmp, rOStm, false, true);
2385*b1cdbd2cSJim Jagielski 		rOStm << maPt << maSz;
2386*b1cdbd2cSJim Jagielski 	}
2387*b1cdbd2cSJim Jagielski }
2388*b1cdbd2cSJim Jagielski 
2389*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2390*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2391*b1cdbd2cSJim Jagielski void MetaMaskScaleAction::Read( SvStream& rIStm, ImplMetaReadData* )
2392*b1cdbd2cSJim Jagielski {
2393*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2394*b1cdbd2cSJim Jagielski     ReadDIB(maBmp, rIStm, true);
2395*b1cdbd2cSJim Jagielski 	rIStm >> maPt >> maSz;
2396*b1cdbd2cSJim Jagielski }
2397*b1cdbd2cSJim Jagielski 
2398*b1cdbd2cSJim Jagielski // ========================================================================
2399*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(MaskScalePart,META_MASKSCALEPART_ACTION)2400*b1cdbd2cSJim Jagielski IMPL_META_ACTION( MaskScalePart, META_MASKSCALEPART_ACTION )
2401*b1cdbd2cSJim Jagielski 
2402*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2403*b1cdbd2cSJim Jagielski 
2404*b1cdbd2cSJim Jagielski MetaMaskScalePartAction::MetaMaskScalePartAction( const Point& rDstPt, const Size& rDstSz,
2405*b1cdbd2cSJim Jagielski 												  const Point& rSrcPt, const Size& rSrcSz,
2406*b1cdbd2cSJim Jagielski 												  const Bitmap& rBmp,
2407*b1cdbd2cSJim Jagielski 												  const Color& rColor ) :
2408*b1cdbd2cSJim Jagielski 	MetaAction	( META_MASKSCALEPART_ACTION ),
2409*b1cdbd2cSJim Jagielski 	maBmp		( rBmp ),
2410*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
2411*b1cdbd2cSJim Jagielski 	maDstPt 	( rDstPt ),
2412*b1cdbd2cSJim Jagielski 	maDstSz 	( rDstSz ),
2413*b1cdbd2cSJim Jagielski 	maSrcPt 	( rSrcPt ),
2414*b1cdbd2cSJim Jagielski 	maSrcSz 	( rSrcSz )
2415*b1cdbd2cSJim Jagielski {
2416*b1cdbd2cSJim Jagielski }
2417*b1cdbd2cSJim Jagielski 
2418*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2419*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2420*b1cdbd2cSJim Jagielski void MetaMaskScalePartAction::Execute( OutputDevice* pOut )
2421*b1cdbd2cSJim Jagielski {
2422*b1cdbd2cSJim Jagielski 	pOut->DrawMask( maDstPt, maDstSz, maSrcPt, maSrcSz, maBmp, maColor );
2423*b1cdbd2cSJim Jagielski }
2424*b1cdbd2cSJim Jagielski 
2425*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2426*b1cdbd2cSJim Jagielski 
Clone()2427*b1cdbd2cSJim Jagielski MetaAction* MetaMaskScalePartAction::Clone()
2428*b1cdbd2cSJim Jagielski {
2429*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaMaskScalePartAction( *this );
2430*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2431*b1cdbd2cSJim Jagielski 	return pClone;
2432*b1cdbd2cSJim Jagielski }
2433*b1cdbd2cSJim Jagielski 
2434*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2435*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2436*b1cdbd2cSJim Jagielski void MetaMaskScalePartAction::Move( long nHorzMove, long nVertMove )
2437*b1cdbd2cSJim Jagielski {
2438*b1cdbd2cSJim Jagielski 	maDstPt.Move( nHorzMove, nVertMove );
2439*b1cdbd2cSJim Jagielski }
2440*b1cdbd2cSJim Jagielski 
2441*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2442*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2443*b1cdbd2cSJim Jagielski void MetaMaskScalePartAction::Scale( double fScaleX, double fScaleY )
2444*b1cdbd2cSJim Jagielski {
2445*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maDstPt, maDstSz);
2446*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
2447*b1cdbd2cSJim Jagielski     maDstPt = aRectangle.TopLeft();
2448*b1cdbd2cSJim Jagielski     maDstSz = aRectangle.GetSize();
2449*b1cdbd2cSJim Jagielski }
2450*b1cdbd2cSJim Jagielski 
2451*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2452*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2453*b1cdbd2cSJim Jagielski sal_Bool MetaMaskScalePartAction::Compare( const MetaAction& rMetaAction ) const
2454*b1cdbd2cSJim Jagielski {
2455*b1cdbd2cSJim Jagielski 	return ( maBmp.IsEqual(((MetaMaskScalePartAction&)rMetaAction).maBmp )) &&
2456*b1cdbd2cSJim Jagielski 		   ( maColor == ((MetaMaskScalePartAction&)rMetaAction).maColor ) &&
2457*b1cdbd2cSJim Jagielski 		   ( maDstPt == ((MetaMaskScalePartAction&)rMetaAction).maDstPt ) &&
2458*b1cdbd2cSJim Jagielski 		   ( maDstSz == ((MetaMaskScalePartAction&)rMetaAction).maDstSz ) &&
2459*b1cdbd2cSJim Jagielski 		   ( maSrcPt == ((MetaMaskScalePartAction&)rMetaAction).maSrcPt ) &&
2460*b1cdbd2cSJim Jagielski 		   ( maSrcSz == ((MetaMaskScalePartAction&)rMetaAction).maSrcSz );
2461*b1cdbd2cSJim Jagielski }
2462*b1cdbd2cSJim Jagielski 
2463*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2464*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2465*b1cdbd2cSJim Jagielski void MetaMaskScalePartAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2466*b1cdbd2cSJim Jagielski {
2467*b1cdbd2cSJim Jagielski 	if( !!maBmp )
2468*b1cdbd2cSJim Jagielski 	{
2469*b1cdbd2cSJim Jagielski 		WRITE_BASE_COMPAT( rOStm, 1, pData );
2470*b1cdbd2cSJim Jagielski         WriteDIB(maBmp, rOStm, false, true);
2471*b1cdbd2cSJim Jagielski 		maColor.Write( rOStm, sal_True );
2472*b1cdbd2cSJim Jagielski 		rOStm << maDstPt << maDstSz << maSrcPt << maSrcSz;
2473*b1cdbd2cSJim Jagielski 	}
2474*b1cdbd2cSJim Jagielski }
2475*b1cdbd2cSJim Jagielski 
2476*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2477*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2478*b1cdbd2cSJim Jagielski void MetaMaskScalePartAction::Read( SvStream& rIStm, ImplMetaReadData* )
2479*b1cdbd2cSJim Jagielski {
2480*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2481*b1cdbd2cSJim Jagielski     ReadDIB(maBmp, rIStm, true);
2482*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
2483*b1cdbd2cSJim Jagielski 	rIStm >> maDstPt >> maDstSz >> maSrcPt >> maSrcSz;
2484*b1cdbd2cSJim Jagielski }
2485*b1cdbd2cSJim Jagielski 
2486*b1cdbd2cSJim Jagielski // ========================================================================
2487*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Gradient,META_GRADIENT_ACTION)2488*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Gradient, META_GRADIENT_ACTION )
2489*b1cdbd2cSJim Jagielski 
2490*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2491*b1cdbd2cSJim Jagielski 
2492*b1cdbd2cSJim Jagielski MetaGradientAction::MetaGradientAction( const Rectangle& rRect, const Gradient& rGradient ) :
2493*b1cdbd2cSJim Jagielski 	MetaAction	( META_GRADIENT_ACTION ),
2494*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
2495*b1cdbd2cSJim Jagielski 	maGradient	( rGradient )
2496*b1cdbd2cSJim Jagielski {
2497*b1cdbd2cSJim Jagielski }
2498*b1cdbd2cSJim Jagielski 
2499*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2500*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2501*b1cdbd2cSJim Jagielski void MetaGradientAction::Execute( OutputDevice* pOut )
2502*b1cdbd2cSJim Jagielski {
2503*b1cdbd2cSJim Jagielski 	pOut->DrawGradient( maRect, maGradient );
2504*b1cdbd2cSJim Jagielski }
2505*b1cdbd2cSJim Jagielski 
2506*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2507*b1cdbd2cSJim Jagielski 
Clone()2508*b1cdbd2cSJim Jagielski MetaAction* MetaGradientAction::Clone()
2509*b1cdbd2cSJim Jagielski {
2510*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaGradientAction( *this );
2511*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2512*b1cdbd2cSJim Jagielski 	return pClone;
2513*b1cdbd2cSJim Jagielski }
2514*b1cdbd2cSJim Jagielski 
2515*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2516*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2517*b1cdbd2cSJim Jagielski void MetaGradientAction::Move( long nHorzMove, long nVertMove )
2518*b1cdbd2cSJim Jagielski {
2519*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
2520*b1cdbd2cSJim Jagielski }
2521*b1cdbd2cSJim Jagielski 
2522*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2523*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2524*b1cdbd2cSJim Jagielski void MetaGradientAction::Scale( double fScaleX, double fScaleY )
2525*b1cdbd2cSJim Jagielski {
2526*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
2527*b1cdbd2cSJim Jagielski }
2528*b1cdbd2cSJim Jagielski 
2529*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2530*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2531*b1cdbd2cSJim Jagielski sal_Bool MetaGradientAction::Compare( const MetaAction& rMetaAction ) const
2532*b1cdbd2cSJim Jagielski {
2533*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaGradientAction&)rMetaAction).maRect ) &&
2534*b1cdbd2cSJim Jagielski 		   ( maGradient == ((MetaGradientAction&)rMetaAction).maGradient );
2535*b1cdbd2cSJim Jagielski }
2536*b1cdbd2cSJim Jagielski 
2537*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2538*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2539*b1cdbd2cSJim Jagielski void MetaGradientAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2540*b1cdbd2cSJim Jagielski {
2541*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2542*b1cdbd2cSJim Jagielski 	rOStm << maRect << maGradient;
2543*b1cdbd2cSJim Jagielski }
2544*b1cdbd2cSJim Jagielski 
2545*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2546*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2547*b1cdbd2cSJim Jagielski void MetaGradientAction::Read( SvStream& rIStm, ImplMetaReadData* )
2548*b1cdbd2cSJim Jagielski {
2549*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2550*b1cdbd2cSJim Jagielski 	rIStm >> maRect >> maGradient;
2551*b1cdbd2cSJim Jagielski }
2552*b1cdbd2cSJim Jagielski 
2553*b1cdbd2cSJim Jagielski // ========================================================================
2554*b1cdbd2cSJim Jagielski 
MetaGradientExAction()2555*b1cdbd2cSJim Jagielski MetaGradientExAction::MetaGradientExAction() :
2556*b1cdbd2cSJim Jagielski 	MetaAction	( META_GRADIENTEX_ACTION )
2557*b1cdbd2cSJim Jagielski {
2558*b1cdbd2cSJim Jagielski }
2559*b1cdbd2cSJim Jagielski 
2560*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2561*b1cdbd2cSJim Jagielski 
MetaGradientExAction(const PolyPolygon & rPolyPoly,const Gradient & rGradient)2562*b1cdbd2cSJim Jagielski MetaGradientExAction::MetaGradientExAction( const PolyPolygon& rPolyPoly, const Gradient& rGradient ) :
2563*b1cdbd2cSJim Jagielski 	MetaAction	( META_GRADIENTEX_ACTION ),
2564*b1cdbd2cSJim Jagielski 	maPolyPoly	( rPolyPoly ),
2565*b1cdbd2cSJim Jagielski 	maGradient	( rGradient )
2566*b1cdbd2cSJim Jagielski {
2567*b1cdbd2cSJim Jagielski }
2568*b1cdbd2cSJim Jagielski 
2569*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2570*b1cdbd2cSJim Jagielski 
~MetaGradientExAction()2571*b1cdbd2cSJim Jagielski MetaGradientExAction::~MetaGradientExAction()
2572*b1cdbd2cSJim Jagielski {
2573*b1cdbd2cSJim Jagielski }
2574*b1cdbd2cSJim Jagielski 
2575*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2576*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2577*b1cdbd2cSJim Jagielski void MetaGradientExAction::Execute( OutputDevice* pOut )
2578*b1cdbd2cSJim Jagielski {
2579*b1cdbd2cSJim Jagielski 	if( pOut->GetConnectMetaFile() )
2580*b1cdbd2cSJim Jagielski     {
2581*b1cdbd2cSJim Jagielski         Duplicate();
2582*b1cdbd2cSJim Jagielski 		pOut->GetConnectMetaFile()->AddAction( this );
2583*b1cdbd2cSJim Jagielski     }
2584*b1cdbd2cSJim Jagielski }
2585*b1cdbd2cSJim Jagielski 
2586*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2587*b1cdbd2cSJim Jagielski 
Clone()2588*b1cdbd2cSJim Jagielski MetaAction* MetaGradientExAction::Clone()
2589*b1cdbd2cSJim Jagielski {
2590*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaGradientExAction( *this );
2591*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2592*b1cdbd2cSJim Jagielski 	return pClone;
2593*b1cdbd2cSJim Jagielski }
2594*b1cdbd2cSJim Jagielski 
2595*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2596*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2597*b1cdbd2cSJim Jagielski void MetaGradientExAction::Move( long nHorzMove, long nVertMove )
2598*b1cdbd2cSJim Jagielski {
2599*b1cdbd2cSJim Jagielski 	maPolyPoly.Move( nHorzMove, nVertMove );
2600*b1cdbd2cSJim Jagielski }
2601*b1cdbd2cSJim Jagielski 
2602*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2603*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2604*b1cdbd2cSJim Jagielski void MetaGradientExAction::Scale( double fScaleX, double fScaleY )
2605*b1cdbd2cSJim Jagielski {
2606*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
2607*b1cdbd2cSJim Jagielski 		ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
2608*b1cdbd2cSJim Jagielski }
2609*b1cdbd2cSJim Jagielski 
2610*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2611*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2612*b1cdbd2cSJim Jagielski sal_Bool MetaGradientExAction::Compare( const MetaAction& rMetaAction ) const
2613*b1cdbd2cSJim Jagielski {
2614*b1cdbd2cSJim Jagielski 	return ( maPolyPoly == ((MetaGradientExAction&)rMetaAction).maPolyPoly ) &&
2615*b1cdbd2cSJim Jagielski 		   ( maGradient == ((MetaGradientExAction&)rMetaAction).maGradient );
2616*b1cdbd2cSJim Jagielski }
2617*b1cdbd2cSJim Jagielski 
2618*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2619*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2620*b1cdbd2cSJim Jagielski void MetaGradientExAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2621*b1cdbd2cSJim Jagielski {
2622*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2623*b1cdbd2cSJim Jagielski 
2624*b1cdbd2cSJim Jagielski     // #i105373# see comment at MetaTransparentAction::Write
2625*b1cdbd2cSJim Jagielski     PolyPolygon aNoCurvePolyPolygon;
2626*b1cdbd2cSJim Jagielski     maPolyPoly.AdaptiveSubdivide(aNoCurvePolyPolygon);
2627*b1cdbd2cSJim Jagielski 
2628*b1cdbd2cSJim Jagielski     rOStm << aNoCurvePolyPolygon;
2629*b1cdbd2cSJim Jagielski     rOStm << maGradient;
2630*b1cdbd2cSJim Jagielski }
2631*b1cdbd2cSJim Jagielski 
2632*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2633*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2634*b1cdbd2cSJim Jagielski void MetaGradientExAction::Read( SvStream& rIStm, ImplMetaReadData* )
2635*b1cdbd2cSJim Jagielski {
2636*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2637*b1cdbd2cSJim Jagielski 	rIStm >> maPolyPoly >> maGradient;
2638*b1cdbd2cSJim Jagielski }
2639*b1cdbd2cSJim Jagielski 
2640*b1cdbd2cSJim Jagielski // ========================================================================
2641*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Hatch,META_HATCH_ACTION)2642*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Hatch, META_HATCH_ACTION )
2643*b1cdbd2cSJim Jagielski 
2644*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2645*b1cdbd2cSJim Jagielski 
2646*b1cdbd2cSJim Jagielski MetaHatchAction::MetaHatchAction( const PolyPolygon& rPolyPoly, const Hatch& rHatch ) :
2647*b1cdbd2cSJim Jagielski 	MetaAction	( META_HATCH_ACTION ),
2648*b1cdbd2cSJim Jagielski 	maPolyPoly	( rPolyPoly ),
2649*b1cdbd2cSJim Jagielski 	maHatch 	( rHatch )
2650*b1cdbd2cSJim Jagielski {
2651*b1cdbd2cSJim Jagielski }
2652*b1cdbd2cSJim Jagielski 
2653*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2654*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2655*b1cdbd2cSJim Jagielski void MetaHatchAction::Execute( OutputDevice* pOut )
2656*b1cdbd2cSJim Jagielski {
2657*b1cdbd2cSJim Jagielski 	pOut->DrawHatch( maPolyPoly, maHatch );
2658*b1cdbd2cSJim Jagielski }
2659*b1cdbd2cSJim Jagielski 
2660*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2661*b1cdbd2cSJim Jagielski 
Clone()2662*b1cdbd2cSJim Jagielski MetaAction* MetaHatchAction::Clone()
2663*b1cdbd2cSJim Jagielski {
2664*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaHatchAction( *this );
2665*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2666*b1cdbd2cSJim Jagielski 	return pClone;
2667*b1cdbd2cSJim Jagielski }
2668*b1cdbd2cSJim Jagielski 
2669*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2670*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2671*b1cdbd2cSJim Jagielski void MetaHatchAction::Move( long nHorzMove, long nVertMove )
2672*b1cdbd2cSJim Jagielski {
2673*b1cdbd2cSJim Jagielski 	maPolyPoly.Move( nHorzMove, nVertMove );
2674*b1cdbd2cSJim Jagielski }
2675*b1cdbd2cSJim Jagielski 
2676*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2677*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2678*b1cdbd2cSJim Jagielski void MetaHatchAction::Scale( double fScaleX, double fScaleY )
2679*b1cdbd2cSJim Jagielski {
2680*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
2681*b1cdbd2cSJim Jagielski 		ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
2682*b1cdbd2cSJim Jagielski }
2683*b1cdbd2cSJim Jagielski 
2684*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2685*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2686*b1cdbd2cSJim Jagielski sal_Bool MetaHatchAction::Compare( const MetaAction& rMetaAction ) const
2687*b1cdbd2cSJim Jagielski {
2688*b1cdbd2cSJim Jagielski 	return ( maPolyPoly == ((MetaHatchAction&)rMetaAction).maPolyPoly ) &&
2689*b1cdbd2cSJim Jagielski 		   ( maHatch == ((MetaHatchAction&)rMetaAction).maHatch );
2690*b1cdbd2cSJim Jagielski }
2691*b1cdbd2cSJim Jagielski 
2692*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2693*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2694*b1cdbd2cSJim Jagielski void MetaHatchAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2695*b1cdbd2cSJim Jagielski {
2696*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2697*b1cdbd2cSJim Jagielski 
2698*b1cdbd2cSJim Jagielski     // #i105373# see comment at MetaTransparentAction::Write
2699*b1cdbd2cSJim Jagielski     PolyPolygon aNoCurvePolyPolygon;
2700*b1cdbd2cSJim Jagielski     maPolyPoly.AdaptiveSubdivide(aNoCurvePolyPolygon);
2701*b1cdbd2cSJim Jagielski 
2702*b1cdbd2cSJim Jagielski     rOStm << aNoCurvePolyPolygon;
2703*b1cdbd2cSJim Jagielski     rOStm << maHatch;
2704*b1cdbd2cSJim Jagielski }
2705*b1cdbd2cSJim Jagielski 
2706*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2707*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2708*b1cdbd2cSJim Jagielski void MetaHatchAction::Read( SvStream& rIStm, ImplMetaReadData* )
2709*b1cdbd2cSJim Jagielski {
2710*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2711*b1cdbd2cSJim Jagielski 	rIStm >> maPolyPoly >> maHatch;
2712*b1cdbd2cSJim Jagielski }
2713*b1cdbd2cSJim Jagielski 
2714*b1cdbd2cSJim Jagielski // ========================================================================
2715*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Wallpaper,META_WALLPAPER_ACTION)2716*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Wallpaper, META_WALLPAPER_ACTION )
2717*b1cdbd2cSJim Jagielski 
2718*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2719*b1cdbd2cSJim Jagielski 
2720*b1cdbd2cSJim Jagielski MetaWallpaperAction::MetaWallpaperAction( const Rectangle& rRect,
2721*b1cdbd2cSJim Jagielski 										  const Wallpaper& rPaper ) :
2722*b1cdbd2cSJim Jagielski 	MetaAction	( META_WALLPAPER_ACTION ),
2723*b1cdbd2cSJim Jagielski 	maRect		( rRect ),
2724*b1cdbd2cSJim Jagielski 	maWallpaper ( rPaper )
2725*b1cdbd2cSJim Jagielski {
2726*b1cdbd2cSJim Jagielski }
2727*b1cdbd2cSJim Jagielski 
2728*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2729*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2730*b1cdbd2cSJim Jagielski void MetaWallpaperAction::Execute( OutputDevice* pOut )
2731*b1cdbd2cSJim Jagielski {
2732*b1cdbd2cSJim Jagielski 	pOut->DrawWallpaper( maRect, maWallpaper );
2733*b1cdbd2cSJim Jagielski }
2734*b1cdbd2cSJim Jagielski 
2735*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2736*b1cdbd2cSJim Jagielski 
Clone()2737*b1cdbd2cSJim Jagielski MetaAction* MetaWallpaperAction::Clone()
2738*b1cdbd2cSJim Jagielski {
2739*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaWallpaperAction( *this );
2740*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2741*b1cdbd2cSJim Jagielski 	return pClone;
2742*b1cdbd2cSJim Jagielski }
2743*b1cdbd2cSJim Jagielski 
2744*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2745*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2746*b1cdbd2cSJim Jagielski void MetaWallpaperAction::Move( long nHorzMove, long nVertMove )
2747*b1cdbd2cSJim Jagielski {
2748*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
2749*b1cdbd2cSJim Jagielski }
2750*b1cdbd2cSJim Jagielski 
2751*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2752*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2753*b1cdbd2cSJim Jagielski void MetaWallpaperAction::Scale( double fScaleX, double fScaleY )
2754*b1cdbd2cSJim Jagielski {
2755*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
2756*b1cdbd2cSJim Jagielski }
2757*b1cdbd2cSJim Jagielski 
2758*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2759*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2760*b1cdbd2cSJim Jagielski sal_Bool MetaWallpaperAction::Compare( const MetaAction& rMetaAction ) const
2761*b1cdbd2cSJim Jagielski {
2762*b1cdbd2cSJim Jagielski 	return ( maRect == ((MetaWallpaperAction&)rMetaAction).maRect ) &&
2763*b1cdbd2cSJim Jagielski 		   ( maWallpaper == ((MetaWallpaperAction&)rMetaAction).maWallpaper );
2764*b1cdbd2cSJim Jagielski }
2765*b1cdbd2cSJim Jagielski 
2766*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2767*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2768*b1cdbd2cSJim Jagielski void MetaWallpaperAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2769*b1cdbd2cSJim Jagielski {
2770*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2771*b1cdbd2cSJim Jagielski 	rOStm << maWallpaper;
2772*b1cdbd2cSJim Jagielski }
2773*b1cdbd2cSJim Jagielski 
2774*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2775*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2776*b1cdbd2cSJim Jagielski void MetaWallpaperAction::Read( SvStream& rIStm, ImplMetaReadData* )
2777*b1cdbd2cSJim Jagielski {
2778*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2779*b1cdbd2cSJim Jagielski 	rIStm >> maWallpaper;
2780*b1cdbd2cSJim Jagielski }
2781*b1cdbd2cSJim Jagielski 
2782*b1cdbd2cSJim Jagielski // ========================================================================
2783*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(ClipRegion,META_CLIPREGION_ACTION)2784*b1cdbd2cSJim Jagielski IMPL_META_ACTION( ClipRegion, META_CLIPREGION_ACTION )
2785*b1cdbd2cSJim Jagielski 
2786*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2787*b1cdbd2cSJim Jagielski 
2788*b1cdbd2cSJim Jagielski MetaClipRegionAction::MetaClipRegionAction( const Region& rRegion, sal_Bool bClip ) :
2789*b1cdbd2cSJim Jagielski 	MetaAction	( META_CLIPREGION_ACTION ),
2790*b1cdbd2cSJim Jagielski 	maRegion	( rRegion ),
2791*b1cdbd2cSJim Jagielski 	mbClip		( bClip )
2792*b1cdbd2cSJim Jagielski {
2793*b1cdbd2cSJim Jagielski }
2794*b1cdbd2cSJim Jagielski 
2795*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2796*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2797*b1cdbd2cSJim Jagielski void MetaClipRegionAction::Execute( OutputDevice* pOut )
2798*b1cdbd2cSJim Jagielski {
2799*b1cdbd2cSJim Jagielski 	if( mbClip )
2800*b1cdbd2cSJim Jagielski 		pOut->SetClipRegion( maRegion );
2801*b1cdbd2cSJim Jagielski 	else
2802*b1cdbd2cSJim Jagielski 		pOut->SetClipRegion();
2803*b1cdbd2cSJim Jagielski }
2804*b1cdbd2cSJim Jagielski 
2805*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2806*b1cdbd2cSJim Jagielski 
Clone()2807*b1cdbd2cSJim Jagielski MetaAction* MetaClipRegionAction::Clone()
2808*b1cdbd2cSJim Jagielski {
2809*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaClipRegionAction( *this );
2810*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2811*b1cdbd2cSJim Jagielski 	return pClone;
2812*b1cdbd2cSJim Jagielski }
2813*b1cdbd2cSJim Jagielski 
2814*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2815*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2816*b1cdbd2cSJim Jagielski void MetaClipRegionAction::Move( long nHorzMove, long nVertMove )
2817*b1cdbd2cSJim Jagielski {
2818*b1cdbd2cSJim Jagielski 	maRegion.Move( nHorzMove, nVertMove );
2819*b1cdbd2cSJim Jagielski }
2820*b1cdbd2cSJim Jagielski 
2821*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2822*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2823*b1cdbd2cSJim Jagielski void MetaClipRegionAction::Scale( double fScaleX, double fScaleY )
2824*b1cdbd2cSJim Jagielski {
2825*b1cdbd2cSJim Jagielski 	maRegion.Scale( fScaleX, fScaleY );
2826*b1cdbd2cSJim Jagielski }
2827*b1cdbd2cSJim Jagielski 
2828*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2829*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2830*b1cdbd2cSJim Jagielski sal_Bool MetaClipRegionAction::Compare( const MetaAction& rMetaAction ) const
2831*b1cdbd2cSJim Jagielski {
2832*b1cdbd2cSJim Jagielski 	return ( maRegion == ((MetaClipRegionAction&)rMetaAction).maRegion ) &&
2833*b1cdbd2cSJim Jagielski 		   ( mbClip == ((MetaClipRegionAction&)rMetaAction).mbClip );
2834*b1cdbd2cSJim Jagielski }
2835*b1cdbd2cSJim Jagielski 
2836*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2837*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2838*b1cdbd2cSJim Jagielski void MetaClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2839*b1cdbd2cSJim Jagielski {
2840*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2841*b1cdbd2cSJim Jagielski 	rOStm << maRegion << mbClip;
2842*b1cdbd2cSJim Jagielski }
2843*b1cdbd2cSJim Jagielski 
2844*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2845*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2846*b1cdbd2cSJim Jagielski void MetaClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
2847*b1cdbd2cSJim Jagielski {
2848*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2849*b1cdbd2cSJim Jagielski 	rIStm >> maRegion >> mbClip;
2850*b1cdbd2cSJim Jagielski }
2851*b1cdbd2cSJim Jagielski 
2852*b1cdbd2cSJim Jagielski // ========================================================================
2853*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(ISectRectClipRegion,META_ISECTRECTCLIPREGION_ACTION)2854*b1cdbd2cSJim Jagielski IMPL_META_ACTION( ISectRectClipRegion, META_ISECTRECTCLIPREGION_ACTION )
2855*b1cdbd2cSJim Jagielski 
2856*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2857*b1cdbd2cSJim Jagielski 
2858*b1cdbd2cSJim Jagielski MetaISectRectClipRegionAction::MetaISectRectClipRegionAction( const Rectangle& rRect ) :
2859*b1cdbd2cSJim Jagielski 	MetaAction	( META_ISECTRECTCLIPREGION_ACTION ),
2860*b1cdbd2cSJim Jagielski 	maRect		( rRect )
2861*b1cdbd2cSJim Jagielski {
2862*b1cdbd2cSJim Jagielski }
2863*b1cdbd2cSJim Jagielski 
2864*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2865*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2866*b1cdbd2cSJim Jagielski void MetaISectRectClipRegionAction::Execute( OutputDevice* pOut )
2867*b1cdbd2cSJim Jagielski {
2868*b1cdbd2cSJim Jagielski 	pOut->IntersectClipRegion( maRect );
2869*b1cdbd2cSJim Jagielski }
2870*b1cdbd2cSJim Jagielski 
2871*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2872*b1cdbd2cSJim Jagielski 
Clone()2873*b1cdbd2cSJim Jagielski MetaAction* MetaISectRectClipRegionAction::Clone()
2874*b1cdbd2cSJim Jagielski {
2875*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaISectRectClipRegionAction( *this );
2876*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2877*b1cdbd2cSJim Jagielski 	return pClone;
2878*b1cdbd2cSJim Jagielski }
2879*b1cdbd2cSJim Jagielski 
2880*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2881*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2882*b1cdbd2cSJim Jagielski void MetaISectRectClipRegionAction::Move( long nHorzMove, long nVertMove )
2883*b1cdbd2cSJim Jagielski {
2884*b1cdbd2cSJim Jagielski 	maRect.Move( nHorzMove, nVertMove );
2885*b1cdbd2cSJim Jagielski }
2886*b1cdbd2cSJim Jagielski 
2887*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2888*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2889*b1cdbd2cSJim Jagielski void MetaISectRectClipRegionAction::Scale( double fScaleX, double fScaleY )
2890*b1cdbd2cSJim Jagielski {
2891*b1cdbd2cSJim Jagielski 	ImplScaleRect( maRect, fScaleX, fScaleY );
2892*b1cdbd2cSJim Jagielski }
2893*b1cdbd2cSJim Jagielski 
2894*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2895*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2896*b1cdbd2cSJim Jagielski sal_Bool MetaISectRectClipRegionAction::Compare( const MetaAction& rMetaAction ) const
2897*b1cdbd2cSJim Jagielski {
2898*b1cdbd2cSJim Jagielski 	return maRect == ((MetaISectRectClipRegionAction&)rMetaAction).maRect;
2899*b1cdbd2cSJim Jagielski }
2900*b1cdbd2cSJim Jagielski 
2901*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2902*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2903*b1cdbd2cSJim Jagielski void MetaISectRectClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2904*b1cdbd2cSJim Jagielski {
2905*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2906*b1cdbd2cSJim Jagielski 	rOStm << maRect;
2907*b1cdbd2cSJim Jagielski }
2908*b1cdbd2cSJim Jagielski 
2909*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2910*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2911*b1cdbd2cSJim Jagielski void MetaISectRectClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
2912*b1cdbd2cSJim Jagielski {
2913*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2914*b1cdbd2cSJim Jagielski 	rIStm >> maRect;
2915*b1cdbd2cSJim Jagielski }
2916*b1cdbd2cSJim Jagielski 
2917*b1cdbd2cSJim Jagielski // ========================================================================
2918*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(ISectRegionClipRegion,META_ISECTREGIONCLIPREGION_ACTION)2919*b1cdbd2cSJim Jagielski IMPL_META_ACTION( ISectRegionClipRegion, META_ISECTREGIONCLIPREGION_ACTION )
2920*b1cdbd2cSJim Jagielski 
2921*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2922*b1cdbd2cSJim Jagielski 
2923*b1cdbd2cSJim Jagielski MetaISectRegionClipRegionAction::MetaISectRegionClipRegionAction( const Region& rRegion ) :
2924*b1cdbd2cSJim Jagielski 	MetaAction	( META_ISECTREGIONCLIPREGION_ACTION ),
2925*b1cdbd2cSJim Jagielski 	maRegion	( rRegion )
2926*b1cdbd2cSJim Jagielski {
2927*b1cdbd2cSJim Jagielski }
2928*b1cdbd2cSJim Jagielski 
2929*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2930*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2931*b1cdbd2cSJim Jagielski void MetaISectRegionClipRegionAction::Execute( OutputDevice* pOut )
2932*b1cdbd2cSJim Jagielski {
2933*b1cdbd2cSJim Jagielski 	pOut->IntersectClipRegion( maRegion );
2934*b1cdbd2cSJim Jagielski }
2935*b1cdbd2cSJim Jagielski 
2936*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2937*b1cdbd2cSJim Jagielski 
Clone()2938*b1cdbd2cSJim Jagielski MetaAction* MetaISectRegionClipRegionAction::Clone()
2939*b1cdbd2cSJim Jagielski {
2940*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaISectRegionClipRegionAction( *this );
2941*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
2942*b1cdbd2cSJim Jagielski 	return pClone;
2943*b1cdbd2cSJim Jagielski }
2944*b1cdbd2cSJim Jagielski 
2945*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2946*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)2947*b1cdbd2cSJim Jagielski void MetaISectRegionClipRegionAction::Move( long nHorzMove, long nVertMove )
2948*b1cdbd2cSJim Jagielski {
2949*b1cdbd2cSJim Jagielski 	maRegion.Move( nHorzMove, nVertMove );
2950*b1cdbd2cSJim Jagielski }
2951*b1cdbd2cSJim Jagielski 
2952*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2953*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)2954*b1cdbd2cSJim Jagielski void MetaISectRegionClipRegionAction::Scale( double fScaleX, double fScaleY )
2955*b1cdbd2cSJim Jagielski {
2956*b1cdbd2cSJim Jagielski 	maRegion.Scale( fScaleX, fScaleY );
2957*b1cdbd2cSJim Jagielski }
2958*b1cdbd2cSJim Jagielski 
2959*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2960*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const2961*b1cdbd2cSJim Jagielski sal_Bool MetaISectRegionClipRegionAction::Compare( const MetaAction& rMetaAction ) const
2962*b1cdbd2cSJim Jagielski {
2963*b1cdbd2cSJim Jagielski 	return maRegion == ((MetaISectRegionClipRegionAction&)rMetaAction).maRegion;
2964*b1cdbd2cSJim Jagielski }
2965*b1cdbd2cSJim Jagielski 
2966*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2967*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)2968*b1cdbd2cSJim Jagielski void MetaISectRegionClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
2969*b1cdbd2cSJim Jagielski {
2970*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
2971*b1cdbd2cSJim Jagielski 	rOStm << maRegion;
2972*b1cdbd2cSJim Jagielski }
2973*b1cdbd2cSJim Jagielski 
2974*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2975*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)2976*b1cdbd2cSJim Jagielski void MetaISectRegionClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
2977*b1cdbd2cSJim Jagielski {
2978*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
2979*b1cdbd2cSJim Jagielski 	rIStm >> maRegion;
2980*b1cdbd2cSJim Jagielski }
2981*b1cdbd2cSJim Jagielski 
2982*b1cdbd2cSJim Jagielski // ========================================================================
2983*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(MoveClipRegion,META_MOVECLIPREGION_ACTION)2984*b1cdbd2cSJim Jagielski IMPL_META_ACTION( MoveClipRegion, META_MOVECLIPREGION_ACTION )
2985*b1cdbd2cSJim Jagielski 
2986*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2987*b1cdbd2cSJim Jagielski 
2988*b1cdbd2cSJim Jagielski MetaMoveClipRegionAction::MetaMoveClipRegionAction( long nHorzMove, long nVertMove ) :
2989*b1cdbd2cSJim Jagielski 	MetaAction	( META_MOVECLIPREGION_ACTION ),
2990*b1cdbd2cSJim Jagielski 	mnHorzMove	( nHorzMove ),
2991*b1cdbd2cSJim Jagielski 	mnVertMove	( nVertMove )
2992*b1cdbd2cSJim Jagielski {
2993*b1cdbd2cSJim Jagielski }
2994*b1cdbd2cSJim Jagielski 
2995*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
2996*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)2997*b1cdbd2cSJim Jagielski void MetaMoveClipRegionAction::Execute( OutputDevice* pOut )
2998*b1cdbd2cSJim Jagielski {
2999*b1cdbd2cSJim Jagielski 	pOut->MoveClipRegion( mnHorzMove, mnVertMove );
3000*b1cdbd2cSJim Jagielski }
3001*b1cdbd2cSJim Jagielski 
3002*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3003*b1cdbd2cSJim Jagielski 
Clone()3004*b1cdbd2cSJim Jagielski MetaAction* MetaMoveClipRegionAction::Clone()
3005*b1cdbd2cSJim Jagielski {
3006*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaMoveClipRegionAction( *this );
3007*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3008*b1cdbd2cSJim Jagielski 	return pClone;
3009*b1cdbd2cSJim Jagielski }
3010*b1cdbd2cSJim Jagielski 
3011*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3012*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)3013*b1cdbd2cSJim Jagielski void MetaMoveClipRegionAction::Scale( double fScaleX, double fScaleY )
3014*b1cdbd2cSJim Jagielski {
3015*b1cdbd2cSJim Jagielski 	mnHorzMove = FRound( mnHorzMove * fScaleX );
3016*b1cdbd2cSJim Jagielski 	mnVertMove = FRound( mnVertMove * fScaleY );
3017*b1cdbd2cSJim Jagielski }
3018*b1cdbd2cSJim Jagielski 
3019*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3020*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3021*b1cdbd2cSJim Jagielski sal_Bool MetaMoveClipRegionAction::Compare( const MetaAction& rMetaAction ) const
3022*b1cdbd2cSJim Jagielski {
3023*b1cdbd2cSJim Jagielski 	return ( mnHorzMove == ((MetaMoveClipRegionAction&)rMetaAction).mnHorzMove ) &&
3024*b1cdbd2cSJim Jagielski 		   ( mnVertMove == ((MetaMoveClipRegionAction&)rMetaAction).mnVertMove );
3025*b1cdbd2cSJim Jagielski }
3026*b1cdbd2cSJim Jagielski 
3027*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3028*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3029*b1cdbd2cSJim Jagielski void MetaMoveClipRegionAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3030*b1cdbd2cSJim Jagielski {
3031*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3032*b1cdbd2cSJim Jagielski 	rOStm << mnHorzMove << mnVertMove;
3033*b1cdbd2cSJim Jagielski }
3034*b1cdbd2cSJim Jagielski 
3035*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3036*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3037*b1cdbd2cSJim Jagielski void MetaMoveClipRegionAction::Read( SvStream& rIStm, ImplMetaReadData* )
3038*b1cdbd2cSJim Jagielski {
3039*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3040*b1cdbd2cSJim Jagielski 	rIStm >> mnHorzMove >> mnVertMove;
3041*b1cdbd2cSJim Jagielski }
3042*b1cdbd2cSJim Jagielski 
3043*b1cdbd2cSJim Jagielski // ========================================================================
3044*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(LineColor,META_LINECOLOR_ACTION)3045*b1cdbd2cSJim Jagielski IMPL_META_ACTION( LineColor, META_LINECOLOR_ACTION )
3046*b1cdbd2cSJim Jagielski 
3047*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3048*b1cdbd2cSJim Jagielski 
3049*b1cdbd2cSJim Jagielski MetaLineColorAction::MetaLineColorAction( const Color& rColor, sal_Bool bSet ) :
3050*b1cdbd2cSJim Jagielski 	MetaAction	( META_LINECOLOR_ACTION ),
3051*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
3052*b1cdbd2cSJim Jagielski 	mbSet		( bSet )
3053*b1cdbd2cSJim Jagielski {
3054*b1cdbd2cSJim Jagielski }
3055*b1cdbd2cSJim Jagielski 
3056*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3057*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3058*b1cdbd2cSJim Jagielski void MetaLineColorAction::Execute( OutputDevice* pOut )
3059*b1cdbd2cSJim Jagielski {
3060*b1cdbd2cSJim Jagielski 	if( mbSet )
3061*b1cdbd2cSJim Jagielski 		pOut->SetLineColor( maColor );
3062*b1cdbd2cSJim Jagielski 	else
3063*b1cdbd2cSJim Jagielski 		pOut->SetLineColor();
3064*b1cdbd2cSJim Jagielski }
3065*b1cdbd2cSJim Jagielski 
3066*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3067*b1cdbd2cSJim Jagielski 
Clone()3068*b1cdbd2cSJim Jagielski MetaAction* MetaLineColorAction::Clone()
3069*b1cdbd2cSJim Jagielski {
3070*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaLineColorAction( *this );
3071*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3072*b1cdbd2cSJim Jagielski 	return pClone;
3073*b1cdbd2cSJim Jagielski }
3074*b1cdbd2cSJim Jagielski 
3075*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3076*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3077*b1cdbd2cSJim Jagielski sal_Bool MetaLineColorAction::Compare( const MetaAction& rMetaAction ) const
3078*b1cdbd2cSJim Jagielski {
3079*b1cdbd2cSJim Jagielski 	return ( maColor == ((MetaLineColorAction&)rMetaAction).maColor ) &&
3080*b1cdbd2cSJim Jagielski 		   ( mbSet == ((MetaLineColorAction&)rMetaAction).mbSet );
3081*b1cdbd2cSJim Jagielski }
3082*b1cdbd2cSJim Jagielski 
3083*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3084*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3085*b1cdbd2cSJim Jagielski void MetaLineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3086*b1cdbd2cSJim Jagielski {
3087*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3088*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
3089*b1cdbd2cSJim Jagielski 	rOStm << mbSet;
3090*b1cdbd2cSJim Jagielski }
3091*b1cdbd2cSJim Jagielski 
3092*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3093*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3094*b1cdbd2cSJim Jagielski void MetaLineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
3095*b1cdbd2cSJim Jagielski {
3096*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3097*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
3098*b1cdbd2cSJim Jagielski 	rIStm >> mbSet;
3099*b1cdbd2cSJim Jagielski }
3100*b1cdbd2cSJim Jagielski 
3101*b1cdbd2cSJim Jagielski // ========================================================================
3102*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(FillColor,META_FILLCOLOR_ACTION)3103*b1cdbd2cSJim Jagielski IMPL_META_ACTION( FillColor, META_FILLCOLOR_ACTION )
3104*b1cdbd2cSJim Jagielski 
3105*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3106*b1cdbd2cSJim Jagielski 
3107*b1cdbd2cSJim Jagielski MetaFillColorAction::MetaFillColorAction( const Color& rColor, sal_Bool bSet ) :
3108*b1cdbd2cSJim Jagielski 	MetaAction	( META_FILLCOLOR_ACTION ),
3109*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
3110*b1cdbd2cSJim Jagielski 	mbSet		( bSet )
3111*b1cdbd2cSJim Jagielski {
3112*b1cdbd2cSJim Jagielski }
3113*b1cdbd2cSJim Jagielski 
3114*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3115*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3116*b1cdbd2cSJim Jagielski void MetaFillColorAction::Execute( OutputDevice* pOut )
3117*b1cdbd2cSJim Jagielski {
3118*b1cdbd2cSJim Jagielski 	if( mbSet )
3119*b1cdbd2cSJim Jagielski 		pOut->SetFillColor( maColor );
3120*b1cdbd2cSJim Jagielski 	else
3121*b1cdbd2cSJim Jagielski 		pOut->SetFillColor();
3122*b1cdbd2cSJim Jagielski }
3123*b1cdbd2cSJim Jagielski 
3124*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3125*b1cdbd2cSJim Jagielski 
Clone()3126*b1cdbd2cSJim Jagielski MetaAction* MetaFillColorAction::Clone()
3127*b1cdbd2cSJim Jagielski {
3128*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaFillColorAction( *this );
3129*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3130*b1cdbd2cSJim Jagielski 	return pClone;
3131*b1cdbd2cSJim Jagielski }
3132*b1cdbd2cSJim Jagielski 
3133*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3134*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3135*b1cdbd2cSJim Jagielski sal_Bool MetaFillColorAction::Compare( const MetaAction& rMetaAction ) const
3136*b1cdbd2cSJim Jagielski {
3137*b1cdbd2cSJim Jagielski 	return ( maColor == ((MetaFillColorAction&)rMetaAction).maColor ) &&
3138*b1cdbd2cSJim Jagielski 		   ( mbSet == ((MetaFillColorAction&)rMetaAction).mbSet );
3139*b1cdbd2cSJim Jagielski }
3140*b1cdbd2cSJim Jagielski 
3141*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3142*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3143*b1cdbd2cSJim Jagielski void MetaFillColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3144*b1cdbd2cSJim Jagielski {
3145*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3146*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
3147*b1cdbd2cSJim Jagielski 	rOStm << mbSet;
3148*b1cdbd2cSJim Jagielski }
3149*b1cdbd2cSJim Jagielski 
3150*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3151*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3152*b1cdbd2cSJim Jagielski void MetaFillColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
3153*b1cdbd2cSJim Jagielski {
3154*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3155*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
3156*b1cdbd2cSJim Jagielski 	rIStm >> mbSet;
3157*b1cdbd2cSJim Jagielski }
3158*b1cdbd2cSJim Jagielski 
3159*b1cdbd2cSJim Jagielski // ========================================================================
3160*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextColor,META_TEXTCOLOR_ACTION)3161*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextColor, META_TEXTCOLOR_ACTION )
3162*b1cdbd2cSJim Jagielski 
3163*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3164*b1cdbd2cSJim Jagielski 
3165*b1cdbd2cSJim Jagielski MetaTextColorAction::MetaTextColorAction( const Color& rColor ) :
3166*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTCOLOR_ACTION ),
3167*b1cdbd2cSJim Jagielski 	maColor 	( rColor )
3168*b1cdbd2cSJim Jagielski {
3169*b1cdbd2cSJim Jagielski }
3170*b1cdbd2cSJim Jagielski 
3171*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3172*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3173*b1cdbd2cSJim Jagielski void MetaTextColorAction::Execute( OutputDevice* pOut )
3174*b1cdbd2cSJim Jagielski {
3175*b1cdbd2cSJim Jagielski 	pOut->SetTextColor( maColor );
3176*b1cdbd2cSJim Jagielski }
3177*b1cdbd2cSJim Jagielski 
3178*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3179*b1cdbd2cSJim Jagielski 
Clone()3180*b1cdbd2cSJim Jagielski MetaAction* MetaTextColorAction::Clone()
3181*b1cdbd2cSJim Jagielski {
3182*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextColorAction( *this );
3183*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3184*b1cdbd2cSJim Jagielski 	return pClone;
3185*b1cdbd2cSJim Jagielski }
3186*b1cdbd2cSJim Jagielski 
3187*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3188*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3189*b1cdbd2cSJim Jagielski sal_Bool MetaTextColorAction::Compare( const MetaAction& rMetaAction ) const
3190*b1cdbd2cSJim Jagielski {
3191*b1cdbd2cSJim Jagielski 	return maColor == ((MetaTextColorAction&)rMetaAction).maColor;
3192*b1cdbd2cSJim Jagielski }
3193*b1cdbd2cSJim Jagielski 
3194*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3195*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3196*b1cdbd2cSJim Jagielski void MetaTextColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3197*b1cdbd2cSJim Jagielski {
3198*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3199*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
3200*b1cdbd2cSJim Jagielski }
3201*b1cdbd2cSJim Jagielski 
3202*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3203*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3204*b1cdbd2cSJim Jagielski void MetaTextColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
3205*b1cdbd2cSJim Jagielski {
3206*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3207*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
3208*b1cdbd2cSJim Jagielski }
3209*b1cdbd2cSJim Jagielski 
3210*b1cdbd2cSJim Jagielski // ========================================================================
3211*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextFillColor,META_TEXTFILLCOLOR_ACTION)3212*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextFillColor, META_TEXTFILLCOLOR_ACTION )
3213*b1cdbd2cSJim Jagielski 
3214*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3215*b1cdbd2cSJim Jagielski 
3216*b1cdbd2cSJim Jagielski MetaTextFillColorAction::MetaTextFillColorAction( const Color& rColor, sal_Bool bSet ) :
3217*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTFILLCOLOR_ACTION ),
3218*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
3219*b1cdbd2cSJim Jagielski 	mbSet		( bSet )
3220*b1cdbd2cSJim Jagielski {
3221*b1cdbd2cSJim Jagielski }
3222*b1cdbd2cSJim Jagielski 
3223*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3224*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3225*b1cdbd2cSJim Jagielski void MetaTextFillColorAction::Execute( OutputDevice* pOut )
3226*b1cdbd2cSJim Jagielski {
3227*b1cdbd2cSJim Jagielski 	if( mbSet )
3228*b1cdbd2cSJim Jagielski 		pOut->SetTextFillColor( maColor );
3229*b1cdbd2cSJim Jagielski 	else
3230*b1cdbd2cSJim Jagielski 		pOut->SetTextFillColor();
3231*b1cdbd2cSJim Jagielski }
3232*b1cdbd2cSJim Jagielski 
3233*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3234*b1cdbd2cSJim Jagielski 
Clone()3235*b1cdbd2cSJim Jagielski MetaAction* MetaTextFillColorAction::Clone()
3236*b1cdbd2cSJim Jagielski {
3237*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextFillColorAction( *this );
3238*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3239*b1cdbd2cSJim Jagielski 	return pClone;
3240*b1cdbd2cSJim Jagielski }
3241*b1cdbd2cSJim Jagielski 
3242*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3243*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3244*b1cdbd2cSJim Jagielski sal_Bool MetaTextFillColorAction::Compare( const MetaAction& rMetaAction ) const
3245*b1cdbd2cSJim Jagielski {
3246*b1cdbd2cSJim Jagielski 	return ( maColor == ((MetaTextFillColorAction&)rMetaAction).maColor ) &&
3247*b1cdbd2cSJim Jagielski 		   ( mbSet == ((MetaTextFillColorAction&)rMetaAction).mbSet );
3248*b1cdbd2cSJim Jagielski }
3249*b1cdbd2cSJim Jagielski 
3250*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3251*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3252*b1cdbd2cSJim Jagielski void MetaTextFillColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3253*b1cdbd2cSJim Jagielski {
3254*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3255*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
3256*b1cdbd2cSJim Jagielski 	rOStm << mbSet;
3257*b1cdbd2cSJim Jagielski }
3258*b1cdbd2cSJim Jagielski 
3259*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3260*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3261*b1cdbd2cSJim Jagielski void MetaTextFillColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
3262*b1cdbd2cSJim Jagielski {
3263*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3264*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
3265*b1cdbd2cSJim Jagielski 	rIStm >> mbSet;
3266*b1cdbd2cSJim Jagielski }
3267*b1cdbd2cSJim Jagielski 
3268*b1cdbd2cSJim Jagielski // ========================================================================
3269*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextLineColor,META_TEXTLINECOLOR_ACTION)3270*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextLineColor, META_TEXTLINECOLOR_ACTION )
3271*b1cdbd2cSJim Jagielski 
3272*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3273*b1cdbd2cSJim Jagielski 
3274*b1cdbd2cSJim Jagielski MetaTextLineColorAction::MetaTextLineColorAction( const Color& rColor, sal_Bool bSet ) :
3275*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTLINECOLOR_ACTION ),
3276*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
3277*b1cdbd2cSJim Jagielski 	mbSet		( bSet )
3278*b1cdbd2cSJim Jagielski {
3279*b1cdbd2cSJim Jagielski }
3280*b1cdbd2cSJim Jagielski 
3281*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3282*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3283*b1cdbd2cSJim Jagielski void MetaTextLineColorAction::Execute( OutputDevice* pOut )
3284*b1cdbd2cSJim Jagielski {
3285*b1cdbd2cSJim Jagielski 	if( mbSet )
3286*b1cdbd2cSJim Jagielski 		pOut->SetTextLineColor( maColor );
3287*b1cdbd2cSJim Jagielski 	else
3288*b1cdbd2cSJim Jagielski 		pOut->SetTextLineColor();
3289*b1cdbd2cSJim Jagielski }
3290*b1cdbd2cSJim Jagielski 
3291*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3292*b1cdbd2cSJim Jagielski 
Clone()3293*b1cdbd2cSJim Jagielski MetaAction* MetaTextLineColorAction::Clone()
3294*b1cdbd2cSJim Jagielski {
3295*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextLineColorAction( *this );
3296*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3297*b1cdbd2cSJim Jagielski 	return pClone;
3298*b1cdbd2cSJim Jagielski }
3299*b1cdbd2cSJim Jagielski 
3300*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3301*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3302*b1cdbd2cSJim Jagielski sal_Bool MetaTextLineColorAction::Compare( const MetaAction& rMetaAction ) const
3303*b1cdbd2cSJim Jagielski {
3304*b1cdbd2cSJim Jagielski 	return ( maColor == ((MetaTextLineColorAction&)rMetaAction).maColor ) &&
3305*b1cdbd2cSJim Jagielski 		   ( mbSet == ((MetaTextLineColorAction&)rMetaAction).mbSet );
3306*b1cdbd2cSJim Jagielski }
3307*b1cdbd2cSJim Jagielski 
3308*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3309*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3310*b1cdbd2cSJim Jagielski void MetaTextLineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3311*b1cdbd2cSJim Jagielski {
3312*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3313*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
3314*b1cdbd2cSJim Jagielski 	rOStm << mbSet;
3315*b1cdbd2cSJim Jagielski }
3316*b1cdbd2cSJim Jagielski 
3317*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3318*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3319*b1cdbd2cSJim Jagielski void MetaTextLineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
3320*b1cdbd2cSJim Jagielski {
3321*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3322*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
3323*b1cdbd2cSJim Jagielski 	rIStm >> mbSet;
3324*b1cdbd2cSJim Jagielski }
3325*b1cdbd2cSJim Jagielski 
3326*b1cdbd2cSJim Jagielski // ========================================================================
3327*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(OverlineColor,META_OVERLINECOLOR_ACTION)3328*b1cdbd2cSJim Jagielski IMPL_META_ACTION( OverlineColor, META_OVERLINECOLOR_ACTION )
3329*b1cdbd2cSJim Jagielski 
3330*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3331*b1cdbd2cSJim Jagielski 
3332*b1cdbd2cSJim Jagielski MetaOverlineColorAction::MetaOverlineColorAction( const Color& rColor, sal_Bool bSet ) :
3333*b1cdbd2cSJim Jagielski 	MetaAction	( META_OVERLINECOLOR_ACTION ),
3334*b1cdbd2cSJim Jagielski 	maColor 	( rColor ),
3335*b1cdbd2cSJim Jagielski 	mbSet		( bSet )
3336*b1cdbd2cSJim Jagielski {
3337*b1cdbd2cSJim Jagielski }
3338*b1cdbd2cSJim Jagielski 
3339*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3340*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3341*b1cdbd2cSJim Jagielski void MetaOverlineColorAction::Execute( OutputDevice* pOut )
3342*b1cdbd2cSJim Jagielski {
3343*b1cdbd2cSJim Jagielski 	if( mbSet )
3344*b1cdbd2cSJim Jagielski 		pOut->SetOverlineColor( maColor );
3345*b1cdbd2cSJim Jagielski 	else
3346*b1cdbd2cSJim Jagielski 		pOut->SetOverlineColor();
3347*b1cdbd2cSJim Jagielski }
3348*b1cdbd2cSJim Jagielski 
3349*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3350*b1cdbd2cSJim Jagielski 
Clone()3351*b1cdbd2cSJim Jagielski MetaAction* MetaOverlineColorAction::Clone()
3352*b1cdbd2cSJim Jagielski {
3353*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaOverlineColorAction( *this );
3354*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3355*b1cdbd2cSJim Jagielski 	return pClone;
3356*b1cdbd2cSJim Jagielski }
3357*b1cdbd2cSJim Jagielski 
3358*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3359*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3360*b1cdbd2cSJim Jagielski sal_Bool MetaOverlineColorAction::Compare( const MetaAction& rMetaAction ) const
3361*b1cdbd2cSJim Jagielski {
3362*b1cdbd2cSJim Jagielski 	return ( maColor == ((MetaOverlineColorAction&)rMetaAction).maColor ) &&
3363*b1cdbd2cSJim Jagielski 		   ( mbSet == ((MetaOverlineColorAction&)rMetaAction).mbSet );
3364*b1cdbd2cSJim Jagielski }
3365*b1cdbd2cSJim Jagielski 
3366*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3367*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3368*b1cdbd2cSJim Jagielski void MetaOverlineColorAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3369*b1cdbd2cSJim Jagielski {
3370*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3371*b1cdbd2cSJim Jagielski 	maColor.Write( rOStm, sal_True );
3372*b1cdbd2cSJim Jagielski 	rOStm << mbSet;
3373*b1cdbd2cSJim Jagielski }
3374*b1cdbd2cSJim Jagielski 
3375*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3376*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3377*b1cdbd2cSJim Jagielski void MetaOverlineColorAction::Read( SvStream& rIStm, ImplMetaReadData* )
3378*b1cdbd2cSJim Jagielski {
3379*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3380*b1cdbd2cSJim Jagielski 	maColor.Read( rIStm, sal_True );
3381*b1cdbd2cSJim Jagielski 	rIStm >> mbSet;
3382*b1cdbd2cSJim Jagielski }
3383*b1cdbd2cSJim Jagielski 
3384*b1cdbd2cSJim Jagielski // ========================================================================
3385*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextAlign,META_TEXTALIGN_ACTION)3386*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextAlign, META_TEXTALIGN_ACTION )
3387*b1cdbd2cSJim Jagielski 
3388*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3389*b1cdbd2cSJim Jagielski 
3390*b1cdbd2cSJim Jagielski MetaTextAlignAction::MetaTextAlignAction( TextAlign aAlign ) :
3391*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTALIGN_ACTION ),
3392*b1cdbd2cSJim Jagielski 	maAlign 	( aAlign )
3393*b1cdbd2cSJim Jagielski {
3394*b1cdbd2cSJim Jagielski }
3395*b1cdbd2cSJim Jagielski 
3396*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3397*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3398*b1cdbd2cSJim Jagielski void MetaTextAlignAction::Execute( OutputDevice* pOut )
3399*b1cdbd2cSJim Jagielski {
3400*b1cdbd2cSJim Jagielski 	pOut->SetTextAlign( maAlign );
3401*b1cdbd2cSJim Jagielski }
3402*b1cdbd2cSJim Jagielski 
3403*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3404*b1cdbd2cSJim Jagielski 
Clone()3405*b1cdbd2cSJim Jagielski MetaAction* MetaTextAlignAction::Clone()
3406*b1cdbd2cSJim Jagielski {
3407*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextAlignAction( *this );
3408*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3409*b1cdbd2cSJim Jagielski 	return pClone;
3410*b1cdbd2cSJim Jagielski }
3411*b1cdbd2cSJim Jagielski 
3412*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3413*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3414*b1cdbd2cSJim Jagielski sal_Bool MetaTextAlignAction::Compare( const MetaAction& rMetaAction ) const
3415*b1cdbd2cSJim Jagielski {
3416*b1cdbd2cSJim Jagielski 	return maAlign == ((MetaTextAlignAction&)rMetaAction).maAlign;
3417*b1cdbd2cSJim Jagielski }
3418*b1cdbd2cSJim Jagielski 
3419*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3420*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3421*b1cdbd2cSJim Jagielski void MetaTextAlignAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3422*b1cdbd2cSJim Jagielski {
3423*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3424*b1cdbd2cSJim Jagielski 	rOStm << (sal_uInt16) maAlign;
3425*b1cdbd2cSJim Jagielski }
3426*b1cdbd2cSJim Jagielski 
3427*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3428*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3429*b1cdbd2cSJim Jagielski void MetaTextAlignAction::Read( SvStream& rIStm, ImplMetaReadData* )
3430*b1cdbd2cSJim Jagielski {
3431*b1cdbd2cSJim Jagielski 	sal_uInt16 nTmp16;
3432*b1cdbd2cSJim Jagielski 
3433*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3434*b1cdbd2cSJim Jagielski 	rIStm >> nTmp16; maAlign = (TextAlign) nTmp16;
3435*b1cdbd2cSJim Jagielski }
3436*b1cdbd2cSJim Jagielski 
3437*b1cdbd2cSJim Jagielski // ========================================================================
3438*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(MapMode,META_MAPMODE_ACTION)3439*b1cdbd2cSJim Jagielski IMPL_META_ACTION( MapMode, META_MAPMODE_ACTION )
3440*b1cdbd2cSJim Jagielski 
3441*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3442*b1cdbd2cSJim Jagielski 
3443*b1cdbd2cSJim Jagielski MetaMapModeAction::MetaMapModeAction( const MapMode& rMapMode ) :
3444*b1cdbd2cSJim Jagielski 	MetaAction	( META_MAPMODE_ACTION ),
3445*b1cdbd2cSJim Jagielski 	maMapMode	( rMapMode )
3446*b1cdbd2cSJim Jagielski {
3447*b1cdbd2cSJim Jagielski }
3448*b1cdbd2cSJim Jagielski 
3449*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3450*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3451*b1cdbd2cSJim Jagielski void MetaMapModeAction::Execute( OutputDevice* pOut )
3452*b1cdbd2cSJim Jagielski {
3453*b1cdbd2cSJim Jagielski 	pOut->SetMapMode( maMapMode );
3454*b1cdbd2cSJim Jagielski }
3455*b1cdbd2cSJim Jagielski 
3456*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3457*b1cdbd2cSJim Jagielski 
Clone()3458*b1cdbd2cSJim Jagielski MetaAction* MetaMapModeAction::Clone()
3459*b1cdbd2cSJim Jagielski {
3460*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaMapModeAction( *this );
3461*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3462*b1cdbd2cSJim Jagielski 	return pClone;
3463*b1cdbd2cSJim Jagielski }
3464*b1cdbd2cSJim Jagielski 
3465*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3466*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)3467*b1cdbd2cSJim Jagielski void MetaMapModeAction::Scale( double fScaleX, double fScaleY )
3468*b1cdbd2cSJim Jagielski {
3469*b1cdbd2cSJim Jagielski 	Point aPoint( maMapMode.GetOrigin() );
3470*b1cdbd2cSJim Jagielski 
3471*b1cdbd2cSJim Jagielski 	ImplScalePoint( aPoint, fScaleX, fScaleY );
3472*b1cdbd2cSJim Jagielski 	maMapMode.SetOrigin( aPoint );
3473*b1cdbd2cSJim Jagielski }
3474*b1cdbd2cSJim Jagielski 
3475*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3476*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3477*b1cdbd2cSJim Jagielski sal_Bool MetaMapModeAction::Compare( const MetaAction& rMetaAction ) const
3478*b1cdbd2cSJim Jagielski {
3479*b1cdbd2cSJim Jagielski 	return maMapMode == ((MetaMapModeAction&)rMetaAction).maMapMode;
3480*b1cdbd2cSJim Jagielski }
3481*b1cdbd2cSJim Jagielski 
3482*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3483*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3484*b1cdbd2cSJim Jagielski void MetaMapModeAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3485*b1cdbd2cSJim Jagielski {
3486*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3487*b1cdbd2cSJim Jagielski 	rOStm << maMapMode;
3488*b1cdbd2cSJim Jagielski }
3489*b1cdbd2cSJim Jagielski 
3490*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3491*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3492*b1cdbd2cSJim Jagielski void MetaMapModeAction::Read( SvStream& rIStm, ImplMetaReadData* )
3493*b1cdbd2cSJim Jagielski {
3494*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3495*b1cdbd2cSJim Jagielski 	rIStm >> maMapMode;
3496*b1cdbd2cSJim Jagielski }
3497*b1cdbd2cSJim Jagielski 
3498*b1cdbd2cSJim Jagielski // ========================================================================
3499*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Font,META_FONT_ACTION)3500*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Font, META_FONT_ACTION )
3501*b1cdbd2cSJim Jagielski 
3502*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3503*b1cdbd2cSJim Jagielski 
3504*b1cdbd2cSJim Jagielski MetaFontAction::MetaFontAction( const Font& rFont ) :
3505*b1cdbd2cSJim Jagielski 	MetaAction	( META_FONT_ACTION ),
3506*b1cdbd2cSJim Jagielski 	maFont		( rFont )
3507*b1cdbd2cSJim Jagielski {
3508*b1cdbd2cSJim Jagielski     // #96876: because RTL_TEXTENCODING_SYMBOL is often set at the StarSymbol font,
3509*b1cdbd2cSJim Jagielski     // we change the textencoding to RTL_TEXTENCODING_UNICODE here, which seems
3510*b1cdbd2cSJim Jagielski     // to be the right way; changing the textencoding at other sources
3511*b1cdbd2cSJim Jagielski     // is too dangerous at the moment
3512*b1cdbd2cSJim Jagielski     if( ( ( maFont.GetName().SearchAscii( "StarSymbol" ) != STRING_NOTFOUND )
3513*b1cdbd2cSJim Jagielski        || ( maFont.GetName().SearchAscii( "OpenSymbol" ) != STRING_NOTFOUND ) )
3514*b1cdbd2cSJim Jagielski      && ( maFont.GetCharSet() != RTL_TEXTENCODING_UNICODE ) )
3515*b1cdbd2cSJim Jagielski     {
3516*b1cdbd2cSJim Jagielski         maFont.SetCharSet( RTL_TEXTENCODING_UNICODE );
3517*b1cdbd2cSJim Jagielski     }
3518*b1cdbd2cSJim Jagielski }
3519*b1cdbd2cSJim Jagielski 
3520*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3521*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3522*b1cdbd2cSJim Jagielski void MetaFontAction::Execute( OutputDevice* pOut )
3523*b1cdbd2cSJim Jagielski {
3524*b1cdbd2cSJim Jagielski 	pOut->SetFont( maFont );
3525*b1cdbd2cSJim Jagielski }
3526*b1cdbd2cSJim Jagielski 
3527*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3528*b1cdbd2cSJim Jagielski 
Clone()3529*b1cdbd2cSJim Jagielski MetaAction* MetaFontAction::Clone()
3530*b1cdbd2cSJim Jagielski {
3531*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaFontAction( *this );
3532*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3533*b1cdbd2cSJim Jagielski 	return pClone;
3534*b1cdbd2cSJim Jagielski }
3535*b1cdbd2cSJim Jagielski 
3536*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3537*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)3538*b1cdbd2cSJim Jagielski void MetaFontAction::Scale( double fScaleX, double fScaleY )
3539*b1cdbd2cSJim Jagielski {
3540*b1cdbd2cSJim Jagielski 	const Size aSize(
3541*b1cdbd2cSJim Jagielski         FRound(maFont.GetSize().Width() * fabs(fScaleX)),
3542*b1cdbd2cSJim Jagielski         FRound(maFont.GetSize().Height() * fabs(fScaleY)));
3543*b1cdbd2cSJim Jagielski 	maFont.SetSize( aSize );
3544*b1cdbd2cSJim Jagielski }
3545*b1cdbd2cSJim Jagielski 
3546*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3547*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3548*b1cdbd2cSJim Jagielski sal_Bool MetaFontAction::Compare( const MetaAction& rMetaAction ) const
3549*b1cdbd2cSJim Jagielski {
3550*b1cdbd2cSJim Jagielski 	return maFont == ((MetaFontAction&)rMetaAction).maFont;
3551*b1cdbd2cSJim Jagielski }
3552*b1cdbd2cSJim Jagielski 
3553*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3554*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3555*b1cdbd2cSJim Jagielski void MetaFontAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3556*b1cdbd2cSJim Jagielski {
3557*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3558*b1cdbd2cSJim Jagielski 	rOStm << maFont;
3559*b1cdbd2cSJim Jagielski 	pData->meActualCharSet = maFont.GetCharSet();
3560*b1cdbd2cSJim Jagielski 	if ( pData->meActualCharSet == RTL_TEXTENCODING_DONTKNOW )
3561*b1cdbd2cSJim Jagielski 		pData->meActualCharSet = gsl_getSystemTextEncoding();
3562*b1cdbd2cSJim Jagielski }
3563*b1cdbd2cSJim Jagielski 
3564*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3565*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData * pData)3566*b1cdbd2cSJim Jagielski void MetaFontAction::Read( SvStream& rIStm, ImplMetaReadData* pData )
3567*b1cdbd2cSJim Jagielski {
3568*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3569*b1cdbd2cSJim Jagielski 	rIStm >> maFont;
3570*b1cdbd2cSJim Jagielski 	pData->meActualCharSet = maFont.GetCharSet();
3571*b1cdbd2cSJim Jagielski 	if ( pData->meActualCharSet == RTL_TEXTENCODING_DONTKNOW )
3572*b1cdbd2cSJim Jagielski 		pData->meActualCharSet = gsl_getSystemTextEncoding();
3573*b1cdbd2cSJim Jagielski }
3574*b1cdbd2cSJim Jagielski 
3575*b1cdbd2cSJim Jagielski // ========================================================================
3576*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Push,META_PUSH_ACTION)3577*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Push, META_PUSH_ACTION )
3578*b1cdbd2cSJim Jagielski 
3579*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3580*b1cdbd2cSJim Jagielski 
3581*b1cdbd2cSJim Jagielski MetaPushAction::MetaPushAction( sal_uInt16 nFlags ) :
3582*b1cdbd2cSJim Jagielski 	MetaAction	( META_PUSH_ACTION ),
3583*b1cdbd2cSJim Jagielski 	mnFlags 	( nFlags )
3584*b1cdbd2cSJim Jagielski {
3585*b1cdbd2cSJim Jagielski }
3586*b1cdbd2cSJim Jagielski 
3587*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3588*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3589*b1cdbd2cSJim Jagielski void MetaPushAction::Execute( OutputDevice* pOut )
3590*b1cdbd2cSJim Jagielski {
3591*b1cdbd2cSJim Jagielski 	pOut->Push( mnFlags );
3592*b1cdbd2cSJim Jagielski }
3593*b1cdbd2cSJim Jagielski 
3594*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3595*b1cdbd2cSJim Jagielski 
Clone()3596*b1cdbd2cSJim Jagielski MetaAction* MetaPushAction::Clone()
3597*b1cdbd2cSJim Jagielski {
3598*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPushAction( *this );
3599*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3600*b1cdbd2cSJim Jagielski 	return pClone;
3601*b1cdbd2cSJim Jagielski }
3602*b1cdbd2cSJim Jagielski 
3603*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3604*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3605*b1cdbd2cSJim Jagielski sal_Bool MetaPushAction::Compare( const MetaAction& rMetaAction ) const
3606*b1cdbd2cSJim Jagielski {
3607*b1cdbd2cSJim Jagielski 	return mnFlags == ((MetaPushAction&)rMetaAction).mnFlags;
3608*b1cdbd2cSJim Jagielski }
3609*b1cdbd2cSJim Jagielski 
3610*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3611*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3612*b1cdbd2cSJim Jagielski void MetaPushAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3613*b1cdbd2cSJim Jagielski {
3614*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3615*b1cdbd2cSJim Jagielski 	rOStm << mnFlags;
3616*b1cdbd2cSJim Jagielski }
3617*b1cdbd2cSJim Jagielski 
3618*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3619*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3620*b1cdbd2cSJim Jagielski void MetaPushAction::Read( SvStream& rIStm, ImplMetaReadData* )
3621*b1cdbd2cSJim Jagielski {
3622*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3623*b1cdbd2cSJim Jagielski 	rIStm >> mnFlags;
3624*b1cdbd2cSJim Jagielski }
3625*b1cdbd2cSJim Jagielski 
3626*b1cdbd2cSJim Jagielski // ========================================================================
3627*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Pop,META_POP_ACTION)3628*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Pop, META_POP_ACTION )
3629*b1cdbd2cSJim Jagielski 
3630*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3631*b1cdbd2cSJim Jagielski 
3632*b1cdbd2cSJim Jagielski void MetaPopAction::Execute( OutputDevice* pOut )
3633*b1cdbd2cSJim Jagielski {
3634*b1cdbd2cSJim Jagielski 	pOut->Pop();
3635*b1cdbd2cSJim Jagielski }
3636*b1cdbd2cSJim Jagielski 
3637*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3638*b1cdbd2cSJim Jagielski 
Clone()3639*b1cdbd2cSJim Jagielski MetaAction* MetaPopAction::Clone()
3640*b1cdbd2cSJim Jagielski {
3641*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaPopAction( *this );
3642*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3643*b1cdbd2cSJim Jagielski 	return pClone;
3644*b1cdbd2cSJim Jagielski }
3645*b1cdbd2cSJim Jagielski 
3646*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3647*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3648*b1cdbd2cSJim Jagielski void MetaPopAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3649*b1cdbd2cSJim Jagielski {
3650*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3651*b1cdbd2cSJim Jagielski }
3652*b1cdbd2cSJim Jagielski 
3653*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3654*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3655*b1cdbd2cSJim Jagielski void MetaPopAction::Read( SvStream& rIStm, ImplMetaReadData* )
3656*b1cdbd2cSJim Jagielski {
3657*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3658*b1cdbd2cSJim Jagielski }
3659*b1cdbd2cSJim Jagielski 
3660*b1cdbd2cSJim Jagielski // ========================================================================
3661*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(RasterOp,META_RASTEROP_ACTION)3662*b1cdbd2cSJim Jagielski IMPL_META_ACTION( RasterOp, META_RASTEROP_ACTION )
3663*b1cdbd2cSJim Jagielski 
3664*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3665*b1cdbd2cSJim Jagielski 
3666*b1cdbd2cSJim Jagielski MetaRasterOpAction::MetaRasterOpAction( RasterOp eRasterOp ) :
3667*b1cdbd2cSJim Jagielski 	MetaAction	( META_RASTEROP_ACTION ),
3668*b1cdbd2cSJim Jagielski 	meRasterOp	( eRasterOp )
3669*b1cdbd2cSJim Jagielski {
3670*b1cdbd2cSJim Jagielski }
3671*b1cdbd2cSJim Jagielski 
3672*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3673*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3674*b1cdbd2cSJim Jagielski void MetaRasterOpAction::Execute( OutputDevice* pOut )
3675*b1cdbd2cSJim Jagielski {
3676*b1cdbd2cSJim Jagielski 	pOut->SetRasterOp( meRasterOp );
3677*b1cdbd2cSJim Jagielski }
3678*b1cdbd2cSJim Jagielski 
3679*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3680*b1cdbd2cSJim Jagielski 
Clone()3681*b1cdbd2cSJim Jagielski MetaAction* MetaRasterOpAction::Clone()
3682*b1cdbd2cSJim Jagielski {
3683*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaRasterOpAction( *this );
3684*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3685*b1cdbd2cSJim Jagielski 	return pClone;
3686*b1cdbd2cSJim Jagielski }
3687*b1cdbd2cSJim Jagielski 
3688*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3689*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3690*b1cdbd2cSJim Jagielski sal_Bool MetaRasterOpAction::Compare( const MetaAction& rMetaAction ) const
3691*b1cdbd2cSJim Jagielski {
3692*b1cdbd2cSJim Jagielski 	return meRasterOp == ((MetaRasterOpAction&)rMetaAction).meRasterOp;
3693*b1cdbd2cSJim Jagielski }
3694*b1cdbd2cSJim Jagielski 
3695*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3696*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3697*b1cdbd2cSJim Jagielski void MetaRasterOpAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3698*b1cdbd2cSJim Jagielski {
3699*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3700*b1cdbd2cSJim Jagielski 	rOStm << (sal_uInt16) meRasterOp;
3701*b1cdbd2cSJim Jagielski }
3702*b1cdbd2cSJim Jagielski 
3703*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3704*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3705*b1cdbd2cSJim Jagielski void MetaRasterOpAction::Read( SvStream& rIStm, ImplMetaReadData* )
3706*b1cdbd2cSJim Jagielski {
3707*b1cdbd2cSJim Jagielski 	sal_uInt16 nTmp16;
3708*b1cdbd2cSJim Jagielski 
3709*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3710*b1cdbd2cSJim Jagielski 	rIStm >> nTmp16; meRasterOp = (RasterOp) nTmp16;
3711*b1cdbd2cSJim Jagielski }
3712*b1cdbd2cSJim Jagielski 
3713*b1cdbd2cSJim Jagielski // ========================================================================
3714*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(Transparent,META_TRANSPARENT_ACTION)3715*b1cdbd2cSJim Jagielski IMPL_META_ACTION( Transparent, META_TRANSPARENT_ACTION )
3716*b1cdbd2cSJim Jagielski 
3717*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3718*b1cdbd2cSJim Jagielski 
3719*b1cdbd2cSJim Jagielski MetaTransparentAction::MetaTransparentAction( const PolyPolygon& rPolyPoly, sal_uInt16 nTransPercent ) :
3720*b1cdbd2cSJim Jagielski 	MetaAction		( META_TRANSPARENT_ACTION ),
3721*b1cdbd2cSJim Jagielski 	maPolyPoly		( rPolyPoly ),
3722*b1cdbd2cSJim Jagielski 	mnTransPercent	( nTransPercent )
3723*b1cdbd2cSJim Jagielski {
3724*b1cdbd2cSJim Jagielski }
3725*b1cdbd2cSJim Jagielski 
3726*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3727*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3728*b1cdbd2cSJim Jagielski void MetaTransparentAction::Execute( OutputDevice* pOut )
3729*b1cdbd2cSJim Jagielski {
3730*b1cdbd2cSJim Jagielski 	pOut->DrawTransparent( maPolyPoly, mnTransPercent );
3731*b1cdbd2cSJim Jagielski }
3732*b1cdbd2cSJim Jagielski 
3733*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3734*b1cdbd2cSJim Jagielski 
Clone()3735*b1cdbd2cSJim Jagielski MetaAction* MetaTransparentAction::Clone()
3736*b1cdbd2cSJim Jagielski {
3737*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTransparentAction( *this );
3738*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3739*b1cdbd2cSJim Jagielski 	return pClone;
3740*b1cdbd2cSJim Jagielski }
3741*b1cdbd2cSJim Jagielski 
3742*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3743*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)3744*b1cdbd2cSJim Jagielski void MetaTransparentAction::Move( long nHorzMove, long nVertMove )
3745*b1cdbd2cSJim Jagielski {
3746*b1cdbd2cSJim Jagielski 	maPolyPoly.Move( nHorzMove, nVertMove );
3747*b1cdbd2cSJim Jagielski }
3748*b1cdbd2cSJim Jagielski 
3749*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3750*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)3751*b1cdbd2cSJim Jagielski void MetaTransparentAction::Scale( double fScaleX, double fScaleY )
3752*b1cdbd2cSJim Jagielski {
3753*b1cdbd2cSJim Jagielski 	for( sal_uInt16 i = 0, nCount = maPolyPoly.Count(); i < nCount; i++ )
3754*b1cdbd2cSJim Jagielski 		ImplScalePoly( maPolyPoly[ i ], fScaleX, fScaleY );
3755*b1cdbd2cSJim Jagielski }
3756*b1cdbd2cSJim Jagielski 
3757*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3758*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3759*b1cdbd2cSJim Jagielski sal_Bool MetaTransparentAction::Compare( const MetaAction& rMetaAction ) const
3760*b1cdbd2cSJim Jagielski {
3761*b1cdbd2cSJim Jagielski 	return ( maPolyPoly == ((MetaTransparentAction&)rMetaAction).maPolyPoly ) &&
3762*b1cdbd2cSJim Jagielski 		   ( mnTransPercent == ((MetaTransparentAction&)rMetaAction).mnTransPercent );
3763*b1cdbd2cSJim Jagielski }
3764*b1cdbd2cSJim Jagielski 
3765*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3766*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3767*b1cdbd2cSJim Jagielski void MetaTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3768*b1cdbd2cSJim Jagielski {
3769*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3770*b1cdbd2cSJim Jagielski 
3771*b1cdbd2cSJim Jagielski     // #i105373# The PolyPolygon in this action may be a curve; this
3772*b1cdbd2cSJim Jagielski     // was ignored until now what is an error. To make older office
3773*b1cdbd2cSJim Jagielski     // versions work with MetaFiles, i opt for applying AdaptiveSubdivide
3774*b1cdbd2cSJim Jagielski     // to the PolyPoylgon.
3775*b1cdbd2cSJim Jagielski     // The alternative would be to really write the curve information
3776*b1cdbd2cSJim Jagielski     // like in MetaPolyPolygonAction::Write (where someone extended it
3777*b1cdbd2cSJim Jagielski     // correctly, but not here :-( ).
3778*b1cdbd2cSJim Jagielski     // The golden solution would be to combine both, but i think it's
3779*b1cdbd2cSJim Jagielski     // not necessary; a good subdivision will be sufficient.
3780*b1cdbd2cSJim Jagielski     PolyPolygon aNoCurvePolyPolygon;
3781*b1cdbd2cSJim Jagielski     maPolyPoly.AdaptiveSubdivide(aNoCurvePolyPolygon);
3782*b1cdbd2cSJim Jagielski 
3783*b1cdbd2cSJim Jagielski     rOStm << aNoCurvePolyPolygon;
3784*b1cdbd2cSJim Jagielski 	rOStm << mnTransPercent;
3785*b1cdbd2cSJim Jagielski }
3786*b1cdbd2cSJim Jagielski 
3787*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3788*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3789*b1cdbd2cSJim Jagielski void MetaTransparentAction::Read( SvStream& rIStm, ImplMetaReadData* )
3790*b1cdbd2cSJim Jagielski {
3791*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3792*b1cdbd2cSJim Jagielski 	rIStm >> maPolyPoly;
3793*b1cdbd2cSJim Jagielski 	rIStm >> mnTransPercent;
3794*b1cdbd2cSJim Jagielski }
3795*b1cdbd2cSJim Jagielski 
3796*b1cdbd2cSJim Jagielski // ========================================================================
3797*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(FloatTransparent,META_FLOATTRANSPARENT_ACTION)3798*b1cdbd2cSJim Jagielski IMPL_META_ACTION( FloatTransparent, META_FLOATTRANSPARENT_ACTION )
3799*b1cdbd2cSJim Jagielski 
3800*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3801*b1cdbd2cSJim Jagielski 
3802*b1cdbd2cSJim Jagielski MetaFloatTransparentAction::MetaFloatTransparentAction( const GDIMetaFile& rMtf, const Point& rPos,
3803*b1cdbd2cSJim Jagielski 														const Size& rSize, const Gradient& rGradient ) :
3804*b1cdbd2cSJim Jagielski 	MetaAction		( META_FLOATTRANSPARENT_ACTION ),
3805*b1cdbd2cSJim Jagielski 	maMtf			( rMtf ),
3806*b1cdbd2cSJim Jagielski 	maPoint 		( rPos ),
3807*b1cdbd2cSJim Jagielski 	maSize			( rSize ),
3808*b1cdbd2cSJim Jagielski 	maGradient		( rGradient )
3809*b1cdbd2cSJim Jagielski {
3810*b1cdbd2cSJim Jagielski }
3811*b1cdbd2cSJim Jagielski 
3812*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3813*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3814*b1cdbd2cSJim Jagielski void MetaFloatTransparentAction::Execute( OutputDevice* pOut )
3815*b1cdbd2cSJim Jagielski {
3816*b1cdbd2cSJim Jagielski 	pOut->DrawTransparent( maMtf, maPoint, maSize, maGradient );
3817*b1cdbd2cSJim Jagielski }
3818*b1cdbd2cSJim Jagielski 
3819*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3820*b1cdbd2cSJim Jagielski 
Clone()3821*b1cdbd2cSJim Jagielski MetaAction* MetaFloatTransparentAction::Clone()
3822*b1cdbd2cSJim Jagielski {
3823*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaFloatTransparentAction( *this );
3824*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3825*b1cdbd2cSJim Jagielski 	return pClone;
3826*b1cdbd2cSJim Jagielski }
3827*b1cdbd2cSJim Jagielski 
3828*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3829*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)3830*b1cdbd2cSJim Jagielski void MetaFloatTransparentAction::Move( long nHorzMove, long nVertMove )
3831*b1cdbd2cSJim Jagielski {
3832*b1cdbd2cSJim Jagielski 	maPoint.Move( nHorzMove, nVertMove );
3833*b1cdbd2cSJim Jagielski }
3834*b1cdbd2cSJim Jagielski 
3835*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3836*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)3837*b1cdbd2cSJim Jagielski void MetaFloatTransparentAction::Scale( double fScaleX, double fScaleY )
3838*b1cdbd2cSJim Jagielski {
3839*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maPoint, maSize);
3840*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
3841*b1cdbd2cSJim Jagielski     maPoint = aRectangle.TopLeft();
3842*b1cdbd2cSJim Jagielski     maSize = aRectangle.GetSize();
3843*b1cdbd2cSJim Jagielski }
3844*b1cdbd2cSJim Jagielski 
3845*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3846*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3847*b1cdbd2cSJim Jagielski sal_Bool MetaFloatTransparentAction::Compare( const MetaAction& rMetaAction ) const
3848*b1cdbd2cSJim Jagielski {
3849*b1cdbd2cSJim Jagielski 	return ( maMtf == ((MetaFloatTransparentAction&)rMetaAction).maMtf ) &&
3850*b1cdbd2cSJim Jagielski 		   ( maPoint == ((MetaFloatTransparentAction&)rMetaAction).maPoint ) &&
3851*b1cdbd2cSJim Jagielski 		   ( maSize == ((MetaFloatTransparentAction&)rMetaAction).maSize ) &&
3852*b1cdbd2cSJim Jagielski 		   ( maGradient == ((MetaFloatTransparentAction&)rMetaAction).maGradient );
3853*b1cdbd2cSJim Jagielski }
3854*b1cdbd2cSJim Jagielski 
3855*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3856*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3857*b1cdbd2cSJim Jagielski void MetaFloatTransparentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3858*b1cdbd2cSJim Jagielski {
3859*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3860*b1cdbd2cSJim Jagielski 
3861*b1cdbd2cSJim Jagielski 	maMtf.Write( rOStm );
3862*b1cdbd2cSJim Jagielski 	rOStm << maPoint << maSize << maGradient;
3863*b1cdbd2cSJim Jagielski }
3864*b1cdbd2cSJim Jagielski 
3865*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3866*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3867*b1cdbd2cSJim Jagielski void MetaFloatTransparentAction::Read( SvStream& rIStm, ImplMetaReadData* )
3868*b1cdbd2cSJim Jagielski {
3869*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3870*b1cdbd2cSJim Jagielski 	rIStm >> maMtf >> maPoint >> maSize >> maGradient;
3871*b1cdbd2cSJim Jagielski }
3872*b1cdbd2cSJim Jagielski 
3873*b1cdbd2cSJim Jagielski // ========================================================================
3874*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(EPS,META_EPS_ACTION)3875*b1cdbd2cSJim Jagielski IMPL_META_ACTION( EPS, META_EPS_ACTION )
3876*b1cdbd2cSJim Jagielski 
3877*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3878*b1cdbd2cSJim Jagielski 
3879*b1cdbd2cSJim Jagielski MetaEPSAction::MetaEPSAction( const Point& rPoint, const Size& rSize,
3880*b1cdbd2cSJim Jagielski 							  const GfxLink& rGfxLink, const GDIMetaFile& rSubst ) :
3881*b1cdbd2cSJim Jagielski 	MetaAction	( META_EPS_ACTION ),
3882*b1cdbd2cSJim Jagielski 	maGfxLink	( rGfxLink ),
3883*b1cdbd2cSJim Jagielski 	maSubst 	( rSubst ),
3884*b1cdbd2cSJim Jagielski 	maPoint 	( rPoint ),
3885*b1cdbd2cSJim Jagielski 	maSize		( rSize )
3886*b1cdbd2cSJim Jagielski {
3887*b1cdbd2cSJim Jagielski }
3888*b1cdbd2cSJim Jagielski 
3889*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3890*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3891*b1cdbd2cSJim Jagielski void MetaEPSAction::Execute( OutputDevice* pOut )
3892*b1cdbd2cSJim Jagielski {
3893*b1cdbd2cSJim Jagielski 	pOut->DrawEPS( maPoint, maSize, maGfxLink, &maSubst );
3894*b1cdbd2cSJim Jagielski }
3895*b1cdbd2cSJim Jagielski 
3896*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3897*b1cdbd2cSJim Jagielski 
Clone()3898*b1cdbd2cSJim Jagielski MetaAction* MetaEPSAction::Clone()
3899*b1cdbd2cSJim Jagielski {
3900*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaEPSAction( *this );
3901*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3902*b1cdbd2cSJim Jagielski 	return pClone;
3903*b1cdbd2cSJim Jagielski }
3904*b1cdbd2cSJim Jagielski 
3905*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3906*b1cdbd2cSJim Jagielski 
Move(long nHorzMove,long nVertMove)3907*b1cdbd2cSJim Jagielski void MetaEPSAction::Move( long nHorzMove, long nVertMove )
3908*b1cdbd2cSJim Jagielski {
3909*b1cdbd2cSJim Jagielski 	maPoint.Move( nHorzMove, nVertMove );
3910*b1cdbd2cSJim Jagielski }
3911*b1cdbd2cSJim Jagielski 
3912*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3913*b1cdbd2cSJim Jagielski 
Scale(double fScaleX,double fScaleY)3914*b1cdbd2cSJim Jagielski void MetaEPSAction::Scale( double fScaleX, double fScaleY )
3915*b1cdbd2cSJim Jagielski {
3916*b1cdbd2cSJim Jagielski     Rectangle aRectangle(maPoint, maSize);
3917*b1cdbd2cSJim Jagielski 	ImplScaleRect( aRectangle, fScaleX, fScaleY );
3918*b1cdbd2cSJim Jagielski     maPoint = aRectangle.TopLeft();
3919*b1cdbd2cSJim Jagielski     maSize = aRectangle.GetSize();
3920*b1cdbd2cSJim Jagielski }
3921*b1cdbd2cSJim Jagielski 
3922*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3923*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3924*b1cdbd2cSJim Jagielski sal_Bool MetaEPSAction::Compare( const MetaAction& rMetaAction ) const
3925*b1cdbd2cSJim Jagielski {
3926*b1cdbd2cSJim Jagielski 	return ( maGfxLink.IsEqual(((MetaEPSAction&)rMetaAction).maGfxLink )) &&
3927*b1cdbd2cSJim Jagielski 		   ( maSubst == ((MetaEPSAction&)rMetaAction).maSubst ) &&
3928*b1cdbd2cSJim Jagielski 		   ( maPoint == ((MetaEPSAction&)rMetaAction).maPoint ) &&
3929*b1cdbd2cSJim Jagielski 		   ( maSize == ((MetaEPSAction&)rMetaAction).maSize );
3930*b1cdbd2cSJim Jagielski }
3931*b1cdbd2cSJim Jagielski 
3932*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3933*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3934*b1cdbd2cSJim Jagielski void MetaEPSAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3935*b1cdbd2cSJim Jagielski {
3936*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3937*b1cdbd2cSJim Jagielski 	rOStm << maGfxLink;
3938*b1cdbd2cSJim Jagielski 	rOStm << maPoint;
3939*b1cdbd2cSJim Jagielski 	rOStm << maSize;
3940*b1cdbd2cSJim Jagielski 	maSubst.Write( rOStm );
3941*b1cdbd2cSJim Jagielski }
3942*b1cdbd2cSJim Jagielski 
3943*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3944*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)3945*b1cdbd2cSJim Jagielski void MetaEPSAction::Read( SvStream& rIStm, ImplMetaReadData* )
3946*b1cdbd2cSJim Jagielski {
3947*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
3948*b1cdbd2cSJim Jagielski 	rIStm >> maGfxLink;
3949*b1cdbd2cSJim Jagielski 	rIStm >> maPoint;
3950*b1cdbd2cSJim Jagielski 	rIStm >> maSize;
3951*b1cdbd2cSJim Jagielski 	rIStm >> maSubst;
3952*b1cdbd2cSJim Jagielski }
3953*b1cdbd2cSJim Jagielski 
3954*b1cdbd2cSJim Jagielski // ========================================================================
3955*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(RefPoint,META_REFPOINT_ACTION)3956*b1cdbd2cSJim Jagielski IMPL_META_ACTION( RefPoint, META_REFPOINT_ACTION )
3957*b1cdbd2cSJim Jagielski 
3958*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3959*b1cdbd2cSJim Jagielski 
3960*b1cdbd2cSJim Jagielski MetaRefPointAction::MetaRefPointAction( const Point& rRefPoint, sal_Bool bSet ) :
3961*b1cdbd2cSJim Jagielski 	MetaAction	( META_REFPOINT_ACTION ),
3962*b1cdbd2cSJim Jagielski 	maRefPoint	( rRefPoint ),
3963*b1cdbd2cSJim Jagielski 	mbSet		( bSet )
3964*b1cdbd2cSJim Jagielski {
3965*b1cdbd2cSJim Jagielski }
3966*b1cdbd2cSJim Jagielski 
3967*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3968*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)3969*b1cdbd2cSJim Jagielski void MetaRefPointAction::Execute( OutputDevice* pOut )
3970*b1cdbd2cSJim Jagielski {
3971*b1cdbd2cSJim Jagielski 	if( mbSet )
3972*b1cdbd2cSJim Jagielski 		pOut->SetRefPoint( maRefPoint );
3973*b1cdbd2cSJim Jagielski 	else
3974*b1cdbd2cSJim Jagielski 		pOut->SetRefPoint();
3975*b1cdbd2cSJim Jagielski }
3976*b1cdbd2cSJim Jagielski 
3977*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3978*b1cdbd2cSJim Jagielski 
Clone()3979*b1cdbd2cSJim Jagielski MetaAction* MetaRefPointAction::Clone()
3980*b1cdbd2cSJim Jagielski {
3981*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaRefPointAction( *this );
3982*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
3983*b1cdbd2cSJim Jagielski 	return pClone;
3984*b1cdbd2cSJim Jagielski }
3985*b1cdbd2cSJim Jagielski 
3986*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3987*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const3988*b1cdbd2cSJim Jagielski sal_Bool MetaRefPointAction::Compare( const MetaAction& rMetaAction ) const
3989*b1cdbd2cSJim Jagielski {
3990*b1cdbd2cSJim Jagielski 	return ( maRefPoint == ((MetaRefPointAction&)rMetaAction).maRefPoint ) &&
3991*b1cdbd2cSJim Jagielski 		   ( mbSet == ((MetaRefPointAction&)rMetaAction).mbSet );
3992*b1cdbd2cSJim Jagielski }
3993*b1cdbd2cSJim Jagielski 
3994*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
3995*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)3996*b1cdbd2cSJim Jagielski void MetaRefPointAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
3997*b1cdbd2cSJim Jagielski {
3998*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
3999*b1cdbd2cSJim Jagielski 	rOStm << maRefPoint << mbSet;
4000*b1cdbd2cSJim Jagielski }
4001*b1cdbd2cSJim Jagielski 
4002*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4003*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)4004*b1cdbd2cSJim Jagielski void MetaRefPointAction::Read( SvStream& rIStm, ImplMetaReadData* )
4005*b1cdbd2cSJim Jagielski {
4006*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
4007*b1cdbd2cSJim Jagielski 	rIStm >> maRefPoint >> mbSet;
4008*b1cdbd2cSJim Jagielski }
4009*b1cdbd2cSJim Jagielski 
4010*b1cdbd2cSJim Jagielski // ========================================================================
4011*b1cdbd2cSJim Jagielski 
MetaCommentAction(sal_Int32 nValue)4012*b1cdbd2cSJim Jagielski MetaCommentAction::MetaCommentAction( sal_Int32 nValue ) :
4013*b1cdbd2cSJim Jagielski 	MetaAction	( META_COMMENT_ACTION ),
4014*b1cdbd2cSJim Jagielski 	mnValue 	( nValue )
4015*b1cdbd2cSJim Jagielski {
4016*b1cdbd2cSJim Jagielski 	ImplInitDynamicData( NULL, 0UL );
4017*b1cdbd2cSJim Jagielski }
4018*b1cdbd2cSJim Jagielski 
4019*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4020*b1cdbd2cSJim Jagielski 
MetaCommentAction(const MetaCommentAction & rAct)4021*b1cdbd2cSJim Jagielski MetaCommentAction::MetaCommentAction( const MetaCommentAction& rAct ) :
4022*b1cdbd2cSJim Jagielski 	MetaAction	( META_COMMENT_ACTION ),
4023*b1cdbd2cSJim Jagielski 	maComment	( rAct.maComment ),
4024*b1cdbd2cSJim Jagielski 	mnValue 	( rAct.mnValue )
4025*b1cdbd2cSJim Jagielski {
4026*b1cdbd2cSJim Jagielski 	ImplInitDynamicData( rAct.mpData, rAct.mnDataSize );
4027*b1cdbd2cSJim Jagielski }
4028*b1cdbd2cSJim Jagielski 
4029*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4030*b1cdbd2cSJim Jagielski 
MetaCommentAction(const ByteString & rComment,sal_Int32 nValue,const sal_uInt8 * pData,sal_uInt32 nDataSize)4031*b1cdbd2cSJim Jagielski MetaCommentAction::MetaCommentAction( const ByteString& rComment, sal_Int32 nValue, const sal_uInt8* pData, sal_uInt32 nDataSize ) :
4032*b1cdbd2cSJim Jagielski 	MetaAction	( META_COMMENT_ACTION ),
4033*b1cdbd2cSJim Jagielski 	maComment	( rComment ),
4034*b1cdbd2cSJim Jagielski 	mnValue 	( nValue )
4035*b1cdbd2cSJim Jagielski {
4036*b1cdbd2cSJim Jagielski 	ImplInitDynamicData( pData, nDataSize );
4037*b1cdbd2cSJim Jagielski }
4038*b1cdbd2cSJim Jagielski 
4039*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4040*b1cdbd2cSJim Jagielski 
MetaCommentAction(const sal_uInt8 * pData,sal_uInt32 nDataSize)4041*b1cdbd2cSJim Jagielski MetaCommentAction::MetaCommentAction( const sal_uInt8* pData, sal_uInt32 nDataSize ) :
4042*b1cdbd2cSJim Jagielski 	MetaAction	( META_COMMENT_ACTION ),
4043*b1cdbd2cSJim Jagielski 	mnValue 	( 0L )
4044*b1cdbd2cSJim Jagielski {
4045*b1cdbd2cSJim Jagielski 	ImplInitDynamicData( pData, nDataSize );
4046*b1cdbd2cSJim Jagielski }
4047*b1cdbd2cSJim Jagielski 
4048*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4049*b1cdbd2cSJim Jagielski 
~MetaCommentAction()4050*b1cdbd2cSJim Jagielski MetaCommentAction::~MetaCommentAction()
4051*b1cdbd2cSJim Jagielski {
4052*b1cdbd2cSJim Jagielski 	if ( mpData )
4053*b1cdbd2cSJim Jagielski 		delete[] mpData;
4054*b1cdbd2cSJim Jagielski }
4055*b1cdbd2cSJim Jagielski 
4056*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4057*b1cdbd2cSJim Jagielski 
ImplInitDynamicData(const sal_uInt8 * pData,sal_uInt32 nDataSize)4058*b1cdbd2cSJim Jagielski void MetaCommentAction::ImplInitDynamicData( const sal_uInt8* pData, sal_uInt32 nDataSize )
4059*b1cdbd2cSJim Jagielski {
4060*b1cdbd2cSJim Jagielski 	if ( nDataSize && pData )
4061*b1cdbd2cSJim Jagielski 	{
4062*b1cdbd2cSJim Jagielski 		mnDataSize = nDataSize, mpData = new sal_uInt8[ mnDataSize ];
4063*b1cdbd2cSJim Jagielski 		memcpy( mpData, pData, mnDataSize );
4064*b1cdbd2cSJim Jagielski 	}
4065*b1cdbd2cSJim Jagielski 	else
4066*b1cdbd2cSJim Jagielski 	{
4067*b1cdbd2cSJim Jagielski 		mnDataSize = 0;
4068*b1cdbd2cSJim Jagielski 		mpData = NULL;
4069*b1cdbd2cSJim Jagielski 	}
4070*b1cdbd2cSJim Jagielski }
4071*b1cdbd2cSJim Jagielski 
4072*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4073*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)4074*b1cdbd2cSJim Jagielski void MetaCommentAction::Execute( OutputDevice* pOut )
4075*b1cdbd2cSJim Jagielski {
4076*b1cdbd2cSJim Jagielski 	if ( pOut->GetConnectMetaFile() )
4077*b1cdbd2cSJim Jagielski     {
4078*b1cdbd2cSJim Jagielski         Duplicate();
4079*b1cdbd2cSJim Jagielski 		pOut->GetConnectMetaFile()->AddAction( this );
4080*b1cdbd2cSJim Jagielski     }
4081*b1cdbd2cSJim Jagielski }
4082*b1cdbd2cSJim Jagielski 
4083*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4084*b1cdbd2cSJim Jagielski 
Clone()4085*b1cdbd2cSJim Jagielski MetaAction* MetaCommentAction::Clone()
4086*b1cdbd2cSJim Jagielski {
4087*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaCommentAction( *this );
4088*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
4089*b1cdbd2cSJim Jagielski 	return pClone;
4090*b1cdbd2cSJim Jagielski }
4091*b1cdbd2cSJim Jagielski 
Move(long nXMove,long nYMove)4092*b1cdbd2cSJim Jagielski void MetaCommentAction::Move( long nXMove, long nYMove )
4093*b1cdbd2cSJim Jagielski {
4094*b1cdbd2cSJim Jagielski 	if ( nXMove || nYMove )
4095*b1cdbd2cSJim Jagielski 	{
4096*b1cdbd2cSJim Jagielski 		if ( mnDataSize && mpData )
4097*b1cdbd2cSJim Jagielski 		{
4098*b1cdbd2cSJim Jagielski 			sal_Bool bPathStroke = maComment.Equals( "XPATHSTROKE_SEQ_BEGIN" );
4099*b1cdbd2cSJim Jagielski 			if ( bPathStroke || maComment.Equals( "XPATHFILL_SEQ_BEGIN" ) )
4100*b1cdbd2cSJim Jagielski 			{
4101*b1cdbd2cSJim Jagielski 				SvMemoryStream	aMemStm( (void*)mpData, mnDataSize, STREAM_READ );
4102*b1cdbd2cSJim Jagielski 				SvMemoryStream	aDest;
4103*b1cdbd2cSJim Jagielski 				if ( bPathStroke )
4104*b1cdbd2cSJim Jagielski 				{
4105*b1cdbd2cSJim Jagielski 					SvtGraphicStroke aStroke;
4106*b1cdbd2cSJim Jagielski 					aMemStm >> aStroke;
4107*b1cdbd2cSJim Jagielski 
4108*b1cdbd2cSJim Jagielski                     Polygon aPath;
4109*b1cdbd2cSJim Jagielski 					aStroke.getPath( aPath );
4110*b1cdbd2cSJim Jagielski 					aPath.Move( nXMove, nYMove );
4111*b1cdbd2cSJim Jagielski 					aStroke.setPath( aPath );
4112*b1cdbd2cSJim Jagielski 
4113*b1cdbd2cSJim Jagielski                     PolyPolygon aStartArrow;
4114*b1cdbd2cSJim Jagielski                     aStroke.getStartArrow(aStartArrow);
4115*b1cdbd2cSJim Jagielski                     aStartArrow.Move(nXMove, nYMove);
4116*b1cdbd2cSJim Jagielski                     aStroke.setStartArrow(aStartArrow);
4117*b1cdbd2cSJim Jagielski 
4118*b1cdbd2cSJim Jagielski                     PolyPolygon aEndArrow;
4119*b1cdbd2cSJim Jagielski                     aStroke.getEndArrow(aEndArrow);
4120*b1cdbd2cSJim Jagielski                     aEndArrow.Move(nXMove, nYMove);
4121*b1cdbd2cSJim Jagielski                     aStroke.setEndArrow(aEndArrow);
4122*b1cdbd2cSJim Jagielski 
4123*b1cdbd2cSJim Jagielski 					aDest << aStroke;
4124*b1cdbd2cSJim Jagielski 				}
4125*b1cdbd2cSJim Jagielski 				else
4126*b1cdbd2cSJim Jagielski 				{
4127*b1cdbd2cSJim Jagielski 					SvtGraphicFill aFill;
4128*b1cdbd2cSJim Jagielski 					aMemStm >> aFill;
4129*b1cdbd2cSJim Jagielski 
4130*b1cdbd2cSJim Jagielski                     PolyPolygon aPath;
4131*b1cdbd2cSJim Jagielski 					aFill.getPath( aPath );
4132*b1cdbd2cSJim Jagielski 					aPath.Move( nXMove, nYMove );
4133*b1cdbd2cSJim Jagielski 					aFill.setPath( aPath );
4134*b1cdbd2cSJim Jagielski 
4135*b1cdbd2cSJim Jagielski 					aDest << aFill;
4136*b1cdbd2cSJim Jagielski 				}
4137*b1cdbd2cSJim Jagielski 				delete[] mpData;
4138*b1cdbd2cSJim Jagielski 				ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
4139*b1cdbd2cSJim Jagielski 			}
4140*b1cdbd2cSJim Jagielski 		}
4141*b1cdbd2cSJim Jagielski 	}
4142*b1cdbd2cSJim Jagielski }
4143*b1cdbd2cSJim Jagielski 
4144*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4145*b1cdbd2cSJim Jagielski // SJ: 25.07.06 #i56656# we are not able to mirrorcertain kind of
4146*b1cdbd2cSJim Jagielski // comments properly, especially the XPATHSTROKE and XPATHFILL lead to
4147*b1cdbd2cSJim Jagielski // problems, so it is better to remove these comments when mirroring
Scale(double fXScale,double fYScale)4148*b1cdbd2cSJim Jagielski void MetaCommentAction::Scale( double fXScale, double fYScale )
4149*b1cdbd2cSJim Jagielski {
4150*b1cdbd2cSJim Jagielski 	if ( ( fXScale != 1.0 ) || ( fYScale != 1.0 ) )
4151*b1cdbd2cSJim Jagielski 	{
4152*b1cdbd2cSJim Jagielski 		if ( mnDataSize && mpData )
4153*b1cdbd2cSJim Jagielski 		{
4154*b1cdbd2cSJim Jagielski 			sal_Bool bPathStroke = maComment.Equals( "XPATHSTROKE_SEQ_BEGIN" );
4155*b1cdbd2cSJim Jagielski 			if ( bPathStroke || maComment.Equals( "XPATHFILL_SEQ_BEGIN" ) )
4156*b1cdbd2cSJim Jagielski 			{
4157*b1cdbd2cSJim Jagielski 				SvMemoryStream	aMemStm( (void*)mpData, mnDataSize, STREAM_READ );
4158*b1cdbd2cSJim Jagielski 				SvMemoryStream	aDest;
4159*b1cdbd2cSJim Jagielski 				if ( bPathStroke )
4160*b1cdbd2cSJim Jagielski 				{
4161*b1cdbd2cSJim Jagielski 					SvtGraphicStroke aStroke;
4162*b1cdbd2cSJim Jagielski 					aMemStm >> aStroke;
4163*b1cdbd2cSJim Jagielski 					Polygon aPath;
4164*b1cdbd2cSJim Jagielski 					aStroke.getPath( aPath );
4165*b1cdbd2cSJim Jagielski 					aPath.Scale( fXScale, fYScale );
4166*b1cdbd2cSJim Jagielski 					aStroke.setPath( aPath );
4167*b1cdbd2cSJim Jagielski 					aDest << aStroke;
4168*b1cdbd2cSJim Jagielski 				}
4169*b1cdbd2cSJim Jagielski 				else
4170*b1cdbd2cSJim Jagielski 				{
4171*b1cdbd2cSJim Jagielski 					SvtGraphicFill aFill;
4172*b1cdbd2cSJim Jagielski 					aMemStm >> aFill;
4173*b1cdbd2cSJim Jagielski 					PolyPolygon aPath;
4174*b1cdbd2cSJim Jagielski 					aFill.getPath( aPath );
4175*b1cdbd2cSJim Jagielski 					aPath.Scale( fXScale, fYScale );
4176*b1cdbd2cSJim Jagielski 					aFill.setPath( aPath );
4177*b1cdbd2cSJim Jagielski 					aDest << aFill;
4178*b1cdbd2cSJim Jagielski 				}
4179*b1cdbd2cSJim Jagielski 				delete[] mpData;
4180*b1cdbd2cSJim Jagielski 				ImplInitDynamicData( static_cast<const sal_uInt8*>( aDest.GetData() ), aDest.Tell() );
4181*b1cdbd2cSJim Jagielski 			}
4182*b1cdbd2cSJim Jagielski 		}
4183*b1cdbd2cSJim Jagielski 	}
4184*b1cdbd2cSJim Jagielski }
4185*b1cdbd2cSJim Jagielski 
4186*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4187*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const4188*b1cdbd2cSJim Jagielski sal_Bool MetaCommentAction::Compare( const MetaAction& rMetaAction ) const
4189*b1cdbd2cSJim Jagielski {
4190*b1cdbd2cSJim Jagielski 	return ( maComment == ((MetaCommentAction&)rMetaAction).maComment ) &&
4191*b1cdbd2cSJim Jagielski 		   ( mnValue == ((MetaCommentAction&)rMetaAction).mnValue ) &&
4192*b1cdbd2cSJim Jagielski 		   ( mnDataSize == ((MetaCommentAction&)rMetaAction).mnDataSize ) &&
4193*b1cdbd2cSJim Jagielski 		   ( memcmp( mpData, ((MetaCommentAction&)rMetaAction).mpData, mnDataSize ) == 0 );
4194*b1cdbd2cSJim Jagielski }
4195*b1cdbd2cSJim Jagielski 
4196*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4197*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)4198*b1cdbd2cSJim Jagielski void MetaCommentAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
4199*b1cdbd2cSJim Jagielski {
4200*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
4201*b1cdbd2cSJim Jagielski 	rOStm << maComment << mnValue << mnDataSize;
4202*b1cdbd2cSJim Jagielski 
4203*b1cdbd2cSJim Jagielski 	if ( mnDataSize )
4204*b1cdbd2cSJim Jagielski 		rOStm.Write( mpData, mnDataSize );
4205*b1cdbd2cSJim Jagielski }
4206*b1cdbd2cSJim Jagielski 
4207*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4208*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)4209*b1cdbd2cSJim Jagielski void MetaCommentAction::Read( SvStream& rIStm, ImplMetaReadData* )
4210*b1cdbd2cSJim Jagielski {
4211*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
4212*b1cdbd2cSJim Jagielski 	rIStm >> maComment >> mnValue >> mnDataSize;
4213*b1cdbd2cSJim Jagielski 
4214*b1cdbd2cSJim Jagielski 	if( mpData )
4215*b1cdbd2cSJim Jagielski 		delete[] mpData;
4216*b1cdbd2cSJim Jagielski 
4217*b1cdbd2cSJim Jagielski 	if( mnDataSize )
4218*b1cdbd2cSJim Jagielski 	{
4219*b1cdbd2cSJim Jagielski 		mpData = new sal_uInt8[ mnDataSize ];
4220*b1cdbd2cSJim Jagielski 		rIStm.Read( mpData, mnDataSize );
4221*b1cdbd2cSJim Jagielski 	}
4222*b1cdbd2cSJim Jagielski 	else
4223*b1cdbd2cSJim Jagielski 		mpData = NULL;
4224*b1cdbd2cSJim Jagielski }
4225*b1cdbd2cSJim Jagielski 
4226*b1cdbd2cSJim Jagielski // ========================================================================
4227*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(LayoutMode,META_LAYOUTMODE_ACTION)4228*b1cdbd2cSJim Jagielski IMPL_META_ACTION( LayoutMode, META_LAYOUTMODE_ACTION )
4229*b1cdbd2cSJim Jagielski 
4230*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4231*b1cdbd2cSJim Jagielski 
4232*b1cdbd2cSJim Jagielski MetaLayoutModeAction::MetaLayoutModeAction( sal_uInt32 nLayoutMode ) :
4233*b1cdbd2cSJim Jagielski 	MetaAction	( META_LAYOUTMODE_ACTION ),
4234*b1cdbd2cSJim Jagielski 	mnLayoutMode( nLayoutMode )
4235*b1cdbd2cSJim Jagielski {
4236*b1cdbd2cSJim Jagielski }
4237*b1cdbd2cSJim Jagielski 
4238*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4239*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)4240*b1cdbd2cSJim Jagielski void MetaLayoutModeAction::Execute( OutputDevice* pOut )
4241*b1cdbd2cSJim Jagielski {
4242*b1cdbd2cSJim Jagielski 	pOut->SetLayoutMode( mnLayoutMode );
4243*b1cdbd2cSJim Jagielski }
4244*b1cdbd2cSJim Jagielski 
4245*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4246*b1cdbd2cSJim Jagielski 
Clone()4247*b1cdbd2cSJim Jagielski MetaAction* MetaLayoutModeAction::Clone()
4248*b1cdbd2cSJim Jagielski {
4249*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaLayoutModeAction( *this );
4250*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
4251*b1cdbd2cSJim Jagielski 	return pClone;
4252*b1cdbd2cSJim Jagielski }
4253*b1cdbd2cSJim Jagielski 
4254*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4255*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const4256*b1cdbd2cSJim Jagielski sal_Bool MetaLayoutModeAction::Compare( const MetaAction& rMetaAction ) const
4257*b1cdbd2cSJim Jagielski {
4258*b1cdbd2cSJim Jagielski 	return mnLayoutMode == ((MetaLayoutModeAction&)rMetaAction).mnLayoutMode;
4259*b1cdbd2cSJim Jagielski }
4260*b1cdbd2cSJim Jagielski 
4261*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4262*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)4263*b1cdbd2cSJim Jagielski void MetaLayoutModeAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
4264*b1cdbd2cSJim Jagielski {
4265*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
4266*b1cdbd2cSJim Jagielski 	rOStm << mnLayoutMode;
4267*b1cdbd2cSJim Jagielski }
4268*b1cdbd2cSJim Jagielski 
4269*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4270*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)4271*b1cdbd2cSJim Jagielski void MetaLayoutModeAction::Read( SvStream& rIStm, ImplMetaReadData* )
4272*b1cdbd2cSJim Jagielski {
4273*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
4274*b1cdbd2cSJim Jagielski 	rIStm >> mnLayoutMode;
4275*b1cdbd2cSJim Jagielski }
4276*b1cdbd2cSJim Jagielski 
4277*b1cdbd2cSJim Jagielski // ========================================================================
4278*b1cdbd2cSJim Jagielski 
IMPL_META_ACTION(TextLanguage,META_TEXTLANGUAGE_ACTION)4279*b1cdbd2cSJim Jagielski IMPL_META_ACTION( TextLanguage, META_TEXTLANGUAGE_ACTION )
4280*b1cdbd2cSJim Jagielski 
4281*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4282*b1cdbd2cSJim Jagielski 
4283*b1cdbd2cSJim Jagielski MetaTextLanguageAction::MetaTextLanguageAction( LanguageType eTextLanguage ) :
4284*b1cdbd2cSJim Jagielski 	MetaAction	( META_TEXTLANGUAGE_ACTION ),
4285*b1cdbd2cSJim Jagielski 	meTextLanguage( eTextLanguage )
4286*b1cdbd2cSJim Jagielski {
4287*b1cdbd2cSJim Jagielski }
4288*b1cdbd2cSJim Jagielski 
4289*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4290*b1cdbd2cSJim Jagielski 
Execute(OutputDevice * pOut)4291*b1cdbd2cSJim Jagielski void MetaTextLanguageAction::Execute( OutputDevice* pOut )
4292*b1cdbd2cSJim Jagielski {
4293*b1cdbd2cSJim Jagielski 	pOut->SetDigitLanguage( meTextLanguage );
4294*b1cdbd2cSJim Jagielski }
4295*b1cdbd2cSJim Jagielski 
4296*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4297*b1cdbd2cSJim Jagielski 
Clone()4298*b1cdbd2cSJim Jagielski MetaAction* MetaTextLanguageAction::Clone()
4299*b1cdbd2cSJim Jagielski {
4300*b1cdbd2cSJim Jagielski 	MetaAction* pClone = (MetaAction*) new MetaTextLanguageAction( *this );
4301*b1cdbd2cSJim Jagielski 	pClone->ResetRefCount();
4302*b1cdbd2cSJim Jagielski 	return pClone;
4303*b1cdbd2cSJim Jagielski }
4304*b1cdbd2cSJim Jagielski 
4305*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4306*b1cdbd2cSJim Jagielski 
Compare(const MetaAction & rMetaAction) const4307*b1cdbd2cSJim Jagielski sal_Bool MetaTextLanguageAction::Compare( const MetaAction& rMetaAction ) const
4308*b1cdbd2cSJim Jagielski {
4309*b1cdbd2cSJim Jagielski 	return meTextLanguage == ((MetaTextLanguageAction&)rMetaAction).meTextLanguage;
4310*b1cdbd2cSJim Jagielski }
4311*b1cdbd2cSJim Jagielski 
4312*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4313*b1cdbd2cSJim Jagielski 
Write(SvStream & rOStm,ImplMetaWriteData * pData)4314*b1cdbd2cSJim Jagielski void MetaTextLanguageAction::Write( SvStream& rOStm, ImplMetaWriteData* pData )
4315*b1cdbd2cSJim Jagielski {
4316*b1cdbd2cSJim Jagielski 	WRITE_BASE_COMPAT( rOStm, 1, pData );
4317*b1cdbd2cSJim Jagielski 	rOStm << meTextLanguage;
4318*b1cdbd2cSJim Jagielski }
4319*b1cdbd2cSJim Jagielski 
4320*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------
4321*b1cdbd2cSJim Jagielski 
Read(SvStream & rIStm,ImplMetaReadData *)4322*b1cdbd2cSJim Jagielski void MetaTextLanguageAction::Read( SvStream& rIStm, ImplMetaReadData* )
4323*b1cdbd2cSJim Jagielski {
4324*b1cdbd2cSJim Jagielski 	COMPAT( rIStm );
4325*b1cdbd2cSJim Jagielski 	rIStm >> meTextLanguage;
4326*b1cdbd2cSJim Jagielski }
4327*b1cdbd2cSJim Jagielski 
4328*b1cdbd2cSJim Jagielski // eof
4329