//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (1222)
//--------------------------------------------------------------------------------
pub const GDI_ERROR = @as(i32, -1);
pub const ERROR = @as(u32, 0);
pub const NULLREGION = @as(u32, 1);
pub const SIMPLEREGION = @as(u32, 2);
pub const COMPLEXREGION = @as(u32, 3);
pub const RGN_ERROR = @as(u32, 0);
pub const MAXSTRETCHBLTMODE = @as(u32, 4);
pub const POLYFILL_LAST = @as(u32, 2);
pub const LAYOUT_BTT = @as(u32, 2);
pub const LAYOUT_VBH = @as(u32, 4);
pub const ASPECT_FILTERING = @as(u32, 1);
pub const META_SETBKCOLOR = @as(u32, 513);
pub const META_SETBKMODE = @as(u32, 258);
pub const META_SETMAPMODE = @as(u32, 259);
pub const META_SETROP2 = @as(u32, 260);
pub const META_SETRELABS = @as(u32, 261);
pub const META_SETPOLYFILLMODE = @as(u32, 262);
pub const META_SETSTRETCHBLTMODE = @as(u32, 263);
pub const META_SETTEXTCHAREXTRA = @as(u32, 264);
pub const META_SETTEXTCOLOR = @as(u32, 521);
pub const META_SETTEXTJUSTIFICATION = @as(u32, 522);
pub const META_SETWINDOWORG = @as(u32, 523);
pub const META_SETWINDOWEXT = @as(u32, 524);
pub const META_SETVIEWPORTORG = @as(u32, 525);
pub const META_SETVIEWPORTEXT = @as(u32, 526);
pub const META_OFFSETWINDOWORG = @as(u32, 527);
pub const META_SCALEWINDOWEXT = @as(u32, 1040);
pub const META_OFFSETVIEWPORTORG = @as(u32, 529);
pub const META_SCALEVIEWPORTEXT = @as(u32, 1042);
pub const META_LINETO = @as(u32, 531);
pub const META_MOVETO = @as(u32, 532);
pub const META_EXCLUDECLIPRECT = @as(u32, 1045);
pub const META_INTERSECTCLIPRECT = @as(u32, 1046);
pub const META_ARC = @as(u32, 2071);
pub const META_ELLIPSE = @as(u32, 1048);
pub const META_FLOODFILL = @as(u32, 1049);
pub const META_PIE = @as(u32, 2074);
pub const META_RECTANGLE = @as(u32, 1051);
pub const META_ROUNDRECT = @as(u32, 1564);
pub const META_PATBLT = @as(u32, 1565);
pub const META_SAVEDC = @as(u32, 30);
pub const META_SETPIXEL = @as(u32, 1055);
pub const META_OFFSETCLIPRGN = @as(u32, 544);
pub const META_TEXTOUT = @as(u32, 1313);
pub const META_BITBLT = @as(u32, 2338);
pub const META_STRETCHBLT = @as(u32, 2851);
pub const META_POLYGON = @as(u32, 804);
pub const META_POLYLINE = @as(u32, 805);
pub const META_ESCAPE = @as(u32, 1574);
pub const META_RESTOREDC = @as(u32, 295);
pub const META_FILLREGION = @as(u32, 552);
pub const META_FRAMEREGION = @as(u32, 1065);
pub const META_INVERTREGION = @as(u32, 298);
pub const META_PAINTREGION = @as(u32, 299);
pub const META_SELECTCLIPREGION = @as(u32, 300);
pub const META_SELECTOBJECT = @as(u32, 301);
pub const META_SETTEXTALIGN = @as(u32, 302);
pub const META_CHORD = @as(u32, 2096);
pub const META_SETMAPPERFLAGS = @as(u32, 561);
pub const META_EXTTEXTOUT = @as(u32, 2610);
pub const META_SETDIBTODEV = @as(u32, 3379);
pub const META_SELECTPALETTE = @as(u32, 564);
pub const META_REALIZEPALETTE = @as(u32, 53);
pub const META_ANIMATEPALETTE = @as(u32, 1078);
pub const META_SETPALENTRIES = @as(u32, 55);
pub const META_POLYPOLYGON = @as(u32, 1336);
pub const META_RESIZEPALETTE = @as(u32, 313);
pub const META_DIBBITBLT = @as(u32, 2368);
pub const META_DIBSTRETCHBLT = @as(u32, 2881);
pub const META_DIBCREATEPATTERNBRUSH = @as(u32, 322);
pub const META_STRETCHDIB = @as(u32, 3907);
pub const META_EXTFLOODFILL = @as(u32, 1352);
pub const META_SETLAYOUT = @as(u32, 329);
pub const META_DELETEOBJECT = @as(u32, 496);
pub const META_CREATEPALETTE = @as(u32, 247);
pub const META_CREATEPATTERNBRUSH = @as(u32, 505);
pub const META_CREATEPENINDIRECT = @as(u32, 762);
pub const META_CREATEFONTINDIRECT = @as(u32, 763);
pub const META_CREATEBRUSHINDIRECT = @as(u32, 764);
pub const META_CREATEREGION = @as(u32, 1791);
pub const NEWFRAME = @as(u32, 1);
pub const ABORTDOC = @as(u32, 2);
pub const NEXTBAND = @as(u32, 3);
pub const SETCOLORTABLE = @as(u32, 4);
pub const GETCOLORTABLE = @as(u32, 5);
pub const FLUSHOUTPUT = @as(u32, 6);
pub const DRAFTMODE = @as(u32, 7);
pub const QUERYESCSUPPORT = @as(u32, 8);
pub const SETABORTPROC = @as(u32, 9);
pub const STARTDOC = @as(u32, 10);
pub const ENDDOC = @as(u32, 11);
pub const GETPHYSPAGESIZE = @as(u32, 12);
pub const GETPRINTINGOFFSET = @as(u32, 13);
pub const GETSCALINGFACTOR = @as(u32, 14);
pub const MFCOMMENT = @as(u32, 15);
pub const GETPENWIDTH = @as(u32, 16);
pub const SETCOPYCOUNT = @as(u32, 17);
pub const SELECTPAPERSOURCE = @as(u32, 18);
pub const DEVICEDATA = @as(u32, 19);
pub const PASSTHROUGH = @as(u32, 19);
pub const GETTECHNOLGY = @as(u32, 20);
pub const GETTECHNOLOGY = @as(u32, 20);
pub const SETLINECAP = @as(u32, 21);
pub const SETLINEJOIN = @as(u32, 22);
pub const SETMITERLIMIT = @as(u32, 23);
pub const BANDINFO = @as(u32, 24);
pub const DRAWPATTERNRECT = @as(u32, 25);
pub const GETVECTORPENSIZE = @as(u32, 26);
pub const GETVECTORBRUSHSIZE = @as(u32, 27);
pub const ENABLEDUPLEX = @as(u32, 28);
pub const GETSETPAPERBINS = @as(u32, 29);
pub const GETSETPRINTORIENT = @as(u32, 30);
pub const ENUMPAPERBINS = @as(u32, 31);
pub const SETDIBSCALING = @as(u32, 32);
pub const EPSPRINTING = @as(u32, 33);
pub const ENUMPAPERMETRICS = @as(u32, 34);
pub const GETSETPAPERMETRICS = @as(u32, 35);
pub const POSTSCRIPT_DATA = @as(u32, 37);
pub const POSTSCRIPT_IGNORE = @as(u32, 38);
pub const MOUSETRAILS = @as(u32, 39);
pub const GETDEVICEUNITS = @as(u32, 42);
pub const GETEXTENDEDTEXTMETRICS = @as(u32, 256);
pub const GETEXTENTTABLE = @as(u32, 257);
pub const GETPAIRKERNTABLE = @as(u32, 258);
pub const GETTRACKKERNTABLE = @as(u32, 259);
pub const EXTTEXTOUT = @as(u32, 512);
pub const GETFACENAME = @as(u32, 513);
pub const DOWNLOADFACE = @as(u32, 514);
pub const ENABLERELATIVEWIDTHS = @as(u32, 768);
pub const ENABLEPAIRKERNING = @as(u32, 769);
pub const SETKERNTRACK = @as(u32, 770);
pub const SETALLJUSTVALUES = @as(u32, 771);
pub const SETCHARSET = @as(u32, 772);
pub const STRETCHBLT = @as(u32, 2048);
pub const METAFILE_DRIVER = @as(u32, 2049);
pub const GETSETSCREENPARAMS = @as(u32, 3072);
pub const QUERYDIBSUPPORT = @as(u32, 3073);
pub const BEGIN_PATH = @as(u32, 4096);
pub const CLIP_TO_PATH = @as(u32, 4097);
pub const END_PATH = @as(u32, 4098);
pub const EXT_DEVICE_CAPS = @as(u32, 4099);
pub const RESTORE_CTM = @as(u32, 4100);
pub const SAVE_CTM = @as(u32, 4101);
pub const SET_ARC_DIRECTION = @as(u32, 4102);
pub const SET_BACKGROUND_COLOR = @as(u32, 4103);
pub const SET_POLY_MODE = @as(u32, 4104);
pub const SET_SCREEN_ANGLE = @as(u32, 4105);
pub const SET_SPREAD = @as(u32, 4106);
pub const TRANSFORM_CTM = @as(u32, 4107);
pub const SET_CLIP_BOX = @as(u32, 4108);
pub const SET_BOUNDS = @as(u32, 4109);
pub const SET_MIRROR_MODE = @as(u32, 4110);
pub const OPENCHANNEL = @as(u32, 4110);
pub const DOWNLOADHEADER = @as(u32, 4111);
pub const CLOSECHANNEL = @as(u32, 4112);
pub const POSTSCRIPT_PASSTHROUGH = @as(u32, 4115);
pub const ENCAPSULATED_POSTSCRIPT = @as(u32, 4116);
pub const POSTSCRIPT_IDENTIFY = @as(u32, 4117);
pub const POSTSCRIPT_INJECTION = @as(u32, 4118);
pub const CHECKJPEGFORMAT = @as(u32, 4119);
pub const CHECKPNGFORMAT = @as(u32, 4120);
pub const GET_PS_FEATURESETTING = @as(u32, 4121);
pub const GDIPLUS_TS_QUERYVER = @as(u32, 4122);
pub const GDIPLUS_TS_RECORD = @as(u32, 4123);
pub const MILCORE_TS_QUERYVER_RESULT_FALSE = @as(u32, 0);
pub const MILCORE_TS_QUERYVER_RESULT_TRUE = @as(u32, 2147483647);
pub const SPCLPASSTHROUGH2 = @as(u32, 4568);
pub const PSIDENT_GDICENTRIC = @as(u32, 0);
pub const PSIDENT_PSCENTRIC = @as(u32, 1);
pub const PSINJECT_DLFONT = @as(u32, 3722304989);
pub const FEATURESETTING_NUP = @as(u32, 0);
pub const FEATURESETTING_OUTPUT = @as(u32, 1);
pub const FEATURESETTING_PSLEVEL = @as(u32, 2);
pub const FEATURESETTING_CUSTPAPER = @as(u32, 3);
pub const FEATURESETTING_MIRROR = @as(u32, 4);
pub const FEATURESETTING_NEGATIVE = @as(u32, 5);
pub const FEATURESETTING_PROTOCOL = @as(u32, 6);
pub const FEATURESETTING_PRIVATE_BEGIN = @as(u32, 4096);
pub const FEATURESETTING_PRIVATE_END = @as(u32, 8191);
pub const PSPROTOCOL_ASCII = @as(u32, 0);
pub const PSPROTOCOL_BCP = @as(u32, 1);
pub const PSPROTOCOL_TBCP = @as(u32, 2);
pub const PSPROTOCOL_BINARY = @as(u32, 3);
pub const QDI_SETDIBITS = @as(u32, 1);
pub const QDI_GETDIBITS = @as(u32, 2);
pub const QDI_DIBTOSCREEN = @as(u32, 4);
pub const QDI_STRETCHDIB = @as(u32, 8);
pub const SP_NOTREPORTED = @as(u32, 16384);
pub const SP_ERROR = @as(i32, -1);
pub const SP_APPABORT = @as(i32, -2);
pub const SP_USERABORT = @as(i32, -3);
pub const SP_OUTOFDISK = @as(i32, -4);
pub const SP_OUTOFMEMORY = @as(i32, -5);
pub const PR_JOBSTATUS = @as(u32, 0);
pub const LCS_CALIBRATED_RGB = @as(i32, 0);
pub const LCS_GM_BUSINESS = @as(i32, 1);
pub const LCS_GM_GRAPHICS = @as(i32, 2);
pub const LCS_GM_IMAGES = @as(i32, 4);
pub const LCS_GM_ABS_COLORIMETRIC = @as(i32, 8);
pub const CM_OUT_OF_GAMUT = @as(u32, 255);
pub const CM_IN_GAMUT = @as(u32, 0);
pub const BI_RGB = @as(i32, 0);
pub const BI_RLE8 = @as(i32, 1);
pub const BI_RLE4 = @as(i32, 2);
pub const BI_BITFIELDS = @as(i32, 3);
pub const BI_JPEG = @as(i32, 4);
pub const BI_PNG = @as(i32, 5);
pub const TMPF_FIXED_PITCH = @as(u32, 1);
pub const TMPF_VECTOR = @as(u32, 2);
pub const TMPF_DEVICE = @as(u32, 8);
pub const TMPF_TRUETYPE = @as(u32, 4);
pub const NTM_REGULAR = @as(i32, 64);
pub const NTM_BOLD = @as(i32, 32);
pub const NTM_ITALIC = @as(i32, 1);
pub const NTM_NONNEGATIVE_AC = @as(u32, 65536);
pub const NTM_PS_OPENTYPE = @as(u32, 131072);
pub const NTM_TT_OPENTYPE = @as(u32, 262144);
pub const NTM_MULTIPLEMASTER = @as(u32, 524288);
pub const NTM_TYPE1 = @as(u32, 1048576);
pub const NTM_DSIG = @as(u32, 2097152);
pub const LF_FACESIZE = @as(u32, 32);
pub const LF_FULLFACESIZE = @as(u32, 64);
pub const OUT_SCREEN_OUTLINE_PRECIS = @as(u32, 9);
pub const CLEARTYPE_NATURAL_QUALITY = @as(u32, 6);
pub const DEFAULT_PITCH = @as(u32, 0);
pub const FIXED_PITCH = @as(u32, 1);
pub const VARIABLE_PITCH = @as(u32, 2);
pub const MONO_FONT = @as(u32, 8);
pub const ANSI_CHARSET = @as(u32, 0);
pub const DEFAULT_CHARSET = @as(u32, 1);
pub const SYMBOL_CHARSET = @as(u32, 2);
pub const SHIFTJIS_CHARSET = @as(u32, 128);
pub const HANGEUL_CHARSET = @as(u32, 129);
pub const HANGUL_CHARSET = @as(u32, 129);
pub const GB2312_CHARSET = @as(u32, 134);
pub const CHINESEBIG5_CHARSET = @as(u32, 136);
pub const OEM_CHARSET = @as(u32, 255);
pub const JOHAB_CHARSET = @as(u32, 130);
pub const HEBREW_CHARSET = @as(u32, 177);
pub const ARABIC_CHARSET = @as(u32, 178);
pub const GREEK_CHARSET = @as(u32, 161);
pub const TURKISH_CHARSET = @as(u32, 162);
pub const VIETNAMESE_CHARSET = @as(u32, 163);
pub const THAI_CHARSET = @as(u32, 222);
pub const EASTEUROPE_CHARSET = @as(u32, 238);
pub const RUSSIAN_CHARSET = @as(u32, 204);
pub const MAC_CHARSET = @as(u32, 77);
pub const BALTIC_CHARSET = @as(u32, 186);
pub const FS_LATIN1 = @as(i32, 1);
pub const FS_LATIN2 = @as(i32, 2);
pub const FS_CYRILLIC = @as(i32, 4);
pub const FS_GREEK = @as(i32, 8);
pub const FS_TURKISH = @as(i32, 16);
pub const FS_HEBREW = @as(i32, 32);
pub const FS_ARABIC = @as(i32, 64);
pub const FS_BALTIC = @as(i32, 128);
pub const FS_VIETNAMESE = @as(i32, 256);
pub const FS_THAI = @as(i32, 65536);
pub const FS_JISJAPAN = @as(i32, 131072);
pub const FS_CHINESESIMP = @as(i32, 262144);
pub const FS_WANSUNG = @as(i32, 524288);
pub const FS_CHINESETRAD = @as(i32, 1048576);
pub const FS_JOHAB = @as(i32, 2097152);
pub const FS_SYMBOL = @as(i32, -2147483648);
pub const FW_DONTCARE = @as(u32, 0);
pub const FW_THIN = @as(u32, 100);
pub const FW_EXTRALIGHT = @as(u32, 200);
pub const FW_LIGHT = @as(u32, 300);
pub const FW_NORMAL = @as(u32, 400);
pub const FW_MEDIUM = @as(u32, 500);
pub const FW_SEMIBOLD = @as(u32, 600);
pub const FW_BOLD = @as(u32, 700);
pub const FW_EXTRABOLD = @as(u32, 800);
pub const FW_HEAVY = @as(u32, 900);
pub const FW_ULTRALIGHT = @as(u32, 200);
pub const FW_REGULAR = @as(u32, 400);
pub const FW_DEMIBOLD = @as(u32, 600);
pub const FW_ULTRABOLD = @as(u32, 800);
pub const FW_BLACK = @as(u32, 900);
pub const PANOSE_COUNT = @as(u32, 10);
pub const PAN_FAMILYTYPE_INDEX = @as(u32, 0);
pub const PAN_SERIFSTYLE_INDEX = @as(u32, 1);
pub const PAN_WEIGHT_INDEX = @as(u32, 2);
pub const PAN_PROPORTION_INDEX = @as(u32, 3);
pub const PAN_CONTRAST_INDEX = @as(u32, 4);
pub const PAN_STROKEVARIATION_INDEX = @as(u32, 5);
pub const PAN_ARMSTYLE_INDEX = @as(u32, 6);
pub const PAN_LETTERFORM_INDEX = @as(u32, 7);
pub const PAN_MIDLINE_INDEX = @as(u32, 8);
pub const PAN_XHEIGHT_INDEX = @as(u32, 9);
pub const PAN_CULTURE_LATIN = @as(u32, 0);
pub const PAN_ANY = @as(u32, 0);
pub const PAN_NO_FIT = @as(u32, 1);
pub const PAN_FAMILY_TEXT_DISPLAY = @as(u32, 2);
pub const PAN_FAMILY_SCRIPT = @as(u32, 3);
pub const PAN_FAMILY_DECORATIVE = @as(u32, 4);
pub const PAN_FAMILY_PICTORIAL = @as(u32, 5);
pub const PAN_SERIF_COVE = @as(u32, 2);
pub const PAN_SERIF_OBTUSE_COVE = @as(u32, 3);
pub const PAN_SERIF_SQUARE_COVE = @as(u32, 4);
pub const PAN_SERIF_OBTUSE_SQUARE_COVE = @as(u32, 5);
pub const PAN_SERIF_SQUARE = @as(u32, 6);
pub const PAN_SERIF_THIN = @as(u32, 7);
pub const PAN_SERIF_BONE = @as(u32, 8);
pub const PAN_SERIF_EXAGGERATED = @as(u32, 9);
pub const PAN_SERIF_TRIANGLE = @as(u32, 10);
pub const PAN_SERIF_NORMAL_SANS = @as(u32, 11);
pub const PAN_SERIF_OBTUSE_SANS = @as(u32, 12);
pub const PAN_SERIF_PERP_SANS = @as(u32, 13);
pub const PAN_SERIF_FLARED = @as(u32, 14);
pub const PAN_SERIF_ROUNDED = @as(u32, 15);
pub const PAN_WEIGHT_VERY_LIGHT = @as(u32, 2);
pub const PAN_WEIGHT_LIGHT = @as(u32, 3);
pub const PAN_WEIGHT_THIN = @as(u32, 4);
pub const PAN_WEIGHT_BOOK = @as(u32, 5);
pub const PAN_WEIGHT_MEDIUM = @as(u32, 6);
pub const PAN_WEIGHT_DEMI = @as(u32, 7);
pub const PAN_WEIGHT_BOLD = @as(u32, 8);
pub const PAN_WEIGHT_HEAVY = @as(u32, 9);
pub const PAN_WEIGHT_BLACK = @as(u32, 10);
pub const PAN_WEIGHT_NORD = @as(u32, 11);
pub const PAN_PROP_OLD_STYLE = @as(u32, 2);
pub const PAN_PROP_MODERN = @as(u32, 3);
pub const PAN_PROP_EVEN_WIDTH = @as(u32, 4);
pub const PAN_PROP_EXPANDED = @as(u32, 5);
pub const PAN_PROP_CONDENSED = @as(u32, 6);
pub const PAN_PROP_VERY_EXPANDED = @as(u32, 7);
pub const PAN_PROP_VERY_CONDENSED = @as(u32, 8);
pub const PAN_PROP_MONOSPACED = @as(u32, 9);
pub const PAN_CONTRAST_NONE = @as(u32, 2);
pub const PAN_CONTRAST_VERY_LOW = @as(u32, 3);
pub const PAN_CONTRAST_LOW = @as(u32, 4);
pub const PAN_CONTRAST_MEDIUM_LOW = @as(u32, 5);
pub const PAN_CONTRAST_MEDIUM = @as(u32, 6);
pub const PAN_CONTRAST_MEDIUM_HIGH = @as(u32, 7);
pub const PAN_CONTRAST_HIGH = @as(u32, 8);
pub const PAN_CONTRAST_VERY_HIGH = @as(u32, 9);
pub const PAN_STROKE_GRADUAL_DIAG = @as(u32, 2);
pub const PAN_STROKE_GRADUAL_TRAN = @as(u32, 3);
pub const PAN_STROKE_GRADUAL_VERT = @as(u32, 4);
pub const PAN_STROKE_GRADUAL_HORZ = @as(u32, 5);
pub const PAN_STROKE_RAPID_VERT = @as(u32, 6);
pub const PAN_STROKE_RAPID_HORZ = @as(u32, 7);
pub const PAN_STROKE_INSTANT_VERT = @as(u32, 8);
pub const PAN_STRAIGHT_ARMS_HORZ = @as(u32, 2);
pub const PAN_STRAIGHT_ARMS_WEDGE = @as(u32, 3);
pub const PAN_STRAIGHT_ARMS_VERT = @as(u32, 4);
pub const PAN_STRAIGHT_ARMS_SINGLE_SERIF = @as(u32, 5);
pub const PAN_STRAIGHT_ARMS_DOUBLE_SERIF = @as(u32, 6);
pub const PAN_BENT_ARMS_HORZ = @as(u32, 7);
pub const PAN_BENT_ARMS_WEDGE = @as(u32, 8);
pub const PAN_BENT_ARMS_VERT = @as(u32, 9);
pub const PAN_BENT_ARMS_SINGLE_SERIF = @as(u32, 10);
pub const PAN_BENT_ARMS_DOUBLE_SERIF = @as(u32, 11);
pub const PAN_LETT_NORMAL_CONTACT = @as(u32, 2);
pub const PAN_LETT_NORMAL_WEIGHTED = @as(u32, 3);
pub const PAN_LETT_NORMAL_BOXED = @as(u32, 4);
pub const PAN_LETT_NORMAL_FLATTENED = @as(u32, 5);
pub const PAN_LETT_NORMAL_ROUNDED = @as(u32, 6);
pub const PAN_LETT_NORMAL_OFF_CENTER = @as(u32, 7);
pub const PAN_LETT_NORMAL_SQUARE = @as(u32, 8);
pub const PAN_LETT_OBLIQUE_CONTACT = @as(u32, 9);
pub const PAN_LETT_OBLIQUE_WEIGHTED = @as(u32, 10);
pub const PAN_LETT_OBLIQUE_BOXED = @as(u32, 11);
pub const PAN_LETT_OBLIQUE_FLATTENED = @as(u32, 12);
pub const PAN_LETT_OBLIQUE_ROUNDED = @as(u32, 13);
pub const PAN_LETT_OBLIQUE_OFF_CENTER = @as(u32, 14);
pub const PAN_LETT_OBLIQUE_SQUARE = @as(u32, 15);
pub const PAN_MIDLINE_STANDARD_TRIMMED = @as(u32, 2);
pub const PAN_MIDLINE_STANDARD_POINTED = @as(u32, 3);
pub const PAN_MIDLINE_STANDARD_SERIFED = @as(u32, 4);
pub const PAN_MIDLINE_HIGH_TRIMMED = @as(u32, 5);
pub const PAN_MIDLINE_HIGH_POINTED = @as(u32, 6);
pub const PAN_MIDLINE_HIGH_SERIFED = @as(u32, 7);
pub const PAN_MIDLINE_CONSTANT_TRIMMED = @as(u32, 8);
pub const PAN_MIDLINE_CONSTANT_POINTED = @as(u32, 9);
pub const PAN_MIDLINE_CONSTANT_SERIFED = @as(u32, 10);
pub const PAN_MIDLINE_LOW_TRIMMED = @as(u32, 11);
pub const PAN_MIDLINE_LOW_POINTED = @as(u32, 12);
pub const PAN_MIDLINE_LOW_SERIFED = @as(u32, 13);
pub const PAN_XHEIGHT_CONSTANT_SMALL = @as(u32, 2);
pub const PAN_XHEIGHT_CONSTANT_STD = @as(u32, 3);
pub const PAN_XHEIGHT_CONSTANT_LARGE = @as(u32, 4);
pub const PAN_XHEIGHT_DUCKING_SMALL = @as(u32, 5);
pub const PAN_XHEIGHT_DUCKING_STD = @as(u32, 6);
pub const PAN_XHEIGHT_DUCKING_LARGE = @as(u32, 7);
pub const ELF_VENDOR_SIZE = @as(u32, 4);
pub const ELF_VERSION = @as(u32, 0);
pub const ELF_CULTURE_LATIN = @as(u32, 0);
pub const RASTER_FONTTYPE = @as(u32, 1);
pub const DEVICE_FONTTYPE = @as(u32, 2);
pub const TRUETYPE_FONTTYPE = @as(u32, 4);
pub const PC_RESERVED = @as(u32, 1);
pub const PC_EXPLICIT = @as(u32, 2);
pub const PC_NOCOLLAPSE = @as(u32, 4);
pub const BKMODE_LAST = @as(u32, 2);
pub const GM_LAST = @as(u32, 2);
pub const PT_CLOSEFIGURE = @as(u32, 1);
pub const PT_LINETO = @as(u32, 2);
pub const PT_BEZIERTO = @as(u32, 4);
pub const PT_MOVETO = @as(u32, 6);
pub const ABSOLUTE = @as(u32, 1);
pub const RELATIVE = @as(u32, 2);
pub const STOCK_LAST = @as(u32, 19);
pub const CLR_INVALID = @as(u32, 4294967295);
pub const BS_SOLID = @as(u32, 0);
pub const BS_NULL = @as(u32, 1);
pub const BS_HOLLOW = @as(u32, 1);
pub const BS_HATCHED = @as(u32, 2);
pub const BS_PATTERN = @as(u32, 3);
pub const BS_INDEXED = @as(u32, 4);
pub const BS_DIBPATTERN = @as(u32, 5);
pub const BS_DIBPATTERNPT = @as(u32, 6);
pub const BS_PATTERN8X8 = @as(u32, 7);
pub const BS_DIBPATTERN8X8 = @as(u32, 8);
pub const BS_MONOPATTERN = @as(u32, 9);
pub const HS_API_MAX = @as(u32, 12);
pub const DT_PLOTTER = @as(u32, 0);
pub const DT_RASDISPLAY = @as(u32, 1);
pub const DT_RASPRINTER = @as(u32, 2);
pub const DT_RASCAMERA = @as(u32, 3);
pub const DT_CHARSTREAM = @as(u32, 4);
pub const DT_METAFILE = @as(u32, 5);
pub const DT_DISPFILE = @as(u32, 6);
pub const CC_NONE = @as(u32, 0);
pub const CC_CIRCLES = @as(u32, 1);
pub const CC_PIE = @as(u32, 2);
pub const CC_CHORD = @as(u32, 4);
pub const CC_ELLIPSES = @as(u32, 8);
pub const CC_WIDE = @as(u32, 16);
pub const CC_STYLED = @as(u32, 32);
pub const CC_WIDESTYLED = @as(u32, 64);
pub const CC_INTERIORS = @as(u32, 128);
pub const CC_ROUNDRECT = @as(u32, 256);
pub const LC_NONE = @as(u32, 0);
pub const LC_POLYLINE = @as(u32, 2);
pub const LC_MARKER = @as(u32, 4);
pub const LC_POLYMARKER = @as(u32, 8);
pub const LC_WIDE = @as(u32, 16);
pub const LC_STYLED = @as(u32, 32);
pub const LC_WIDESTYLED = @as(u32, 64);
pub const LC_INTERIORS = @as(u32, 128);
pub const PC_NONE = @as(u32, 0);
pub const PC_POLYGON = @as(u32, 1);
pub const PC_RECTANGLE = @as(u32, 2);
pub const PC_WINDPOLYGON = @as(u32, 4);
pub const PC_TRAPEZOID = @as(u32, 4);
pub const PC_SCANLINE = @as(u32, 8);
pub const PC_WIDE = @as(u32, 16);
pub const PC_STYLED = @as(u32, 32);
pub const PC_WIDESTYLED = @as(u32, 64);
pub const PC_INTERIORS = @as(u32, 128);
pub const PC_POLYPOLYGON = @as(u32, 256);
pub const PC_PATHS = @as(u32, 512);
pub const CP_NONE = @as(u32, 0);
pub const CP_RECTANGLE = @as(u32, 1);
pub const CP_REGION = @as(u32, 2);
pub const TC_OP_CHARACTER = @as(u32, 1);
pub const TC_OP_STROKE = @as(u32, 2);
pub const TC_CP_STROKE = @as(u32, 4);
pub const TC_CR_90 = @as(u32, 8);
pub const TC_CR_ANY = @as(u32, 16);
pub const TC_SF_X_YINDEP = @as(u32, 32);
pub const TC_SA_DOUBLE = @as(u32, 64);
pub const TC_SA_INTEGER = @as(u32, 128);
pub const TC_SA_CONTIN = @as(u32, 256);
pub const TC_EA_DOUBLE = @as(u32, 512);
pub const TC_IA_ABLE = @as(u32, 1024);
pub const TC_UA_ABLE = @as(u32, 2048);
pub const TC_SO_ABLE = @as(u32, 4096);
pub const TC_RA_ABLE = @as(u32, 8192);
pub const TC_VA_ABLE = @as(u32, 16384);
pub const TC_RESERVED = @as(u32, 32768);
pub const TC_SCROLLBLT = @as(u32, 65536);
pub const RC_BITBLT = @as(u32, 1);
pub const RC_BANDING = @as(u32, 2);
pub const RC_SCALING = @as(u32, 4);
pub const RC_BITMAP64 = @as(u32, 8);
pub const RC_GDI20_OUTPUT = @as(u32, 16);
pub const RC_GDI20_STATE = @as(u32, 32);
pub const RC_SAVEBITMAP = @as(u32, 64);
pub const RC_DI_BITMAP = @as(u32, 128);
pub const RC_PALETTE = @as(u32, 256);
pub const RC_DIBTODEV = @as(u32, 512);
pub const RC_BIGFONT = @as(u32, 1024);
pub const RC_STRETCHBLT = @as(u32, 2048);
pub const RC_FLOODFILL = @as(u32, 4096);
pub const RC_STRETCHDIB = @as(u32, 8192);
pub const RC_OP_DX_OUTPUT = @as(u32, 16384);
pub const RC_DEVBITS = @as(u32, 32768);
pub const SB_NONE = @as(u32, 0);
pub const SB_CONST_ALPHA = @as(u32, 1);
pub const SB_PIXEL_ALPHA = @as(u32, 2);
pub const SB_PREMULT_ALPHA = @as(u32, 4);
pub const SB_GRAD_RECT = @as(u32, 16);
pub const SB_GRAD_TRI = @as(u32, 32);
pub const CM_NONE = @as(u32, 0);
pub const CM_DEVICE_ICM = @as(u32, 1);
pub const CM_GAMMA_RAMP = @as(u32, 2);
pub const CM_CMYK_COLOR = @as(u32, 4);
pub const SYSPAL_ERROR = @as(u32, 0);
pub const CBM_INIT = @as(i32, 4);
pub const CCHFORMNAME = @as(u32, 32);
pub const DM_SPECVERSION = @as(u32, 1025);
pub const DM_ORIENTATION = @as(i32, 1);
pub const DM_PAPERSIZE = @as(i32, 2);
pub const DM_PAPERLENGTH = @as(i32, 4);
pub const DM_PAPERWIDTH = @as(i32, 8);
pub const DM_SCALE = @as(i32, 16);
pub const DM_POSITION = @as(i32, 32);
pub const DM_NUP = @as(i32, 64);
pub const DM_DISPLAYORIENTATION = @as(i32, 128);
pub const DM_COPIES = @as(i32, 256);
pub const DM_DEFAULTSOURCE = @as(i32, 512);
pub const DM_PRINTQUALITY = @as(i32, 1024);
pub const DM_COLOR = @as(i32, 2048);
pub const DM_DUPLEX = @as(i32, 4096);
pub const DM_YRESOLUTION = @as(i32, 8192);
pub const DM_TTOPTION = @as(i32, 16384);
pub const DM_COLLATE = @as(i32, 32768);
pub const DM_FORMNAME = @as(i32, 65536);
pub const DM_LOGPIXELS = @as(i32, 131072);
pub const DM_BITSPERPEL = @as(i32, 262144);
pub const DM_PELSWIDTH = @as(i32, 524288);
pub const DM_PELSHEIGHT = @as(i32, 1048576);
pub const DM_DISPLAYFLAGS = @as(i32, 2097152);
pub const DM_DISPLAYFREQUENCY = @as(i32, 4194304);
pub const DM_ICMMETHOD = @as(i32, 8388608);
pub const DM_ICMINTENT = @as(i32, 16777216);
pub const DM_MEDIATYPE = @as(i32, 33554432);
pub const DM_DITHERTYPE = @as(i32, 67108864);
pub const DM_PANNINGWIDTH = @as(i32, 134217728);
pub const DM_PANNINGHEIGHT = @as(i32, 268435456);
pub const DM_DISPLAYFIXEDOUTPUT = @as(i32, 536870912);
pub const DMORIENT_PORTRAIT = @as(u32, 1);
pub const DMORIENT_LANDSCAPE = @as(u32, 2);
pub const DMPAPER_LETTER = @as(u32, 1);
pub const DMPAPER_LETTERSMALL = @as(u32, 2);
pub const DMPAPER_TABLOID = @as(u32, 3);
pub const DMPAPER_LEDGER = @as(u32, 4);
pub const DMPAPER_LEGAL = @as(u32, 5);
pub const DMPAPER_STATEMENT = @as(u32, 6);
pub const DMPAPER_EXECUTIVE = @as(u32, 7);
pub const DMPAPER_A3 = @as(u32, 8);
pub const DMPAPER_A4 = @as(u32, 9);
pub const DMPAPER_A4SMALL = @as(u32, 10);
pub const DMPAPER_A5 = @as(u32, 11);
pub const DMPAPER_B4 = @as(u32, 12);
pub const DMPAPER_B5 = @as(u32, 13);
pub const DMPAPER_FOLIO = @as(u32, 14);
pub const DMPAPER_QUARTO = @as(u32, 15);
pub const DMPAPER_10X14 = @as(u32, 16);
pub const DMPAPER_11X17 = @as(u32, 17);
pub const DMPAPER_NOTE = @as(u32, 18);
pub const DMPAPER_ENV_9 = @as(u32, 19);
pub const DMPAPER_ENV_10 = @as(u32, 20);
pub const DMPAPER_ENV_11 = @as(u32, 21);
pub const DMPAPER_ENV_12 = @as(u32, 22);
pub const DMPAPER_ENV_14 = @as(u32, 23);
pub const DMPAPER_CSHEET = @as(u32, 24);
pub const DMPAPER_DSHEET = @as(u32, 25);
pub const DMPAPER_ESHEET = @as(u32, 26);
pub const DMPAPER_ENV_DL = @as(u32, 27);
pub const DMPAPER_ENV_C5 = @as(u32, 28);
pub const DMPAPER_ENV_C3 = @as(u32, 29);
pub const DMPAPER_ENV_C4 = @as(u32, 30);
pub const DMPAPER_ENV_C6 = @as(u32, 31);
pub const DMPAPER_ENV_C65 = @as(u32, 32);
pub const DMPAPER_ENV_B4 = @as(u32, 33);
pub const DMPAPER_ENV_B5 = @as(u32, 34);
pub const DMPAPER_ENV_B6 = @as(u32, 35);
pub const DMPAPER_ENV_ITALY = @as(u32, 36);
pub const DMPAPER_ENV_MONARCH = @as(u32, 37);
pub const DMPAPER_ENV_PERSONAL = @as(u32, 38);
pub const DMPAPER_FANFOLD_US = @as(u32, 39);
pub const DMPAPER_FANFOLD_STD_GERMAN = @as(u32, 40);
pub const DMPAPER_FANFOLD_LGL_GERMAN = @as(u32, 41);
pub const DMPAPER_ISO_B4 = @as(u32, 42);
pub const DMPAPER_JAPANESE_POSTCARD = @as(u32, 43);
pub const DMPAPER_9X11 = @as(u32, 44);
pub const DMPAPER_10X11 = @as(u32, 45);
pub const DMPAPER_15X11 = @as(u32, 46);
pub const DMPAPER_ENV_INVITE = @as(u32, 47);
pub const DMPAPER_RESERVED_48 = @as(u32, 48);
pub const DMPAPER_RESERVED_49 = @as(u32, 49);
pub const DMPAPER_LETTER_EXTRA = @as(u32, 50);
pub const DMPAPER_LEGAL_EXTRA = @as(u32, 51);
pub const DMPAPER_TABLOID_EXTRA = @as(u32, 52);
pub const DMPAPER_A4_EXTRA = @as(u32, 53);
pub const DMPAPER_LETTER_TRANSVERSE = @as(u32, 54);
pub const DMPAPER_A4_TRANSVERSE = @as(u32, 55);
pub const DMPAPER_LETTER_EXTRA_TRANSVERSE = @as(u32, 56);
pub const DMPAPER_A_PLUS = @as(u32, 57);
pub const DMPAPER_B_PLUS = @as(u32, 58);
pub const DMPAPER_LETTER_PLUS = @as(u32, 59);
pub const DMPAPER_A4_PLUS = @as(u32, 60);
pub const DMPAPER_A5_TRANSVERSE = @as(u32, 61);
pub const DMPAPER_B5_TRANSVERSE = @as(u32, 62);
pub const DMPAPER_A3_EXTRA = @as(u32, 63);
pub const DMPAPER_A5_EXTRA = @as(u32, 64);
pub const DMPAPER_B5_EXTRA = @as(u32, 65);
pub const DMPAPER_A2 = @as(u32, 66);
pub const DMPAPER_A3_TRANSVERSE = @as(u32, 67);
pub const DMPAPER_A3_EXTRA_TRANSVERSE = @as(u32, 68);
pub const DMPAPER_DBL_JAPANESE_POSTCARD = @as(u32, 69);
pub const DMPAPER_A6 = @as(u32, 70);
pub const DMPAPER_JENV_KAKU2 = @as(u32, 71);
pub const DMPAPER_JENV_KAKU3 = @as(u32, 72);
pub const DMPAPER_JENV_CHOU3 = @as(u32, 73);
pub const DMPAPER_JENV_CHOU4 = @as(u32, 74);
pub const DMPAPER_LETTER_ROTATED = @as(u32, 75);
pub const DMPAPER_A3_ROTATED = @as(u32, 76);
pub const DMPAPER_A4_ROTATED = @as(u32, 77);
pub const DMPAPER_A5_ROTATED = @as(u32, 78);
pub const DMPAPER_B4_JIS_ROTATED = @as(u32, 79);
pub const DMPAPER_B5_JIS_ROTATED = @as(u32, 80);
pub const DMPAPER_JAPANESE_POSTCARD_ROTATED = @as(u32, 81);
pub const DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = @as(u32, 82);
pub const DMPAPER_A6_ROTATED = @as(u32, 83);
pub const DMPAPER_JENV_KAKU2_ROTATED = @as(u32, 84);
pub const DMPAPER_JENV_KAKU3_ROTATED = @as(u32, 85);
pub const DMPAPER_JENV_CHOU3_ROTATED = @as(u32, 86);
pub const DMPAPER_JENV_CHOU4_ROTATED = @as(u32, 87);
pub const DMPAPER_B6_JIS = @as(u32, 88);
pub const DMPAPER_B6_JIS_ROTATED = @as(u32, 89);
pub const DMPAPER_12X11 = @as(u32, 90);
pub const DMPAPER_JENV_YOU4 = @as(u32, 91);
pub const DMPAPER_JENV_YOU4_ROTATED = @as(u32, 92);
pub const DMPAPER_P16K = @as(u32, 93);
pub const DMPAPER_P32K = @as(u32, 94);
pub const DMPAPER_P32KBIG = @as(u32, 95);
pub const DMPAPER_PENV_1 = @as(u32, 96);
pub const DMPAPER_PENV_2 = @as(u32, 97);
pub const DMPAPER_PENV_3 = @as(u32, 98);
pub const DMPAPER_PENV_4 = @as(u32, 99);
pub const DMPAPER_PENV_5 = @as(u32, 100);
pub const DMPAPER_PENV_6 = @as(u32, 101);
pub const DMPAPER_PENV_7 = @as(u32, 102);
pub const DMPAPER_PENV_8 = @as(u32, 103);
pub const DMPAPER_PENV_9 = @as(u32, 104);
pub const DMPAPER_PENV_10 = @as(u32, 105);
pub const DMPAPER_P16K_ROTATED = @as(u32, 106);
pub const DMPAPER_P32K_ROTATED = @as(u32, 107);
pub const DMPAPER_P32KBIG_ROTATED = @as(u32, 108);
pub const DMPAPER_PENV_1_ROTATED = @as(u32, 109);
pub const DMPAPER_PENV_2_ROTATED = @as(u32, 110);
pub const DMPAPER_PENV_3_ROTATED = @as(u32, 111);
pub const DMPAPER_PENV_4_ROTATED = @as(u32, 112);
pub const DMPAPER_PENV_5_ROTATED = @as(u32, 113);
pub const DMPAPER_PENV_6_ROTATED = @as(u32, 114);
pub const DMPAPER_PENV_7_ROTATED = @as(u32, 115);
pub const DMPAPER_PENV_8_ROTATED = @as(u32, 116);
pub const DMPAPER_PENV_9_ROTATED = @as(u32, 117);
pub const DMPAPER_PENV_10_ROTATED = @as(u32, 118);
pub const DMPAPER_LAST = @as(u32, 118);
pub const DMPAPER_USER = @as(u32, 256);
pub const DMBIN_UPPER = @as(u32, 1);
pub const DMBIN_ONLYONE = @as(u32, 1);
pub const DMBIN_LOWER = @as(u32, 2);
pub const DMBIN_MIDDLE = @as(u32, 3);
pub const DMBIN_MANUAL = @as(u32, 4);
pub const DMBIN_ENVELOPE = @as(u32, 5);
pub const DMBIN_ENVMANUAL = @as(u32, 6);
pub const DMBIN_AUTO = @as(u32, 7);
pub const DMBIN_TRACTOR = @as(u32, 8);
pub const DMBIN_SMALLFMT = @as(u32, 9);
pub const DMBIN_LARGEFMT = @as(u32, 10);
pub const DMBIN_LARGECAPACITY = @as(u32, 11);
pub const DMBIN_CASSETTE = @as(u32, 14);
pub const DMBIN_FORMSOURCE = @as(u32, 15);
pub const DMBIN_LAST = @as(u32, 15);
pub const DMBIN_USER = @as(u32, 256);
pub const DMRES_DRAFT = @as(i32, -1);
pub const DMRES_LOW = @as(i32, -2);
pub const DMRES_MEDIUM = @as(i32, -3);
pub const DMRES_HIGH = @as(i32, -4);
pub const DMCOLOR_MONOCHROME = @as(u32, 1);
pub const DMCOLOR_COLOR = @as(u32, 2);
pub const DMDUP_SIMPLEX = @as(u32, 1);
pub const DMDUP_VERTICAL = @as(u32, 2);
pub const DMDUP_HORIZONTAL = @as(u32, 3);
pub const DMTT_BITMAP = @as(u32, 1);
pub const DMTT_DOWNLOAD = @as(u32, 2);
pub const DMTT_SUBDEV = @as(u32, 3);
pub const DMTT_DOWNLOAD_OUTLINE = @as(u32, 4);
pub const DMCOLLATE_FALSE = @as(u32, 0);
pub const DMCOLLATE_TRUE = @as(u32, 1);
pub const DMDO_DEFAULT = @as(u32, 0);
pub const DMDO_90 = @as(u32, 1);
pub const DMDO_180 = @as(u32, 2);
pub const DMDO_270 = @as(u32, 3);
pub const DMDFO_DEFAULT = @as(u32, 0);
pub const DMDFO_STRETCH = @as(u32, 1);
pub const DMDFO_CENTER = @as(u32, 2);
pub const DM_INTERLACED = @as(u32, 2);
pub const DMDISPLAYFLAGS_TEXTMODE = @as(u32, 4);
pub const DMNUP_SYSTEM = @as(u32, 1);
pub const DMNUP_ONEUP = @as(u32, 2);
pub const DMICMMETHOD_NONE = @as(u32, 1);
pub const DMICMMETHOD_SYSTEM = @as(u32, 2);
pub const DMICMMETHOD_DRIVER = @as(u32, 3);
pub const DMICMMETHOD_DEVICE = @as(u32, 4);
pub const DMICMMETHOD_USER = @as(u32, 256);
pub const DMICM_SATURATE = @as(u32, 1);
pub const DMICM_CONTRAST = @as(u32, 2);
pub const DMICM_COLORIMETRIC = @as(u32, 3);
pub const DMICM_ABS_COLORIMETRIC = @as(u32, 4);
pub const DMICM_USER = @as(u32, 256);
pub const DMMEDIA_STANDARD = @as(u32, 1);
pub const DMMEDIA_TRANSPARENCY = @as(u32, 2);
pub const DMMEDIA_GLOSSY = @as(u32, 3);
pub const DMMEDIA_USER = @as(u32, 256);
pub const DMDITHER_NONE = @as(u32, 1);
pub const DMDITHER_COARSE = @as(u32, 2);
pub const DMDITHER_FINE = @as(u32, 3);
pub const DMDITHER_LINEART = @as(u32, 4);
pub const DMDITHER_ERRORDIFFUSION = @as(u32, 5);
pub const DMDITHER_RESERVED6 = @as(u32, 6);
pub const DMDITHER_RESERVED7 = @as(u32, 7);
pub const DMDITHER_RESERVED8 = @as(u32, 8);
pub const DMDITHER_RESERVED9 = @as(u32, 9);
pub const DMDITHER_GRAYSCALE = @as(u32, 10);
pub const DMDITHER_USER = @as(u32, 256);
pub const DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = @as(u32, 1);
pub const DISPLAY_DEVICE_MULTI_DRIVER = @as(u32, 2);
pub const DISPLAY_DEVICE_PRIMARY_DEVICE = @as(u32, 4);
pub const DISPLAY_DEVICE_MIRRORING_DRIVER = @as(u32, 8);
pub const DISPLAY_DEVICE_VGA_COMPATIBLE = @as(u32, 16);
pub const DISPLAY_DEVICE_REMOVABLE = @as(u32, 32);
pub const DISPLAY_DEVICE_ACC_DRIVER = @as(u32, 64);
pub const DISPLAY_DEVICE_MODESPRUNED = @as(u32, 134217728);
pub const DISPLAY_DEVICE_RDPUDD = @as(u32, 16777216);
pub const DISPLAY_DEVICE_REMOTE = @as(u32, 67108864);
pub const DISPLAY_DEVICE_DISCONNECT = @as(u32, 33554432);
pub const DISPLAY_DEVICE_TS_COMPATIBLE = @as(u32, 2097152);
pub const DISPLAY_DEVICE_UNSAFE_MODES_ON = @as(u32, 524288);
pub const DISPLAY_DEVICE_ACTIVE = @as(u32, 1);
pub const DISPLAY_DEVICE_ATTACHED = @as(u32, 2);
pub const DISPLAYCONFIG_MAXPATH = @as(u32, 1024);
pub const DISPLAYCONFIG_PATH_MODE_IDX_INVALID = @as(u32, 4294967295);
pub const DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID = @as(u32, 65535);
pub const DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID = @as(u32, 65535);
pub const DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID = @as(u32, 65535);
pub const DISPLAYCONFIG_PATH_CLONE_GROUP_INVALID = @as(u32, 65535);
pub const DISPLAYCONFIG_SOURCE_IN_USE = @as(u32, 1);
pub const DISPLAYCONFIG_TARGET_IN_USE = @as(u32, 1);
pub const DISPLAYCONFIG_TARGET_FORCIBLE = @as(u32, 2);
pub const DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT = @as(u32, 4);
pub const DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH = @as(u32, 8);
pub const DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM = @as(u32, 16);
pub const DISPLAYCONFIG_TARGET_IS_HMD = @as(u32, 32);
pub const DISPLAYCONFIG_PATH_ACTIVE = @as(u32, 1);
pub const DISPLAYCONFIG_PATH_PREFERRED_UNSCALED = @as(u32, 4);
pub const DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE = @as(u32, 8);
pub const DISPLAYCONFIG_PATH_VALID_FLAGS = @as(u32, 29);
pub const QDC_ALL_PATHS = @as(u32, 1);
pub const QDC_ONLY_ACTIVE_PATHS = @as(u32, 2);
pub const QDC_DATABASE_CURRENT = @as(u32, 4);
pub const QDC_VIRTUAL_MODE_AWARE = @as(u32, 16);
pub const QDC_INCLUDE_HMD = @as(u32, 32);
pub const QDC_VIRTUAL_REFRESH_RATE_AWARE = @as(u32, 64);
pub const SDC_TOPOLOGY_INTERNAL = @as(u32, 1);
pub const SDC_TOPOLOGY_CLONE = @as(u32, 2);
pub const SDC_TOPOLOGY_EXTEND = @as(u32, 4);
pub const SDC_TOPOLOGY_EXTERNAL = @as(u32, 8);
pub const SDC_TOPOLOGY_SUPPLIED = @as(u32, 16);
pub const SDC_USE_SUPPLIED_DISPLAY_CONFIG = @as(u32, 32);
pub const SDC_VALIDATE = @as(u32, 64);
pub const SDC_APPLY = @as(u32, 128);
pub const SDC_NO_OPTIMIZATION = @as(u32, 256);
pub const SDC_SAVE_TO_DATABASE = @as(u32, 512);
pub const SDC_ALLOW_CHANGES = @as(u32, 1024);
pub const SDC_PATH_PERSIST_IF_REQUIRED = @as(u32, 2048);
pub const SDC_FORCE_MODE_ENUMERATION = @as(u32, 4096);
pub const SDC_ALLOW_PATH_ORDER_CHANGES = @as(u32, 8192);
pub const SDC_VIRTUAL_MODE_AWARE = @as(u32, 32768);
pub const SDC_VIRTUAL_REFRESH_RATE_AWARE = @as(u32, 131072);
pub const RDH_RECTANGLES = @as(u32, 1);
pub const SYSRGN = @as(u32, 4);
pub const TT_POLYGON_TYPE = @as(u32, 24);
pub const TT_PRIM_LINE = @as(u32, 1);
pub const TT_PRIM_QSPLINE = @as(u32, 2);
pub const TT_PRIM_CSPLINE = @as(u32, 3);
pub const GCP_DBCS = @as(u32, 1);
pub const GCP_ERROR = @as(u32, 32768);
pub const FLI_MASK = @as(u32, 4155);
pub const FLI_GLYPHS = @as(i32, 262144);
pub const GCP_JUSTIFYIN = @as(i32, 2097152);
pub const GCPCLASS_LATIN = @as(u32, 1);
pub const GCPCLASS_HEBREW = @as(u32, 2);
pub const GCPCLASS_ARABIC = @as(u32, 2);
pub const GCPCLASS_NEUTRAL = @as(u32, 3);
pub const GCPCLASS_LOCALNUMBER = @as(u32, 4);
pub const GCPCLASS_LATINNUMBER = @as(u32, 5);
pub const GCPCLASS_LATINNUMERICTERMINATOR = @as(u32, 6);
pub const GCPCLASS_LATINNUMERICSEPARATOR = @as(u32, 7);
pub const GCPCLASS_NUMERICSEPARATOR = @as(u32, 8);
pub const GCPCLASS_PREBOUNDLTR = @as(u32, 128);
pub const GCPCLASS_PREBOUNDRTL = @as(u32, 64);
pub const GCPCLASS_POSTBOUNDLTR = @as(u32, 32);
pub const GCPCLASS_POSTBOUNDRTL = @as(u32, 16);
pub const GCPGLYPH_LINKBEFORE = @as(u32, 32768);
pub const GCPGLYPH_LINKAFTER = @as(u32, 16384);
pub const TT_AVAILABLE = @as(u32, 1);
pub const TT_ENABLED = @as(u32, 2);
pub const PFD_TYPE_RGBA = @as(u32, 0);
pub const PFD_TYPE_COLORINDEX = @as(u32, 1);
pub const PFD_MAIN_PLANE = @as(u32, 0);
pub const PFD_OVERLAY_PLANE = @as(u32, 1);
pub const PFD_UNDERLAY_PLANE = @as(i32, -1);
pub const PFD_DOUBLEBUFFER = @as(u32, 1);
pub const PFD_STEREO = @as(u32, 2);
pub const PFD_DRAW_TO_WINDOW = @as(u32, 4);
pub const PFD_DRAW_TO_BITMAP = @as(u32, 8);
pub const PFD_SUPPORT_GDI = @as(u32, 16);
pub const PFD_SUPPORT_OPENGL = @as(u32, 32);
pub const PFD_GENERIC_FORMAT = @as(u32, 64);
pub const PFD_NEED_PALETTE = @as(u32, 128);
pub const PFD_NEED_SYSTEM_PALETTE = @as(u32, 256);
pub const PFD_SWAP_EXCHANGE = @as(u32, 512);
pub const PFD_SWAP_COPY = @as(u32, 1024);
pub const PFD_SWAP_LAYER_BUFFERS = @as(u32, 2048);
pub const PFD_GENERIC_ACCELERATED = @as(u32, 4096);
pub const PFD_SUPPORT_DIRECTDRAW = @as(u32, 8192);
pub const PFD_DIRECT3D_ACCELERATED = @as(u32, 16384);
pub const PFD_SUPPORT_COMPOSITION = @as(u32, 32768);
pub const PFD_DEPTH_DONTCARE = @as(u32, 536870912);
pub const PFD_DOUBLEBUFFER_DONTCARE = @as(u32, 1073741824);
pub const PFD_STEREO_DONTCARE = @as(u32, 2147483648);
pub const DC_BINADJUST = @as(u32, 19);
pub const DC_EMF_COMPLIANT = @as(u32, 20);
pub const DC_DATATYPE_PRODUCED = @as(u32, 21);
pub const DC_MANUFACTURER = @as(u32, 23);
pub const DC_MODEL = @as(u32, 24);
pub const PRINTRATEUNIT_PPM = @as(u32, 1);
pub const PRINTRATEUNIT_CPS = @as(u32, 2);
pub const PRINTRATEUNIT_LPM = @as(u32, 3);
pub const PRINTRATEUNIT_IPM = @as(u32, 4);
pub const DCTT_BITMAP = @as(i32, 1);
pub const DCTT_DOWNLOAD = @as(i32, 2);
pub const DCTT_SUBDEV = @as(i32, 4);
pub const DCTT_DOWNLOAD_OUTLINE = @as(i32, 8);
pub const DCBA_FACEUPNONE = @as(u32, 0);
pub const DCBA_FACEUPCENTER = @as(u32, 1);
pub const DCBA_FACEUPLEFT = @as(u32, 2);
pub const DCBA_FACEUPRIGHT = @as(u32, 3);
pub const DCBA_FACEDOWNNONE = @as(u32, 256);
pub const DCBA_FACEDOWNCENTER = @as(u32, 257);
pub const DCBA_FACEDOWNLEFT = @as(u32, 258);
pub const DCBA_FACEDOWNRIGHT = @as(u32, 259);
pub const GS_8BIT_INDICES = @as(u32, 1);
pub const GGI_MARK_NONEXISTING_GLYPHS = @as(u32, 1);
pub const MM_MAX_NUMAXES = @as(u32, 16);
pub const MM_MAX_AXES_NAMELEN = @as(u32, 16);
pub const GDIREGISTERDDRAWPACKETVERSION = @as(u32, 1);
pub const AC_SRC_OVER = @as(u32, 0);
pub const AC_SRC_ALPHA = @as(u32, 1);
pub const GRADIENT_FILL_OP_FLAG = @as(u32, 255);
pub const CA_NEGATIVE = @as(u32, 1);
pub const CA_LOG_FILTER = @as(u32, 2);
pub const ILLUMINANT_DEVICE_DEFAULT = @as(u32, 0);
pub const ILLUMINANT_A = @as(u32, 1);
pub const ILLUMINANT_B = @as(u32, 2);
pub const ILLUMINANT_C = @as(u32, 3);
pub const ILLUMINANT_D50 = @as(u32, 4);
pub const ILLUMINANT_D55 = @as(u32, 5);
pub const ILLUMINANT_D65 = @as(u32, 6);
pub const ILLUMINANT_D75 = @as(u32, 7);
pub const ILLUMINANT_F2 = @as(u32, 8);
pub const ILLUMINANT_MAX_INDEX = @as(u32, 8);
pub const ILLUMINANT_TUNGSTEN = @as(u32, 1);
pub const ILLUMINANT_DAYLIGHT = @as(u32, 3);
pub const ILLUMINANT_FLUORESCENT = @as(u32, 8);
pub const ILLUMINANT_NTSC = @as(u32, 3);
pub const DI_APPBANDING = @as(u32, 1);
pub const DI_ROPS_READ_DESTINATION = @as(u32, 2);
pub const FONTMAPPER_MAX = @as(u32, 10);
pub const ICM_OFF = @as(u32, 1);
pub const ICM_ON = @as(u32, 2);
pub const ICM_QUERY = @as(u32, 3);
pub const ICM_DONE_OUTSIDEDC = @as(u32, 4);
pub const ENHMETA_SIGNATURE = @as(u32, 1179469088);
pub const ENHMETA_STOCK_OBJECT = @as(u32, 2147483648);
pub const EMR_HEADER = @as(u32, 1);
pub const EMR_POLYBEZIER = @as(u32, 2);
pub const EMR_POLYGON = @as(u32, 3);
pub const EMR_POLYLINE = @as(u32, 4);
pub const EMR_POLYBEZIERTO = @as(u32, 5);
pub const EMR_POLYLINETO = @as(u32, 6);
pub const EMR_POLYPOLYLINE = @as(u32, 7);
pub const EMR_POLYPOLYGON = @as(u32, 8);
pub const EMR_SETWINDOWEXTEX = @as(u32, 9);
pub const EMR_SETWINDOWORGEX = @as(u32, 10);
pub const EMR_SETVIEWPORTEXTEX = @as(u32, 11);
pub const EMR_SETVIEWPORTORGEX = @as(u32, 12);
pub const EMR_SETBRUSHORGEX = @as(u32, 13);
pub const EMR_EOF = @as(u32, 14);
pub const EMR_SETPIXELV = @as(u32, 15);
pub const EMR_SETMAPPERFLAGS = @as(u32, 16);
pub const EMR_SETMAPMODE = @as(u32, 17);
pub const EMR_SETBKMODE = @as(u32, 18);
pub const EMR_SETPOLYFILLMODE = @as(u32, 19);
pub const EMR_SETROP2 = @as(u32, 20);
pub const EMR_SETSTRETCHBLTMODE = @as(u32, 21);
pub const EMR_SETTEXTALIGN = @as(u32, 22);
pub const EMR_SETCOLORADJUSTMENT = @as(u32, 23);
pub const EMR_SETTEXTCOLOR = @as(u32, 24);
pub const EMR_SETBKCOLOR = @as(u32, 25);
pub const EMR_OFFSETCLIPRGN = @as(u32, 26);
pub const EMR_MOVETOEX = @as(u32, 27);
pub const EMR_SETMETARGN = @as(u32, 28);
pub const EMR_EXCLUDECLIPRECT = @as(u32, 29);
pub const EMR_INTERSECTCLIPRECT = @as(u32, 30);
pub const EMR_SCALEVIEWPORTEXTEX = @as(u32, 31);
pub const EMR_SCALEWINDOWEXTEX = @as(u32, 32);
pub const EMR_SAVEDC = @as(u32, 33);
pub const EMR_RESTOREDC = @as(u32, 34);
pub const EMR_SETWORLDTRANSFORM = @as(u32, 35);
pub const EMR_MODIFYWORLDTRANSFORM = @as(u32, 36);
pub const EMR_SELECTOBJECT = @as(u32, 37);
pub const EMR_CREATEPEN = @as(u32, 38);
pub const EMR_CREATEBRUSHINDIRECT = @as(u32, 39);
pub const EMR_DELETEOBJECT = @as(u32, 40);
pub const EMR_ANGLEARC = @as(u32, 41);
pub const EMR_ELLIPSE = @as(u32, 42);
pub const EMR_RECTANGLE = @as(u32, 43);
pub const EMR_ROUNDRECT = @as(u32, 44);
pub const EMR_ARC = @as(u32, 45);
pub const EMR_CHORD = @as(u32, 46);
pub const EMR_PIE = @as(u32, 47);
pub const EMR_SELECTPALETTE = @as(u32, 48);
pub const EMR_CREATEPALETTE = @as(u32, 49);
pub const EMR_SETPALETTEENTRIES = @as(u32, 50);
pub const EMR_RESIZEPALETTE = @as(u32, 51);
pub const EMR_REALIZEPALETTE = @as(u32, 52);
pub const EMR_EXTFLOODFILL = @as(u32, 53);
pub const EMR_LINETO = @as(u32, 54);
pub const EMR_ARCTO = @as(u32, 55);
pub const EMR_POLYDRAW = @as(u32, 56);
pub const EMR_SETARCDIRECTION = @as(u32, 57);
pub const EMR_SETMITERLIMIT = @as(u32, 58);
pub const EMR_BEGINPATH = @as(u32, 59);
pub const EMR_ENDPATH = @as(u32, 60);
pub const EMR_CLOSEFIGURE = @as(u32, 61);
pub const EMR_FILLPATH = @as(u32, 62);
pub const EMR_STROKEANDFILLPATH = @as(u32, 63);
pub const EMR_STROKEPATH = @as(u32, 64);
pub const EMR_FLATTENPATH = @as(u32, 65);
pub const EMR_WIDENPATH = @as(u32, 66);
pub const EMR_SELECTCLIPPATH = @as(u32, 67);
pub const EMR_ABORTPATH = @as(u32, 68);
pub const EMR_GDICOMMENT = @as(u32, 70);
pub const EMR_FILLRGN = @as(u32, 71);
pub const EMR_FRAMERGN = @as(u32, 72);
pub const EMR_INVERTRGN = @as(u32, 73);
pub const EMR_PAINTRGN = @as(u32, 74);
pub const EMR_EXTSELECTCLIPRGN = @as(u32, 75);
pub const EMR_BITBLT = @as(u32, 76);
pub const EMR_STRETCHBLT = @as(u32, 77);
pub const EMR_MASKBLT = @as(u32, 78);
pub const EMR_PLGBLT = @as(u32, 79);
pub const EMR_SETDIBITSTODEVICE = @as(u32, 80);
pub const EMR_STRETCHDIBITS = @as(u32, 81);
pub const EMR_EXTCREATEFONTINDIRECTW = @as(u32, 82);
pub const EMR_EXTTEXTOUTA = @as(u32, 83);
pub const EMR_EXTTEXTOUTW = @as(u32, 84);
pub const EMR_POLYBEZIER16 = @as(u32, 85);
pub const EMR_POLYGON16 = @as(u32, 86);
pub const EMR_POLYLINE16 = @as(u32, 87);
pub const EMR_POLYBEZIERTO16 = @as(u32, 88);
pub const EMR_POLYLINETO16 = @as(u32, 89);
pub const EMR_POLYPOLYLINE16 = @as(u32, 90);
pub const EMR_POLYPOLYGON16 = @as(u32, 91);
pub const EMR_POLYDRAW16 = @as(u32, 92);
pub const EMR_CREATEMONOBRUSH = @as(u32, 93);
pub const EMR_CREATEDIBPATTERNBRUSHPT = @as(u32, 94);
pub const EMR_EXTCREATEPEN = @as(u32, 95);
pub const EMR_POLYTEXTOUTA = @as(u32, 96);
pub const EMR_POLYTEXTOUTW = @as(u32, 97);
pub const EMR_SETICMMODE = @as(u32, 98);
pub const EMR_CREATECOLORSPACE = @as(u32, 99);
pub const EMR_SETCOLORSPACE = @as(u32, 100);
pub const EMR_DELETECOLORSPACE = @as(u32, 101);
pub const EMR_GLSRECORD = @as(u32, 102);
pub const EMR_GLSBOUNDEDRECORD = @as(u32, 103);
pub const EMR_PIXELFORMAT = @as(u32, 104);
pub const EMR_RESERVED_105 = @as(u32, 105);
pub const EMR_RESERVED_106 = @as(u32, 106);
pub const EMR_RESERVED_107 = @as(u32, 107);
pub const EMR_RESERVED_108 = @as(u32, 108);
pub const EMR_RESERVED_109 = @as(u32, 109);
pub const EMR_RESERVED_110 = @as(u32, 110);
pub const EMR_COLORCORRECTPALETTE = @as(u32, 111);
pub const EMR_SETICMPROFILEA = @as(u32, 112);
pub const EMR_SETICMPROFILEW = @as(u32, 113);
pub const EMR_ALPHABLEND = @as(u32, 114);
pub const EMR_SETLAYOUT = @as(u32, 115);
pub const EMR_TRANSPARENTBLT = @as(u32, 116);
pub const EMR_RESERVED_117 = @as(u32, 117);
pub const EMR_GRADIENTFILL = @as(u32, 118);
pub const EMR_RESERVED_119 = @as(u32, 119);
pub const EMR_RESERVED_120 = @as(u32, 120);
pub const EMR_COLORMATCHTOTARGETW = @as(u32, 121);
pub const EMR_CREATECOLORSPACEW = @as(u32, 122);
pub const EMR_MIN = @as(u32, 1);
pub const EMR_MAX = @as(u32, 122);
pub const SETICMPROFILE_EMBEDED = @as(u32, 1);
pub const CREATECOLORSPACE_EMBEDED = @as(u32, 1);
pub const COLORMATCHTOTARGET_EMBEDED = @as(u32, 1);
pub const GDICOMMENT_IDENTIFIER = @as(u32, 1128875079);
pub const GDICOMMENT_WINDOWS_METAFILE = @as(u32, 2147483649);
pub const GDICOMMENT_BEGINGROUP = @as(u32, 2);
pub const GDICOMMENT_ENDGROUP = @as(u32, 3);
pub const GDICOMMENT_MULTIFORMATS = @as(u32, 1073741828);
pub const EPS_SIGNATURE = @as(u32, 1179865157);
pub const GDICOMMENT_UNICODE_STRING = @as(u32, 64);
pub const GDICOMMENT_UNICODE_END = @as(u32, 128);
pub const WGL_FONT_LINES = @as(u32, 0);
pub const WGL_FONT_POLYGONS = @as(u32, 1);
pub const LPD_DOUBLEBUFFER = @as(u32, 1);
pub const LPD_STEREO = @as(u32, 2);
pub const LPD_SUPPORT_GDI = @as(u32, 16);
pub const LPD_SUPPORT_OPENGL = @as(u32, 32);
pub const LPD_SHARE_DEPTH = @as(u32, 64);
pub const LPD_SHARE_STENCIL = @as(u32, 128);
pub const LPD_SHARE_ACCUM = @as(u32, 256);
pub const LPD_SWAP_EXCHANGE = @as(u32, 512);
pub const LPD_SWAP_COPY = @as(u32, 1024);
pub const LPD_TRANSPARENT = @as(u32, 4096);
pub const LPD_TYPE_RGBA = @as(u32, 0);
pub const LPD_TYPE_COLORINDEX = @as(u32, 1);
pub const WGL_SWAP_MAIN_PLANE = @as(u32, 1);
pub const WGL_SWAP_OVERLAY1 = @as(u32, 2);
pub const WGL_SWAP_OVERLAY2 = @as(u32, 4);
pub const WGL_SWAP_OVERLAY3 = @as(u32, 8);
pub const WGL_SWAP_OVERLAY4 = @as(u32, 16);
pub const WGL_SWAP_OVERLAY5 = @as(u32, 32);
pub const WGL_SWAP_OVERLAY6 = @as(u32, 64);
pub const WGL_SWAP_OVERLAY7 = @as(u32, 128);
pub const WGL_SWAP_OVERLAY8 = @as(u32, 256);
pub const WGL_SWAP_OVERLAY9 = @as(u32, 512);
pub const WGL_SWAP_OVERLAY10 = @as(u32, 1024);
pub const WGL_SWAP_OVERLAY11 = @as(u32, 2048);
pub const WGL_SWAP_OVERLAY12 = @as(u32, 4096);
pub const WGL_SWAP_OVERLAY13 = @as(u32, 8192);
pub const WGL_SWAP_OVERLAY14 = @as(u32, 16384);
pub const WGL_SWAP_OVERLAY15 = @as(u32, 32768);
pub const WGL_SWAP_UNDERLAY1 = @as(u32, 65536);
pub const WGL_SWAP_UNDERLAY2 = @as(u32, 131072);
pub const WGL_SWAP_UNDERLAY3 = @as(u32, 262144);
pub const WGL_SWAP_UNDERLAY4 = @as(u32, 524288);
pub const WGL_SWAP_UNDERLAY5 = @as(u32, 1048576);
pub const WGL_SWAP_UNDERLAY6 = @as(u32, 2097152);
pub const WGL_SWAP_UNDERLAY7 = @as(u32, 4194304);
pub const WGL_SWAP_UNDERLAY8 = @as(u32, 8388608);
pub const WGL_SWAP_UNDERLAY9 = @as(u32, 16777216);
pub const WGL_SWAP_UNDERLAY10 = @as(u32, 33554432);
pub const WGL_SWAP_UNDERLAY11 = @as(u32, 67108864);
pub const WGL_SWAP_UNDERLAY12 = @as(u32, 134217728);
pub const WGL_SWAP_UNDERLAY13 = @as(u32, 268435456);
pub const WGL_SWAP_UNDERLAY14 = @as(u32, 536870912);
pub const WGL_SWAP_UNDERLAY15 = @as(u32, 1073741824);
pub const WGL_SWAPMULTIPLE_MAX = @as(u32, 16);
pub const NEWTRANSPARENT = @as(u32, 3);
pub const QUERYROPSUPPORT = @as(u32, 40);
pub const SELECTDIB = @as(u32, 41);
pub const SC_SCREENSAVE = @as(u32, 61760);
pub const TTFCFP_SUBSET = @as(u32, 0);
pub const TTFCFP_SUBSET1 = @as(u32, 1);
pub const TTFCFP_DELTA = @as(u32, 2);
pub const TTFCFP_APPLE_PLATFORMID = @as(u32, 1);
pub const TTFCFP_MS_PLATFORMID = @as(u32, 3);
pub const TTFCFP_DONT_CARE = @as(u32, 65535);
pub const TTFCFP_LANG_KEEP_ALL = @as(u32, 0);
pub const TTFCFP_FLAGS_SUBSET = @as(u32, 1);
pub const TTFCFP_FLAGS_COMPRESS = @as(u32, 2);
pub const TTFCFP_FLAGS_TTC = @as(u32, 4);
pub const TTFCFP_FLAGS_GLYPHLIST = @as(u32, 8);
pub const TTFMFP_SUBSET = @as(u32, 0);
pub const TTFMFP_SUBSET1 = @as(u32, 1);
pub const TTFMFP_DELTA = @as(u32, 2);
pub const ERR_GENERIC = @as(u32, 1000);
pub const ERR_READOUTOFBOUNDS = @as(u32, 1001);
pub const ERR_WRITEOUTOFBOUNDS = @as(u32, 1002);
pub const ERR_READCONTROL = @as(u32, 1003);
pub const ERR_WRITECONTROL = @as(u32, 1004);
pub const ERR_MEM = @as(u32, 1005);
pub const ERR_FORMAT = @as(u32, 1006);
pub const ERR_WOULD_GROW = @as(u32, 1007);
pub const ERR_VERSION = @as(u32, 1008);
pub const ERR_NO_GLYPHS = @as(u32, 1009);
pub const ERR_INVALID_MERGE_FORMATS = @as(u32, 1010);
pub const ERR_INVALID_MERGE_CHECKSUMS = @as(u32, 1011);
pub const ERR_INVALID_MERGE_NUMGLYPHS = @as(u32, 1012);
pub const ERR_INVALID_DELTA_FORMAT = @as(u32, 1013);
pub const ERR_NOT_TTC = @as(u32, 1014);
pub const ERR_INVALID_TTC_INDEX = @as(u32, 1015);
pub const ERR_MISSING_CMAP = @as(u32, 1030);
pub const ERR_MISSING_GLYF = @as(u32, 1031);
pub const ERR_MISSING_HEAD = @as(u32, 1032);
pub const ERR_MISSING_HHEA = @as(u32, 1033);
pub const ERR_MISSING_HMTX = @as(u32, 1034);
pub const ERR_MISSING_LOCA = @as(u32, 1035);
pub const ERR_MISSING_MAXP = @as(u32, 1036);
pub const ERR_MISSING_NAME = @as(u32, 1037);
pub const ERR_MISSING_POST = @as(u32, 1038);
pub const ERR_MISSING_OS2 = @as(u32, 1039);
pub const ERR_MISSING_VHEA = @as(u32, 1040);
pub const ERR_MISSING_VMTX = @as(u32, 1041);
pub const ERR_MISSING_HHEA_OR_VHEA = @as(u32, 1042);
pub const ERR_MISSING_HMTX_OR_VMTX = @as(u32, 1043);
pub const ERR_MISSING_EBDT = @as(u32, 1044);
pub const ERR_INVALID_CMAP = @as(u32, 1060);
pub const ERR_INVALID_GLYF = @as(u32, 1061);
pub const ERR_INVALID_HEAD = @as(u32, 1062);
pub const ERR_INVALID_HHEA = @as(u32, 1063);
pub const ERR_INVALID_HMTX = @as(u32, 1064);
pub const ERR_INVALID_LOCA = @as(u32, 1065);
pub const ERR_INVALID_MAXP = @as(u32, 1066);
pub const ERR_INVALID_NAME = @as(u32, 1067);
pub const ERR_INVALID_POST = @as(u32, 1068);
pub const ERR_INVALID_OS2 = @as(u32, 1069);
pub const ERR_INVALID_VHEA = @as(u32, 1070);
pub const ERR_INVALID_VMTX = @as(u32, 1071);
pub const ERR_INVALID_HHEA_OR_VHEA = @as(u32, 1072);
pub const ERR_INVALID_HMTX_OR_VMTX = @as(u32, 1073);
pub const ERR_INVALID_TTO = @as(u32, 1080);
pub const ERR_INVALID_GSUB = @as(u32, 1081);
pub const ERR_INVALID_GPOS = @as(u32, 1082);
pub const ERR_INVALID_GDEF = @as(u32, 1083);
pub const ERR_INVALID_JSTF = @as(u32, 1084);
pub const ERR_INVALID_BASE = @as(u32, 1085);
pub const ERR_INVALID_EBLC = @as(u32, 1086);
pub const ERR_INVALID_LTSH = @as(u32, 1087);
pub const ERR_INVALID_VDMX = @as(u32, 1088);
pub const ERR_INVALID_HDMX = @as(u32, 1089);
pub const ERR_PARAMETER0 = @as(u32, 1100);
pub const ERR_PARAMETER1 = @as(u32, 1101);
pub const ERR_PARAMETER2 = @as(u32, 1102);
pub const ERR_PARAMETER3 = @as(u32, 1103);
pub const ERR_PARAMETER4 = @as(u32, 1104);
pub const ERR_PARAMETER5 = @as(u32, 1105);
pub const ERR_PARAMETER6 = @as(u32, 1106);
pub const ERR_PARAMETER7 = @as(u32, 1107);
pub const ERR_PARAMETER8 = @as(u32, 1108);
pub const ERR_PARAMETER9 = @as(u32, 1109);
pub const ERR_PARAMETER10 = @as(u32, 1110);
pub const ERR_PARAMETER11 = @as(u32, 1111);
pub const ERR_PARAMETER12 = @as(u32, 1112);
pub const ERR_PARAMETER13 = @as(u32, 1113);
pub const ERR_PARAMETER14 = @as(u32, 1114);
pub const ERR_PARAMETER15 = @as(u32, 1115);
pub const ERR_PARAMETER16 = @as(u32, 1116);
pub const CHARSET_DEFAULT = @as(u32, 1);
pub const CHARSET_GLYPHIDX = @as(u32, 3);
pub const TTEMBED_FAILIFVARIATIONSIMULATED = @as(u32, 16);
pub const TTEMBED_WEBOBJECT = @as(u32, 128);
pub const TTEMBED_XORENCRYPTDATA = @as(u32, 268435456);
pub const TTEMBED_VARIATIONSIMULATED = @as(u32, 1);
pub const TTEMBED_EUDCEMBEDDED = @as(u32, 2);
pub const TTEMBED_SUBSETCANCEL = @as(u32, 4);
pub const TTLOAD_PRIVATE = @as(u32, 1);
pub const TTLOAD_EUDC_OVERWRITE = @as(u32, 2);
pub const TTLOAD_EUDC_SET = @as(u32, 4);
pub const TTDELETE_DONTREMOVEFONT = @as(u32, 1);
pub const E_NONE = @as(i32, 0);
pub const E_API_NOTIMPL = @as(i32, 1);
pub const E_CHARCODECOUNTINVALID = @as(i32, 2);
pub const E_CHARCODESETINVALID = @as(i32, 3);
pub const E_DEVICETRUETYPEFONT = @as(i32, 4);
pub const E_HDCINVALID = @as(i32, 6);
pub const E_NOFREEMEMORY = @as(i32, 7);
pub const E_FONTREFERENCEINVALID = @as(i32, 8);
pub const E_NOTATRUETYPEFONT = @as(i32, 10);
pub const E_ERRORACCESSINGFONTDATA = @as(i32, 12);
pub const E_ERRORACCESSINGFACENAME = @as(i32, 13);
pub const E_ERRORUNICODECONVERSION = @as(i32, 17);
pub const E_ERRORCONVERTINGCHARS = @as(i32, 18);
pub const E_EXCEPTION = @as(i32, 19);
pub const E_RESERVEDPARAMNOTNULL = @as(i32, 20);
pub const E_CHARSETINVALID = @as(i32, 21);
pub const E_FILE_NOT_FOUND = @as(i32, 23);
pub const E_TTC_INDEX_OUT_OF_RANGE = @as(i32, 24);
pub const E_INPUTPARAMINVALID = @as(i32, 25);
pub const E_ERRORCOMPRESSINGFONTDATA = @as(i32, 256);
pub const E_FONTDATAINVALID = @as(i32, 258);
pub const E_NAMECHANGEFAILED = @as(i32, 259);
pub const E_FONTNOTEMBEDDABLE = @as(i32, 260);
pub const E_PRIVSINVALID = @as(i32, 261);
pub const E_SUBSETTINGFAILED = @as(i32, 262);
pub const E_READFROMSTREAMFAILED = @as(i32, 263);
pub const E_SAVETOSTREAMFAILED = @as(i32, 264);
pub const E_NOOS2 = @as(i32, 265);
pub const E_T2NOFREEMEMORY = @as(i32, 266);
pub const E_ERRORREADINGFONTDATA = @as(i32, 267);
pub const E_FLAGSINVALID = @as(i32, 268);
pub const E_ERRORCREATINGFONTFILE = @as(i32, 269);
pub const E_FONTALREADYEXISTS = @as(i32, 270);
pub const E_FONTNAMEALREADYEXISTS = @as(i32, 271);
pub const E_FONTINSTALLFAILED = @as(i32, 272);
pub const E_ERRORDECOMPRESSINGFONTDATA = @as(i32, 273);
pub const E_ERRORACCESSINGEXCLUDELIST = @as(i32, 274);
pub const E_FACENAMEINVALID = @as(i32, 275);
pub const E_STREAMINVALID = @as(i32, 276);
pub const E_STATUSINVALID = @as(i32, 277);
pub const E_PRIVSTATUSINVALID = @as(i32, 278);
pub const E_PERMISSIONSINVALID = @as(i32, 279);
pub const E_PBENABLEDINVALID = @as(i32, 280);
pub const E_SUBSETTINGEXCEPTION = @as(i32, 281);
pub const E_SUBSTRING_TEST_FAIL = @as(i32, 282);
pub const E_FONTVARIATIONSIMULATED = @as(i32, 283);
pub const E_FONTFAMILYNAMENOTINFULL = @as(i32, 285);
pub const E_ADDFONTFAILED = @as(i32, 512);
pub const E_COULDNTCREATETEMPFILE = @as(i32, 513);
pub const E_FONTFILECREATEFAILED = @as(i32, 515);
pub const E_WINDOWSAPI = @as(i32, 516);
pub const E_FONTFILENOTFOUND = @as(i32, 517);
pub const E_RESOURCEFILECREATEFAILED = @as(i32, 518);
pub const E_ERROREXPANDINGFONTDATA = @as(i32, 519);
pub const E_ERRORGETTINGDC = @as(i32, 520);
pub const E_EXCEPTIONINDECOMPRESSION = @as(i32, 521);
pub const E_EXCEPTIONINCOMPRESSION = @as(i32, 522);

