123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- /*
- * gdiplusmetaheader.h
- *
- * GDI+ metafile header structure
- *
- * This file is part of the w32api package.
- *
- * Contributors:
- * Created by Markus Koenig <markus@stber-koenig.de>
- *
- * THIS SOFTWARE IS NOT COPYRIGHTED
- *
- * This source code is offered for use in the public domain. You may
- * use, modify or distribute it freely.
- *
- * This code is distributed in the hope that it will be useful but
- * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
- * DISCLAIMED. This includes but is not limited to warranties of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
- *
- */
- #ifndef __GDIPLUS_METAHEADER_H
- #define __GDIPLUS_METAHEADER_H
- #if __GNUC__ >=3
- #pragma GCC system_header
- #endif
- /*
- * FIXME: is 1 the correct value for GDIP_EMFPLUSFLAGS_DISPLAY? This number
- * has been determined by calling Metafile::GetMetafileHeader() on a EMF+
- * metafile which was recorded on a display device context (SampleMetafile.emf).
- */
- #ifdef __cplusplus
- const UINT GDIP_EMFPLUSFLAGS_DISPLAY = 1;
- #else
- #define GDIP_EMFPLUSFLAGS_DISPLAY ((UINT) 1)
- #endif
- typedef struct tagENHMETAHEADER3 {
- 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,*LPENHMETAHEADER3;
- typedef struct PWMFRect16 {
- INT16 Left;
- INT16 Top;
- INT16 Right;
- INT16 Bottom;
- } PWMFRect16;
- typedef struct WmfPlaceableFileHeader {
- UINT32 Key;
- INT16 Hmf;
- PWMFRect16 BoundingBox;
- INT16 Inch;
- UINT32 Reserved;
- INT16 Checksum;
- } WmfPlaceableFileHeader;
- typedef struct MetafileHeader {
- MetafileType Type;
- UINT Size;
- UINT Version;
- UINT EmfPlusFlags;
- REAL DpiX;
- REAL DpiY;
- INT X;
- INT Y;
- INT Width;
- INT Height;
- __extension__ union {
- METAHEADER WmfHeader;
- ENHMETAHEADER3 EmfHeader;
- };
- INT EmfPlusHeaderSize;
- INT LogicalDpiX;
- INT LogicalDpiY;
- #ifdef __cplusplus
- public:
- void GetBounds(Rect *rect) const
- {
- if (rect)
- {
- rect->X = X;
- rect->Y = Y;
- rect->Width = Width;
- rect->Height = Height;
- }
- }
- REAL GetDpiX() const
- {
- return DpiX;
- }
- REAL GetDpiY() const
- {
- return DpiY;
- }
- const ENHMETAHEADER3* GetEmfHeader() const
- {
- if (Type == MetafileTypeEmf
- || Type == MetafileTypeEmfPlusOnly
- || Type == MetafileTypeEmfPlusDual)
- {
- return &EmfHeader;
- }
- else
- {
- return NULL;
- }
- }
- UINT GetEmfPlusFlags() const
- {
- return EmfPlusFlags;
- }
- UINT GetMetafileSize() const
- {
- return Size;
- }
- MetafileType GetType() const
- {
- return Type;
- }
- UINT GetVersion() const
- {
- return Version;
- }
- const METAHEADER* GetWmfHeader() const
- {
- if (Type == MetafileTypeWmf || Type == MetafileTypeWmfPlaceable)
- {
- return &WmfHeader;
- }
- else
- {
- return NULL;
- }
- }
- BOOL IsDisplay() const
- {
- return EmfPlusFlags == GDIP_EMFPLUSFLAGS_DISPLAY;
- }
- BOOL IsEmf() const
- {
- return Type == MetafileTypeEmf;
- }
- BOOL IsEmfOrEmfPlus() const
- {
- return Type == MetafileTypeEmf
- || Type == MetafileTypeEmfPlusOnly
- || Type == MetafileTypeEmfPlusDual;
- }
- BOOL IsEmfPlus() const
- {
- return Type == MetafileTypeEmfPlusOnly
- || Type == MetafileTypeEmfPlusDual;
- }
- BOOL IsEmfPlusDual() const
- {
- return Type == MetafileTypeEmfPlusDual;
- }
- BOOL IsEmfPlusOnly() const
- {
- return Type == MetafileTypeEmfPlusOnly;
- }
- BOOL IsWmf() const
- {
- return Type == MetafileTypeWmf
- || Type == MetafileTypeWmfPlaceable;
- }
- BOOL IsWmfPlaceable() const
- {
- return Type == MetafileTypeWmfPlaceable;
- }
- #endif
- } MetafileHeader;
- #endif /* __GDIPLUS_METAHEADER_H */
|