xpmgr/BuildTools/Include/GdiPlusMetaFile.h

474 lines
12 KiB
C

/**************************************************************************\
*
* Copyright (c) 1998-2001, Microsoft Corp. All Rights Reserved.
*
* Module Name:
*
* GdiplusMetafile.h
*
* Abstract:
*
* GDI+ Metafile class
*
\**************************************************************************/
#ifndef _GDIPLUSMETAFILE_H
#define _GDIPLUSMETAFILE_H
inline
Metafile::Metafile(
IN HMETAFILE hWmf,
IN const WmfPlaceableFileHeader * wmfPlaceableFileHeader,
IN BOOL deleteWmf
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromWmf(hWmf, deleteWmf,
wmfPlaceableFileHeader,
&metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN HENHMETAFILE hEmf,
IN BOOL deleteEmf
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromEmf(hEmf, deleteEmf,
&metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(IN const WCHAR* filename)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromFile(filename,
&metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN const WCHAR* filename,
IN const WmfPlaceableFileHeader * wmfPlaceableFileHeader
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromWmfFile(filename,
wmfPlaceableFileHeader,
&metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(IN IStream* stream)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipCreateMetafileFromStream(stream,
&metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN HDC referenceHdc,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafile(
referenceHdc, type, NULL, MetafileFrameUnitGdi,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN HDC referenceHdc,
IN const RectF & frameRect,
IN MetafileFrameUnit frameUnit,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafile(
referenceHdc, type, &frameRect, frameUnit,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN HDC referenceHdc,
IN const Rect & frameRect,
IN MetafileFrameUnit frameUnit,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileI(
referenceHdc, type, &frameRect, frameUnit,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN const WCHAR* fileName,
IN HDC referenceHdc,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileFileName(fileName,
referenceHdc, type, NULL, MetafileFrameUnitGdi,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN const WCHAR* fileName,
IN HDC referenceHdc,
IN const RectF & frameRect,
IN MetafileFrameUnit frameUnit,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileFileName(fileName,
referenceHdc, type, &frameRect, frameUnit,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN const WCHAR* fileName,
IN HDC referenceHdc,
IN const Rect & frameRect,
IN MetafileFrameUnit frameUnit,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileFileNameI(fileName,
referenceHdc, type, &frameRect, frameUnit,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN IStream * stream,
IN HDC referenceHdc,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileStream(stream,
referenceHdc, type, NULL, MetafileFrameUnitGdi,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN IStream * stream,
IN HDC referenceHdc,
IN const RectF & frameRect,
IN MetafileFrameUnit frameUnit,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileStream(stream,
referenceHdc, type, &frameRect, frameUnit,
description, &metafile);
SetNativeImage(metafile);
};
inline
Metafile::Metafile(
IN IStream * stream,
IN HDC referenceHdc,
IN const Rect & frameRect,
IN MetafileFrameUnit frameUnit,
IN EmfType type,
IN const WCHAR * description
)
{
GpMetafile * metafile = NULL;
lastResult = DllExports::GdipRecordMetafileStreamI(stream,
referenceHdc, type, &frameRect, frameUnit,
description, &metafile);
SetNativeImage(metafile);
};
inline Status
Metafile::GetMetafileHeader(
IN HMETAFILE hWmf,
IN const WmfPlaceableFileHeader * wmfPlaceableFileHeader,
OUT MetafileHeader * header
)
{
return DllExports::GdipGetMetafileHeaderFromWmf(hWmf,
wmfPlaceableFileHeader,
header);
};
inline Status
Metafile::GetMetafileHeader(
IN HENHMETAFILE hEmf,
OUT MetafileHeader * header
)
{
return DllExports::GdipGetMetafileHeaderFromEmf(hEmf, header);
};
inline Status
Metafile::GetMetafileHeader(
IN const WCHAR* filename,
OUT MetafileHeader * header
)
{
return DllExports::GdipGetMetafileHeaderFromFile(filename, header);
};
inline Status
Metafile::GetMetafileHeader(
IN IStream * stream,
OUT MetafileHeader * header
)
{
return DllExports::GdipGetMetafileHeaderFromStream(stream, header);
};
inline Status
Metafile::GetMetafileHeader(
OUT MetafileHeader * header
) const
{
return SetStatus(DllExports::GdipGetMetafileHeaderFromMetafile(
(GpMetafile *)nativeImage,
header));
};
// Once this method is called, the Metafile object is in an invalid state
// and can no longer be used. It is the responsiblity of the caller to
// invoke DeleteEnhMetaFile to delete this hEmf.
inline HENHMETAFILE
Metafile::GetHENHMETAFILE()
{
HENHMETAFILE hEmf;
SetStatus(DllExports::GdipGetHemfFromMetafile(
(GpMetafile *)nativeImage,
&hEmf));
return hEmf;
};
// Used in conjuction with Graphics::EnumerateMetafile to play an EMF+
// The data must be DWORD aligned if it's an EMF or EMF+. It must be
// WORD aligned if it's a WMF.
inline Status
Metafile::PlayRecord(
IN EmfPlusRecordType recordType,
IN UINT flags,
IN UINT dataSize,
IN const BYTE * data
) const
{
return SetStatus(DllExports::GdipPlayMetafileRecord(
(GpMetafile *)nativeImage,
recordType,
flags,
dataSize,
data));
};
// If you're using a printer HDC for the metafile, but you want the
// metafile rasterized at screen resolution, then use this API to set
// the rasterization dpi of the metafile to the screen resolution,
// e.g. 96 dpi or 120 dpi.
inline Status
Metafile::SetDownLevelRasterizationLimit(
IN UINT metafileRasterizationLimitDpi
)
{
return SetStatus(DllExports::
GdipSetMetafileDownLevelRasterizationLimit(
(GpMetafile *)nativeImage,
metafileRasterizationLimitDpi));
};
inline UINT
Metafile::GetDownLevelRasterizationLimit() const
{
UINT metafileRasterizationLimitDpi = 0;
SetStatus(DllExports::GdipGetMetafileDownLevelRasterizationLimit(
(GpMetafile *)nativeImage,
&metafileRasterizationLimitDpi));
return metafileRasterizationLimitDpi;
};
inline UINT
Metafile::EmfToWmfBits(
IN HENHMETAFILE hemf,
IN UINT cbData16,
OUT LPBYTE pData16,
IN INT iMapMode,
IN INT eFlags
)
{
return DllExports::GdipEmfToWmfBits(
hemf,
cbData16,
pData16,
iMapMode,
eFlags);
};
#if (GDIPVER >= 0x0110)
inline Status
Metafile::ConvertToEmfPlus(
IN const Graphics* refGraphics,
IN OUT INT* conversionFailureFlag,
IN EmfType emfType,
IN const WCHAR* description
)
{
GpMetafile * metafile = NULL;
GpStatus status = DllExports::GdipConvertToEmfPlus(
(GpGraphics*)refGraphics->nativeGraphics,
(GpMetafile *)nativeImage,
conversionFailureFlag,
emfType, description, &metafile);
if (metafile != NULL)
{
if (status == Ok)
{
DllExports::GdipDisposeImage(nativeImage);
SetNativeImage(metafile);
}
else
{
DllExports::GdipDisposeImage(metafile);
}
}
return status;
};
inline Status
Metafile::ConvertToEmfPlus(
IN const Graphics* refGraphics,
IN const WCHAR* filename,
IN OUT INT* conversionFailureFlag,
IN EmfType emfType,
IN const WCHAR* description
)
{
GpMetafile * metafile = NULL;
GpStatus status = DllExports::GdipConvertToEmfPlusToFile(
(GpGraphics*)refGraphics->nativeGraphics,
(GpMetafile *)nativeImage,
conversionFailureFlag,
filename, emfType, description, &metafile);
if (metafile != NULL)
{
if (status == Ok)
{
DllExports::GdipDisposeImage(nativeImage);
SetNativeImage(metafile);
}
else
{
DllExports::GdipDisposeImage(metafile);
}
}
return status;
};
inline Status
Metafile::ConvertToEmfPlus(
IN const Graphics* refGraphics,
IN IStream* stream,
IN OUT INT* conversionFailureFlag,
IN EmfType emfType,
IN const WCHAR* description
)
{
GpMetafile * metafile = NULL;
GpStatus status = DllExports::GdipConvertToEmfPlusToStream(
(GpGraphics*)refGraphics->nativeGraphics,
(GpMetafile *)nativeImage,
conversionFailureFlag,
stream, emfType, description, &metafile);
if (metafile != NULL)
{
if (status == Ok)
{
DllExports::GdipDisposeImage(nativeImage);
SetNativeImage(metafile);
}
else
{
DllExports::GdipDisposeImage(metafile);
}
}
return status;
};
#endif //(GDIPVER >= 0x0110)
#endif // !_METAFILE_H