//--------------------------------------------------------------------------------
// Section: Types (235)
//--------------------------------------------------------------------------------
pub const R2_MODE = enum(i32) {
    BLACK = 1,
    NOTMERGEPEN = 2,
    MASKNOTPEN = 3,
    NOTCOPYPEN = 4,
    MASKPENNOT = 5,
    NOT = 6,
    XORPEN = 7,
    NOTMASKPEN = 8,
    MASKPEN = 9,
    NOTXORPEN = 10,
    NOP = 11,
    MERGENOTPEN = 12,
    COPYPEN = 13,
    MERGEPENNOT = 14,
    MERGEPEN = 15,
    WHITE = 16,
    // LAST = 16, this enum value conflicts with WHITE
};
pub const R2_BLACK = R2_MODE.BLACK;
pub const R2_NOTMERGEPEN = R2_MODE.NOTMERGEPEN;
pub const R2_MASKNOTPEN = R2_MODE.MASKNOTPEN;
pub const R2_NOTCOPYPEN = R2_MODE.NOTCOPYPEN;
pub const R2_MASKPENNOT = R2_MODE.MASKPENNOT;
pub const R2_NOT = R2_MODE.NOT;
pub const R2_XORPEN = R2_MODE.XORPEN;
pub const R2_NOTMASKPEN = R2_MODE.NOTMASKPEN;
pub const R2_MASKPEN = R2_MODE.MASKPEN;
pub const R2_NOTXORPEN = R2_MODE.NOTXORPEN;
pub const R2_NOP = R2_MODE.NOP;
pub const R2_MERGENOTPEN = R2_MODE.MERGENOTPEN;
pub const R2_COPYPEN = R2_MODE.COPYPEN;
pub const R2_MERGEPENNOT = R2_MODE.MERGEPENNOT;
pub const R2_MERGEPEN = R2_MODE.MERGEPEN;
pub const R2_WHITE = R2_MODE.WHITE;
pub const R2_LAST = R2_MODE.WHITE;

