6 * This file is part of the w32api package.
8 * THIS SOFTWARE IS NOT COPYRIGHTED
10 * This source code is offered for use in the public domain. You may
11 * use, modify or distribute it freely.
13 * This code is distributed in the hope that it will be useful but
14 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
15 * DISCLAIMED. This includes but is not limited to warranties of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
19 #ifndef _GDIPLUSMETAFILE_H
20 #define _GDIPLUSMETAFILE_H
22 class Metafile
: public Image
25 Metafile(HDC referenceHdc
, EmfType type
= EmfTypeEmfPlusDual
, const WCHAR
*description
= NULL
)
27 GpMetafile
*metafile
= NULL
;
29 DllExports::GdipRecordMetafile(referenceHdc
, type
, NULL
, MetafileFrameUnitGdi
, description
, &metafile
);
30 SetNativeImage(metafile
);
33 Metafile(const WCHAR
*filename
)
35 GpMetafile
*metafile
= NULL
;
36 lastStatus
= DllExports::GdipCreateMetafileFromFile(filename
, &metafile
);
37 SetNativeImage(metafile
);
42 const RectF
&frameRect
,
43 MetafileFrameUnit frameUnit
= MetafileFrameUnitGdi
,
44 EmfType type
= EmfTypeEmfPlusDual
,
45 const WCHAR
*description
= NULL
)
47 GpMetafile
*metafile
= NULL
;
48 lastStatus
= DllExports::GdipRecordMetafile(referenceHdc
, type
, &frameRect
, frameUnit
, description
, &metafile
);
49 SetNativeImage(metafile
);
52 Metafile(HMETAFILE hWmf
, const WmfPlaceableFileHeader
*wmfPlaceableFileHeader
, BOOL deleteWmf
= FALSE
)
54 GpMetafile
*metafile
= NULL
;
55 lastStatus
= DllExports::GdipCreateMetafileFromWmf(hWmf
, deleteWmf
, wmfPlaceableFileHeader
, &metafile
);
56 SetNativeImage(metafile
);
60 const WCHAR
*fileName
,
62 const Rect
&frameRect
,
63 MetafileFrameUnit frameUnit
= MetafileFrameUnitGdi
,
64 EmfType type
= EmfTypeEmfPlusDual
,
65 const WCHAR
*description
= NULL
)
67 GpMetafile
*metafile
= NULL
;
68 lastStatus
= DllExports::GdipRecordMetafileFileNameI(
69 fileName
, referenceHdc
, type
, &frameRect
, frameUnit
, description
, &metafile
);
70 SetNativeImage(metafile
);
76 const RectF
&frameRect
,
77 MetafileFrameUnit frameUnit
= MetafileFrameUnitGdi
,
78 EmfType type
= EmfTypeEmfPlusDual
,
79 const WCHAR
*description
= NULL
)
81 GpMetafile
*metafile
= NULL
;
82 lastStatus
= DllExports::GdipRecordMetafile(referenceHdc
, type
, &frameRect
, frameUnit
, description
, &metafile
);
83 SetNativeImage(metafile
);
86 Metafile(IStream
*stream
, HDC referenceHdc
, EmfType type
= EmfTypeEmfPlusDual
, const WCHAR
*description
= NULL
)
92 GpMetafile
*metafile
= NULL
;
93 lastStatus
= DllExports::GdipRecordMetafileStream(
94 stream
, referenceHdc
, type
, NULL
, MetafileFrameUnitGdi
, description
, &metafile
);
95 SetNativeImage(metafile
);
102 const Rect
&frameRect
,
103 MetafileFrameUnit frameUnit
= MetafileFrameUnitGdi
,
104 EmfType type
= EmfTypeEmfPlusDual
,
105 const WCHAR
*description
= NULL
)
107 GpMetafile
*metafile
= NULL
;
108 lastStatus
= DllExports::GdipRecordMetafileI(referenceHdc
, type
, &frameRect
, frameUnit
, description
, &metafile
);
109 SetNativeImage(metafile
);
113 const WCHAR
*fileName
,
115 const RectF
&frameRect
,
116 MetafileFrameUnit frameUnit
= MetafileFrameUnitGdi
,
117 EmfType type
= EmfTypeEmfPlusDual
,
118 const WCHAR
*description
= NULL
)
120 GpMetafile
*metafile
= NULL
;
121 lastStatus
= DllExports::GdipRecordMetafileFileName(
122 fileName
, referenceHdc
, type
, &frameRect
, frameUnit
, description
, &metafile
);
123 SetNativeImage(metafile
);
127 const WCHAR
*fileName
,
129 EmfType type
= EmfTypeEmfPlusDual
,
130 const WCHAR
*description
= NULL
)
132 GpMetafile
*metafile
= NULL
;
133 lastStatus
= DllExports::GdipRecordMetafileFileName(
134 fileName
, referenceHdc
, type
, NULL
, MetafileFrameUnitGdi
, description
, &metafile
);
135 SetNativeImage(metafile
);
138 Metafile(IStream
*stream
)
140 GpMetafile
*metafile
= NULL
;
141 lastStatus
= DllExports::GdipCreateMetafileFromStream(stream
, &metafile
);
142 SetNativeImage(metafile
);
145 Metafile(HENHMETAFILE hEmf
, BOOL deleteEmf
= FALSE
)
147 GpMetafile
*metafile
= NULL
;
148 lastStatus
= DllExports::GdipCreateMetafileFromEmf(hEmf
, deleteEmf
, &metafile
);
149 SetNativeImage(metafile
);
154 const Rect
&frameRect
,
155 MetafileFrameUnit frameUnit
= MetafileFrameUnitGdi
,
156 EmfType type
= EmfTypeEmfPlusDual
,
157 const WCHAR
*description
= NULL
)
159 GpMetafile
*metafile
= NULL
;
160 lastStatus
= DllExports::GdipRecordMetafileI(referenceHdc
, type
, &frameRect
, frameUnit
, description
, &metafile
);
161 SetNativeImage(metafile
);
169 INT iMapMode
= MM_ANISOTROPIC
,
170 EmfToWmfBitsFlags eFlags
= EmfToWmfBitsFlagsDefault
)
172 return DllExports::GdipEmfToWmfBits(hemf
, cbData16
, pData16
, iMapMode
, eFlags
);
176 GetDownLevelRasterizationLimit() const
181 UINT metafileRasterizationLimitDpi
= 0;
182 SetStatus(DllExports::GdipGetMetafileDownLevelRasterizationLimit(
183 GetNativeMetafile(), &metafileRasterizationLimitDpi
));
184 return metafileRasterizationLimitDpi
;
189 GetHENHMETAFILE() const
192 SetStatus(DllExports::GdipGetHemfFromMetafile(GetNativeMetafile(), &hEmf
));
197 GetMetafileHeader(const WCHAR
*filename
, MetafileHeader
*header
)
199 return DllExports::GdipGetMetafileHeaderFromFile(filename
, header
);
203 GetMetafileHeader(HENHMETAFILE hEmf
, MetafileHeader
*header
)
205 return DllExports::GdipGetMetafileHeaderFromEmf(hEmf
, header
);
209 GetMetafileHeader(HMETAFILE hWmf
, const WmfPlaceableFileHeader
*wmfPlaceableFileHeader
, MetafileHeader
*header
)
211 return DllExports::GdipGetMetafileHeaderFromWmf(hWmf
, wmfPlaceableFileHeader
, header
);
215 GetMetafileHeader(MetafileHeader
*header
) const
217 return SetStatus(DllExports::GdipGetMetafileHeaderFromMetafile(GetNativeMetafile(), header
));
221 GetMetafileHeader(IStream
*stream
, MetafileHeader
*header
)
223 return DllExports::GdipGetMetafileHeaderFromStream(stream
, header
);
227 PlayRecord(EmfPlusRecordType recordType
, UINT flags
, UINT dataSize
, const BYTE
*data
)
229 return SetStatus(DllExports::GdipPlayMetafileRecord(GetNativeMetafile(), recordType
, flags
, dataSize
, data
));
233 SetDownLevelRasterizationLimit(UINT metafileRasterizationLimitDpi
)
236 DllExports::GdipSetMetafileDownLevelRasterizationLimit(GetNativeMetafile(), metafileRasterizationLimitDpi
));
241 GetNativeMetafile() const
243 return static_cast<GpMetafile
*>(nativeImage
);
247 #endif /* _GDIPLUSMETAFILE_H */