blob: 3e77d79a6a20c50de9d3532dea783d1d4425d32f [file] [log] [blame]
/**
* This file has no copyright assigned and is placed in the Public Domain.
* This file is part of the w64 mingw-runtime package.
* No warranty is given; refer to the file DISCLAIMER within this package.
*/
#ifndef _GDIPLUSMETAFILE_H
#define _GDIPLUSMETAFILE_H
class Metafile : public Image {
public:
friend class Image;
Metafile(HMETAFILE hWmf,const WmfPlaceableFileHeader *wmfPlaceableFileHeader,WINBOOL deleteWmf = FALSE) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromWmf(hWmf,deleteWmf,wmfPlaceableFileHeader,&metafile);
SetNativeImage(metafile);
}
Metafile(HENHMETAFILE hEmf,WINBOOL deleteEmf = FALSE) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromEmf(hEmf,deleteEmf,&metafile);
SetNativeImage(metafile);
}
Metafile(const WCHAR *filename) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromFile(filename,&metafile);
SetNativeImage(metafile);
}
Metafile(const WCHAR *filename,const WmfPlaceableFileHeader *wmfPlaceableFileHeader) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromWmfFile(filename,wmfPlaceableFileHeader,&metafile);
SetNativeImage(metafile);
}
Metafile(IStream *stream) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromStream(stream,&metafile);
SetNativeImage(metafile);
}
Metafile(HDC referenceHdc,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafile(referenceHdc,type,NULL,MetafileFrameUnitGdi,description,&metafile);
SetNativeImage(metafile);
}
Metafile(HDC referenceHdc,const RectF &frameRect,MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafile(referenceHdc,type,&frameRect,frameUnit,description,&metafile);
SetNativeImage(metafile);
}
Metafile(HDC referenceHdc,const Rect &frameRect,MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileI(referenceHdc,type,&frameRect,frameUnit,description,&metafile);
SetNativeImage(metafile);
}
Metafile(const WCHAR *fileName,HDC referenceHdc,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileFileName(fileName,referenceHdc,type,NULL,MetafileFrameUnitGdi,description,&metafile);
SetNativeImage(metafile);
}
Metafile(const WCHAR *fileName,HDC referenceHdc,const RectF &frameRect,MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileFileName(fileName,referenceHdc,type,&frameRect,frameUnit,description,&metafile);
SetNativeImage(metafile);
}
Metafile(const WCHAR *fileName,HDC referenceHdc,const Rect &frameRect,MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileFileNameI(fileName,referenceHdc,type,&frameRect,frameUnit,description,&metafile);
SetNativeImage(metafile);
}
Metafile(IStream *stream,HDC referenceHdc,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileStream(stream,referenceHdc,type,NULL,MetafileFrameUnitGdi,description,&metafile);
SetNativeImage(metafile);
}
Metafile(IStream *stream,HDC referenceHdc,const RectF &frameRect,MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileStream(stream,referenceHdc,type,&frameRect,frameUnit,description,&metafile);
SetNativeImage(metafile);
}
Metafile(IStream *stream,HDC referenceHdc,const Rect &frameRect,MetafileFrameUnit frameUnit = MetafileFrameUnitGdi,EmfType type = EmfTypeEmfPlusDual,const WCHAR *description = NULL) {
GpMetafile *metafile = NULL;
lastResult = DllExports::GdipRecordMetafileStreamI(stream,referenceHdc,type,&frameRect,frameUnit,description,&metafile);
SetNativeImage(metafile);
}
static Status GetMetafileHeader(HMETAFILE hWmf,const WmfPlaceableFileHeader *wmfPlaceableFileHeader,MetafileHeader *header) { return DllExports::GdipGetMetafileHeaderFromWmf(hWmf,wmfPlaceableFileHeader,header); }
static Status GetMetafileHeader(HENHMETAFILE hEmf,MetafileHeader *header) { return DllExports::GdipGetMetafileHeaderFromEmf(hEmf,header); }
static Status GetMetafileHeader(const WCHAR *filename,MetafileHeader *header) { return DllExports::GdipGetMetafileHeaderFromFile(filename,header); }
static Status GetMetafileHeader(IStream *stream,MetafileHeader *header) { return DllExports::GdipGetMetafileHeaderFromStream(stream,header); }
Status GetMetafileHeader(MetafileHeader *header) const { return SetStatus(DllExports::GdipGetMetafileHeaderFromMetafile((GpMetafile *)nativeImage,header)); }
HENHMETAFILE GetHENHMETAFILE() {
HENHMETAFILE hEmf;
SetStatus(DllExports::GdipGetHemfFromMetafile((GpMetafile *)nativeImage,&hEmf));
return hEmf;
}
Status PlayRecord(EmfPlusRecordType recordType,UINT flags,UINT dataSize,const BYTE *data) const { return SetStatus(DllExports::GdipPlayMetafileRecord((GpMetafile *)nativeImage,recordType,flags,dataSize,data)); }
Status SetDownLevelRasterizationLimit(UINT metafileRasterizationLimitDpi) { return SetStatus(DllExports::GdipSetMetafileDownLevelRasterizationLimit((GpMetafile *)nativeImage,metafileRasterizationLimitDpi)); }
UINT GetDownLevelRasterizationLimit() const {
UINT metafileRasterizationLimitDpi = 0;
SetStatus(DllExports::GdipGetMetafileDownLevelRasterizationLimit((GpMetafile *)nativeImage,&metafileRasterizationLimitDpi));
return metafileRasterizationLimitDpi;
}
static UINT Metafile::EmfToWmfBits(HENHMETAFILE hemf,UINT cbData16,LPBYTE pData16,INT iMapMode = MM_ANISOTROPIC,INT eFlags = EmfToWmfBitsFlagsDefault) { return DllExports::GdipEmfToWmfBits(hemf,cbData16,pData16,iMapMode,eFlags); }
protected:
Metafile() {
SetNativeImage(NULL);
lastResult = Ok;
}
private:
Metafile(const Metafile &);
Metafile& operator=(const Metafile &);
};
#endif