pub const RGN_COMBINE_MODE = enum(i32) {
    AND = 1,
    OR = 2,
    XOR = 3,
    DIFF = 4,
    COPY = 5,
    // MIN = 1, this enum value conflicts with AND
    // MAX = 5, this enum value conflicts with COPY
};
pub const RGN_AND = RGN_COMBINE_MODE.AND;
pub const RGN_OR = RGN_COMBINE_MODE.OR;
pub const RGN_XOR = RGN_COMBINE_MODE.XOR;
pub const RGN_DIFF = RGN_COMBINE_MODE.DIFF;
pub const RGN_COPY = RGN_COMBINE_MODE.COPY;
pub const RGN_MIN = RGN_COMBINE_MODE.AND;
pub const RGN_MAX = RGN_COMBINE_MODE.COPY;

pub const ETO_OPTIONS = enum(u32) {
    OPAQUE = 2,
    CLIPPED = 4,
    GLYPH_INDEX = 16,
    RTLREADING = 128,
    NUMERICSLOCAL = 1024,
    NUMERICSLATIN = 2048,
    IGNORELANGUAGE = 4096,
    PDY = 8192,
    REVERSE_INDEX_MAP = 65536,
    _,
    pub fn initFlags(o: struct {
        OPAQUE: u1 = 0,
        CLIPPED: u1 = 0,
        GLYPH_INDEX: u1 = 0,
        RTLREADING: u1 = 0,
        NUMERICSLOCAL: u1 = 0,
        NUMERICSLATIN: u1 = 0,
        IGNORELANGUAGE: u1 = 0,
        PDY: u1 = 0,
        REVERSE_INDEX_MAP: u1 = 0,
    }) ETO_OPTIONS {
        return @as(ETO_OPTIONS, @enumFromInt((if (o.OPAQUE == 1) @intFromEnum(ETO_OPTIONS.OPAQUE) else 0) | (if (o.CLIPPED == 1) @intFromEnum(ETO_OPTIONS.CLIPPED) else 0) | (if (o.GLYPH_INDEX == 1) @intFromEnum(ETO_OPTIONS.GLYPH_INDEX) else 0) | (if (o.RTLREADING == 1) @intFromEnum(ETO_OPTIONS.RTLREADING) else 0) | (if (o.NUMERICSLOCAL == 1) @intFromEnum(ETO_OPTIONS.NUMERICSLOCAL) else 0) | (if (o.NUMERICSLATIN == 1) @intFromEnum(ETO_OPTIONS.NUMERICSLATIN) else 0) | (if (o.IGNORELANGUAGE == 1) @intFromEnum(ETO_OPTIONS.IGNORELANGUAGE) else 0) | (if (o.PDY == 1) @intFromEnum(ETO_OPTIONS.PDY) else 0) | (if (o.REVERSE_INDEX_MAP == 1) @intFromEnum(ETO_OPTIONS.REVERSE_INDEX_MAP) else 0)));
    }
};
pub const ETO_OPAQUE = ETO_OPTIONS.OPAQUE;
pub const ETO_CLIPPED = ETO_OPTIONS.CLIPPED;
pub const ETO_GLYPH_INDEX = ETO_OPTIONS.GLYPH_INDEX;
pub const ETO_RTLREADING = ETO_OPTIONS.RTLREADING;
pub const ETO_NUMERICSLOCAL = ETO_OPTIONS.NUMERICSLOCAL;
pub const ETO_NUMERICSLATIN = ETO_OPTIONS.NUMERICSLATIN;
pub const ETO_IGNORELANGUAGE = ETO_OPTIONS.IGNORELANGUAGE;
pub const ETO_PDY = ETO_OPTIONS.PDY;
pub const ETO_REVERSE_INDEX_MAP = ETO_OPTIONS.REVERSE_INDEX_MAP;

pub const OBJ_TYPE = enum(i32) {
    PEN = 1,
    BRUSH = 2,
    DC = 3,
    METADC = 4,
    PAL = 5,
    FONT = 6,
    BITMAP = 7,
    REGION = 8,
    METAFILE = 9,
    MEMDC = 10,
    EXTPEN = 11,
    ENHMETADC = 12,
    ENHMETAFILE = 13,
    COLORSPACE = 14,
};
pub const OBJ_PEN = OBJ_TYPE.PEN;
pub const OBJ_BRUSH = OBJ_TYPE.BRUSH;
pub const OBJ_DC = OBJ_TYPE.DC;
pub const OBJ_METADC = OBJ_TYPE.METADC;
pub const OBJ_PAL = OBJ_TYPE.PAL;
pub const OBJ_FONT = OBJ_TYPE.FONT;
pub const OBJ_BITMAP = OBJ_TYPE.BITMAP;
pub const OBJ_REGION = OBJ_TYPE.REGION;
pub const OBJ_METAFILE = OBJ_TYPE.METAFILE;
pub const OBJ_MEMDC = OBJ_TYPE.MEMDC;
pub const OBJ_EXTPEN = OBJ_TYPE.EXTPEN;
pub const OBJ_ENHMETADC = OBJ_TYPE.ENHMETADC;
pub const OBJ_ENHMETAFILE = OBJ_TYPE.ENHMETAFILE;
pub const OBJ_COLORSPACE = OBJ_TYPE.COLORSPACE;

pub const ROP_CODE = enum(u32) {
    SRCCOPY = 13369376,
    SRCPAINT = 15597702,
    SRCAND = 8913094,
    SRCINVERT = 6684742,
    SRCERASE = 4457256,
    NOTSRCCOPY = 3342344,
    NOTSRCERASE = 1114278,
    MERGECOPY = 12583114,
    MERGEPAINT = 12255782,
    PATCOPY = 15728673,
    PATPAINT = 16452105,
    PATINVERT = 5898313,
    DSTINVERT = 5570569,
    BLACKNESS = 66,
    WHITENESS = 16711778,
    NOMIRRORBITMAP = 2147483648,
    CAPTUREBLT = 1073741824,
};
pub const SRCCOPY = ROP_CODE.SRCCOPY;
pub const SRCPAINT = ROP_CODE.SRCPAINT;
pub const SRCAND = ROP_CODE.SRCAND;
pub const SRCINVERT = ROP_CODE.SRCINVERT;
pub const SRCERASE = ROP_CODE.SRCERASE;
pub const NOTSRCCOPY = ROP_CODE.NOTSRCCOPY;
pub const NOTSRCERASE = ROP_CODE.NOTSRCERASE;
pub const MERGECOPY = ROP_CODE.MERGECOPY;
pub const MERGEPAINT = ROP_CODE.MERGEPAINT;
pub const PATCOPY = ROP_CODE.PATCOPY;
pub const PATPAINT = ROP_CODE.PATPAINT;
pub const PATINVERT = ROP_CODE.PATINVERT;
pub const DSTINVERT = ROP_CODE.DSTINVERT;
pub const BLACKNESS = ROP_CODE.BLACKNESS;
pub const WHITENESS = ROP_CODE.WHITENESS;
pub const NOMIRRORBITMAP = ROP_CODE.NOMIRRORBITMAP;
pub const CAPTUREBLT = ROP_CODE.CAPTUREBLT;

pub const DIB_USAGE = enum(u32) {
    RGB_COLORS = 0,
    PAL_COLORS = 1,
};
pub const DIB_RGB_COLORS = DIB_USAGE.RGB_COLORS;
pub const DIB_PAL_COLORS = DIB_USAGE.PAL_COLORS;

pub const DRAWEDGE_FLAGS = enum(u32) {
    BDR_RAISEDOUTER = 1,
    BDR_SUNKENOUTER = 2,
    BDR_RAISEDINNER = 4,
    BDR_SUNKENINNER = 8,
    BDR_OUTER = 3,
    BDR_INNER = 12,
    BDR_RAISED = 5,
    BDR_SUNKEN = 10,
    // EDGE_RAISED = 5, this enum value conflicts with BDR_RAISED
    // EDGE_SUNKEN = 10, this enum value conflicts with BDR_SUNKEN
    EDGE_ETCHED = 6,
    EDGE_BUMP = 9,
    _,
    pub fn initFlags(o: struct {
        BDR_RAISEDOUTER: u1 = 0,
        BDR_SUNKENOUTER: u1 = 0,
        BDR_RAISEDINNER: u1 = 0,
        BDR_SUNKENINNER: u1 = 0,
        BDR_OUTER: u1 = 0,
        BDR_INNER: u1 = 0,
        BDR_RAISED: u1 = 0,
        BDR_SUNKEN: u1 = 0,
        EDGE_ETCHED: u1 = 0,
        EDGE_BUMP: u1 = 0,
    }) DRAWEDGE_FLAGS {
        return @as(DRAWEDGE_FLAGS, @enumFromInt((if (o.BDR_RAISEDOUTER == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_RAISEDOUTER) else 0) | (if (o.BDR_SUNKENOUTER == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_SUNKENOUTER) else 0) | (if (o.BDR_RAISEDINNER == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_RAISEDINNER) else 0) | (if (o.BDR_SUNKENINNER == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_SUNKENINNER) else 0) | (if (o.BDR_OUTER == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_OUTER) else 0) | (if (o.BDR_INNER == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_INNER) else 0) | (if (o.BDR_RAISED == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_RAISED) else 0) | (if (o.BDR_SUNKEN == 1) @intFromEnum(DRAWEDGE_FLAGS.BDR_SUNKEN) else 0) | (if (o.EDGE_ETCHED == 1) @intFromEnum(DRAWEDGE_FLAGS.EDGE_ETCHED) else 0) | (if (o.EDGE_BUMP == 1) @intFromEnum(DRAWEDGE_FLAGS.EDGE_BUMP) else 0)));
    }
};
pub const BDR_RAISEDOUTER = DRAWEDGE_FLAGS.BDR_RAISEDOUTER;
pub const BDR_SUNKENOUTER = DRAWEDGE_FLAGS.BDR_SUNKENOUTER;
pub const BDR_RAISEDINNER = DRAWEDGE_FLAGS.BDR_RAISEDINNER;
pub const BDR_SUNKENINNER = DRAWEDGE_FLAGS.BDR_SUNKENINNER;
pub const BDR_OUTER = DRAWEDGE_FLAGS.BDR_OUTER;
pub const BDR_INNER = DRAWEDGE_FLAGS.BDR_INNER;
pub const BDR_RAISED = DRAWEDGE_FLAGS.BDR_RAISED;
pub const BDR_SUNKEN = DRAWEDGE_FLAGS.BDR_SUNKEN;
pub const EDGE_RAISED = DRAWEDGE_FLAGS.BDR_RAISED;
pub const EDGE_SUNKEN = DRAWEDGE_FLAGS.BDR_SUNKEN;
pub const EDGE_ETCHED = DRAWEDGE_FLAGS.EDGE_ETCHED;
pub const EDGE_BUMP = DRAWEDGE_FLAGS.EDGE_BUMP;

pub const DFC_TYPE = enum(u32) {
    CAPTION = 1,
    MENU = 2,
    SCROLL = 3,
    BUTTON = 4,
    POPUPMENU = 5,
};
pub const DFC_CAPTION = DFC_TYPE.CAPTION;
pub const DFC_MENU = DFC_TYPE.MENU;
pub const DFC_SCROLL = DFC_TYPE.SCROLL;
pub const DFC_BUTTON = DFC_TYPE.BUTTON;
pub const DFC_POPUPMENU = DFC_TYPE.POPUPMENU;

pub const DFCS_STATE = enum(u32) {
    CAPTIONCLOSE = 0,
    CAPTIONMIN = 1,
    CAPTIONMAX = 2,
    CAPTIONRESTORE = 3,
    CAPTIONHELP = 4,
    // MENUARROW = 0, this enum value conflicts with CAPTIONCLOSE
    // MENUCHECK = 1, this enum value conflicts with CAPTIONMIN
    // MENUBULLET = 2, this enum value conflicts with CAPTIONMAX
    // MENUARROWRIGHT = 4, this enum value conflicts with CAPTIONHELP
    // SCROLLUP = 0, this enum value conflicts with CAPTIONCLOSE
    // SCROLLDOWN = 1, this enum value conflicts with CAPTIONMIN
    // SCROLLLEFT = 2, this enum value conflicts with CAPTIONMAX
    // SCROLLRIGHT = 3, this enum value conflicts with CAPTIONRESTORE
    SCROLLCOMBOBOX = 5,
    SCROLLSIZEGRIP = 8,
    SCROLLSIZEGRIPRIGHT = 16,
    // BUTTONCHECK = 0, this enum value conflicts with CAPTIONCLOSE
    // BUTTONRADIOIMAGE = 1, this enum value conflicts with CAPTIONMIN
    // BUTTONRADIOMASK = 2, this enum value conflicts with CAPTIONMAX
    // BUTTONRADIO = 4, this enum value conflicts with CAPTIONHELP
    // BUTTON3STATE = 8, this enum value conflicts with SCROLLSIZEGRIP
    // BUTTONPUSH = 16, this enum value conflicts with SCROLLSIZEGRIPRIGHT
    INACTIVE = 256,
    PUSHED = 512,
    CHECKED = 1024,
    TRANSPARENT = 2048,
    HOT = 4096,
    ADJUSTRECT = 8192,
    FLAT = 16384,
    MONO = 32768,
    _,
    pub fn initFlags(o: struct {
        CAPTIONCLOSE: u1 = 0,
        CAPTIONMIN: u1 = 0,
        CAPTIONMAX: u1 = 0,
        CAPTIONRESTORE: u1 = 0,
        CAPTIONHELP: u1 = 0,
        SCROLLCOMBOBOX: u1 = 0,
        SCROLLSIZEGRIP: u1 = 0,
        SCROLLSIZEGRIPRIGHT: u1 = 0,
        INACTIVE: u1 = 0,
        PUSHED: u1 = 0,
        CHECKED: u1 = 0,
        TRANSPARENT: u1 = 0,
        HOT: u1 = 0,
        ADJUSTRECT: u1 = 0,
        FLAT: u1 = 0,
        MONO: u1 = 0,
    }) DFCS_STATE {
        return @as(DFCS_STATE, @enumFromInt((if (o.CAPTIONCLOSE == 1) @intFromEnum(DFCS_STATE.CAPTIONCLOSE) else 0) | (if (o.CAPTIONMIN == 1) @intFromEnum(DFCS_STATE.CAPTIONMIN) else 0) | (if (o.CAPTIONMAX == 1) @intFromEnum(DFCS_STATE.CAPTIONMAX) else 0) | (if (o.CAPTIONRESTORE == 1) @intFromEnum(DFCS_STATE.CAPTIONRESTORE) else 0) | (if (o.CAPTIONHELP == 1) @intFromEnum(DFCS_STATE.CAPTIONHELP) else 0) | (if (o.SCROLLCOMBOBOX == 1) @intFromEnum(DFCS_STATE.SCROLLCOMBOBOX) else 0) | (if (o.SCROLLSIZEGRIP == 1) @intFromEnum(DFCS_STATE.SCROLLSIZEGRIP) else 0) | (if (o.SCROLLSIZEGRIPRIGHT == 1) @intFromEnum(DFCS_STATE.SCROLLSIZEGRIPRIGHT) else 0) | (if (o.INACTIVE == 1) @intFromEnum(DFCS_STATE.INACTIVE) else 0) | (if (o.PUSHED == 1) @intFromEnum(DFCS_STATE.PUSHED) else 0) | (if (o.CHECKED == 1) @intFromEnum(DFCS_STATE.CHECKED) else 0) | (if (o.TRANSPARENT == 1) @intFromEnum(DFCS_STATE.TRANSPARENT) else 0) | (if (o.HOT == 1) @intFromEnum(DFCS_STATE.HOT) else 0) | (if (o.ADJUSTRECT == 1) @intFromEnum(DFCS_STATE.ADJUSTRECT) else 0) | (if (o.FLAT == 1) @intFromEnum(DFCS_STATE.FLAT) else 0) | (if (o.MONO == 1) @intFromEnum(DFCS_STATE.MONO) else 0)));
    }
};
pub const DFCS_CAPTIONCLOSE = DFCS_STATE.CAPTIONCLOSE;
pub const DFCS_CAPTIONMIN = DFCS_STATE.CAPTIONMIN;
pub const DFCS_CAPTIONMAX = DFCS_STATE.CAPTIONMAX;
pub const DFCS_CAPTIONRESTORE = DFCS_STATE.CAPTIONRESTORE;
pub const DFCS_CAPTIONHELP = DFCS_STATE.CAPTIONHELP;
pub const DFCS_MENUARROW = DFCS_STATE.CAPTIONCLOSE;
pub const DFCS_MENUCHECK = DFCS_STATE.CAPTIONMIN;
pub const DFCS_MENUBULLET = DFCS_STATE.CAPTIONMAX;
pub const DFCS_MENUARROWRIGHT = DFCS_STATE.CAPTIONHELP;
pub const DFCS_SCROLLUP = DFCS_STATE.CAPTIONCLOSE;
pub const DFCS_SCROLLDOWN = DFCS_STATE.CAPTIONMIN;
pub const DFCS_SCROLLLEFT = DFCS_STATE.CAPTIONMAX;
pub const DFCS_SCROLLRIGHT = DFCS_STATE.CAPTIONRESTORE;
pub const DFCS_SCROLLCOMBOBOX = DFCS_STATE.SCROLLCOMBOBOX;
pub const DFCS_SCROLLSIZEGRIP = DFCS_STATE.SCROLLSIZEGRIP;
pub const DFCS_SCROLLSIZEGRIPRIGHT = DFCS_STATE.SCROLLSIZEGRIPRIGHT;
pub const DFCS_BUTTONCHECK = DFCS_STATE.CAPTIONCLOSE;
pub const DFCS_BUTTONRADIOIMAGE = DFCS_STATE.CAPTIONMIN;
pub const DFCS_BUTTONRADIOMASK = DFCS_STATE.CAPTIONMAX;
pub const DFCS_BUTTONRADIO = DFCS_STATE.CAPTIONHELP;
pub const DFCS_BUTTON3STATE = DFCS_STATE.SCROLLSIZEGRIP;
pub const DFCS_BUTTONPUSH = DFCS_STATE.SCROLLSIZEGRIPRIGHT;
pub const DFCS_INACTIVE = DFCS_STATE.INACTIVE;
pub const DFCS_PUSHED = DFCS_STATE.PUSHED;
pub const DFCS_CHECKED = DFCS_STATE.CHECKED;
pub const DFCS_TRANSPARENT = DFCS_STATE.TRANSPARENT;
pub const DFCS_HOT = DFCS_STATE.HOT;
pub const DFCS_ADJUSTRECT = DFCS_STATE.ADJUSTRECT;
pub const DFCS_FLAT = DFCS_STATE.FLAT;
pub const DFCS_MONO = DFCS_STATE.MONO;

pub const CDS_TYPE = enum(u32) {
    FULLSCREEN = 4,
    GLOBAL = 8,
    NORESET = 268435456,
    RESET = 1073741824,
    SET_PRIMARY = 16,
    TEST = 2,
    UPDATEREGISTRY = 1,
    VIDEOPARAMETERS = 32,
    ENABLE_UNSAFE_MODES = 256,
    DISABLE_UNSAFE_MODES = 512,
    RESET_EX = 536870912,
    _,
    pub fn initFlags(o: struct {
        FULLSCREEN: u1 = 0,
        GLOBAL: u1 = 0,
        NORESET: u1 = 0,
        RESET: u1 = 0,
        SET_PRIMARY: u1 = 0,
        TEST: u1 = 0,
        UPDATEREGISTRY: u1 = 0,
        VIDEOPARAMETERS: u1 = 0,
        ENABLE_UNSAFE_MODES: u1 = 0,
        DISABLE_UNSAFE_MODES: u1 = 0,
        RESET_EX: u1 = 0,
    }) CDS_TYPE {
        return @as(CDS_TYPE, @enumFromInt((if (o.FULLSCREEN == 1) @intFromEnum(CDS_TYPE.FULLSCREEN) else 0) | (if (o.GLOBAL == 1) @intFromEnum(CDS_TYPE.GLOBAL) else 0) | (if (o.NORESET == 1) @intFromEnum(CDS_TYPE.NORESET) else 0) | (if (o.RESET == 1) @intFromEnum(CDS_TYPE.RESET) else 0) | (if (o.SET_PRIMARY == 1) @intFromEnum(CDS_TYPE.SET_PRIMARY) else 0) | (if (o.TEST == 1) @intFromEnum(CDS_TYPE.TEST) else 0) | (if (o.UPDATEREGISTRY == 1) @intFromEnum(CDS_TYPE.UPDATEREGISTRY) else 0) | (if (o.VIDEOPARAMETERS == 1) @intFromEnum(CDS_TYPE.VIDEOPARAMETERS) else 0) | (if (o.ENABLE_UNSAFE_MODES == 1) @intFromEnum(CDS_TYPE.ENABLE_UNSAFE_MODES) else 0) | (if (o.DISABLE_UNSAFE_MODES == 1) @intFromEnum(CDS_TYPE.DISABLE_UNSAFE_MODES) else 0) | (if (o.RESET_EX == 1) @intFromEnum(CDS_TYPE.RESET_EX) else 0)));
    }
};
pub const CDS_FULLSCREEN = CDS_TYPE.FULLSCREEN;
pub const CDS_GLOBAL = CDS_TYPE.GLOBAL;
pub const CDS_NORESET = CDS_TYPE.NORESET;
pub const CDS_RESET = CDS_TYPE.RESET;
pub const CDS_SET_PRIMARY = CDS_TYPE.SET_PRIMARY;
pub const CDS_TEST = CDS_TYPE.TEST;
pub const CDS_UPDATEREGISTRY = CDS_TYPE.UPDATEREGISTRY;
pub const CDS_VIDEOPARAMETERS = CDS_TYPE.VIDEOPARAMETERS;
pub const CDS_ENABLE_UNSAFE_MODES = CDS_TYPE.ENABLE_UNSAFE_MODES;
pub const CDS_DISABLE_UNSAFE_MODES = CDS_TYPE.DISABLE_UNSAFE_MODES;
pub const CDS_RESET_EX = CDS_TYPE.RESET_EX;

pub const DISP_CHANGE = enum(i32) {
    SUCCESSFUL = 0,
    RESTART = 1,
    FAILED = -1,
    BADMODE = -2,
    NOTUPDATED = -3,
    BADFLAGS = -4,
    BADPARAM = -5,
    BADDUALVIEW = -6,
};
pub const DISP_CHANGE_SUCCESSFUL = DISP_CHANGE.SUCCESSFUL;
pub const DISP_CHANGE_RESTART = DISP_CHANGE.RESTART;
pub const DISP_CHANGE_FAILED = DISP_CHANGE.FAILED;
pub const DISP_CHANGE_BADMODE = DISP_CHANGE.BADMODE;
pub const DISP_CHANGE_NOTUPDATED = DISP_CHANGE.NOTUPDATED;
pub const DISP_CHANGE_BADFLAGS = DISP_CHANGE.BADFLAGS;
pub const DISP_CHANGE_BADPARAM = DISP_CHANGE.BADPARAM;
pub const DISP_CHANGE_BADDUALVIEW = DISP_CHANGE.BADDUALVIEW;

pub const DRAWSTATE_FLAGS = enum(u32) {
    T_COMPLEX = 0,
    T_TEXT = 1,
    T_PREFIXTEXT = 2,
    T_ICON = 3,
    T_BITMAP = 4,
    // S_NORMAL = 0, this enum value conflicts with T_COMPLEX
    S_UNION = 16,
    S_DISABLED = 32,
    S_MONO = 128,
    S_HIDEPREFIX = 512,
    S_PREFIXONLY = 1024,
    S_RIGHT = 32768,
    _,
    pub fn initFlags(o: struct {
        T_COMPLEX: u1 = 0,
        T_TEXT: u1 = 0,
        T_PREFIXTEXT: u1 = 0,
        T_ICON: u1 = 0,
        T_BITMAP: u1 = 0,
        S_UNION: u1 = 0,
        S_DISABLED: u1 = 0,
        S_MONO: u1 = 0,
        S_HIDEPREFIX: u1 = 0,
        S_PREFIXONLY: u1 = 0,
        S_RIGHT: u1 = 0,
    }) DRAWSTATE_FLAGS {
        return @as(DRAWSTATE_FLAGS, @enumFromInt((if (o.T_COMPLEX == 1) @intFromEnum(DRAWSTATE_FLAGS.T_COMPLEX) else 0) | (if (o.T_TEXT == 1) @intFromEnum(DRAWSTATE_FLAGS.T_TEXT) else 0) | (if (o.T_PREFIXTEXT == 1) @intFromEnum(DRAWSTATE_FLAGS.T_PREFIXTEXT) else 0) | (if (o.T_ICON == 1) @intFromEnum(DRAWSTATE_FLAGS.T_ICON) else 0) | (if (o.T_BITMAP == 1) @intFromEnum(DRAWSTATE_FLAGS.T_BITMAP) else 0) | (if (o.S_UNION == 1) @intFromEnum(DRAWSTATE_FLAGS.S_UNION) else 0) | (if (o.S_DISABLED == 1) @intFromEnum(DRAWSTATE_FLAGS.S_DISABLED) else 0) | (if (o.S_MONO == 1) @intFromEnum(DRAWSTATE_FLAGS.S_MONO) else 0) | (if (o.S_HIDEPREFIX == 1) @intFromEnum(DRAWSTATE_FLAGS.S_HIDEPREFIX) else 0) | (if (o.S_PREFIXONLY == 1) @intFromEnum(DRAWSTATE_FLAGS.S_PREFIXONLY) else 0) | (if (o.S_RIGHT == 1) @intFromEnum(DRAWSTATE_FLAGS.S_RIGHT) else 0)));
    }
};
pub const DST_COMPLEX = DRAWSTATE_FLAGS.T_COMPLEX;
pub const DST_TEXT = DRAWSTATE_FLAGS.T_TEXT;
pub const DST_PREFIXTEXT = DRAWSTATE_FLAGS.T_PREFIXTEXT;
pub const DST_ICON = DRAWSTATE_FLAGS.T_ICON;
pub const DST_BITMAP = DRAWSTATE_FLAGS.T_BITMAP;
pub const DSS_NORMAL = DRAWSTATE_FLAGS.T_COMPLEX;
pub const DSS_UNION = DRAWSTATE_FLAGS.S_UNION;
pub const DSS_DISABLED = DRAWSTATE_FLAGS.S_DISABLED;
pub const DSS_MONO = DRAWSTATE_FLAGS.S_MONO;
pub const DSS_HIDEPREFIX = DRAWSTATE_FLAGS.S_HIDEPREFIX;
pub const DSS_PREFIXONLY = DRAWSTATE_FLAGS.S_PREFIXONLY;
pub const DSS_RIGHT = DRAWSTATE_FLAGS.S_RIGHT;

