Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219/* * Copyright (C) 2007 Google (Evan Stade) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */
#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;} PWMFRect16;
typedef struct{ UINT32 Key; INT16 Hmf; PWMFRect16 BoundingBox; INT16 Inch; UINT32 Reserved; INT16 Checksum;} WmfPlaceableFileHeader;
#include <poppack.h>
#define GDIP_EMFPLUSFLAGS_DISPLAY 0x00000001
#ifdef __cplusplusclass 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 *r) const { r->X = X; r->Y = Y; r->Width = Width; r->Height = Height; }
BOOL IsWmf() const { return ((Type == MetafileTypeWmf) || (Type == MetafileTypeWmfPlaceable)); }
BOOL IsWmfPlaceable() const { return (Type == MetafileTypeWmfPlaceable); }
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 { return IsWmf() ? &WmfHeader : NULL; }
const ENHMETAHEADER3 * GetEmfHeader() const { return IsEmfOrEmfPlus() ? &EmfHeader : NULL; }};#else /* end of c++ typedefs */
typedef struct MetafileHeader{ 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; } DUMMYUNIONNAME; INT EmfPlusHeaderSize; INT LogicalDpiX; INT LogicalDpiY;} MetafileHeader;
#endif /* end of c typedefs */
#endif /* _GDIPLUSMETAHEADER_H */