| // Copyright © 2016-2017 winapi-rs developers |
| // Licensed under the Apache License, Version 2.0 |
| // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. |
| // All files in the project carrying such notice may not be copied, modified, or distributed |
| // except according to those terms. |
| //! GDI procedure declarations, constant definitions and macros |
| use ctypes::{c_char, c_int, c_long, c_short, c_ushort, c_void}; |
| use shared::basetsd::{UINT16, UINT32, UINT64, ULONG_PTR}; |
| use shared::minwindef::{ |
| BOOL, BYTE, DWORD, FLOAT, HGLOBAL, HMETAFILE, HMODULE, HRGN, INT, LOBYTE, LPARAM, LPBYTE, |
| LPDWORD, LPINT, LPVOID, LPWORD, MAX_PATH, PFLOAT, PROC, UINT, ULONG, USHORT, WORD, |
| }; |
| use shared::windef::{ |
| COLORREF, HBITMAP, HBRUSH, HCOLORSPACE, HDC, HENHMETAFILE, HFONT, HGDIOBJ, HGLRC, HPALETTE, |
| HPEN, HWND, LPPOINT, LPRECT, LPSIZE, POINT, POINTL, POINTS, RECT, RECTL, SIZEL, |
| }; |
| use um::winnt::{ |
| CHAR, HANDLE, LONG, LPCSTR, LPCWSTR, LPSTR, LPWSTR, LUID, PSTR, PVOID, SHORT, VOID, WCHAR, |
| }; |
| pub const R2_BLACK: c_int = 1; |
| pub const R2_NOTMERGEPEN: c_int = 2; |
| pub const R2_MASKNOTPEN: c_int = 3; |
| pub const R2_NOTCOPYPEN: c_int = 4; |
| pub const R2_MASKPENNOT: c_int = 5; |
| pub const R2_NOT: c_int = 6; |
| pub const R2_XORPEN: c_int = 7; |
| pub const R2_NOTMASKPEN: c_int = 8; |
| pub const R2_MASKPEN: c_int = 9; |
| pub const R2_NOTXORPEN: c_int = 10; |
| pub const R2_NOP: c_int = 11; |
| pub const R2_MERGENOTPEN: c_int = 12; |
| pub const R2_COPYPEN: c_int = 13; |
| pub const R2_MERGEPENNOT: c_int = 14; |
| pub const R2_MERGEPEN: c_int = 15; |
| pub const R2_WHITE: c_int = 16; |
| pub const R2_LAST: c_int = 16; |
| pub const SRCCOPY: DWORD = 0x00CC0020; |
| pub const SRCPAINT: DWORD = 0x00EE0086; |
| pub const SRCAND: DWORD = 0x008800C6; |
| pub const SRCINVERT: DWORD = 0x00660046; |
| pub const SRCERASE: DWORD = 0x00440328; |
| pub const NOTSRCCOPY: DWORD = 0x00330008; |
| pub const NOTSRCERASE: DWORD = 0x001100A6; |
| pub const MERGECOPY: DWORD = 0x00C000CA; |
| pub const MERGEPAINT: DWORD = 0x00BB0226; |
| pub const PATCOPY: DWORD = 0x00F00021; |
| pub const PATPAINT: DWORD = 0x00FB0A09; |
| pub const PATINVERT: DWORD = 0x005A0049; |
| pub const DSTINVERT: DWORD = 0x00550009; |
| pub const BLACKNESS: DWORD = 0x00000042; |
| pub const WHITENESS: DWORD = 0x00FF0062; |
| pub const NOMIRRORBITMAP: DWORD = 0x80000000; |
| pub const CAPTUREBLT: DWORD = 0x40000000; |
| #[inline] |
| pub fn MAKEROP4(fore: DWORD, back: DWORD) -> DWORD { |
| ((back << 8) & 0xFF000000) | fore |
| } |
| pub const GDI_ERROR: ULONG = 0xFFFFFFFF; |
| pub const HGDI_ERROR: HANDLE = -1isize as HANDLE; |
| pub const ERROR: c_int = 0; |
| pub const NULLREGION: c_int = 1; |
| pub const SIMPLEREGION: c_int = 2; |
| pub const COMPLEXREGION: c_int = 3; |
| pub const RGN_ERROR: c_int = ERROR; |
| pub const RGN_AND: c_int = 1; |
| pub const RGN_OR: c_int = 2; |
| pub const RGN_XOR: c_int = 3; |
| pub const RGN_DIFF: c_int = 4; |
| pub const RGN_COPY: c_int = 5; |
| pub const RGN_MIN: c_int = RGN_AND; |
| pub const RGN_MAX: c_int = RGN_COPY; |
| pub const BLACKONWHITE: c_int = 1; |
| pub const WHITEONBLACK: c_int = 2; |
| pub const COLORONCOLOR: c_int = 3; |
| pub const HALFTONE: c_int = 4; |
| pub const MAXSTRETCHBLTMODE: c_int = 4; |
| pub const STRETCH_ANDSCANS: c_int = BLACKONWHITE; |
| pub const STRETCH_ORSCANS: c_int = WHITEONBLACK; |
| pub const STRETCH_DELETESCANS: c_int = COLORONCOLOR; |
| pub const STRETCH_HALFTONE: c_int = HALFTONE; |
| pub const ALTERNATE: c_int = 1; |
| pub const WINDING: c_int = 2; |
| pub const POLYFILL_LAST: c_int = 2; |
| pub const LAYOUT_RTL: DWORD = 0x00000001; |
| pub const LAYOUT_BTT: DWORD = 0x00000002; |
| pub const LAYOUT_VBH: DWORD = 0x00000004; |
| pub const LAYOUT_ORIENTATIONMASK: DWORD = (LAYOUT_RTL | LAYOUT_BTT | LAYOUT_VBH); |
| pub const LAYOUT_BITMAPORIENTATIONPRESERVED: DWORD = 0x00000008; |
| pub const TA_NOUPDATECP: UINT = 0; |
| pub const TA_UPDATECP: UINT = 1; |
| pub const TA_LEFT: UINT = 0; |
| pub const TA_RIGHT: UINT = 2; |
| pub const TA_CENTER: UINT = 6; |
| pub const TA_TOP: UINT = 0; |
| pub const TA_BOTTOM: UINT = 8; |
| pub const TA_BASELINE: UINT = 24; |
| pub const TA_RTLREADING: UINT = 256; |
| pub const TA_MASK: UINT = TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING; |
| pub const VTA_BASELINE: UINT = TA_BASELINE; |
| pub const VTA_LEFT: UINT = TA_BOTTOM; |
| pub const VTA_RIGHT: UINT = TA_TOP; |
| pub const VTA_CENTER: UINT = TA_CENTER; |
| pub const VTA_BOTTOM: UINT = TA_RIGHT; |
| pub const VTA_TOP: UINT = TA_LEFT; |
| pub const ETO_OPAQUE: UINT = 0x0002; |
| pub const ETO_CLIPPED: UINT = 0x0004; |
| pub const ETO_GLYPH_INDEX: UINT = 0x0010; |
| pub const ETO_RTLREADING: UINT = 0x0080; |
| pub const ETO_NUMERICSLOCAL: UINT = 0x0400; |
| pub const ETO_NUMERICSLATIN: UINT = 0x0800; |
| pub const ETO_IGNORELANGUAGE: UINT = 0x1000; |
| pub const ETO_PDY: UINT = 0x2000; |
| pub const ETO_REVERSE_INDEX_MAP: UINT = 0x10000; |
| pub const ASPECT_FILTERING: UINT = 0x0001; |
| pub const DCB_RESET: UINT = 0x0001; |
| pub const DCB_ACCUMULATE: UINT = 0x0002; |
| pub const DCB_DIRTY: UINT = DCB_ACCUMULATE; |
| pub const DCB_SET: UINT = (DCB_RESET | DCB_ACCUMULATE); |
| pub const DCB_ENABLE: UINT = 0x0004; |
| pub const DCB_DISABLE: UINT = 0x0008; |
| pub const META_SETBKCOLOR: WORD = 0x0201; |
| pub const META_SETBKMODE: WORD = 0x0102; |
| pub const META_SETMAPMODE: WORD = 0x0103; |
| pub const META_SETROP2: WORD = 0x0104; |
| pub const META_SETRELABS: WORD = 0x0105; |
| pub const META_SETPOLYFILLMODE: WORD = 0x0106; |
| pub const META_SETSTRETCHBLTMODE: WORD = 0x0107; |
| pub const META_SETTEXTCHAREXTRA: WORD = 0x0108; |
| pub const META_SETTEXTCOLOR: WORD = 0x0209; |
| pub const META_SETTEXTJUSTIFICATION: WORD = 0x020A; |
| pub const META_SETWINDOWORG: WORD = 0x020B; |
| pub const META_SETWINDOWEXT: WORD = 0x020C; |
| pub const META_SETVIEWPORTORG: WORD = 0x020D; |
| pub const META_SETVIEWPORTEXT: WORD = 0x020E; |
| pub const META_OFFSETWINDOWORG: WORD = 0x020F; |
| pub const META_SCALEWINDOWEXT: WORD = 0x0410; |
| pub const META_OFFSETVIEWPORTORG: WORD = 0x0211; |
| pub const META_SCALEVIEWPORTEXT: WORD = 0x0412; |
| pub const META_LINETO: WORD = 0x0213; |
| pub const META_MOVETO: WORD = 0x0214; |
| pub const META_EXCLUDECLIPRECT: WORD = 0x0415; |
| pub const META_INTERSECTCLIPRECT: WORD = 0x0416; |
| pub const META_ARC: WORD = 0x0817; |
| pub const META_ELLIPSE: WORD = 0x0418; |
| pub const META_FLOODFILL: WORD = 0x0419; |
| pub const META_PIE: WORD = 0x081A; |
| pub const META_RECTANGLE: WORD = 0x041B; |
| pub const META_ROUNDRECT: WORD = 0x061C; |
| pub const META_PATBLT: WORD = 0x061D; |
| pub const META_SAVEDC: WORD = 0x001E; |
| pub const META_SETPIXEL: WORD = 0x041F; |
| pub const META_OFFSETCLIPRGN: WORD = 0x0220; |
| pub const META_TEXTOUT: WORD = 0x0521; |
| pub const META_BITBLT: WORD = 0x0922; |
| pub const META_STRETCHBLT: WORD = 0x0B23; |
| pub const META_POLYGON: WORD = 0x0324; |
| pub const META_POLYLINE: WORD = 0x0325; |
| pub const META_ESCAPE: WORD = 0x0626; |
| pub const META_RESTOREDC: WORD = 0x0127; |
| pub const META_FILLREGION: WORD = 0x0228; |
| pub const META_FRAMEREGION: WORD = 0x0429; |
| pub const META_INVERTREGION: WORD = 0x012A; |
| pub const META_PAINTREGION: WORD = 0x012B; |
| pub const META_SELECTCLIPREGION: WORD = 0x012C; |
| pub const META_SELECTOBJECT: WORD = 0x012D; |
| pub const META_SETTEXTALIGN: WORD = 0x012E; |
| pub const META_CHORD: WORD = 0x0830; |
| pub const META_SETMAPPERFLAGS: WORD = 0x0231; |
| pub const META_EXTTEXTOUT: WORD = 0x0a32; |
| pub const META_SETDIBTODEV: WORD = 0x0d33; |
| pub const META_SELECTPALETTE: WORD = 0x0234; |
| pub const META_REALIZEPALETTE: WORD = 0x0035; |
| pub const META_ANIMATEPALETTE: WORD = 0x0436; |
| pub const META_SETPALENTRIES: WORD = 0x0037; |
| pub const META_POLYPOLYGON: WORD = 0x0538; |
| pub const META_RESIZEPALETTE: WORD = 0x0139; |
| pub const META_DIBBITBLT: WORD = 0x0940; |
| pub const META_DIBSTRETCHBLT: WORD = 0x0b41; |
| pub const META_DIBCREATEPATTERNBRUSH: WORD = 0x0142; |
| pub const META_STRETCHDIB: WORD = 0x0f43; |
| pub const META_EXTFLOODFILL: WORD = 0x0548; |
| pub const META_SETLAYOUT: WORD = 0x0149; |
| pub const META_DELETEOBJECT: WORD = 0x01f0; |
| pub const META_CREATEPALETTE: WORD = 0x00f7; |
| pub const META_CREATEPATTERNBRUSH: WORD = 0x01F9; |
| pub const META_CREATEPENINDIRECT: WORD = 0x02FA; |
| pub const META_CREATEFONTINDIRECT: WORD = 0x02FB; |
| pub const META_CREATEBRUSHINDIRECT: WORD = 0x02FC; |
| pub const META_CREATEREGION: WORD = 0x06FF; |
| STRUCT!{struct DRAWPATRECT { |
| ptPosition: POINT, |
| ptSize: POINT, |
| wStyle: WORD, |
| wPattern: WORD, |
| }} |
| pub type PDRAWPATRECT = *mut DRAWPATRECT; |
| pub const NEWFRAME: c_int = 1; |
| pub const ABORTDOC: c_int = 2; |
| pub const NEXTBAND: c_int = 3; |
| pub const SETCOLORTABLE: c_int = 4; |
| pub const GETCOLORTABLE: c_int = 5; |
| pub const FLUSHOUTPUT: c_int = 6; |
| pub const DRAFTMODE: c_int = 7; |
| pub const QUERYESCSUPPORT: c_int = 8; |
| pub const SETABORTPROC: c_int = 9; |
| pub const STARTDOC: c_int = 10; |
| pub const ENDDOC: c_int = 11; |
| pub const GETPHYSPAGESIZE: c_int = 12; |
| pub const GETPRINTINGOFFSET: c_int = 13; |
| pub const GETSCALINGFACTOR: c_int = 14; |
| pub const MFCOMMENT: c_int = 15; |
| pub const GETPENWIDTH: c_int = 16; |
| pub const SETCOPYCOUNT: c_int = 17; |
| pub const SELECTPAPERSOURCE: c_int = 18; |
| pub const DEVICEDATA: c_int = 19; |
| pub const PASSTHROUGH: c_int = 19; |
| pub const GETTECHNOLGY: c_int = 20; |
| pub const GETTECHNOLOGY: c_int = 20; |
| pub const SETLINECAP: c_int = 21; |
| pub const SETLINEJOIN: c_int = 22; |
| pub const SETMITERLIMIT: c_int = 23; |
| pub const BANDINFO: c_int = 24; |
| pub const DRAWPATTERNRECT: c_int = 25; |
| pub const GETVECTORPENSIZE: c_int = 26; |
| pub const GETVECTORBRUSHSIZE: c_int = 27; |
| pub const ENABLEDUPLEX: c_int = 28; |
| pub const GETSETPAPERBINS: c_int = 29; |
| pub const GETSETPRINTORIENT: c_int = 30; |
| pub const ENUMPAPERBINS: c_int = 31; |
| pub const SETDIBSCALING: c_int = 32; |
| pub const EPSPRINTING: c_int = 33; |
| pub const ENUMPAPERMETRICS: c_int = 34; |
| pub const GETSETPAPERMETRICS: c_int = 35; |
| pub const POSTSCRIPT_DATA: c_int = 37; |
| pub const POSTSCRIPT_IGNORE: c_int = 38; |
| pub const MOUSETRAILS: c_int = 39; |
| pub const GETDEVICEUNITS: c_int = 42; |
| pub const GETEXTENDEDTEXTMETRICS: c_int = 256; |
| pub const GETEXTENTTABLE: c_int = 257; |
| pub const GETPAIRKERNTABLE: c_int = 258; |
| pub const GETTRACKKERNTABLE: c_int = 259; |
| pub const EXTTEXTOUT: c_int = 512; |
| pub const GETFACENAME: c_int = 513; |
| pub const DOWNLOADFACE: c_int = 514; |
| pub const ENABLERELATIVEWIDTHS: c_int = 768; |
| pub const ENABLEPAIRKERNING: c_int = 769; |
| pub const SETKERNTRACK: c_int = 770; |
| pub const SETALLJUSTVALUES: c_int = 771; |
| pub const SETCHARSET: c_int = 772; |
| pub const STRETCHBLT: c_int = 2048; |
| pub const METAFILE_DRIVER: c_int = 2049; |
| pub const GETSETSCREENPARAMS: c_int = 3072; |
| pub const QUERYDIBSUPPORT: c_int = 3073; |
| pub const BEGIN_PATH: c_int = 4096; |
| pub const CLIP_TO_PATH: c_int = 4097; |
| pub const END_PATH: c_int = 4098; |
| pub const EXT_DEVICE_CAPS: c_int = 4099; |
| pub const RESTORE_CTM: c_int = 4100; |
| pub const SAVE_CTM: c_int = 4101; |
| pub const SET_ARC_DIRECTION: c_int = 4102; |
| pub const SET_BACKGROUND_COLOR: c_int = 4103; |
| pub const SET_POLY_MODE: c_int = 4104; |
| pub const SET_SCREEN_ANGLE: c_int = 4105; |
| pub const SET_SPREAD: c_int = 4106; |
| pub const TRANSFORM_CTM: c_int = 4107; |
| pub const SET_CLIP_BOX: c_int = 4108; |
| pub const SET_BOUNDS: c_int = 4109; |
| pub const SET_MIRROR_MODE: c_int = 4110; |
| pub const OPENCHANNEL: c_int = 4110; |
| pub const DOWNLOADHEADER: c_int = 4111; |
| pub const CLOSECHANNEL: c_int = 4112; |
| pub const POSTSCRIPT_PASSTHROUGH: c_int = 4115; |
| pub const ENCAPSULATED_POSTSCRIPT: c_int = 4116; |
| pub const POSTSCRIPT_IDENTIFY: c_int = 4117; |
| pub const POSTSCRIPT_INJECTION: c_int = 4118; |
| pub const CHECKJPEGFORMAT: c_int = 4119; |
| pub const CHECKPNGFORMAT: c_int = 4120; |
| pub const GET_PS_FEATURESETTING: c_int = 4121; |
| pub const GDIPLUS_TS_QUERYVER: c_int = 4122; |
| pub const GDIPLUS_TS_RECORD: c_int = 4123; |
| pub const MILCORE_TS_QUERYVER_RESULT_FALSE: c_int = 0x0; |
| pub const MILCORE_TS_QUERYVER_RESULT_TRUE: c_int = 0x7FFFFFFF; |
| pub const SPCLPASSTHROUGH2: c_int = 4568; |
| pub const PSIDENT_GDICENTRIC: c_int = 0; |
| pub const PSIDENT_PSCENTRIC: c_int = 1; |
| STRUCT!{struct PSINJECTDATA { |
| DataBytes: DWORD, |
| InjectionPoint: WORD, |
| PageNumber: WORD, |
| }} |
| pub type PPSINJECTDATA = *mut PSINJECTDATA; |
| pub const PSINJECT_BEGINSTREAM: WORD = 1; |
| pub const PSINJECT_PSADOBE: WORD = 2; |
| pub const PSINJECT_PAGESATEND: WORD = 3; |
| pub const PSINJECT_PAGES: WORD = 4; |
| pub const PSINJECT_DOCNEEDEDRES: WORD = 5; |
| pub const PSINJECT_DOCSUPPLIEDRES: WORD = 6; |
| pub const PSINJECT_PAGEORDER: WORD = 7; |
| pub const PSINJECT_ORIENTATION: WORD = 8; |
| pub const PSINJECT_BOUNDINGBOX: WORD = 9; |
| pub const PSINJECT_DOCUMENTPROCESSCOLORS: WORD = 10; |
| pub const PSINJECT_COMMENTS: WORD = 11; |
| pub const PSINJECT_BEGINDEFAULTS: WORD = 12; |
| pub const PSINJECT_ENDDEFAULTS: WORD = 13; |
| pub const PSINJECT_BEGINPROLOG: WORD = 14; |
| pub const PSINJECT_ENDPROLOG: WORD = 15; |
| pub const PSINJECT_BEGINSETUP: WORD = 16; |
| pub const PSINJECT_ENDSETUP: WORD = 17; |
| pub const PSINJECT_TRAILER: WORD = 18; |
| pub const PSINJECT_EOF: WORD = 19; |
| pub const PSINJECT_ENDSTREAM: WORD = 20; |
| pub const PSINJECT_DOCUMENTPROCESSCOLORSATEND: WORD = 21; |
| pub const PSINJECT_PAGENUMBER: WORD = 100; |
| pub const PSINJECT_BEGINPAGESETUP: WORD = 101; |
| pub const PSINJECT_ENDPAGESETUP: WORD = 102; |
| pub const PSINJECT_PAGETRAILER: WORD = 103; |
| pub const PSINJECT_PLATECOLOR: WORD = 104; |
| pub const PSINJECT_SHOWPAGE: WORD = 105; |
| pub const PSINJECT_PAGEBBOX: WORD = 106; |
| pub const PSINJECT_ENDPAGECOMMENTS: WORD = 107; |
| pub const PSINJECT_VMSAVE: WORD = 200; |
| pub const PSINJECT_VMRESTORE: WORD = 201; |
| pub const PSINJECT_DLFONT: DWORD = 0xdddddddd; |
| pub const FEATURESETTING_NUP: WORD = 0; |
| pub const FEATURESETTING_OUTPUT: WORD = 1; |
| pub const FEATURESETTING_PSLEVEL: WORD = 2; |
| pub const FEATURESETTING_CUSTPAPER: WORD = 3; |
| pub const FEATURESETTING_MIRROR: WORD = 4; |
| pub const FEATURESETTING_NEGATIVE: WORD = 5; |
| pub const FEATURESETTING_PROTOCOL: WORD = 6; |
| pub const FEATURESETTING_PRIVATE_BEGIN: WORD = 0x1000; |
| pub const FEATURESETTING_PRIVATE_END: WORD = 0x1FFF; |
| STRUCT!{struct PSFEATURE_OUTPUT { |
| bPageIndependent: BOOL, |
| bSetPageDevice: BOOL, |
| }} |
| pub type PPSFEATURE_OUTPUT = *mut PSFEATURE_OUTPUT; |
| STRUCT!{struct PSFEATURE_CUSTPAPER { |
| lOrientation: LONG, |
| lWidth: LONG, |
| lHeight: LONG, |
| lWidthOffset: LONG, |
| lHeightOffset: LONG, |
| }} |
| pub type PPSFEATURE_CUSTPAPER = *mut PSFEATURE_CUSTPAPER; |
| pub const PSPROTOCOL_ASCII: c_int = 0; |
| pub const PSPROTOCOL_BCP: c_int = 1; |
| pub const PSPROTOCOL_TBCP: c_int = 2; |
| pub const PSPROTOCOL_BINARY: c_int = 3; |
| pub const QDI_SETDIBITS: c_int = 1; |
| pub const QDI_GETDIBITS: c_int = 2; |
| pub const QDI_DIBTOSCREEN: c_int = 4; |
| pub const QDI_STRETCHDIB: c_int = 8; |
| pub const SP_NOTREPORTED: c_int = 0x4000; |
| pub const SP_ERROR: c_int = -1; |
| pub const SP_APPABORT: c_int = -2; |
| pub const SP_USERABORT: c_int = -3; |
| pub const SP_OUTOFDISK: c_int = -4; |
| pub const SP_OUTOFMEMORY: c_int = -5; |
| pub const PR_JOBSTATUS: c_int = 0x0000; |
| pub const OBJ_PEN: UINT = 1; |
| pub const OBJ_BRUSH: UINT = 2; |
| pub const OBJ_DC: UINT = 3; |
| pub const OBJ_METADC: UINT = 4; |
| pub const OBJ_PAL: UINT = 5; |
| pub const OBJ_FONT: UINT = 6; |
| pub const OBJ_BITMAP: UINT = 7; |
| pub const OBJ_REGION: UINT = 8; |
| pub const OBJ_METAFILE: UINT = 9; |
| pub const OBJ_MEMDC: UINT = 10; |
| pub const OBJ_EXTPEN: UINT = 11; |
| pub const OBJ_ENHMETADC: UINT = 12; |
| pub const OBJ_ENHMETAFILE: UINT = 13; |
| pub const OBJ_COLORSPACE: UINT = 14; |
| pub const GDI_OBJ_LAST: UINT = OBJ_COLORSPACE; |
| pub const MWT_IDENTITY: c_int = 1; |
| pub const MWT_LEFTMULTIPLY: c_int = 2; |
| pub const MWT_RIGHTMULTIPLY: c_int = 3; |
| pub const MWT_MIN: c_int = MWT_IDENTITY; |
| pub const MWT_MAX: c_int = MWT_RIGHTMULTIPLY; |
| STRUCT!{struct XFORM { |
| eM11: FLOAT, |
| eM12: FLOAT, |
| eM21: FLOAT, |
| eM22: FLOAT, |
| eDx: FLOAT, |
| eDy: FLOAT, |
| }} |
| pub type PXFORM = *mut XFORM; |
| pub type LPXFORM = *mut XFORM; |
| STRUCT!{struct BITMAP { |
| bmType: LONG, |
| bmWidth: LONG, |
| bmHeight: LONG, |
| bmWidthBytes: LONG, |
| bmPlanes: WORD, |
| bmBitsPixel: WORD, |
| bmBits: LPVOID, |
| }} |
| pub type PBITMAP = *mut BITMAP; |
| pub type NPBITMAP = *mut BITMAP; |
| pub type LPBITMAP = *mut BITMAP; |
| STRUCT!{#[debug] struct RGBTRIPLE { |
| rgbtBlue: BYTE, |
| rgbtGreen: BYTE, |
| rgbtRed: BYTE, |
| }} |
| pub type PRGBTRIPLE = *mut RGBTRIPLE; |
| pub type NPRGBTRIPLE = *mut RGBTRIPLE; |
| pub type LPRGBTRIPLE = *mut RGBTRIPLE; |
| STRUCT!{#[debug] struct RGBQUAD { |
| rgbBlue: BYTE, |
| rgbGreen: BYTE, |
| rgbRed: BYTE, |
| rgbReserved: BYTE, |
| }} |
| pub type LPRGBQUAD = *mut RGBQUAD; |
| pub const CS_ENABLE: DWORD = 0x00000001; |
| pub const CS_DISABLE: DWORD = 0x00000002; |
| pub const CS_DELETE_TRANSFORM: DWORD = 0x00000003; |
| pub const LCS_SIGNATURE: DWORD = 0x5053_4F43; // 'PSOC' |
| pub const LCS_sRGB: LCSCSTYPE = 0x7352_4742; // 'sRGB' |
| pub const LCS_WINDOWS_COLOR_SPACE: LCSCSTYPE = 0x5769_6E20; // 'Win ' |
| pub type LCSCSTYPE = LONG; |
| pub const LCS_CALIBRATED_RGB: LCSCSTYPE = 0x00000000; |
| pub type LCSGAMUTMATCH = LONG; |
| pub const LCS_GM_BUSINESS: LCSGAMUTMATCH = 0x00000001; |
| pub const LCS_GM_GRAPHICS: LCSGAMUTMATCH = 0x00000002; |
| pub const LCS_GM_IMAGES: LCSGAMUTMATCH = 0x00000004; |
| pub const LCS_GM_ABS_COLORIMETRIC: LCSGAMUTMATCH = 0x00000008; |
| pub const CM_OUT_OF_GAMUT: BYTE = 255; |
| pub const CM_IN_GAMUT: BYTE = 0; |
| pub const ICM_ADDPROFILE: UINT = 1; |
| pub const ICM_DELETEPROFILE: UINT = 2; |
| pub const ICM_QUERYPROFILE: UINT = 3; |
| pub const ICM_SETDEFAULTPROFILE: UINT = 4; |
| pub const ICM_REGISTERICMATCHER: UINT = 5; |
| pub const ICM_UNREGISTERICMATCHER: UINT = 6; |
| pub const ICM_QUERYMATCH: UINT = 7; |
| #[inline] |
| pub fn GetKValue(cmyk: COLORREF) -> BYTE { |
| cmyk as BYTE |
| } |
| #[inline] |
| pub fn GetYValue(cmyk: COLORREF) -> BYTE { |
| (cmyk >> 8) as BYTE |
| } |
| #[inline] |
| pub fn GetMValue(cmyk: COLORREF) -> BYTE { |
| (cmyk >> 16) as BYTE |
| } |
| #[inline] |
| pub fn GetCValue(cmyk: COLORREF) -> BYTE { |
| (cmyk >> 24) as BYTE |
| } |
| #[inline] |
| pub fn CMYK(c: BYTE, m: BYTE, y: BYTE, k: BYTE) -> COLORREF { |
| (k as COLORREF) | ((y as COLORREF) << 8) | ((m as COLORREF) << 16) | ((c as COLORREF) << 24) |
| } |
| pub type FXPT16DOT16 = c_long; |
| pub type LPFXPT16DOT16 = *mut c_long; |
| pub type FXPT2DOT30 = c_long; |
| pub type LPFXPT2DOT30 = *mut c_long; |
| STRUCT!{#[debug] struct CIEXYZ { |
| ciexyzX: FXPT2DOT30, |
| ciexyzY: FXPT2DOT30, |
| ciexyzZ: FXPT2DOT30, |
| }} |
| pub type LPCIEXYZ = *mut CIEXYZ; |
| STRUCT!{#[debug] struct CIEXYZTRIPLE { |
| ciexyzRed: CIEXYZ, |
| ciexyzGreen: CIEXYZ, |
| ciexyzBlue: CIEXYZ, |
| }} |
| pub type LPCIEXYZTRIPLE = *mut CIEXYZTRIPLE; |
| STRUCT!{struct LOGCOLORSPACEA { |
| lcsSignature: DWORD, |
| lcsVersion: DWORD, |
| lcsSize: DWORD, |
| lcsCSType: LCSCSTYPE, |
| lcsIntent: LCSGAMUTMATCH, |
| lcsEndpoints: CIEXYZTRIPLE, |
| lcsGammaRed: DWORD, |
| lcsGammaGreen: DWORD, |
| lcsGammaBlue: DWORD, |
| lcsFilename: [CHAR; MAX_PATH], |
| }} |
| pub type LPLOGCOLORSPACEA = *mut LOGCOLORSPACEA; |
| STRUCT!{struct LOGCOLORSPACEW { |
| lcsSignature: DWORD, |
| lcsVersion: DWORD, |
| lcsSize: DWORD, |
| lcsCSType: LCSCSTYPE, |
| lcsIntent: LCSGAMUTMATCH, |
| lcsEndpoints: CIEXYZTRIPLE, |
| lcsGammaRed: DWORD, |
| lcsGammaGreen: DWORD, |
| lcsGammaBlue: DWORD, |
| lcsFilename: [WCHAR; MAX_PATH], |
| }} |
| pub type LPLOGCOLORSPACEW = *mut LOGCOLORSPACEW; |
| STRUCT!{#[debug] struct BITMAPCOREHEADER { |
| bcSize: DWORD, |
| bcWidth: WORD, |
| bcHeight: WORD, |
| bcPlanes: WORD, |
| bcBitCount: WORD, |
| }} |
| pub type LPBITMAPCOREHEADER = *mut BITMAPCOREHEADER; |
| pub type PBITMAPCOREHEADER = *mut BITMAPCOREHEADER; |
| STRUCT!{#[debug] struct BITMAPINFOHEADER { |
| biSize: DWORD, |
| biWidth: LONG, |
| biHeight: LONG, |
| biPlanes: WORD, |
| biBitCount: WORD, |
| biCompression: DWORD, |
| biSizeImage: DWORD, |
| biXPelsPerMeter: LONG, |
| biYPelsPerMeter: LONG, |
| biClrUsed: DWORD, |
| biClrImportant: DWORD, |
| }} |
| pub type LPBITMAPINFOHEADER = *mut BITMAPINFOHEADER; |
| pub type PBITMAPINFOHEADER = *mut BITMAPINFOHEADER; |
| STRUCT!{#[debug] struct BITMAPV4HEADER { |
| bV4Size: DWORD, |
| bV4Width: LONG, |
| bV4Height: LONG, |
| bV4Planes: WORD, |
| bV4BitCount: WORD, |
| bV4V4Compression: DWORD, |
| bV4SizeImage: DWORD, |
| bV4XPelsPerMeter: LONG, |
| bV4YPelsPerMeter: LONG, |
| bV4ClrUsed: DWORD, |
| bV4ClrImportant: DWORD, |
| bV4RedMask: DWORD, |
| bV4GreenMask: DWORD, |
| bV4BlueMask: DWORD, |
| bV4AlphaMask: DWORD, |
| bV4CSType: DWORD, |
| bV4Endpoints: CIEXYZTRIPLE, |
| bV4GammaRed: DWORD, |
| bV4GammaGreen: DWORD, |
| bV4GammaBlue: DWORD, |
| }} |
| pub type LPBITMAPV4HEADER = *mut BITMAPV4HEADER; |
| pub type PBITMAPV4HEADER = *mut BITMAPV4HEADER; |
| STRUCT!{#[debug] struct BITMAPV5HEADER { |
| bV5Size: DWORD, |
| bV5Width: LONG, |
| bV5Height: LONG, |
| bV5Planes: WORD, |
| bV5BitCount: WORD, |
| bV5Compression: DWORD, |
| bV5SizeImage: DWORD, |
| bV5XPelsPerMeter: LONG, |
| bV5YPelsPerMeter: LONG, |
| bV5ClrUsed: DWORD, |
| bV5ClrImportant: DWORD, |
| bV5RedMask: DWORD, |
| bV5GreenMask: DWORD, |
| bV5BlueMask: DWORD, |
| bV5AlphaMask: DWORD, |
| bV5CSType: DWORD, |
| bV5Endpoints: CIEXYZTRIPLE, |
| bV5GammaRed: DWORD, |
| bV5GammaGreen: DWORD, |
| bV5GammaBlue: DWORD, |
| bV5Intent: DWORD, |
| bV5ProfileData: DWORD, |
| bV5ProfileSize: DWORD, |
| bV5Reserved: DWORD, |
| }} |
| pub type LPBITMAPV5HEADER = *mut BITMAPV5HEADER; |
| pub type PBITMAPV5HEADER = *mut BITMAPV5HEADER; |
| pub const PROFILE_LINKED: LONG = 0x4C49_4E4B; // 'LINK' |
| pub const PROFILE_EMBEDDED: LONG = 0x4D42_4544; // 'MBED' |
| pub const BI_RGB: DWORD = 0; |
| pub const BI_RLE8: DWORD = 1; |
| pub const BI_RLE4: DWORD = 2; |
| pub const BI_BITFIELDS: DWORD = 3; |
| pub const BI_JPEG: DWORD = 4; |
| pub const BI_PNG: DWORD = 5; |
| STRUCT!{#[debug] struct BITMAPINFO { |
| bmiHeader: BITMAPINFOHEADER, |
| bmiColors: [RGBQUAD; 1], |
| }} |
| pub type LPBITMAPINFO = *mut BITMAPINFO; |
| pub type PBITMAPINFO = *mut BITMAPINFO; |
| STRUCT!{#[debug] struct BITMAPCOREINFO { |
| bmciHeader: BITMAPCOREHEADER, |
| bmciColors: [RGBTRIPLE; 1], |
| }} |
| pub type LPBITMAPCOREINFO = *mut BITMAPCOREINFO; |
| pub type PBITMAPCOREINFO = *mut BITMAPCOREINFO; |
| STRUCT!{ #[debug] #[repr(packed)] struct BITMAPFILEHEADER { |
| bfType: WORD, |
| bfSize: DWORD, |
| bfReserved1: WORD, |
| bfReserved2: WORD, |
| bfOffBits: DWORD, |
| }} |
| pub type LPBITMAPFILEHEADER = *mut BITMAPFILEHEADER; |
| pub type PBITMAPFILEHEADER = *mut BITMAPFILEHEADER; |
| #[inline] |
| pub fn MAKEPOINTS(l: DWORD) -> POINTS { |
| unsafe { ::core::mem::transmute::<DWORD, POINTS>(l) } |
| } |
| STRUCT!{#[debug] struct FONTSIGNATURE { |
| fsUsb: [DWORD; 4], |
| fsCsb: [DWORD; 2], |
| }} |
| pub type LPFONTSIGNATURE = *mut FONTSIGNATURE; |
| pub type PFONTSIGNATURE = *mut FONTSIGNATURE; |
| STRUCT!{#[debug] struct CHARSETINFO { |
| ciCharset: UINT, |
| ciACP: UINT, |
| fs: FONTSIGNATURE, |
| }} |
| pub type PCHARSETINFO = *mut CHARSETINFO; |
| pub type NPCHARSETINFO = *mut CHARSETINFO; |
| pub type LPCHARSETINFO = *mut CHARSETINFO; |
| pub const TCI_SRCCHARSET: c_int = 1; |
| pub const TCI_SRCCODEPAGE: c_int = 2; |
| pub const TCI_SRCFONTSIG: c_int = 3; |
| pub const TCI_SRCLOCALE: c_int = 0x1000; |
| STRUCT!{#[debug] struct LOCALESIGNATURE { |
| lsUsb: [DWORD; 4], |
| lsCsbDefault: [DWORD; 2], |
| lsCsbSupported: [DWORD; 2], |
| }} |
| pub type PLOCALESIGNATURE = *mut LOCALESIGNATURE; |
| pub type LPLOCALESIGNATURE = *mut LOCALESIGNATURE; |
| STRUCT!{struct HANDLETABLE { |
| objectHandle: [HGDIOBJ; 1], |
| }} |
| pub type LPHANDLETABLE = *mut HANDLETABLE; |
| pub type PHANDLETABLE = *mut HANDLETABLE; |
| STRUCT!{struct METARECORD { |
| rdSize: DWORD, |
| rdFunction: WORD, |
| rdParm: [WORD; 1], |
| }} |
| pub type PMETARECORD = *mut METARECORD; |
| pub type LPMETARECORD = *mut METARECORD; |
| STRUCT!{struct METAFILEPICT { |
| mm: LONG, |
| xExt: LONG, |
| yExt: LONG, |
| hMF: HMETAFILE, |
| }} |
| pub type LPMETAFILEPICT = *mut METAFILEPICT; |
| STRUCT!{struct METAHEADER { |
| mtType: WORD, |
| mtHeaderSize: WORD, |
| mtVersion: WORD, |
| mtSize: DWORD, |
| mtNoObjects: WORD, |
| mtMaxRecord: DWORD, |
| mtNoParameters: WORD, |
| }} |
| pub type PMETAHEADER = *mut METAHEADER; |
| pub type LPMETAHEADER = *mut METAHEADER; |
| STRUCT!{struct ENHMETARECORD { |
| iType: DWORD, |
| nSize: DWORD, |
| dParm: [DWORD; 1], |
| }} |
| pub type PENHMETARECORD = *mut ENHMETARECORD; |
| pub type LPENHMETARECORD = *mut ENHMETARECORD; |
| STRUCT!{struct ENHMETAHEADER { |
| iType: DWORD, |
| nSize: DWORD, |
| rclBounds: RECTL, |
| rclFrame: RECTL, |
| dSignature: DWORD, |
| nVersion: DWORD, |
| nBytes: DWORD, |
| nRecords: DWORD, |
| nHandles: WORD, |
| sReserved: WORD, |
| nDescription: DWORD, |
| offDescription: DWORD, |
| nPalEntries: DWORD, |
| szlDevice: SIZEL, |
| szlMillimeters: SIZEL, |
| cbPixelFormat: DWORD, |
| offPixelFormat: DWORD, |
| bOpenGL: DWORD, |
| szlMicrometers: SIZEL, |
| }} |
| pub type PENHMETAHEADER = *mut ENHMETAHEADER; |
| pub type LPENHMETAHEADER = *mut ENHMETAHEADER; |
| pub const TMPF_FIXED_PITCH: BYTE = 0x01; |
| pub const TMPF_VECTOR: BYTE = 0x02; |
| pub const TMPF_DEVICE: BYTE = 0x08; |
| pub const TMPF_TRUETYPE: BYTE = 0x04; |
| // BCHAR |
| STRUCT!{struct TEXTMETRICA { |
| tmHeight: LONG, |
| tmAscent: LONG, |
| tmDescent: LONG, |
| tmInternalLeading: LONG, |
| tmExternalLeading: LONG, |
| tmAveCharWidth: LONG, |
| tmMaxCharWidth: LONG, |
| tmWeight: LONG, |
| tmOverhang: LONG, |
| tmDigitizedAspectX: LONG, |
| tmDigitizedAspectY: LONG, |
| tmFirstChar: BYTE, |
| tmLastChar: BYTE, |
| tmDefaultChar: BYTE, |
| tmBreakChar: BYTE, |
| tmItalic: BYTE, |
| tmUnderlined: BYTE, |
| tmStruckOut: BYTE, |
| tmPitchAndFamily: BYTE, |
| tmCharSet: BYTE, |
| }} |
| pub type PTEXTMETRICA = *mut TEXTMETRICA; |
| pub type NPTEXTMETRICA = *mut TEXTMETRICA; |
| pub type LPTEXTMETRICA = *mut TEXTMETRICA; |
| STRUCT!{struct TEXTMETRICW { |
| tmHeight: LONG, |
| tmAscent: LONG, |
| tmDescent: LONG, |
| tmInternalLeading: LONG, |
| tmExternalLeading: LONG, |
| tmAveCharWidth: LONG, |
| tmMaxCharWidth: LONG, |
| tmWeight: LONG, |
| tmOverhang: LONG, |
| tmDigitizedAspectX: LONG, |
| tmDigitizedAspectY: LONG, |
| tmFirstChar: WCHAR, |
| tmLastChar: WCHAR, |
| tmDefaultChar: WCHAR, |
| tmBreakChar: WCHAR, |
| tmItalic: BYTE, |
| tmUnderlined: BYTE, |
| tmStruckOut: BYTE, |
| tmPitchAndFamily: BYTE, |
| tmCharSet: BYTE, |
| }} |
| pub type PTEXTMETRICW = *mut TEXTMETRICW; |
| pub type NPTEXTMETRICW = *mut TEXTMETRICW; |
| pub type LPTEXTMETRICW = *mut TEXTMETRICW; |
| pub const NTM_REGULAR: DWORD = 0x00000040; |
| pub const NTM_BOLD: DWORD = 0x00000020; |
| pub const NTM_ITALIC: DWORD = 0x00000001; |
| pub const NTM_NONNEGATIVE_AC: DWORD = 0x00010000; |
| pub const NTM_PS_OPENTYPE: DWORD = 0x00020000; |
| pub const NTM_TT_OPENTYPE: DWORD = 0x00040000; |
| pub const NTM_MULTIPLEMASTER: DWORD = 0x00080000; |
| pub const NTM_TYPE1: DWORD = 0x00100000; |
| pub const NTM_DSIG: DWORD = 0x00200000; |
| STRUCT!{struct NEWTEXTMETRICA { |
| tmHeight: LONG, |
| tmAscent: LONG, |
| tmDescent: LONG, |
| tmInternalLeading: LONG, |
| tmExternalLeading: LONG, |
| tmAveCharWidth: LONG, |
| tmMaxCharWidth: LONG, |
| tmWeight: LONG, |
| tmOverhang: LONG, |
| tmDigitizedAspectX: LONG, |
| tmDigitizedAspectY: LONG, |
| tmFirstChar: BYTE, |
| tmLastChar: BYTE, |
| tmDefaultChar: BYTE, |
| tmBreakChar: BYTE, |
| tmItalic: BYTE, |
| tmUnderlined: BYTE, |
| tmStruckOut: BYTE, |
| tmPitchAndFamily: BYTE, |
| tmCharSet: BYTE, |
| ntmFlags: DWORD, |
| ntmSizeEM: UINT, |
| ntmCellHeight: UINT, |
| ntmAvgWidth: UINT, |
| }} |
| pub type PNEWTEXTMETRICA = *mut NEWTEXTMETRICA; |
| pub type NPNEWTEXTMETRICA = *mut NEWTEXTMETRICA; |
| pub type LPNEWTEXTMETRICA = *mut NEWTEXTMETRICA; |
| STRUCT!{struct NEWTEXTMETRICW { |
| tmHeight: LONG, |
| tmAscent: LONG, |
| tmDescent: LONG, |
| tmInternalLeading: LONG, |
| tmExternalLeading: LONG, |
| tmAveCharWidth: LONG, |
| tmMaxCharWidth: LONG, |
| tmWeight: LONG, |
| tmOverhang: LONG, |
| tmDigitizedAspectX: LONG, |
| tmDigitizedAspectY: LONG, |
| tmFirstChar: WCHAR, |
| tmLastChar: WCHAR, |
| tmDefaultChar: WCHAR, |
| tmBreakChar: WCHAR, |
| tmItalic: BYTE, |
| tmUnderlined: BYTE, |
| tmStruckOut: BYTE, |
| tmPitchAndFamily: BYTE, |
| tmCharSet: BYTE, |
| ntmFlags: DWORD, |
| ntmSizeEM: UINT, |
| ntmCellHeight: UINT, |
| ntmAvgWidth: UINT, |
| }} |
| pub type PNEWTEXTMETRICW = *mut NEWTEXTMETRICW; |
| pub type NPNEWTEXTMETRICW = *mut NEWTEXTMETRICW; |
| pub type LPNEWTEXTMETRICW = *mut NEWTEXTMETRICW; |
| STRUCT!{struct NEWTEXTMETRICEXA { |
| ntmTm: NEWTEXTMETRICA, |
| ntmFontSig: FONTSIGNATURE, |
| }} |
| STRUCT!{struct NEWTEXTMETRICEXW { |
| ntmTm: NEWTEXTMETRICW, |
| ntmFontSig: FONTSIGNATURE, |
| }} |
| STRUCT!{struct PELARRAY { |
| paXCount: LONG, |
| paYCount: LONG, |
| paXExt: LONG, |
| paYExt: LONG, |
| paRGBs: BYTE, |
| }} |
| pub type PPELARRAY = *mut PELARRAY; |
| pub type NPPELARRAY = *mut PELARRAY; |
| pub type LPPELARRAY = *mut PELARRAY; |
| STRUCT!{struct LOGBRUSH { |
| lbStyle: UINT, |
| lbColor: COLORREF, |
| lbHatch: ULONG_PTR, |
| }} |
| pub type PLOGBRUSH = *mut LOGBRUSH; |
| pub type NPLOGBRUSH = *mut LOGBRUSH; |
| pub type LPLOGBRUSH = *mut LOGBRUSH; |
| STRUCT!{struct LOGBRUSH32 { |
| lbStyle: UINT, |
| lbColor: COLORREF, |
| lbHatch: ULONG, |
| }} |
| pub type PLOGBRUSH32 = *mut LOGBRUSH32; |
| pub type NPLOGBRUSH32 = *mut LOGBRUSH32; |
| pub type LPLOGBRUSH32 = *mut LOGBRUSH32; |
| pub type PATTERN = LOGBRUSH; |
| pub type PPATTERN = *mut PATTERN; |
| pub type NPPATTERN = *mut PATTERN; |
| pub type LPPATTERN = *mut PATTERN; |
| STRUCT!{struct LOGPEN { |
| lopnStyle: UINT, |
| lopnWidth: POINT, |
| lopnColor: COLORREF, |
| }} |
| pub type PLOGPEN = *mut LOGPEN; |
| pub type NPLOGPEN = *mut LOGPEN; |
| pub type LPLOGPEN = *mut LOGPEN; |
| STRUCT!{struct EXTLOGPEN { |
| elpPenStyle: DWORD, |
| elpWidth: DWORD, |
| elpBrushStyle: UINT, |
| elpColor: COLORREF, |
| elpHatch: ULONG_PTR, |
| elpNumEntries: DWORD, |
| elpStyleEntry: [DWORD; 1], |
| }} |
| pub type PEXTLOGPEN = *mut EXTLOGPEN; |
| pub type NPEXTLOGPEN = *mut EXTLOGPEN; |
| pub type LPEXTLOGPEN = *mut EXTLOGPEN; |
| STRUCT!{struct EXTLOGPEN32 { |
| elpPenStyle: DWORD, |
| elpWidth: DWORD, |
| elpBrushStyle: UINT, |
| elpColor: COLORREF, |
| elpHatch: ULONG, |
| elpNumEntries: DWORD, |
| elpStyleEntry: [DWORD; 1], |
| }} |
| pub type PEXTLOGPEN32 = *mut EXTLOGPEN32; |
| pub type NPEXTLOGPEN32 = *mut EXTLOGPEN32; |
| pub type LPEXTLOGPEN32 = *mut EXTLOGPEN32; |
| STRUCT!{struct PALETTEENTRY { |
| peRed: BYTE, |
| peGreen: BYTE, |
| peBlue: BYTE, |
| peFlags: BYTE, |
| }} |
| pub type PPALETTEENTRY = *mut PALETTEENTRY; |
| pub type LPPALETTEENTRY = *mut PALETTEENTRY; |
| STRUCT!{struct LOGPALETTE { |
| palVersion: WORD, |
| palNumEntries: WORD, |
| palPalEntry: [PALETTEENTRY; 1], |
| }} |
| pub type PLOGPALETTE = *mut LOGPALETTE; |
| pub type NPLOGPALETTE = *mut LOGPALETTE; |
| pub type LPLOGPALETTE = *mut LOGPALETTE; |
| pub const LF_FACESIZE: usize = 32; |
| STRUCT!{struct LOGFONTA { |
| lfHeight: LONG, |
| lfWidth: LONG, |
| lfEscapement: LONG, |
| lfOrientation: LONG, |
| lfWeight: LONG, |
| lfItalic: BYTE, |
| lfUnderline: BYTE, |
| lfStrikeOut: BYTE, |
| lfCharSet: BYTE, |
| lfOutPrecision: BYTE, |
| lfClipPrecision: BYTE, |
| lfQuality: BYTE, |
| lfPitchAndFamily: BYTE, |
| lfFaceName: [CHAR; LF_FACESIZE], |
| }} |
| pub type PLOGFONTA = *mut LOGFONTA; |
| pub type NPLOGFONTA = *mut LOGFONTA; |
| pub type LPLOGFONTA = *mut LOGFONTA; |
| STRUCT!{struct LOGFONTW { |
| lfHeight: LONG, |
| lfWidth: LONG, |
| lfEscapement: LONG, |
| lfOrientation: LONG, |
| lfWeight: LONG, |
| lfItalic: BYTE, |
| lfUnderline: BYTE, |
| lfStrikeOut: BYTE, |
| lfCharSet: BYTE, |
| lfOutPrecision: BYTE, |
| lfClipPrecision: BYTE, |
| lfQuality: BYTE, |
| lfPitchAndFamily: BYTE, |
| lfFaceName: [WCHAR; LF_FACESIZE], |
| }} |
| pub type PLOGFONTW = *mut LOGFONTW; |
| pub type NPLOGFONTW = *mut LOGFONTW; |
| pub type LPLOGFONTW = *mut LOGFONTW; |
| pub const LF_FULLFACESIZE: usize = 64; |
| STRUCT!{struct ENUMLOGFONTA { |
| elfLogFont: LOGFONTA, |
| elfFullName: [BYTE; LF_FULLFACESIZE], |
| elfStyle: [BYTE; LF_FACESIZE], |
| }} |
| pub type LPENUMLOGFONTA = *mut ENUMLOGFONTA; |
| STRUCT!{struct ENUMLOGFONTW { |
| elfLogFont: LOGFONTW, |
| elfFullName: [WCHAR; LF_FULLFACESIZE], |
| elfStyle: [WCHAR; LF_FACESIZE], |
| }} |
| pub type LPENUMLOGFONTW = *mut ENUMLOGFONTW; |
| STRUCT!{struct ENUMLOGFONTEXA { |
| elfLogFont: LOGFONTA, |
| elfFullName: [BYTE; LF_FULLFACESIZE], |
| elfStyle: [BYTE; LF_FACESIZE], |
| elfScript: [BYTE; LF_FACESIZE], |
| }} |
| pub type LPENUMLOGFONTEXA = *mut ENUMLOGFONTEXA; |
| STRUCT!{struct ENUMLOGFONTEXW { |
| elfLogFont: LOGFONTW, |
| elfFullName: [WCHAR; LF_FULLFACESIZE], |
| elfStyle: [WCHAR; LF_FACESIZE], |
| elfScript: [WCHAR; LF_FACESIZE], |
| }} |
| pub type LPENUMLOGFONTEXW = *mut ENUMLOGFONTEXW; |
| pub const OUT_DEFAULT_PRECIS: DWORD = 0; |
| pub const OUT_STRING_PRECIS: DWORD = 1; |
| pub const OUT_CHARACTER_PRECIS: DWORD = 2; |
| pub const OUT_STROKE_PRECIS: DWORD = 3; |
| pub const OUT_TT_PRECIS: DWORD = 4; |
| pub const OUT_DEVICE_PRECIS: DWORD = 5; |
| pub const OUT_RASTER_PRECIS: DWORD = 6; |
| pub const OUT_TT_ONLY_PRECIS: DWORD = 7; |
| pub const OUT_OUTLINE_PRECIS: DWORD = 8; |
| pub const OUT_SCREEN_OUTLINE_PRECIS: DWORD = 9; |
| pub const OUT_PS_ONLY_PRECIS: DWORD = 10; |
| pub const CLIP_DEFAULT_PRECIS: DWORD = 0; |
| pub const CLIP_CHARACTER_PRECIS: DWORD = 1; |
| pub const CLIP_STROKE_PRECIS: DWORD = 2; |
| pub const CLIP_MASK: DWORD = 0xf; |
| pub const CLIP_LH_ANGLES: DWORD = 1 << 4; |
| pub const CLIP_TT_ALWAYS: DWORD = 2 << 4; |
| pub const CLIP_DFA_DISABLE: DWORD = 4 << 4; |
| pub const CLIP_EMBEDDED: DWORD = 8 << 4; |
| pub const DEFAULT_QUALITY: DWORD = 0; |
| pub const DRAFT_QUALITY: DWORD = 1; |
| pub const PROOF_QUALITY: DWORD = 2; |
| pub const NONANTIALIASED_QUALITY: DWORD = 3; |
| pub const ANTIALIASED_QUALITY: DWORD = 4; |
| pub const CLEARTYPE_QUALITY: DWORD = 5; |
| pub const CLEARTYPE_NATURAL_QUALITY: DWORD = 6; |
| pub const DEFAULT_PITCH: DWORD = 0; |
| pub const FIXED_PITCH: DWORD = 1; |
| pub const VARIABLE_PITCH: DWORD = 2; |
| pub const MONO_FONT: DWORD = 8; |
| pub const ANSI_CHARSET: DWORD = 0; |
| pub const DEFAULT_CHARSET: DWORD = 1; |
| pub const SYMBOL_CHARSET: DWORD = 2; |
| pub const SHIFTJIS_CHARSET: DWORD = 128; |
| pub const HANGEUL_CHARSET: DWORD = 129; |
| pub const HANGUL_CHARSET: DWORD = 129; |
| pub const GB2312_CHARSET: DWORD = 134; |
| pub const CHINESEBIG5_CHARSET: DWORD = 136; |
| pub const OEM_CHARSET: DWORD = 255; |
| pub const JOHAB_CHARSET: DWORD = 130; |
| pub const HEBREW_CHARSET: DWORD = 177; |
| pub const ARABIC_CHARSET: DWORD = 178; |
| pub const GREEK_CHARSET: DWORD = 161; |
| pub const TURKISH_CHARSET: DWORD = 162; |
| pub const VIETNAMESE_CHARSET: DWORD = 163; |
| pub const THAI_CHARSET: DWORD = 222; |
| pub const EASTEUROPE_CHARSET: DWORD = 238; |
| pub const RUSSIAN_CHARSET: DWORD = 204; |
| pub const MAC_CHARSET: DWORD = 77; |
| pub const BALTIC_CHARSET: DWORD = 186; |
| pub const FS_LATIN1: DWORD = 0x00000001; |
| pub const FS_LATIN2: DWORD = 0x00000002; |
| pub const FS_CYRILLIC: DWORD = 0x00000004; |
| pub const FS_GREEK: DWORD = 0x00000008; |
| pub const FS_TURKISH: DWORD = 0x00000010; |
| pub const FS_HEBREW: DWORD = 0x00000020; |
| pub const FS_ARABIC: DWORD = 0x00000040; |
| pub const FS_BALTIC: DWORD = 0x00000080; |
| pub const FS_VIETNAMESE: DWORD = 0x00000100; |
| pub const FS_THAI: DWORD = 0x00010000; |
| pub const FS_JISJAPAN: DWORD = 0x00020000; |
| pub const FS_CHINESESIMP: DWORD = 0x00040000; |
| pub const FS_WANSUNG: DWORD = 0x00080000; |
| pub const FS_CHINESETRAD: DWORD = 0x00100000; |
| pub const FS_JOHAB: DWORD = 0x00200000; |
| pub const FS_SYMBOL: DWORD = 0x80000000; |
| pub const FF_DONTCARE: DWORD = 0 << 4; |
| pub const FF_ROMAN: DWORD = 1 << 4; |
| pub const FF_SWISS: DWORD = 2 << 4; |
| pub const FF_MODERN: DWORD = 3 << 4; |
| pub const FF_SCRIPT: DWORD = 4 << 4; |
| pub const FF_DECORATIVE: DWORD = 5 << 4; |
| pub const FW_DONTCARE: c_int = 0; |
| pub const FW_THIN: c_int = 100; |
| pub const FW_EXTRALIGHT: c_int = 200; |
| pub const FW_LIGHT: c_int = 300; |
| pub const FW_NORMAL: c_int = 400; |
| pub const FW_MEDIUM: c_int = 500; |
| pub const FW_SEMIBOLD: c_int = 600; |
| pub const FW_BOLD: c_int = 700; |
| pub const FW_EXTRABOLD: c_int = 800; |
| pub const FW_HEAVY: c_int = 900; |
| pub const FW_ULTRALIGHT: c_int = FW_EXTRALIGHT; |
| pub const FW_REGULAR: c_int = FW_NORMAL; |
| pub const FW_DEMIBOLD: c_int = FW_SEMIBOLD; |
| pub const FW_ULTRABOLD: c_int = FW_EXTRABOLD; |
| pub const FW_BLACK: c_int = FW_HEAVY; |
| pub const PANOSE_COUNT: DWORD = 10; |
| pub const PAN_FAMILYTYPE_INDEX: DWORD = 0; |
| pub const PAN_SERIFSTYLE_INDEX: DWORD = 1; |
| pub const PAN_WEIGHT_INDEX: DWORD = 2; |
| pub const PAN_PROPORTION_INDEX: DWORD = 3; |
| pub const PAN_CONTRAST_INDEX: DWORD = 4; |
| pub const PAN_STROKEVARIATION_INDEX: DWORD = 5; |
| pub const PAN_ARMSTYLE_INDEX: DWORD = 6; |
| pub const PAN_LETTERFORM_INDEX: DWORD = 7; |
| pub const PAN_MIDLINE_INDEX: DWORD = 8; |
| pub const PAN_XHEIGHT_INDEX: DWORD = 9; |
| pub const PAN_CULTURE_LATIN: DWORD = 0; |
| STRUCT!{struct PANOSE { |
| bFamilyType: BYTE, |
| bSerifStyle: BYTE, |
| bWeight: BYTE, |
| bProportion: BYTE, |
| bContrast: BYTE, |
| bStrokeVariation: BYTE, |
| bArmStyle: BYTE, |
| bLetterform: BYTE, |
| bMidline: BYTE, |
| bXHeight: BYTE, |
| }} |
| pub type LPPANOSE = *mut PANOSE; |
| pub const PAN_ANY: BYTE = 0; |
| pub const PAN_NO_FIT: BYTE = 1; |
| pub const PAN_FAMILY_TEXT_DISPLAY: BYTE = 2; |
| pub const PAN_FAMILY_SCRIPT: BYTE = 3; |
| pub const PAN_FAMILY_DECORATIVE: BYTE = 4; |
| pub const PAN_FAMILY_PICTORIAL: BYTE = 5; |
| pub const PAN_SERIF_COVE: BYTE = 2; |
| pub const PAN_SERIF_OBTUSE_COVE: BYTE = 3; |
| pub const PAN_SERIF_SQUARE_COVE: BYTE = 4; |
| pub const PAN_SERIF_OBTUSE_SQUARE_COVE: BYTE = 5; |
| pub const PAN_SERIF_SQUARE: BYTE = 6; |
| pub const PAN_SERIF_THIN: BYTE = 7; |
| pub const PAN_SERIF_BONE: BYTE = 8; |
| pub const PAN_SERIF_EXAGGERATED: BYTE = 9; |
| pub const PAN_SERIF_TRIANGLE: BYTE = 10; |
| pub const PAN_SERIF_NORMAL_SANS: BYTE = 11; |
| pub const PAN_SERIF_OBTUSE_SANS: BYTE = 12; |
| pub const PAN_SERIF_PERP_SANS: BYTE = 13; |
| pub const PAN_SERIF_FLARED: BYTE = 14; |
| pub const PAN_SERIF_ROUNDED: BYTE = 15; |
| pub const PAN_WEIGHT_VERY_LIGHT: BYTE = 2; |
| pub const PAN_WEIGHT_LIGHT: BYTE = 3; |
| pub const PAN_WEIGHT_THIN: BYTE = 4; |
| pub const PAN_WEIGHT_BOOK: BYTE = 5; |
| pub const PAN_WEIGHT_MEDIUM: BYTE = 6; |
| pub const PAN_WEIGHT_DEMI: BYTE = 7; |
| pub const PAN_WEIGHT_BOLD: BYTE = 8; |
| pub const PAN_WEIGHT_HEAVY: BYTE = 9; |
| pub const PAN_WEIGHT_BLACK: BYTE = 10; |
| pub const PAN_WEIGHT_NORD: BYTE = 11; |
| pub const PAN_PROP_OLD_STYLE: BYTE = 2; |
| pub const PAN_PROP_MODERN: BYTE = 3; |
| pub const PAN_PROP_EVEN_WIDTH: BYTE = 4; |
| pub const PAN_PROP_EXPANDED: BYTE = 5; |
| pub const PAN_PROP_CONDENSED: BYTE = 6; |
| pub const PAN_PROP_VERY_EXPANDED: BYTE = 7; |
| pub const PAN_PROP_VERY_CONDENSED: BYTE = 8; |
| pub const PAN_PROP_MONOSPACED: BYTE = 9; |
| pub const PAN_CONTRAST_NONE: BYTE = 2; |
| pub const PAN_CONTRAST_VERY_LOW: BYTE = 3; |
| pub const PAN_CONTRAST_LOW: BYTE = 4; |
| pub const PAN_CONTRAST_MEDIUM_LOW: BYTE = 5; |
| pub const PAN_CONTRAST_MEDIUM: BYTE = 6; |
| pub const PAN_CONTRAST_MEDIUM_HIGH: BYTE = 7; |
| pub const PAN_CONTRAST_HIGH: BYTE = 8; |
| pub const PAN_CONTRAST_VERY_HIGH: BYTE = 9; |
| pub const PAN_STROKE_GRADUAL_DIAG: BYTE = 2; |
| pub const PAN_STROKE_GRADUAL_TRAN: BYTE = 3; |
| pub const PAN_STROKE_GRADUAL_VERT: BYTE = 4; |
| pub const PAN_STROKE_GRADUAL_HORZ: BYTE = 5; |
| pub const PAN_STROKE_RAPID_VERT: BYTE = 6; |
| pub const PAN_STROKE_RAPID_HORZ: BYTE = 7; |
| pub const PAN_STROKE_INSTANT_VERT: BYTE = 8; |
| pub const PAN_STRAIGHT_ARMS_HORZ: BYTE = 2; |
| pub const PAN_STRAIGHT_ARMS_WEDGE: BYTE = 3; |
| pub const PAN_STRAIGHT_ARMS_VERT: BYTE = 4; |
| pub const PAN_STRAIGHT_ARMS_SINGLE_SERIF: BYTE = 5; |
| pub const PAN_STRAIGHT_ARMS_DOUBLE_SERIF: BYTE = 6; |
| pub const PAN_BENT_ARMS_HORZ: BYTE = 7; |
| pub const PAN_BENT_ARMS_WEDGE: BYTE = 8; |
| pub const PAN_BENT_ARMS_VERT: BYTE = 9; |
| pub const PAN_BENT_ARMS_SINGLE_SERIF: BYTE = 10; |
| pub const PAN_BENT_ARMS_DOUBLE_SERIF: BYTE = 11; |
| pub const PAN_LETT_NORMAL_CONTACT: BYTE = 2; |
| pub const PAN_LETT_NORMAL_WEIGHTED: BYTE = 3; |
| pub const PAN_LETT_NORMAL_BOXED: BYTE = 4; |
| pub const PAN_LETT_NORMAL_FLATTENED: BYTE = 5; |
| pub const PAN_LETT_NORMAL_ROUNDED: BYTE = 6; |
| pub const PAN_LETT_NORMAL_OFF_CENTER: BYTE = 7; |
| pub const PAN_LETT_NORMAL_SQUARE: BYTE = 8; |
| pub const PAN_LETT_OBLIQUE_CONTACT: BYTE = 9; |
| pub const PAN_LETT_OBLIQUE_WEIGHTED: BYTE = 10; |
| pub const PAN_LETT_OBLIQUE_BOXED: BYTE = 11; |
| pub const PAN_LETT_OBLIQUE_FLATTENED: BYTE = 12; |
| pub const PAN_LETT_OBLIQUE_ROUNDED: BYTE = 13; |
| pub const PAN_LETT_OBLIQUE_OFF_CENTER: BYTE = 14; |
| pub const PAN_LETT_OBLIQUE_SQUARE: BYTE = 15; |
| pub const PAN_MIDLINE_STANDARD_TRIMMED: BYTE = 2; |
| pub const PAN_MIDLINE_STANDARD_POINTED: BYTE = 3; |
| pub const PAN_MIDLINE_STANDARD_SERIFED: BYTE = 4; |
| pub const PAN_MIDLINE_HIGH_TRIMMED: BYTE = 5; |
| pub const PAN_MIDLINE_HIGH_POINTED: BYTE = 6; |
| pub const PAN_MIDLINE_HIGH_SERIFED: BYTE = 7; |
| pub const PAN_MIDLINE_CONSTANT_TRIMMED: BYTE = 8; |
| pub const PAN_MIDLINE_CONSTANT_POINTED: BYTE = 9; |
| pub const PAN_MIDLINE_CONSTANT_SERIFED: BYTE = 10; |
| pub const PAN_MIDLINE_LOW_TRIMMED: BYTE = 11; |
| pub const PAN_MIDLINE_LOW_POINTED: BYTE = 12; |
| pub const PAN_MIDLINE_LOW_SERIFED: BYTE = 13; |
| pub const PAN_XHEIGHT_CONSTANT_SMALL: BYTE = 2; |
| pub const PAN_XHEIGHT_CONSTANT_STD: BYTE = 3; |
| pub const PAN_XHEIGHT_CONSTANT_LARGE: BYTE = 4; |
| pub const PAN_XHEIGHT_DUCKING_SMALL: BYTE = 5; |
| pub const PAN_XHEIGHT_DUCKING_STD: BYTE = 6; |
| pub const PAN_XHEIGHT_DUCKING_LARGE: BYTE = 7; |
| pub const ELF_VENDOR_SIZE: usize = 4; |
| STRUCT!{struct EXTLOGFONTA { |
| elfLogFont: LOGFONTA, |
| elfFullName: [BYTE; LF_FULLFACESIZE], |
| elfStyle: [BYTE; LF_FACESIZE], |
| elfVersion: DWORD, |
| elfStyleSize: DWORD, |
| elfMatch: DWORD, |
| elfReserved: DWORD, |
| elfVendorId: [BYTE; ELF_VENDOR_SIZE], |
| elfCulture: DWORD, |
| elfPanose: PANOSE, |
| }} |
| pub type PEXTLOGFONTA = *mut EXTLOGFONTA; |
| pub type NPEXTLOGFONTA = *mut EXTLOGFONTA; |
| pub type LPEXTLOGFONTA = *mut EXTLOGFONTA; |
| STRUCT!{struct EXTLOGFONTW { |
| elfLogFont: LOGFONTW, |
| elfFullNam: [WCHAR; LF_FULLFACESIZE], |
| elfStyle: [WCHAR; LF_FACESIZE], |
| elfVersion: DWORD, |
| elfStyleSize: DWORD, |
| elfMatch: DWORD, |
| elfReserved: DWORD, |
| elfVendorId: [BYTE; ELF_VENDOR_SIZE], |
| elfCulture: DWORD, |
| elfPanose: PANOSE, |
| }} |
| pub type PEXTLOGFONTW = *mut EXTLOGFONTW; |
| pub type NPEXTLOGFONTW = *mut EXTLOGFONTW; |
| pub type LPEXTLOGFONTW = *mut EXTLOGFONTW; |
| pub const ELF_VERSION: DWORD = 0; |
| pub const ELF_CULTURE_LATIN: DWORD = 0; |
| pub const RASTER_FONTTYPE: DWORD = 0x0001; |
| pub const DEVICE_FONTTYPE: DWORD = 0x0002; |
| pub const TRUETYPE_FONTTYPE: DWORD = 0x0004; |
| #[inline] |
| pub fn RGB(r: BYTE, g: BYTE, b: BYTE) -> COLORREF { |
| r as COLORREF | ((g as COLORREF) << 8) | ((b as COLORREF) << 16) |
| } |
| #[inline] |
| pub fn PALETTERGB(r: BYTE, g: BYTE, b: BYTE) -> COLORREF { |
| 0x02000000 | RGB(r, g, b) |
| } |
| #[inline] |
| pub fn PALETTEINDEX(i: WORD) -> COLORREF { |
| 0x01000000 | i as DWORD |
| } |
| pub const PC_RESERVED: DWORD = 0x01; |
| pub const PC_EXPLICIT: DWORD = 0x02; |
| pub const PC_NOCOLLAPSE: DWORD = 0x04; |
| #[inline] |
| pub fn GetRValue(rgb: COLORREF) -> BYTE { |
| LOBYTE(rgb as WORD) |
| } |
| #[inline] |
| pub fn GetGValue(rgb: COLORREF) -> BYTE { |
| LOBYTE((rgb as WORD) >> 8) |
| } |
| #[inline] |
| pub fn GetBValue(rgb: COLORREF) -> BYTE { |
| LOBYTE((rgb >> 16) as WORD) |
| } |
| pub const TRANSPARENT: DWORD = 1; |
| pub const OPAQUE: DWORD = 2; |
| pub const BKMODE_LAST: DWORD = 2; |
| pub const GM_COMPATIBLE: DWORD = 1; |
| pub const GM_ADVANCED: DWORD = 2; |
| pub const GM_LAST: DWORD = 2; |
| pub const PT_CLOSEFIGURE: DWORD = 0x01; |
| pub const PT_LINETO: DWORD = 0x02; |
| pub const PT_BEZIERTO: DWORD = 0x04; |
| pub const PT_MOVETO: DWORD = 0x06; |
| pub const MM_TEXT: DWORD = 1; |
| pub const MM_LOMETRIC: DWORD = 2; |
| pub const MM_HIMETRIC: DWORD = 3; |
| pub const MM_LOENGLISH: DWORD = 4; |
| pub const MM_HIENGLISH: DWORD = 5; |
| pub const MM_TWIPS: DWORD = 6; |
| pub const MM_ISOTROPIC: DWORD = 7; |
| pub const MM_ANISOTROPIC: DWORD = 8; |
| pub const MM_MIN: DWORD = MM_TEXT; |
| pub const MM_MAX: DWORD = MM_ANISOTROPIC; |
| pub const MM_MAX_FIXEDSCALE: DWORD = MM_TWIPS; |
| pub const ABSOLUTE: DWORD = 1; |
| pub const RELATIVE: DWORD = 2; |
| pub const WHITE_BRUSH: DWORD = 0; |
| pub const LTGRAY_BRUSH: DWORD = 1; |
| pub const GRAY_BRUSH: DWORD = 2; |
| pub const DKGRAY_BRUSH: DWORD = 3; |
| pub const BLACK_BRUSH: DWORD = 4; |
| pub const NULL_BRUSH: DWORD = 5; |
| pub const HOLLOW_BRUSH: DWORD = NULL_BRUSH; |
| pub const WHITE_PEN: DWORD = 6; |
| pub const BLACK_PEN: DWORD = 7; |
| pub const NULL_PEN: DWORD = 8; |
| pub const OEM_FIXED_FONT: DWORD = 10; |
| pub const ANSI_FIXED_FONT: DWORD = 11; |
| pub const ANSI_VAR_FONT: DWORD = 12; |
| pub const SYSTEM_FONT: DWORD = 13; |
| pub const DEVICE_DEFAULT_FONT: DWORD = 14; |
| pub const DEFAULT_PALETTE: DWORD = 15; |
| pub const SYSTEM_FIXED_FONT: DWORD = 16; |
| pub const DEFAULT_GUI_FONT: DWORD = 17; |
| pub const DC_BRUSH: DWORD = 18; |
| pub const DC_PEN: DWORD = 19; |
| pub const STOCK_LAST: DWORD = 19; |
| pub const CLR_INVALID: COLORREF = 0xFFFFFFFF; |
| pub const BS_SOLID: DWORD = 0; |
| pub const BS_NULL: DWORD = 1; |
| pub const BS_HOLLOW: DWORD = BS_NULL; |
| pub const BS_HATCHED: DWORD = 2; |
| pub const BS_PATTERN: DWORD = 3; |
| pub const BS_INDEXED: DWORD = 4; |
| pub const BS_DIBPATTERN: DWORD = 5; |
| pub const BS_DIBPATTERNPT: DWORD = 6; |
| pub const BS_PATTERN8X8: DWORD = 7; |
| pub const BS_DIBPATTERN8X8: DWORD = 8; |
| pub const BS_MONOPATTERN: DWORD = 9; |
| pub const HS_HORIZONTAL: DWORD = 0; |
| pub const HS_VERTICAL: DWORD = 1; |
| pub const HS_FDIAGONAL: DWORD = 2; |
| pub const HS_BDIAGONAL: DWORD = 3; |
| pub const HS_CROSS: DWORD = 4; |
| pub const HS_DIAGCROSS: DWORD = 5; |
| pub const HS_API_MAX: DWORD = 12; |
| pub const PS_SOLID: DWORD = 0; |
| pub const PS_DASH: DWORD = 1; |
| pub const PS_DOT: DWORD = 2; |
| pub const PS_DASHDOT: DWORD = 3; |
| pub const PS_DASHDOTDOT: DWORD = 4; |
| pub const PS_NULL: DWORD = 5; |
| pub const PS_INSIDEFRAME: DWORD = 6; |
| pub const PS_USERSTYLE: DWORD = 7; |
| pub const PS_ALTERNATE: DWORD = 8; |
| pub const PS_STYLE_MASK: DWORD = 0x0000000F; |
| pub const PS_ENDCAP_ROUND: DWORD = 0x00000000; |
| pub const PS_ENDCAP_SQUARE: DWORD = 0x00000100; |
| pub const PS_ENDCAP_FLAT: DWORD = 0x00000200; |
| pub const PS_ENDCAP_MASK: DWORD = 0x00000F00; |
| pub const PS_JOIN_ROUND: DWORD = 0x00000000; |
| pub const PS_JOIN_BEVEL: DWORD = 0x00001000; |
| pub const PS_JOIN_MITER: DWORD = 0x00002000; |
| pub const PS_JOIN_MASK: DWORD = 0x0000F000; |
| pub const PS_COSMETIC: DWORD = 0x00000000; |
| pub const PS_GEOMETRIC: DWORD = 0x00010000; |
| pub const PS_TYPE_MASK: DWORD = 0x000F0000; |
| pub const AD_COUNTERCLOCKWISE: DWORD = 1; |
| pub const AD_CLOCKWISE: DWORD = 2; |
| pub const DRIVERVERSION: c_int = 0; |
| pub const TECHNOLOGY: c_int = 2; |
| pub const HORZSIZE: c_int = 4; |
| pub const VERTSIZE: c_int = 6; |
| pub const HORZRES: c_int = 8; |
| pub const VERTRES: c_int = 10; |
| pub const BITSPIXEL: c_int = 12; |
| pub const PLANES: c_int = 14; |
| pub const NUMBRUSHES: c_int = 16; |
| pub const NUMPENS: c_int = 18; |
| pub const NUMMARKERS: c_int = 20; |
| pub const NUMFONTS: c_int = 22; |
| pub const NUMCOLORS: c_int = 24; |
| pub const PDEVICESIZE: c_int = 26; |
| pub const CURVECAPS: c_int = 28; |
| pub const LINECAPS: c_int = 30; |
| pub const POLYGONALCAPS: c_int = 32; |
| pub const TEXTCAPS: c_int = 34; |
| pub const CLIPCAPS: c_int = 36; |
| pub const RASTERCAPS: c_int = 38; |
| pub const ASPECTX: c_int = 40; |
| pub const ASPECTY: c_int = 42; |
| pub const ASPECTXY: c_int = 44; |
| pub const LOGPIXELSX: c_int = 88; |
| pub const LOGPIXELSY: c_int = 90; |
| pub const SIZEPALETTE: c_int = 104; |
| pub const NUMRESERVED: c_int = 106; |
| pub const COLORRES: c_int = 108; |
| pub const PHYSICALWIDTH: c_int = 110; |
| pub const PHYSICALHEIGHT: c_int = 111; |
| pub const PHYSICALOFFSETX: c_int = 112; |
| pub const PHYSICALOFFSETY: c_int = 113; |
| pub const SCALINGFACTORX: c_int = 114; |
| pub const SCALINGFACTORY: c_int = 115; |
| pub const VREFRESH: c_int = 116; |
| pub const DESKTOPVERTRES: c_int = 117; |
| pub const DESKTOPHORZRES: c_int = 118; |
| pub const BLTALIGNMENT: c_int = 119; |
| pub const SHADEBLENDCAPS: c_int = 120; |
| pub const COLORMGMTCAPS: c_int = 121; |
| pub const DT_PLOTTER: DWORD = 0; |
| pub const DT_RASDISPLAY: DWORD = 1; |
| pub const DT_RASPRINTER: DWORD = 2; |
| pub const DT_RASCAMERA: DWORD = 3; |
| pub const DT_CHARSTREAM: DWORD = 4; |
| pub const DT_METAFILE: DWORD = 5; |
| pub const DT_DISPFILE: DWORD = 6; |
| pub const CC_NONE: DWORD = 0; |
| pub const CC_CIRCLES: DWORD = 1; |
| pub const CC_PIE: DWORD = 2; |
| pub const CC_CHORD: DWORD = 4; |
| pub const CC_ELLIPSES: DWORD = 8; |
| pub const CC_WIDE: DWORD = 16; |
| pub const CC_STYLED: DWORD = 32; |
| pub const CC_WIDESTYLED: DWORD = 64; |
| pub const CC_INTERIORS: DWORD = 128; |
| pub const CC_ROUNDRECT: DWORD = 256; |
| pub const LC_NONE: DWORD = 0; |
| pub const LC_POLYLINE: DWORD = 2; |
| pub const LC_MARKER: DWORD = 4; |
| pub const LC_POLYMARKER: DWORD = 8; |
| pub const LC_WIDE: DWORD = 16; |
| pub const LC_STYLED: DWORD = 32; |
| pub const LC_WIDESTYLED: DWORD = 64; |
| pub const LC_INTERIORS: DWORD = 128; |
| pub const PC_NONE: DWORD = 0; |
| pub const PC_POLYGON: DWORD = 1; |
| pub const PC_RECTANGLE: DWORD = 2; |
| pub const PC_WINDPOLYGON: DWORD = 4; |
| pub const PC_TRAPEZOID: DWORD = 4; |
| pub const PC_SCANLINE: DWORD = 8; |
| pub const PC_WIDE: DWORD = 16; |
| pub const PC_STYLED: DWORD = 32; |
| pub const PC_WIDESTYLED: DWORD = 64; |
| pub const PC_INTERIORS: DWORD = 128; |
| pub const PC_POLYPOLYGON: DWORD = 256; |
| pub const PC_PATHS: DWORD = 512; |
| pub const CP_NONE: DWORD = 0; |
| pub const CP_RECTANGLE: DWORD = 1; |
| pub const CP_REGION: DWORD = 2; |
| pub const TC_OP_CHARACTER: DWORD = 0x00000001; |
| pub const TC_OP_STROKE: DWORD = 0x00000002; |
| pub const TC_CP_STROKE: DWORD = 0x00000004; |
| pub const TC_CR_90: DWORD = 0x00000008; |
| pub const TC_CR_ANY: DWORD = 0x00000010; |
| pub const TC_SF_X_YINDEP: DWORD = 0x00000020; |
| pub const TC_SA_DOUBLE: DWORD = 0x00000040; |
| pub const TC_SA_INTEGER: DWORD = 0x00000080; |
| pub const TC_SA_CONTIN: DWORD = 0x00000100; |
| pub const TC_EA_DOUBLE: DWORD = 0x00000200; |
| pub const TC_IA_ABLE: DWORD = 0x00000400; |
| pub const TC_UA_ABLE: DWORD = 0x00000800; |
| pub const TC_SO_ABLE: DWORD = 0x00001000; |
| pub const TC_RA_ABLE: DWORD = 0x00002000; |
| pub const TC_VA_ABLE: DWORD = 0x00004000; |
| pub const TC_RESERVED: DWORD = 0x00008000; |
| pub const TC_SCROLLBLT: DWORD = 0x00010000; |
| pub const RC_BITBLT: DWORD = 1; |
| pub const RC_BANDING: DWORD = 2; |
| pub const RC_SCALING: DWORD = 4; |
| pub const RC_BITMAP64: DWORD = 8; |
| pub const RC_GDI20_OUTPUT: DWORD = 0x0010; |
| pub const RC_GDI20_STATE: DWORD = 0x0020; |
| pub const RC_SAVEBITMAP: DWORD = 0x0040; |
| pub const RC_DI_BITMAP: DWORD = 0x0080; |
| pub const RC_PALETTE: DWORD = 0x0100; |
| pub const RC_DIBTODEV: DWORD = 0x0200; |
| pub const RC_BIGFONT: DWORD = 0x0400; |
| pub const RC_STRETCHBLT: DWORD = 0x0800; |
| pub const RC_FLOODFILL: DWORD = 0x1000; |
| pub const RC_STRETCHDIB: DWORD = 0x2000; |
| pub const RC_OP_DX_OUTPUT: DWORD = 0x4000; |
| pub const RC_DEVBITS: DWORD = 0x8000; |
| pub const SB_NONE: DWORD = 0x00000000; |
| pub const SB_CONST_ALPHA: DWORD = 0x00000001; |
| pub const SB_PIXEL_ALPHA: DWORD = 0x00000002; |
| pub const SB_PREMULT_ALPHA: DWORD = 0x00000004; |
| pub const SB_GRAD_RECT: DWORD = 0x00000010; |
| pub const SB_GRAD_TRI: DWORD = 0x00000020; |
| pub const CM_NONE: DWORD = 0x00000000; |
| pub const CM_DEVICE_ICM: DWORD = 0x00000001; |
| pub const CM_GAMMA_RAMP: DWORD = 0x00000002; |
| pub const CM_CMYK_COLOR: DWORD = 0x00000004; |
| pub const DIB_RGB_COLORS: DWORD = 0; |
| pub const DIB_PAL_COLORS: DWORD = 1; |
| pub const SYSPAL_ERROR: DWORD = 0; |
| pub const SYSPAL_STATIC: DWORD = 1; |
| pub const SYSPAL_NOSTATIC: DWORD = 2; |
| pub const SYSPAL_NOSTATIC256: DWORD = 3; |
| pub const CBM_INIT: DWORD = 0x04; |
| pub const FLOODFILLBORDER: DWORD = 0; |
| pub const FLOODFILLSURFACE: DWORD = 1; |
| pub const CCHDEVICENAME: usize = 32; |
| pub const CCHFORMNAME: usize = 32; |
| STRUCT!{struct DEVMODE_u1_s1 { |
| dmOrientation: c_short, |
| dmPaperSize: c_short, |
| dmPaperLength: c_short, |
| dmPaperWidth: c_short, |
| dmScale: c_short, |
| dmCopies: c_short, |
| dmDefaultSource: c_short, |
| dmPrintQuality: c_short, |
| }} |
| STRUCT!{struct DEVMODE_u1_s2 { |
| dmPosition: POINTL, |
| dmDisplayOrientation: DWORD, |
| dmDisplayFixedOutput: DWORD, |
| }} |
| UNION!{union DEVMODE_u1 { |
| [u32; 4], |
| s1 s1_mut: DEVMODE_u1_s1, |
| s2 s2_mut: DEVMODE_u1_s2, |
| }} |
| UNION!{union DEVMODE_u2 { |
| [u32; 1], |
| dmDisplayFlags dmDisplayFlags_mut: DWORD, |
| dmNup dmNup_mut: DWORD, |
| }} |
| STRUCT!{struct DEVMODEA { |
| dmDeviceName: [CHAR; CCHDEVICENAME], |
| dmSpecVersion: WORD, |
| dmDriverVersion: WORD, |
| dmSize: WORD, |
| dmDriverExtra: WORD, |
| dmFields: DWORD, |
| u1: DEVMODE_u1, |
| dmColor: c_short, |
| dmDuplex: c_short, |
| dmYResolution: c_short, |
| dmTTOption: c_short, |
| dmCollate: c_short, |
| dmFormName: [CHAR; CCHFORMNAME], |
| dmLogPixels: WORD, |
| dmBitsPerPel: DWORD, |
| dmPelsWidth: DWORD, |
| dmPelsHeight: DWORD, |
| u2: DEVMODE_u2, |
| dmDisplayFrequency: DWORD, |
| dmICMMethod: DWORD, |
| dmICMIntent: DWORD, |
| dmMediaType: DWORD, |
| dmDitherType: DWORD, |
| dmReserved1: DWORD, |
| dmReserved2: DWORD, |
| dmPanningWidth: DWORD, |
| dmPanningHeight: DWORD, |
| }} |
| pub type PDEVMODEA = *mut DEVMODEA; |
| pub type NPDEVMODEA = *mut DEVMODEA; |
| pub type LPDEVMODEA = *mut DEVMODEA; |
| STRUCT!{struct DEVMODEW { |
| dmDeviceName: [WCHAR; CCHDEVICENAME], |
| dmSpecVersion: WORD, |
| dmDriverVersion: WORD, |
| dmSize: WORD, |
| dmDriverExtra: WORD, |
| dmFields: DWORD, |
| u1: DEVMODE_u1, |
| dmColor: c_short, |
| dmDuplex: c_short, |
| dmYResolution: c_short, |
| dmTTOption: c_short, |
| dmCollate: c_short, |
| dmFormName: [WCHAR; CCHFORMNAME], |
| dmLogPixels: WORD, |
| dmBitsPerPel: DWORD, |
| dmPelsWidth: DWORD, |
| dmPelsHeight: DWORD, |
| u2: DEVMODE_u2, |
| dmDisplayFrequency: DWORD, |
| dmICMMethod: DWORD, |
| dmICMIntent: DWORD, |
| dmMediaType: DWORD, |
| dmDitherType: DWORD, |
| dmReserved1: DWORD, |
| dmReserved2: DWORD, |
| dmPanningWidth: DWORD, |
| dmPanningHeight: DWORD, |
| }} |
| pub type PDEVMODEW = *mut DEVMODEW; |
| pub type NPDEVMODEW = *mut DEVMODEW; |
| pub type LPDEVMODEW = *mut DEVMODEW; |
| pub const DM_SPECVERSION: DWORD = 0x0401; |
| pub const DM_ORIENTATION: DWORD = 0x00000001; |
| pub const DM_PAPERSIZE: DWORD = 0x00000002; |
| pub const DM_PAPERLENGTH: DWORD = 0x00000004; |
| pub const DM_PAPERWIDTH: DWORD = 0x00000008; |
| pub const DM_SCALE: DWORD = 0x00000010; |
| pub const DM_POSITION: DWORD = 0x00000020; |
| pub const DM_NUP: DWORD = 0x00000040; |
| pub const DM_DISPLAYORIENTATION: DWORD = 0x00000080; |
| pub const DM_COPIES: DWORD = 0x00000100; |
| pub const DM_DEFAULTSOURCE: DWORD = 0x00000200; |
| pub const DM_PRINTQUALITY: DWORD = 0x00000400; |
| pub const DM_COLOR: DWORD = 0x00000800; |
| pub const DM_DUPLEX: DWORD = 0x00001000; |
| pub const DM_YRESOLUTION: DWORD = 0x00002000; |
| pub const DM_TTOPTION: DWORD = 0x00004000; |
| pub const DM_COLLATE: DWORD = 0x00008000; |
| pub const DM_FORMNAME: DWORD = 0x00010000; |
| pub const DM_LOGPIXELS: DWORD = 0x00020000; |
| pub const DM_BITSPERPEL: DWORD = 0x00040000; |
| pub const DM_PELSWIDTH: DWORD = 0x00080000; |
| pub const DM_PELSHEIGHT: DWORD = 0x00100000; |
| pub const DM_DISPLAYFLAGS: DWORD = 0x00200000; |
| pub const DM_DISPLAYFREQUENCY: DWORD = 0x00400000; |
| pub const DM_ICMMETHOD: DWORD = 0x00800000; |
| pub const DM_ICMINTENT: DWORD = 0x01000000; |
| pub const DM_MEDIATYPE: DWORD = 0x02000000; |
| pub const DM_DITHERTYPE: DWORD = 0x04000000; |
| pub const DM_PANNINGWIDTH: DWORD = 0x08000000; |
| pub const DM_PANNINGHEIGHT: DWORD = 0x10000000; |
| pub const DM_DISPLAYFIXEDOUTPUT: DWORD = 0x20000000; |
| pub const DMORIENT_PORTRAIT: DWORD = 1; |
| pub const DMORIENT_LANDSCAPE: DWORD = 2; |
| pub const DMPAPER_FIRST: DWORD = DMPAPER_LETTER; |
| pub const DMPAPER_LETTER: DWORD = 1; |
| pub const DMPAPER_LETTERSMALL: DWORD = 2; |
| pub const DMPAPER_TABLOID: DWORD = 3; |
| pub const DMPAPER_LEDGER: DWORD = 4; |
| pub const DMPAPER_LEGAL: DWORD = 5; |
| pub const DMPAPER_STATEMENT: DWORD = 6; |
| pub const DMPAPER_EXECUTIVE: DWORD = 7; |
| pub const DMPAPER_A3: DWORD = 8; |
| pub const DMPAPER_A4: DWORD = 9; |
| pub const DMPAPER_A4SMALL: DWORD = 10; |
| pub const DMPAPER_A5: DWORD = 11; |
| pub const DMPAPER_B4: DWORD = 12; |
| pub const DMPAPER_B5: DWORD = 13; |
| pub const DMPAPER_FOLIO: DWORD = 14; |
| pub const DMPAPER_QUARTO: DWORD = 15; |
| pub const DMPAPER_10X14: DWORD = 16; |
| pub const DMPAPER_11X17: DWORD = 17; |
| pub const DMPAPER_NOTE: DWORD = 18; |
| pub const DMPAPER_ENV_9: DWORD = 19; |
| pub const DMPAPER_ENV_10: DWORD = 20; |
| pub const DMPAPER_ENV_11: DWORD = 21; |
| pub const DMPAPER_ENV_12: DWORD = 22; |
| pub const DMPAPER_ENV_14: DWORD = 23; |
| pub const DMPAPER_CSHEET: DWORD = 24; |
| pub const DMPAPER_DSHEET: DWORD = 25; |
| pub const DMPAPER_ESHEET: DWORD = 26; |
| pub const DMPAPER_ENV_DL: DWORD = 27; |
| pub const DMPAPER_ENV_C5: DWORD = 28; |
| pub const DMPAPER_ENV_C3: DWORD = 29; |
| pub const DMPAPER_ENV_C4: DWORD = 30; |
| pub const DMPAPER_ENV_C6: DWORD = 31; |
| pub const DMPAPER_ENV_C65: DWORD = 32; |
| pub const DMPAPER_ENV_B4: DWORD = 33; |
| pub const DMPAPER_ENV_B5: DWORD = 34; |
| pub const DMPAPER_ENV_B6: DWORD = 35; |
| pub const DMPAPER_ENV_ITALY: DWORD = 36; |
| pub const DMPAPER_ENV_MONARCH: DWORD = 37; |
| pub const DMPAPER_ENV_PERSONAL: DWORD = 38; |
| pub const DMPAPER_FANFOLD_US: DWORD = 39; |
| pub const DMPAPER_FANFOLD_STD_GERMAN: DWORD = 40; |
| pub const DMPAPER_FANFOLD_LGL_GERMAN: DWORD = 41; |
| pub const DMPAPER_ISO_B4: DWORD = 42; |
| pub const DMPAPER_JAPANESE_POSTCARD: DWORD = 43; |
| pub const DMPAPER_9X11: DWORD = 44; |
| pub const DMPAPER_10X11: DWORD = 45; |
| pub const DMPAPER_15X11: DWORD = 46; |
| pub const DMPAPER_ENV_INVITE: DWORD = 47; |
| pub const DMPAPER_RESERVED_48: DWORD = 48; |
| pub const DMPAPER_RESERVED_49: DWORD = 49; |
| pub const DMPAPER_LETTER_EXTRA: DWORD = 50; |
| pub const DMPAPER_LEGAL_EXTRA: DWORD = 51; |
| pub const DMPAPER_TABLOID_EXTRA: DWORD = 52; |
| pub const DMPAPER_A4_EXTRA: DWORD = 53; |
| pub const DMPAPER_LETTER_TRANSVERSE: DWORD = 54; |
| pub const DMPAPER_A4_TRANSVERSE: DWORD = 55; |
| pub const DMPAPER_LETTER_EXTRA_TRANSVERSE: DWORD = 56; |
| pub const DMPAPER_A_PLUS: DWORD = 57; |
| pub const DMPAPER_B_PLUS: DWORD = 58; |
| pub const DMPAPER_LETTER_PLUS: DWORD = 59; |
| pub const DMPAPER_A4_PLUS: DWORD = 60; |
| pub const DMPAPER_A5_TRANSVERSE: DWORD = 61; |
| pub const DMPAPER_B5_TRANSVERSE: DWORD = 62; |
| pub const DMPAPER_A3_EXTRA: DWORD = 63; |
| pub const DMPAPER_A5_EXTRA: DWORD = 64; |
| pub const DMPAPER_B5_EXTRA: DWORD = 65; |
| pub const DMPAPER_A2: DWORD = 66; |
| pub const DMPAPER_A3_TRANSVERSE: DWORD = 67; |
| pub const DMPAPER_A3_EXTRA_TRANSVERSE: DWORD = 68; |
| pub const DMPAPER_DBL_JAPANESE_POSTCARD: DWORD = 69; |
| pub const DMPAPER_A6: DWORD = 70; |
| pub const DMPAPER_JENV_KAKU2: DWORD = 71; |
| pub const DMPAPER_JENV_KAKU3: DWORD = 72; |
| pub const DMPAPER_JENV_CHOU3: DWORD = 73; |
| pub const DMPAPER_JENV_CHOU4: DWORD = 74; |
| pub const DMPAPER_LETTER_ROTATED: DWORD = 75; |
| pub const DMPAPER_A3_ROTATED: DWORD = 76; |
| pub const DMPAPER_A4_ROTATED: DWORD = 77; |
| pub const DMPAPER_A5_ROTATED: DWORD = 78; |
| pub const DMPAPER_B4_JIS_ROTATED: DWORD = 79; |
| pub const DMPAPER_B5_JIS_ROTATED: DWORD = 80; |
| pub const DMPAPER_JAPANESE_POSTCARD_ROTATED: DWORD = 81; |
| pub const DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED: DWORD = 82; |
| pub const DMPAPER_A6_ROTATED: DWORD = 83; |
| pub const DMPAPER_JENV_KAKU2_ROTATED: DWORD = 84; |
| pub const DMPAPER_JENV_KAKU3_ROTATED: DWORD = 85; |
| pub const DMPAPER_JENV_CHOU3_ROTATED: DWORD = 86; |
| pub const DMPAPER_JENV_CHOU4_ROTATED: DWORD = 87; |
| pub const DMPAPER_B6_JIS: DWORD = 88; |
| pub const DMPAPER_B6_JIS_ROTATED: DWORD = 89; |
| pub const DMPAPER_12X11: DWORD = 90; |
| pub const DMPAPER_JENV_YOU4: DWORD = 91; |
| pub const DMPAPER_JENV_YOU4_ROTATED: DWORD = 92; |
| pub const DMPAPER_P16K: DWORD = 93; |
| pub const DMPAPER_P32K: DWORD = 94; |
| pub const DMPAPER_P32KBIG: DWORD = 95; |
| pub const DMPAPER_PENV_1: DWORD = 96; |
| pub const DMPAPER_PENV_2: DWORD = 97; |
| pub const DMPAPER_PENV_3: DWORD = 98; |
| pub const DMPAPER_PENV_4: DWORD = 99; |
| pub const DMPAPER_PENV_5: DWORD = 100; |
| pub const DMPAPER_PENV_6: DWORD = 101; |
| pub const DMPAPER_PENV_7: DWORD = 102; |
| pub const DMPAPER_PENV_8: DWORD = 103; |
| pub const DMPAPER_PENV_9: DWORD = 104; |
| pub const DMPAPER_PENV_10: DWORD = 105; |
| pub const DMPAPER_P16K_ROTATED: DWORD = 106; |
| pub const DMPAPER_P32K_ROTATED: DWORD = 107; |
| pub const DMPAPER_P32KBIG_ROTATED: DWORD = 108; |
| pub const DMPAPER_PENV_1_ROTATED: DWORD = 109; |
| pub const DMPAPER_PENV_2_ROTATED: DWORD = 110; |
| pub const DMPAPER_PENV_3_ROTATED: DWORD = 111; |
| pub const DMPAPER_PENV_4_ROTATED: DWORD = 112; |
| pub const DMPAPER_PENV_5_ROTATED: DWORD = 113; |
| pub const DMPAPER_PENV_6_ROTATED: DWORD = 114; |
| pub const DMPAPER_PENV_7_ROTATED: DWORD = 115; |
| pub const DMPAPER_PENV_8_ROTATED: DWORD = 116; |
| pub const DMPAPER_PENV_9_ROTATED: DWORD = 117; |
| pub const DMPAPER_PENV_10_ROTATED: DWORD = 118; |
| pub const DMPAPER_LAST: DWORD = DMPAPER_PENV_10_ROTATED; |
| pub const DMPAPER_USER: DWORD = 256; |
| pub const DMBIN_FIRST: DWORD = DMBIN_UPPER; |
| pub const DMBIN_UPPER: DWORD = 1; |
| pub const DMBIN_ONLYONE: DWORD = 1; |
| pub const DMBIN_LOWER: DWORD = 2; |
| pub const DMBIN_MIDDLE: DWORD = 3; |
| pub const DMBIN_MANUAL: DWORD = 4; |
| pub const DMBIN_ENVELOPE: DWORD = 5; |
| pub const DMBIN_ENVMANUAL: DWORD = 6; |
| pub const DMBIN_AUTO: DWORD = 7; |
| pub const DMBIN_TRACTOR: DWORD = 8; |
| pub const DMBIN_SMALLFMT: DWORD = 9; |
| pub const DMBIN_LARGEFMT: DWORD = 10; |
| pub const DMBIN_LARGECAPACITY: DWORD = 11; |
| pub const DMBIN_CASSETTE: DWORD = 14; |
| pub const DMBIN_FORMSOURCE: DWORD = 15; |
| pub const DMBIN_LAST: DWORD = DMBIN_FORMSOURCE; |
| pub const DMBIN_USER: DWORD = 256; |
| pub const DMRES_DRAFT: c_int = -1; |
| pub const DMRES_LOW: c_int = -2; |
| pub const DMRES_MEDIUM: c_int = -3; |
| pub const DMRES_HIGH: c_int = -4; |
| pub const DMCOLOR_MONOCHROME: DWORD = 1; |
| pub const DMCOLOR_COLOR: DWORD = 2; |
| pub const DMDUP_SIMPLEX: DWORD = 1; |
| pub const DMDUP_VERTICAL: DWORD = 2; |
| pub const DMDUP_HORIZONTAL: DWORD = 3; |
| pub const DMTT_BITMAP: DWORD = 1; |
| pub const DMTT_DOWNLOAD: DWORD = 2; |
| pub const DMTT_SUBDEV: DWORD = 3; |
| pub const DMTT_DOWNLOAD_OUTLINE: DWORD = 4; |
| pub const DMCOLLATE_FALSE: DWORD = 0; |
| pub const DMCOLLATE_TRUE: DWORD = 1; |
| pub const DMDO_DEFAULT: DWORD = 0; |
| pub const DMDO_90: DWORD = 1; |
| pub const DMDO_180: DWORD = 2; |
| pub const DMDO_270: DWORD = 3; |
| pub const DMDFO_DEFAULT: DWORD = 0; |
| pub const DMDFO_STRETCH: DWORD = 1; |
| pub const DMDFO_CENTER: DWORD = 2; |
| pub const DM_INTERLACED: DWORD = 0x00000002; |
| pub const DMDISPLAYFLAGS_TEXTMODE: DWORD = 0x00000004; |
| pub const DMNUP_SYSTEM: DWORD = 1; |
| pub const DMNUP_ONEUP: DWORD = 2; |
| pub const DMICMMETHOD_NONE: DWORD = 1; |
| pub const DMICMMETHOD_SYSTEM: DWORD = 2; |
| pub const DMICMMETHOD_DRIVER: DWORD = 3; |
| pub const DMICMMETHOD_DEVICE: DWORD = 4; |
| pub const DMICMMETHOD_USER: DWORD = 256; |
| pub const DMICM_SATURATE: DWORD = 1; |
| pub const DMICM_CONTRAST: DWORD = 2; |
| pub const DMICM_COLORIMETRIC: DWORD = 3; |
| pub const DMICM_ABS_COLORIMETRIC: DWORD = 4; |
| pub const DMICM_USER: DWORD = 256; |
| pub const DMMEDIA_STANDARD: DWORD = 1; |
| pub const DMMEDIA_TRANSPARENCY: DWORD = 2; |
| pub const DMMEDIA_GLOSSY: DWORD = 3; |
| pub const DMMEDIA_USER: DWORD = 256; |
| pub const DMDITHER_NONE: DWORD = 1; |
| pub const DMDITHER_COARSE: DWORD = 2; |
| pub const DMDITHER_FINE: DWORD = 3; |
| pub const DMDITHER_LINEART: DWORD = 4; |
| pub const DMDITHER_ERRORDIFFUSION: DWORD = 5; |
| pub const DMDITHER_RESERVED6: DWORD = 6; |
| pub const DMDITHER_RESERVED7: DWORD = 7; |
| pub const DMDITHER_RESERVED8: DWORD = 8; |
| pub const DMDITHER_RESERVED9: DWORD = 9; |
| pub const DMDITHER_GRAYSCALE: DWORD = 10; |
| pub const DMDITHER_USER: DWORD = 256; |
| STRUCT!{struct DISPLAY_DEVICEA { |
| cb: DWORD, |
| DeviceName: [CHAR; 32], |
| DeviceString: [CHAR; 128], |
| StateFlags: DWORD, |
| DeviceID: [CHAR; 128], |
| DeviceKey: [CHAR; 128], |
| }} |
| pub type PDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA; |
| pub type LPDISPLAY_DEVICEA = *mut DISPLAY_DEVICEA; |
| STRUCT!{struct DISPLAY_DEVICEW { |
| cb: DWORD, |
| DeviceName: [WCHAR; 32], |
| DeviceString: [WCHAR; 128], |
| StateFlags: DWORD, |
| DeviceID: [WCHAR; 128], |
| DeviceKey: [WCHAR; 128], |
| }} |
| pub type PDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW; |
| pub type LPDISPLAY_DEVICEW = *mut DISPLAY_DEVICEW; |
| pub const DISPLAY_DEVICE_ATTACHED_TO_DESKTOP: DWORD = 0x00000001; |
| pub const DISPLAY_DEVICE_MULTI_DRIVER: DWORD = 0x00000002; |
| pub const DISPLAY_DEVICE_PRIMARY_DEVICE: DWORD = 0x00000004; |
| pub const DISPLAY_DEVICE_MIRRORING_DRIVER: DWORD = 0x00000008; |
| pub const DISPLAY_DEVICE_VGA_COMPATIBLE: DWORD = 0x00000010; |
| pub const DISPLAY_DEVICE_REMOVABLE: DWORD = 0x00000020; |
| pub const DISPLAY_DEVICE_ACC_DRIVER: DWORD = 0x00000040; |
| pub const DISPLAY_DEVICE_MODESPRUNED: DWORD = 0x08000000; |
| pub const DISPLAY_DEVICE_RDPUDD: DWORD = 0x01000000; |
| pub const DISPLAY_DEVICE_REMOTE: DWORD = 0x04000000; |
| pub const DISPLAY_DEVICE_DISCONNECT: DWORD = 0x02000000; |
| pub const DISPLAY_DEVICE_TS_COMPATIBLE: DWORD = 0x00200000; |
| pub const DISPLAY_DEVICE_UNSAFE_MODES_ON: DWORD = 0x00080000; |
| pub const DISPLAY_DEVICE_ACTIVE: DWORD = 0x00000001; |
| pub const DISPLAY_DEVICE_ATTACHED: DWORD = 0x00000002; |
| pub const DISPLAYCONFIG_MAXPATH: usize = 1024; |
| STRUCT!{struct DISPLAYCONFIG_RATIONAL { |
| Numerator: UINT32, |
| Denominator: UINT32, |
| }} |
| ENUM!{enum DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY { |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1i32 as u32, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = 16, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000, |
| DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| ENUM!{enum DISPLAYCONFIG_SCANLINE_ORDERING { |
| DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0, |
| DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1, |
| DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2, |
| DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED, |
| DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3, |
| DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_2DREGION { |
| cx: UINT32, |
| cy: UINT32, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO_AdditionalSignalInfo { |
| bitfield: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_VIDEO_SIGNAL_INFO_AdditionalSignalInfo bitfield: UINT32 [ |
| videoStandard set_videoStandard[0..16], |
| vSyncFreqDivider set_vSyncFreqDivider[16..22], |
| ]} |
| UNION!{union DISPLAYCONFIG_VIDEO_SIGNAL_INFO_u { |
| [u32; 1], |
| AdditionalSignalInfo AdditionalSignalInfo_mut: |
| DISPLAYCONFIG_VIDEO_SIGNAL_INFO_AdditionalSignalInfo, |
| videoStandard videoStandard_mut: UINT32, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO { |
| pixelRate: UINT64, |
| hSyncFreq: DISPLAYCONFIG_RATIONAL, |
| vSyncFreq: DISPLAYCONFIG_RATIONAL, |
| activeSize: DISPLAYCONFIG_2DREGION, |
| totalSize: DISPLAYCONFIG_2DREGION, |
| u: DISPLAYCONFIG_VIDEO_SIGNAL_INFO_u, |
| scanLineOrdering: DISPLAYCONFIG_SCANLINE_ORDERING, |
| }} |
| ENUM!{enum DISPLAYCONFIG_SCALING { |
| DISPLAYCONFIG_SCALING_IDENTITY = 1, |
| DISPLAYCONFIG_SCALING_CENTERED = 2, |
| DISPLAYCONFIG_SCALING_STRETCHED = 3, |
| DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4, |
| DISPLAYCONFIG_SCALING_CUSTOM = 5, |
| DISPLAYCONFIG_SCALING_PREFERRED = 128, |
| DISPLAYCONFIG_SCALING_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| ENUM!{enum DISPLAYCONFIG_ROTATION { |
| DISPLAYCONFIG_ROTATION_IDENTITY = 1, |
| DISPLAYCONFIG_ROTATION_ROTATE90 = 2, |
| DISPLAYCONFIG_ROTATION_ROTATE180 = 3, |
| DISPLAYCONFIG_ROTATION_ROTATE270 = 4, |
| DISPLAYCONFIG_ROTATION_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| ENUM!{enum DISPLAYCONFIG_MODE_INFO_TYPE { |
| DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1, |
| DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2, |
| DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3, |
| DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| ENUM!{enum DISPLAYCONFIG_PIXELFORMAT { |
| DISPLAYCONFIG_PIXELFORMAT_8BPP = 1, |
| DISPLAYCONFIG_PIXELFORMAT_16BPP = 2, |
| DISPLAYCONFIG_PIXELFORMAT_24BPP = 3, |
| DISPLAYCONFIG_PIXELFORMAT_32BPP = 4, |
| DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5, |
| DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = 0xffffffff, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_SOURCE_MODE { |
| width: UINT32, |
| height: UINT32, |
| pixelFormat: DISPLAYCONFIG_PIXELFORMAT, |
| position: POINTL, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_TARGET_MODE { |
| targetVideoSignalInfo: DISPLAYCONFIG_VIDEO_SIGNAL_INFO, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO { |
| PathSourceSize: POINTL, |
| DesktopImageRegion: RECTL, |
| DesktopImageClip: RECTL, |
| }} |
| UNION!{union DISPLAYCONFIG_MODE_INFO_u { |
| [u64; 6], |
| targetMode targetMode_mut: DISPLAYCONFIG_TARGET_MODE, |
| sourceMode sourceMode_mut: DISPLAYCONFIG_SOURCE_MODE, |
| desktopImageInfo desktopImageInfo_mut: DISPLAYCONFIG_DESKTOP_IMAGE_INFO, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_MODE_INFO { |
| infoType: DISPLAYCONFIG_MODE_INFO_TYPE, |
| id: UINT32, |
| adapterId: LUID, |
| u: DISPLAYCONFIG_MODE_INFO_u, |
| }} |
| pub const DISPLAYCONFIG_PATH_MODE_IDX_INVALID: DWORD = 0xffffffff; |
| pub const DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID: DWORD = 0xffff; |
| pub const DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID: DWORD = 0xffff; |
| pub const DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID: DWORD = 0xffff; |
| pub const DISPLAYCONFIG_PATH_CLONE_GROUP_INVALID: DWORD = 0xffff; |
| STRUCT!{struct DISPLAYCONFIG_PATH_SOURCE_INFO { |
| adapterId: LUID, |
| id: UINT32, |
| modeInfoIdx: UINT32, |
| statusFlags: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_PATH_SOURCE_INFO modeInfoIdx: UINT32 [ |
| cloneGroupId set_cloneGroupId[0..16], |
| sourceModeInfoIdx set_sourceModeInfoIdx[16..32], |
| ]} |
| pub const DISPLAYCONFIG_SOURCE_IN_USE: DWORD = 0x00000001; |
| STRUCT!{struct DISPLAYCONFIG_PATH_TARGET_INFO { |
| adapterId: LUID, |
| id: UINT32, |
| modeInfoIdx: UINT32, |
| outputTechnology: DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY, |
| rotation: DISPLAYCONFIG_ROTATION, |
| scaling: DISPLAYCONFIG_SCALING, |
| refreshRate: DISPLAYCONFIG_RATIONAL, |
| scanLineOrdering: DISPLAYCONFIG_SCANLINE_ORDERING, |
| targetAvailable: BOOL, |
| statusFlags: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_PATH_TARGET_INFO modeInfoIdx: UINT32 [ |
| desktopModeInfoIdx set_desktopModeInfoIdx[0..16], |
| targetModeInfoIdx set_targetModeInfoIdx[16..32], |
| ]} |
| pub const DISPLAYCONFIG_TARGET_IN_USE: DWORD = 0x00000001; |
| pub const DISPLAYCONFIG_TARGET_FORCIBLE: DWORD = 0x00000002; |
| pub const DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT: DWORD = 0x00000004; |
| pub const DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH: DWORD = 0x00000008; |
| pub const DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM: DWORD = 0x00000010; |
| pub const DISPLAYCONFIG_TARGET_IS_HMD: DWORD = 0x00000020; |
| STRUCT!{struct DISPLAYCONFIG_PATH_INFO { |
| sourceInfo: DISPLAYCONFIG_PATH_SOURCE_INFO, |
| targetInfo: DISPLAYCONFIG_PATH_TARGET_INFO, |
| flags: UINT32, |
| }} |
| pub const DISPLAYCONFIG_PATH_ACTIVE: DWORD = 0x00000001; |
| pub const DISPLAYCONFIG_PATH_PREFERRED_UNSCALED: DWORD = 0x00000004; |
| pub const DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE: DWORD = 0x00000008; |
| pub const DISPLAYCONFIG_PATH_VALID_FLAGS: DWORD = 0x0000000D; |
| ENUM!{enum DISPLAYCONFIG_TOPOLOGY_ID { |
| DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x00000001, |
| DISPLAYCONFIG_TOPOLOGY_CLONE = 0x00000002, |
| DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x00000004, |
| DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x00000008, |
| DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| ENUM!{enum DISPLAYCONFIG_DEVICE_INFO_TYPE { |
| DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1, |
| DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2, |
| DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3, |
| DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4, |
| DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5, |
| DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6, |
| DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7, |
| DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8, |
| DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9, |
| DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10, |
| DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_DEVICE_INFO_HEADER { |
| _type: DISPLAYCONFIG_DEVICE_INFO_TYPE, |
| size: UINT32, |
| adapterId: LUID, |
| id: UINT32, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_SOURCE_DEVICE_NAME { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| viewGdiDeviceName: [WCHAR; CCHDEVICENAME], |
| }} |
| STRUCT!{struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS { |
| value: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS value: UINT32 [ |
| friendlyNameFromEdid set_friendlyNameFromEdid[0..1], |
| friendlyNameForced set_friendlyNameForced[1..2], |
| edidIdsValid set_edidIdsValid[2..3], |
| ]} |
| STRUCT!{struct DISPLAYCONFIG_TARGET_DEVICE_NAME { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| flags: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS, |
| outputTechnology: DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY, |
| edidManufactureId: UINT16, |
| edidProductCodeId: UINT16, |
| connectorInstance: UINT32, |
| monitorFriendlyDeviceName: [WCHAR; 64], |
| monitorDevicePath: [WCHAR; 128], |
| }} |
| STRUCT!{struct DISPLAYCONFIG_TARGET_PREFERRED_MODE { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| width: UINT32, |
| height: UINT32, |
| targetMode: DISPLAYCONFIG_TARGET_MODE, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_ADAPTER_NAME { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| adapterDevicePath: [WCHAR; 128], |
| }} |
| STRUCT!{struct DISPLAYCONFIG_TARGET_BASE_TYPE { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| baseOutputTechnology: DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_SET_TARGET_PERSISTENCE { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| value: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_SET_TARGET_PERSISTENCE value: UINT32 [ |
| bootPersistenceOn set_bootPersistenceOn[0..1], |
| ]} |
| STRUCT!{struct DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| value: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION value: UINT32 [ |
| disableMonitorVirtualResolution set_disableMonitorVirtualResolution[0..1], |
| ]} |
| ENUM!{enum DISPLAYCONFIG_COLOR_ENCODING { |
| DISPLAYCONFIG_COLOR_ENCODING_RGB = 0, |
| DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = 1, |
| DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = 2, |
| DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = 3, |
| DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = 4, |
| DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32 = 0xFFFFFFFF, |
| }} |
| STRUCT!{struct DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| value: UINT32, |
| colorEncoding: DISPLAYCONFIG_COLOR_ENCODING, |
| bitsPerColorChannel: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO value: UINT32 [ |
| advancedColorSupported set_advancedColorSupported[0..1], |
| advancedColorEnabled set_advancedColorEnabled[1..2], |
| reserved set_reserved[2..32], |
| ]} |
| STRUCT!{struct DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE { |
| header: DISPLAYCONFIG_DEVICE_INFO_HEADER, |
| value: UINT32, |
| }} |
| BITFIELD!{DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE value: UINT32 [ |
| enableAdvancedColor set_enableAdvancedColor[0..1], |
| reserved set_reserved[1..32], |
| ]} |
| pub const QDC_ALL_PATHS: DWORD = 0x00000001; |
| pub const QDC_ONLY_ACTIVE_PATHS: DWORD = 0x00000002; |
| pub const QDC_DATABASE_CURRENT: DWORD = 0x00000004; |
| pub const QDC_VIRTUAL_MODE_AWARE: DWORD = 0x00000010; |
| pub const QDC_INCLUDE_HMD: DWORD = 0x00000020; |
| pub const SDC_TOPOLOGY_INTERNAL: DWORD = 0x00000001; |
| pub const SDC_TOPOLOGY_CLONE: DWORD = 0x00000002; |
| pub const SDC_TOPOLOGY_EXTEND: DWORD = 0x00000004; |
| pub const SDC_TOPOLOGY_EXTERNAL: DWORD = 0x00000008; |
| pub const SDC_TOPOLOGY_SUPPLIED: DWORD = 0x00000010; |
| pub const SDC_USE_DATABASE_CURRENT: DWORD = SDC_TOPOLOGY_INTERNAL | SDC_TOPOLOGY_CLONE |
| | SDC_TOPOLOGY_EXTEND | SDC_TOPOLOGY_EXTERNAL; |
| pub const SDC_USE_SUPPLIED_DISPLAY_CONFIG: DWORD = 0x00000020; |
| pub const SDC_VALIDATE: DWORD = 0x00000040; |
| pub const SDC_APPLY: DWORD = 0x00000080; |
| pub const SDC_NO_OPTIMIZATION: DWORD = 0x00000100; |
| pub const SDC_SAVE_TO_DATABASE: DWORD = 0x00000200; |
| pub const SDC_ALLOW_CHANGES: DWORD = 0x00000400; |
| pub const SDC_PATH_PERSIST_IF_REQUIRED: DWORD = 0x00000800; |
| pub const SDC_FORCE_MODE_ENUMERATION: DWORD = 0x00001000; |
| pub const SDC_ALLOW_PATH_ORDER_CHANGES: DWORD = 0x00002000; |
| pub const SDC_VIRTUAL_MODE_AWARE: DWORD = 0x00008000; |
| pub const RDH_RECTANGLES: DWORD = 1; |
| STRUCT!{struct RGNDATAHEADER { |
| dwSize: DWORD, |
| iType: DWORD, |
| nCount: DWORD, |
| nRgnSize: DWORD, |
| rcBound: RECT, |
| }} |
| pub type PRGNDATAHEADER = *mut RGNDATAHEADER; |
| STRUCT!{struct RGNDATA { |
| rdh: RGNDATAHEADER, |
| Buffer: [c_char; 1], |
| }} |
| pub type PRGNDATA = *mut RGNDATA; |
| pub type NPRGNDATA = *mut RGNDATA; |
| pub type LPRGNDATA = *mut RGNDATA; |
| pub const SYSRGN: INT = 4; |
| STRUCT!{struct ABC { |
| abcA: c_int, |
| abcB: UINT, |
| abcC: c_int, |
| }} |
| pub type PABC = *mut ABC; |
| pub type NPABC = *mut ABC; |
| pub type LPABC = *mut ABC; |
| STRUCT!{struct ABCFLOAT { |
| abcfA: FLOAT, |
| abcfB: FLOAT, |
| abcfC: FLOAT, |
| }} |
| pub type PABCFLOAT = *mut ABCFLOAT; |
| pub type NPABCFLOAT = *mut ABCFLOAT; |
| pub type LPABCFLOAT = *mut ABCFLOAT; |
| STRUCT!{struct OUTLINETEXTMETRICA { |
| otmSize: UINT, |
| otmTextMetrics: TEXTMETRICA, |
| otmFiller: BYTE, |
| otmPanoseNumber: PANOSE, |
| otmfsSelection: UINT, |
| otmfsType: UINT, |
| otmsCharSlopeRise: c_int, |
| otmsCharSlopeRun: c_int, |
| otmItalicAngle: c_int, |
| otmEMSquare: UINT, |
| otmAscent: c_int, |
| otmDescent: c_int, |
| otmLineGap: UINT, |
| otmsCapEmHeight: UINT, |
| otmsXHeight: UINT, |
| otmrcFontBox: RECT, |
| otmMacAscent: c_int, |
| otmMacDescent: c_int, |
| otmMacLineGap: UINT, |
| otmusMinimumPPEM: UINT, |
| otmptSubscriptSize: POINT, |
| otmptSubscriptOffset: POINT, |
| otmptSuperscriptSize: POINT, |
| otmptSuperscriptOffset: POINT, |
| otmsStrikeoutSize: UINT, |
| otmsStrikeoutPosition: c_int, |
| otmsUnderscoreSize: c_int, |
| otmsUnderscorePosition: c_int, |
| otmpFamilyName: PSTR, |
| otmpFaceName: PSTR, |
| otmpStyleName: PSTR, |
| otmpFullName: PSTR, |
| }} |
| pub type POUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA; |
| pub type NPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA; |
| pub type LPOUTLINETEXTMETRICA = *mut OUTLINETEXTMETRICA; |
| STRUCT!{struct OUTLINETEXTMETRICW { |
| otmSize: UINT, |
| otmTextMetrics: TEXTMETRICW, |
| otmFiller: BYTE, |
| otmPanoseNumber: PANOSE, |
| otmfsSelection: UINT, |
| otmfsType: UINT, |
| otmsCharSlopeRise: c_int, |
| otmsCharSlopeRun: c_int, |
| otmItalicAngle: c_int, |
| otmEMSquare: UINT, |
| otmAscent: c_int, |
| otmDescent: c_int, |
| otmLineGap: UINT, |
| otmsCapEmHeight: UINT, |
| otmsXHeight: UINT, |
| otmrcFontBox: RECT, |
| otmMacAscent: c_int, |
| otmMacDescent: c_int, |
| otmMacLineGap: UINT, |
| otmusMinimumPPEM: UINT, |
| otmptSubscriptSize: POINT, |
| otmptSubscriptOffset: POINT, |
| otmptSuperscriptSize: POINT, |
| otmptSuperscriptOffset: POINT, |
| otmsStrikeoutSize: UINT, |
| otmsStrikeoutPosition: c_int, |
| otmsUnderscoreSize: c_int, |
| otmsUnderscorePosition: c_int, |
| otmpFamilyName: PSTR, |
| otmpFaceName: PSTR, |
| otmpStyleName: PSTR, |
| otmpFullName: PSTR, |
| }} |
| pub type POUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW; |
| pub type NPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW; |
| pub type LPOUTLINETEXTMETRICW = *mut OUTLINETEXTMETRICW; |
| STRUCT!{struct POLYTEXTA { |
| x: c_int, |
| y: c_int, |
| n: UINT, |
| lpstr: LPCSTR, |
| uiFlags: UINT, |
| rcl: RECT, |
| pdx: *mut c_int, |
| }} |
| pub type PPOLYTEXTA = *mut POLYTEXTA; |
| pub type NPPOLYTEXTA = *mut POLYTEXTA; |
| pub type LPPOLYTEXTA = *mut POLYTEXTA; |
| STRUCT!{struct POLYTEXTW { |
| x: c_int, |
| y: c_int, |
| n: UINT, |
| lpstr: LPCWSTR, |
| uiFlags: UINT, |
| rcl: RECT, |
| pdx: *mut c_int, |
| }} |
| pub type PPOLYTEXTW = *mut POLYTEXTW; |
| pub type NPPOLYTEXTW = *mut POLYTEXTW; |
| pub type LPPOLYTEXTW = *mut POLYTEXTW; |
| STRUCT!{struct FIXED { |
| fract: WORD, |
| value: c_short, |
| }} |
| STRUCT!{struct MAT2 { |
| eM11: FIXED, |
| eM12: FIXED, |
| eM21: FIXED, |
| eM22: FIXED, |
| }} |
| pub type LPMAT2 = *mut MAT2; |
| STRUCT!{struct GLYPHMETRICS { |
| gmBlackBoxX: UINT, |
| gmBlackBoxY: UINT, |
| gmptGlyphOrigin: POINT, |
| gmCellIncX: c_short, |
| gmCellIncY: c_short, |
| }} |
| pub type LPGLYPHMETRICS = *mut GLYPHMETRICS; |
| pub const GGO_METRICS: DWORD = 0; |
| pub const GGO_BITMAP: DWORD = 1; |
| pub const GGO_NATIVE: DWORD = 2; |
| pub const GGO_BEZIER: DWORD = 3; |
| pub const GGO_GRAY2_BITMAP: DWORD = 4; |
| pub const GGO_GRAY4_BITMAP: DWORD = 5; |
| pub const GGO_GRAY8_BITMAP: DWORD = 6; |
| pub const GGO_GLYPH_INDEX: DWORD = 0x0080; |
| pub const GGO_UNHINTED: DWORD = 0x0100; |
| pub const TT_POLYGON_TYPE: DWORD = 24; |
| pub const TT_PRIM_LINE: DWORD = 1; |
| pub const TT_PRIM_QSPLINE: DWORD = 2; |
| pub const TT_PRIM_CSPLINE: DWORD = 3; |
| STRUCT!{struct POINTFX { |
| x: FIXED, |
| y: FIXED, |
| }} |
| pub type LPPOINTFX = *mut POINTFX; |
| STRUCT!{struct TTPOLYCURVE { |
| wType: WORD, |
| cpfx: WORD, |
| apfx: [POINTFX; 1], |
| }} |
| pub type LPTTPOLYCURVE = *mut TTPOLYCURVE; |
| STRUCT!{struct TTPOLYGONHEADER { |
| cb: DWORD, |
| dwType: DWORD, |
| pfxStart: POINTFX, |
| }} |
| pub type LPTTPOLYGONHEADER = *mut TTPOLYGONHEADER; |
| pub const GCP_DBCS: DWORD = 0x0001; |
| pub const GCP_REORDER: DWORD = 0x0002; |
| pub const GCP_USEKERNING: DWORD = 0x0008; |
| pub const GCP_GLYPHSHAPE: DWORD = 0x0010; |
| pub const GCP_LIGATE: DWORD = 0x0020; |
| pub const GCP_DIACRITIC: DWORD = 0x0100; |
| pub const GCP_KASHIDA: DWORD = 0x0400; |
| pub const GCP_ERROR: DWORD = 0x8000; |
| pub const FLI_MASK: DWORD = 0x103B; |
| pub const GCP_JUSTIFY: DWORD = 0x00010000; |
| pub const FLI_GLYPHS: DWORD = 0x00040000; |
| pub const GCP_CLASSIN: DWORD = 0x00080000; |
| pub const GCP_MAXEXTENT: DWORD = 0x00100000; |
| pub const GCP_JUSTIFYIN: DWORD = 0x00200000; |
| pub const GCP_DISPLAYZWG: DWORD = 0x00400000; |
| pub const GCP_SYMSWAPOFF: DWORD = 0x00800000; |
| pub const GCP_NUMERICOVERRIDE: DWORD = 0x01000000; |
| pub const GCP_NEUTRALOVERRIDE: DWORD = 0x02000000; |
| pub const GCP_NUMERICSLATIN: DWORD = 0x04000000; |
| pub const GCP_NUMERICSLOCAL: DWORD = 0x08000000; |
| pub const GCPCLASS_LATIN: DWORD = 1; |
| pub const GCPCLASS_HEBREW: DWORD = 2; |
| pub const GCPCLASS_ARABIC: DWORD = 2; |
| pub const GCPCLASS_NEUTRAL: DWORD = 3; |
| pub const GCPCLASS_LOCALNUMBER: DWORD = 4; |
| pub const GCPCLASS_LATINNUMBER: DWORD = 5; |
| pub const GCPCLASS_LATINNUMERICTERMINATOR: DWORD = 6; |
| pub const GCPCLASS_LATINNUMERICSEPARATOR: DWORD = 7; |
| pub const GCPCLASS_NUMERICSEPARATOR: DWORD = 8; |
| pub const GCPCLASS_PREBOUNDLTR: DWORD = 0x80; |
| pub const GCPCLASS_PREBOUNDRTL: DWORD = 0x40; |
| pub const GCPCLASS_POSTBOUNDLTR: DWORD = 0x20; |
| pub const GCPCLASS_POSTBOUNDRTL: DWORD = 0x10; |
| pub const GCPGLYPH_LINKBEFORE: DWORD = 0x8000; |
| pub const GCPGLYPH_LINKAFTER: DWORD = 0x4000; |
| STRUCT!{struct GCP_RESULTSA { |
| lStructSize: DWORD, |
| lpOutString: LPSTR, |
| lpOrder: *mut UINT, |
| lpDx: *mut c_int, |
| lpCaretPos: *mut c_int, |
| lpClass: LPSTR, |
| lpGlyphs: LPWSTR, |
| nGlyphs: UINT, |
| nMaxFit: c_int, |
| }} |
| pub type LPGCP_RESULTSA = *mut GCP_RESULTSA; |
| STRUCT!{struct GCP_RESULTSW { |
| lStructSize: DWORD, |
| lpOutString: LPWSTR, |
| lpOrder: *mut UINT, |
| lpDx: *mut c_int, |
| lpCaretPos: *mut c_int, |
| lpClass: LPSTR, |
| lpGlyphs: LPWSTR, |
| nGlyphs: UINT, |
| nMaxFit: c_int, |
| }} |
| pub type LPGCP_RESULTSW = *mut GCP_RESULTSW; |
| STRUCT!{struct RASTERIZER_STATUS { |
| nSize: c_short, |
| wFlags: c_short, |
| nLanguageID: c_short, |
| }} |
| pub type LPRASTERIZER_STATUS = *mut RASTERIZER_STATUS; |
| pub const TT_AVAILABLE: DWORD = 0x0001; |
| pub const TT_ENABLED: DWORD = 0x0002; |
| STRUCT!{struct PIXELFORMATDESCRIPTOR { |
| nSize: WORD, |
| nVersion: WORD, |
| dwFlags: DWORD, |
| iPixelType: BYTE, |
| cColorBits: BYTE, |
| cRedBits: BYTE, |
| cRedShift: BYTE, |
| cGreenBits: BYTE, |
| cGreenShift: BYTE, |
| cBlueBits: BYTE, |
| cBlueShift: BYTE, |
| cAlphaBits: BYTE, |
| cAlphaShift: BYTE, |
| cAccumBits: BYTE, |
| cAccumRedBits: BYTE, |
| cAccumGreenBits: BYTE, |
| cAccumBlueBits: BYTE, |
| cAccumAlphaBits: BYTE, |
| cDepthBits: BYTE, |
| cStencilBits: BYTE, |
| cAuxBuffers: BYTE, |
| iLayerType: BYTE, |
| bReserved: BYTE, |
| dwLayerMask: DWORD, |
| dwVisibleMask: DWORD, |
| dwDamageMask: DWORD, |
| }} |
| pub type PPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR; |
| pub type LPPIXELFORMATDESCRIPTOR = *mut PIXELFORMATDESCRIPTOR; |
| pub const PFD_TYPE_RGBA: BYTE = 0; |
| pub const PFD_TYPE_COLORINDEX: BYTE = 1; |
| pub const PFD_MAIN_PLANE: BYTE = 0; |
| pub const PFD_OVERLAY_PLANE: BYTE = 1; |
| pub const PFD_UNDERLAY_PLANE: BYTE = -1i8 as u8; |
| pub const PFD_DOUBLEBUFFER: DWORD = 0x00000001; |
| pub const PFD_STEREO: DWORD = 0x00000002; |
| pub const PFD_DRAW_TO_WINDOW: DWORD = 0x00000004; |
| pub const PFD_DRAW_TO_BITMAP: DWORD = 0x00000008; |
| pub const PFD_SUPPORT_GDI: DWORD = 0x00000010; |
| pub const PFD_SUPPORT_OPENGL: DWORD = 0x00000020; |
| pub const PFD_GENERIC_FORMAT: DWORD = 0x00000040; |
| pub const PFD_NEED_PALETTE: DWORD = 0x00000080; |
| pub const PFD_NEED_SYSTEM_PALETTE: DWORD = 0x00000100; |
| pub const PFD_SWAP_EXCHANGE: DWORD = 0x00000200; |
| pub const PFD_SWAP_COPY: DWORD = 0x00000400; |
| pub const PFD_SWAP_LAYER_BUFFERS: DWORD = 0x00000800; |
| pub const PFD_GENERIC_ACCELERATED: DWORD = 0x00001000; |
| pub const PFD_SUPPORT_DIRECTDRAW: DWORD = 0x00002000; |
| pub const PFD_DIRECT3D_ACCELERATED: DWORD = 0x00004000; |
| pub const PFD_SUPPORT_COMPOSITION: DWORD = 0x00008000; |
| pub const PFD_DEPTH_DONTCARE: DWORD = 0x20000000; |
| pub const PFD_DOUBLEBUFFER_DONTCARE: DWORD = 0x40000000; |
| pub const PFD_STEREO_DONTCARE: DWORD = 0x80000000; |
| FN!{stdcall OLDFONTENUMPROCA( |
| *const LOGFONTA, |
| *const TEXTMETRICA, |
| DWORD, |
| LPARAM, |
| ) -> c_int} |
| FN!{stdcall OLDFONTENUMPROCW( |
| *const LOGFONTW, |
| *const TEXTMETRICW, |
| DWORD, |
| LPARAM, |
| ) -> c_int} |
| pub type FONTENUMPROCA = OLDFONTENUMPROCA; |
| pub type FONTENUMPROCW = OLDFONTENUMPROCW; |
| FN!{stdcall GOBJENUMPROC( |
| LPVOID, |
| LPARAM, |
| ) -> c_int} |
| FN!{stdcall LINEDDAPROC( |
| c_int, |
| c_int, |
| LPARAM, |
| ) -> ()} |
| extern "system" { |
| pub fn AddFontResourceA( |
| _: LPCSTR, |
| ) -> c_int; |
| pub fn AddFontResourceW( |
| _: LPCWSTR, |
| ) -> c_int; |
| pub fn AnimatePalette( |
| hPal: HPALETTE, |
| iStartIndex: UINT, |
| cEntries: UINT, |
| ppe: *const PALETTEENTRY, |
| ) -> BOOL; |
| pub fn Arc( |
| hdc: HDC, |
| x1: c_int, |
| y1: c_int, |
| x2: c_int, |
| y2: c_int, |
| x3: c_int, |
| y3: c_int, |
| x4: c_int, |
| y4: c_int, |
| ) -> BOOL; |
| pub fn BitBlt( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| cx: c_int, |
| cy: c_int, |
| hdcSrc: HDC, |
| x1: c_int, |
| y1: c_int, |
| rop: DWORD, |
| ) -> BOOL; |
| pub fn CancelDC( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn Chord( |
| hdc: HDC, |
| x1: c_int, |
| y1: c_int, |
| x2: c_int, |
| y2: c_int, |
| x3: c_int, |
| y3: c_int, |
| x4: c_int, |
| y4: c_int, |
| ) -> BOOL; |
| pub fn ChoosePixelFormat( |
| hdc: HDC, |
| ppfd: *const PIXELFORMATDESCRIPTOR, |
| ) -> c_int; |
| pub fn CloseMetaFile( |
| hdc: HDC, |
| ) -> HMETAFILE; |
| pub fn CombineRgn( |
| hrgnDst: HRGN, |
| hrgnSrc1: HRGN, |
| hrgnSrc2: HRGN, |
| iMode: c_int, |
| ) -> c_int; |
| pub fn CopyMetaFileA( |
| _: HMETAFILE, |
| _: LPCSTR, |
| ) -> HMETAFILE; |
| pub fn CopyMetaFileW( |
| _: HMETAFILE, |
| _: LPCWSTR, |
| ) -> HMETAFILE; |
| pub fn CreateBitmap( |
| nWidth: c_int, |
| nHeight: c_int, |
| nPlanes: UINT, |
| nBitCount: UINT, |
| lpBits: *const c_void, |
| ) -> HBITMAP; |
| pub fn CreateBitmapIndirect( |
| pbm: *const BITMAP, |
| ) -> HBITMAP; |
| pub fn CreateBrushIndirect( |
| plbrush: *const LOGBRUSH, |
| ) -> HBRUSH; |
| pub fn CreateCompatibleBitmap( |
| hdc: HDC, |
| cx: c_int, |
| cy: c_int, |
| ) -> HBITMAP; |
| pub fn CreateDiscardableBitmap( |
| hdc: HDC, |
| cx: c_int, |
| cy: c_int, |
| ) -> HBITMAP; |
| pub fn CreateCompatibleDC( |
| hdc: HDC, |
| ) -> HDC; |
| pub fn CreateDCA( |
| pwszDriver: LPCSTR, |
| pwszDevice: LPCSTR, |
| pszPort: LPCSTR, |
| pdm: *const DEVMODEA, |
| ) -> HDC; |
| pub fn CreateDCW( |
| pwszDriver: LPCWSTR, |
| pwszDevice: LPCWSTR, |
| pszPort: LPCWSTR, |
| pdm: *const DEVMODEW, |
| ) -> HDC; |
| pub fn CreateDIBitmap( |
| hdc: HDC, |
| pbmih: *const BITMAPINFOHEADER, |
| flInit: DWORD, |
| pjBits: *const c_void, |
| pbmi: *const BITMAPINFO, |
| iUsage: UINT, |
| ) -> HBITMAP; |
| pub fn CreateDIBPatternBrush( |
| h: HGLOBAL, |
| iUsage: UINT, |
| ) -> HBRUSH; |
| pub fn CreateDIBPatternBrushPt( |
| lpPackedDIB: *const c_void, |
| iUsage: UINT, |
| ) -> HBRUSH; |
| pub fn CreateEllipticRgn( |
| x1: c_int, |
| y1: c_int, |
| x2: c_int, |
| y2: c_int, |
| ) -> HRGN; |
| pub fn CreateEllipticRgnIndirect( |
| lprect: *const RECT, |
| ) -> HRGN; |
| pub fn CreateFontIndirectA( |
| lplf: *const LOGFONTA, |
| ) -> HFONT; |
| pub fn CreateFontIndirectW( |
| lplf: *const LOGFONTW, |
| ) -> HFONT; |
| pub fn CreateFontA( |
| cHeight: c_int, |
| cWidth: c_int, |
| cEscapement: c_int, |
| cOrientation: c_int, |
| cWeight: c_int, |
| bItalic: DWORD, |
| bUnderline: DWORD, |
| bStrikeOut: DWORD, |
| iCharSet: DWORD, |
| iOutPrecision: DWORD, |
| iClipPrecision: DWORD, |
| iQuality: DWORD, |
| iPitchAndFamily: DWORD, |
| pszFaceName: LPCSTR, |
| ) -> HFONT; |
| pub fn CreateFontW( |
| cHeight: c_int, |
| cWidth: c_int, |
| cEscapement: c_int, |
| cOrientation: c_int, |
| cWeight: c_int, |
| bItalic: DWORD, |
| bUnderline: DWORD, |
| bStrikeOut: DWORD, |
| iCharSet: DWORD, |
| iOutPrecision: DWORD, |
| iClipPrecision: DWORD, |
| iQuality: DWORD, |
| iPitchAndFamily: DWORD, |
| pszFaceName: LPCWSTR, |
| ) -> HFONT; |
| pub fn CreateHatchBrush( |
| iHatch: c_int, |
| color: COLORREF, |
| ) -> HBRUSH; |
| pub fn CreateICA( |
| pszDriver: LPCSTR, |
| pszDevice: LPCSTR, |
| pszPort: LPCSTR, |
| pdm: *const DEVMODEA, |
| ) -> HDC; |
| pub fn CreateICW( |
| pszDriver: LPCWSTR, |
| pszDevice: LPCWSTR, |
| pszPort: LPCWSTR, |
| pdm: *const DEVMODEW, |
| ) -> HDC; |
| pub fn CreateMetaFileA( |
| pszFile: LPCSTR, |
| ) -> HDC; |
| pub fn CreateMetaFileW( |
| pszFile: LPCWSTR, |
| ) -> HDC; |
| pub fn CreatePalette( |
| plpal: *const LOGPALETTE, |
| ) -> HPALETTE; |
| pub fn CreatePen( |
| iStyle: c_int, |
| cWidth: c_int, |
| color: COLORREF, |
| ) -> HPEN; |
| pub fn CreatePenIndirect( |
| plpen: *const LOGPEN, |
| ) -> HPEN; |
| pub fn CreatePolyPolygonRgn( |
| pptl: *const POINT, |
| pc: *const INT, |
| cPoly: c_int, |
| iMode: c_int, |
| ) -> HRGN; |
| pub fn CreatePatternBrush( |
| hbm: HBITMAP, |
| ) -> HBRUSH; |
| pub fn CreateRectRgn( |
| x1: c_int, |
| y1: c_int, |
| x2: c_int, |
| y2: c_int, |
| ) -> HRGN; |
| pub fn CreateRectRgnIndirect( |
| lprect: *const RECT, |
| ) -> HRGN; |
| pub fn CreateRoundRectRgn( |
| x1: c_int, |
| y1: c_int, |
| x2: c_int, |
| y2: c_int, |
| w: c_int, |
| h: c_int, |
| ) -> HRGN; |
| pub fn CreateScalableFontResourceA( |
| fdwHidden: DWORD, |
| lpszFont: LPCSTR, |
| lpszFile: LPCSTR, |
| lpszPath: LPCSTR, |
| ) -> BOOL; |
| pub fn CreateScalableFontResourceW( |
| fdwHidden: DWORD, |
| lpszFont: LPCWSTR, |
| lpszFile: LPCWSTR, |
| lpszPath: LPCWSTR, |
| ) -> BOOL; |
| pub fn CreateSolidBrush( |
| color: COLORREF, |
| ) -> HBRUSH; |
| pub fn DeleteDC( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn DeleteMetaFile( |
| hmf: HMETAFILE, |
| ) -> BOOL; |
| pub fn DeleteObject( |
| ho: HGDIOBJ, |
| ) -> BOOL; |
| pub fn DescribePixelFormat( |
| hdc: HDC, |
| iPixelFormat: c_int, |
| nBytes: UINT, |
| ppfd: LPPIXELFORMATDESCRIPTOR, |
| ) -> c_int; |
| } |
| FN!{stdcall LPFNDEVMODE( |
| HWND, |
| HMODULE, |
| LPDEVMODEA, |
| LPSTR, |
| LPSTR, |
| LPDEVMODEA, |
| LPSTR, |
| UINT, |
| ) -> UINT} |
| FN!{stdcall LPFNDEVCAPS( |
| LPSTR, |
| LPSTR, |
| UINT, |
| LPSTR, |
| LPDEVMODEA, |
| ) -> DWORD} |
| pub const DM_UPDATE: DWORD = 1; |
| pub const DM_COPY: DWORD = 2; |
| pub const DM_PROMPT: DWORD = 4; |
| pub const DM_MODIFY: DWORD = 8; |
| pub const DM_IN_BUFFER: DWORD = DM_MODIFY; |
| pub const DM_IN_PROMPT: DWORD = DM_PROMPT; |
| pub const DM_OUT_BUFFER: DWORD = DM_COPY; |
| pub const DM_OUT_DEFAULT: DWORD = DM_UPDATE; |
| pub const DC_FIELDS: WORD = 1; |
| pub const DC_PAPERS: WORD = 2; |
| pub const DC_PAPERSIZE: WORD = 3; |
| pub const DC_MINEXTENT: WORD = 4; |
| pub const DC_MAXEXTENT: WORD = 5; |
| pub const DC_BINS: WORD = 6; |
| pub const DC_DUPLEX: WORD = 7; |
| pub const DC_SIZE: WORD = 8; |
| pub const DC_EXTRA: WORD = 9; |
| pub const DC_VERSION: WORD = 10; |
| pub const DC_DRIVER: WORD = 11; |
| pub const DC_BINNAMES: WORD = 12; |
| pub const DC_ENUMRESOLUTIONS: WORD = 13; |
| pub const DC_FILEDEPENDENCIES: WORD = 14; |
| pub const DC_TRUETYPE: WORD = 15; |
| pub const DC_PAPERNAMES: WORD = 16; |
| pub const DC_ORIENTATION: WORD = 17; |
| pub const DC_COPIES: WORD = 18; |
| pub const DC_BINADJUST: WORD = 19; |
| pub const DC_EMF_COMPLIANT: WORD = 20; |
| pub const DC_DATATYPE_PRODUCED: WORD = 21; |
| pub const DC_COLLATE: WORD = 22; |
| pub const DC_MANUFACTURER: WORD = 23; |
| pub const DC_MODEL: WORD = 24; |
| pub const DC_PERSONALITY: WORD = 25; |
| pub const DC_PRINTRATE: WORD = 26; |
| pub const DC_PRINTRATEUNIT: WORD = 27; |
| pub const PRINTRATEUNIT_PPM: WORD = 1; |
| pub const PRINTRATEUNIT_CPS: WORD = 2; |
| pub const PRINTRATEUNIT_LPM: WORD = 3; |
| pub const PRINTRATEUNIT_IPM: WORD = 4; |
| pub const DC_PRINTERMEM: WORD = 28; |
| pub const DC_MEDIAREADY: WORD = 29; |
| pub const DC_STAPLE: WORD = 30; |
| pub const DC_PRINTRATEPPM: WORD = 31; |
| pub const DC_COLORDEVICE: WORD = 32; |
| pub const DC_NUP: WORD = 33; |
| pub const DC_MEDIATYPENAMES: WORD = 34; |
| pub const DC_MEDIATYPES: WORD = 35; |
| pub const DCTT_BITMAP: DWORD = 0x0000001; |
| pub const DCTT_DOWNLOAD: DWORD = 0x0000002; |
| pub const DCTT_SUBDEV: DWORD = 0x0000004; |
| pub const DCTT_DOWNLOAD_OUTLINE: DWORD = 0x0000008; |
| pub const DCBA_FACEUPNONE: DWORD = 0x0000; |
| pub const DCBA_FACEUPCENTER: DWORD = 0x0001; |
| pub const DCBA_FACEUPLEFT: DWORD = 0x0002; |
| pub const DCBA_FACEUPRIGHT: DWORD = 0x0003; |
| pub const DCBA_FACEDOWNNONE: DWORD = 0x0100; |
| pub const DCBA_FACEDOWNCENTER: DWORD = 0x0101; |
| pub const DCBA_FACEDOWNLEFT: DWORD = 0x0102; |
| pub const DCBA_FACEDOWNRIGHT: DWORD = 0x0103; |
| extern "system" { |
| pub fn DeviceCapabilitiesA( |
| pDevice: LPCSTR, |
| pPort: LPCSTR, |
| fwCapability: WORD, |
| pOutput: LPSTR, |
| pDevMode: *const DEVMODEA, |
| ) -> c_int; |
| pub fn DeviceCapabilitiesW( |
| pDevice: LPCWSTR, |
| pPort: LPCWSTR, |
| fwCapability: WORD, |
| pOutput: LPWSTR, |
| pDevMode: *const DEVMODEW, |
| ) -> c_int; |
| pub fn DrawEscape( |
| hdc: HDC, |
| iEscape: c_int, |
| cjIn: c_int, |
| lpIn: LPCSTR, |
| ) -> c_int; |
| pub fn Ellipse( |
| hdc: HDC, |
| left: c_int, |
| top: c_int, |
| right: c_int, |
| bottom: c_int, |
| ) -> BOOL; |
| pub fn EnumFontFamiliesExA( |
| hdc: HDC, |
| lpLogfont: LPLOGFONTA, |
| lpProc: FONTENUMPROCA, |
| lParam: LPARAM, |
| dwFlags: DWORD |
| ) -> c_int; |
| pub fn EnumFontFamiliesExW( |
| hdc: HDC, |
| lpLogfont: LPLOGFONTW, |
| lpProc: FONTENUMPROCW, |
| lParam: LPARAM, |
| dwFlags: DWORD |
| ) -> c_int; |
| pub fn EnumFontFamiliesA( |
| hdc: HDC, |
| lpLogfont: LPCSTR, |
| lpProc: FONTENUMPROCA, |
| lParam: LPARAM |
| ) -> c_int; |
| pub fn EnumFontFamiliesW( |
| hdc: HDC, |
| lpLogfont: LPCWSTR, |
| lpProc: FONTENUMPROCW, |
| lParam: LPARAM |
| ) -> c_int; |
| pub fn EnumFontsA( |
| hdc: HDC, |
| lpLogfont: LPCSTR, |
| lpProc: FONTENUMPROCA, |
| lParam: LPARAM |
| ) -> c_int; |
| pub fn EnumFontsW( |
| hdc: HDC, |
| lpLogfont: LPCWSTR, |
| lpProc: FONTENUMPROCW, |
| lParam: LPARAM |
| ) -> c_int; |
| pub fn EnumObjects( |
| hdc: HDC, |
| nType: c_int, |
| lpFunc: GOBJENUMPROC, |
| lParam: LPARAM |
| ) -> c_int; |
| pub fn EqualRgn( |
| hrgn1: HRGN, |
| hrgn2: HRGN, |
| ) -> BOOL; |
| pub fn Escape( |
| hdc: HDC, |
| iEscape: c_int, |
| cjIn: c_int, |
| pvIn: LPCSTR, |
| pvOut: LPVOID, |
| ) -> c_int; |
| pub fn ExtEscape( |
| hdc: HDC, |
| iEscape: c_int, |
| cjInput: c_int, |
| lpInData: LPCSTR, |
| cjOutput: c_int, |
| lpOutData: LPSTR |
| ) -> c_int; |
| pub fn ExcludeClipRect( |
| hdc: HDC, |
| left: c_int, |
| top: c_int, |
| right: c_int, |
| bottom: c_int, |
| ) -> c_int; |
| pub fn ExtCreateRegion( |
| lpx: *const XFORM, |
| nCount: DWORD, |
| lpData: *const RGNDATA, |
| ) -> HRGN; |
| pub fn ExtFloodFill( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| color: COLORREF, |
| utype: UINT, |
| ) -> BOOL; |
| pub fn FillRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| hbr: HBRUSH, |
| ) -> BOOL; |
| pub fn FloodFill( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| color: COLORREF, |
| ) -> BOOL; |
| pub fn FrameRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| hbr: HBRUSH, |
| w: c_int, |
| h: c_int, |
| ) -> BOOL; |
| pub fn GetROP2( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetAspectRatioFilterEx( |
| hdc: HDC, |
| lpsize: LPSIZE, |
| ) -> BOOL; |
| pub fn GetBkColor( |
| hdc: HDC, |
| ) -> COLORREF; |
| pub fn GetDCBrushColor( |
| hdc: HDC, |
| ) -> COLORREF; |
| pub fn GetDCPenColor( |
| hdc: HDC, |
| ) -> COLORREF; |
| pub fn GetBkMode( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetBitmapBits( |
| hbit: HBITMAP, |
| cb: LONG, |
| lpvBits: LPVOID, |
| ) -> LONG; |
| pub fn GetBitmapDimensionEx( |
| hbit: HBITMAP, |
| lpsize: LPSIZE, |
| ) -> BOOL; |
| pub fn GetBoundsRect( |
| hdc: HDC, |
| lprect: LPRECT, |
| flags: UINT, |
| ) -> UINT; |
| pub fn GetBrushOrgEx( |
| hdc: HDC, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn GetCharWidthA( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpBuffer: LPINT, |
| ) -> BOOL; |
| pub fn GetCharWidthW( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpBuffer: LPINT, |
| ) -> BOOL; |
| pub fn GetCharWidth32A( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpBuffer: LPINT, |
| ) -> BOOL; |
| pub fn GetCharWidth32W( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpBuffer: LPINT, |
| ) -> BOOL; |
| pub fn GetCharWidthFloatA( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpBuffer: PFLOAT, |
| ) -> BOOL; |
| pub fn GetCharWidthFloatW( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpBuffer: PFLOAT, |
| ) -> BOOL; |
| pub fn GetCharABCWidthsA( |
| hdc: HDC, |
| wFirst: UINT, |
| wLast: UINT, |
| lpABC: LPABC, |
| ) -> BOOL; |
| pub fn GetCharABCWidthsW( |
| hdc: HDC, |
| wFirst: UINT, |
| wLast: UINT, |
| lpABC: LPABC, |
| ) -> BOOL; |
| pub fn GetCharABCWidthsFloatA( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpABC: LPABCFLOAT |
| ) -> BOOL; |
| pub fn GetCharABCWidthsFloatW( |
| hdc: HDC, |
| iFirst: UINT, |
| iLast: UINT, |
| lpABC: LPABCFLOAT |
| ) -> BOOL; |
| pub fn GetClipBox( |
| hdc: HDC, |
| lprect: LPRECT, |
| ) -> c_int; |
| pub fn GetClipRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| ) -> c_int; |
| pub fn GetMetaRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| ) -> c_int; |
| pub fn GetCurrentObject( |
| hdc: HDC, |
| tp: UINT, |
| ) -> HGDIOBJ; |
| pub fn GetCurrentPositionEx( |
| hdc: HDC, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn GetDeviceCaps( |
| hdc: HDC, |
| nIndex: c_int, |
| ) -> c_int; |
| pub fn GetDIBits( |
| hdc: HDC, |
| hbm: HBITMAP, |
| start: UINT, |
| cLines: UINT, |
| lpvBits: LPVOID, |
| lpbmi: LPBITMAPINFO, |
| usage: UINT |
| ) -> c_int; |
| pub fn GetFontData( |
| hdc: HDC, |
| dwTable: DWORD, |
| dwOffset: DWORD, |
| pvBuffer: PVOID, |
| cjBuffer: DWORD |
| ) -> DWORD; |
| pub fn GetGlyphOutlineA( |
| hdc: HDC, |
| uChar: UINT, |
| fuFormat: UINT, |
| lpgm: LPGLYPHMETRICS, |
| cjBuffer: DWORD, |
| pvBuffer: LPVOID, |
| lpmat2: *const MAT2 |
| ) -> DWORD; |
| pub fn GetGlyphOutlineW( |
| hdc: HDC, |
| uChar: UINT, |
| fuFormat: UINT, |
| lpgm: LPGLYPHMETRICS, |
| cjBuffer: DWORD, |
| pvBuffer: LPVOID, |
| lpmat2: *const MAT2 |
| ) -> DWORD; |
| pub fn GetGraphicsMode( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetMapMode( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetMetaFileBitsEx( |
| hMF: HMETAFILE, |
| cbBuffer: UINT, |
| lpData: LPVOID, |
| ) -> UINT; |
| pub fn GetMetaFileA( |
| lpName: LPCSTR, |
| ) -> HMETAFILE; |
| pub fn GetMetaFileW( |
| lpName: LPCWSTR, |
| ) -> HMETAFILE; |
| pub fn GetNearestColor( |
| hdc: HDC, |
| color: COLORREF, |
| ) -> COLORREF; |
| pub fn GetNearestPaletteIndex( |
| h: HPALETTE, |
| color: COLORREF, |
| ) -> UINT; |
| pub fn GetObjectType( |
| h: HGDIOBJ, |
| ) -> DWORD; |
| pub fn GetOutlineTextMetricsA( |
| hdc: HDC, |
| cjCopy: UINT, |
| potm: LPOUTLINETEXTMETRICA, |
| ) -> UINT; |
| pub fn GetOutlineTextMetricsW( |
| hdc: HDC, |
| cjCopy: UINT, |
| potm: LPOUTLINETEXTMETRICW, |
| ) -> UINT; |
| pub fn GetPaletteEntries( |
| hpal: HPALETTE, |
| iStart: UINT, |
| cEntries: UINT, |
| pPalEntries: LPPALETTEENTRY |
| ) -> UINT; |
| pub fn GetPixel( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| ) -> COLORREF; |
| pub fn GetPixelFormat( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetPolyFillMode( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetRasterizerCaps( |
| lpraststat: LPRASTERIZER_STATUS, |
| cjBytes: UINT, |
| ) -> BOOL; |
| pub fn GetRandomRgn ( |
| hdc: HDC, |
| hrgn: HRGN, |
| i: INT, |
| ) -> c_int; |
| pub fn GetRegionData( |
| hrgn: HRGN, |
| nCount: DWORD, |
| lpRgnData: LPRGNDATA, |
| ) -> DWORD; |
| pub fn GetRgnBox( |
| hrgn: HRGN, |
| lprc: LPRECT, |
| ) -> c_int; |
| pub fn GetStockObject( |
| i: c_int, |
| ) -> HGDIOBJ; |
| pub fn GetStretchBltMode( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetSystemPaletteEntries( |
| hdc: HDC, |
| iStart: UINT, |
| cEntries: UINT, |
| pPalEntries: LPPALETTEENTRY, |
| ) -> UINT; |
| pub fn GetSystemPaletteUse( |
| hdc: HDC, |
| ) -> UINT; |
| pub fn GetTextCharacterExtra( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetTextAlign( |
| hdc: HDC, |
| ) -> UINT; |
| pub fn GetTextColor( |
| hdc: HDC, |
| ) -> COLORREF; |
| pub fn GetTextExtentPointA( |
| hdc: HDC, |
| lpString: LPCSTR, |
| c: c_int, |
| lpsz: LPSIZE, |
| ) -> BOOL; |
| pub fn GetTextExtentPointW( |
| hdc: HDC, |
| lpString: LPCWSTR, |
| c: c_int, |
| lpsz: LPSIZE, |
| ) -> BOOL; |
| pub fn GetTextExtentPoint32A( |
| hdc: HDC, |
| lpString: LPCSTR, |
| c: c_int, |
| psizl: LPSIZE, |
| ) -> BOOL; |
| pub fn GetTextExtentPoint32W( |
| hdc: HDC, |
| lpString: LPCWSTR, |
| c: c_int, |
| psizl: LPSIZE, |
| ) -> BOOL; |
| pub fn GetTextExtentExPointA( |
| hdc: HDC, |
| lpszString: LPCSTR, |
| cchString: c_int, |
| nMaxExtent: c_int, |
| lpnFit: LPINT, |
| lpnDx: LPINT, |
| lpSize: LPSIZE |
| ) -> BOOL; |
| pub fn GetTextExtentExPointW( |
| hdc: HDC, |
| lpszString: LPCWSTR, |
| cchString: c_int, |
| nMaxExtent: c_int, |
| lpnFit: LPINT, |
| lpnDx: LPINT, |
| lpSize: LPSIZE |
| ) -> BOOL; |
| pub fn GetTextCharset( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetTextCharsetInfo( |
| hdc: HDC, |
| lpSig: LPFONTSIGNATURE, |
| dwFlags: DWORD, |
| ) -> c_int; |
| pub fn TranslateCharsetInfo( |
| lpSrc: *const DWORD, |
| lpCs: LPCHARSETINFO, |
| dwFlags: DWORD |
| ) -> BOOL; |
| pub fn GetFontLanguageInfo( |
| hdc: HDC, |
| ) -> DWORD; |
| pub fn GetCharacterPlacementA( |
| hdc: HDC, |
| lpString: LPCSTR, |
| nCount: c_int, |
| nMexExtent: c_int, |
| lpResults: LPGCP_RESULTSA, |
| dwFlags: DWORD |
| ) -> DWORD; |
| pub fn GetCharacterPlacementW( |
| hdc: HDC, |
| lpString: LPCWSTR, |
| nCount: c_int, |
| nMexExtent: c_int, |
| lpResults: LPGCP_RESULTSW, |
| dwFlags: DWORD |
| ) -> DWORD; |
| } |
| STRUCT!{struct WCRANGE { |
| wcLow: WCHAR, |
| cGlyphs: USHORT, |
| }} |
| pub type PWCRANGE = *mut WCRANGE; |
| pub type LPWCRANGE = *mut WCRANGE; |
| STRUCT!{struct GLYPHSET { |
| cbThis: DWORD, |
| flAccel: DWORD, |
| cGlyphsSupported: DWORD, |
| cRanges: DWORD, |
| ranges: [WCRANGE;1], |
| }} |
| pub type PGLYPHSET = *mut GLYPHSET; |
| pub type LPGLYPHSET = *mut GLYPHSET; |
| pub const GS_8BIT_INDICES: DWORD = 0x00000001; |
| pub const GGI_MARK_NONEXISTING_GLYPHS: DWORD = 0x0001; |
| extern "system" { |
| pub fn GetFontUnicodeRanges( |
| hdc: HDC, |
| lpgs: LPGLYPHSET, |
| ) -> DWORD; |
| pub fn GetGlyphIndicesA( |
| hdc: HDC, |
| lpstr: LPCSTR, |
| c: c_int, |
| pgi: LPWORD, |
| fl: DWORD, |
| ) -> DWORD; |
| pub fn GetGlyphIndicesW( |
| hdc: HDC, |
| lpstr: LPCWSTR, |
| c: c_int, |
| pgi: LPWORD, |
| fl: DWORD, |
| ) -> DWORD; |
| pub fn GetTextExtentPointI( |
| hdc: HDC, |
| pgiIn: LPWORD, |
| cgi: c_int, |
| psize: LPSIZE, |
| ) -> BOOL; |
| pub fn GetTextExtentExPointI( |
| hdc: HDC, |
| lpwszString: LPWORD, |
| cwchString: c_int, |
| nMaxExtent: c_int, |
| lpnFit: LPINT, |
| lpnDx: LPINT, |
| lpSize: LPSIZE, |
| ) -> BOOL; |
| pub fn GetCharWidthI( |
| hdc: HDC, |
| giFirst: UINT, |
| cgi: UINT, |
| pgi: LPWORD, |
| piWidths: LPINT, |
| ) -> BOOL; |
| pub fn GetCharABCWidthsI( |
| hdc: HDC, |
| giFirst: UINT, |
| cgi: UINT, |
| pgi: LPWORD, |
| pabc: LPABC, |
| ) -> BOOL; |
| } |
| pub const STAMP_DESIGNVECTOR: DWORD = 0x8000000 + 0x64 + (0x76 << 8); |
| pub const STAMP_AXESLIST: DWORD = 0x8000000 + 0x61 + (0x6c << 8); |
| pub const STAMP_TRUETYPE_VARIATION: DWORD = 0x8000000 + 0x74 + (0x76 << 8); |
| pub const MM_MAX_NUMAXES: usize = 16; |
| STRUCT!{struct DESIGNVECTOR { |
| dvReserved: DWORD, |
| dvNumAxes: DWORD, |
| dvValues: [LONG; MM_MAX_NUMAXES], |
| }} |
| pub type PDESIGNVECTOR = *mut DESIGNVECTOR; |
| pub type LPDESIGNVECTOR = *mut DESIGNVECTOR; |
| extern "system" { |
| pub fn AddFontResourceExA( |
| lpszFilename: LPCSTR, |
| fl: DWORD, |
| pdv: PVOID, |
| ) -> c_int; |
| pub fn AddFontResourceExW( |
| lpszFilename: LPCWSTR, |
| fl: DWORD, |
| pdv: PVOID, |
| ) -> c_int; |
| pub fn RemoveFontResourceExA( |
| name: LPCSTR, |
| fl: DWORD, |
| pdv: PVOID, |
| ) -> BOOL; |
| pub fn RemoveFontResourceExW( |
| name: LPCWSTR, |
| fl: DWORD, |
| pdv: PVOID, |
| ) -> BOOL; |
| pub fn AddFontMemResourceEx( |
| pbFont: PVOID, |
| cbSize: DWORD, |
| pdv: PVOID, |
| pcFonts: *mut DWORD, |
| ) -> HANDLE; |
| pub fn RemoveFontMemResourceEx( |
| h: HANDLE, |
| ) -> BOOL; |
| } |
| pub const FR_PRIVATE: DWORD = 0x10; |
| pub const FR_NOT_ENUM: DWORD = 0x20; |
| pub const MM_MAX_AXES_NAMELEN: usize = 16; |
| STRUCT!{struct AXISINFOA { |
| axMinValue: LONG, |
| axMaxValue: LONG, |
| axAxisName: [BYTE; MM_MAX_AXES_NAMELEN], |
| }} |
| pub type PAXISINFOA = *mut AXISINFOA; |
| pub type LPAXISINFOA = *mut AXISINFOA; |
| STRUCT!{struct AXISINFOW { |
| axMinValue: LONG, |
| axMaxValue: LONG, |
| axAxisName: [WCHAR; MM_MAX_AXES_NAMELEN], |
| }} |
| pub type PAXISINFOW = *mut AXISINFOW; |
| pub type LPAXISINFOW = *mut AXISINFOW; |
| STRUCT!{struct AXESLISTA { |
| axlReserved: DWORD, |
| axlNumAxes: DWORD, |
| axlAxisInfo: [AXISINFOA; MM_MAX_AXES_NAMELEN], |
| }} |
| pub type PAXESLISTA = *mut AXESLISTA; |
| pub type LPAXESLISTA = *mut AXESLISTA; |
| STRUCT!{struct AXESLISTW { |
| axlReserved: DWORD, |
| axlNumAxes: DWORD, |
| axlAxisInfo: [AXISINFOW; MM_MAX_AXES_NAMELEN], |
| }} |
| pub type PAXESLISTW = *mut AXESLISTW; |
| pub type LPAXESLISTW = *mut AXESLISTW; |
| STRUCT!{struct ENUMLOGFONTEXDVA { |
| elfEnumLogfontEx: ENUMLOGFONTEXA, |
| elfDesignVector: DESIGNVECTOR, |
| }} |
| pub type PENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA; |
| pub type LPENUMLOGFONTEXDVA = *mut ENUMLOGFONTEXDVA; |
| STRUCT!{struct ENUMLOGFONTEXDVW { |
| elfEnumLogfontEx: ENUMLOGFONTEXW, |
| elfDesignVector: DESIGNVECTOR, |
| }} |
| pub type PENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW; |
| pub type LPENUMLOGFONTEXDVW = *mut ENUMLOGFONTEXDVW; |
| extern "system" { |
| pub fn CreateFontIndirectExA( |
| penumlfex: *const ENUMLOGFONTEXDVA, |
| ) -> HFONT; |
| pub fn CreateFontIndirectExW( |
| penumlfex: *const ENUMLOGFONTEXDVW, |
| ) -> HFONT; |
| } |
| STRUCT!{struct ENUMTEXTMETRICA { |
| etmNewTextMetricEx: NEWTEXTMETRICEXA, |
| etmAxesList: AXESLISTA, |
| }} |
| pub type PENUMTEXTMETRICA = *mut ENUMTEXTMETRICA; |
| pub type LPENUMTEXTMETRICA = *mut ENUMTEXTMETRICA; |
| STRUCT!{struct ENUMTEXTMETRICW { |
| etmNewTextMetricEx: NEWTEXTMETRICEXW, |
| etmAxesList: AXESLISTW, |
| }} |
| pub type PENUMTEXTMETRICW = *mut ENUMTEXTMETRICW; |
| pub type LPENUMTEXTMETRICW = *mut ENUMTEXTMETRICW; |
| extern "system" { |
| pub fn GetViewportExtEx( |
| hdc: HDC, |
| lpsize: LPSIZE, |
| ) -> BOOL; |
| pub fn GetViewportOrgEx( |
| hdc: HDC, |
| lppoint: LPPOINT, |
| ) -> BOOL; |
| pub fn GetWindowExtEx( |
| hdc: HDC, |
| lpsize: LPSIZE, |
| ) -> BOOL; |
| pub fn GetWindowOrgEx( |
| hdc: HDC, |
| lppoint: LPPOINT, |
| ) -> BOOL; |
| pub fn IntersectClipRect( |
| hdc: HDC, |
| left: c_int, |
| top: c_int, |
| right: c_int, |
| bottom: c_int, |
| ) -> c_int; |
| pub fn InvertRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| ) -> BOOL; |
| pub fn LineDDA( |
| nXStart: c_int, |
| nYStart: c_int, |
| nXEnd: c_int, |
| nYEnd: c_int, |
| lpLineFunc: LINEDDAPROC, |
| lpData: LPARAM, |
| ) -> BOOL; |
| pub fn LineTo( |
| hdc: HDC, |
| nXEnd: c_int, |
| nYEnd: c_int, |
| ) -> BOOL; |
| pub fn MaskBlt( |
| hdcDest: HDC, |
| xDest: c_int, |
| yDest: c_int, |
| width: c_int, |
| height: c_int, |
| hdcSrc: HDC, |
| xSrc: c_int, |
| ySrc: c_int, |
| hbmMask: HBITMAP, |
| xMask: c_int, |
| yMask: c_int, |
| rop: DWORD, |
| ) -> BOOL; |
| pub fn PlgBlt( |
| hdcDest: HDC, |
| lpPoint: *const POINT, |
| hdcSrc: HDC, |
| xSrc: c_int, |
| ySrc: c_int, |
| width: c_int, |
| height: c_int, |
| hbmMask: HBITMAP, |
| xMask: c_int, |
| yMask: c_int, |
| ) -> BOOL; |
| pub fn OffsetClipRgn( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| ) -> c_int; |
| pub fn OffsetRgn( |
| hrgn: HRGN, |
| x: c_int, |
| y: c_int, |
| ) -> c_int; |
| pub fn PatBlt( |
| hdc: HDC, |
| nXLeft: c_int, |
| nYLeft: c_int, |
| nWidth: c_int, |
| nHeight: c_int, |
| dwRop: DWORD, |
| ) -> BOOL; |
| pub fn Pie( |
| hdc: HDC, |
| nLeftRect: c_int, |
| nTopRect: c_int, |
| nRightRect: c_int, |
| nBottomRect: c_int, |
| nXRadial1: c_int, |
| nYRadial1: c_int, |
| nXRadial2: c_int, |
| nYRadial2: c_int, |
| ) -> BOOL; |
| pub fn PlayMetaFile( |
| hdc: HDC, |
| hmf: HMETAFILE, |
| ) -> BOOL; |
| pub fn PaintRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| ) -> BOOL; |
| pub fn PolyPolygon( |
| hdc: HDC, |
| lpPoints: *const POINT, |
| lpPolyCounts: *const INT, |
| cCount: DWORD, |
| ) -> BOOL; |
| pub fn PtInRegion( |
| hrgn: HRGN, |
| x: c_int, |
| y: c_int, |
| ) -> BOOL; |
| pub fn PtVisible( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| ) -> BOOL; |
| pub fn RectInRegion( |
| hrgn: HRGN, |
| lprect: *const RECT, |
| ) -> BOOL; |
| pub fn RectVisible( |
| hdc: HDC, |
| lprect: *const RECT, |
| ) -> BOOL; |
| pub fn Rectangle( |
| hdc: HDC, |
| left: c_int, |
| top: c_int, |
| right: c_int, |
| bottom: c_int, |
| ) -> BOOL; |
| pub fn RestoreDC( |
| hdc: HDC, |
| nSavedDC: c_int, |
| ) -> BOOL; |
| pub fn ResetDCA( |
| hdc: HDC, |
| lpdm: *const DEVMODEA, |
| ) -> HDC; |
| pub fn ResetDCW( |
| hdc: HDC, |
| lpdm: *const DEVMODEW, |
| ) -> HDC; |
| pub fn RealizePalette( |
| hdc: HDC, |
| ) -> UINT; |
| pub fn RemoveFontResourceA( |
| lpFileName: LPCSTR, |
| ) -> BOOL; |
| pub fn RemoveFontResourceW( |
| lpFileName: LPCWSTR, |
| ) -> BOOL; |
| pub fn RoundRect( |
| hdc: HDC, |
| nLeftRect: c_int, |
| nTopRect: c_int, |
| nRightRect: c_int, |
| nBottomRect: c_int, |
| nWidth: c_int, |
| nHeight: c_int, |
| ) -> BOOL; |
| pub fn ResizePalette( |
| hpal: HPALETTE, |
| n: UINT, |
| ) -> BOOL; |
| pub fn SaveDC( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn SelectClipRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| ) -> c_int; |
| pub fn ExtSelectClipRgn( |
| hdc: HDC, |
| hrgn: HRGN, |
| mode: c_int, |
| ) -> c_int; |
| pub fn SetMetaRgn( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn SelectObject( |
| hdc: HDC, |
| h: HGDIOBJ, |
| ) -> HGDIOBJ; |
| pub fn SelectPalette( |
| hdc: HDC, |
| hPal: HPALETTE, |
| bForceBkgd: BOOL, |
| ) -> HPALETTE; |
| pub fn SetBkColor( |
| hdc: HDC, |
| color: COLORREF, |
| ) -> COLORREF; |
| pub fn SetDCBrushColor( |
| hdc: HDC, |
| color: COLORREF, |
| ) -> COLORREF; |
| pub fn SetDCPenColor( |
| hdc: HDC, |
| color: COLORREF, |
| ) -> COLORREF; |
| pub fn SetBkMode( |
| hdc: HDC, |
| mode: c_int, |
| ) -> c_int; |
| pub fn SetBitmapBits( |
| hbm: HBITMAP, |
| cb: DWORD, |
| pvBits: *const VOID, |
| ) -> LONG; |
| pub fn SetBoundsRect( |
| hdc: HDC, |
| lprect: *const RECT, |
| flags: UINT, |
| ) -> UINT; |
| pub fn SetDIBits( |
| hdc: HDC, |
| hbm: HBITMAP, |
| start: UINT, |
| cLines: UINT, |
| lpBits: *const VOID, |
| lpbmi: *const BITMAPINFO, |
| ColorUse: UINT, |
| ) -> c_int; |
| pub fn SetDIBitsToDevice( |
| hdc: HDC, |
| xDest: c_int, |
| yDest: c_int, |
| w: DWORD, |
| h: DWORD, |
| xSrc: c_int, |
| ySrc: c_int, |
| StartScan: UINT, |
| cLines: UINT, |
| lpvBits: *const VOID, |
| lpbmi: *const BITMAPINFO, |
| ColorUse: UINT, |
| ) -> c_int; |
| pub fn SetMapperFlags( |
| hdc: HDC, |
| flags: DWORD, |
| ) -> DWORD; |
| pub fn SetGraphicsMode( |
| hdc: HDC, |
| iMode: c_int, |
| ) -> c_int; |
| pub fn SetMapMode( |
| hdc: HDC, |
| mode: c_int, |
| ) -> c_int; |
| pub fn SetLayout( |
| hdc: HDC, |
| l: DWORD, |
| ) -> DWORD; |
| pub fn GetLayout( |
| hdc: HDC, |
| ) -> DWORD; |
| pub fn SetMetaFileBitsEx( |
| cbBuffer: UINT, |
| lpData: *const BYTE, |
| ) -> HMETAFILE; |
| pub fn SetPaletteEntries( |
| hpal: HPALETTE, |
| iStart: UINT, |
| cEntries: UINT, |
| pPalEntries: *const PALETTEENTRY, |
| ) -> UINT; |
| pub fn SetPixel( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| color: COLORREF, |
| ) -> COLORREF; |
| pub fn SetPixelV( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| color: COLORREF, |
| ) -> BOOL; |
| pub fn SetPixelFormat( |
| hdc: HDC, |
| iPixelFormat: c_int, |
| ppfd: *const PIXELFORMATDESCRIPTOR, |
| ) -> BOOL; |
| pub fn SetPolyFillMode( |
| hdc: HDC, |
| iPolyFillMode: c_int, |
| ) -> c_int; |
| pub fn StretchBlt( |
| hdcDest: HDC, |
| xDest: c_int, |
| yDest: c_int, |
| wDest: c_int, |
| hDest: c_int, |
| hdcSrc: HDC, |
| xSrc: c_int, |
| ySrc: c_int, |
| wSrc: c_int, |
| hSrc: c_int, |
| rop: DWORD, |
| ) -> BOOL; |
| pub fn SetRectRgn( |
| hrgn: HRGN, |
| left: c_int, |
| top: c_int, |
| right: c_int, |
| bottom: c_int, |
| ) -> BOOL; |
| pub fn StretchDIBits( |
| hdc: HDC, |
| XDest: c_int, |
| YDest: c_int, |
| nDestWidth: c_int, |
| nDestHeight: c_int, |
| XSrc: c_int, |
| YSrc: c_int, |
| nSrcWidth: c_int, |
| nSrcHeight: c_int, |
| lpBits: *const VOID, |
| lpBitsInfo: *const BITMAPINFO, |
| iUsage: UINT, |
| dwRop: DWORD, |
| ) -> c_int; |
| pub fn SetROP2( |
| hdc: HDC, |
| rop2: c_int, |
| ) -> c_int; |
| pub fn SetStretchBltMode( |
| hdc: HDC, |
| mode: c_int, |
| ) -> c_int; |
| pub fn SetSystemPaletteUse( |
| hdc: HDC, |
| uuse: UINT, |
| ) -> UINT; |
| pub fn SetTextCharacterExtra( |
| hdc: HDC, |
| extra: c_int, |
| ) -> c_int; |
| pub fn SetTextColor( |
| hdc: HDC, |
| color: COLORREF, |
| ) -> COLORREF; |
| pub fn SetTextAlign( |
| hdc: HDC, |
| align: UINT, |
| ) -> UINT; |
| pub fn SetTextJustification( |
| hdc: HDC, |
| extra: c_int, |
| count: c_int, |
| ) -> BOOL; |
| pub fn UpdateColors( |
| hdc: HDC, |
| ) -> BOOL; |
| } |
| pub type COLOR16 = c_ushort; |
| STRUCT!{struct TRIVERTEX { |
| x: LONG, |
| y: LONG, |
| Red: COLOR16, |
| Green: COLOR16, |
| Blue: COLOR16, |
| Alpha: COLOR16, |
| }} |
| pub type PTRIVERTEX = *mut TRIVERTEX; |
| pub type LPTRIVERTEX = *mut TRIVERTEX; |
| STRUCT!{struct GRADIENT_RECT { |
| UpperLeft: ULONG, |
| LowerRight: ULONG, |
| }} |
| pub type PGRADIENT_RECT = *mut GRADIENT_RECT; |
| pub type LPGRADIENT_RECT = *mut GRADIENT_RECT; |
| STRUCT!{struct BLENDFUNCTION { |
| BlendOp: BYTE, |
| BlendFlags: BYTE, |
| SourceConstantAlpha: BYTE, |
| AlphaFormat: BYTE, |
| }} |
| pub type PBLENDFUNCTION = *mut BLENDFUNCTION; |
| pub const AC_SRC_OVER: BYTE = 0x00; |
| pub const AC_SRC_ALPHA: BYTE = 0x01; |
| extern "system" { |
| pub fn AlphaBlend( |
| hdcDest: HDC, |
| xoriginDest: c_int, |
| yoriginDest: c_int, |
| wDest: c_int, |
| hDest: c_int, |
| hdcSrc: HDC, |
| xoriginSrc: c_int, |
| yoriginSrc: c_int, |
| wSrc: c_int, |
| hSrc: c_int, |
| ftn: BLENDFUNCTION, |
| ) -> BOOL; |
| pub fn TransparentBlt( |
| hdcDest: HDC, |
| xoriginDest: c_int, |
| yoriginDest: c_int, |
| wDest: c_int, |
| hDest: c_int, |
| hdcSrc: HDC, |
| xoriginSrc: c_int, |
| yoriginSrc: c_int, |
| wSrc: c_int, |
| hSrc: c_int, |
| crTransparent: UINT, |
| ) -> BOOL; |
| } |
| pub const GRADIENT_FILL_RECT_H: ULONG = 0x00000000; |
| pub const GRADIENT_FILL_RECT_V: ULONG = 0x00000001; |
| pub const GRADIENT_FILL_TRIANGLE: ULONG = 0x00000002; |
| pub const GRADIENT_FILL_OP_FLAG: ULONG = 0x000000ff; |
| extern "system" { |
| pub fn GradientFill( |
| hdc: HDC, |
| pVertex: PTRIVERTEX, |
| nVertex: ULONG, |
| pMesh: PVOID, |
| nMesh: ULONG, |
| ulMode: ULONG, |
| ) -> BOOL; |
| pub fn GdiAlphaBlend( |
| hdcDest: HDC, |
| xoriginDest: c_int, |
| yoriginDest: c_int, |
| wDest: c_int, |
| hDest: c_int, |
| hdcSrc: HDC, |
| xoriginSrc: c_int, |
| yoriginSrc: c_int, |
| wSrc: c_int, |
| hSrc: c_int, |
| ftn: BLENDFUNCTION, |
| ) -> BOOL; |
| pub fn GdiTransparentBlt( |
| hdcDest: HDC, |
| xoriginDest: c_int, |
| yoriginDest: c_int, |
| wDest: c_int, |
| hDest: c_int, |
| hdcSrc: HDC, |
| xoriginSrc: c_int, |
| yoriginSrc: c_int, |
| wSrc: c_int, |
| hSrc: c_int, |
| crTransparent: UINT, |
| ) -> BOOL; |
| pub fn GdiGradientFill( |
| hdc: HDC, |
| pVertex: PTRIVERTEX, |
| nVertex: ULONG, |
| pMesh: PVOID, |
| nCount: ULONG, |
| ulMode: ULONG, |
| ) -> BOOL; |
| pub fn PlayMetaFileRecord( |
| hdc: HDC, |
| lpHandleTable: LPHANDLETABLE, |
| lpMR: LPMETARECORD, |
| noObjs: UINT, |
| ) -> BOOL; |
| } |
| FN!{stdcall MFENUMPROC( |
| hdc: HDC, |
| lpht: *mut HANDLETABLE, |
| lpMR: *mut METARECORD, |
| nObj: c_int, |
| param: LPARAM, |
| ) -> c_int} |
| extern "system" { |
| pub fn EnumMetaFile( |
| hdc: HDC, |
| hmf: HMETAFILE, |
| mproc: MFENUMPROC, |
| param: LPARAM, |
| ) -> BOOL; |
| } |
| FN!{stdcall ENHMFENUMPROC( |
| hdc: HDC, |
| lpht: *mut HANDLETABLE, |
| lpmr: *const ENHMETARECORD, |
| nHandles: c_int, |
| data: LPARAM, |
| ) -> c_int} |
| extern "system" { |
| pub fn CloseEnhMetaFile( |
| hdc: HDC, |
| ) -> HENHMETAFILE; |
| pub fn CopyEnhMetaFileA( |
| hemfSrc: HENHMETAFILE, |
| lpszFile: LPCSTR, |
| ) -> HENHMETAFILE; |
| pub fn CopyEnhMetaFileW( |
| hemfSrc: HENHMETAFILE, |
| lpszFile: LPCWSTR, |
| ) -> HENHMETAFILE; |
| pub fn CreateEnhMetaFileA( |
| hdcRef: HDC, |
| lpFilename: LPCSTR, |
| lpRect: *const RECT, |
| lpDescription: LPCSTR, |
| ) -> HDC; |
| pub fn CreateEnhMetaFileW( |
| hdcRef: HDC, |
| lpFilename: LPCWSTR, |
| lpRect: *const RECT, |
| lpDescription: LPCWSTR, |
| ) -> HDC; |
| pub fn DeleteEnhMetaFile( |
| hmf: HENHMETAFILE, |
| ) -> BOOL; |
| pub fn EnumEnhMetaFile( |
| hdc: HDC, |
| hmf: HENHMETAFILE, |
| lpProc: ENHMFENUMPROC, |
| param: LPVOID, |
| lpRect: *const RECT, |
| ) -> BOOL; |
| pub fn GetEnhMetaFileA( |
| lpName: LPCSTR, |
| ) -> HENHMETAFILE; |
| pub fn GetEnhMetaFileW( |
| lpName: LPCWSTR, |
| ) -> HENHMETAFILE; |
| pub fn GetEnhMetaFileBits( |
| hEMF: HENHMETAFILE, |
| nSize: UINT, |
| lpData: LPBYTE, |
| ) -> UINT; |
| pub fn GetEnhMetaFileDescriptionA( |
| hemf: HENHMETAFILE, |
| cchBuffer: UINT, |
| lpDescription: LPSTR, |
| ) -> UINT; |
| pub fn GetEnhMetaFileDescriptionW( |
| hemf: HENHMETAFILE, |
| cchBuffer: UINT, |
| lpDescription: LPWSTR, |
| ) -> UINT; |
| pub fn GetEnhMetaFileHeader( |
| hemf: HENHMETAFILE, |
| nSize: UINT, |
| lpEnhMetaHeader: LPENHMETAHEADER, |
| ) -> UINT; |
| pub fn GetEnhMetaFilePaletteEntries( |
| hemf: HENHMETAFILE, |
| nNumEntries: UINT, |
| lpPaletteEntries: LPPALETTEENTRY, |
| ) -> UINT; |
| pub fn GetEnhMetaFilePixelFormat( |
| hemf: HENHMETAFILE, |
| cbBuffer: UINT, |
| ppfd: *mut PIXELFORMATDESCRIPTOR, |
| ) -> UINT; |
| pub fn GetWinMetaFileBits( |
| hemf: HENHMETAFILE, |
| cbData16: UINT, |
| pData16: LPBYTE, |
| iMapMode: INT, |
| hdcRef: HDC, |
| ) -> UINT; |
| pub fn PlayEnhMetaFile( |
| hdc: HDC, |
| hmf: HENHMETAFILE, |
| lprect: *const RECT, |
| ) -> BOOL; |
| pub fn PlayEnhMetaFileRecord( |
| hdc: HDC, |
| pht: LPHANDLETABLE, |
| pmr: *const ENHMETARECORD, |
| cht: UINT, |
| ) -> BOOL; |
| pub fn SetEnhMetaFileBits( |
| nSize: UINT, |
| pb: *const BYTE, |
| ) -> HENHMETAFILE; |
| pub fn SetWinMetaFileBits( |
| nSize: UINT, |
| lpMeta16Data: *const BYTE, |
| hdcRef: HDC, |
| lpMFP: *const METAFILEPICT, |
| ) -> HENHMETAFILE; |
| pub fn GdiComment( |
| hdc: HDC, |
| nSize: UINT, |
| lpData: *const BYTE, |
| ) -> BOOL; |
| pub fn GetTextMetricsA( |
| hdc: HDC, |
| lptm: LPTEXTMETRICA, |
| ) -> BOOL; |
| pub fn GetTextMetricsW( |
| hdc: HDC, |
| lptm: *mut TEXTMETRICW, |
| ) -> BOOL; |
| } |
| STRUCT!{struct DIBSECTION { |
| dsBm: BITMAP, |
| dsBmih: BITMAPINFOHEADER, |
| dsBitfields: [DWORD; 3], |
| dshSection: HANDLE, |
| dsOffset: DWORD, |
| }} |
| pub type PDIBSECTION = *mut DIBSECTION; |
| pub type LPDIBSECTION = *mut DIBSECTION; |
| extern "system" { |
| pub fn AngleArc( |
| hdc: HDC, |
| X: c_int, |
| Y: c_int, |
| dwRadius: DWORD, |
| eStartAngle: FLOAT, |
| eSweepAngle: FLOAT, |
| ) -> BOOL; |
| pub fn PolyPolyline( |
| hdc: HDC, |
| lppt: *const POINT, |
| lpdwPolyPoints: *const DWORD, |
| cCount: DWORD, |
| ) -> BOOL; |
| pub fn GetWorldTransform( |
| hdc: HDC, |
| lpxf: LPXFORM, |
| ) -> BOOL; |
| pub fn SetWorldTransform( |
| hdc: HDC, |
| lpxf: *const XFORM, |
| ) -> BOOL; |
| pub fn ModifyWorldTransform( |
| hdc: HDC, |
| lpxf: *const XFORM, |
| mode: DWORD, |
| ) -> BOOL; |
| pub fn CombineTransform( |
| lpxformResult: LPXFORM, |
| lpxform1: *const XFORM, |
| lpxform2: *const XFORM, |
| ) -> BOOL; |
| } |
| #[inline] |
| pub fn GDI_WIDTHBYTES(bits: DWORD) -> DWORD { |
| ((bits + 31) & !31) / 8 |
| } |
| #[inline] |
| pub fn GDI_DIBWIDTHBYTES(bi: &BITMAPINFOHEADER) -> DWORD { |
| GDI_WIDTHBYTES((bi.biWidth as DWORD) * (bi.biBitCount as DWORD)) |
| } |
| #[inline] |
| pub fn GDI__DIBSIZE(bi: &BITMAPINFOHEADER) -> DWORD { |
| GDI_DIBWIDTHBYTES(bi) * bi.biHeight as DWORD |
| } |
| #[inline] |
| pub fn GDI_DIBSIZE(bi: &BITMAPINFOHEADER) -> DWORD { |
| if bi.biHeight < 0 { |
| GDI__DIBSIZE(bi) * -1i32 as u32 |
| } else { |
| GDI__DIBSIZE(bi) |
| } |
| } |
| extern "system" { |
| pub fn CreateDIBSection( |
| hdc: HDC, |
| lpbmi: *const BITMAPINFO, |
| usage: UINT, |
| ppvBits: *mut *mut c_void, |
| hSection: HANDLE, |
| offset: DWORD, |
| ) -> HBITMAP; |
| pub fn GetDIBColorTable( |
| hdc: HDC, |
| iStart: UINT, |
| cEntries: UINT, |
| prgbq: *mut RGBQUAD, |
| ) -> UINT; |
| pub fn SetDIBColorTable( |
| hdc: HDC, |
| iStart: UINT, |
| cEntries: UINT, |
| prgbq: *const RGBQUAD, |
| ) -> UINT; |
| } |
| pub const CA_NEGATIVE: WORD = 0x0001; |
| pub const CA_LOG_FILTER: WORD = 0x0002; |
| pub const ILLUMINANT_DEVICE_DEFAULT: WORD = 0; |
| pub const ILLUMINANT_A: WORD = 1; |
| pub const ILLUMINANT_B: WORD = 2; |
| pub const ILLUMINANT_C: WORD = 3; |
| pub const ILLUMINANT_D50: WORD = 4; |
| pub const ILLUMINANT_D55: WORD = 5; |
| pub const ILLUMINANT_D65: WORD = 6; |
| pub const ILLUMINANT_D75: WORD = 7; |
| pub const ILLUMINANT_F2: WORD = 8; |
| pub const ILLUMINANT_MAX_INDEX: WORD = ILLUMINANT_F2; |
| pub const ILLUMINANT_TUNGSTEN: WORD = ILLUMINANT_A; |
| pub const ILLUMINANT_DAYLIGHT: WORD = ILLUMINANT_C; |
| pub const ILLUMINANT_FLUORESCENT: WORD = ILLUMINANT_F2; |
| pub const ILLUMINANT_NTSC: WORD = ILLUMINANT_C; |
| pub const RGB_GAMMA_MIN: WORD = 0o2500; // FIXME It is octal in the headers but are the headers actually right? |
| pub const RGB_GAMMA_MAX: WORD = 65000; |
| pub const REFERENCE_WHITE_MIN: WORD = 6000; |
| pub const REFERENCE_WHITE_MAX: WORD = 10000; |
| pub const REFERENCE_BLACK_MIN: WORD = 0; |
| pub const REFERENCE_BLACK_MAX: WORD = 4000; |
| pub const COLOR_ADJ_MIN: SHORT = -100; |
| pub const COLOR_ADJ_MAX: SHORT = 100; |
| STRUCT!{struct COLORADJUSTMENT { |
| caSize: WORD, |
| caFlags: WORD, |
| caIlluminantIndex: WORD, |
| caRedGamma: WORD, |
| caGreenGamma: WORD, |
| caBlueGamma: WORD, |
| caReferenceBlack: WORD, |
| caReferenceWhite: WORD, |
| caContrast: SHORT, |
| caBrightness: SHORT, |
| caColorfulness: SHORT, |
| caRedGreenTint: SHORT, |
| }} |
| pub type PCOLORADJUSTMENT = *mut COLORADJUSTMENT; |
| pub type LPCOLORADJUSTMENT = *mut COLORADJUSTMENT; |
| extern "system" { |
| pub fn SetColorAdjustment( |
| hdc: HDC, |
| lpca: *const COLORADJUSTMENT, |
| ) -> BOOL; |
| pub fn GetColorAdjustment( |
| hdc: HDC, |
| lpca: LPCOLORADJUSTMENT, |
| ) -> BOOL; |
| pub fn CreateHalftonePalette( |
| hdc: HDC, |
| ) -> HPALETTE; |
| } |
| FN!{stdcall ABORTPROC( |
| HDC, |
| c_int, |
| ) -> BOOL} |
| STRUCT!{struct DOCINFOA { |
| cbSize: c_int, |
| lpszDocName: LPCSTR, |
| lpszOutput: LPCSTR, |
| lpszDatatype: LPCSTR, |
| fwType: DWORD, |
| }} |
| pub type LPDOCINFOA = *mut DOCINFOA; |
| STRUCT!{struct DOCINFOW { |
| cbSize: c_int, |
| lpszDocName: LPCWSTR, |
| lpszOutput: LPCWSTR, |
| lpszDatatype: LPCWSTR, |
| fwType: DWORD, |
| }} |
| pub type LPDOCINFOW = *mut DOCINFOW; |
| pub const DI_APPBANDING: DWORD = 0x00000001; |
| pub const DI_ROPS_READ_DESTINATION: DWORD = 0x00000002; |
| extern "system" { |
| pub fn StartDocA( |
| hdc: HDC, |
| lpdi: *const DOCINFOA, |
| ) -> c_int; |
| pub fn StartDocW( |
| hdc: HDC, |
| lpdi: *const DOCINFOW, |
| ) -> c_int; |
| pub fn EndDoc( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn StartPage( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn EndPage( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn AbortDoc( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn SetAbortProc( |
| hdc: HDC, |
| aproc: ABORTPROC, |
| ) -> c_int; |
| pub fn AbortPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn ArcTo( |
| hdc: HDC, |
| nLeftRect: c_int, |
| nTopRect: c_int, |
| nRightRect: c_int, |
| nBottomRect: c_int, |
| nXRadial1: c_int, |
| nYRadial1: c_int, |
| nXRadial2: c_int, |
| nYRadial2: c_int, |
| ) -> BOOL; |
| pub fn BeginPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn CloseFigure( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn EndPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn FillPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn FlattenPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn GetPath( |
| hdc: HDC, |
| apt: LPPOINT, |
| aj: LPBYTE, |
| cpt: c_int, |
| ) -> c_int; |
| pub fn PathToRegion( |
| hdc: HDC, |
| ) -> HRGN; |
| pub fn PolyDraw( |
| hdc: HDC, |
| lppt: *const POINT, |
| lpbTypes: *const BYTE, |
| cCount: c_int, |
| ) -> BOOL; |
| pub fn SelectClipPath( |
| hdc: HDC, |
| mode: c_int, |
| ) -> BOOL; |
| pub fn SetArcDirection( |
| hdc: HDC, |
| ArcDirection: c_int, |
| ) -> c_int; |
| pub fn SetMiterLimit( |
| hdc: HDC, |
| limit: FLOAT, |
| old: PFLOAT, |
| ) -> BOOL; |
| pub fn StrokeAndFillPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn StrokePath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn WidenPath( |
| hdc: HDC, |
| ) -> BOOL; |
| pub fn ExtCreatePen( |
| iPenStyle: DWORD, |
| cWidth: DWORD, |
| plbrush: *const LOGBRUSH, |
| cStyle: DWORD, |
| pstyle: *const DWORD, |
| ) -> HPEN; |
| pub fn GetMiterLimit( |
| hdc: HDC, |
| plimit: PFLOAT, |
| ) -> BOOL; |
| pub fn GetArcDirection( |
| hdc: HDC, |
| ) -> c_int; |
| pub fn GetObjectA( |
| h: HANDLE, |
| c: c_int, |
| pv: LPVOID, |
| ) -> c_int; |
| pub fn GetObjectW( |
| h: HANDLE, |
| c: c_int, |
| pv: LPVOID, |
| ) -> c_int; |
| pub fn MoveToEx( |
| hdc: HDC, |
| X: c_int, |
| Y: c_int, |
| lpPoint:LPPOINT, |
| ) -> BOOL; |
| pub fn TextOutA( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lpString: LPCSTR, |
| c: c_int, |
| ) -> BOOL; |
| pub fn TextOutW( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lpString: LPCWSTR, |
| c: c_int, |
| ) -> BOOL; |
| pub fn ExtTextOutA( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| options: UINT, |
| lprect: *const RECT, |
| lpString: LPCSTR, |
| c: UINT, |
| lpDx: *const INT, |
| ) -> BOOL; |
| pub fn ExtTextOutW( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| options: UINT, |
| lprect: *const RECT, |
| lpString: LPCWSTR, |
| c: UINT, |
| lpDx: *const INT, |
| ) -> BOOL; |
| pub fn PolyTextOutA( |
| hdc: HDC, |
| ppt: *const POLYTEXTA, |
| nstrings: c_int, |
| ) -> BOOL; |
| pub fn PolyTextOutW( |
| hdc: HDC, |
| ppt: *const POLYTEXTW, |
| nstrings: c_int, |
| ) -> BOOL; |
| pub fn CreatePolygonRgn( |
| lppt: *const POINT, |
| cPoints: c_int, |
| fnPolyFillMode: c_int, |
| ) -> HRGN; |
| pub fn DPtoLP( |
| hdc: HDC, |
| lppt: *mut POINT, |
| c: c_int, |
| ) -> BOOL; |
| pub fn LPtoDP( |
| hdc: HDC, |
| lppt: LPPOINT, |
| c: c_int, |
| ) -> BOOL; |
| pub fn Polygon( |
| hdc: HDC, |
| lpPoints: *const POINT, |
| nCount: c_int, |
| ) -> BOOL; |
| pub fn Polyline( |
| hdc: HDC, |
| lppt: *const POINT, |
| cCount: c_int, |
| ) -> BOOL; |
| pub fn PolyBezier( |
| hdc: HDC, |
| lppt: *const POINT, |
| cPoints: DWORD, |
| ) -> BOOL; |
| pub fn PolyBezierTo( |
| hdc: HDC, |
| lppt: *const POINT, |
| cPoints: DWORD, |
| ) -> BOOL; |
| pub fn PolylineTo( |
| hdc: HDC, |
| lppt: *const POINT, |
| cCount: DWORD, |
| ) -> BOOL; |
| pub fn SetViewportExtEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lpsz: LPSIZE, |
| ) -> BOOL; |
| pub fn SetViewportOrgEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lppt: *mut POINT, |
| ) -> BOOL; |
| pub fn SetWindowExtEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lppt: LPSIZE, |
| ) -> BOOL; |
| pub fn SetWindowOrgEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn OffsetViewportOrgEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn OffsetWindowOrgEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn ScaleViewportExtEx( |
| hdc: HDC,xn: c_int, |
| dx: c_int, |
| yn: c_int, |
| yd: c_int, |
| lpsz: LPSIZE, |
| ) -> BOOL; |
| pub fn ScaleWindowExtEx( |
| hdc: HDC, |
| xn: c_int, |
| xd: c_int, |
| yn: c_int, |
| yd: c_int, |
| lpsz: LPSIZE, |
| ) -> BOOL; |
| pub fn SetBitmapDimensionEx( |
| hbm: HBITMAP, |
| w: c_int, |
| h: c_int, |
| lpsz: LPSIZE, |
| ) -> BOOL; |
| pub fn SetBrushOrgEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn GetTextFaceA( |
| hdc: HDC, |
| c: c_int, |
| lpName: LPSTR, |
| ) -> c_int; |
| pub fn GetTextFaceW( |
| hdc: HDC, |
| c: c_int, |
| lpName: LPWSTR, |
| ) -> c_int; |
| } |
| STRUCT!{struct KERNINGPAIR { |
| wFirst: WORD, |
| wSecond: WORD, |
| iKernAmount: c_int, |
| }} |
| pub type LPKERNINGPAIR = *mut KERNINGPAIR; |
| extern "system" { |
| pub fn GetKerningPairsA( |
| hdc: HDC, |
| nPairs: DWORD, |
| lpKernPair: LPKERNINGPAIR, |
| ) -> DWORD; |
| pub fn GetKerningPairsW( |
| hdc: HDC, |
| nPairs: DWORD, |
| lpKernPair: LPKERNINGPAIR, |
| ) -> DWORD; |
| pub fn GetDCOrgEx( |
| hdc: HDC, |
| lppt: LPPOINT, |
| ) -> BOOL; |
| pub fn FixBrushOrgEx( |
| hdc: HDC, |
| x: c_int, |
| y: c_int, |
| ptl: LPPOINT, |
| ) -> BOOL; |
| pub fn UnrealizeObject( |
| h: HGDIOBJ, |
| ) -> BOOL; |
| pub fn GdiFlush() -> BOOL; |
| pub fn GdiSetBatchLimit( |
| dw: DWORD, |
| ) -> DWORD; |
| pub fn GdiGetBatchLimit() -> DWORD; |
| } |
| pub const ICM_OFF: c_int = 1; |
| pub const ICM_ON: c_int = 2; |
| pub const ICM_QUERY: c_int = 3; |
| pub const ICM_DONE_OUTSIDEDC: c_int = 4; |
| FN!{stdcall ICMENUMPROCA( |
| LPSTR, |
| LPARAM, |
| ) -> c_int} |
| FN!{stdcall ICMENUMPROCW( |
| LPWSTR, |
| LPARAM, |
| ) -> c_int} |
| extern "system" { |
| pub fn SetICMMode( |
| hdc: HDC, |
| mode: c_int, |
| ) -> c_int; |
| pub fn CheckColorsInGamut( |
| hDC: HDC, |
| lpRGBTriples: LPVOID, |
| lpBuffer: LPVOID, |
| nCount: UINT, |
| ) -> BOOL; |
| pub fn GetColorSpace( |
| hdc: HDC, |
| ) -> HCOLORSPACE; |
| pub fn GetLogColorSpaceA( |
| hColorSpace: HCOLORSPACE, |
| lpBuffer: LPLOGCOLORSPACEA, |
| nSize: DWORD, |
| ) -> BOOL; |
| pub fn GetLogColorSpaceW( |
| hColorSpace: HCOLORSPACE, |
| lpBuffer: LPLOGCOLORSPACEW, |
| nSize: DWORD, |
| ) -> BOOL; |
| pub fn CreateColorSpaceA( |
| lpLogColorSpace: LPLOGCOLORSPACEA, |
| ) -> HCOLORSPACE; |
| pub fn CreateColorSpaceW( |
| lpLogColorSpace: LPLOGCOLORSPACEW, |
| ) -> HCOLORSPACE; |
| pub fn SetColorSpace( |
| hdc: HDC, |
| hcs: HCOLORSPACE, |
| ) -> HCOLORSPACE; |
| pub fn DeleteColorSpace( |
| hcs: HCOLORSPACE, |
| ) -> BOOL; |
| pub fn GetICMProfileA( |
| hdc: HDC, |
| pBufSize: LPDWORD, |
| pszFilename: LPSTR, |
| ) -> BOOL; |
| pub fn GetICMProfileW( |
| hdc: HDC, |
| pBufSize: LPDWORD, |
| pszFilename: LPWSTR, |
| ) -> BOOL; |
| pub fn SetICMProfileA( |
| hdc: HDC, |
| lpFileName: LPSTR, |
| ) -> BOOL; |
| pub fn SetICMProfileW( |
| hdc: HDC, |
| lpFileName: LPWSTR, |
| ) -> BOOL; |
| pub fn GetDeviceGammaRamp( |
| hdc: HDC, |
| lpRamp: LPVOID, |
| ) -> BOOL; |
| pub fn SetDeviceGammaRamp( |
| hdc: HDC, |
| lpRamp: LPVOID, |
| ) -> BOOL; |
| pub fn ColorMatchToTarget( |
| hDC: HDC, |
| hdcTarget: HDC, |
| uiAction: UINT, |
| ) -> BOOL; |
| pub fn EnumICMProfilesA( |
| hdc: HDC, |
| iproc: ICMENUMPROCA, |
| param: LPARAM, |
| ) -> c_int; |
| pub fn EnumICMProfilesW( |
| hdc: HDC, |
| iproc: ICMENUMPROCW, |
| param: LPARAM, |
| ) -> c_int; |
| pub fn UpdateICMRegKeyA( |
| reserved: DWORD, |
| lpszCMID: LPSTR, |
| lpszFileName: LPSTR, |
| command: UINT, |
| ) -> BOOL; |
| pub fn UpdateICMRegKeyW( |
| reserved: DWORD, |
| lpszCMID: LPWSTR, |
| lpszFileName: LPWSTR, |
| command: UINT, |
| ) -> BOOL; |
| pub fn ColorCorrectPalette( |
| hDC: HDC, |
| hPalette: HPALETTE, |
| dwFirstEntry: DWORD, |
| dwNumOfEntries: DWORD, |
| ) -> BOOL; |
| } |
| pub const ENHMETA_SIGNATURE: DWORD = 0x464D4520; |
| pub const ENHMETA_STOCK_OBJECT: DWORD = 0x80000000; |
| pub const EMR_HEADER: DWORD = 1; |
| pub const EMR_POLYBEZIER: DWORD = 2; |
| pub const EMR_POLYGON: DWORD = 3; |
| pub const EMR_POLYLINE: DWORD = 4; |
| pub const EMR_POLYBEZIERTO: DWORD = 5; |
| pub const EMR_POLYLINETO: DWORD = 6; |
| pub const EMR_POLYPOLYLINE: DWORD = 7; |
| pub const EMR_POLYPOLYGON: DWORD = 8; |
| pub const EMR_SETWINDOWEXTEX: DWORD = 9; |
| pub const EMR_SETWINDOWORGEX: DWORD = 10; |
| pub const EMR_SETVIEWPORTEXTEX: DWORD = 11; |
| pub const EMR_SETVIEWPORTORGEX: DWORD = 12; |
| pub const EMR_SETBRUSHORGEX: DWORD = 13; |
| pub const EMR_EOF: DWORD = 14; |
| pub const EMR_SETPIXELV: DWORD = 15; |
| pub const EMR_SETMAPPERFLAGS: DWORD = 16; |
| pub const EMR_SETMAPMODE: DWORD = 17; |
| pub const EMR_SETBKMODE: DWORD = 18; |
| pub const EMR_SETPOLYFILLMODE: DWORD = 19; |
| pub const EMR_SETROP2: DWORD = 20; |
| pub const EMR_SETSTRETCHBLTMODE: DWORD = 21; |
| pub const EMR_SETTEXTALIGN: DWORD = 22; |
| pub const EMR_SETCOLORADJUSTMENT: DWORD = 23; |
| pub const EMR_SETTEXTCOLOR: DWORD = 24; |
| pub const EMR_SETBKCOLOR: DWORD = 25; |
| pub const EMR_OFFSETCLIPRGN: DWORD = 26; |
| pub const EMR_MOVETOEX: DWORD = 27; |
| pub const EMR_SETMETARGN: DWORD = 28; |
| pub const EMR_EXCLUDECLIPRECT: DWORD = 29; |
| pub const EMR_INTERSECTCLIPRECT: DWORD = 30; |
| pub const EMR_SCALEVIEWPORTEXTEX: DWORD = 31; |
| pub const EMR_SCALEWINDOWEXTEX: DWORD = 32; |
| pub const EMR_SAVEDC: DWORD = 33; |
| pub const EMR_RESTOREDC: DWORD = 34; |
| pub const EMR_SETWORLDTRANSFORM: DWORD = 35; |
| pub const EMR_MODIFYWORLDTRANSFORM: DWORD = 36; |
| pub const EMR_SELECTOBJECT: DWORD = 37; |
| pub const EMR_CREATEPEN: DWORD = 38; |
| pub const EMR_CREATEBRUSHINDIRECT: DWORD = 39; |
| pub const EMR_DELETEOBJECT: DWORD = 40; |
| pub const EMR_ANGLEARC: DWORD = 41; |
| pub const EMR_ELLIPSE: DWORD = 42; |
| pub const EMR_RECTANGLE: DWORD = 43; |
| pub const EMR_ROUNDRECT: DWORD = 44; |
| pub const EMR_ARC: DWORD = 45; |
| pub const EMR_CHORD: DWORD = 46; |
| pub const EMR_PIE: DWORD = 47; |
| pub const EMR_SELECTPALETTE: DWORD = 48; |
| pub const EMR_CREATEPALETTE: DWORD = 49; |
| pub const EMR_SETPALETTEENTRIES: DWORD = 50; |
| pub const EMR_RESIZEPALETTE: DWORD = 51; |
| pub const EMR_REALIZEPALETTE: DWORD = 52; |
| pub const EMR_EXTFLOODFILL: DWORD = 53; |
| pub const EMR_LINETO: DWORD = 54; |
| pub const EMR_ARCTO: DWORD = 55; |
| pub const EMR_POLYDRAW: DWORD = 56; |
| pub const EMR_SETARCDIRECTION: DWORD = 57; |
| pub const EMR_SETMITERLIMIT: DWORD = 58; |
| pub const EMR_BEGINPATH: DWORD = 59; |
| pub const EMR_ENDPATH: DWORD = 60; |
| pub const EMR_CLOSEFIGURE: DWORD = 61; |
| pub const EMR_FILLPATH: DWORD = 62; |
| pub const EMR_STROKEANDFILLPATH: DWORD = 63; |
| pub const EMR_STROKEPATH: DWORD = 64; |
| pub const EMR_FLATTENPATH: DWORD = 65; |
| pub const EMR_WIDENPATH: DWORD = 66; |
| pub const EMR_SELECTCLIPPATH: DWORD = 67; |
| pub const EMR_ABORTPATH: DWORD = 68; |
| pub const EMR_GDICOMMENT: DWORD = 70; |
| pub const EMR_FILLRGN: DWORD = 71; |
| pub const EMR_FRAMERGN: DWORD = 72; |
| pub const EMR_INVERTRGN: DWORD = 73; |
| pub const EMR_PAINTRGN: DWORD = 74; |
| pub const EMR_EXTSELECTCLIPRGN: DWORD = 75; |
| pub const EMR_BITBLT: DWORD = 76; |
| pub const EMR_STRETCHBLT: DWORD = 77; |
| pub const EMR_MASKBLT: DWORD = 78; |
| pub const EMR_PLGBLT: DWORD = 79; |
| pub const EMR_SETDIBITSTODEVICE: DWORD = 80; |
| pub const EMR_STRETCHDIBITS: DWORD = 81; |
| pub const EMR_EXTCREATEFONTINDIRECTW: DWORD = 82; |
| pub const EMR_EXTTEXTOUTA: DWORD = 83; |
| pub const EMR_EXTTEXTOUTW: DWORD = 84; |
| pub const EMR_POLYBEZIER16: DWORD = 85; |
| pub const EMR_POLYGON16: DWORD = 86; |
| pub const EMR_POLYLINE16: DWORD = 87; |
| pub const EMR_POLYBEZIERTO16: DWORD = 88; |
| pub const EMR_POLYLINETO16: DWORD = 89; |
| pub const EMR_POLYPOLYLINE16: DWORD = 90; |
| pub const EMR_POLYPOLYGON16: DWORD = 91; |
| pub const EMR_POLYDRAW16: DWORD = 92; |
| pub const EMR_CREATEMONOBRUSH: DWORD = 93; |
| pub const EMR_CREATEDIBPATTERNBRUSHPT: DWORD = 94; |
| pub const EMR_EXTCREATEPEN: DWORD = 95; |
| pub const EMR_POLYTEXTOUTA: DWORD = 96; |
| pub const EMR_POLYTEXTOUTW: DWORD = 97; |
| pub const EMR_SETICMMODE: DWORD = 98; |
| pub const EMR_CREATECOLORSPACE: DWORD = 99; |
| pub const EMR_SETCOLORSPACE: DWORD = 100; |
| pub const EMR_DELETECOLORSPACE: DWORD = 101; |
| pub const EMR_GLSRECORD: DWORD = 102; |
| pub const EMR_GLSBOUNDEDRECORD: DWORD = 103; |
| pub const EMR_PIXELFORMAT: DWORD = 104; |
| pub const EMR_RESERVED_105: DWORD = 105; |
| pub const EMR_RESERVED_106: DWORD = 106; |
| pub const EMR_RESERVED_107: DWORD = 107; |
| pub const EMR_RESERVED_108: DWORD = 108; |
| pub const EMR_RESERVED_109: DWORD = 109; |
| pub const EMR_RESERVED_110: DWORD = 110; |
| pub const EMR_COLORCORRECTPALETTE: DWORD = 111; |
| pub const EMR_SETICMPROFILEA: DWORD = 112; |
| pub const EMR_SETICMPROFILEW: DWORD = 113; |
| pub const EMR_ALPHABLEND: DWORD = 114; |
| pub const EMR_SETLAYOUT: DWORD = 115; |
| pub const EMR_TRANSPARENTBLT: DWORD = 116; |
| pub const EMR_RESERVED_117: DWORD = 117; |
| pub const EMR_GRADIENTFILL: DWORD = 118; |
| pub const EMR_RESERVED_119: DWORD = 119; |
| pub const EMR_RESERVED_120: DWORD = 120; |
| pub const EMR_COLORMATCHTOTARGETW: DWORD = 121; |
| pub const EMR_CREATECOLORSPACEW: DWORD = 122; |
| pub const EMR_MIN: DWORD = 1; |
| pub const EMR_MAX: DWORD = 122; |
| STRUCT!{struct EMR { |
| iType: DWORD, |
| nSize: DWORD, |
| }} |
| pub type PEMR = *mut EMR; |
| STRUCT!{struct EMRTEXT { |
| ptlReference: POINTL, |
| nChars: DWORD, |
| offString: DWORD, |
| fOptions: DWORD, |
| rcl: RECTL, |
| offDx: DWORD, |
| }} |
| pub type PEMRTEXT = *mut EMRTEXT; |
| STRUCT!{struct EMRABORTPATH { |
| emr: EMR, |
| }} |
| pub type PEMRABORTPATH = *mut EMRABORTPATH; |
| pub type EMRBEGINPATH = EMRABORTPATH; |
| pub type PEMRBEGINPATH = *mut EMRABORTPATH; |
| pub type EMRENDPATH = EMRABORTPATH; |
| pub type PEMRENDPATH = *mut EMRABORTPATH; |
| pub type EMRCLOSEFIGURE = EMRABORTPATH; |
| pub type PEMRCLOSEFIGURE = *mut EMRABORTPATH; |
| pub type EMRFLATTENPATH = EMRABORTPATH; |
| pub type PEMRFLATTENPATH = *mut EMRABORTPATH; |
| pub type EMRWIDENPATH = EMRABORTPATH; |
| pub type PEMRWIDENPATH = *mut EMRABORTPATH; |
| pub type EMRSETMETARGN = EMRABORTPATH; |
| pub type PEMRSETMETARGN = *mut EMRABORTPATH; |
| pub type EMRSAVEDC = EMRABORTPATH; |
| pub type PEMRSAVEDC = *mut EMRABORTPATH; |
| pub type EMRREALIZEPALETTE = EMRABORTPATH; |
| pub type PEMRREALIZEPALETTE = *mut EMRABORTPATH; |
| STRUCT!{struct EMRSELECTCLIPPATH { |
| emr: EMR, |
| iMode: DWORD, |
| }} |
| pub type PEMRSELECTCLIPPATH = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETBKMODE = EMRSELECTCLIPPATH; |
| pub type PEMRSETBKMODE = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETMAPMODE = EMRSELECTCLIPPATH; |
| pub type PEMRSETMAPMODE = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETLAYOUT = EMRSELECTCLIPPATH; |
| pub type PEMRSETLAYOUT = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETPOLYFILLMODE = EMRSELECTCLIPPATH; |
| pub type PEMRSETPOLYFILLMODE = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETROP2 = EMRSELECTCLIPPATH; |
| pub type PEMRSETROP2 = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETSTRETCHBLTMODE = EMRSELECTCLIPPATH; |
| pub type PEMRSETSTRETCHBLTMODE = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETICMMODE = EMRSELECTCLIPPATH; |
| pub type PEMRSETICMMODE = *mut EMRSELECTCLIPPATH; |
| pub type EMRSETTEXTALIGN = EMRSELECTCLIPPATH; |
| pub type PEMRSETTEXTALIGN = *mut EMRSELECTCLIPPATH; |
| STRUCT!{struct EMRSETMITERLIMIT { |
| emr: EMR, |
| eMiterLimit: FLOAT, |
| }} |
| pub type PEMRSETMITERLIMIT = *mut EMRSETMITERLIMIT; |
| STRUCT!{struct EMRRESTOREDC { |
| emr: EMR, |
| iRelative: LONG, |
| }} |
| pub type PEMRRESTOREDC = *mut EMRRESTOREDC; |
| STRUCT!{struct EMRSETARCDIRECTION { |
| emr: EMR, |
| iArcDirection: DWORD, |
| }} |
| pub type PEMRSETARCDIRECTION = *mut EMRSETARCDIRECTION; |
| STRUCT!{struct EMRSETMAPPERFLAGS { |
| emr: EMR, |
| dwFlags: DWORD, |
| }} |
| pub type PEMRSETMAPPERFLAGS = *mut EMRSETMAPPERFLAGS; |
| STRUCT!{struct EMRSETBKCOLOR { |
| emr: EMR, |
| crColor: COLORREF, |
| }} |
| pub type PEMRSETBKCOLOR = *mut EMRSETBKCOLOR; |
| pub type EMRSETTEXTCOLOR = EMRSETBKCOLOR; |
| pub type PEMRSETTEXTCOLOR = *mut EMRSETBKCOLOR; |
| STRUCT!{struct EMRSELECTOBJECT { |
| emr: EMR, |
| ihObject: DWORD, |
| }} |
| pub type PEMRSELECTOBJECT = *mut EMRSELECTOBJECT; |
| pub type EMRDELETEOBJECT = EMRSELECTOBJECT; |
| pub type PEMRDELETEOBJECT = *mut EMRSELECTOBJECT; |
| STRUCT!{struct EMRSELECTPALETTE { |
| emr: EMR, |
| ihPal: DWORD, |
| }} |
| pub type PEMRSELECTPALETTE = *mut EMRSELECTPALETTE; |
| STRUCT!{struct EMRRESIZEPALETTE { |
| emr: EMR, |
| ihPal: DWORD, |
| cEntries: DWORD, |
| }} |
| pub type PEMRRESIZEPALETTE = *mut EMRRESIZEPALETTE; |
| STRUCT!{struct EMRSETPALETTEENTRIES { |
| emr: EMR, |
| ihPal: DWORD, |
| iStart: DWORD, |
| cEntries: DWORD, |
| aPalEntries: [PALETTEENTRY; 1], |
| }} |
| pub type PEMRSETPALETTEENTRIES = *mut EMRSETPALETTEENTRIES; |
| STRUCT!{struct EMRSETCOLORADJUSTMENT { |
| emr: EMR, |
| ColorAdjustment: COLORADJUSTMENT, |
| }} |
| pub type PEMRSETCOLORADJUSTMENT = *mut EMRSETCOLORADJUSTMENT; |
| STRUCT!{struct EMRGDICOMMENT { |
| emr: EMR, |
| cbData: DWORD, |
| Data: [BYTE; 1], |
| }} |
| pub type PEMRGDICOMMENT = *mut EMRGDICOMMENT; |
| STRUCT!{struct EMREOF { |
| emr: EMR, |
| nPalEntries: DWORD, |
| offPalEntries: DWORD, |
| nSizeLast: DWORD, |
| }} |
| pub type PEMREOF = *mut EMREOF; |
| STRUCT!{struct EMRLINETO { |
| emr: EMR, |
| ptl: POINTL, |
| }} |
| pub type PEMRLINETO = *mut EMRLINETO; |
| pub type EMRMOVETOEX = EMRLINETO; |
| pub type PEMRMOVETOEX = *mut EMRLINETO; |
| STRUCT!{struct EMROFFSETCLIPRGN { |
| emr: EMR, |
| ptlOffset: POINTL, |
| }} |
| pub type PEMROFFSETCLIPRGN = *mut EMROFFSETCLIPRGN; |
| STRUCT!{struct EMRFILLPATH { |
| emr: EMR, |
| rclBounds: RECTL, |
| }} |
| pub type PEMRFILLPATH = *mut EMRFILLPATH; |
| pub type EMRSTROKEANDFILLPATH = EMRFILLPATH; |
| pub type PEMRSTROKEANDFILLPATH = *mut EMRFILLPATH; |
| pub type EMRSTROKEPATH = EMRFILLPATH; |
| pub type PEMRSTROKEPATH = *mut EMRFILLPATH; |
| STRUCT!{struct EMREXCLUDECLIPRECT { |
| emr: EMR, |
| rclClip: RECTL, |
| }} |
| pub type PEMREXCLUDECLIPRECT = *mut EMREXCLUDECLIPRECT; |
| pub type EMRINTERSECTCLIPRECT = EMREXCLUDECLIPRECT; |
| pub type PEMRINTERSECTCLIPRECT = *mut EMREXCLUDECLIPRECT; |
| STRUCT!{struct EMRSETVIEWPORTORGEX { |
| emr: EMR, |
| ptlOrigin: POINTL, |
| }} |
| pub type PEMRSETVIEWPORTORGEX = *mut EMRSETVIEWPORTORGEX; |
| pub type EMRSETWINDOWORGEX = EMRSETVIEWPORTORGEX; |
| pub type PEMRSETWINDOWORGEX = *mut EMRSETVIEWPORTORGEX; |
| pub type EMRSETBRUSHORGEX = EMRSETVIEWPORTORGEX; |
| pub type PEMRSETBRUSHORGEX = *mut EMRSETVIEWPORTORGEX; |
| STRUCT!{struct EMRSETVIEWPORTEXTEX { |
| emr: EMR, |
| szlExtent: SIZEL, |
| }} |
| pub type PEMRSETVIEWPORTEXTEX = *mut EMRSETVIEWPORTEXTEX; |
| pub type EMRSETWINDOWEXTEX = EMRSETVIEWPORTEXTEX; |
| pub type PEMRSETWINDOWEXTEX = *mut EMRSETVIEWPORTEXTEX; |
| STRUCT!{struct EMRSCALEVIEWPORTEXTEX { |
| emr: EMR, |
| xNum: LONG, |
| xDenom: LONG, |
| yNum: LONG, |
| yDenom: LONG, |
| }} |
| pub type PEMRSCALEVIEWPORTEXTEX = *mut EMRSCALEVIEWPORTEXTEX; |
| pub type EMRSCALEWINDOWEXTEX = EMRSCALEVIEWPORTEXTEX; |
| pub type PEMRSCALEWINDOWEXTEX = *mut EMRSCALEVIEWPORTEXTEX; |
| STRUCT!{struct EMRSETWORLDTRANSFORM { |
| emr: EMR, |
| xform: XFORM, |
| }} |
| pub type PEMRSETWORLDTRANSFORM = *mut EMRSETWORLDTRANSFORM; |
| STRUCT!{struct EMRMODIFYWORLDTRANSFORM { |
| emr: EMR, |
| xform: XFORM, |
| iMode: DWORD, |
| }} |
| pub type PEMRMODIFYWORLDTRANSFORM = *mut EMRMODIFYWORLDTRANSFORM; |
| STRUCT!{struct EMRSETPIXELV { |
| emr: EMR, |
| ptlPixel: POINTL, |
| crColor: COLORREF, |
| }} |
| pub type PEMRSETPIXELV = *mut EMRSETPIXELV; |
| STRUCT!{struct EMREXTFLOODFILL { |
| emr: EMR, |
| ptlStart: POINTL, |
| crColor: COLORREF, |
| iMode: DWORD, |
| }} |
| pub type PEMREXTFLOODFILL = *mut EMREXTFLOODFILL; |
| STRUCT!{struct EMRELLIPSE { |
| emr: EMR, |
| rclBox: RECTL, |
| }} |
| pub type PEMRELLIPSE = *mut EMRELLIPSE; |
| pub type EMRRECTANGLE = EMRELLIPSE; |
| pub type PEMRRECTANGLE = *mut EMRELLIPSE; |
| STRUCT!{struct EMRROUNDRECT { |
| emr: EMR, |
| rclBox: RECTL, |
| szlCorner: SIZEL, |
| }} |
| pub type PEMRROUNDRECT = *mut EMRROUNDRECT; |
| STRUCT!{struct EMRARC { |
| emr: EMR, |
| rclBox: RECTL, |
| ptlStart: POINTL, |
| ptlEnd: POINTL, |
| }} |
| pub type PEMRARC = *mut EMRARC; |
| pub type EMRARCTO = EMRARC; |
| pub type PEMRARCTO = *mut EMRARC; |
| pub type EMRCHORD = EMRARC; |
| pub type PEMRCHORD = *mut EMRARC; |
| pub type EMRPIE = EMRARC; |
| pub type PEMRPIE = *mut EMRARC; |
| STRUCT!{struct EMRANGLEARC { |
| emr: EMR, |
| ptlCenter: POINTL, |
| nRadius: DWORD, |
| eStartAngle: FLOAT, |
| eSweepAngle: FLOAT, |
| }} |
| pub type PEMRANGLEARC = *mut EMRANGLEARC; |
| STRUCT!{struct EMRPOLYLINE { |
| emr: EMR, |
| rclBounds: RECTL, |
| cptl: DWORD, |
| aptl: [POINTL; 1], |
| }} |
| pub type PEMRPOLYLINE = *mut EMRPOLYLINE; |
| pub type EMRPOLYBEZIER = EMRPOLYLINE; |
| pub type PEMRPOLYBEZIER = *mut EMRPOLYLINE; |
| pub type EMRPOLYGON = EMRPOLYLINE; |
| pub type PEMRPOLYGON = *mut EMRPOLYLINE; |
| pub type EMRPOLYBEZIERTO = EMRPOLYLINE; |
| pub type PEMRPOLYBEZIERTO = *mut EMRPOLYLINE; |
| pub type EMRPOLYLINETO = EMRPOLYLINE; |
| pub type PEMRPOLYLINETO = *mut EMRPOLYLINE; |
| STRUCT!{struct EMRPOLYLINE16 { |
| emr: EMR, |
| rclBounds: RECTL, |
| cpts: DWORD, |
| apts: [POINTS; 1], |
| }} |
| pub type PEMRPOLYLINE16 = *mut EMRPOLYLINE16; |
| pub type EMRPOLYBEZIER16 = EMRPOLYLINE16; |
| pub type PEMRPOLYBEZIER16 = *mut EMRPOLYLINE16; |
| pub type EMRPOLYGON16 = EMRPOLYLINE16; |
| pub type PEMRPOLYGON16 = *mut EMRPOLYLINE16; |
| pub type EMRPOLYBEZIERTO16 = EMRPOLYLINE16; |
| pub type PEMRPOLYBEZIERTO16 = *mut EMRPOLYLINE16; |
| pub type EMRPOLYLINETO16 = EMRPOLYLINE16; |
| pub type PEMRPOLYLINETO16 = *mut EMRPOLYLINE16; |
| STRUCT!{struct EMRPOLYDRAW { |
| emr: EMR, |
| rclBounds: RECTL, |
| cptl: DWORD, |
| aptl: [POINTL; 1], |
| abTypes: [BYTE; 1], |
| }} |
| pub type PEMRPOLYDRAW = *mut EMRPOLYDRAW; |
| STRUCT!{struct EMRPOLYDRAW16 { |
| emr: EMR, |
| rclBounds: RECTL, |
| cpts: DWORD, |
| apts: [POINTS; 1], |
| abTypes: [BYTE; 1], |
| }} |
| pub type PEMRPOLYDRAW16 = *mut EMRPOLYDRAW16; |
| STRUCT!{struct EMRPOLYPOLYLINE { |
| emr: EMR, |
| rclBounds: RECTL, |
| nPolys: DWORD, |
| cptl: DWORD, |
| aPolyCounts: [DWORD; 1], |
| aptl: [POINTL; 1], |
| }} |
| pub type PEMRPOLYPOLYLINE = *mut EMRPOLYPOLYLINE; |
| pub type EMRPOLYPOLYGON = EMRPOLYPOLYLINE; |
| pub type PEMRPOLYPOLYGON = *mut EMRPOLYPOLYLINE; |
| STRUCT!{struct EMRPOLYPOLYLINE16 { |
| emr: EMR, |
| rclBounds: RECTL, |
| nPolys: DWORD, |
| cpts: DWORD, |
| aPolyCounts: [DWORD; 1], |
| apts: [POINTS; 1], |
| }} |
| pub type PEMRPOLYPOLYLINE16 = *mut EMRPOLYPOLYLINE16; |
| pub type EMRPOLYPOLYGON16 = EMRPOLYPOLYLINE16; |
| pub type PEMRPOLYPOLYGON16 = *mut EMRPOLYPOLYLINE16; |
| STRUCT!{struct EMRINVERTRGN { |
| emr: EMR, |
| rclBounds: RECTL, |
| cbRgnData: DWORD, |
| RgnData: [BYTE; 1], |
| }} |
| pub type PEMRINVERTRGN = *mut EMRINVERTRGN; |
| pub type EMRPAINTRGN = EMRINVERTRGN; |
| pub type PEMRPAINTRGN = *mut EMRINVERTRGN; |
| STRUCT!{struct EMRFILLRGN { |
| emr: EMR, |
| rclBounds: RECTL, |
| cbRgnData: DWORD, |
| ihBrush: DWORD, |
| RgnData: [BYTE; 1], |
| }} |
| pub type PEMRFILLRGN = *mut EMRFILLRGN; |
| STRUCT!{struct EMRFRAMERGN { |
| emr: EMR, |
| rclBounds: RECTL, |
| cbRgnData: DWORD, |
| ihBrush: DWORD, |
| szlStroke: SIZEL, |
| RgnData: [BYTE; 1], |
| }} |
| pub type PEMRFRAMERGN = *mut EMRFRAMERGN; |
| STRUCT!{struct EMREXTSELECTCLIPRGN { |
| emr: EMR, |
| cbRgnData: DWORD, |
| iMode: DWORD, |
| RgnData: [BYTE; 1], |
| }} |
| pub type PEMREXTSELECTCLIPRGN = *mut EMREXTSELECTCLIPRGN; |
| STRUCT!{struct EMREXTTEXTOUTA { |
| emr: EMR, |
| rclBounds: RECTL, |
| iGraphicsMode: DWORD, |
| exScale: FLOAT, |
| eyScale: FLOAT, |
| emrtext: EMRTEXT, |
| }} |
| pub type PEMREXTTEXTOUTA = *mut EMREXTTEXTOUTA; |
| pub type EMREXTTEXTOUTW = EMREXTTEXTOUTA; |
| pub type PEMREXTTEXTOUTW = *mut EMREXTTEXTOUTA; |
| STRUCT!{struct EMRPOLYTEXTOUTA { |
| emr: EMR, |
| rclBounds: RECTL, |
| iGraphicsMode: DWORD, |
| exScale: FLOAT, |
| eyScale: FLOAT, |
| cStrings: LONG, |
| aemrtext: [EMRTEXT; 1], |
| }} |
| pub type PEMRPOLYTEXTOUTA = *mut EMRPOLYTEXTOUTA; |
| pub type EMRPOLYTEXTOUTW = EMRPOLYTEXTOUTA; |
| pub type PEMRPOLYTEXTOUTW = *mut EMRPOLYTEXTOUTA; |
| STRUCT!{struct EMRBITBLT { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| cxDest: LONG, |
| cyDest: LONG, |
| dwRop: DWORD, |
| xSrc: LONG, |
| ySrc: LONG, |
| xformSrc: XFORM, |
| crBkColorSrc: COLORREF, |
| iUsageSrc: DWORD, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| }} |
| pub type PEMRBITBLT = *mut EMRBITBLT; |
| STRUCT!{struct EMRSTRETCHBLT { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| cxDest: LONG, |
| cyDest: LONG, |
| dwRop: DWORD, |
| xSrc: LONG, |
| ySrc: LONG, |
| xformSrc: XFORM, |
| crBkColorSrc: COLORREF, |
| iUsageSrc: DWORD, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| cxSrc: LONG, |
| cySrc: LONG, |
| }} |
| pub type PEMRSTRETCHBLT = *mut EMRSTRETCHBLT; |
| STRUCT!{struct EMRMASKBLT { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| cxDest: LONG, |
| cyDest: LONG, |
| dwRop: DWORD, |
| xSrc: LONG, |
| ySrc: LONG, |
| xformSrc: XFORM, |
| crBkColorSrc: COLORREF, |
| iUsageSrc: DWORD, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| xMask: LONG, |
| yMask: LONG, |
| iUsageMask: DWORD, |
| offBmiMask: DWORD, |
| cbBmiMask: DWORD, |
| offBitsMask: DWORD, |
| cbBitsMask: DWORD, |
| }} |
| pub type PEMRMASKBLT = *mut EMRMASKBLT; |
| STRUCT!{struct EMRPLGBLT { |
| emr: EMR, |
| rclBounds: RECTL, |
| aptlDest: [POINTL; 3], |
| xSrc: LONG, |
| ySrc: LONG, |
| cxSrc: LONG, |
| cySrc: LONG, |
| xformSrc: XFORM, |
| crBkColorSrc: COLORREF, |
| iUsageSrc: DWORD, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| xMask: LONG, |
| yMask: LONG, |
| iUsageMask: DWORD, |
| offBmiMask: DWORD, |
| cbBmiMask: DWORD, |
| offBitsMask: DWORD, |
| cbBitsMask: DWORD, |
| }} |
| pub type PEMRPLGBLT = *mut EMRPLGBLT; |
| STRUCT!{struct EMRSETDIBITSTODEVICE { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| xSrc: LONG, |
| ySrc: LONG, |
| cxSrc: LONG, |
| cySrc: LONG, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| iUsageSrc: DWORD, |
| iStartScan: DWORD, |
| cScans: DWORD, |
| }} |
| pub type PEMRSETDIBITSTODEVICE = *mut EMRSETDIBITSTODEVICE; |
| STRUCT!{struct EMRSTRETCHDIBITS { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| xSrc: LONG, |
| ySrc: LONG, |
| cxSrc: LONG, |
| cySrc: LONG, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| iUsageSrc: DWORD, |
| dwRop: DWORD, |
| cxDest: LONG, |
| cyDest: LONG, |
| }} |
| pub type PEMRSTRETCHDIBITS = *mut EMRSTRETCHDIBITS; |
| STRUCT!{struct EMREXTCREATEFONTINDIRECTW { |
| emr: EMR, |
| ihFont: DWORD, |
| elfw: EXTLOGFONTW, |
| }} |
| pub type PEMREXTCREATEFONTINDIRECTW = *mut EMREXTCREATEFONTINDIRECTW; |
| STRUCT!{struct EMRCREATEPALETTE { |
| emr: EMR, |
| ihPal: DWORD, |
| lgpl: LOGPALETTE, |
| }} |
| pub type PEMRCREATEPALETTE = *mut EMRCREATEPALETTE; |
| STRUCT!{struct EMRCREATEPEN { |
| emr: EMR, |
| ihPen: DWORD, |
| lopn: LOGPEN, |
| }} |
| pub type PEMRCREATEPEN = *mut EMRCREATEPEN; |
| STRUCT!{struct EMREXTCREATEPEN { |
| emr: EMR, |
| ihPen: DWORD, |
| offBmi: DWORD, |
| cbBmi: DWORD, |
| offBits: DWORD, |
| cbBits: DWORD, |
| elp: EXTLOGPEN32, |
| }} |
| pub type PEMREXTCREATEPEN = *mut EMREXTCREATEPEN; |
| STRUCT!{struct EMRCREATEBRUSHINDIRECT { |
| emr: EMR, |
| ihBrush: DWORD, |
| lb: LOGBRUSH32, |
| }} |
| pub type PEMRCREATEBRUSHINDIRECT = *mut EMRCREATEBRUSHINDIRECT; |
| STRUCT!{struct EMRCREATEMONOBRUSH { |
| emr: EMR, |
| ihBrush: DWORD, |
| iUsage: DWORD, |
| offBmi: DWORD, |
| cbBmi: DWORD, |
| offBits: DWORD, |
| cbBits: DWORD, |
| }} |
| pub type PEMRCREATEMONOBRUSH = *mut EMRCREATEMONOBRUSH; |
| STRUCT!{struct EMRCREATEDIBPATTERNBRUSHPT { |
| emr: EMR, |
| ihBrush: DWORD, |
| iUsage: DWORD, |
| offBmi: DWORD, |
| cbBmi: DWORD, |
| offBits: DWORD, |
| cbBits: DWORD, |
| }} |
| pub type PEMRCREATEDIBPATTERNBRUSHPT = *mut EMRCREATEDIBPATTERNBRUSHPT; |
| STRUCT!{struct EMRFORMAT { |
| dSignature: DWORD, |
| nVersion: DWORD, |
| cbData: DWORD, |
| offData: DWORD, |
| }} |
| pub type PEMRFORMAT = *mut EMRFORMAT; |
| STRUCT!{struct EMRGLSRECORD { |
| emr: EMR, |
| cbData: DWORD, |
| Data: [BYTE; 1], |
| }} |
| pub type PEMRGLSRECORD = *mut EMRGLSRECORD; |
| STRUCT!{struct EMRGLSBOUNDEDRECORD { |
| emr: EMR, |
| rclBounds: RECTL, |
| cbData: DWORD, |
| Data: [BYTE; 1], |
| }} |
| pub type PEMRGLSBOUNDEDRECORD = *mut EMRGLSBOUNDEDRECORD; |
| STRUCT!{struct EMRPIXELFORMAT { |
| emr: EMR, |
| pfd: PIXELFORMATDESCRIPTOR, |
| }} |
| pub type PEMRPIXELFORMAT = *mut EMRPIXELFORMAT; |
| STRUCT!{struct EMRCREATECOLORSPACE { |
| emr: EMR, |
| ihCS: DWORD, |
| lcs: LOGCOLORSPACEA, |
| }} |
| pub type PEMRCREATECOLORSPACE = *mut EMRCREATECOLORSPACE; |
| STRUCT!{struct EMRSETCOLORSPACE { |
| emr: EMR, |
| ihCS: DWORD, |
| }} |
| pub type PEMRSETCOLORSPACE = *mut EMRSETCOLORSPACE; |
| pub type EMRSELECTCOLORSPACE = EMRSETCOLORSPACE; |
| pub type PEMRSELECTCOLORSPACE = *mut EMRSETCOLORSPACE; |
| pub type EMRDELETECOLORSPACE = EMRSETCOLORSPACE; |
| pub type PEMRDELETECOLORSPACE = *mut EMRSETCOLORSPACE; |
| STRUCT!{struct EMREXTESCAPE { |
| emr: EMR, |
| iEscape: INT, |
| cbEscData: INT, |
| EscData: [BYTE; 1], |
| }} |
| pub type PEMREXTESCAPE = *mut EMREXTESCAPE; |
| pub type EMRDRAWESCAPE = EMREXTESCAPE; |
| pub type PEMRDRAWESCAPE = *mut EMREXTESCAPE; |
| STRUCT!{struct EMRNAMEDESCAPE { |
| emr: EMR, |
| iEscape: INT, |
| cbDriver: INT, |
| cbEscData: INT, |
| EscData: [BYTE; 1], |
| }} |
| pub type PEMRNAMEDESCAPE = *mut EMRNAMEDESCAPE; |
| pub const SETICMPROFILE_EMBEDED: DWORD = 0x00000001; |
| STRUCT!{struct EMRSETICMPROFILE { |
| emr: EMR, |
| dwFlags: DWORD, |
| cbName: DWORD, |
| cbData: DWORD, |
| Data: [BYTE; 1], |
| }} |
| pub type PEMRSETICMPROFILE = *mut EMRSETICMPROFILE; |
| pub type EMRSETICMPROFILEA = EMRSETICMPROFILE; |
| pub type PEMRSETICMPROFILEA = *mut EMRSETICMPROFILE; |
| pub type EMRSETICMPROFILEW = EMRSETICMPROFILE; |
| pub type PEMRSETICMPROFILEW = *mut EMRSETICMPROFILE; |
| pub const CREATECOLORSPACE_EMBEDED: DWORD = 0x00000001; |
| STRUCT!{struct EMRCREATECOLORSPACEW { |
| emr: EMR, |
| ihCS: DWORD, |
| lcs: LOGCOLORSPACEW, |
| dwFlags: DWORD, |
| cbData: DWORD, |
| Data: [BYTE; 1], |
| }} |
| pub type PEMRCREATECOLORSPACEW = *mut EMRCREATECOLORSPACEW; |
| pub const COLORMATCHTOTARGET_EMBEDED: DWORD = 0x00000001; |
| STRUCT!{struct EMRCOLORMATCHTOTARGET { |
| emr: EMR, |
| dwAction: DWORD, |
| dwFlags: DWORD, |
| cbName: DWORD, |
| cbData: DWORD, |
| Data: [BYTE; 1], |
| }} |
| pub type PEMRCOLORMATCHTOTARGET = *mut EMRCOLORMATCHTOTARGET; |
| STRUCT!{struct EMRCOLORCORRECTPALETTE { |
| emr: EMR, |
| ihPalette: DWORD, |
| nFirstEntry: DWORD, |
| nPalEntries: DWORD, |
| nReserved: DWORD, |
| }} |
| pub type PEMRCOLORCORRECTPALETTE = *mut EMRCOLORCORRECTPALETTE; |
| STRUCT!{struct EMRALPHABLEND { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| cxDest: LONG, |
| cyDest: LONG, |
| dwRop: DWORD, |
| xSrc: LONG, |
| ySrc: LONG, |
| xformSrc: XFORM, |
| crBkColorSrc: COLORREF, |
| iUsageSrc: DWORD, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| cxSrc: LONG, |
| cySrc: LONG, |
| }} |
| pub type PEMRALPHABLEND = *mut EMRALPHABLEND; |
| STRUCT!{struct EMRGRADIENTFILL { |
| emr: EMR, |
| rclBounds: RECTL, |
| nVer: DWORD, |
| nTri: DWORD, |
| ulMode: ULONG, |
| Ver: [TRIVERTEX; 1], |
| }} |
| pub type PEMRGRADIENTFILL = *mut EMRGRADIENTFILL; |
| STRUCT!{struct EMRTRANSPARENTBLT { |
| emr: EMR, |
| rclBounds: RECTL, |
| xDest: LONG, |
| yDest: LONG, |
| cxDest: LONG, |
| cyDest: LONG, |
| dwRop: DWORD, |
| xSrc: LONG, |
| ySrc: LONG, |
| xformSrc: XFORM, |
| crBkColorSrc: COLORREF, |
| iUsageSrc: DWORD, |
| offBmiSrc: DWORD, |
| cbBmiSrc: DWORD, |
| offBitsSrc: DWORD, |
| cbBitsSrc: DWORD, |
| cxSrc: LONG, |
| cySrc: LONG, |
| }} |
| pub type PEMRTRANSPARENTBLT = *mut EMRTRANSPARENTBLT; |
| pub const GDICOMMENT_IDENTIFIER: DWORD = 0x43494447; |
| pub const GDICOMMENT_WINDOWS_METAFILE: DWORD = 0x80000001; |
| pub const GDICOMMENT_BEGINGROUP: DWORD = 0x00000002; |
| pub const GDICOMMENT_ENDGROUP: DWORD = 0x00000003; |
| pub const GDICOMMENT_MULTIFORMATS: DWORD = 0x40000004; |
| pub const EPS_SIGNATURE: DWORD = 0x46535045; |
| pub const GDICOMMENT_UNICODE_STRING: DWORD = 0x00000040; |
| pub const GDICOMMENT_UNICODE_END: DWORD = 0x00000080; |
| extern "system" { |
| pub fn wglCopyContext( |
| hglrcSrc: HGLRC, |
| hglrcDst: HGLRC, |
| mask: UINT, |
| ) -> BOOL; |
| pub fn wglCreateContext( |
| hdc: HDC, |
| ) -> HGLRC; |
| pub fn wglCreateLayerContext( |
| hdc: HDC, |
| iLayerPlane: c_int, |
| ) -> HGLRC; |
| pub fn wglDeleteContext( |
| hglrc: HGLRC, |
| ) -> BOOL; |
| pub fn wglGetCurrentContext() -> HGLRC; |
| pub fn wglGetCurrentDC() -> HDC; |
| pub fn wglGetProcAddress( |
| lpszProc: LPCSTR, |
| ) -> PROC; |
| pub fn wglMakeCurrent( |
| hdc: HDC, |
| hglrc: HGLRC, |
| ) -> BOOL; |
| pub fn wglShareLists( |
| hglrc1: HGLRC, |
| hglrc2: HGLRC, |
| ) -> BOOL; |
| pub fn wglUseFontBitmapsA( |
| hdc: HDC, |
| first: DWORD, |
| count: DWORD, |
| listBase: DWORD, |
| ) -> BOOL; |
| pub fn wglUseFontBitmapsW( |
| hdc: HDC, |
| first: DWORD, |
| count: DWORD, |
| listBase: DWORD, |
| ) -> BOOL; |
| pub fn SwapBuffers( |
| hdc: HDC, |
| ) -> BOOL; |
| } |
| STRUCT!{struct POINTFLOAT { |
| x: FLOAT, |
| y: FLOAT, |
| }} |
| pub type PPOINTFLOAT = *mut POINTFLOAT; |
| STRUCT!{struct GLYPHMETRICSFLOAT { |
| gmfBlackBoxX: FLOAT, |
| gmfBlackBoxY: FLOAT, |
| gmfptGlyphOrigin: POINTFLOAT, |
| gmfCellIncX: FLOAT, |
| gmfCellIncY: FLOAT, |
| }} |
| pub type PGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT; |
| pub type LPGLYPHMETRICSFLOAT = *mut GLYPHMETRICSFLOAT; |
| pub const WGL_FONT_LINES: DWORD = 0; |
| pub const WGL_FONT_POLYGONS: DWORD = 1; |
| extern "system" { |
| pub fn wglUseFontOutlinesA( |
| hdc: HDC, |
| first: DWORD, |
| count: DWORD, |
| listBase: DWORD, |
| deviation: FLOAT, |
| extrusion: FLOAT, |
| format: c_int, |
| lpgmf: LPGLYPHMETRICSFLOAT, |
| ) -> BOOL; |
| pub fn wglUseFontOutlinesW( |
| hdc: HDC, |
| first: DWORD, |
| count: DWORD, |
| listBase: DWORD, |
| deviation: FLOAT, |
| extrusion: FLOAT, |
| format: c_int, |
| lpgmf: LPGLYPHMETRICSFLOAT, |
| ) -> BOOL; |
| } |
| STRUCT!{struct LAYERPLANEDESCRIPTOR { |
| nSize: WORD, |
| nVersion: WORD, |
| dwFlags: DWORD, |
| iPixelType: BYTE, |
| cColorBits: BYTE, |
| cRedBits: BYTE, |
| cRedShift: BYTE, |
| cGreenBits: BYTE, |
| cGreenShift: BYTE, |
| cBlueBits: BYTE, |
| cBlueShift: BYTE, |
| cAlphaBits: BYTE, |
| cAlphaShift: BYTE, |
| cAccumBits: BYTE, |
| cAccumRedBits: BYTE, |
| cAccumGreenBits: BYTE, |
| cAccumBlueBits: BYTE, |
| cAccumAlphaBits: BYTE, |
| cDepthBits: BYTE, |
| cStencilBits: BYTE, |
| cAuxBuffers: BYTE, |
| iLayerPlane: BYTE, |
| bReserved: BYTE, |
| crTransparent: COLORREF, |
| }} |
| pub type PLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR; |
| pub type LPLAYERPLANEDESCRIPTOR = *mut LAYERPLANEDESCRIPTOR; |
| pub const LPD_DOUBLEBUFFER: DWORD = 0x00000001; |
| pub const LPD_STEREO: DWORD = 0x00000002; |
| pub const LPD_SUPPORT_GDI: DWORD = 0x00000010; |
| pub const LPD_SUPPORT_OPENGL: DWORD = 0x00000020; |
| pub const LPD_SHARE_DEPTH: DWORD = 0x00000040; |
| pub const LPD_SHARE_STENCIL: DWORD = 0x00000080; |
| pub const LPD_SHARE_ACCUM: DWORD = 0x00000100; |
| pub const LPD_SWAP_EXCHANGE: DWORD = 0x00000200; |
| pub const LPD_SWAP_COPY: DWORD = 0x00000400; |
| pub const LPD_TRANSPARENT: DWORD = 0x00001000; |
| pub const LPD_TYPE_RGBA: BYTE = 0; |
| pub const LPD_TYPE_COLORINDEX: BYTE = 1; |
| pub const WGL_SWAP_MAIN_PLANE: UINT = 0x00000001; |
| pub const WGL_SWAP_OVERLAY1: UINT = 0x00000002; |
| pub const WGL_SWAP_OVERLAY2: UINT = 0x00000004; |
| pub const WGL_SWAP_OVERLAY3: UINT = 0x00000008; |
| pub const WGL_SWAP_OVERLAY4: UINT = 0x00000010; |
| pub const WGL_SWAP_OVERLAY5: UINT = 0x00000020; |
| pub const WGL_SWAP_OVERLAY6: UINT = 0x00000040; |
| pub const WGL_SWAP_OVERLAY7: UINT = 0x00000080; |
| pub const WGL_SWAP_OVERLAY8: UINT = 0x00000100; |
| pub const WGL_SWAP_OVERLAY9: UINT = 0x00000200; |
| pub const WGL_SWAP_OVERLAY10: UINT = 0x00000400; |
| pub const WGL_SWAP_OVERLAY11: UINT = 0x00000800; |
| pub const WGL_SWAP_OVERLAY12: UINT = 0x00001000; |
| pub const WGL_SWAP_OVERLAY13: UINT = 0x00002000; |
| pub const WGL_SWAP_OVERLAY14: UINT = 0x00004000; |
| pub const WGL_SWAP_OVERLAY15: UINT = 0x00008000; |
| pub const WGL_SWAP_UNDERLAY1: UINT = 0x00010000; |
| pub const WGL_SWAP_UNDERLAY2: UINT = 0x00020000; |
| pub const WGL_SWAP_UNDERLAY3: UINT = 0x00040000; |
| pub const WGL_SWAP_UNDERLAY4: UINT = 0x00080000; |
| pub const WGL_SWAP_UNDERLAY5: UINT = 0x00100000; |
| pub const WGL_SWAP_UNDERLAY6: UINT = 0x00200000; |
| pub const WGL_SWAP_UNDERLAY7: UINT = 0x00400000; |
| pub const WGL_SWAP_UNDERLAY8: UINT = 0x00800000; |
| pub const WGL_SWAP_UNDERLAY9: UINT = 0x01000000; |
| pub const WGL_SWAP_UNDERLAY10: UINT = 0x02000000; |
| pub const WGL_SWAP_UNDERLAY11: UINT = 0x04000000; |
| pub const WGL_SWAP_UNDERLAY12: UINT = 0x08000000; |
| pub const WGL_SWAP_UNDERLAY13: UINT = 0x10000000; |
| pub const WGL_SWAP_UNDERLAY14: UINT = 0x20000000; |
| pub const WGL_SWAP_UNDERLAY15: UINT = 0x40000000; |
| extern "system" { |
| pub fn wglDescribeLayerPlane( |
| hdc: HDC, |
| iPixelFormat: c_int, |
| iLayerPlane: c_int, |
| nBytes: UINT, |
| plpd: LPLAYERPLANEDESCRIPTOR, |
| ) -> BOOL; |
| pub fn wglSetLayerPaletteEntries( |
| hdc: HDC, |
| iLayerPlane: c_int, |
| iStart: c_int, |
| cEntries: c_int, |
| pcr: *const COLORREF, |
| ) -> c_int; |
| pub fn wglGetLayerPaletteEntries( |
| hdc: HDC, |
| iLayerPlane: c_int, |
| iStart: c_int, |
| cEntries: c_int, |
| pcr: *const COLORREF, |
| ) -> c_int; |
| pub fn wglRealizeLayerPalette( |
| hdc: HDC, |
| iLayerPlane: c_int, |
| bRealize: BOOL, |
| ) -> BOOL; |
| pub fn wglSwapLayerBuffers( |
| hdc: HDC, |
| fuPlanes: UINT, |
| ) -> BOOL; |
| } |
| STRUCT!{struct WGLSWAP { |
| hdc: HDC, |
| uiFlags: UINT, |
| }} |
| pub type PWGLSWAP = *mut WGLSWAP; |
| pub type LPWGLSWAP = *mut WGLSWAP; |
| pub const WGL_SWAPMULTIPLE_MAX: usize = 16; |
| extern "system" { |
| pub fn wglSwapMultipleBuffers( |
| n: UINT, |
| ps: *const WGLSWAP, |
| ) -> DWORD; |
| } |