pub const REDRAW_WINDOW_FLAGS = enum(u32) {
    INVALIDATE = 1,
    INTERNALPAINT = 2,
    ERASE = 4,
    VALIDATE = 8,
    NOINTERNALPAINT = 16,
    NOERASE = 32,
    NOCHILDREN = 64,
    ALLCHILDREN = 128,
    UPDATENOW = 256,
    ERASENOW = 512,
    FRAME = 1024,
    NOFRAME = 2048,
    _,
    pub fn initFlags(o: struct {
        INVALIDATE: u1 = 0,
        INTERNALPAINT: u1 = 0,
        ERASE: u1 = 0,
        VALIDATE: u1 = 0,
        NOINTERNALPAINT: u1 = 0,
        NOERASE: u1 = 0,
        NOCHILDREN: u1 = 0,
        ALLCHILDREN: u1 = 0,
        UPDATENOW: u1 = 0,
        ERASENOW: u1 = 0,
        FRAME: u1 = 0,
        NOFRAME: u1 = 0,
    }) REDRAW_WINDOW_FLAGS {
        return @as(REDRAW_WINDOW_FLAGS, @enumFromInt((if (o.INVALIDATE == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.INVALIDATE) else 0) | (if (o.INTERNALPAINT == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.INTERNALPAINT) else 0) | (if (o.ERASE == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.ERASE) else 0) | (if (o.VALIDATE == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.VALIDATE) else 0) | (if (o.NOINTERNALPAINT == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.NOINTERNALPAINT) else 0) | (if (o.NOERASE == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.NOERASE) else 0) | (if (o.NOCHILDREN == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.NOCHILDREN) else 0) | (if (o.ALLCHILDREN == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.ALLCHILDREN) else 0) | (if (o.UPDATENOW == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.UPDATENOW) else 0) | (if (o.ERASENOW == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.ERASENOW) else 0) | (if (o.FRAME == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.FRAME) else 0) | (if (o.NOFRAME == 1) @intFromEnum(REDRAW_WINDOW_FLAGS.NOFRAME) else 0)));
    }
};
pub const RDW_INVALIDATE = REDRAW_WINDOW_FLAGS.INVALIDATE;
pub const RDW_INTERNALPAINT = REDRAW_WINDOW_FLAGS.INTERNALPAINT;
pub const RDW_ERASE = REDRAW_WINDOW_FLAGS.ERASE;
pub const RDW_VALIDATE = REDRAW_WINDOW_FLAGS.VALIDATE;
pub const RDW_NOINTERNALPAINT = REDRAW_WINDOW_FLAGS.NOINTERNALPAINT;
pub const RDW_NOERASE = REDRAW_WINDOW_FLAGS.NOERASE;
pub const RDW_NOCHILDREN = REDRAW_WINDOW_FLAGS.NOCHILDREN;
pub const RDW_ALLCHILDREN = REDRAW_WINDOW_FLAGS.ALLCHILDREN;
pub const RDW_UPDATENOW = REDRAW_WINDOW_FLAGS.UPDATENOW;
pub const RDW_ERASENOW = REDRAW_WINDOW_FLAGS.ERASENOW;
pub const RDW_FRAME = REDRAW_WINDOW_FLAGS.FRAME;
pub const RDW_NOFRAME = REDRAW_WINDOW_FLAGS.NOFRAME;

pub const ENUM_DISPLAY_SETTINGS_MODE = enum(u32) {
    CURRENT_SETTINGS = 4294967295,
    REGISTRY_SETTINGS = 4294967294,
    _,
};
pub const ENUM_CURRENT_SETTINGS = ENUM_DISPLAY_SETTINGS_MODE.CURRENT_SETTINGS;
pub const ENUM_REGISTRY_SETTINGS = ENUM_DISPLAY_SETTINGS_MODE.REGISTRY_SETTINGS;

pub const TEXT_ALIGN_OPTIONS = enum(u32) {
    TA_NOUPDATECP = 0,
    TA_UPDATECP = 1,
    // TA_LEFT = 0, this enum value conflicts with TA_NOUPDATECP
    TA_RIGHT = 2,
    TA_CENTER = 6,
    // TA_TOP = 0, this enum value conflicts with TA_NOUPDATECP
    TA_BOTTOM = 8,
    TA_BASELINE = 24,
    TA_RTLREADING = 256,
    TA_MASK = 287,
    // VTA_BASELINE = 24, this enum value conflicts with TA_BASELINE
    // VTA_LEFT = 8, this enum value conflicts with TA_BOTTOM
    // VTA_RIGHT = 0, this enum value conflicts with TA_NOUPDATECP
    // VTA_CENTER = 6, this enum value conflicts with TA_CENTER
    // VTA_BOTTOM = 2, this enum value conflicts with TA_RIGHT
    // VTA_TOP = 0, this enum value conflicts with TA_NOUPDATECP
};
pub const TA_NOUPDATECP = TEXT_ALIGN_OPTIONS.TA_NOUPDATECP;
pub const TA_UPDATECP = TEXT_ALIGN_OPTIONS.TA_UPDATECP;
pub const TA_LEFT = TEXT_ALIGN_OPTIONS.TA_NOUPDATECP;
pub const TA_RIGHT = TEXT_ALIGN_OPTIONS.TA_RIGHT;
pub const TA_CENTER = TEXT_ALIGN_OPTIONS.TA_CENTER;
pub const TA_TOP = TEXT_ALIGN_OPTIONS.TA_NOUPDATECP;
pub const TA_BOTTOM = TEXT_ALIGN_OPTIONS.TA_BOTTOM;
pub const TA_BASELINE = TEXT_ALIGN_OPTIONS.TA_BASELINE;
pub const TA_RTLREADING = TEXT_ALIGN_OPTIONS.TA_RTLREADING;
pub const TA_MASK = TEXT_ALIGN_OPTIONS.TA_MASK;
pub const VTA_BASELINE = TEXT_ALIGN_OPTIONS.TA_BASELINE;
pub const VTA_LEFT = TEXT_ALIGN_OPTIONS.TA_BOTTOM;
pub const VTA_RIGHT = TEXT_ALIGN_OPTIONS.TA_NOUPDATECP;
pub const VTA_CENTER = TEXT_ALIGN_OPTIONS.TA_CENTER;
pub const VTA_BOTTOM = TEXT_ALIGN_OPTIONS.TA_RIGHT;
pub const VTA_TOP = TEXT_ALIGN_OPTIONS.TA_NOUPDATECP;

pub const PEN_STYLE = enum(u32) {
    GEOMETRIC = 65536,
    COSMETIC = 0,
    // SOLID = 0, this enum value conflicts with COSMETIC
    DASH = 1,
    DOT = 2,
    DASHDOT = 3,
    DASHDOTDOT = 4,
    NULL = 5,
    INSIDEFRAME = 6,
    USERSTYLE = 7,
    ALTERNATE = 8,
    STYLE_MASK = 15,
    // ENDCAP_ROUND = 0, this enum value conflicts with COSMETIC
    ENDCAP_SQUARE = 256,
    ENDCAP_FLAT = 512,
    ENDCAP_MASK = 3840,
    // JOIN_ROUND = 0, this enum value conflicts with COSMETIC
    JOIN_BEVEL = 4096,
    JOIN_MITER = 8192,
    JOIN_MASK = 61440,
    TYPE_MASK = 983040,
    _,
    pub fn initFlags(o: struct {
        GEOMETRIC: u1 = 0,
        COSMETIC: u1 = 0,
        DASH: u1 = 0,
        DOT: u1 = 0,
        DASHDOT: u1 = 0,
        DASHDOTDOT: u1 = 0,
        NULL: u1 = 0,
        INSIDEFRAME: u1 = 0,
        USERSTYLE: u1 = 0,
        ALTERNATE: u1 = 0,
        STYLE_MASK: u1 = 0,
        ENDCAP_SQUARE: u1 = 0,
        ENDCAP_FLAT: u1 = 0,
        ENDCAP_MASK: u1 = 0,
        JOIN_BEVEL: u1 = 0,
        JOIN_MITER: u1 = 0,
        JOIN_MASK: u1 = 0,
        TYPE_MASK: u1 = 0,
    }) PEN_STYLE {
        return @as(PEN_STYLE, @enumFromInt((if (o.GEOMETRIC == 1) @intFromEnum(PEN_STYLE.GEOMETRIC) else 0) | (if (o.COSMETIC == 1) @intFromEnum(PEN_STYLE.COSMETIC) else 0) | (if (o.DASH == 1) @intFromEnum(PEN_STYLE.DASH) else 0) | (if (o.DOT == 1) @intFromEnum(PEN_STYLE.DOT) else 0) | (if (o.DASHDOT == 1) @intFromEnum(PEN_STYLE.DASHDOT) else 0) | (if (o.DASHDOTDOT == 1) @intFromEnum(PEN_STYLE.DASHDOTDOT) else 0) | (if (o.NULL == 1) @intFromEnum(PEN_STYLE.NULL) else 0) | (if (o.INSIDEFRAME == 1) @intFromEnum(PEN_STYLE.INSIDEFRAME) else 0) | (if (o.USERSTYLE == 1) @intFromEnum(PEN_STYLE.USERSTYLE) else 0) | (if (o.ALTERNATE == 1) @intFromEnum(PEN_STYLE.ALTERNATE) else 0) | (if (o.STYLE_MASK == 1) @intFromEnum(PEN_STYLE.STYLE_MASK) else 0) | (if (o.ENDCAP_SQUARE == 1) @intFromEnum(PEN_STYLE.ENDCAP_SQUARE) else 0) | (if (o.ENDCAP_FLAT == 1) @intFromEnum(PEN_STYLE.ENDCAP_FLAT) else 0) | (if (o.ENDCAP_MASK == 1) @intFromEnum(PEN_STYLE.ENDCAP_MASK) else 0) | (if (o.JOIN_BEVEL == 1) @intFromEnum(PEN_STYLE.JOIN_BEVEL) else 0) | (if (o.JOIN_MITER == 1) @intFromEnum(PEN_STYLE.JOIN_MITER) else 0) | (if (o.JOIN_MASK == 1) @intFromEnum(PEN_STYLE.JOIN_MASK) else 0) | (if (o.TYPE_MASK == 1) @intFromEnum(PEN_STYLE.TYPE_MASK) else 0)));
    }
};
pub const PS_GEOMETRIC = PEN_STYLE.GEOMETRIC;
pub const PS_COSMETIC = PEN_STYLE.COSMETIC;
pub const PS_SOLID = PEN_STYLE.COSMETIC;
pub const PS_DASH = PEN_STYLE.DASH;
pub const PS_DOT = PEN_STYLE.DOT;
pub const PS_DASHDOT = PEN_STYLE.DASHDOT;
pub const PS_DASHDOTDOT = PEN_STYLE.DASHDOTDOT;
pub const PS_NULL = PEN_STYLE.NULL;
pub const PS_INSIDEFRAME = PEN_STYLE.INSIDEFRAME;
pub const PS_USERSTYLE = PEN_STYLE.USERSTYLE;
pub const PS_ALTERNATE = PEN_STYLE.ALTERNATE;
pub const PS_STYLE_MASK = PEN_STYLE.STYLE_MASK;
pub const PS_ENDCAP_ROUND = PEN_STYLE.COSMETIC;
pub const PS_ENDCAP_SQUARE = PEN_STYLE.ENDCAP_SQUARE;
pub const PS_ENDCAP_FLAT = PEN_STYLE.ENDCAP_FLAT;
pub const PS_ENDCAP_MASK = PEN_STYLE.ENDCAP_MASK;
pub const PS_JOIN_ROUND = PEN_STYLE.COSMETIC;
pub const PS_JOIN_BEVEL = PEN_STYLE.JOIN_BEVEL;
pub const PS_JOIN_MITER = PEN_STYLE.JOIN_MITER;
pub const PS_JOIN_MASK = PEN_STYLE.JOIN_MASK;
pub const PS_TYPE_MASK = PEN_STYLE.TYPE_MASK;

pub const TTEMBED_FLAGS = enum(u32) {
    EMBEDEUDC = 32,
    RAW = 0,
    SUBSET = 1,
    TTCOMPRESSED = 4,
    _,
    pub fn initFlags(o: struct {
        EMBEDEUDC: u1 = 0,
        RAW: u1 = 0,
        SUBSET: u1 = 0,
        TTCOMPRESSED: u1 = 0,
    }) TTEMBED_FLAGS {
        return @as(TTEMBED_FLAGS, @enumFromInt((if (o.EMBEDEUDC == 1) @intFromEnum(TTEMBED_FLAGS.EMBEDEUDC) else 0) | (if (o.RAW == 1) @intFromEnum(TTEMBED_FLAGS.RAW) else 0) | (if (o.SUBSET == 1) @intFromEnum(TTEMBED_FLAGS.SUBSET) else 0) | (if (o.TTCOMPRESSED == 1) @intFromEnum(TTEMBED_FLAGS.TTCOMPRESSED) else 0)));
    }
};
pub const TTEMBED_EMBEDEUDC = TTEMBED_FLAGS.EMBEDEUDC;
pub const TTEMBED_RAW = TTEMBED_FLAGS.RAW;
pub const TTEMBED_SUBSET = TTEMBED_FLAGS.SUBSET;
pub const TTEMBED_TTCOMPRESSED = TTEMBED_FLAGS.TTCOMPRESSED;

pub const DRAW_TEXT_FORMAT = enum(u32) {
    BOTTOM = 8,
    CALCRECT = 1024,
    CENTER = 1,
    EDITCONTROL = 8192,
    END_ELLIPSIS = 32768,
    EXPANDTABS = 64,
    EXTERNALLEADING = 512,
    HIDEPREFIX = 1048576,
    INTERNAL = 4096,
    LEFT = 0,
    MODIFYSTRING = 65536,
    NOCLIP = 256,
    NOFULLWIDTHCHARBREAK = 524288,
    NOPREFIX = 2048,
    PATH_ELLIPSIS = 16384,
    PREFIXONLY = 2097152,
    RIGHT = 2,
    RTLREADING = 131072,
    SINGLELINE = 32,
    TABSTOP = 128,
    // TOP = 0, this enum value conflicts with LEFT
    VCENTER = 4,
    WORDBREAK = 16,
    WORD_ELLIPSIS = 262144,
    _,
    pub fn initFlags(o: struct {
        BOTTOM: u1 = 0,
        CALCRECT: u1 = 0,
        CENTER: u1 = 0,
        EDITCONTROL: u1 = 0,
        END_ELLIPSIS: u1 = 0,
        EXPANDTABS: u1 = 0,
        EXTERNALLEADING: u1 = 0,
        HIDEPREFIX: u1 = 0,
        INTERNAL: u1 = 0,
        LEFT: u1 = 0,
        MODIFYSTRING: u1 = 0,
        NOCLIP: u1 = 0,
        NOFULLWIDTHCHARBREAK: u1 = 0,
        NOPREFIX: u1 = 0,
        PATH_ELLIPSIS: u1 = 0,
        PREFIXONLY: u1 = 0,
        RIGHT: u1 = 0,
        RTLREADING: u1 = 0,
        SINGLELINE: u1 = 0,
        TABSTOP: u1 = 0,
        VCENTER: u1 = 0,
        WORDBREAK: u1 = 0,
        WORD_ELLIPSIS: u1 = 0,
    }) DRAW_TEXT_FORMAT {
        return @as(DRAW_TEXT_FORMAT, @enumFromInt((if (o.BOTTOM == 1) @intFromEnum(DRAW_TEXT_FORMAT.BOTTOM) else 0) | (if (o.CALCRECT == 1) @intFromEnum(DRAW_TEXT_FORMAT.CALCRECT) else 0) | (if (o.CENTER == 1) @intFromEnum(DRAW_TEXT_FORMAT.CENTER) else 0) | (if (o.EDITCONTROL == 1) @intFromEnum(DRAW_TEXT_FORMAT.EDITCONTROL) else 0) | (if (o.END_ELLIPSIS == 1) @intFromEnum(DRAW_TEXT_FORMAT.END_ELLIPSIS) else 0) | (if (o.EXPANDTABS == 1) @intFromEnum(DRAW_TEXT_FORMAT.EXPANDTABS) else 0) | (if (o.EXTERNALLEADING == 1) @intFromEnum(DRAW_TEXT_FORMAT.EXTERNALLEADING) else 0) | (if (o.HIDEPREFIX == 1) @intFromEnum(DRAW_TEXT_FORMAT.HIDEPREFIX) else 0) | (if (o.INTERNAL == 1) @intFromEnum(DRAW_TEXT_FORMAT.INTERNAL) else 0) | (if (o.LEFT == 1) @intFromEnum(DRAW_TEXT_FORMAT.LEFT) else 0) | (if (o.MODIFYSTRING == 1) @intFromEnum(DRAW_TEXT_FORMAT.MODIFYSTRING) else 0) | (if (o.NOCLIP == 1) @intFromEnum(DRAW_TEXT_FORMAT.NOCLIP) else 0) | (if (o.NOFULLWIDTHCHARBREAK == 1) @intFromEnum(DRAW_TEXT_FORMAT.NOFULLWIDTHCHARBREAK) else 0) | (if (o.NOPREFIX == 1) @intFromEnum(DRAW_TEXT_FORMAT.NOPREFIX) else 0) | (if (o.PATH_ELLIPSIS == 1) @intFromEnum(DRAW_TEXT_FORMAT.PATH_ELLIPSIS) else 0) | (if (o.PREFIXONLY == 1) @intFromEnum(DRAW_TEXT_FORMAT.PREFIXONLY) else 0) | (if (o.RIGHT == 1) @intFromEnum(DRAW_TEXT_FORMAT.RIGHT) else 0) | (if (o.RTLREADING == 1) @intFromEnum(DRAW_TEXT_FORMAT.RTLREADING) else 0) | (if (o.SINGLELINE == 1) @intFromEnum(DRAW_TEXT_FORMAT.SINGLELINE) else 0) | (if (o.TABSTOP == 1) @intFromEnum(DRAW_TEXT_FORMAT.TABSTOP) else 0) | (if (o.VCENTER == 1) @intFromEnum(DRAW_TEXT_FORMAT.VCENTER) else 0) | (if (o.WORDBREAK == 1) @intFromEnum(DRAW_TEXT_FORMAT.WORDBREAK) else 0) | (if (o.WORD_ELLIPSIS == 1) @intFromEnum(DRAW_TEXT_FORMAT.WORD_ELLIPSIS) else 0)));
    }
};
pub const DT_BOTTOM = DRAW_TEXT_FORMAT.BOTTOM;
pub const DT_CALCRECT = DRAW_TEXT_FORMAT.CALCRECT;
pub const DT_CENTER = DRAW_TEXT_FORMAT.CENTER;
pub const DT_EDITCONTROL = DRAW_TEXT_FORMAT.EDITCONTROL;
pub const DT_END_ELLIPSIS = DRAW_TEXT_FORMAT.END_ELLIPSIS;
pub const DT_EXPANDTABS = DRAW_TEXT_FORMAT.EXPANDTABS;
pub const DT_EXTERNALLEADING = DRAW_TEXT_FORMAT.EXTERNALLEADING;
pub const DT_HIDEPREFIX = DRAW_TEXT_FORMAT.HIDEPREFIX;
pub const DT_INTERNAL = DRAW_TEXT_FORMAT.INTERNAL;
pub const DT_LEFT = DRAW_TEXT_FORMAT.LEFT;
pub const DT_MODIFYSTRING = DRAW_TEXT_FORMAT.MODIFYSTRING;
pub const DT_NOCLIP = DRAW_TEXT_FORMAT.NOCLIP;
pub const DT_NOFULLWIDTHCHARBREAK = DRAW_TEXT_FORMAT.NOFULLWIDTHCHARBREAK;
pub const DT_NOPREFIX = DRAW_TEXT_FORMAT.NOPREFIX;
pub const DT_PATH_ELLIPSIS = DRAW_TEXT_FORMAT.PATH_ELLIPSIS;
pub const DT_PREFIXONLY = DRAW_TEXT_FORMAT.PREFIXONLY;
pub const DT_RIGHT = DRAW_TEXT_FORMAT.RIGHT;
pub const DT_RTLREADING = DRAW_TEXT_FORMAT.RTLREADING;
pub const DT_SINGLELINE = DRAW_TEXT_FORMAT.SINGLELINE;
pub const DT_TABSTOP = DRAW_TEXT_FORMAT.TABSTOP;
pub const DT_TOP = DRAW_TEXT_FORMAT.LEFT;
pub const DT_VCENTER = DRAW_TEXT_FORMAT.VCENTER;
pub const DT_WORDBREAK = DRAW_TEXT_FORMAT.WORDBREAK;
pub const DT_WORD_ELLIPSIS = DRAW_TEXT_FORMAT.WORD_ELLIPSIS;

pub const EMBED_FONT_CHARSET = enum(u32) {
    UNICODE = 1,
    SYMBOL = 2,
};
pub const CHARSET_UNICODE = EMBED_FONT_CHARSET.UNICODE;
pub const CHARSET_SYMBOL = EMBED_FONT_CHARSET.SYMBOL;

pub const GET_DCX_FLAGS = enum(u32) {
    WINDOW = 1,
    CACHE = 2,
    PARENTCLIP = 32,
    CLIPSIBLINGS = 16,
    CLIPCHILDREN = 8,
    NORESETATTRS = 4,
    LOCKWINDOWUPDATE = 1024,
    EXCLUDERGN = 64,
    INTERSECTRGN = 128,
    INTERSECTUPDATE = 512,
    VALIDATE = 2097152,
    _,
    pub fn initFlags(o: struct {
        WINDOW: u1 = 0,
        CACHE: u1 = 0,
        PARENTCLIP: u1 = 0,
        CLIPSIBLINGS: u1 = 0,
        CLIPCHILDREN: u1 = 0,
        NORESETATTRS: u1 = 0,
        LOCKWINDOWUPDATE: u1 = 0,
        EXCLUDERGN: u1 = 0,
        INTERSECTRGN: u1 = 0,
        INTERSECTUPDATE: u1 = 0,
        VALIDATE: u1 = 0,
    }) GET_DCX_FLAGS {
        return @as(GET_DCX_FLAGS, @enumFromInt((if (o.WINDOW == 1) @intFromEnum(GET_DCX_FLAGS.WINDOW) else 0) | (if (o.CACHE == 1) @intFromEnum(GET_DCX_FLAGS.CACHE) else 0) | (if (o.PARENTCLIP == 1) @intFromEnum(GET_DCX_FLAGS.PARENTCLIP) else 0) | (if (o.CLIPSIBLINGS == 1) @intFromEnum(GET_DCX_FLAGS.CLIPSIBLINGS) else 0) | (if (o.CLIPCHILDREN == 1) @intFromEnum(GET_DCX_FLAGS.CLIPCHILDREN) else 0) | (if (o.NORESETATTRS == 1) @intFromEnum(GET_DCX_FLAGS.NORESETATTRS) else 0) | (if (o.LOCKWINDOWUPDATE == 1) @intFromEnum(GET_DCX_FLAGS.LOCKWINDOWUPDATE) else 0) | (if (o.EXCLUDERGN == 1) @intFromEnum(GET_DCX_FLAGS.EXCLUDERGN) else 0) | (if (o.INTERSECTRGN == 1) @intFromEnum(GET_DCX_FLAGS.INTERSECTRGN) else 0) | (if (o.INTERSECTUPDATE == 1) @intFromEnum(GET_DCX_FLAGS.INTERSECTUPDATE) else 0) | (if (o.VALIDATE == 1) @intFromEnum(GET_DCX_FLAGS.VALIDATE) else 0)));
    }
};
pub const DCX_WINDOW = GET_DCX_FLAGS.WINDOW;
pub const DCX_CACHE = GET_DCX_FLAGS.CACHE;
pub const DCX_PARENTCLIP = GET_DCX_FLAGS.PARENTCLIP;
pub const DCX_CLIPSIBLINGS = GET_DCX_FLAGS.CLIPSIBLINGS;
pub const DCX_CLIPCHILDREN = GET_DCX_FLAGS.CLIPCHILDREN;
pub const DCX_NORESETATTRS = GET_DCX_FLAGS.NORESETATTRS;
pub const DCX_LOCKWINDOWUPDATE = GET_DCX_FLAGS.LOCKWINDOWUPDATE;
pub const DCX_EXCLUDERGN = GET_DCX_FLAGS.EXCLUDERGN;
pub const DCX_INTERSECTRGN = GET_DCX_FLAGS.INTERSECTRGN;
pub const DCX_INTERSECTUPDATE = GET_DCX_FLAGS.INTERSECTUPDATE;
pub const DCX_VALIDATE = GET_DCX_FLAGS.VALIDATE;

pub const GET_GLYPH_OUTLINE_FORMAT = enum(u32) {
    BEZIER = 3,
    BITMAP = 1,
    GLYPH_INDEX = 128,
    GRAY2_BITMAP = 4,
    GRAY4_BITMAP = 5,
    GRAY8_BITMAP = 6,
    METRICS = 0,
    NATIVE = 2,
    UNHINTED = 256,
};
pub const GGO_BEZIER = GET_GLYPH_OUTLINE_FORMAT.BEZIER;
pub const GGO_BITMAP = GET_GLYPH_OUTLINE_FORMAT.BITMAP;
pub const GGO_GLYPH_INDEX = GET_GLYPH_OUTLINE_FORMAT.GLYPH_INDEX;
pub const GGO_GRAY2_BITMAP = GET_GLYPH_OUTLINE_FORMAT.GRAY2_BITMAP;
pub const GGO_GRAY4_BITMAP = GET_GLYPH_OUTLINE_FORMAT.GRAY4_BITMAP;
pub const GGO_GRAY8_BITMAP = GET_GLYPH_OUTLINE_FORMAT.GRAY8_BITMAP;
pub const GGO_METRICS = GET_GLYPH_OUTLINE_FORMAT.METRICS;
pub const GGO_NATIVE = GET_GLYPH_OUTLINE_FORMAT.NATIVE;
pub const GGO_UNHINTED = GET_GLYPH_OUTLINE_FORMAT.UNHINTED;

pub const SET_BOUNDS_RECT_FLAGS = enum(u32) {
    ACCUMULATE = 2,
    DISABLE = 8,
    ENABLE = 4,
    RESET = 1,
};
pub const DCB_ACCUMULATE = SET_BOUNDS_RECT_FLAGS.ACCUMULATE;
pub const DCB_DISABLE = SET_BOUNDS_RECT_FLAGS.DISABLE;
pub const DCB_ENABLE = SET_BOUNDS_RECT_FLAGS.ENABLE;
pub const DCB_RESET = SET_BOUNDS_RECT_FLAGS.RESET;

pub const GET_STOCK_OBJECT_FLAGS = enum(u32) {
    BLACK_BRUSH = 4,
    DKGRAY_BRUSH = 3,
    DC_BRUSH = 18,
    GRAY_BRUSH = 2,
    HOLLOW_BRUSH = 5,
    LTGRAY_BRUSH = 1,
    // NULL_BRUSH = 5, this enum value conflicts with HOLLOW_BRUSH
    WHITE_BRUSH = 0,
    BLACK_PEN = 7,
    DC_PEN = 19,
    NULL_PEN = 8,
    WHITE_PEN = 6,
    ANSI_FIXED_FONT = 11,
    ANSI_VAR_FONT = 12,
    DEVICE_DEFAULT_FONT = 14,
    DEFAULT_GUI_FONT = 17,
    OEM_FIXED_FONT = 10,
    SYSTEM_FONT = 13,
    SYSTEM_FIXED_FONT = 16,
    DEFAULT_PALETTE = 15,
};
pub const BLACK_BRUSH = GET_STOCK_OBJECT_FLAGS.BLACK_BRUSH;
pub const DKGRAY_BRUSH = GET_STOCK_OBJECT_FLAGS.DKGRAY_BRUSH;
pub const DC_BRUSH = GET_STOCK_OBJECT_FLAGS.DC_BRUSH;
pub const GRAY_BRUSH = GET_STOCK_OBJECT_FLAGS.GRAY_BRUSH;
pub const HOLLOW_BRUSH = GET_STOCK_OBJECT_FLAGS.HOLLOW_BRUSH;
pub const LTGRAY_BRUSH = GET_STOCK_OBJECT_FLAGS.LTGRAY_BRUSH;
pub const NULL_BRUSH = GET_STOCK_OBJECT_FLAGS.HOLLOW_BRUSH;
pub const WHITE_BRUSH = GET_STOCK_OBJECT_FLAGS.WHITE_BRUSH;
pub const BLACK_PEN = GET_STOCK_OBJECT_FLAGS.BLACK_PEN;
pub const DC_PEN = GET_STOCK_OBJECT_FLAGS.DC_PEN;
pub const NULL_PEN = GET_STOCK_OBJECT_FLAGS.NULL_PEN;
pub const WHITE_PEN = GET_STOCK_OBJECT_FLAGS.WHITE_PEN;
pub const ANSI_FIXED_FONT = GET_STOCK_OBJECT_FLAGS.ANSI_FIXED_FONT;
pub const ANSI_VAR_FONT = GET_STOCK_OBJECT_FLAGS.ANSI_VAR_FONT;
pub const DEVICE_DEFAULT_FONT = GET_STOCK_OBJECT_FLAGS.DEVICE_DEFAULT_FONT;
pub const DEFAULT_GUI_FONT = GET_STOCK_OBJECT_FLAGS.DEFAULT_GUI_FONT;
pub const OEM_FIXED_FONT = GET_STOCK_OBJECT_FLAGS.OEM_FIXED_FONT;
pub const SYSTEM_FONT = GET_STOCK_OBJECT_FLAGS.SYSTEM_FONT;
pub const SYSTEM_FIXED_FONT = GET_STOCK_OBJECT_FLAGS.SYSTEM_FIXED_FONT;
pub const DEFAULT_PALETTE = GET_STOCK_OBJECT_FLAGS.DEFAULT_PALETTE;

pub const MODIFY_WORLD_TRANSFORM_MODE = enum(u32) {
    IDENTITY = 1,
    LEFTMULTIPLY = 2,
    RIGHTMULTIPLY = 3,
};
pub const MWT_IDENTITY = MODIFY_WORLD_TRANSFORM_MODE.IDENTITY;
pub const MWT_LEFTMULTIPLY = MODIFY_WORLD_TRANSFORM_MODE.LEFTMULTIPLY;
pub const MWT_RIGHTMULTIPLY = MODIFY_WORLD_TRANSFORM_MODE.RIGHTMULTIPLY;

pub const FONT_CLIP_PRECISION = enum(u32) {
    CHARACTER_PRECIS = 1,
    DEFAULT_PRECIS = 0,
    DFA_DISABLE = 64,
    EMBEDDED = 128,
    LH_ANGLES = 16,
    MASK = 15,
    STROKE_PRECIS = 2,
    TT_ALWAYS = 32,
    _,
    pub fn initFlags(o: struct {
        CHARACTER_PRECIS: u1 = 0,
        DEFAULT_PRECIS: u1 = 0,
        DFA_DISABLE: u1 = 0,
        EMBEDDED: u1 = 0,
        LH_ANGLES: u1 = 0,
        MASK: u1 = 0,
        STROKE_PRECIS: u1 = 0,
        TT_ALWAYS: u1 = 0,
    }) FONT_CLIP_PRECISION {
        return @as(FONT_CLIP_PRECISION, @enumFromInt((if (o.CHARACTER_PRECIS == 1) @intFromEnum(FONT_CLIP_PRECISION.CHARACTER_PRECIS) else 0) | (if (o.DEFAULT_PRECIS == 1) @intFromEnum(FONT_CLIP_PRECISION.DEFAULT_PRECIS) else 0) | (if (o.DFA_DISABLE == 1) @intFromEnum(FONT_CLIP_PRECISION.DFA_DISABLE) else 0) | (if (o.EMBEDDED == 1) @intFromEnum(FONT_CLIP_PRECISION.EMBEDDED) else 0) | (if (o.LH_ANGLES == 1) @intFromEnum(FONT_CLIP_PRECISION.LH_ANGLES) else 0) | (if (o.MASK == 1) @intFromEnum(FONT_CLIP_PRECISION.MASK) else 0) | (if (o.STROKE_PRECIS == 1) @intFromEnum(FONT_CLIP_PRECISION.STROKE_PRECIS) else 0) | (if (o.TT_ALWAYS == 1) @intFromEnum(FONT_CLIP_PRECISION.TT_ALWAYS) else 0)));
    }
};
pub const CLIP_CHARACTER_PRECIS = FONT_CLIP_PRECISION.CHARACTER_PRECIS;
pub const CLIP_DEFAULT_PRECIS = FONT_CLIP_PRECISION.DEFAULT_PRECIS;
pub const CLIP_DFA_DISABLE = FONT_CLIP_PRECISION.DFA_DISABLE;
pub const CLIP_EMBEDDED = FONT_CLIP_PRECISION.EMBEDDED;
pub const CLIP_LH_ANGLES = FONT_CLIP_PRECISION.LH_ANGLES;
pub const CLIP_MASK = FONT_CLIP_PRECISION.MASK;
pub const CLIP_STROKE_PRECIS = FONT_CLIP_PRECISION.STROKE_PRECIS;
pub const CLIP_TT_ALWAYS = FONT_CLIP_PRECISION.TT_ALWAYS;

pub const CREATE_POLYGON_RGN_MODE = enum(u32) {
    ALTERNATE = 1,
    WINDING = 2,
};
pub const ALTERNATE = CREATE_POLYGON_RGN_MODE.ALTERNATE;
pub const WINDING = CREATE_POLYGON_RGN_MODE.WINDING;

pub const EMBEDDED_FONT_PRIV_STATUS = enum(u32) {
    PREVIEWPRINT = 1,
    EDITABLE = 2,
    INSTALLABLE = 3,
    NOEMBEDDING = 4,
};
pub const EMBED_PREVIEWPRINT = EMBEDDED_FONT_PRIV_STATUS.PREVIEWPRINT;
pub const EMBED_EDITABLE = EMBEDDED_FONT_PRIV_STATUS.EDITABLE;
pub const EMBED_INSTALLABLE = EMBEDDED_FONT_PRIV_STATUS.INSTALLABLE;
pub const EMBED_NOEMBEDDING = EMBEDDED_FONT_PRIV_STATUS.NOEMBEDDING;

pub const MONITOR_FROM_FLAGS = enum(u32) {
    NEAREST = 2,
    NULL = 0,
    PRIMARY = 1,
};
pub const MONITOR_DEFAULTTONEAREST = MONITOR_FROM_FLAGS.NEAREST;
pub const MONITOR_DEFAULTTONULL = MONITOR_FROM_FLAGS.NULL;
pub const MONITOR_DEFAULTTOPRIMARY = MONITOR_FROM_FLAGS.PRIMARY;

pub const FONT_RESOURCE_CHARACTERISTICS = enum(u32) {
    PRIVATE = 16,
    NOT_ENUM = 32,
};
pub const FR_PRIVATE = FONT_RESOURCE_CHARACTERISTICS.PRIVATE;
pub const FR_NOT_ENUM = FONT_RESOURCE_CHARACTERISTICS.NOT_ENUM;

pub const DC_LAYOUT = enum(u32) {
    BITMAPORIENTATIONPRESERVED = 8,
    RTL = 1,
    _,
    pub fn initFlags(o: struct {
        BITMAPORIENTATIONPRESERVED: u1 = 0,
        RTL: u1 = 0,
    }) DC_LAYOUT {
        return @as(DC_LAYOUT, @enumFromInt((if (o.BITMAPORIENTATIONPRESERVED == 1) @intFromEnum(DC_LAYOUT.BITMAPORIENTATIONPRESERVED) else 0) | (if (o.RTL == 1) @intFromEnum(DC_LAYOUT.RTL) else 0)));
    }
};
pub const LAYOUT_BITMAPORIENTATIONPRESERVED = DC_LAYOUT.BITMAPORIENTATIONPRESERVED;
pub const LAYOUT_RTL = DC_LAYOUT.RTL;

