xref: /aoo4110/main/vcl/inc/impgraph.hxx (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 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _SV_IMPGRAPH_HXX
25*b1cdbd2cSJim Jagielski #define _SV_IMPGRAPH_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <tools/urlobj.hxx>
28*b1cdbd2cSJim Jagielski #include <vcl/bitmap.hxx>
29*b1cdbd2cSJim Jagielski #include <vcl/bitmapex.hxx>
30*b1cdbd2cSJim Jagielski #include <vcl/animate.hxx>
31*b1cdbd2cSJim Jagielski #include <vcl/gdimtf.hxx>
32*b1cdbd2cSJim Jagielski #include <vcl/graph.h>
33*b1cdbd2cSJim Jagielski #include <vcl/svgdata.hxx>
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski // ---------------
36*b1cdbd2cSJim Jagielski // - ImpSwapInfo -
37*b1cdbd2cSJim Jagielski // ---------------
38*b1cdbd2cSJim Jagielski 
39*b1cdbd2cSJim Jagielski struct ImpSwapInfo
40*b1cdbd2cSJim Jagielski {
41*b1cdbd2cSJim Jagielski 	MapMode		maPrefMapMode;
42*b1cdbd2cSJim Jagielski 	Size		maPrefSize;
43*b1cdbd2cSJim Jagielski };
44*b1cdbd2cSJim Jagielski 
45*b1cdbd2cSJim Jagielski // --------------
46*b1cdbd2cSJim Jagielski // - ImpGraphic -
47*b1cdbd2cSJim Jagielski // --------------
48*b1cdbd2cSJim Jagielski 
49*b1cdbd2cSJim Jagielski class	OutputDevice;
50*b1cdbd2cSJim Jagielski class	GfxLink;
51*b1cdbd2cSJim Jagielski struct	ImpSwapFile;
52*b1cdbd2cSJim Jagielski class GraphicConversionParameters;
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski class ImpGraphic
55*b1cdbd2cSJim Jagielski {
56*b1cdbd2cSJim Jagielski 	friend class Graphic;
57*b1cdbd2cSJim Jagielski 
58*b1cdbd2cSJim Jagielski private:
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski 	GDIMetaFile			maMetaFile;
61*b1cdbd2cSJim Jagielski 	BitmapEx			maEx;
62*b1cdbd2cSJim Jagielski 	ImpSwapInfo			maSwapInfo;
63*b1cdbd2cSJim Jagielski 	Animation*			mpAnimation;
64*b1cdbd2cSJim Jagielski 	GraphicReader*		mpContext;
65*b1cdbd2cSJim Jagielski 	ImpSwapFile*		mpSwapFile;
66*b1cdbd2cSJim Jagielski 	GfxLink*			mpGfxLink;
67*b1cdbd2cSJim Jagielski 	GraphicType			meType;
68*b1cdbd2cSJim Jagielski 	String				maDocFileURLStr;
69*b1cdbd2cSJim Jagielski 	sal_uLong			mnDocFilePos;
70*b1cdbd2cSJim Jagielski     mutable sal_uLong   mnSizeBytes;
71*b1cdbd2cSJim Jagielski 	sal_uLong			mnRefCount;
72*b1cdbd2cSJim Jagielski 	sal_Bool			mbSwapOut;
73*b1cdbd2cSJim Jagielski 	sal_Bool			mbSwapUnderway;
74*b1cdbd2cSJim Jagielski 
75*b1cdbd2cSJim Jagielski     // SvgData support
76*b1cdbd2cSJim Jagielski     SvgDataPtr          maSvgData;
77*b1cdbd2cSJim Jagielski 
78*b1cdbd2cSJim Jagielski private:
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski 						ImpGraphic();
81*b1cdbd2cSJim Jagielski 						ImpGraphic( const ImpGraphic& rImpGraphic );
82*b1cdbd2cSJim Jagielski 						ImpGraphic( const Bitmap& rBmp );
83*b1cdbd2cSJim Jagielski 						ImpGraphic( const BitmapEx& rBmpEx );
84*b1cdbd2cSJim Jagielski 						ImpGraphic(const SvgDataPtr& rSvgDataPtr);
85*b1cdbd2cSJim Jagielski 						ImpGraphic( const Animation& rAnimation );
86*b1cdbd2cSJim Jagielski 						ImpGraphic( const GDIMetaFile& rMtf );
87*b1cdbd2cSJim Jagielski 	virtual				~ImpGraphic();
88*b1cdbd2cSJim Jagielski 
89*b1cdbd2cSJim Jagielski     ImpGraphic&			operator=( const ImpGraphic& rImpGraphic );
90*b1cdbd2cSJim Jagielski 	sal_Bool				operator==( const ImpGraphic& rImpGraphic ) const;
operator !=(const ImpGraphic & rImpGraphic) const91*b1cdbd2cSJim Jagielski 	sal_Bool				operator!=( const ImpGraphic& rImpGraphic ) const { return !( *this == rImpGraphic ); }
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski 	void				ImplClearGraphics( sal_Bool bCreateSwapInfo );
94*b1cdbd2cSJim Jagielski 	void				ImplClear();
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski 	GraphicType			ImplGetType() const;
97*b1cdbd2cSJim Jagielski 	void				ImplSetDefaultType();
98*b1cdbd2cSJim Jagielski 	sal_Bool				ImplIsSupportedGraphic() const;
99*b1cdbd2cSJim Jagielski 
100*b1cdbd2cSJim Jagielski 	sal_Bool			ImplIsTransparent() const;
101*b1cdbd2cSJim Jagielski 	sal_Bool			ImplIsAlpha() const;
102*b1cdbd2cSJim Jagielski 	sal_Bool			ImplIsAnimated() const;
103*b1cdbd2cSJim Jagielski 	sal_Bool			ImplIsEPS() const;
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski 	Bitmap				    ImplGetBitmap(const GraphicConversionParameters& rParameters) const;
106*b1cdbd2cSJim Jagielski 	BitmapEx			    ImplGetBitmapEx(const GraphicConversionParameters& rParameters) const;
107*b1cdbd2cSJim Jagielski 	Animation			    ImplGetAnimation() const;
108*b1cdbd2cSJim Jagielski 	const GDIMetaFile&	    ImplGetGDIMetaFile() const;
109*b1cdbd2cSJim Jagielski 
110*b1cdbd2cSJim Jagielski 
111*b1cdbd2cSJim Jagielski 	Size				ImplGetPrefSize() const;
112*b1cdbd2cSJim Jagielski 	void				ImplSetPrefSize( const Size& rPrefSize );
113*b1cdbd2cSJim Jagielski 
114*b1cdbd2cSJim Jagielski 	MapMode				ImplGetPrefMapMode() const;
115*b1cdbd2cSJim Jagielski 	void				ImplSetPrefMapMode( const MapMode& rPrefMapMode );
116*b1cdbd2cSJim Jagielski 
117*b1cdbd2cSJim Jagielski 	sal_uLong				ImplGetSizeBytes() const;
118*b1cdbd2cSJim Jagielski 
119*b1cdbd2cSJim Jagielski 	void				ImplDraw( OutputDevice* pOutDev,
120*b1cdbd2cSJim Jagielski 								  const Point& rDestPt ) const;
121*b1cdbd2cSJim Jagielski 	void				ImplDraw( OutputDevice* pOutDev,
122*b1cdbd2cSJim Jagielski 								  const Point& rDestPt,
123*b1cdbd2cSJim Jagielski 								  const Size& rDestSize ) const;
124*b1cdbd2cSJim Jagielski 
125*b1cdbd2cSJim Jagielski 	void				ImplStartAnimation( OutputDevice* pOutDev,
126*b1cdbd2cSJim Jagielski 											const Point& rDestPt,
127*b1cdbd2cSJim Jagielski 											long nExtraData = 0,
128*b1cdbd2cSJim Jagielski 											OutputDevice* pFirstFrameOutDev = NULL );
129*b1cdbd2cSJim Jagielski 	void				ImplStartAnimation( OutputDevice* pOutDev,
130*b1cdbd2cSJim Jagielski 											const Point& rDestPt,
131*b1cdbd2cSJim Jagielski 											const Size& rDestSize,
132*b1cdbd2cSJim Jagielski 											long nExtraData = 0,
133*b1cdbd2cSJim Jagielski 											OutputDevice* pFirstFrameOutDev = NULL );
134*b1cdbd2cSJim Jagielski 	void				ImplStopAnimation( OutputDevice* pOutputDevice = NULL,
135*b1cdbd2cSJim Jagielski 										   long nExtraData = 0 );
136*b1cdbd2cSJim Jagielski 
137*b1cdbd2cSJim Jagielski 	void				ImplSetAnimationNotifyHdl( const Link& rLink );
138*b1cdbd2cSJim Jagielski 	Link				ImplGetAnimationNotifyHdl() const;
139*b1cdbd2cSJim Jagielski 
140*b1cdbd2cSJim Jagielski 	sal_uLong				ImplGetAnimationLoopCount() const;
141*b1cdbd2cSJim Jagielski 	void				ImplResetAnimationLoopCount();
142*b1cdbd2cSJim Jagielski 
143*b1cdbd2cSJim Jagielski 	List*				ImplGetAnimationInfoList() const;
144*b1cdbd2cSJim Jagielski 
145*b1cdbd2cSJim Jagielski private:
146*b1cdbd2cSJim Jagielski 
147*b1cdbd2cSJim Jagielski 	GraphicReader*		ImplGetContext();
148*b1cdbd2cSJim Jagielski 	void				ImplSetContext( GraphicReader* pReader );
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski private:
151*b1cdbd2cSJim Jagielski 
152*b1cdbd2cSJim Jagielski 	void				ImplSetDocFileName( const String& rName, sal_uLong nFilePos );
153*b1cdbd2cSJim Jagielski 	const String&		ImplGetDocFileName() const;
154*b1cdbd2cSJim Jagielski 	sal_uLong				ImplGetDocFilePos() const;
155*b1cdbd2cSJim Jagielski 
156*b1cdbd2cSJim Jagielski 	sal_Bool				ImplReadEmbedded( SvStream& rIStream, sal_Bool bSwap = sal_False );
157*b1cdbd2cSJim Jagielski 	sal_Bool				ImplWriteEmbedded( SvStream& rOStream );
158*b1cdbd2cSJim Jagielski 
159*b1cdbd2cSJim Jagielski 	sal_Bool				ImplSwapIn();
160*b1cdbd2cSJim Jagielski 	sal_Bool				ImplSwapIn( SvStream* pIStm );
161*b1cdbd2cSJim Jagielski 
162*b1cdbd2cSJim Jagielski 	sal_Bool				ImplSwapOut();
163*b1cdbd2cSJim Jagielski 	sal_Bool				ImplSwapOut( SvStream* pOStm );
164*b1cdbd2cSJim Jagielski 
165*b1cdbd2cSJim Jagielski 	sal_Bool				ImplIsSwapOut() const;
166*b1cdbd2cSJim Jagielski 
167*b1cdbd2cSJim Jagielski 	void				ImplSetLink( const GfxLink& );
168*b1cdbd2cSJim Jagielski 	GfxLink				ImplGetLink();
169*b1cdbd2cSJim Jagielski 	sal_Bool				ImplIsLink() const;
170*b1cdbd2cSJim Jagielski 
171*b1cdbd2cSJim Jagielski 	sal_uLong				ImplGetChecksum() const;
172*b1cdbd2cSJim Jagielski 
173*b1cdbd2cSJim Jagielski 	sal_Bool				ImplExportNative( SvStream& rOStm ) const;
174*b1cdbd2cSJim Jagielski 
175*b1cdbd2cSJim Jagielski 	friend SvStream&	operator<<( SvStream& rOStm, const ImpGraphic& rImpGraphic );
176*b1cdbd2cSJim Jagielski 	friend SvStream&	operator>>( SvStream& rIStm, ImpGraphic& rImpGraphic );
177*b1cdbd2cSJim Jagielski 
178*b1cdbd2cSJim Jagielski     // SvgData support
179*b1cdbd2cSJim Jagielski     const SvgDataPtr& getSvgData() const;
180*b1cdbd2cSJim Jagielski };
181*b1cdbd2cSJim Jagielski 
182*b1cdbd2cSJim Jagielski #endif // _SV_IMPGRAPH_HXX
183