123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213 |
- #ifndef _GDIPLUSMETAHEADER_H
- #define _GDIPLUSMETAHEADER_H
- typedef struct
- {
- DWORD iType;
- DWORD nSize;
-
- RECTL rclBounds;
- RECTL rclFrame;
- DWORD dSignature;
- DWORD nVersion;
- DWORD nBytes;
- DWORD nRecords;
- WORD nHandles;
-
- WORD sReserved;
- DWORD nDescription;
-
- DWORD offDescription;
-
- DWORD nPalEntries;
- SIZEL szlDevice;
- SIZEL szlMillimeters;
- } ENHMETAHEADER3;
- #include <pshpack2.h>
- typedef struct
- {
- INT16 Left;
- INT16 Top;
- INT16 Right;
- INT16 Bottom;
- } APMRect16;
- typedef struct
- {
- UINT32 Key;
- INT16 Hmf;
- APMRect16 BoundingBox;
- INT16 Inch;
- UINT32 Reserved;
- INT16 Checksum;
- } APMFileHeader;
- #include <poppack.h>
- #define GDIP_EMFPLUSFLAGS_DISPLAY 0x00000001
- class MetafileHeader
- {
- public:
- MetafileType Type;
- UINT Size;
- UINT Version;
- UINT EmfPlusFlags;
- REAL DpiX;
- REAL DpiY;
- INT X;
- INT Y;
- INT Width;
- INT Height;
- union
- {
- METAHEADER WmfHeader;
- ENHMETAHEADER3 EmfHeader;
- };
- INT EmfPlusHeaderSize;
- INT LogicalDpiX;
- INT LogicalDpiY;
- public:
-
- MetafileType GetType() const { return Type; }
-
- UINT GetMetafileSize() const { return Size; }
-
- UINT GetVersion() const { return Version; }
-
- UINT GetEmfPlusFlags() const { return EmfPlusFlags; }
-
- REAL GetDpiX() const { return DpiX; }
-
- REAL GetDpiY() const { return DpiY; }
-
- VOID GetBounds (OUT Rect *rect) const
- {
- rect->X = X;
- rect->Y = Y;
- rect->Width = Width;
- rect->Height = Height;
- }
-
-
- BOOL IsWmf() const
- {
- return ((Type == MetafileTypeWmf) || (Type == MetafileTypeWmfAldus));
- }
-
- BOOL IsWmfAldus() const { return (Type == MetafileTypeWmf); }
-
- BOOL IsEmf() const { return (Type == MetafileTypeEmf); }
-
- BOOL IsEmfOrEmfPlus() const { return (Type >= MetafileTypeEmf); }
-
- BOOL IsEmfPlus() const { return (Type >= MetafileTypeEmfPlusOnly); }
-
- BOOL IsEmfPlusDual() const { return (Type == MetafileTypeEmfPlusDual); }
-
- BOOL IsEmfPlusOnly() const { return (Type == MetafileTypeEmfPlusOnly); }
-
- BOOL IsDisplay() const
- {
- return (IsEmfPlus() &&
- ((EmfPlusFlags & GDIP_EMFPLUSFLAGS_DISPLAY) != 0));
- }
-
- const METAHEADER * GetWmfHeader() const
- {
- if (IsWmf())
- {
- return &WmfHeader;
- }
- return NULL;
- }
-
- const ENHMETAHEADER3 * GetEmfHeader() const
- {
- if (IsEmfOrEmfPlus())
- {
- return &EmfHeader;
- }
- return NULL;
- }
- };
- #endif
|