pub const GET_DEVICE_CAPS_INDEX = enum(u32) {
    DRIVERVERSION = 0,
    TECHNOLOGY = 2,
    HORZSIZE = 4,
    VERTSIZE = 6,
    HORZRES = 8,
    VERTRES = 10,
    BITSPIXEL = 12,
    PLANES = 14,
    NUMBRUSHES = 16,
    NUMPENS = 18,
    NUMMARKERS = 20,
    NUMFONTS = 22,
    NUMCOLORS = 24,
    PDEVICESIZE = 26,
    CURVECAPS = 28,
    LINECAPS = 30,
    POLYGONALCAPS = 32,
    TEXTCAPS = 34,
    CLIPCAPS = 36,
    RASTERCAPS = 38,
    ASPECTX = 40,
    ASPECTY = 42,
    ASPECTXY = 44,
    LOGPIXELSX = 88,
    LOGPIXELSY = 90,
    SIZEPALETTE = 104,
    NUMRESERVED = 106,
    COLORRES = 108,
    PHYSICALWIDTH = 110,
    PHYSICALHEIGHT = 111,
    PHYSICALOFFSETX = 112,
    PHYSICALOFFSETY = 113,
    SCALINGFACTORX = 114,
    SCALINGFACTORY = 115,
    VREFRESH = 116,
    DESKTOPVERTRES = 117,
    DESKTOPHORZRES = 118,
    BLTALIGNMENT = 119,
    SHADEBLENDCAPS = 120,
    COLORMGMTCAPS = 121,
};
pub const DRIVERVERSION = GET_DEVICE_CAPS_INDEX.DRIVERVERSION;
pub const TECHNOLOGY = GET_DEVICE_CAPS_INDEX.TECHNOLOGY;
pub const HORZSIZE = GET_DEVICE_CAPS_INDEX.HORZSIZE;
pub const VERTSIZE = GET_DEVICE_CAPS_INDEX.VERTSIZE;
pub const HORZRES = GET_DEVICE_CAPS_INDEX.HORZRES;
pub const VERTRES = GET_DEVICE_CAPS_INDEX.VERTRES;
pub const BITSPIXEL = GET_DEVICE_CAPS_INDEX.BITSPIXEL;
pub const PLANES = GET_DEVICE_CAPS_INDEX.PLANES;
pub const NUMBRUSHES = GET_DEVICE_CAPS_INDEX.NUMBRUSHES;
pub const NUMPENS = GET_DEVICE_CAPS_INDEX.NUMPENS;
pub const NUMMARKERS = GET_DEVICE_CAPS_INDEX.NUMMARKERS;
pub const NUMFONTS = GET_DEVICE_CAPS_INDEX.NUMFONTS;
pub const NUMCOLORS = GET_DEVICE_CAPS_INDEX.NUMCOLORS;
pub const PDEVICESIZE = GET_DEVICE_CAPS_INDEX.PDEVICESIZE;
pub const CURVECAPS = GET_DEVICE_CAPS_INDEX.CURVECAPS;
pub const LINECAPS = GET_DEVICE_CAPS_INDEX.LINECAPS;
pub const POLYGONALCAPS = GET_DEVICE_CAPS_INDEX.POLYGONALCAPS;
pub const TEXTCAPS = GET_DEVICE_CAPS_INDEX.TEXTCAPS;
pub const CLIPCAPS = GET_DEVICE_CAPS_INDEX.CLIPCAPS;
pub const RASTERCAPS = GET_DEVICE_CAPS_INDEX.RASTERCAPS;
pub const ASPECTX = GET_DEVICE_CAPS_INDEX.ASPECTX;
pub const ASPECTY = GET_DEVICE_CAPS_INDEX.ASPECTY;
pub const ASPECTXY = GET_DEVICE_CAPS_INDEX.ASPECTXY;
pub const LOGPIXELSX = GET_DEVICE_CAPS_INDEX.LOGPIXELSX;
pub const LOGPIXELSY = GET_DEVICE_CAPS_INDEX.LOGPIXELSY;
pub const SIZEPALETTE = GET_DEVICE_CAPS_INDEX.SIZEPALETTE;
pub const NUMRESERVED = GET_DEVICE_CAPS_INDEX.NUMRESERVED;
pub const COLORRES = GET_DEVICE_CAPS_INDEX.COLORRES;
pub const PHYSICALWIDTH = GET_DEVICE_CAPS_INDEX.PHYSICALWIDTH;
pub const PHYSICALHEIGHT = GET_DEVICE_CAPS_INDEX.PHYSICALHEIGHT;
pub const PHYSICALOFFSETX = GET_DEVICE_CAPS_INDEX.PHYSICALOFFSETX;
pub const PHYSICALOFFSETY = GET_DEVICE_CAPS_INDEX.PHYSICALOFFSETY;
pub const SCALINGFACTORX = GET_DEVICE_CAPS_INDEX.SCALINGFACTORX;
pub const SCALINGFACTORY = GET_DEVICE_CAPS_INDEX.SCALINGFACTORY;
pub const VREFRESH = GET_DEVICE_CAPS_INDEX.VREFRESH;
pub const DESKTOPVERTRES = GET_DEVICE_CAPS_INDEX.DESKTOPVERTRES;
pub const DESKTOPHORZRES = GET_DEVICE_CAPS_INDEX.DESKTOPHORZRES;
pub const BLTALIGNMENT = GET_DEVICE_CAPS_INDEX.BLTALIGNMENT;
pub const SHADEBLENDCAPS = GET_DEVICE_CAPS_INDEX.SHADEBLENDCAPS;
pub const COLORMGMTCAPS = GET_DEVICE_CAPS_INDEX.COLORMGMTCAPS;

pub const FONT_OUTPUT_PRECISION = enum(u32) {
    CHARACTER_PRECIS = 2,
    DEFAULT_PRECIS = 0,
    DEVICE_PRECIS = 5,
    OUTLINE_PRECIS = 8,
    PS_ONLY_PRECIS = 10,
    RASTER_PRECIS = 6,
    STRING_PRECIS = 1,
    STROKE_PRECIS = 3,
    TT_ONLY_PRECIS = 7,
    TT_PRECIS = 4,
};
pub const OUT_CHARACTER_PRECIS = FONT_OUTPUT_PRECISION.CHARACTER_PRECIS;
pub const OUT_DEFAULT_PRECIS = FONT_OUTPUT_PRECISION.DEFAULT_PRECIS;
pub const OUT_DEVICE_PRECIS = FONT_OUTPUT_PRECISION.DEVICE_PRECIS;
pub const OUT_OUTLINE_PRECIS = FONT_OUTPUT_PRECISION.OUTLINE_PRECIS;
pub const OUT_PS_ONLY_PRECIS = FONT_OUTPUT_PRECISION.PS_ONLY_PRECIS;
pub const OUT_RASTER_PRECIS = FONT_OUTPUT_PRECISION.RASTER_PRECIS;
pub const OUT_STRING_PRECIS = FONT_OUTPUT_PRECISION.STRING_PRECIS;
pub const OUT_STROKE_PRECIS = FONT_OUTPUT_PRECISION.STROKE_PRECIS;
pub const OUT_TT_ONLY_PRECIS = FONT_OUTPUT_PRECISION.TT_ONLY_PRECIS;
pub const OUT_TT_PRECIS = FONT_OUTPUT_PRECISION.TT_PRECIS;

pub const ARC_DIRECTION = enum(u32) {
    OUNTERCLOCKWISE = 1,
    LOCKWISE = 2,
};
pub const AD_COUNTERCLOCKWISE = ARC_DIRECTION.OUNTERCLOCKWISE;
pub const AD_CLOCKWISE = ARC_DIRECTION.LOCKWISE;

pub const TTLOAD_EMBEDDED_FONT_STATUS = enum(u32) {
    SUBSETTED = 1,
    IN_SYSSTARTUP = 2,
    _,
    pub fn initFlags(o: struct {
        SUBSETTED: u1 = 0,
        IN_SYSSTARTUP: u1 = 0,
    }) TTLOAD_EMBEDDED_FONT_STATUS {
        return @as(TTLOAD_EMBEDDED_FONT_STATUS, @enumFromInt((if (o.SUBSETTED == 1) @intFromEnum(TTLOAD_EMBEDDED_FONT_STATUS.SUBSETTED) else 0) | (if (o.IN_SYSSTARTUP == 1) @intFromEnum(TTLOAD_EMBEDDED_FONT_STATUS.IN_SYSSTARTUP) else 0)));
    }
};
pub const TTLOAD_FONT_SUBSETTED = TTLOAD_EMBEDDED_FONT_STATUS.SUBSETTED;
pub const TTLOAD_FONT_IN_SYSSTARTUP = TTLOAD_EMBEDDED_FONT_STATUS.IN_SYSSTARTUP;

pub const STRETCH_BLT_MODE = enum(u32) {
    BLACKONWHITE = 1,
    COLORONCOLOR = 3,
    HALFTONE = 4,
    // STRETCH_ANDSCANS = 1, this enum value conflicts with BLACKONWHITE
    // STRETCH_DELETESCANS = 3, this enum value conflicts with COLORONCOLOR
    // STRETCH_HALFTONE = 4, this enum value conflicts with HALFTONE
    STRETCH_ORSCANS = 2,
    // WHITEONBLACK = 2, this enum value conflicts with STRETCH_ORSCANS
};
pub const BLACKONWHITE = STRETCH_BLT_MODE.BLACKONWHITE;
pub const COLORONCOLOR = STRETCH_BLT_MODE.COLORONCOLOR;
pub const HALFTONE = STRETCH_BLT_MODE.HALFTONE;
pub const STRETCH_ANDSCANS = STRETCH_BLT_MODE.BLACKONWHITE;
pub const STRETCH_DELETESCANS = STRETCH_BLT_MODE.COLORONCOLOR;
pub const STRETCH_HALFTONE = STRETCH_BLT_MODE.HALFTONE;
pub const STRETCH_ORSCANS = STRETCH_BLT_MODE.STRETCH_ORSCANS;
pub const WHITEONBLACK = STRETCH_BLT_MODE.STRETCH_ORSCANS;

pub const FONT_QUALITY = enum(u32) {
    ANTIALIASED_QUALITY = 4,
    CLEARTYPE_QUALITY = 5,
    DEFAULT_QUALITY = 0,
    DRAFT_QUALITY = 1,
    NONANTIALIASED_QUALITY = 3,
    PROOF_QUALITY = 2,
};
pub const ANTIALIASED_QUALITY = FONT_QUALITY.ANTIALIASED_QUALITY;
pub const CLEARTYPE_QUALITY = FONT_QUALITY.CLEARTYPE_QUALITY;
pub const DEFAULT_QUALITY = FONT_QUALITY.DEFAULT_QUALITY;
pub const DRAFT_QUALITY = FONT_QUALITY.DRAFT_QUALITY;
pub const NONANTIALIASED_QUALITY = FONT_QUALITY.NONANTIALIASED_QUALITY;
pub const PROOF_QUALITY = FONT_QUALITY.PROOF_QUALITY;

pub const BACKGROUND_MODE = enum(u32) {
    OPAQUE = 2,
    TRANSPARENT = 1,
};
pub const OPAQUE = BACKGROUND_MODE.OPAQUE;
pub const TRANSPARENT = BACKGROUND_MODE.TRANSPARENT;

pub const GET_CHARACTER_PLACEMENT_FLAGS = enum(u32) {
    CLASSIN = 524288,
    DIACRITIC = 256,
    DISPLAYZWG = 4194304,
    GLYPHSHAPE = 16,
    JUSTIFY = 65536,
    KASHIDA = 1024,
    LIGATE = 32,
    MAXEXTENT = 1048576,
    NEUTRALOVERRIDE = 33554432,
    NUMERICOVERRIDE = 16777216,
    NUMERICSLATIN = 67108864,
    NUMERICSLOCAL = 134217728,
    REORDER = 2,
    SYMSWAPOFF = 8388608,
    USEKERNING = 8,
    _,
    pub fn initFlags(o: struct {
        CLASSIN: u1 = 0,
        DIACRITIC: u1 = 0,
        DISPLAYZWG: u1 = 0,
        GLYPHSHAPE: u1 = 0,
        JUSTIFY: u1 = 0,
        KASHIDA: u1 = 0,
        LIGATE: u1 = 0,
        MAXEXTENT: u1 = 0,
        NEUTRALOVERRIDE: u1 = 0,
        NUMERICOVERRIDE: u1 = 0,
        NUMERICSLATIN: u1 = 0,
        NUMERICSLOCAL: u1 = 0,
        REORDER: u1 = 0,
        SYMSWAPOFF: u1 = 0,
        USEKERNING: u1 = 0,
    }) GET_CHARACTER_PLACEMENT_FLAGS {
        return @as(GET_CHARACTER_PLACEMENT_FLAGS, @enumFromInt((if (o.CLASSIN == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.CLASSIN) else 0) | (if (o.DIACRITIC == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.DIACRITIC) else 0) | (if (o.DISPLAYZWG == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.DISPLAYZWG) else 0) | (if (o.GLYPHSHAPE == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.GLYPHSHAPE) else 0) | (if (o.JUSTIFY == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.JUSTIFY) else 0) | (if (o.KASHIDA == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.KASHIDA) else 0) | (if (o.LIGATE == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.LIGATE) else 0) | (if (o.MAXEXTENT == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.MAXEXTENT) else 0) | (if (o.NEUTRALOVERRIDE == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.NEUTRALOVERRIDE) else 0) | (if (o.NUMERICOVERRIDE == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.NUMERICOVERRIDE) else 0) | (if (o.NUMERICSLATIN == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.NUMERICSLATIN) else 0) | (if (o.NUMERICSLOCAL == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.NUMERICSLOCAL) else 0) | (if (o.REORDER == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.REORDER) else 0) | (if (o.SYMSWAPOFF == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.SYMSWAPOFF) else 0) | (if (o.USEKERNING == 1) @intFromEnum(GET_CHARACTER_PLACEMENT_FLAGS.USEKERNING) else 0)));
    }
};
pub const GCP_CLASSIN = GET_CHARACTER_PLACEMENT_FLAGS.CLASSIN;
pub const GCP_DIACRITIC = GET_CHARACTER_PLACEMENT_FLAGS.DIACRITIC;
pub const GCP_DISPLAYZWG = GET_CHARACTER_PLACEMENT_FLAGS.DISPLAYZWG;
pub const GCP_GLYPHSHAPE = GET_CHARACTER_PLACEMENT_FLAGS.GLYPHSHAPE;
pub const GCP_JUSTIFY = GET_CHARACTER_PLACEMENT_FLAGS.JUSTIFY;
pub const GCP_KASHIDA = GET_CHARACTER_PLACEMENT_FLAGS.KASHIDA;
pub const GCP_LIGATE = GET_CHARACTER_PLACEMENT_FLAGS.LIGATE;
pub const GCP_MAXEXTENT = GET_CHARACTER_PLACEMENT_FLAGS.MAXEXTENT;
pub const GCP_NEUTRALOVERRIDE = GET_CHARACTER_PLACEMENT_FLAGS.NEUTRALOVERRIDE;
pub const GCP_NUMERICOVERRIDE = GET_CHARACTER_PLACEMENT_FLAGS.NUMERICOVERRIDE;
pub const GCP_NUMERICSLATIN = GET_CHARACTER_PLACEMENT_FLAGS.NUMERICSLATIN;
pub const GCP_NUMERICSLOCAL = GET_CHARACTER_PLACEMENT_FLAGS.NUMERICSLOCAL;
pub const GCP_REORDER = GET_CHARACTER_PLACEMENT_FLAGS.REORDER;
pub const GCP_SYMSWAPOFF = GET_CHARACTER_PLACEMENT_FLAGS.SYMSWAPOFF;
pub const GCP_USEKERNING = GET_CHARACTER_PLACEMENT_FLAGS.USEKERNING;

pub const DRAW_EDGE_FLAGS = enum(u32) {
    ADJUST = 8192,
    BOTTOM = 8,
    BOTTOMLEFT = 9,
    BOTTOMRIGHT = 12,
    DIAGONAL = 16,
    DIAGONAL_ENDBOTTOMLEFT = 25,
    DIAGONAL_ENDBOTTOMRIGHT = 28,
    DIAGONAL_ENDTOPLEFT = 19,
    DIAGONAL_ENDTOPRIGHT = 22,
    FLAT = 16384,
    LEFT = 1,
    MIDDLE = 2048,
    MONO = 32768,
    RECT = 15,
    RIGHT = 4,
    SOFT = 4096,
    TOP = 2,
    TOPLEFT = 3,
    TOPRIGHT = 6,
    _,
    pub fn initFlags(o: struct {
        ADJUST: u1 = 0,
        BOTTOM: u1 = 0,
        BOTTOMLEFT: u1 = 0,
        BOTTOMRIGHT: u1 = 0,
        DIAGONAL: u1 = 0,
        DIAGONAL_ENDBOTTOMLEFT: u1 = 0,
        DIAGONAL_ENDBOTTOMRIGHT: u1 = 0,
        DIAGONAL_ENDTOPLEFT: u1 = 0,
        DIAGONAL_ENDTOPRIGHT: u1 = 0,
        FLAT: u1 = 0,
        LEFT: u1 = 0,
        MIDDLE: u1 = 0,
        MONO: u1 = 0,
        RECT: u1 = 0,
        RIGHT: u1 = 0,
        SOFT: u1 = 0,
        TOP: u1 = 0,
        TOPLEFT: u1 = 0,
        TOPRIGHT: u1 = 0,
    }) DRAW_EDGE_FLAGS {
        return @as(DRAW_EDGE_FLAGS, @enumFromInt((if (o.ADJUST == 1) @intFromEnum(DRAW_EDGE_FLAGS.ADJUST) else 0) | (if (o.BOTTOM == 1) @intFromEnum(DRAW_EDGE_FLAGS.BOTTOM) else 0) | (if (o.BOTTOMLEFT == 1) @intFromEnum(DRAW_EDGE_FLAGS.BOTTOMLEFT) else 0) | (if (o.BOTTOMRIGHT == 1) @intFromEnum(DRAW_EDGE_FLAGS.BOTTOMRIGHT) else 0) | (if (o.DIAGONAL == 1) @intFromEnum(DRAW_EDGE_FLAGS.DIAGONAL) else 0) | (if (o.DIAGONAL_ENDBOTTOMLEFT == 1) @intFromEnum(DRAW_EDGE_FLAGS.DIAGONAL_ENDBOTTOMLEFT) else 0) | (if (o.DIAGONAL_ENDBOTTOMRIGHT == 1) @intFromEnum(DRAW_EDGE_FLAGS.DIAGONAL_ENDBOTTOMRIGHT) else 0) | (if (o.DIAGONAL_ENDTOPLEFT == 1) @intFromEnum(DRAW_EDGE_FLAGS.DIAGONAL_ENDTOPLEFT) else 0) | (if (o.DIAGONAL_ENDTOPRIGHT == 1) @intFromEnum(DRAW_EDGE_FLAGS.DIAGONAL_ENDTOPRIGHT) else 0) | (if (o.FLAT == 1) @intFromEnum(DRAW_EDGE_FLAGS.FLAT) else 0) | (if (o.LEFT == 1) @intFromEnum(DRAW_EDGE_FLAGS.LEFT) else 0) | (if (o.MIDDLE == 1) @intFromEnum(DRAW_EDGE_FLAGS.MIDDLE) else 0) | (if (o.MONO == 1) @intFromEnum(DRAW_EDGE_FLAGS.MONO) else 0) | (if (o.RECT == 1) @intFromEnum(DRAW_EDGE_FLAGS.RECT) else 0) | (if (o.RIGHT == 1) @intFromEnum(DRAW_EDGE_FLAGS.RIGHT) else 0) | (if (o.SOFT == 1) @intFromEnum(DRAW_EDGE_FLAGS.SOFT) else 0) | (if (o.TOP == 1) @intFromEnum(DRAW_EDGE_FLAGS.TOP) else 0) | (if (o.TOPLEFT == 1) @intFromEnum(DRAW_EDGE_FLAGS.TOPLEFT) else 0) | (if (o.TOPRIGHT == 1) @intFromEnum(DRAW_EDGE_FLAGS.TOPRIGHT) else 0)));
    }
};
pub const BF_ADJUST = DRAW_EDGE_FLAGS.ADJUST;
pub const BF_BOTTOM = DRAW_EDGE_FLAGS.BOTTOM;
pub const BF_BOTTOMLEFT = DRAW_EDGE_FLAGS.BOTTOMLEFT;
pub const BF_BOTTOMRIGHT = DRAW_EDGE_FLAGS.BOTTOMRIGHT;
pub const BF_DIAGONAL = DRAW_EDGE_FLAGS.DIAGONAL;
pub const BF_DIAGONAL_ENDBOTTOMLEFT = DRAW_EDGE_FLAGS.DIAGONAL_ENDBOTTOMLEFT;
pub const BF_DIAGONAL_ENDBOTTOMRIGHT = DRAW_EDGE_FLAGS.DIAGONAL_ENDBOTTOMRIGHT;
pub const BF_DIAGONAL_ENDTOPLEFT = DRAW_EDGE_FLAGS.DIAGONAL_ENDTOPLEFT;
pub const BF_DIAGONAL_ENDTOPRIGHT = DRAW_EDGE_FLAGS.DIAGONAL_ENDTOPRIGHT;
pub const BF_FLAT = DRAW_EDGE_FLAGS.FLAT;
pub const BF_LEFT = DRAW_EDGE_FLAGS.LEFT;
pub const BF_MIDDLE = DRAW_EDGE_FLAGS.MIDDLE;
pub const BF_MONO = DRAW_EDGE_FLAGS.MONO;
pub const BF_RECT = DRAW_EDGE_FLAGS.RECT;
pub const BF_RIGHT = DRAW_EDGE_FLAGS.RIGHT;
pub const BF_SOFT = DRAW_EDGE_FLAGS.SOFT;
pub const BF_TOP = DRAW_EDGE_FLAGS.TOP;
pub const BF_TOPLEFT = DRAW_EDGE_FLAGS.TOPLEFT;
pub const BF_TOPRIGHT = DRAW_EDGE_FLAGS.TOPRIGHT;

pub const FONT_LICENSE_PRIVS = enum(u32) {
    PREVIEWPRINT = 4,
    EDITABLE = 8,
    INSTALLABLE = 0,
    NOEMBEDDING = 2,
    // DEFAULT = 0, this enum value conflicts with INSTALLABLE
};
pub const LICENSE_PREVIEWPRINT = FONT_LICENSE_PRIVS.PREVIEWPRINT;
pub const LICENSE_EDITABLE = FONT_LICENSE_PRIVS.EDITABLE;
pub const LICENSE_INSTALLABLE = FONT_LICENSE_PRIVS.INSTALLABLE;
pub const LICENSE_NOEMBEDDING = FONT_LICENSE_PRIVS.NOEMBEDDING;
pub const LICENSE_DEFAULT = FONT_LICENSE_PRIVS.INSTALLABLE;

pub const GRADIENT_FILL = enum(u32) {
    RECT_H = 0,
    RECT_V = 1,
    TRIANGLE = 2,
};
pub const GRADIENT_FILL_RECT_H = GRADIENT_FILL.RECT_H;
pub const GRADIENT_FILL_RECT_V = GRADIENT_FILL.RECT_V;
pub const GRADIENT_FILL_TRIANGLE = GRADIENT_FILL.TRIANGLE;

pub const CREATE_FONT_PACKAGE_SUBSET_ENCODING = enum(u32) {
    STD_MAC_CHAR_SET = 0,
    // SYMBOL_CHAR_SET = 0, this enum value conflicts with STD_MAC_CHAR_SET
    UNICODE_CHAR_SET = 1,
};
pub const TTFCFP_STD_MAC_CHAR_SET = CREATE_FONT_PACKAGE_SUBSET_ENCODING.STD_MAC_CHAR_SET;
pub const TTFCFP_SYMBOL_CHAR_SET = CREATE_FONT_PACKAGE_SUBSET_ENCODING.STD_MAC_CHAR_SET;
pub const TTFCFP_UNICODE_CHAR_SET = CREATE_FONT_PACKAGE_SUBSET_ENCODING.UNICODE_CHAR_SET;

pub const EXT_FLOOD_FILL_TYPE = enum(u32) {
    BORDER = 0,
    SURFACE = 1,
};
pub const FLOODFILLBORDER = EXT_FLOOD_FILL_TYPE.BORDER;
pub const FLOODFILLSURFACE = EXT_FLOOD_FILL_TYPE.SURFACE;

pub const HATCH_BRUSH_STYLE = enum(u32) {
    BDIAGONAL = 3,
    CROSS = 4,
    DIAGCROSS = 5,
    FDIAGONAL = 2,
    HORIZONTAL = 0,
    VERTICAL = 1,
};
pub const HS_BDIAGONAL = HATCH_BRUSH_STYLE.BDIAGONAL;
pub const HS_CROSS = HATCH_BRUSH_STYLE.CROSS;
pub const HS_DIAGCROSS = HATCH_BRUSH_STYLE.DIAGCROSS;
pub const HS_FDIAGONAL = HATCH_BRUSH_STYLE.FDIAGONAL;
pub const HS_HORIZONTAL = HATCH_BRUSH_STYLE.HORIZONTAL;
pub const HS_VERTICAL = HATCH_BRUSH_STYLE.VERTICAL;

pub const DRAW_CAPTION_FLAGS = enum(u32) {
    ACTIVE = 1,
    BUTTONS = 4096,
    GRADIENT = 32,
    ICON = 4,
    INBUTTON = 16,
    SMALLCAP = 2,
    TEXT = 8,
    _,
    pub fn initFlags(o: struct {
        ACTIVE: u1 = 0,
        BUTTONS: u1 = 0,
        GRADIENT: u1 = 0,
        ICON: u1 = 0,
        INBUTTON: u1 = 0,
        SMALLCAP: u1 = 0,
        TEXT: u1 = 0,
    }) DRAW_CAPTION_FLAGS {
        return @as(DRAW_CAPTION_FLAGS, @enumFromInt((if (o.ACTIVE == 1) @intFromEnum(DRAW_CAPTION_FLAGS.ACTIVE) else 0) | (if (o.BUTTONS == 1) @intFromEnum(DRAW_CAPTION_FLAGS.BUTTONS) else 0) | (if (o.GRADIENT == 1) @intFromEnum(DRAW_CAPTION_FLAGS.GRADIENT) else 0) | (if (o.ICON == 1) @intFromEnum(DRAW_CAPTION_FLAGS.ICON) else 0) | (if (o.INBUTTON == 1) @intFromEnum(DRAW_CAPTION_FLAGS.INBUTTON) else 0) | (if (o.SMALLCAP == 1) @intFromEnum(DRAW_CAPTION_FLAGS.SMALLCAP) else 0) | (if (o.TEXT == 1) @intFromEnum(DRAW_CAPTION_FLAGS.TEXT) else 0)));
    }
};
pub const DC_ACTIVE = DRAW_CAPTION_FLAGS.ACTIVE;
pub const DC_BUTTONS = DRAW_CAPTION_FLAGS.BUTTONS;
pub const DC_GRADIENT = DRAW_CAPTION_FLAGS.GRADIENT;
pub const DC_ICON = DRAW_CAPTION_FLAGS.ICON;
pub const DC_INBUTTON = DRAW_CAPTION_FLAGS.INBUTTON;
pub const DC_SMALLCAP = DRAW_CAPTION_FLAGS.SMALLCAP;
pub const DC_TEXT = DRAW_CAPTION_FLAGS.TEXT;

pub const SYSTEM_PALETTE_USE = enum(u32) {
    NOSTATIC = 2,
    NOSTATIC256 = 3,
    STATIC = 1,
};
pub const SYSPAL_NOSTATIC = SYSTEM_PALETTE_USE.NOSTATIC;
pub const SYSPAL_NOSTATIC256 = SYSTEM_PALETTE_USE.NOSTATIC256;
pub const SYSPAL_STATIC = SYSTEM_PALETTE_USE.STATIC;

pub const GRAPHICS_MODE = enum(u32) {
    COMPATIBLE = 1,
    ADVANCED = 2,
};
pub const GM_COMPATIBLE = GRAPHICS_MODE.COMPATIBLE;
pub const GM_ADVANCED = GRAPHICS_MODE.ADVANCED;

pub const FONT_PITCH_AND_FAMILY = enum(u32) {
    DECORATIVE = 80,
    DONTCARE = 0,
    MODERN = 48,
    ROMAN = 16,
    SCRIPT = 64,
    SWISS = 32,
};
pub const FF_DECORATIVE = FONT_PITCH_AND_FAMILY.DECORATIVE;
pub const FF_DONTCARE = FONT_PITCH_AND_FAMILY.DONTCARE;
pub const FF_MODERN = FONT_PITCH_AND_FAMILY.MODERN;
pub const FF_ROMAN = FONT_PITCH_AND_FAMILY.ROMAN;
pub const FF_SCRIPT = FONT_PITCH_AND_FAMILY.SCRIPT;
pub const FF_SWISS = FONT_PITCH_AND_FAMILY.SWISS;

pub const CREATE_FONT_PACKAGE_SUBSET_PLATFORM = enum(u32) {
    UNICODE_PLATFORMID = 0,
    ISO_PLATFORMID = 2,
};
pub const TTFCFP_UNICODE_PLATFORMID = CREATE_FONT_PACKAGE_SUBSET_PLATFORM.UNICODE_PLATFORMID;
pub const TTFCFP_ISO_PLATFORMID = CREATE_FONT_PACKAGE_SUBSET_PLATFORM.ISO_PLATFORMID;

pub const HDC_MAP_MODE = enum(u32) {
    ANISOTROPIC = 8,
    HIENGLISH = 5,
    HIMETRIC = 3,
    ISOTROPIC = 7,
    LOENGLISH = 4,
    LOMETRIC = 2,
    TEXT = 1,
    TWIPS = 6,
};
pub const MM_ANISOTROPIC = HDC_MAP_MODE.ANISOTROPIC;
pub const MM_HIENGLISH = HDC_MAP_MODE.HIENGLISH;
pub const MM_HIMETRIC = HDC_MAP_MODE.HIMETRIC;
pub const MM_ISOTROPIC = HDC_MAP_MODE.ISOTROPIC;
pub const MM_LOENGLISH = HDC_MAP_MODE.LOENGLISH;
pub const MM_LOMETRIC = HDC_MAP_MODE.LOMETRIC;
pub const MM_TEXT = HDC_MAP_MODE.TEXT;
pub const MM_TWIPS = HDC_MAP_MODE.TWIPS;

// TODO: this type has a FreeFunc 'ReleaseDC', what can Zig do with this information?
pub const HDC = *opaque {};

// TODO: this type has a FreeFunc 'DeleteDC', what can Zig do with this information?
//TODO: type 'CreatedHDC' is "AlsoUsableFor" 'HDC' which means this type is implicitly
//      convertible to 'HDC' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const CreatedHDC = HDC;

// TODO: this type has a FreeFunc 'DeleteObject', what can Zig do with this information?
//TODO: type 'HBITMAP' is "AlsoUsableFor" 'HGDIOBJ' which means this type is implicitly
//      convertible to 'HGDIOBJ' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const HBITMAP = HGDIOBJ;

// TODO: this type has a FreeFunc 'DeleteObject', what can Zig do with this information?
//TODO: type 'HRGN' is "AlsoUsableFor" 'HGDIOBJ' which means this type is implicitly
//      convertible to 'HGDIOBJ' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const HRGN = HGDIOBJ;

// TODO: this type has a FreeFunc 'DeleteObject', what can Zig do with this information?
//TODO: type 'HPEN' is "AlsoUsableFor" 'HGDIOBJ' which means this type is implicitly
//      convertible to 'HGDIOBJ' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const HPEN = HGDIOBJ;

// TODO: this type has a FreeFunc 'DeleteObject', what can Zig do with this information?
//TODO: type 'HBRUSH' is "AlsoUsableFor" 'HGDIOBJ' which means this type is implicitly
//      convertible to 'HGDIOBJ' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const HBRUSH = HGDIOBJ;

// TODO: this type has a FreeFunc 'DeleteObject', what can Zig do with this information?
//TODO: type 'HFONT' is "AlsoUsableFor" 'HGDIOBJ' which means this type is implicitly
//      convertible to 'HGDIOBJ' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const HFONT = HGDIOBJ;

// TODO: this type has a FreeFunc 'DeleteMetaFile', what can Zig do with this information?
pub const HMETAFILE = *opaque {};

// TODO: this type has a FreeFunc 'DeleteEnhMetaFile', what can Zig do with this information?
pub const HENHMETAFILE = *opaque {};

// TODO: this type has a FreeFunc 'DeleteObject', what can Zig do with this information?
//TODO: type 'HPALETTE' is "AlsoUsableFor" 'HGDIOBJ' which means this type is implicitly
//      convertible to 'HGDIOBJ' but not the other way around.  I don't know how to do this
//      in Zig so for now I'm just defining it as an alias
pub const HPALETTE = HGDIOBJ;

// TODO: this type has a FreeFunc 'DeleteMetaFile', what can Zig do with this information?
pub const HdcMetdataFileHandle = isize;

// TODO: this type has a FreeFunc 'DeleteEnhMetaFile', what can Zig do with this information?
pub const HdcMetdataEnhFileHandle = isize;

pub const HGDIOBJ = *opaque {};

pub const HMONITOR = *opaque {};

pub const XFORM = extern struct {
    eM11: f32,
    eM12: f32,
    eM21: f32,
    eM22: f32,
    eDx: f32,
    eDy: f32,
};

pub const BITMAP = extern struct {
    bmType: i32,
    bmWidth: i32,
    bmHeight: i32,
    bmWidthBytes: i32,
    bmPlanes: u16,
    bmBitsPixel: u16,
    bmBits: ?*anyopaque,
};

pub const RGBTRIPLE = extern struct {
    rgbtBlue: u8,
    rgbtGreen: u8,
    rgbtRed: u8,
};

pub const RGBQUAD = extern struct {
    rgbBlue: u8,
    rgbGreen: u8,
    rgbRed: u8,
    rgbReserved: u8,
};

pub const CIEXYZ = extern struct {
    ciexyzX: i32,
    ciexyzY: i32,
    ciexyzZ: i32,
};

pub const CIEXYZTRIPLE = extern struct {
    ciexyzRed: CIEXYZ,
    ciexyzGreen: CIEXYZ,
    ciexyzBlue: CIEXYZ,
};

pub const BITMAPCOREHEADER = extern struct {
    bcSize: u32,
    bcWidth: u16,
    bcHeight: u16,
    bcPlanes: u16,
    bcBitCount: u16,
};

pub const BITMAPINFOHEADER = extern struct {
    biSize: u32,
    biWidth: i32,
    biHeight: i32,
    biPlanes: u16,
    biBitCount: u16,
    biCompression: u32,
    biSizeImage: u32,
    biXPelsPerMeter: i32,
    biYPelsPerMeter: i32,
    biClrUsed: u32,
    biClrImportant: u32,
};

pub const BITMAPV4HEADER = extern struct {
    bV4Size: u32,
    bV4Width: i32,
    bV4Height: i32,
    bV4Planes: u16,
    bV4BitCount: u16,
    bV4V4Compression: u32,
    bV4SizeImage: u32,
    bV4XPelsPerMeter: i32,
    bV4YPelsPerMeter: i32,
    bV4ClrUsed: u32,
    bV4ClrImportant: u32,
    bV4RedMask: u32,
    bV4GreenMask: u32,
    bV4BlueMask: u32,
    bV4AlphaMask: u32,
    bV4CSType: u32,
    bV4Endpoints: CIEXYZTRIPLE,
    bV4GammaRed: u32,
    bV4GammaGreen: u32,
    bV4GammaBlue: u32,
};

pub const BITMAPV5HEADER = extern struct {
    bV5Size: u32,
    bV5Width: i32,
    bV5Height: i32,
    bV5Planes: u16,
    bV5BitCount: u16,
    bV5Compression: u32,
    bV5SizeImage: u32,
    bV5XPelsPerMeter: i32,
    bV5YPelsPerMeter: i32,
    bV5ClrUsed: u32,
    bV5ClrImportant: u32,
    bV5RedMask: u32,
    bV5GreenMask: u32,
    bV5BlueMask: u32,
    bV5AlphaMask: u32,
    bV5CSType: u32,
    bV5Endpoints: CIEXYZTRIPLE,
    bV5GammaRed: u32,
    bV5GammaGreen: u32,
    bV5GammaBlue: u32,
    bV5Intent: u32,
    bV5ProfileData: u32,
    bV5ProfileSize: u32,
    bV5Reserved: u32,
};

pub const BITMAPINFO = extern struct {
    bmiHeader: BITMAPINFOHEADER,
    bmiColors: [1]RGBQUAD,
};

pub const BITMAPCOREINFO = extern struct {
    bmciHeader: BITMAPCOREHEADER,
    bmciColors: [1]RGBTRIPLE,
};

pub const BITMAPFILEHEADER = extern struct {
    bfType: u16 align(2),
    bfSize: u32 align(2),
    bfReserved1: u16 align(2),
    bfReserved2: u16 align(2),
    bfOffBits: u32 align(2),
};

pub const HANDLETABLE = extern struct {
    objectHandle: [1]?HGDIOBJ,
};

pub const METARECORD = extern struct {
    rdSize: u32,
    rdFunction: u16,
    rdParm: [1]u16,
};

pub const METAHEADER = extern struct {
    mtType: u16 align(2),
    mtHeaderSize: u16 align(2),
    mtVersion: u16 align(2),
    mtSize: u32 align(2),
    mtNoObjects: u16 align(2),
    mtMaxRecord: u32 align(2),
    mtNoParameters: u16 align(2),
};

pub const ENHMETARECORD = extern struct {
    iType: u32,
    nSize: u32,
    dParm: [1]u32,
};

pub const ENHMETAHEADER = extern struct {
    iType: u32,
    nSize: u32,
    rclBounds: RECTL,
    rclFrame: RECTL,
    dSignature: u32,
    nVersion: u32,
    nBytes: u32,
    nRecords: u32,
    nHandles: u16,
    sReserved: u16,
    nDescription: u32,
    offDescription: u32,
    nPalEntries: u32,
    szlDevice: SIZE,
    szlMillimeters: SIZE,
    cbPixelFormat: u32,
    offPixelFormat: u32,
    bOpenGL: u32,
    szlMicrometers: SIZE,
};

pub const TEXTMETRICA = extern struct {
    tmHeight: i32,
    tmAscent: i32,
    tmDescent: i32,
    tmInternalLeading: i32,
    tmExternalLeading: i32,
    tmAveCharWidth: i32,
    tmMaxCharWidth: i32,
    tmWeight: i32,
    tmOverhang: i32,
    tmDigitizedAspectX: i32,
    tmDigitizedAspectY: i32,
    tmFirstChar: u8,
    tmLastChar: u8,
    tmDefaultChar: u8,
    tmBreakChar: u8,
    tmItalic: u8,
    tmUnderlined: u8,
    tmStruckOut: u8,
    tmPitchAndFamily: u8,
    tmCharSet: u8,
};

pub const TEXTMETRICW = extern struct {
    tmHeight: i32,
    tmAscent: i32,
    tmDescent: i32,
    tmInternalLeading: i32,
    tmExternalLeading: i32,
    tmAveCharWidth: i32,
    tmMaxCharWidth: i32,
    tmWeight: i32,
    tmOverhang: i32,
    tmDigitizedAspectX: i32,
    tmDigitizedAspectY: i32,
    tmFirstChar: u16,
    tmLastChar: u16,
    tmDefaultChar: u16,
    tmBreakChar: u16,
    tmItalic: u8,
    tmUnderlined: u8,
    tmStruckOut: u8,
    tmPitchAndFamily: u8,
    tmCharSet: u8,
};

pub const NEWTEXTMETRICA = extern struct {
    tmHeight: i32,
    tmAscent: i32,
    tmDescent: i32,
    tmInternalLeading: i32,
    tmExternalLeading: i32,
    tmAveCharWidth: i32,
    tmMaxCharWidth: i32,
    tmWeight: i32,
    tmOverhang: i32,
    tmDigitizedAspectX: i32,
    tmDigitizedAspectY: i32,
    tmFirstChar: u8,
    tmLastChar: u8,
    tmDefaultChar: u8,
    tmBreakChar: u8,
    tmItalic: u8,
    tmUnderlined: u8,
    tmStruckOut: u8,
    tmPitchAndFamily: u8,
    tmCharSet: u8,
    ntmFlags: u32,
    ntmSizeEM: u32,
    ntmCellHeight: u32,
    ntmAvgWidth: u32,
};

pub const NEWTEXTMETRICW = extern struct {
    tmHeight: i32,
    tmAscent: i32,
    tmDescent: i32,
    tmInternalLeading: i32,
    tmExternalLeading: i32,
    tmAveCharWidth: i32,
    tmMaxCharWidth: i32,
    tmWeight: i32,
    tmOverhang: i32,
    tmDigitizedAspectX: i32,
    tmDigitizedAspectY: i32,
    tmFirstChar: u16,
    tmLastChar: u16,
    tmDefaultChar: u16,
    tmBreakChar: u16,
    tmItalic: u8,
    tmUnderlined: u8,
    tmStruckOut: u8,
    tmPitchAndFamily: u8,
    tmCharSet: u8,
    ntmFlags: u32,
    ntmSizeEM: u32,
    ntmCellHeight: u32,
    ntmAvgWidth: u32,
};

pub const PELARRAY = extern struct {
    paXCount: i32,
    paYCount: i32,
    paXExt: i32,
    paYExt: i32,
    paRGBs: u8,
};

pub const LOGBRUSH = extern struct {
    lbStyle: u32,
    lbColor: u32,
    lbHatch: usize,
};

pub const LOGBRUSH32 = extern struct {
    lbStyle: u32,
    lbColor: u32,
    lbHatch: u32,
};

pub const LOGPEN = extern struct {
    lopnStyle: u32,
    lopnWidth: POINT,
    lopnColor: u32,
};

pub const EXTLOGPEN = extern struct {
    elpPenStyle: u32,
    elpWidth: u32,
    elpBrushStyle: u32,
    elpColor: u32,
    elpHatch: usize,
    elpNumEntries: u32,
    elpStyleEntry: [1]u32,
};

pub const EXTLOGPEN32 = extern struct {
    elpPenStyle: u32,
    elpWidth: u32,
    elpBrushStyle: u32,
    elpColor: u32,
    elpHatch: u32,
    elpNumEntries: u32,
    elpStyleEntry: [1]u32,
};

pub const PALETTEENTRY = extern struct {
    peRed: u8,
    peGreen: u8,
    peBlue: u8,
    peFlags: u8,
};

pub const LOGPALETTE = extern struct {
    palVersion: u16,
    palNumEntries: u16,
    palPalEntry: [1]PALETTEENTRY,
};

pub const LOGFONTA = extern struct {
    lfHeight: i32,
    lfWidth: i32,
    lfEscapement: i32,
    lfOrientation: i32,
    lfWeight: i32,
    lfItalic: u8,
    lfUnderline: u8,
    lfStrikeOut: u8,
    lfCharSet: u8,
    lfOutPrecision: u8,
    lfClipPrecision: u8,
    lfQuality: u8,
    lfPitchAndFamily: u8,
    lfFaceName: [32]CHAR,
};

pub const LOGFONTW = extern struct {
    lfHeight: i32,
    lfWidth: i32,
    lfEscapement: i32,
    lfOrientation: i32,
    lfWeight: i32,
    lfItalic: u8,
    lfUnderline: u8,
    lfStrikeOut: u8,
    lfCharSet: u8,
    lfOutPrecision: u8,
    lfClipPrecision: u8,
    lfQuality: u8,
    lfPitchAndFamily: u8,
    lfFaceName: [32]u16,
};

pub const ENUMLOGFONTA = extern struct {
    elfLogFont: LOGFONTA,
    elfFullName: [64]u8,
    elfStyle: [32]u8,
};

pub const ENUMLOGFONTW = extern struct {
    elfLogFont: LOGFONTW,
    elfFullName: [64]u16,
    elfStyle: [32]u16,
};

pub const ENUMLOGFONTEXA = extern struct {
    elfLogFont: LOGFONTA,
    elfFullName: [64]u8,
    elfStyle: [32]u8,
    elfScript: [32]u8,
};

pub const ENUMLOGFONTEXW = extern struct {
    elfLogFont: LOGFONTW,
    elfFullName: [64]u16,
    elfStyle: [32]u16,
    elfScript: [32]u16,
};

pub const PANOSE = extern struct {
    bFamilyType: u8,
    bSerifStyle: u8,
    bWeight: u8,
    bProportion: u8,
    bContrast: u8,
    bStrokeVariation: u8,
    bArmStyle: u8,
    bLetterform: u8,
    bMidline: u8,
    bXHeight: u8,
};

pub const EXTLOGFONTA = extern struct {
    elfLogFont: LOGFONTA,
    elfFullName: [64]u8,
    elfStyle: [32]u8,
    elfVersion: u32,
    elfStyleSize: u32,
    elfMatch: u32,
    elfReserved: u32,
    elfVendorId: [4]u8,
    elfCulture: u32,
    elfPanose: PANOSE,
};

pub const EXTLOGFONTW = extern struct {
    elfLogFont: LOGFONTW,
    elfFullName: [64]u16,
    elfStyle: [32]u16,
    elfVersion: u32,
    elfStyleSize: u32,
    elfMatch: u32,
    elfReserved: u32,
    elfVendorId: [4]u8,
    elfCulture: u32,
    elfPanose: PANOSE,
};

pub const DEVMODEA = extern struct {
    dmDeviceName: [32]u8,
    dmSpecVersion: u16,
    dmDriverVersion: u16,
    dmSize: u16,
    dmDriverExtra: u16,
    dmFields: u32,
    Anonymous1: extern union {
        Anonymous1: extern struct {
            dmOrientation: i16,
            dmPaperSize: i16,
            dmPaperLength: i16,
            dmPaperWidth: i16,
            dmScale: i16,
            dmCopies: i16,
            dmDefaultSource: i16,
            dmPrintQuality: i16,
        },
        Anonymous2: extern struct {
            dmPosition: POINTL,
            dmDisplayOrientation: u32,
            dmDisplayFixedOutput: u32,
        },
    },
    dmColor: i16,
    dmDuplex: i16,
    dmYResolution: i16,
    dmTTOption: i16,
    dmCollate: i16,
    dmFormName: [32]u8,
    dmLogPixels: u16,
    dmBitsPerPel: u32,
    dmPelsWidth: u32,
    dmPelsHeight: u32,
    Anonymous2: extern union {
        dmDisplayFlags: u32,
        dmNup: u32,
    },
    dmDisplayFrequency: u32,
    dmICMMethod: u32,
    dmICMIntent: u32,
    dmMediaType: u32,
    dmDitherType: u32,
    dmReserved1: u32,
    dmReserved2: u32,
    dmPanningWidth: u32,
    dmPanningHeight: u32,
};

pub const DEVMODEW = extern struct {
    dmDeviceName: [32]u16,
    dmSpecVersion: u16,
    dmDriverVersion: u16,
    dmSize: u16,
    dmDriverExtra: u16,
    dmFields: u32,
    Anonymous1: extern union {
        Anonymous1: extern struct {
            dmOrientation: i16,
            dmPaperSize: i16,
            dmPaperLength: i16,
            dmPaperWidth: i16,
            dmScale: i16,
            dmCopies: i16,
            dmDefaultSource: i16,
            dmPrintQuality: i16,
        },
        Anonymous2: extern struct {
            dmPosition: POINTL,
            dmDisplayOrientation: u32,
            dmDisplayFixedOutput: u32,
        },
    },
    dmColor: i16,
    dmDuplex: i16,
    dmYResolution: i16,
    dmTTOption: i16,
    dmCollate: i16,
    dmFormName: [32]u16,
    dmLogPixels: u16,
    dmBitsPerPel: u32,
    dmPelsWidth: u32,
    dmPelsHeight: u32,
    Anonymous2: extern union {
        dmDisplayFlags: u32,
        dmNup: u32,
    },
    dmDisplayFrequency: u32,
    dmICMMethod: u32,
    dmICMIntent: u32,
    dmMediaType: u32,
    dmDitherType: u32,
    dmReserved1: u32,
    dmReserved2: u32,
    dmPanningWidth: u32,
    dmPanningHeight: u32,
};

pub const DISPLAY_DEVICEA = extern struct {
    cb: u32,
    DeviceName: [32]CHAR,
    DeviceString: [128]CHAR,
    StateFlags: u32,
    DeviceID: [128]CHAR,
    DeviceKey: [128]CHAR,
};

pub const DISPLAY_DEVICEW = extern struct {
    cb: u32,
    DeviceName: [32]u16,
    DeviceString: [128]u16,
    StateFlags: u32,
    DeviceID: [128]u16,
    DeviceKey: [128]u16,
};

pub const DISPLAYCONFIG_COLOR_ENCODING = enum(i32) {
    RGB = 0,
    YCBCR444 = 1,
    YCBCR422 = 2,
    YCBCR420 = 3,
    INTENSITY = 4,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_COLOR_ENCODING_RGB = DISPLAYCONFIG_COLOR_ENCODING.RGB;
pub const DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = DISPLAYCONFIG_COLOR_ENCODING.YCBCR444;
pub const DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = DISPLAYCONFIG_COLOR_ENCODING.YCBCR422;
pub const DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = DISPLAYCONFIG_COLOR_ENCODING.YCBCR420;
pub const DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = DISPLAYCONFIG_COLOR_ENCODING.INTENSITY;
pub const DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32 = DISPLAYCONFIG_COLOR_ENCODING.FORCE_UINT32;

pub const RGNDATAHEADER = extern struct {
    dwSize: u32,
    iType: u32,
    nCount: u32,
    nRgnSize: u32,
    rcBound: RECT,
};

pub const RGNDATA = extern struct {
    rdh: RGNDATAHEADER,
    Buffer: [1]CHAR,
};

pub const ABC = extern struct {
    abcA: i32,
    abcB: u32,
    abcC: i32,
};

pub const ABCFLOAT = extern struct {
    abcfA: f32,
    abcfB: f32,
    abcfC: f32,
};

pub const OUTLINETEXTMETRICA = extern struct {
    otmSize: u32,
    otmTextMetrics: TEXTMETRICA,
    otmFiller: u8,
    otmPanoseNumber: PANOSE,
    otmfsSelection: u32,
    otmfsType: u32,
    otmsCharSlopeRise: i32,
    otmsCharSlopeRun: i32,
    otmItalicAngle: i32,
    otmEMSquare: u32,
    otmAscent: i32,
    otmDescent: i32,
    otmLineGap: u32,
    otmsCapEmHeight: u32,
    otmsXHeight: u32,
    otmrcFontBox: RECT,
    otmMacAscent: i32,
    otmMacDescent: i32,
    otmMacLineGap: u32,
    otmusMinimumPPEM: u32,
    otmptSubscriptSize: POINT,
    otmptSubscriptOffset: POINT,
    otmptSuperscriptSize: POINT,
    otmptSuperscriptOffset: POINT,
    otmsStrikeoutSize: u32,
    otmsStrikeoutPosition: i32,
    otmsUnderscoreSize: i32,
    otmsUnderscorePosition: i32,
    otmpFamilyName: ?PSTR,
    otmpFaceName: ?PSTR,
    otmpStyleName: ?PSTR,
    otmpFullName: ?PSTR,
};

pub const OUTLINETEXTMETRICW = extern struct {
    otmSize: u32,
    otmTextMetrics: TEXTMETRICW,
    otmFiller: u8,
    otmPanoseNumber: PANOSE,
    otmfsSelection: u32,
    otmfsType: u32,
    otmsCharSlopeRise: i32,
    otmsCharSlopeRun: i32,
    otmItalicAngle: i32,
    otmEMSquare: u32,
    otmAscent: i32,
    otmDescent: i32,
    otmLineGap: u32,
    otmsCapEmHeight: u32,
    otmsXHeight: u32,
    otmrcFontBox: RECT,
    otmMacAscent: i32,
    otmMacDescent: i32,
    otmMacLineGap: u32,
    otmusMinimumPPEM: u32,
    otmptSubscriptSize: POINT,
    otmptSubscriptOffset: POINT,
    otmptSuperscriptSize: POINT,
    otmptSuperscriptOffset: POINT,
    otmsStrikeoutSize: u32,
    otmsStrikeoutPosition: i32,
    otmsUnderscoreSize: i32,
    otmsUnderscorePosition: i32,
    otmpFamilyName: ?PSTR,
    otmpFaceName: ?PSTR,
    otmpStyleName: ?PSTR,
    otmpFullName: ?PSTR,
};

pub const POLYTEXTA = extern struct {
    x: i32,
    y: i32,
    n: u32,
    lpstr: ?[*:0]const u8,
    uiFlags: u32,
    rcl: RECT,
    pdx: ?*i32,
};

pub const POLYTEXTW = extern struct {
    x: i32,
    y: i32,
    n: u32,
    lpstr: ?[*:0]const u16,
    uiFlags: u32,
    rcl: RECT,
    pdx: ?*i32,
};

pub const FIXED = extern struct {
    fract: u16,
    value: i16,
};

pub const MAT2 = extern struct {
    eM11: FIXED,
    eM12: FIXED,
    eM21: FIXED,
    eM22: FIXED,
};

pub const GLYPHMETRICS = extern struct {
    gmBlackBoxX: u32,
    gmBlackBoxY: u32,
    gmptGlyphOrigin: POINT,
    gmCellIncX: i16,
    gmCellIncY: i16,
};

pub const POINTFX = extern struct {
    x: FIXED,
    y: FIXED,
};

pub const TTPOLYCURVE = extern struct {
    wType: u16,
    cpfx: u16,
    apfx: [1]POINTFX,
};

pub const TTPOLYGONHEADER = extern struct {
    cb: u32,
    dwType: u32,
    pfxStart: POINTFX,
};

pub const GCP_RESULTSA = extern struct {
    lStructSize: u32,
    lpOutString: ?PSTR,
    lpOrder: ?*u32,
    lpDx: ?*i32,
    lpCaretPos: ?*i32,
    lpClass: ?PSTR,
    lpGlyphs: ?PWSTR,
    nGlyphs: u32,
    nMaxFit: i32,
};

pub const GCP_RESULTSW = extern struct {
    lStructSize: u32,
    lpOutString: ?PWSTR,
    lpOrder: ?*u32,
    lpDx: ?*i32,
    lpCaretPos: ?*i32,
    lpClass: ?PSTR,
    lpGlyphs: ?PWSTR,
    nGlyphs: u32,
    nMaxFit: i32,
};

pub const RASTERIZER_STATUS = extern struct {
    nSize: i16,
    wFlags: i16,
    nLanguageID: i16,
};

pub const FONTENUMPROCA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*const LOGFONTA,
        param1: ?*const TEXTMETRICA,
        param2: u32,
        param3: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: ?*const LOGFONTA,
        param1: ?*const TEXTMETRICA,
        param2: u32,
        param3: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const FONTENUMPROCW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*const LOGFONTW,
        param1: ?*const TEXTMETRICW,
        param2: u32,
        param3: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: ?*const LOGFONTW,
        param1: ?*const TEXTMETRICW,
        param2: u32,
        param3: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const GOBJENUMPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*anyopaque,
        param1: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: ?*anyopaque,
        param1: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const LINEDDAPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: i32,
        param1: i32,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        param0: i32,
        param1: i32,
        param2: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const LPFNDEVMODE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HWND,
        param1: ?HINSTANCE,
        param2: ?*DEVMODEA,
        param3: ?PSTR,
        param4: ?PSTR,
        param5: ?*DEVMODEA,
        param6: ?PSTR,
        param7: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?HWND,
        param1: ?HINSTANCE,
        param2: ?*DEVMODEA,
        param3: ?PSTR,
        param4: ?PSTR,
        param5: ?*DEVMODEA,
        param6: ?PSTR,
        param7: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const LPFNDEVCAPS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?PSTR,
        param1: ?PSTR,
        param2: u32,
        param3: ?PSTR,
        param4: ?*DEVMODEA,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?PSTR,
        param1: ?PSTR,
        param2: u32,
        param3: ?PSTR,
        param4: ?*DEVMODEA,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const WCRANGE = extern struct {
    wcLow: u16,
    cGlyphs: u16,
};

pub const GLYPHSET = extern struct {
    cbThis: u32,
    flAccel: u32,
    cGlyphsSupported: u32,
    cRanges: u32,
    ranges: [1]WCRANGE,
};

pub const DESIGNVECTOR = extern struct {
    dvReserved: u32,
    dvNumAxes: u32,
    dvValues: [16]i32,
};

pub const AXISINFOA = extern struct {
    axMinValue: i32,
    axMaxValue: i32,
    axAxisName: [16]u8,
};

pub const AXISINFOW = extern struct {
    axMinValue: i32,
    axMaxValue: i32,
    axAxisName: [16]u16,
};

pub const AXESLISTA = extern struct {
    axlReserved: u32,
    axlNumAxes: u32,
    axlAxisInfo: [16]AXISINFOA,
};

pub const AXESLISTW = extern struct {
    axlReserved: u32,
    axlNumAxes: u32,
    axlAxisInfo: [16]AXISINFOW,
};

pub const ENUMLOGFONTEXDVA = extern struct {
    elfEnumLogfontEx: ENUMLOGFONTEXA,
    elfDesignVector: DESIGNVECTOR,
};

pub const ENUMLOGFONTEXDVW = extern struct {
    elfEnumLogfontEx: ENUMLOGFONTEXW,
    elfDesignVector: DESIGNVECTOR,
};

pub const TRIVERTEX = extern struct {
    x: i32,
    y: i32,
    Red: u16,
    Green: u16,
    Blue: u16,
    Alpha: u16,
};

pub const GRADIENT_TRIANGLE = extern struct {
    Vertex1: u32,
    Vertex2: u32,
    Vertex3: u32,
};

pub const GRADIENT_RECT = extern struct {
    UpperLeft: u32,
    LowerRight: u32,
};

pub const BLENDFUNCTION = extern struct {
    BlendOp: u8,
    BlendFlags: u8,
    SourceConstantAlpha: u8,
    AlphaFormat: u8,
};

pub const MFENUMPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hdc: ?HDC,
        lpht: [*]HANDLETABLE,
        lpMR: ?*METARECORD,
        nObj: i32,
        param4: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hdc: ?HDC,
        lpht: [*]HANDLETABLE,
        lpMR: ?*METARECORD,
        nObj: i32,
        param4: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const ENHMFENUMPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hdc: ?HDC,
        lpht: [*]HANDLETABLE,
        lpmr: ?*const ENHMETARECORD,
        nHandles: i32,
        data: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hdc: ?HDC,
        lpht: [*]HANDLETABLE,
        lpmr: ?*const ENHMETARECORD,
        nHandles: i32,
        data: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const DIBSECTION = extern struct {
    dsBm: BITMAP,
    dsBmih: BITMAPINFOHEADER,
    dsBitfields: [3]u32,
    dshSection: ?HANDLE,
    dsOffset: u32,
};

pub const COLORADJUSTMENT = extern struct {
    caSize: u16,
    caFlags: u16,
    caIlluminantIndex: u16,
    caRedGamma: u16,
    caGreenGamma: u16,
    caBlueGamma: u16,
    caReferenceBlack: u16,
    caReferenceWhite: u16,
    caContrast: i16,
    caBrightness: i16,
    caColorfulness: i16,
    caRedGreenTint: i16,
};

pub const KERNINGPAIR = extern struct {
    wFirst: u16,
    wSecond: u16,
    iKernAmount: i32,
};

pub const EMR = extern struct {
    iType: u32,
    nSize: u32,
};

pub const EMRTEXT = extern struct {
    ptlReference: POINTL,
    nChars: u32,
    offString: u32,
    fOptions: u32,
    rcl: RECTL,
    offDx: u32,
};

pub const ABORTPATH = extern struct {
    emr: EMR,
};

pub const EMRSELECTCLIPPATH = extern struct {
    emr: EMR,
    iMode: u32,
};

pub const EMRSETMITERLIMIT = extern struct {
    emr: EMR,
    eMiterLimit: f32,
};

pub const EMRRESTOREDC = extern struct {
    emr: EMR,
    iRelative: i32,
};

pub const EMRSETARCDIRECTION = extern struct {
    emr: EMR,
    iArcDirection: u32,
};

pub const EMRSETMAPPERFLAGS = extern struct {
    emr: EMR,
    dwFlags: u32,
};

pub const EMRSETTEXTCOLOR = extern struct {
    emr: EMR,
    crColor: u32,
};

pub const EMRSELECTOBJECT = extern struct {
    emr: EMR,
    ihObject: u32,
};

pub const EMRSELECTPALETTE = extern struct {
    emr: EMR,
    ihPal: u32,
};

pub const EMRRESIZEPALETTE = extern struct {
    emr: EMR,
    ihPal: u32,
    cEntries: u32,
};

pub const EMRSETPALETTEENTRIES = extern struct {
    emr: EMR,
    ihPal: u32,
    iStart: u32,
    cEntries: u32,
    aPalEntries: [1]PALETTEENTRY,
};

pub const EMRSETCOLORADJUSTMENT = extern struct {
    emr: EMR,
    ColorAdjustment: COLORADJUSTMENT,
};

pub const EMRGDICOMMENT = extern struct {
    emr: EMR,
    cbData: u32,
    Data: [1]u8,
};

pub const EMREOF = extern struct {
    emr: EMR,
    nPalEntries: u32,
    offPalEntries: u32,
    nSizeLast: u32,
};

pub const EMRLINETO = extern struct {
    emr: EMR,
    ptl: POINTL,
};

pub const EMROFFSETCLIPRGN = extern struct {
    emr: EMR,
    ptlOffset: POINTL,
};

pub const EMRFILLPATH = extern struct {
    emr: EMR,
    rclBounds: RECTL,
};

pub const EMREXCLUDECLIPRECT = extern struct {
    emr: EMR,
    rclClip: RECTL,
};

pub const EMRSETVIEWPORTORGEX = extern struct {
    emr: EMR,
    ptlOrigin: POINTL,
};

pub const EMRSETVIEWPORTEXTEX = extern struct {
    emr: EMR,
    szlExtent: SIZE,
};

pub const EMRSCALEVIEWPORTEXTEX = extern struct {
    emr: EMR,
    xNum: i32,
    xDenom: i32,
    yNum: i32,
    yDenom: i32,
};

pub const EMRSETWORLDTRANSFORM = extern struct {
    emr: EMR,
    xform: XFORM,
};

pub const EMRMODIFYWORLDTRANSFORM = extern struct {
    emr: EMR,
    xform: XFORM,
    iMode: u32,
};

pub const EMRSETPIXELV = extern struct {
    emr: EMR,
    ptlPixel: POINTL,
    crColor: u32,
};

pub const EMREXTFLOODFILL = extern struct {
    emr: EMR,
    ptlStart: POINTL,
    crColor: u32,
    iMode: u32,
};

pub const EMRELLIPSE = extern struct {
    emr: EMR,
    rclBox: RECTL,
};

pub const EMRROUNDRECT = extern struct {
    emr: EMR,
    rclBox: RECTL,
    szlCorner: SIZE,
};

pub const EMRARC = extern struct {
    emr: EMR,
    rclBox: RECTL,
    ptlStart: POINTL,
    ptlEnd: POINTL,
};

pub const EMRANGLEARC = extern struct {
    emr: EMR,
    ptlCenter: POINTL,
    nRadius: u32,
    eStartAngle: f32,
    eSweepAngle: f32,
};

pub const EMRPOLYLINE = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cptl: u32,
    aptl: [1]POINTL,
};

pub const EMRPOLYLINE16 = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cpts: u32,
    apts: [1]POINTS,
};

pub const EMRPOLYDRAW = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cptl: u32,
    aptl: [1]POINTL,
    abTypes: [1]u8,
};

pub const EMRPOLYDRAW16 = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cpts: u32,
    apts: [1]POINTS,
    abTypes: [1]u8,
};

pub const EMRPOLYPOLYLINE = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    nPolys: u32,
    cptl: u32,
    aPolyCounts: [1]u32,
    aptl: [1]POINTL,
};

pub const EMRPOLYPOLYLINE16 = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    nPolys: u32,
    cpts: u32,
    aPolyCounts: [1]u32,
    apts: [1]POINTS,
};

pub const EMRINVERTRGN = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cbRgnData: u32,
    RgnData: [1]u8,
};

pub const EMRFILLRGN = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cbRgnData: u32,
    ihBrush: u32,
    RgnData: [1]u8,
};

pub const EMRFRAMERGN = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cbRgnData: u32,
    ihBrush: u32,
    szlStroke: SIZE,
    RgnData: [1]u8,
};

pub const EMREXTSELECTCLIPRGN = extern struct {
    emr: EMR,
    cbRgnData: u32,
    iMode: u32,
    RgnData: [1]u8,
};

pub const EMREXTTEXTOUTA = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    iGraphicsMode: u32,
    exScale: f32,
    eyScale: f32,
    emrtext: EMRTEXT,
};

pub const EMRPOLYTEXTOUTA = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    iGraphicsMode: u32,
    exScale: f32,
    eyScale: f32,
    cStrings: i32,
    aemrtext: [1]EMRTEXT,
};

pub const EMRBITBLT = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    cxDest: i32,
    cyDest: i32,
    dwRop: u32,
    xSrc: i32,
    ySrc: i32,
    xformSrc: XFORM,
    crBkColorSrc: u32,
    iUsageSrc: u32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
};

pub const EMRSTRETCHBLT = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    cxDest: i32,
    cyDest: i32,
    dwRop: u32,
    xSrc: i32,
    ySrc: i32,
    xformSrc: XFORM,
    crBkColorSrc: u32,
    iUsageSrc: u32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    cxSrc: i32,
    cySrc: i32,
};

pub const EMRMASKBLT = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    cxDest: i32,
    cyDest: i32,
    dwRop: u32,
    xSrc: i32,
    ySrc: i32,
    xformSrc: XFORM,
    crBkColorSrc: u32,
    iUsageSrc: u32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    xMask: i32,
    yMask: i32,
    iUsageMask: u32,
    offBmiMask: u32,
    cbBmiMask: u32,
    offBitsMask: u32,
    cbBitsMask: u32,
};

pub const EMRPLGBLT = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    aptlDest: [3]POINTL,
    xSrc: i32,
    ySrc: i32,
    cxSrc: i32,
    cySrc: i32,
    xformSrc: XFORM,
    crBkColorSrc: u32,
    iUsageSrc: u32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    xMask: i32,
    yMask: i32,
    iUsageMask: u32,
    offBmiMask: u32,
    cbBmiMask: u32,
    offBitsMask: u32,
    cbBitsMask: u32,
};

pub const EMRSETDIBITSTODEVICE = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    xSrc: i32,
    ySrc: i32,
    cxSrc: i32,
    cySrc: i32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    iUsageSrc: u32,
    iStartScan: u32,
    cScans: u32,
};

pub const EMRSTRETCHDIBITS = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    xSrc: i32,
    ySrc: i32,
    cxSrc: i32,
    cySrc: i32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    iUsageSrc: u32,
    dwRop: u32,
    cxDest: i32,
    cyDest: i32,
};

pub const EMREXTCREATEFONTINDIRECTW = extern struct {
    emr: EMR,
    ihFont: u32,
    elfw: EXTLOGFONTW,
};

pub const EMRCREATEPALETTE = extern struct {
    emr: EMR,
    ihPal: u32,
    lgpl: LOGPALETTE,
};

pub const EMRCREATEPEN = extern struct {
    emr: EMR,
    ihPen: u32,
    lopn: LOGPEN,
};

pub const EMREXTCREATEPEN = extern struct {
    emr: EMR,
    ihPen: u32,
    offBmi: u32,
    cbBmi: u32,
    offBits: u32,
    cbBits: u32,
    elp: EXTLOGPEN32,
};

pub const EMRCREATEBRUSHINDIRECT = extern struct {
    emr: EMR,
    ihBrush: u32,
    lb: LOGBRUSH32,
};

pub const EMRCREATEMONOBRUSH = extern struct {
    emr: EMR,
    ihBrush: u32,
    iUsage: u32,
    offBmi: u32,
    cbBmi: u32,
    offBits: u32,
    cbBits: u32,
};

pub const EMRCREATEDIBPATTERNBRUSHPT = extern struct {
    emr: EMR,
    ihBrush: u32,
    iUsage: u32,
    offBmi: u32,
    cbBmi: u32,
    offBits: u32,
    cbBits: u32,
};

pub const EMRFORMAT = extern struct {
    dSignature: u32,
    nVersion: u32,
    cbData: u32,
    offData: u32,
};

pub const EMRGLSRECORD = extern struct {
    emr: EMR,
    cbData: u32,
    Data: [1]u8,
};

pub const EMRGLSBOUNDEDRECORD = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    cbData: u32,
    Data: [1]u8,
};

pub const EMRSETCOLORSPACE = extern struct {
    emr: EMR,
    ihCS: u32,
};

pub const EMREXTESCAPE = extern struct {
    emr: EMR,
    iEscape: i32,
    cbEscData: i32,
    EscData: [1]u8,
};

pub const EMRNAMEDESCAPE = extern struct {
    emr: EMR,
    iEscape: i32,
    cbDriver: i32,
    cbEscData: i32,
    EscData: [1]u8,
};

pub const EMRSETICMPROFILE = extern struct {
    emr: EMR,
    dwFlags: u32,
    cbName: u32,
    cbData: u32,
    Data: [1]u8,
};

pub const COLORMATCHTOTARGET = extern struct {
    emr: EMR,
    dwAction: u32,
    dwFlags: u32,
    cbName: u32,
    cbData: u32,
    Data: [1]u8,
};

pub const COLORCORRECTPALETTE = extern struct {
    emr: EMR,
    ihPalette: u32,
    nFirstEntry: u32,
    nPalEntries: u32,
    nReserved: u32,
};

pub const EMRALPHABLEND = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    cxDest: i32,
    cyDest: i32,
    dwRop: u32,
    xSrc: i32,
    ySrc: i32,
    xformSrc: XFORM,
    crBkColorSrc: u32,
    iUsageSrc: u32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    cxSrc: i32,
    cySrc: i32,
};

pub const EMRGRADIENTFILL = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    nVer: u32,
    nTri: u32,
    ulMode: GRADIENT_FILL,
    Ver: [1]TRIVERTEX,
};

pub const EMRTRANSPARENTBLT = extern struct {
    emr: EMR,
    rclBounds: RECTL,
    xDest: i32,
    yDest: i32,
    cxDest: i32,
    cyDest: i32,
    dwRop: u32,
    xSrc: i32,
    ySrc: i32,
    xformSrc: XFORM,
    crBkColorSrc: u32,
    iUsageSrc: u32,
    offBmiSrc: u32,
    cbBmiSrc: u32,
    offBitsSrc: u32,
    cbBitsSrc: u32,
    cxSrc: i32,
    cySrc: i32,
};

pub const WGLSWAP = extern struct {
    hdc: ?HDC,
    uiFlags: u32,
};

pub const CFP_ALLOCPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: usize,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
    else => *const fn (
        param0: usize,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
};

pub const CFP_REALLOCPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*anyopaque,
        param1: usize,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
    else => *const fn (
        param0: ?*anyopaque,
        param1: usize,
    ) callconv(@import("std").os.windows.WINAPI) ?*anyopaque,
};

pub const CFP_FREEPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        param0: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const READEMBEDPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*anyopaque,
        param1: ?*anyopaque,
        param2: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?*anyopaque,
        param1: ?*anyopaque,
        param2: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const WRITEEMBEDPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*anyopaque,
        param1: ?*const anyopaque,
        param2: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?*anyopaque,
        param1: ?*const anyopaque,
        param2: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const TTLOADINFO = extern struct {
    usStructSize: u16,
    usRefStrSize: u16,
    pusRefStr: ?*u16,
};

pub const TTEMBEDINFO = extern struct {
    usStructSize: u16,
    usRootStrSize: u16,
    pusRootStr: ?*u16,
};

pub const TTVALIDATIONTESTSPARAMS = extern struct {
    ulStructSize: u32,
    lTestFromSize: i32,
    lTestToSize: i32,
    ulCharSet: u32,
    usReserved1: u16,
    usCharCodeCount: u16,
    pusCharCodeSet: ?*u16,
};

pub const TTVALIDATIONTESTSPARAMSEX = extern struct {
    ulStructSize: u32,
    lTestFromSize: i32,
    lTestToSize: i32,
    ulCharSet: u32,
    usReserved1: u16,
    usCharCodeCount: u16,
    pulCharCodeSet: ?*u32,
};

pub const GRAYSTRINGPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HDC,
        param1: LPARAM,
        param2: i32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HDC,
        param1: LPARAM,
        param2: i32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const DRAWSTATEPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hdc: ?HDC,
        lData: LPARAM,
        wData: WPARAM,
        cx: i32,
        cy: i32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        hdc: ?HDC,
        lData: LPARAM,
        wData: WPARAM,
        cx: i32,
        cy: i32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PAINTSTRUCT = extern struct {
    hdc: ?HDC,
    fErase: BOOL,
    rcPaint: RECT,
    fRestore: BOOL,
    fIncUpdate: BOOL,
    rgbReserved: [32]u8,
};

pub const DRAWTEXTPARAMS = extern struct {
    cbSize: u32,
    iTabLength: i32,
    iLeftMargin: i32,
    iRightMargin: i32,
    uiLengthDrawn: u32,
};

pub const MONITORINFO = extern struct {
    cbSize: u32,
    rcMonitor: RECT,
    rcWork: RECT,
    dwFlags: u32,
};

pub const MONITORINFOEXA = extern struct {
    __AnonymousBase_winuser_L13567_C43: MONITORINFO,
    szDevice: [32]CHAR,
};

pub const MONITORINFOEXW = extern struct {
    __AnonymousBase_winuser_L13571_C43: MONITORINFO,
    szDevice: [32]u16,
};

pub const MONITORENUMPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HMONITOR,
        param1: ?HDC,
        param2: ?*RECT,
        param3: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HMONITOR,
        param1: ?HDC,
        param2: ?*RECT,
        param3: LPARAM,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

//--------------------------------------------------------------------------------
// Section: Functions (394)
//--------------------------------------------------------------------------------
pub extern "gdi32" fn GetObjectA(
    h: ?HGDIOBJ,
    c: i32,
    // TODO: what to do with BytesParamIndex 1?
    pv: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AddFontResourceA(
    param0: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AddFontResourceW(
    param0: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AnimatePalette(
    hPal: ?HPALETTE,
    iStartIndex: u32,
    cEntries: u32,
    ppe: [*]const PALETTEENTRY,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn Arc(
    hdc: ?HDC,
    x1: i32,
    y1: i32,
    x2: i32,
    y2: i32,
    x3: i32,
    y3: i32,
    x4: i32,
    y4: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn BitBlt(
    hdc: ?HDC,
    x: i32,
    y: i32,
    cx: i32,
    cy: i32,
    hdcSrc: ?HDC,
    x1: i32,
    y1: i32,
    rop: ROP_CODE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CancelDC(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn Chord(
    hdc: ?HDC,
    x1: i32,
    y1: i32,
    x2: i32,
    y2: i32,
    x3: i32,
    y3: i32,
    x4: i32,
    y4: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CloseMetaFile(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) ?HMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CombineRgn(
    hrgnDst: ?HRGN,
    hrgnSrc1: ?HRGN,
    hrgnSrc2: ?HRGN,
    iMode: RGN_COMBINE_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CopyMetaFileA(
    param0: ?HMETAFILE,
    param1: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CopyMetaFileW(
    param0: ?HMETAFILE,
    param1: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateBitmap(
    nWidth: i32,
    nHeight: i32,
    nPlanes: u32,
    nBitCount: u32,
    lpBits: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateBitmapIndirect(
    pbm: ?*const BITMAP,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateBrushIndirect(
    plbrush: ?*const LOGBRUSH,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateCompatibleBitmap(
    hdc: ?HDC,
    cx: i32,
    cy: i32,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDiscardableBitmap(
    hdc: ?HDC,
    cx: i32,
    cy: i32,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateCompatibleDC(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) CreatedHDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDCA(
    pwszDriver: ?[*:0]const u8,
    pwszDevice: ?[*:0]const u8,
    pszPort: ?[*:0]const u8,
    pdm: ?*const DEVMODEA,
) callconv(@import("std").os.windows.WINAPI) CreatedHDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDCW(
    pwszDriver: ?[*:0]const u16,
    pwszDevice: ?[*:0]const u16,
    pszPort: ?[*:0]const u16,
    pdm: ?*const DEVMODEW,
) callconv(@import("std").os.windows.WINAPI) CreatedHDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDIBitmap(
    hdc: ?HDC,
    pbmih: ?*const BITMAPINFOHEADER,
    flInit: u32,
    pjBits: ?*const anyopaque,
    pbmi: ?*const BITMAPINFO,
    iUsage: DIB_USAGE,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDIBPatternBrush(
    h: isize,
    iUsage: DIB_USAGE,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDIBPatternBrushPt(
    lpPackedDIB: ?*const anyopaque,
    iUsage: DIB_USAGE,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateEllipticRgn(
    x1: i32,
    y1: i32,
    x2: i32,
    y2: i32,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateEllipticRgnIndirect(
    lprect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateFontIndirectA(
    lplf: ?*const LOGFONTA,
) callconv(@import("std").os.windows.WINAPI) ?HFONT;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateFontIndirectW(
    lplf: ?*const LOGFONTW,
) callconv(@import("std").os.windows.WINAPI) ?HFONT;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateFontA(
    cHeight: i32,
    cWidth: i32,
    cEscapement: i32,
    cOrientation: i32,
    cWeight: i32,
    bItalic: u32,
    bUnderline: u32,
    bStrikeOut: u32,
    iCharSet: u32,
    iOutPrecision: FONT_OUTPUT_PRECISION,
    iClipPrecision: FONT_CLIP_PRECISION,
    iQuality: FONT_QUALITY,
    iPitchAndFamily: FONT_PITCH_AND_FAMILY,
    pszFaceName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HFONT;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateFontW(
    cHeight: i32,
    cWidth: i32,
    cEscapement: i32,
    cOrientation: i32,
    cWeight: i32,
    bItalic: u32,
    bUnderline: u32,
    bStrikeOut: u32,
    iCharSet: u32,
    iOutPrecision: FONT_OUTPUT_PRECISION,
    iClipPrecision: FONT_CLIP_PRECISION,
    iQuality: FONT_QUALITY,
    iPitchAndFamily: FONT_PITCH_AND_FAMILY,
    pszFaceName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HFONT;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateHatchBrush(
    iHatch: HATCH_BRUSH_STYLE,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateICA(
    pszDriver: ?[*:0]const u8,
    pszDevice: ?[*:0]const u8,
    pszPort: ?[*:0]const u8,
    pdm: ?*const DEVMODEA,
) callconv(@import("std").os.windows.WINAPI) CreatedHDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateICW(
    pszDriver: ?[*:0]const u16,
    pszDevice: ?[*:0]const u16,
    pszPort: ?[*:0]const u16,
    pdm: ?*const DEVMODEW,
) callconv(@import("std").os.windows.WINAPI) CreatedHDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateMetaFileA(
    pszFile: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) HdcMetdataFileHandle;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateMetaFileW(
    pszFile: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) HdcMetdataFileHandle;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreatePalette(
    plpal: ?*const LOGPALETTE,
) callconv(@import("std").os.windows.WINAPI) ?HPALETTE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreatePen(
    iStyle: PEN_STYLE,
    cWidth: i32,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) ?HPEN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreatePenIndirect(
    plpen: ?*const LOGPEN,
) callconv(@import("std").os.windows.WINAPI) ?HPEN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreatePolyPolygonRgn(
    pptl: ?*const POINT,
    pc: [*]const i32,
    cPoly: i32,
    iMode: CREATE_POLYGON_RGN_MODE,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreatePatternBrush(
    hbm: ?HBITMAP,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateRectRgn(
    x1: i32,
    y1: i32,
    x2: i32,
    y2: i32,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateRectRgnIndirect(
    lprect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateRoundRectRgn(
    x1: i32,
    y1: i32,
    x2: i32,
    y2: i32,
    w: i32,
    h: i32,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateScalableFontResourceA(
    fdwHidden: u32,
    lpszFont: ?[*:0]const u8,
    lpszFile: ?[*:0]const u8,
    lpszPath: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateScalableFontResourceW(
    fdwHidden: u32,
    lpszFont: ?[*:0]const u16,
    lpszFile: ?[*:0]const u16,
    lpszPath: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateSolidBrush(
    color: u32,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn DeleteDC(
    hdc: CreatedHDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn DeleteMetaFile(
    hmf: ?HMETAFILE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn DeleteObject(
    ho: ?HGDIOBJ,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn DrawEscape(
    hdc: ?HDC,
    iEscape: i32,
    cjIn: i32,
    // TODO: what to do with BytesParamIndex 2?
    lpIn: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "gdi32" fn Ellipse(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumFontFamiliesExA(
    hdc: ?HDC,
    lpLogfont: ?*LOGFONTA,
    lpProc: ?FONTENUMPROCA,
    lParam: LPARAM,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumFontFamiliesExW(
    hdc: ?HDC,
    lpLogfont: ?*LOGFONTW,
    lpProc: ?FONTENUMPROCW,
    lParam: LPARAM,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumFontFamiliesA(
    hdc: ?HDC,
    lpLogfont: ?[*:0]const u8,
    lpProc: ?FONTENUMPROCA,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumFontFamiliesW(
    hdc: ?HDC,
    lpLogfont: ?[*:0]const u16,
    lpProc: ?FONTENUMPROCW,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumFontsA(
    hdc: ?HDC,
    lpLogfont: ?[*:0]const u8,
    lpProc: ?FONTENUMPROCA,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumFontsW(
    hdc: ?HDC,
    lpLogfont: ?[*:0]const u16,
    lpProc: ?FONTENUMPROCW,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumObjects(
    hdc: ?HDC,
    nType: OBJ_TYPE,
    lpFunc: ?GOBJENUMPROC,
    lParam: LPARAM,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EqualRgn(
    hrgn1: ?HRGN,
    hrgn2: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExcludeClipRect(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExtCreateRegion(
    lpx: ?*const XFORM,
    nCount: u32,
    // TODO: what to do with BytesParamIndex 1?
    lpData: ?*const RGNDATA,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExtFloodFill(
    hdc: ?HDC,
    x: i32,
    y: i32,
    color: u32,
    type: EXT_FLOOD_FILL_TYPE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FillRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
    hbr: ?HBRUSH,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FloodFill(
    hdc: ?HDC,
    x: i32,
    y: i32,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FrameRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
    hbr: ?HBRUSH,
    w: i32,
    h: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetROP2(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetAspectRatioFilterEx(
    hdc: ?HDC,
    lpsize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetBkColor(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetDCBrushColor(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetDCPenColor(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetBkMode(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetBitmapBits(
    hbit: ?HBITMAP,
    cb: i32,
    // TODO: what to do with BytesParamIndex 1?
    lpvBits: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetBitmapDimensionEx(
    hbit: ?HBITMAP,
    lpsize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetBoundsRect(
    hdc: ?HDC,
    lprect: ?*RECT,
    flags: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetBrushOrgEx(
    hdc: ?HDC,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidthA(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpBuffer: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidthW(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpBuffer: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidth32A(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpBuffer: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidth32W(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpBuffer: ?*i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidthFloatA(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpBuffer: ?*f32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidthFloatW(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpBuffer: ?*f32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharABCWidthsA(
    hdc: ?HDC,
    wFirst: u32,
    wLast: u32,
    lpABC: ?*ABC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharABCWidthsW(
    hdc: ?HDC,
    wFirst: u32,
    wLast: u32,
    lpABC: ?*ABC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharABCWidthsFloatA(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpABC: ?*ABCFLOAT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharABCWidthsFloatW(
    hdc: ?HDC,
    iFirst: u32,
    iLast: u32,
    lpABC: ?*ABCFLOAT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetClipBox(
    hdc: ?HDC,
    lprect: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetClipRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetMetaRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCurrentObject(
    hdc: ?HDC,
    type: OBJ_TYPE,
) callconv(@import("std").os.windows.WINAPI) ?HGDIOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCurrentPositionEx(
    hdc: ?HDC,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetDeviceCaps(
    hdc: ?HDC,
    index: GET_DEVICE_CAPS_INDEX,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetDIBits(
    hdc: ?HDC,
    hbm: ?HBITMAP,
    start: u32,
    cLines: u32,
    lpvBits: ?*anyopaque,
    lpbmi: ?*BITMAPINFO,
    usage: DIB_USAGE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetFontData(
    hdc: ?HDC,
    dwTable: u32,
    dwOffset: u32,
    // TODO: what to do with BytesParamIndex 4?
    pvBuffer: ?*anyopaque,
    cjBuffer: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetGlyphOutlineA(
    hdc: ?HDC,
    uChar: u32,
    fuFormat: GET_GLYPH_OUTLINE_FORMAT,
    lpgm: ?*GLYPHMETRICS,
    cjBuffer: u32,
    // TODO: what to do with BytesParamIndex 4?
    pvBuffer: ?*anyopaque,
    lpmat2: ?*const MAT2,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetGlyphOutlineW(
    hdc: ?HDC,
    uChar: u32,
    fuFormat: GET_GLYPH_OUTLINE_FORMAT,
    lpgm: ?*GLYPHMETRICS,
    cjBuffer: u32,
    // TODO: what to do with BytesParamIndex 4?
    pvBuffer: ?*anyopaque,
    lpmat2: ?*const MAT2,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetGraphicsMode(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetMapMode(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetMetaFileBitsEx(
    hMF: ?HMETAFILE,
    cbBuffer: u32,
    // TODO: what to do with BytesParamIndex 1?
    lpData: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "gdi32" fn GetMetaFileA(
    lpName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HMETAFILE;

pub extern "gdi32" fn GetMetaFileW(
    lpName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetNearestColor(
    hdc: ?HDC,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetNearestPaletteIndex(
    h: ?HPALETTE,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetObjectType(
    h: ?HGDIOBJ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetOutlineTextMetricsA(
    hdc: ?HDC,
    cjCopy: u32,
    // TODO: what to do with BytesParamIndex 1?
    potm: ?*OUTLINETEXTMETRICA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetOutlineTextMetricsW(
    hdc: ?HDC,
    cjCopy: u32,
    // TODO: what to do with BytesParamIndex 1?
    potm: ?*OUTLINETEXTMETRICW,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetPaletteEntries(
    hpal: ?HPALETTE,
    iStart: u32,
    cEntries: u32,
    pPalEntries: ?[*]PALETTEENTRY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetPixel(
    hdc: ?HDC,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetPolyFillMode(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetRasterizerCaps(
    // TODO: what to do with BytesParamIndex 1?
    lpraststat: ?*RASTERIZER_STATUS,
    cjBytes: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetRandomRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
    i: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetRegionData(
    hrgn: ?HRGN,
    nCount: u32,
    // TODO: what to do with BytesParamIndex 1?
    lpRgnData: ?*RGNDATA,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetRgnBox(
    hrgn: ?HRGN,
    lprc: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetStockObject(
    i: GET_STOCK_OBJECT_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HGDIOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetStretchBltMode(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetSystemPaletteEntries(
    hdc: ?HDC,
    iStart: u32,
    cEntries: u32,
    pPalEntries: ?[*]PALETTEENTRY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetSystemPaletteUse(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextCharacterExtra(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextAlign(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextColor(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentPointA(
    hdc: ?HDC,
    lpString: [*:0]const u8,
    c: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentPointW(
    hdc: ?HDC,
    lpString: [*:0]const u16,
    c: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentPoint32A(
    hdc: ?HDC,
    lpString: [*:0]const u8,
    c: i32,
    psizl: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentPoint32W(
    hdc: ?HDC,
    lpString: [*:0]const u16,
    c: i32,
    psizl: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentExPointA(
    hdc: ?HDC,
    lpszString: [*:0]const u8,
    cchString: i32,
    nMaxExtent: i32,
    lpnFit: ?*i32,
    lpnDx: ?[*]i32,
    lpSize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentExPointW(
    hdc: ?HDC,
    lpszString: [*:0]const u16,
    cchString: i32,
    nMaxExtent: i32,
    lpnFit: ?*i32,
    lpnDx: ?[*]i32,
    lpSize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetFontLanguageInfo(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharacterPlacementA(
    hdc: ?HDC,
    lpString: [*:0]const u8,
    nCount: i32,
    nMexExtent: i32,
    lpResults: ?*GCP_RESULTSA,
    dwFlags: GET_CHARACTER_PLACEMENT_FLAGS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharacterPlacementW(
    hdc: ?HDC,
    lpString: [*:0]const u16,
    nCount: i32,
    nMexExtent: i32,
    lpResults: ?*GCP_RESULTSW,
    dwFlags: GET_CHARACTER_PLACEMENT_FLAGS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetFontUnicodeRanges(
    hdc: ?HDC,
    lpgs: ?*GLYPHSET,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetGlyphIndicesA(
    hdc: ?HDC,
    lpstr: [*:0]const u8,
    c: i32,
    pgi: [*:0]u16,
    fl: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetGlyphIndicesW(
    hdc: ?HDC,
    lpstr: [*:0]const u16,
    c: i32,
    pgi: [*:0]u16,
    fl: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentPointI(
    hdc: ?HDC,
    pgiIn: [*:0]u16,
    cgi: i32,
    psize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextExtentExPointI(
    hdc: ?HDC,
    lpwszString: [*:0]u16,
    cwchString: i32,
    nMaxExtent: i32,
    lpnFit: ?*i32,
    lpnDx: ?[*]i32,
    lpSize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharWidthI(
    hdc: ?HDC,
    giFirst: u32,
    cgi: u32,
    pgi: ?[*:0]u16,
    piWidths: [*]i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetCharABCWidthsI(
    hdc: ?HDC,
    giFirst: u32,
    cgi: u32,
    pgi: ?[*:0]u16,
    pabc: [*]ABC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AddFontResourceExA(
    name: ?[*:0]const u8,
    fl: FONT_RESOURCE_CHARACTERISTICS,
    res: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AddFontResourceExW(
    name: ?[*:0]const u16,
    fl: FONT_RESOURCE_CHARACTERISTICS,
    res: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RemoveFontResourceExA(
    name: ?[*:0]const u8,
    fl: u32,
    pdv: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RemoveFontResourceExW(
    name: ?[*:0]const u16,
    fl: u32,
    pdv: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AddFontMemResourceEx(
    // TODO: what to do with BytesParamIndex 1?
    pFileView: ?*anyopaque,
    cjSize: u32,
    pvResrved: ?*anyopaque,
    pNumFonts: ?*u32,
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RemoveFontMemResourceEx(
    h: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateFontIndirectExA(
    param0: ?*const ENUMLOGFONTEXDVA,
) callconv(@import("std").os.windows.WINAPI) ?HFONT;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateFontIndirectExW(
    param0: ?*const ENUMLOGFONTEXDVW,
) callconv(@import("std").os.windows.WINAPI) ?HFONT;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetViewportExtEx(
    hdc: ?HDC,
    lpsize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetViewportOrgEx(
    hdc: ?HDC,
    lppoint: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetWindowExtEx(
    hdc: ?HDC,
    lpsize: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetWindowOrgEx(
    hdc: ?HDC,
    lppoint: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn IntersectClipRect(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn InvertRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn LineDDA(
    xStart: i32,
    yStart: i32,
    xEnd: i32,
    yEnd: i32,
    lpProc: ?LINEDDAPROC,
    data: LPARAM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn LineTo(
    hdc: ?HDC,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn MaskBlt(
    hdcDest: ?HDC,
    xDest: i32,
    yDest: i32,
    width: i32,
    height: i32,
    hdcSrc: ?HDC,
    xSrc: i32,
    ySrc: i32,
    hbmMask: ?HBITMAP,
    xMask: i32,
    yMask: i32,
    rop: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PlgBlt(
    hdcDest: ?HDC,
    lpPoint: *[3]POINT,
    hdcSrc: ?HDC,
    xSrc: i32,
    ySrc: i32,
    width: i32,
    height: i32,
    hbmMask: ?HBITMAP,
    xMask: i32,
    yMask: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn OffsetClipRgn(
    hdc: ?HDC,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn OffsetRgn(
    hrgn: ?HRGN,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PatBlt(
    hdc: ?HDC,
    x: i32,
    y: i32,
    w: i32,
    h: i32,
    rop: ROP_CODE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn Pie(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
    xr1: i32,
    yr1: i32,
    xr2: i32,
    yr2: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PlayMetaFile(
    hdc: ?HDC,
    hmf: ?HMETAFILE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PaintRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyPolygon(
    hdc: ?HDC,
    apt: ?*const POINT,
    asz: [*]const i32,
    csz: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PtInRegion(
    hrgn: ?HRGN,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PtVisible(
    hdc: ?HDC,
    x: i32,
    y: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RectInRegion(
    hrgn: ?HRGN,
    lprect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RectVisible(
    hdc: ?HDC,
    lprect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn Rectangle(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RestoreDC(
    hdc: ?HDC,
    nSavedDC: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ResetDCA(
    hdc: ?HDC,
    lpdm: ?*const DEVMODEA,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ResetDCW(
    hdc: ?HDC,
    lpdm: ?*const DEVMODEW,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RealizePalette(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RemoveFontResourceA(
    lpFileName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RemoveFontResourceW(
    lpFileName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn RoundRect(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
    width: i32,
    height: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ResizePalette(
    hpal: ?HPALETTE,
    n: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SaveDC(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SelectClipRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExtSelectClipRgn(
    hdc: ?HDC,
    hrgn: ?HRGN,
    mode: RGN_COMBINE_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetMetaRgn(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SelectObject(
    hdc: ?HDC,
    h: ?HGDIOBJ,
) callconv(@import("std").os.windows.WINAPI) ?HGDIOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SelectPalette(
    hdc: ?HDC,
    hPal: ?HPALETTE,
    bForceBkgd: BOOL,
) callconv(@import("std").os.windows.WINAPI) ?HPALETTE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetBkColor(
    hdc: ?HDC,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetDCBrushColor(
    hdc: ?HDC,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetDCPenColor(
    hdc: ?HDC,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetBkMode(
    hdc: ?HDC,
    mode: BACKGROUND_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetBitmapBits(
    hbm: ?HBITMAP,
    cb: u32,
    // TODO: what to do with BytesParamIndex 1?
    pvBits: ?*const anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetBoundsRect(
    hdc: ?HDC,
    lprect: ?*const RECT,
    flags: SET_BOUNDS_RECT_FLAGS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetDIBits(
    hdc: ?HDC,
    hbm: ?HBITMAP,
    start: u32,
    cLines: u32,
    lpBits: ?*const anyopaque,
    lpbmi: ?*const BITMAPINFO,
    ColorUse: DIB_USAGE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetDIBitsToDevice(
    hdc: ?HDC,
    xDest: i32,
    yDest: i32,
    w: u32,
    h: u32,
    xSrc: i32,
    ySrc: i32,
    StartScan: u32,
    cLines: u32,
    lpvBits: ?*const anyopaque,
    lpbmi: ?*const BITMAPINFO,
    ColorUse: DIB_USAGE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetMapperFlags(
    hdc: ?HDC,
    flags: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetGraphicsMode(
    hdc: ?HDC,
    iMode: GRAPHICS_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetMapMode(
    hdc: ?HDC,
    iMode: HDC_MAP_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetLayout(
    hdc: ?HDC,
    l: DC_LAYOUT,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetLayout(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetMetaFileBitsEx(
    cbBuffer: u32,
    // TODO: what to do with BytesParamIndex 0?
    lpData: ?*const u8,
) callconv(@import("std").os.windows.WINAPI) ?HMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetPaletteEntries(
    hpal: ?HPALETTE,
    iStart: u32,
    cEntries: u32,
    pPalEntries: [*]const PALETTEENTRY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetPixel(
    hdc: ?HDC,
    x: i32,
    y: i32,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetPixelV(
    hdc: ?HDC,
    x: i32,
    y: i32,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetPolyFillMode(
    hdc: ?HDC,
    mode: CREATE_POLYGON_RGN_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn StretchBlt(
    hdcDest: ?HDC,
    xDest: i32,
    yDest: i32,
    wDest: i32,
    hDest: i32,
    hdcSrc: ?HDC,
    xSrc: i32,
    ySrc: i32,
    wSrc: i32,
    hSrc: i32,
    rop: ROP_CODE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetRectRgn(
    hrgn: ?HRGN,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn StretchDIBits(
    hdc: ?HDC,
    xDest: i32,
    yDest: i32,
    DestWidth: i32,
    DestHeight: i32,
    xSrc: i32,
    ySrc: i32,
    SrcWidth: i32,
    SrcHeight: i32,
    lpBits: ?*const anyopaque,
    lpbmi: ?*const BITMAPINFO,
    iUsage: DIB_USAGE,
    rop: ROP_CODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetROP2(
    hdc: ?HDC,
    rop2: R2_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetStretchBltMode(
    hdc: ?HDC,
    mode: STRETCH_BLT_MODE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetSystemPaletteUse(
    hdc: ?HDC,
    use: SYSTEM_PALETTE_USE,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetTextCharacterExtra(
    hdc: ?HDC,
    extra: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetTextColor(
    hdc: ?HDC,
    color: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetTextAlign(
    hdc: ?HDC,
    @"align": TEXT_ALIGN_OPTIONS,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetTextJustification(
    hdc: ?HDC,
    extra: i32,
    count: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn UpdateColors(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "msimg32" fn AlphaBlend(
    hdcDest: ?HDC,
    xoriginDest: i32,
    yoriginDest: i32,
    wDest: i32,
    hDest: i32,
    hdcSrc: ?HDC,
    xoriginSrc: i32,
    yoriginSrc: i32,
    wSrc: i32,
    hSrc: i32,
    ftn: BLENDFUNCTION,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "msimg32" fn TransparentBlt(
    hdcDest: ?HDC,
    xoriginDest: i32,
    yoriginDest: i32,
    wDest: i32,
    hDest: i32,
    hdcSrc: ?HDC,
    xoriginSrc: i32,
    yoriginSrc: i32,
    wSrc: i32,
    hSrc: i32,
    crTransparent: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "msimg32" fn GradientFill(
    hdc: ?HDC,
    pVertex: [*]TRIVERTEX,
    nVertex: u32,
    pMesh: ?*anyopaque,
    nMesh: u32,
    ulMode: GRADIENT_FILL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiAlphaBlend(
    hdcDest: ?HDC,
    xoriginDest: i32,
    yoriginDest: i32,
    wDest: i32,
    hDest: i32,
    hdcSrc: ?HDC,
    xoriginSrc: i32,
    yoriginSrc: i32,
    wSrc: i32,
    hSrc: i32,
    ftn: BLENDFUNCTION,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiTransparentBlt(
    hdcDest: ?HDC,
    xoriginDest: i32,
    yoriginDest: i32,
    wDest: i32,
    hDest: i32,
    hdcSrc: ?HDC,
    xoriginSrc: i32,
    yoriginSrc: i32,
    wSrc: i32,
    hSrc: i32,
    crTransparent: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiGradientFill(
    hdc: ?HDC,
    pVertex: [*]TRIVERTEX,
    nVertex: u32,
    pMesh: ?*anyopaque,
    nCount: u32,
    ulMode: GRADIENT_FILL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PlayMetaFileRecord(
    hdc: ?HDC,
    lpHandleTable: [*]HANDLETABLE,
    lpMR: ?*METARECORD,
    noObjs: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumMetaFile(
    hdc: ?HDC,
    hmf: ?HMETAFILE,
    proc: ?MFENUMPROC,
    param3: LPARAM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CloseEnhMetaFile(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) ?HENHMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CopyEnhMetaFileA(
    hEnh: ?HENHMETAFILE,
    lpFileName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HENHMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CopyEnhMetaFileW(
    hEnh: ?HENHMETAFILE,
    lpFileName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HENHMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateEnhMetaFileA(
    hdc: ?HDC,
    lpFilename: ?[*:0]const u8,
    lprc: ?*const RECT,
    lpDesc: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) HdcMetdataEnhFileHandle;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateEnhMetaFileW(
    hdc: ?HDC,
    lpFilename: ?[*:0]const u16,
    lprc: ?*const RECT,
    lpDesc: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) HdcMetdataEnhFileHandle;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn DeleteEnhMetaFile(
    hmf: ?HENHMETAFILE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EnumEnhMetaFile(
    hdc: ?HDC,
    hmf: ?HENHMETAFILE,
    proc: ?ENHMFENUMPROC,
    param3: ?*anyopaque,
    lpRect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFileA(
    lpName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HENHMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFileW(
    lpName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HENHMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFileBits(
    hEMF: ?HENHMETAFILE,
    nSize: u32,
    // TODO: what to do with BytesParamIndex 1?
    lpData: ?*u8,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFileDescriptionA(
    hemf: ?HENHMETAFILE,
    cchBuffer: u32,
    lpDescription: ?[*:0]u8,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFileDescriptionW(
    hemf: ?HENHMETAFILE,
    cchBuffer: u32,
    lpDescription: ?[*:0]u16,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFileHeader(
    hemf: ?HENHMETAFILE,
    nSize: u32,
    // TODO: what to do with BytesParamIndex 1?
    lpEnhMetaHeader: ?*ENHMETAHEADER,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetEnhMetaFilePaletteEntries(
    hemf: ?HENHMETAFILE,
    nNumEntries: u32,
    lpPaletteEntries: ?[*]PALETTEENTRY,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetWinMetaFileBits(
    hemf: ?HENHMETAFILE,
    cbData16: u32,
    // TODO: what to do with BytesParamIndex 1?
    pData16: ?*u8,
    iMapMode: i32,
    hdcRef: ?HDC,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PlayEnhMetaFile(
    hdc: ?HDC,
    hmf: ?HENHMETAFILE,
    lprect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PlayEnhMetaFileRecord(
    hdc: ?HDC,
    pht: [*]HANDLETABLE,
    pmr: ?*const ENHMETARECORD,
    cht: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetEnhMetaFileBits(
    nSize: u32,
    // TODO: what to do with BytesParamIndex 0?
    pb: ?*const u8,
) callconv(@import("std").os.windows.WINAPI) ?HENHMETAFILE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiComment(
    hdc: ?HDC,
    nSize: u32,
    // TODO: what to do with BytesParamIndex 1?
    lpData: ?*const u8,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextMetricsA(
    hdc: ?HDC,
    lptm: ?*TEXTMETRICA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextMetricsW(
    hdc: ?HDC,
    lptm: ?*TEXTMETRICW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AngleArc(
    hdc: ?HDC,
    x: i32,
    y: i32,
    r: u32,
    StartAngle: f32,
    SweepAngle: f32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyPolyline(
    hdc: ?HDC,
    apt: ?*const POINT,
    asz: [*]const u32,
    csz: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetWorldTransform(
    hdc: ?HDC,
    lpxf: ?*XFORM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetWorldTransform(
    hdc: ?HDC,
    lpxf: ?*const XFORM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ModifyWorldTransform(
    hdc: ?HDC,
    lpxf: ?*const XFORM,
    mode: MODIFY_WORLD_TRANSFORM_MODE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CombineTransform(
    lpxfOut: ?*XFORM,
    lpxf1: ?*const XFORM,
    lpxf2: ?*const XFORM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateDIBSection(
    hdc: ?HDC,
    pbmi: ?*const BITMAPINFO,
    usage: DIB_USAGE,
    ppvBits: ?*?*anyopaque,
    hSection: ?HANDLE,
    offset: u32,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetDIBColorTable(
    hdc: ?HDC,
    iStart: u32,
    cEntries: u32,
    prgbq: [*]RGBQUAD,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetDIBColorTable(
    hdc: ?HDC,
    iStart: u32,
    cEntries: u32,
    prgbq: [*]const RGBQUAD,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetColorAdjustment(
    hdc: ?HDC,
    lpca: ?*const COLORADJUSTMENT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetColorAdjustment(
    hdc: ?HDC,
    lpca: ?*COLORADJUSTMENT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreateHalftonePalette(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) ?HPALETTE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn AbortPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ArcTo(
    hdc: ?HDC,
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
    xr1: i32,
    yr1: i32,
    xr2: i32,
    yr2: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn BeginPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CloseFigure(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EndPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FillPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FlattenPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetPath(
    hdc: ?HDC,
    apt: ?[*]POINT,
    aj: ?[*:0]u8,
    cpt: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PathToRegion(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyDraw(
    hdc: ?HDC,
    apt: [*]const POINT,
    aj: [*:0]const u8,
    cpt: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SelectClipPath(
    hdc: ?HDC,
    mode: RGN_COMBINE_MODE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetArcDirection(
    hdc: ?HDC,
    dir: ARC_DIRECTION,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetMiterLimit(
    hdc: ?HDC,
    limit: f32,
    old: ?*f32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn StrokeAndFillPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn StrokePath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn WidenPath(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExtCreatePen(
    iPenStyle: PEN_STYLE,
    cWidth: u32,
    plbrush: ?*const LOGBRUSH,
    cStyle: u32,
    pstyle: ?[*]const u32,
) callconv(@import("std").os.windows.WINAPI) ?HPEN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetMiterLimit(
    hdc: ?HDC,
    plimit: ?*f32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetArcDirection(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetObjectW(
    h: ?HGDIOBJ,
    c: i32,
    // TODO: what to do with BytesParamIndex 1?
    pv: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn MoveToEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn TextOutA(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lpString: [*:0]const u8,
    c: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn TextOutW(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lpString: [*:0]const u16,
    c: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExtTextOutA(
    hdc: ?HDC,
    x: i32,
    y: i32,
    options: ETO_OPTIONS,
    lprect: ?*const RECT,
    lpString: ?[*:0]const u8,
    c: u32,
    lpDx: ?[*]const i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ExtTextOutW(
    hdc: ?HDC,
    x: i32,
    y: i32,
    options: ETO_OPTIONS,
    lprect: ?*const RECT,
    lpString: ?[*:0]const u16,
    c: u32,
    lpDx: ?[*]const i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyTextOutA(
    hdc: ?HDC,
    ppt: [*]const POLYTEXTA,
    nstrings: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyTextOutW(
    hdc: ?HDC,
    ppt: [*]const POLYTEXTW,
    nstrings: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CreatePolygonRgn(
    pptl: [*]const POINT,
    cPoint: i32,
    iMode: CREATE_POLYGON_RGN_MODE,
) callconv(@import("std").os.windows.WINAPI) ?HRGN;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn DPtoLP(
    hdc: ?HDC,
    lppt: [*]POINT,
    c: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn LPtoDP(
    hdc: ?HDC,
    lppt: [*]POINT,
    c: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn Polygon(
    hdc: ?HDC,
    apt: [*]const POINT,
    cpt: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn Polyline(
    hdc: ?HDC,
    apt: [*]const POINT,
    cpt: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyBezier(
    hdc: ?HDC,
    apt: [*]const POINT,
    cpt: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolyBezierTo(
    hdc: ?HDC,
    apt: [*]const POINT,
    cpt: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PolylineTo(
    hdc: ?HDC,
    apt: [*]const POINT,
    cpt: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetViewportExtEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetViewportOrgEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetWindowExtEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetWindowOrgEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn OffsetViewportOrgEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn OffsetWindowOrgEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ScaleViewportExtEx(
    hdc: ?HDC,
    xn: i32,
    dx: i32,
    yn: i32,
    yd: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn ScaleWindowExtEx(
    hdc: ?HDC,
    xn: i32,
    xd: i32,
    yn: i32,
    yd: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetBitmapDimensionEx(
    hbm: ?HBITMAP,
    w: i32,
    h: i32,
    lpsz: ?*SIZE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn SetBrushOrgEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextFaceA(
    hdc: ?HDC,
    c: i32,
    lpName: ?[*:0]u8,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetTextFaceW(
    hdc: ?HDC,
    c: i32,
    lpName: ?[*:0]u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetKerningPairsA(
    hdc: ?HDC,
    nPairs: u32,
    lpKernPair: ?[*]KERNINGPAIR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetKerningPairsW(
    hdc: ?HDC,
    nPairs: u32,
    lpKernPair: ?[*]KERNINGPAIR,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GetDCOrgEx(
    hdc: ?HDC,
    lppt: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "gdi32" fn FixBrushOrgEx(
    hdc: ?HDC,
    x: i32,
    y: i32,
    ptl: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn UnrealizeObject(
    h: ?HGDIOBJ,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiFlush() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiSetBatchLimit(
    dw: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn GdiGetBatchLimit() callconv(@import("std").os.windows.WINAPI) u32;

pub extern "opengl32" fn wglSwapMultipleBuffers(
    param0: u32,
    param1: ?*const WGLSWAP,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "fontsub" fn CreateFontPackage(
    puchSrcBuffer: ?*const u8,
    ulSrcBufferSize: u32,
    ppuchFontPackageBuffer: ?*?*u8,
    pulFontPackageBufferSize: ?*u32,
    pulBytesWritten: ?*u32,
    usFlag: u16,
    usTTCIndex: u16,
    usSubsetFormat: u16,
    usSubsetLanguage: u16,
    usSubsetPlatform: CREATE_FONT_PACKAGE_SUBSET_PLATFORM,
    usSubsetEncoding: CREATE_FONT_PACKAGE_SUBSET_ENCODING,
    pusSubsetKeepList: ?*const u16,
    usSubsetListCount: u16,
    lpfnAllocate: ?CFP_ALLOCPROC,
    lpfnReAllocate: ?CFP_REALLOCPROC,
    lpfnFree: ?CFP_FREEPROC,
    lpvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.1.2600'
pub extern "fontsub" fn MergeFontPackage(
    puchMergeFontBuffer: ?*const u8,
    ulMergeFontBufferSize: u32,
    puchFontPackageBuffer: ?*const u8,
    ulFontPackageBufferSize: u32,
    ppuchDestBuffer: ?*?*u8,
    pulDestBufferSize: ?*u32,
    pulBytesWritten: ?*u32,
    usMode: u16,
    lpfnAllocate: ?CFP_ALLOCPROC,
    lpfnReAllocate: ?CFP_REALLOCPROC,
    lpfnFree: ?CFP_FREEPROC,
    lpvReserved: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTEmbedFont(
    hDC: ?HDC,
    ulFlags: TTEMBED_FLAGS,
    ulCharSet: EMBED_FONT_CHARSET,
    pulPrivStatus: ?*EMBEDDED_FONT_PRIV_STATUS,
    pulStatus: ?*u32,
    lpfnWriteToStream: ?WRITEEMBEDPROC,
    lpvWriteStream: ?*anyopaque,
    pusCharCodeSet: [*:0]u16,
    usCharCodeCount: u16,
    usLanguage: u16,
    pTTEmbedInfo: ?*TTEMBEDINFO,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTEmbedFontFromFileA(
    hDC: ?HDC,
    szFontFileName: ?[*:0]const u8,
    usTTCIndex: u16,
    ulFlags: TTEMBED_FLAGS,
    ulCharSet: EMBED_FONT_CHARSET,
    pulPrivStatus: ?*EMBEDDED_FONT_PRIV_STATUS,
    pulStatus: ?*u32,
    lpfnWriteToStream: ?WRITEEMBEDPROC,
    lpvWriteStream: ?*anyopaque,
    pusCharCodeSet: [*:0]u16,
    usCharCodeCount: u16,
    usLanguage: u16,
    pTTEmbedInfo: ?*TTEMBEDINFO,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTLoadEmbeddedFont(
    phFontReference: ?*?HANDLE,
    ulFlags: u32,
    pulPrivStatus: ?*EMBEDDED_FONT_PRIV_STATUS,
    ulPrivs: FONT_LICENSE_PRIVS,
    pulStatus: ?*TTLOAD_EMBEDDED_FONT_STATUS,
    lpfnReadFromStream: ?READEMBEDPROC,
    lpvReadStream: ?*anyopaque,
    szWinFamilyName: ?PWSTR,
    szMacFamilyName: ?PSTR,
    pTTLoadInfo: ?*TTLOADINFO,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTGetEmbeddedFontInfo(
    ulFlags: TTEMBED_FLAGS,
    pulPrivStatus: ?*u32,
    ulPrivs: FONT_LICENSE_PRIVS,
    pulStatus: ?*u32,
    lpfnReadFromStream: ?READEMBEDPROC,
    lpvReadStream: ?*anyopaque,
    pTTLoadInfo: ?*TTLOADINFO,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTDeleteEmbeddedFont(
    hFontReference: ?HANDLE,
    ulFlags: u32,
    pulStatus: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTGetEmbeddingType(
    hDC: ?HDC,
    pulEmbedType: ?*EMBEDDED_FONT_PRIV_STATUS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTCharToUnicode(
    hDC: ?HDC,
    pucCharCodes: [*:0]u8,
    ulCharCodeSize: u32,
    pusShortCodes: [*:0]u16,
    ulShortCodeSize: u32,
    ulFlags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTRunValidationTests(
    hDC: ?HDC,
    pTestParam: ?*TTVALIDATIONTESTSPARAMS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTIsEmbeddingEnabled(
    hDC: ?HDC,
    pbEnabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTIsEmbeddingEnabledForFacename(
    lpszFacename: ?[*:0]const u8,
    pbEnabled: ?*BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTEnableEmbeddingForFacename(
    lpszFacename: ?[*:0]const u8,
    bEnable: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTEmbedFontEx(
    hDC: ?HDC,
    ulFlags: TTEMBED_FLAGS,
    ulCharSet: EMBED_FONT_CHARSET,
    pulPrivStatus: ?*EMBEDDED_FONT_PRIV_STATUS,
    pulStatus: ?*u32,
    lpfnWriteToStream: ?WRITEEMBEDPROC,
    lpvWriteStream: ?*anyopaque,
    pulCharCodeSet: [*]u32,
    usCharCodeCount: u16,
    usLanguage: u16,
    pTTEmbedInfo: ?*TTEMBEDINFO,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTRunValidationTestsEx(
    hDC: ?HDC,
    pTestParam: ?*TTVALIDATIONTESTSPARAMSEX,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "t2embed" fn TTGetNewFontName(
    phFontReference: ?*?HANDLE,
    wzWinFamilyName: [*:0]u16,
    cchMaxWinName: i32,
    szMacFamilyName: [*:0]u8,
    cchMaxMacName: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawEdge(
    hdc: ?HDC,
    qrc: ?*RECT,
    edge: DRAWEDGE_FLAGS,
    grfFlags: DRAW_EDGE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawFrameControl(
    param0: ?HDC,
    param1: ?*RECT,
    param2: DFC_TYPE,
    param3: DFCS_STATE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawCaption(
    hwnd: ?HWND,
    hdc: ?HDC,
    lprect: ?*const RECT,
    flags: DRAW_CAPTION_FLAGS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawAnimatedRects(
    hwnd: ?HWND,
    idAni: i32,
    lprcFrom: ?*const RECT,
    lprcTo: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawTextA(
    hdc: ?HDC,
    lpchText: [*:0]const u8,
    cchText: i32,
    lprc: ?*RECT,
    format: DRAW_TEXT_FORMAT,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawTextW(
    hdc: ?HDC,
    lpchText: [*:0]const u16,
    cchText: i32,
    lprc: ?*RECT,
    format: DRAW_TEXT_FORMAT,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawTextExA(
    hdc: ?HDC,
    lpchText: [*:0]u8,
    cchText: i32,
    lprc: ?*RECT,
    format: DRAW_TEXT_FORMAT,
    lpdtp: ?*DRAWTEXTPARAMS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawTextExW(
    hdc: ?HDC,
    lpchText: [*:0]u16,
    cchText: i32,
    lprc: ?*RECT,
    format: DRAW_TEXT_FORMAT,
    lpdtp: ?*DRAWTEXTPARAMS,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GrayStringA(
    hDC: ?HDC,
    hBrush: ?HBRUSH,
    lpOutputFunc: ?GRAYSTRINGPROC,
    lpData: LPARAM,
    nCount: i32,
    X: i32,
    Y: i32,
    nWidth: i32,
    nHeight: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GrayStringW(
    hDC: ?HDC,
    hBrush: ?HBRUSH,
    lpOutputFunc: ?GRAYSTRINGPROC,
    lpData: LPARAM,
    nCount: i32,
    X: i32,
    Y: i32,
    nWidth: i32,
    nHeight: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawStateA(
    hdc: ?HDC,
    hbrFore: ?HBRUSH,
    qfnCallBack: ?DRAWSTATEPROC,
    lData: LPARAM,
    wData: WPARAM,
    x: i32,
    y: i32,
    cx: i32,
    cy: i32,
    uFlags: DRAWSTATE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawStateW(
    hdc: ?HDC,
    hbrFore: ?HBRUSH,
    qfnCallBack: ?DRAWSTATEPROC,
    lData: LPARAM,
    wData: WPARAM,
    x: i32,
    y: i32,
    cx: i32,
    cy: i32,
    uFlags: DRAWSTATE_FLAGS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn TabbedTextOutA(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lpString: [*:0]const u8,
    chCount: i32,
    nTabPositions: i32,
    lpnTabStopPositions: ?[*]const i32,
    nTabOrigin: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn TabbedTextOutW(
    hdc: ?HDC,
    x: i32,
    y: i32,
    lpString: [*:0]const u16,
    chCount: i32,
    nTabPositions: i32,
    lpnTabStopPositions: ?[*]const i32,
    nTabOrigin: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetTabbedTextExtentA(
    hdc: ?HDC,
    lpString: [*:0]const u8,
    chCount: i32,
    nTabPositions: i32,
    lpnTabStopPositions: ?[*]const i32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetTabbedTextExtentW(
    hdc: ?HDC,
    lpString: [*:0]const u16,
    chCount: i32,
    nTabPositions: i32,
    lpnTabStopPositions: ?[*]const i32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn UpdateWindow(
    hWnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn PaintDesktop(
    hdc: ?HDC,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn WindowFromDC(
    hDC: ?HDC,
) callconv(@import("std").os.windows.WINAPI) ?HWND;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetDC(
    hWnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetDCEx(
    hWnd: ?HWND,
    hrgnClip: ?HRGN,
    flags: GET_DCX_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetWindowDC(
    hWnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ReleaseDC(
    hWnd: ?HWND,
    hDC: ?HDC,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn BeginPaint(
    hWnd: ?HWND,
    lpPaint: ?*PAINTSTRUCT,
) callconv(@import("std").os.windows.WINAPI) ?HDC;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EndPaint(
    hWnd: ?HWND,
    lpPaint: ?*const PAINTSTRUCT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetUpdateRect(
    hWnd: ?HWND,
    lpRect: ?*RECT,
    bErase: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetUpdateRgn(
    hWnd: ?HWND,
    hRgn: ?HRGN,
    bErase: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn SetWindowRgn(
    hWnd: ?HWND,
    hRgn: ?HRGN,
    bRedraw: BOOL,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetWindowRgn(
    hWnd: ?HWND,
    hRgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetWindowRgnBox(
    hWnd: ?HWND,
    lprc: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ExcludeUpdateRgn(
    hDC: ?HDC,
    hWnd: ?HWND,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn InvalidateRect(
    hWnd: ?HWND,
    lpRect: ?*const RECT,
    bErase: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ValidateRect(
    hWnd: ?HWND,
    lpRect: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn InvalidateRgn(
    hWnd: ?HWND,
    hRgn: ?HRGN,
    bErase: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ValidateRgn(
    hWnd: ?HWND,
    hRgn: ?HRGN,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn RedrawWindow(
    hWnd: ?HWND,
    lprcUpdate: ?*const RECT,
    hrgnUpdate: ?HRGN,
    flags: REDRAW_WINDOW_FLAGS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn LockWindowUpdate(
    hWndLock: ?HWND,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ClientToScreen(
    hWnd: ?HWND,
    lpPoint: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ScreenToClient(
    hWnd: ?HWND,
    lpPoint: ?*POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn MapWindowPoints(
    hWndFrom: ?HWND,
    hWndTo: ?HWND,
    lpPoints: [*]POINT,
    cPoints: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetSysColorBrush(
    nIndex: i32,
) callconv(@import("std").os.windows.WINAPI) ?HBRUSH;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn DrawFocusRect(
    hDC: ?HDC,
    lprc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn FillRect(
    hDC: ?HDC,
    lprc: ?*const RECT,
    hbr: ?HBRUSH,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn FrameRect(
    hDC: ?HDC,
    lprc: ?*const RECT,
    hbr: ?HBRUSH,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn InvertRect(
    hDC: ?HDC,
    lprc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn SetRect(
    lprc: ?*RECT,
    xLeft: i32,
    yTop: i32,
    xRight: i32,
    yBottom: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn SetRectEmpty(
    lprc: ?*RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn CopyRect(
    lprcDst: ?*RECT,
    lprcSrc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn InflateRect(
    lprc: ?*RECT,
    dx: i32,
    dy: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn IntersectRect(
    lprcDst: ?*RECT,
    lprcSrc1: ?*const RECT,
    lprcSrc2: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn UnionRect(
    lprcDst: ?*RECT,
    lprcSrc1: ?*const RECT,
    lprcSrc2: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn SubtractRect(
    lprcDst: ?*RECT,
    lprcSrc1: ?*const RECT,
    lprcSrc2: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn OffsetRect(
    lprc: ?*RECT,
    dx: i32,
    dy: i32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn IsRectEmpty(
    lprc: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EqualRect(
    lprc1: ?*const RECT,
    lprc2: ?*const RECT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn PtInRect(
    lprc: ?*const RECT,
    pt: POINT,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn LoadBitmapA(
    hInstance: ?HINSTANCE,
    lpBitmapName: ?[*:0]const u8,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn LoadBitmapW(
    hInstance: ?HINSTANCE,
    lpBitmapName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ChangeDisplaySettingsA(
    lpDevMode: ?*DEVMODEA,
    dwFlags: CDS_TYPE,
) callconv(@import("std").os.windows.WINAPI) DISP_CHANGE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ChangeDisplaySettingsW(
    lpDevMode: ?*DEVMODEW,
    dwFlags: CDS_TYPE,
) callconv(@import("std").os.windows.WINAPI) DISP_CHANGE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ChangeDisplaySettingsExA(
    lpszDeviceName: ?[*:0]const u8,
    lpDevMode: ?*DEVMODEA,
    hwnd: ?HWND,
    dwflags: CDS_TYPE,
    lParam: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) DISP_CHANGE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn ChangeDisplaySettingsExW(
    lpszDeviceName: ?[*:0]const u16,
    lpDevMode: ?*DEVMODEW,
    hwnd: ?HWND,
    dwflags: CDS_TYPE,
    lParam: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) DISP_CHANGE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplaySettingsA(
    lpszDeviceName: ?[*:0]const u8,
    iModeNum: ENUM_DISPLAY_SETTINGS_MODE,
    lpDevMode: ?*DEVMODEA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplaySettingsW(
    lpszDeviceName: ?[*:0]const u16,
    iModeNum: ENUM_DISPLAY_SETTINGS_MODE,
    lpDevMode: ?*DEVMODEW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplaySettingsExA(
    lpszDeviceName: ?[*:0]const u8,
    iModeNum: ENUM_DISPLAY_SETTINGS_MODE,
    lpDevMode: ?*DEVMODEA,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplaySettingsExW(
    lpszDeviceName: ?[*:0]const u16,
    iModeNum: ENUM_DISPLAY_SETTINGS_MODE,
    lpDevMode: ?*DEVMODEW,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplayDevicesA(
    lpDevice: ?[*:0]const u8,
    iDevNum: u32,
    lpDisplayDevice: ?*DISPLAY_DEVICEA,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplayDevicesW(
    lpDevice: ?[*:0]const u16,
    iDevNum: u32,
    lpDisplayDevice: ?*DISPLAY_DEVICEW,
    dwFlags: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn MonitorFromPoint(
    pt: POINT,
    dwFlags: MONITOR_FROM_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HMONITOR;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn MonitorFromRect(
    lprc: ?*RECT,
    dwFlags: MONITOR_FROM_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HMONITOR;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn MonitorFromWindow(
    hwnd: ?HWND,
    dwFlags: MONITOR_FROM_FLAGS,
) callconv(@import("std").os.windows.WINAPI) ?HMONITOR;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetMonitorInfoA(
    hMonitor: ?HMONITOR,
    lpmi: ?*MONITORINFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn GetMonitorInfoW(
    hMonitor: ?HMONITOR,
    lpmi: ?*MONITORINFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "user32" fn EnumDisplayMonitors(
    hdc: ?HDC,
    lprcClip: ?*RECT,
    lpfnEnum: ?MONITORENUMPROC,
    dwData: LPARAM,
) callconv(@import("std").os.windows.WINAPI) BOOL;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (69)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {
        pub const TEXTMETRIC = thismodule.TEXTMETRICA;
        pub const NEWTEXTMETRIC = thismodule.NEWTEXTMETRICA;
        pub const LOGFONT = thismodule.LOGFONTA;
        pub const ENUMLOGFONT = thismodule.ENUMLOGFONTA;
        pub const ENUMLOGFONTEX = thismodule.ENUMLOGFONTEXA;
        pub const EXTLOGFONT = thismodule.EXTLOGFONTA;
        pub const DEVMODE = thismodule.DEVMODEA;
        pub const DISPLAY_DEVICE = thismodule.DISPLAY_DEVICEA;
        pub const OUTLINETEXTMETRIC = thismodule.OUTLINETEXTMETRICA;
        pub const POLYTEXT = thismodule.POLYTEXTA;
        pub const GCP_RESULTS = thismodule.GCP_RESULTSA;
        pub const FONTENUMPROC = thismodule.FONTENUMPROCA;
        pub const AXISINFO = thismodule.AXISINFOA;
        pub const AXESLIST = thismodule.AXESLISTA;
        pub const ENUMLOGFONTEXDV = thismodule.ENUMLOGFONTEXDVA;
        pub const MONITORINFOEX = thismodule.MONITORINFOEXA;
        pub const GetObject = thismodule.GetObjectA;
        pub const AddFontResource = thismodule.AddFontResourceA;
        pub const CopyMetaFile = thismodule.CopyMetaFileA;
        pub const CreateDC = thismodule.CreateDCA;
        pub const CreateFontIndirect = thismodule.CreateFontIndirectA;
        pub const CreateFont = thismodule.CreateFontA;
        pub const CreateIC = thismodule.CreateICA;
        pub const CreateMetaFile = thismodule.CreateMetaFileA;
        pub const CreateScalableFontResource = thismodule.CreateScalableFontResourceA;
        pub const EnumFontFamiliesEx = thismodule.EnumFontFamiliesExA;
        pub const EnumFontFamilies = thismodule.EnumFontFamiliesA;
        pub const EnumFonts = thismodule.EnumFontsA;
        pub const GetCharWidth = thismodule.GetCharWidthA;
        pub const GetCharWidth32 = thismodule.GetCharWidth32A;
        pub const GetCharWidthFloat = thismodule.GetCharWidthFloatA;
        pub const GetCharABCWidths = thismodule.GetCharABCWidthsA;
        pub const GetCharABCWidthsFloat = thismodule.GetCharABCWidthsFloatA;
        pub const GetGlyphOutline = thismodule.GetGlyphOutlineA;
        pub const GetMetaFile = thismodule.GetMetaFileA;
        pub const GetOutlineTextMetrics = thismodule.GetOutlineTextMetricsA;
        pub const GetTextExtentPoint = thismodule.GetTextExtentPointA;
        pub const GetTextExtentPoint32 = thismodule.GetTextExtentPoint32A;
        pub const GetTextExtentExPoint = thismodule.GetTextExtentExPointA;
        pub const GetCharacterPlacement = thismodule.GetCharacterPlacementA;
        pub const GetGlyphIndices = thismodule.GetGlyphIndicesA;
        pub const AddFontResourceEx = thismodule.AddFontResourceExA;
        pub const RemoveFontResourceEx = thismodule.RemoveFontResourceExA;
        pub const CreateFontIndirectEx = thismodule.CreateFontIndirectExA;
        pub const ResetDC = thismodule.ResetDCA;
        pub const RemoveFontResource = thismodule.RemoveFontResourceA;
        pub const CopyEnhMetaFile = thismodule.CopyEnhMetaFileA;
        pub const CreateEnhMetaFile = thismodule.CreateEnhMetaFileA;
        pub const GetEnhMetaFile = thismodule.GetEnhMetaFileA;
        pub const GetEnhMetaFileDescription = thismodule.GetEnhMetaFileDescriptionA;
        pub const GetTextMetrics = thismodule.GetTextMetricsA;
        pub const TextOut = thismodule.TextOutA;
        pub const ExtTextOut = thismodule.ExtTextOutA;
        pub const PolyTextOut = thismodule.PolyTextOutA;
        pub const GetTextFace = thismodule.GetTextFaceA;
        pub const GetKerningPairs = thismodule.GetKerningPairsA;
        pub const DrawText = thismodule.DrawTextA;
        pub const DrawTextEx = thismodule.DrawTextExA;
        pub const GrayString = thismodule.GrayStringA;
        pub const DrawState = thismodule.DrawStateA;
        pub const TabbedTextOut = thismodule.TabbedTextOutA;
        pub const GetTabbedTextExtent = thismodule.GetTabbedTextExtentA;
        pub const LoadBitmap = thismodule.LoadBitmapA;
        pub const ChangeDisplaySettings = thismodule.ChangeDisplaySettingsA;
        pub const ChangeDisplaySettingsEx = thismodule.ChangeDisplaySettingsExA;
        pub const EnumDisplaySettings = thismodule.EnumDisplaySettingsA;
        pub const EnumDisplaySettingsEx = thismodule.EnumDisplaySettingsExA;
        pub const EnumDisplayDevices = thismodule.EnumDisplayDevicesA;
        pub const GetMonitorInfo = thismodule.GetMonitorInfoA;
    },
    .wide => struct {
        pub const TEXTMETRIC = thismodule.TEXTMETRICW;
        pub const NEWTEXTMETRIC = thismodule.NEWTEXTMETRICW;
        pub const LOGFONT = thismodule.LOGFONTW;
        pub const ENUMLOGFONT = thismodule.ENUMLOGFONTW;
        pub const ENUMLOGFONTEX = thismodule.ENUMLOGFONTEXW;
        pub const EXTLOGFONT = thismodule.EXTLOGFONTW;
        pub const DEVMODE = thismodule.DEVMODEW;
        pub const DISPLAY_DEVICE = thismodule.DISPLAY_DEVICEW;
        pub const OUTLINETEXTMETRIC = thismodule.OUTLINETEXTMETRICW;
        pub const POLYTEXT = thismodule.POLYTEXTW;
        pub const GCP_RESULTS = thismodule.GCP_RESULTSW;
        pub const FONTENUMPROC = thismodule.FONTENUMPROCW;
        pub const AXISINFO = thismodule.AXISINFOW;
        pub const AXESLIST = thismodule.AXESLISTW;
        pub const ENUMLOGFONTEXDV = thismodule.ENUMLOGFONTEXDVW;
        pub const MONITORINFOEX = thismodule.MONITORINFOEXW;
        pub const GetObject = thismodule.GetObjectW;
        pub const AddFontResource = thismodule.AddFontResourceW;
        pub const CopyMetaFile = thismodule.CopyMetaFileW;
        pub const CreateDC = thismodule.CreateDCW;
        pub const CreateFontIndirect = thismodule.CreateFontIndirectW;
        pub const CreateFont = thismodule.CreateFontW;
        pub const CreateIC = thismodule.CreateICW;
        pub const CreateMetaFile = thismodule.CreateMetaFileW;
        pub const CreateScalableFontResource = thismodule.CreateScalableFontResourceW;
        pub const EnumFontFamiliesEx = thismodule.EnumFontFamiliesExW;
        pub const EnumFontFamilies = thismodule.EnumFontFamiliesW;
        pub const EnumFonts = thismodule.EnumFontsW;
        pub const GetCharWidth = thismodule.GetCharWidthW;
        pub const GetCharWidth32 = thismodule.GetCharWidth32W;
        pub const GetCharWidthFloat = thismodule.GetCharWidthFloatW;
        pub const GetCharABCWidths = thismodule.GetCharABCWidthsW;
        pub const GetCharABCWidthsFloat = thismodule.GetCharABCWidthsFloatW;
        pub const GetGlyphOutline = thismodule.GetGlyphOutlineW;
        pub const GetMetaFile = thismodule.GetMetaFileW;
        pub const GetOutlineTextMetrics = thismodule.GetOutlineTextMetricsW;
        pub const GetTextExtentPoint = thismodule.GetTextExtentPointW;
        pub const GetTextExtentPoint32 = thismodule.GetTextExtentPoint32W;
        pub const GetTextExtentExPoint = thismodule.GetTextExtentExPointW;
        pub const GetCharacterPlacement = thismodule.GetCharacterPlacementW;
        pub const GetGlyphIndices = thismodule.GetGlyphIndicesW;
        pub const AddFontResourceEx = thismodule.AddFontResourceExW;
        pub const RemoveFontResourceEx = thismodule.RemoveFontResourceExW;
        pub const CreateFontIndirectEx = thismodule.CreateFontIndirectExW;
        pub const ResetDC = thismodule.ResetDCW;
        pub const RemoveFontResource = thismodule.RemoveFontResourceW;
        pub const CopyEnhMetaFile = thismodule.CopyEnhMetaFileW;
        pub const CreateEnhMetaFile = thismodule.CreateEnhMetaFileW;
        pub const GetEnhMetaFile = thismodule.GetEnhMetaFileW;
        pub const GetEnhMetaFileDescription = thismodule.GetEnhMetaFileDescriptionW;
        pub const GetTextMetrics = thismodule.GetTextMetricsW;
        pub const TextOut = thismodule.TextOutW;
        pub const ExtTextOut = thismodule.ExtTextOutW;
        pub const PolyTextOut = thismodule.PolyTextOutW;
        pub const GetTextFace = thismodule.GetTextFaceW;
        pub const GetKerningPairs = thismodule.GetKerningPairsW;
        pub const DrawText = thismodule.DrawTextW;
        pub const DrawTextEx = thismodule.DrawTextExW;
        pub const GrayString = thismodule.GrayStringW;
        pub const DrawState = thismodule.DrawStateW;
        pub const TabbedTextOut = thismodule.TabbedTextOutW;
        pub const GetTabbedTextExtent = thismodule.GetTabbedTextExtentW;
        pub const LoadBitmap = thismodule.LoadBitmapW;
        pub const ChangeDisplaySettings = thismodule.ChangeDisplaySettingsW;
        pub const ChangeDisplaySettingsEx = thismodule.ChangeDisplaySettingsExW;
        pub const EnumDisplaySettings = thismodule.EnumDisplaySettingsW;
        pub const EnumDisplaySettingsEx = thismodule.EnumDisplaySettingsExW;
        pub const EnumDisplayDevices = thismodule.EnumDisplayDevicesW;
        pub const GetMonitorInfo = thismodule.GetMonitorInfoW;
    },
    .unspecified => if (@import("builtin").is_test) struct {
        pub const TEXTMETRIC = *opaque {};
        pub const NEWTEXTMETRIC = *opaque {};
        pub const LOGFONT = *opaque {};
        pub const ENUMLOGFONT = *opaque {};
        pub const ENUMLOGFONTEX = *opaque {};
        pub const EXTLOGFONT = *opaque {};
        pub const DEVMODE = *opaque {};
        pub const DISPLAY_DEVICE = *opaque {};
        pub const OUTLINETEXTMETRIC = *opaque {};
        pub const POLYTEXT = *opaque {};
        pub const GCP_RESULTS = *opaque {};
        pub const FONTENUMPROC = *opaque {};
        pub const AXISINFO = *opaque {};
        pub const AXESLIST = *opaque {};
        pub const ENUMLOGFONTEXDV = *opaque {};
        pub const MONITORINFOEX = *opaque {};
        pub const GetObject = *opaque {};
        pub const AddFontResource = *opaque {};
        pub const CopyMetaFile = *opaque {};
        pub const CreateDC = *opaque {};
        pub const CreateFontIndirect = *opaque {};
        pub const CreateFont = *opaque {};
        pub const CreateIC = *opaque {};
        pub const CreateMetaFile = *opaque {};
        pub const CreateScalableFontResource = *opaque {};
        pub const EnumFontFamiliesEx = *opaque {};
        pub const EnumFontFamilies = *opaque {};
        pub const EnumFonts = *opaque {};
        pub const GetCharWidth = *opaque {};
        pub const GetCharWidth32 = *opaque {};
        pub const GetCharWidthFloat = *opaque {};
        pub const GetCharABCWidths = *opaque {};
        pub const GetCharABCWidthsFloat = *opaque {};
        pub const GetGlyphOutline = *opaque {};
        pub const GetMetaFile = *opaque {};
        pub const GetOutlineTextMetrics = *opaque {};
        pub const GetTextExtentPoint = *opaque {};
        pub const GetTextExtentPoint32 = *opaque {};
        pub const GetTextExtentExPoint = *opaque {};
        pub const GetCharacterPlacement = *opaque {};
        pub const GetGlyphIndices = *opaque {};
        pub const AddFontResourceEx = *opaque {};
        pub const RemoveFontResourceEx = *opaque {};
        pub const CreateFontIndirectEx = *opaque {};
        pub const ResetDC = *opaque {};
        pub const RemoveFontResource = *opaque {};
        pub const CopyEnhMetaFile = *opaque {};
        pub const CreateEnhMetaFile = *opaque {};
        pub const GetEnhMetaFile = *opaque {};
        pub const GetEnhMetaFileDescription = *opaque {};
        pub const GetTextMetrics = *opaque {};
        pub const TextOut = *opaque {};
        pub const ExtTextOut = *opaque {};
        pub const PolyTextOut = *opaque {};
        pub const GetTextFace = *opaque {};
        pub const GetKerningPairs = *opaque {};
        pub const DrawText = *opaque {};
        pub const DrawTextEx = *opaque {};
        pub const GrayString = *opaque {};
        pub const DrawState = *opaque {};
        pub const TabbedTextOut = *opaque {};
        pub const GetTabbedTextExtent = *opaque {};
        pub const LoadBitmap = *opaque {};
        pub const ChangeDisplaySettings = *opaque {};
        pub const ChangeDisplaySettingsEx = *opaque {};
        pub const EnumDisplaySettings = *opaque {};
        pub const EnumDisplaySettingsEx = *opaque {};
        pub const EnumDisplayDevices = *opaque {};
        pub const GetMonitorInfo = *opaque {};
    } else struct {
        pub const TEXTMETRIC = @compileError("'TEXTMETRIC' requires that UNICODE be set to true or false in the root module");
        pub const NEWTEXTMETRIC = @compileError("'NEWTEXTMETRIC' requires that UNICODE be set to true or false in the root module");
        pub const LOGFONT = @compileError("'LOGFONT' requires that UNICODE be set to true or false in the root module");
        pub const ENUMLOGFONT = @compileError("'ENUMLOGFONT' requires that UNICODE be set to true or false in the root module");
        pub const ENUMLOGFONTEX = @compileError("'ENUMLOGFONTEX' requires that UNICODE be set to true or false in the root module");
        pub const EXTLOGFONT = @compileError("'EXTLOGFONT' requires that UNICODE be set to true or false in the root module");
        pub const DEVMODE = @compileError("'DEVMODE' requires that UNICODE be set to true or false in the root module");
        pub const DISPLAY_DEVICE = @compileError("'DISPLAY_DEVICE' requires that UNICODE be set to true or false in the root module");
        pub const OUTLINETEXTMETRIC = @compileError("'OUTLINETEXTMETRIC' requires that UNICODE be set to true or false in the root module");
        pub const POLYTEXT = @compileError("'POLYTEXT' requires that UNICODE be set to true or false in the root module");
        pub const GCP_RESULTS = @compileError("'GCP_RESULTS' requires that UNICODE be set to true or false in the root module");
        pub const FONTENUMPROC = @compileError("'FONTENUMPROC' requires that UNICODE be set to true or false in the root module");
        pub const AXISINFO = @compileError("'AXISINFO' requires that UNICODE be set to true or false in the root module");
        pub const AXESLIST = @compileError("'AXESLIST' requires that UNICODE be set to true or false in the root module");
        pub const ENUMLOGFONTEXDV = @compileError("'ENUMLOGFONTEXDV' requires that UNICODE be set to true or false in the root module");
        pub const MONITORINFOEX = @compileError("'MONITORINFOEX' requires that UNICODE be set to true or false in the root module");
        pub const GetObject = @compileError("'GetObject' requires that UNICODE be set to true or false in the root module");
        pub const AddFontResource = @compileError("'AddFontResource' requires that UNICODE be set to true or false in the root module");
        pub const CopyMetaFile = @compileError("'CopyMetaFile' requires that UNICODE be set to true or false in the root module");
        pub const CreateDC = @compileError("'CreateDC' requires that UNICODE be set to true or false in the root module");
        pub const CreateFontIndirect = @compileError("'CreateFontIndirect' requires that UNICODE be set to true or false in the root module");
        pub const CreateFont = @compileError("'CreateFont' requires that UNICODE be set to true or false in the root module");
        pub const CreateIC = @compileError("'CreateIC' requires that UNICODE be set to true or false in the root module");
        pub const CreateMetaFile = @compileError("'CreateMetaFile' requires that UNICODE be set to true or false in the root module");
        pub const CreateScalableFontResource = @compileError("'CreateScalableFontResource' requires that UNICODE be set to true or false in the root module");
        pub const EnumFontFamiliesEx = @compileError("'EnumFontFamiliesEx' requires that UNICODE be set to true or false in the root module");
        pub const EnumFontFamilies = @compileError("'EnumFontFamilies' requires that UNICODE be set to true or false in the root module");
        pub const EnumFonts = @compileError("'EnumFonts' requires that UNICODE be set to true or false in the root module");
        pub const GetCharWidth = @compileError("'GetCharWidth' requires that UNICODE be set to true or false in the root module");
        pub const GetCharWidth32 = @compileError("'GetCharWidth32' requires that UNICODE be set to true or false in the root module");
        pub const GetCharWidthFloat = @compileError("'GetCharWidthFloat' requires that UNICODE be set to true or false in the root module");
        pub const GetCharABCWidths = @compileError("'GetCharABCWidths' requires that UNICODE be set to true or false in the root module");
        pub const GetCharABCWidthsFloat = @compileError("'GetCharABCWidthsFloat' requires that UNICODE be set to true or false in the root module");
        pub const GetGlyphOutline = @compileError("'GetGlyphOutline' requires that UNICODE be set to true or false in the root module");
        pub const GetMetaFile = @compileError("'GetMetaFile' requires that UNICODE be set to true or false in the root module");
        pub const GetOutlineTextMetrics = @compileError("'GetOutlineTextMetrics' requires that UNICODE be set to true or false in the root module");
        pub const GetTextExtentPoint = @compileError("'GetTextExtentPoint' requires that UNICODE be set to true or false in the root module");
        pub const GetTextExtentPoint32 = @compileError("'GetTextExtentPoint32' requires that UNICODE be set to true or false in the root module");
        pub const GetTextExtentExPoint = @compileError("'GetTextExtentExPoint' requires that UNICODE be set to true or false in the root module");
        pub const GetCharacterPlacement = @compileError("'GetCharacterPlacement' requires that UNICODE be set to true or false in the root module");
        pub const GetGlyphIndices = @compileError("'GetGlyphIndices' requires that UNICODE be set to true or false in the root module");
        pub const AddFontResourceEx = @compileError("'AddFontResourceEx' requires that UNICODE be set to true or false in the root module");
        pub const RemoveFontResourceEx = @compileError("'RemoveFontResourceEx' requires that UNICODE be set to true or false in the root module");
        pub const CreateFontIndirectEx = @compileError("'CreateFontIndirectEx' requires that UNICODE be set to true or false in the root module");
        pub const ResetDC = @compileError("'ResetDC' requires that UNICODE be set to true or false in the root module");
        pub const RemoveFontResource = @compileError("'RemoveFontResource' requires that UNICODE be set to true or false in the root module");
        pub const CopyEnhMetaFile = @compileError("'CopyEnhMetaFile' requires that UNICODE be set to true or false in the root module");
        pub const CreateEnhMetaFile = @compileError("'CreateEnhMetaFile' requires that UNICODE be set to true or false in the root module");
        pub const GetEnhMetaFile = @compileError("'GetEnhMetaFile' requires that UNICODE be set to true or false in the root module");
        pub const GetEnhMetaFileDescription = @compileError("'GetEnhMetaFileDescription' requires that UNICODE be set to true or false in the root module");
        pub const GetTextMetrics = @compileError("'GetTextMetrics' requires that UNICODE be set to true or false in the root module");
        pub const TextOut = @compileError("'TextOut' requires that UNICODE be set to true or false in the root module");
        pub const ExtTextOut = @compileError("'ExtTextOut' requires that UNICODE be set to true or false in the root module");
        pub const PolyTextOut = @compileError("'PolyTextOut' requires that UNICODE be set to true or false in the root module");
        pub const GetTextFace = @compileError("'GetTextFace' requires that UNICODE be set to true or false in the root module");
        pub const GetKerningPairs = @compileError("'GetKerningPairs' requires that UNICODE be set to true or false in the root module");
        pub const DrawText = @compileError("'DrawText' requires that UNICODE be set to true or false in the root module");
        pub const DrawTextEx = @compileError("'DrawTextEx' requires that UNICODE be set to true or false in the root module");
        pub const GrayString = @compileError("'GrayString' requires that UNICODE be set to true or false in the root module");
        pub const DrawState = @compileError("'DrawState' requires that UNICODE be set to true or false in the root module");
        pub const TabbedTextOut = @compileError("'TabbedTextOut' requires that UNICODE be set to true or false in the root module");
        pub const GetTabbedTextExtent = @compileError("'GetTabbedTextExtent' requires that UNICODE be set to true or false in the root module");
        pub const LoadBitmap = @compileError("'LoadBitmap' requires that UNICODE be set to true or false in the root module");
        pub const ChangeDisplaySettings = @compileError("'ChangeDisplaySettings' requires that UNICODE be set to true or false in the root module");
        pub const ChangeDisplaySettingsEx = @compileError("'ChangeDisplaySettingsEx' requires that UNICODE be set to true or false in the root module");
        pub const EnumDisplaySettings = @compileError("'EnumDisplaySettings' requires that UNICODE be set to true or false in the root module");
        pub const EnumDisplaySettingsEx = @compileError("'EnumDisplaySettingsEx' requires that UNICODE be set to true or false in the root module");
        pub const EnumDisplayDevices = @compileError("'EnumDisplayDevices' requires that UNICODE be set to true or false in the root module");
        pub const GetMonitorInfo = @compileError("'GetMonitorInfo' requires that UNICODE be set to true or false in the root module");
    },
};
//--------------------------------------------------------------------------------
// Section: Imports (15)
//--------------------------------------------------------------------------------
const BOOL = @import("../foundation.zig").BOOL;
const CHAR = @import("../foundation.zig").CHAR;
const HANDLE = @import("../foundation.zig").HANDLE;
const HINSTANCE = @import("../foundation.zig").HINSTANCE;
const HWND = @import("../foundation.zig").HWND;
const LPARAM = @import("../foundation.zig").LPARAM;
const POINT = @import("../foundation.zig").POINT;
const POINTL = @import("../foundation.zig").POINTL;
const POINTS = @import("../foundation.zig").POINTS;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
const RECT = @import("../foundation.zig").RECT;
const RECTL = @import("../foundation.zig").RECTL;
const SIZE = @import("../foundation.zig").SIZE;
const WPARAM = @import("../foundation.zig").WPARAM;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "FONTENUMPROCA")) {
        _ = FONTENUMPROCA;
    }
    if (@hasDecl(@This(), "FONTENUMPROCW")) {
        _ = FONTENUMPROCW;
    }
    if (@hasDecl(@This(), "GOBJENUMPROC")) {
        _ = GOBJENUMPROC;
    }
    if (@hasDecl(@This(), "LINEDDAPROC")) {
        _ = LINEDDAPROC;
    }
    if (@hasDecl(@This(), "LPFNDEVMODE")) {
        _ = LPFNDEVMODE;
    }
    if (@hasDecl(@This(), "LPFNDEVCAPS")) {
        _ = LPFNDEVCAPS;
    }
    if (@hasDecl(@This(), "MFENUMPROC")) {
        _ = MFENUMPROC;
    }
    if (@hasDecl(@This(), "ENHMFENUMPROC")) {
        _ = ENHMFENUMPROC;
    }
    if (@hasDecl(@This(), "CFP_ALLOCPROC")) {
        _ = CFP_ALLOCPROC;
    }
    if (@hasDecl(@This(), "CFP_REALLOCPROC")) {
        _ = CFP_REALLOCPROC;
    }
    if (@hasDecl(@This(), "CFP_FREEPROC")) {
        _ = CFP_FREEPROC;
    }
    if (@hasDecl(@This(), "READEMBEDPROC")) {
        _ = READEMBEDPROC;
    }
    if (@hasDecl(@This(), "WRITEEMBEDPROC")) {
        _ = WRITEEMBEDPROC;
    }
    if (@hasDecl(@This(), "GRAYSTRINGPROC")) {
        _ = GRAYSTRINGPROC;
    }
    if (@hasDecl(@This(), "DRAWSTATEPROC")) {
        _ = DRAWSTATEPROC;
    }
    if (@hasDecl(@This(), "MONITORENUMPROC")) {
        _ = MONITORENUMPROC;
    }

    @setEvalBranchQuota(comptime @import("std").meta.declarations(@This()).len * 3);

    // reference all the pub declarations
    if (!@import("builtin").is_test) return;
    inline for (comptime @import("std").meta.declarations(@This())) |decl| {
        if (decl.is_pub) {
            _ = @field(@This(), decl.name);
        }
    }
}
