1967 lines
51 KiB
Go
1967 lines
51 KiB
Go
// Copyright 2010 The win Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build windows
|
|
|
|
package win
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
|
|
"golang.org/x/sys/windows"
|
|
)
|
|
|
|
// GetDeviceCaps index constants
|
|
const (
|
|
DRIVERVERSION = 0
|
|
TECHNOLOGY = 2
|
|
HORZSIZE = 4
|
|
VERTSIZE = 6
|
|
HORZRES = 8
|
|
VERTRES = 10
|
|
LOGPIXELSX = 88
|
|
LOGPIXELSY = 90
|
|
BITSPIXEL = 12
|
|
PLANES = 14
|
|
NUMBRUSHES = 16
|
|
NUMPENS = 18
|
|
NUMFONTS = 22
|
|
NUMCOLORS = 24
|
|
NUMMARKERS = 20
|
|
ASPECTX = 40
|
|
ASPECTY = 42
|
|
ASPECTXY = 44
|
|
PDEVICESIZE = 26
|
|
CLIPCAPS = 36
|
|
SIZEPALETTE = 104
|
|
NUMRESERVED = 106
|
|
COLORRES = 108
|
|
PHYSICALWIDTH = 110
|
|
PHYSICALHEIGHT = 111
|
|
PHYSICALOFFSETX = 112
|
|
PHYSICALOFFSETY = 113
|
|
SCALINGFACTORX = 114
|
|
SCALINGFACTORY = 115
|
|
VREFRESH = 116
|
|
DESKTOPHORZRES = 118
|
|
DESKTOPVERTRES = 117
|
|
BLTALIGNMENT = 119
|
|
SHADEBLENDCAPS = 120
|
|
COLORMGMTCAPS = 121
|
|
RASTERCAPS = 38
|
|
CURVECAPS = 28
|
|
LINECAPS = 30
|
|
POLYGONALCAPS = 32
|
|
TEXTCAPS = 34
|
|
)
|
|
|
|
// GetDeviceCaps TECHNOLOGY constants
|
|
const (
|
|
DT_PLOTTER = 0
|
|
DT_RASDISPLAY = 1
|
|
DT_RASPRINTER = 2
|
|
DT_RASCAMERA = 3
|
|
DT_CHARSTREAM = 4
|
|
DT_METAFILE = 5
|
|
DT_DISPFILE = 6
|
|
)
|
|
|
|
// GetDeviceCaps SHADEBLENDCAPS constants
|
|
const (
|
|
SB_NONE = 0x00
|
|
SB_CONST_ALPHA = 0x01
|
|
SB_PIXEL_ALPHA = 0x02
|
|
SB_PREMULT_ALPHA = 0x04
|
|
SB_GRAD_RECT = 0x10
|
|
SB_GRAD_TRI = 0x20
|
|
)
|
|
|
|
// GetDeviceCaps COLORMGMTCAPS constants
|
|
const (
|
|
CM_NONE = 0x00
|
|
CM_DEVICE_ICM = 0x01
|
|
CM_GAMMA_RAMP = 0x02
|
|
CM_CMYK_COLOR = 0x04
|
|
)
|
|
|
|
// GetDeviceCaps RASTERCAPS constants
|
|
const (
|
|
RC_BANDING = 2
|
|
RC_BITBLT = 1
|
|
RC_BITMAP64 = 8
|
|
RC_DI_BITMAP = 128
|
|
RC_DIBTODEV = 512
|
|
RC_FLOODFILL = 4096
|
|
RC_GDI20_OUTPUT = 16
|
|
RC_PALETTE = 256
|
|
RC_SCALING = 4
|
|
RC_STRETCHBLT = 2048
|
|
RC_STRETCHDIB = 8192
|
|
RC_DEVBITS = 0x8000
|
|
RC_OP_DX_OUTPUT = 0x4000
|
|
)
|
|
|
|
// GetDeviceCaps CURVECAPS constants
|
|
const (
|
|
CC_NONE = 0
|
|
CC_CIRCLES = 1
|
|
CC_PIE = 2
|
|
CC_CHORD = 4
|
|
CC_ELLIPSES = 8
|
|
CC_WIDE = 16
|
|
CC_STYLED = 32
|
|
CC_WIDESTYLED = 64
|
|
CC_INTERIORS = 128
|
|
CC_ROUNDRECT = 256
|
|
)
|
|
|
|
// GetDeviceCaps LINECAPS constants
|
|
const (
|
|
LC_NONE = 0
|
|
LC_POLYLINE = 2
|
|
LC_MARKER = 4
|
|
LC_POLYMARKER = 8
|
|
LC_WIDE = 16
|
|
LC_STYLED = 32
|
|
LC_WIDESTYLED = 64
|
|
LC_INTERIORS = 128
|
|
)
|
|
|
|
// GetDeviceCaps POLYGONALCAPS constants
|
|
const (
|
|
PC_NONE = 0
|
|
PC_POLYGON = 1
|
|
PC_POLYPOLYGON = 256
|
|
PC_PATHS = 512
|
|
PC_RECTANGLE = 2
|
|
PC_WINDPOLYGON = 4
|
|
PC_SCANLINE = 8
|
|
PC_TRAPEZOID = 4
|
|
PC_WIDE = 16
|
|
PC_STYLED = 32
|
|
PC_WIDESTYLED = 64
|
|
PC_INTERIORS = 128
|
|
)
|
|
|
|
// GetDeviceCaps TEXTCAPS constants
|
|
const (
|
|
TC_OP_CHARACTER = 1
|
|
TC_OP_STROKE = 2
|
|
TC_CP_STROKE = 4
|
|
TC_CR_90 = 8
|
|
TC_CR_ANY = 16
|
|
TC_SF_X_YINDEP = 32
|
|
TC_SA_DOUBLE = 64
|
|
TC_SA_INTEGER = 128
|
|
TC_SA_CONTIN = 256
|
|
TC_EA_DOUBLE = 512
|
|
TC_IA_ABLE = 1024
|
|
TC_UA_ABLE = 2048
|
|
TC_SO_ABLE = 4096
|
|
TC_RA_ABLE = 8192
|
|
TC_VA_ABLE = 16384
|
|
TC_RESERVED = 32768
|
|
TC_SCROLLBLT = 65536
|
|
)
|
|
|
|
// Brush styles
|
|
const (
|
|
BS_SOLID = 0
|
|
BS_NULL = 1
|
|
BS_HOLLOW = BS_NULL
|
|
BS_HATCHED = 2
|
|
BS_PATTERN = 3
|
|
BS_INDEXED = 4
|
|
BS_DIBPATTERN = 5
|
|
BS_DIBPATTERNPT = 6
|
|
BS_PATTERN8X8 = 7
|
|
BS_DIBPATTERN8X8 = 8
|
|
BS_MONOPATTERN = 9
|
|
)
|
|
|
|
// Hatch styles
|
|
const (
|
|
HS_HORIZONTAL = 0
|
|
HS_VERTICAL = 1
|
|
HS_FDIAGONAL = 2
|
|
HS_BDIAGONAL = 3
|
|
HS_CROSS = 4
|
|
HS_DIAGCROSS = 5
|
|
)
|
|
|
|
// Pen types
|
|
const (
|
|
PS_COSMETIC = 0x00000000
|
|
PS_GEOMETRIC = 0x00010000
|
|
PS_TYPE_MASK = 0x000F0000
|
|
)
|
|
|
|
// Pen styles
|
|
const (
|
|
PS_SOLID = 0
|
|
PS_DASH = 1
|
|
PS_DOT = 2
|
|
PS_DASHDOT = 3
|
|
PS_DASHDOTDOT = 4
|
|
PS_NULL = 5
|
|
PS_INSIDEFRAME = 6
|
|
PS_USERSTYLE = 7
|
|
PS_ALTERNATE = 8
|
|
PS_STYLE_MASK = 0x0000000F
|
|
)
|
|
|
|
// Pen cap types
|
|
const (
|
|
PS_ENDCAP_ROUND = 0x00000000
|
|
PS_ENDCAP_SQUARE = 0x00000100
|
|
PS_ENDCAP_FLAT = 0x00000200
|
|
PS_ENDCAP_MASK = 0x00000F00
|
|
)
|
|
|
|
// Pen join types
|
|
const (
|
|
PS_JOIN_ROUND = 0x00000000
|
|
PS_JOIN_BEVEL = 0x00001000
|
|
PS_JOIN_MITER = 0x00002000
|
|
PS_JOIN_MASK = 0x0000F000
|
|
)
|
|
|
|
// Print constants
|
|
const (
|
|
PRF_NONCLIENT = 0x00000002
|
|
PRF_CLIENT = 0x00000004
|
|
PRF_ERASEBKGND = 0x00000008
|
|
PRF_CHILDREN = 0x00000010
|
|
PRF_OWNED = 0x00000020
|
|
)
|
|
|
|
// Stock logical objects
|
|
const (
|
|
WHITE_BRUSH = 0
|
|
LTGRAY_BRUSH = 1
|
|
GRAY_BRUSH = 2
|
|
DKGRAY_BRUSH = 3
|
|
BLACK_BRUSH = 4
|
|
NULL_BRUSH = 5
|
|
HOLLOW_BRUSH = NULL_BRUSH
|
|
WHITE_PEN = 6
|
|
BLACK_PEN = 7
|
|
NULL_PEN = 8
|
|
OEM_FIXED_FONT = 10
|
|
ANSI_FIXED_FONT = 11
|
|
ANSI_VAR_FONT = 12
|
|
SYSTEM_FONT = 13
|
|
DEVICE_DEFAULT_FONT = 14
|
|
DEFAULT_PALETTE = 15
|
|
SYSTEM_FIXED_FONT = 16
|
|
DEFAULT_GUI_FONT = 17
|
|
DC_BRUSH = 18
|
|
DC_PEN = 19
|
|
)
|
|
|
|
const LF_FACESIZE = 32
|
|
|
|
// Font weight constants
|
|
const (
|
|
FW_DONTCARE = 0
|
|
FW_THIN = 100
|
|
FW_EXTRALIGHT = 200
|
|
FW_ULTRALIGHT = FW_EXTRALIGHT
|
|
FW_LIGHT = 300
|
|
FW_NORMAL = 400
|
|
FW_REGULAR = 400
|
|
FW_MEDIUM = 500
|
|
FW_SEMIBOLD = 600
|
|
FW_DEMIBOLD = FW_SEMIBOLD
|
|
FW_BOLD = 700
|
|
FW_EXTRABOLD = 800
|
|
FW_ULTRABOLD = FW_EXTRABOLD
|
|
FW_HEAVY = 900
|
|
FW_BLACK = FW_HEAVY
|
|
)
|
|
|
|
// Charset constants
|
|
const (
|
|
ANSI_CHARSET = 0
|
|
DEFAULT_CHARSET = 1
|
|
SYMBOL_CHARSET = 2
|
|
SHIFTJIS_CHARSET = 128
|
|
HANGEUL_CHARSET = 129
|
|
HANGUL_CHARSET = 129
|
|
GB2312_CHARSET = 134
|
|
CHINESEBIG5_CHARSET = 136
|
|
GREEK_CHARSET = 161
|
|
TURKISH_CHARSET = 162
|
|
HEBREW_CHARSET = 177
|
|
ARABIC_CHARSET = 178
|
|
BALTIC_CHARSET = 186
|
|
RUSSIAN_CHARSET = 204
|
|
THAI_CHARSET = 222
|
|
EASTEUROPE_CHARSET = 238
|
|
OEM_CHARSET = 255
|
|
JOHAB_CHARSET = 130
|
|
VIETNAMESE_CHARSET = 163
|
|
MAC_CHARSET = 77
|
|
)
|
|
|
|
// Font output precision constants
|
|
const (
|
|
OUT_DEFAULT_PRECIS = 0
|
|
OUT_STRING_PRECIS = 1
|
|
OUT_CHARACTER_PRECIS = 2
|
|
OUT_STROKE_PRECIS = 3
|
|
OUT_TT_PRECIS = 4
|
|
OUT_DEVICE_PRECIS = 5
|
|
OUT_RASTER_PRECIS = 6
|
|
OUT_TT_ONLY_PRECIS = 7
|
|
OUT_OUTLINE_PRECIS = 8
|
|
OUT_PS_ONLY_PRECIS = 10
|
|
)
|
|
|
|
// Font clipping precision constants
|
|
const (
|
|
CLIP_DEFAULT_PRECIS = 0
|
|
CLIP_CHARACTER_PRECIS = 1
|
|
CLIP_STROKE_PRECIS = 2
|
|
CLIP_MASK = 15
|
|
CLIP_LH_ANGLES = 16
|
|
CLIP_TT_ALWAYS = 32
|
|
CLIP_EMBEDDED = 128
|
|
)
|
|
|
|
// Font output quality constants
|
|
const (
|
|
DEFAULT_QUALITY = 0
|
|
DRAFT_QUALITY = 1
|
|
PROOF_QUALITY = 2
|
|
NONANTIALIASED_QUALITY = 3
|
|
ANTIALIASED_QUALITY = 4
|
|
CLEARTYPE_QUALITY = 5
|
|
)
|
|
|
|
// Font pitch constants
|
|
const (
|
|
DEFAULT_PITCH = 0
|
|
FIXED_PITCH = 1
|
|
VARIABLE_PITCH = 2
|
|
)
|
|
|
|
// Font family constants
|
|
const (
|
|
FF_DECORATIVE = 80
|
|
FF_DONTCARE = 0
|
|
FF_MODERN = 48
|
|
FF_ROMAN = 16
|
|
FF_SCRIPT = 64
|
|
FF_SWISS = 32
|
|
)
|
|
|
|
// DeviceCapabilities capabilities
|
|
const (
|
|
DC_FIELDS = 1
|
|
DC_PAPERS = 2
|
|
DC_PAPERSIZE = 3
|
|
DC_MINEXTENT = 4
|
|
DC_MAXEXTENT = 5
|
|
DC_BINS = 6
|
|
DC_DUPLEX = 7
|
|
DC_SIZE = 8
|
|
DC_EXTRA = 9
|
|
DC_VERSION = 10
|
|
DC_DRIVER = 11
|
|
DC_BINNAMES = 12
|
|
DC_ENUMRESOLUTIONS = 13
|
|
DC_FILEDEPENDENCIES = 14
|
|
DC_TRUETYPE = 15
|
|
DC_PAPERNAMES = 16
|
|
DC_ORIENTATION = 17
|
|
DC_COPIES = 18
|
|
DC_BINADJUST = 19
|
|
DC_EMF_COMPLIANT = 20
|
|
DC_DATATYPE_PRODUCED = 21
|
|
DC_COLLATE = 22
|
|
DC_MANUFACTURER = 23
|
|
DC_MODEL = 24
|
|
DC_PERSONALITY = 25
|
|
DC_PRINTRATE = 26
|
|
DC_PRINTRATEUNIT = 27
|
|
DC_PRINTERMEM = 28
|
|
DC_MEDIAREADY = 29
|
|
DC_STAPLE = 30
|
|
DC_PRINTRATEPPM = 31
|
|
DC_COLORDEVICE = 32
|
|
DC_NUP = 33
|
|
DC_MEDIATYPENAMES = 34
|
|
DC_MEDIATYPES = 35
|
|
)
|
|
|
|
const (
|
|
CCHDEVICENAME = 32
|
|
CCHFORMNAME = 32
|
|
)
|
|
|
|
const (
|
|
DM_UPDATE = 1
|
|
DM_COPY = 2
|
|
DM_PROMPT = 4
|
|
DM_MODIFY = 8
|
|
DM_IN_BUFFER = DM_MODIFY
|
|
DM_IN_PROMPT = DM_PROMPT
|
|
DM_OUT_BUFFER = DM_COPY
|
|
DM_OUT_DEFAULT = DM_UPDATE
|
|
)
|
|
|
|
// DEVMODE field selection bits
|
|
const (
|
|
DM_ORIENTATION = 0x00000001
|
|
DM_PAPERSIZE = 0x00000002
|
|
DM_PAPERLENGTH = 0x00000004
|
|
DM_PAPERWIDTH = 0x00000008
|
|
DM_SCALE = 0x00000010
|
|
DM_POSITION = 0x00000020
|
|
DM_NUP = 0x00000040
|
|
DM_DISPLAYORIENTATION = 0x00000080
|
|
DM_COPIES = 0x00000100
|
|
DM_DEFAULTSOURCE = 0x00000200
|
|
DM_PRINTQUALITY = 0x00000400
|
|
DM_COLOR = 0x00000800
|
|
DM_DUPLEX = 0x00001000
|
|
DM_YRESOLUTION = 0x00002000
|
|
DM_TTOPTION = 0x00004000
|
|
DM_COLLATE = 0x00008000
|
|
DM_FORMNAME = 0x00010000
|
|
DM_LOGPIXELS = 0x00020000
|
|
DM_BITSPERPEL = 0x00040000
|
|
DM_PELSWIDTH = 0x00080000
|
|
DM_PELSHEIGHT = 0x00100000
|
|
DM_DISPLAYFLAGS = 0x00200000
|
|
DM_DISPLAYFREQUENCY = 0x00400000
|
|
DM_ICMMETHOD = 0x00800000
|
|
DM_ICMINTENT = 0x01000000
|
|
DM_MEDIATYPE = 0x02000000
|
|
DM_DITHERTYPE = 0x04000000
|
|
DM_PANNINGWIDTH = 0x08000000
|
|
DM_PANNINGHEIGHT = 0x10000000
|
|
DM_DISPLAYFIXEDOUTPUT = 0x20000000
|
|
)
|
|
|
|
// Orientation constants
|
|
const (
|
|
DMORIENT_PORTRAIT = 1
|
|
DMORIENT_LANDSCAPE = 2
|
|
)
|
|
|
|
// Paper sizes
|
|
const (
|
|
DMPAPER_FIRST = DMPAPER_LETTER
|
|
DMPAPER_LETTER = 1 /* Letter 8 1/2 x 11 in */
|
|
DMPAPER_LETTERSMALL = 2 /* Letter Small 8 1/2 x 11 in */
|
|
DMPAPER_TABLOID = 3 /* Tabloid 11 x 17 in */
|
|
DMPAPER_LEDGER = 4 /* Ledger 17 x 11 in */
|
|
DMPAPER_LEGAL = 5 /* Legal 8 1/2 x 14 in */
|
|
DMPAPER_STATEMENT = 6 /* Statement 5 1/2 x 8 1/2 in */
|
|
DMPAPER_EXECUTIVE = 7 /* Executive 7 1/4 x 10 1/2 in */
|
|
DMPAPER_A3 = 8 /* A3 297 x 420 mm */
|
|
DMPAPER_A4 = 9 /* A4 210 x 297 mm */
|
|
DMPAPER_A4SMALL = 10 /* A4 Small 210 x 297 mm */
|
|
DMPAPER_A5 = 11 /* A5 148 x 210 mm */
|
|
DMPAPER_B4 = 12 /* B4 (JIS) 250 x 354 */
|
|
DMPAPER_B5 = 13 /* B5 (JIS) 182 x 257 mm */
|
|
DMPAPER_FOLIO = 14 /* Folio 8 1/2 x 13 in */
|
|
DMPAPER_QUARTO = 15 /* Quarto 215 x 275 mm */
|
|
DMPAPER_10X14 = 16 /* 10x14 in */
|
|
DMPAPER_11X17 = 17 /* 11x17 in */
|
|
DMPAPER_NOTE = 18 /* Note 8 1/2 x 11 in */
|
|
DMPAPER_ENV_9 = 19 /* Envelope #9 3 7/8 x 8 7/8 */
|
|
DMPAPER_ENV_10 = 20 /* Envelope #10 4 1/8 x 9 1/2 */
|
|
DMPAPER_ENV_11 = 21 /* Envelope #11 4 1/2 x 10 3/8 */
|
|
DMPAPER_ENV_12 = 22 /* Envelope #12 4 \276 x 11 */
|
|
DMPAPER_ENV_14 = 23 /* Envelope #14 5 x 11 1/2 */
|
|
DMPAPER_CSHEET = 24 /* C size sheet */
|
|
DMPAPER_DSHEET = 25 /* D size sheet */
|
|
DMPAPER_ESHEET = 26 /* E size sheet */
|
|
DMPAPER_ENV_DL = 27 /* Envelope DL 110 x 220mm */
|
|
DMPAPER_ENV_C5 = 28 /* Envelope C5 162 x 229 mm */
|
|
DMPAPER_ENV_C3 = 29 /* Envelope C3 324 x 458 mm */
|
|
DMPAPER_ENV_C4 = 30 /* Envelope C4 229 x 324 mm */
|
|
DMPAPER_ENV_C6 = 31 /* Envelope C6 114 x 162 mm */
|
|
DMPAPER_ENV_C65 = 32 /* Envelope C65 114 x 229 mm */
|
|
DMPAPER_ENV_B4 = 33 /* Envelope B4 250 x 353 mm */
|
|
DMPAPER_ENV_B5 = 34 /* Envelope B5 176 x 250 mm */
|
|
DMPAPER_ENV_B6 = 35 /* Envelope B6 176 x 125 mm */
|
|
DMPAPER_ENV_ITALY = 36 /* Envelope 110 x 230 mm */
|
|
DMPAPER_ENV_MONARCH = 37 /* Envelope Monarch 3.875 x 7.5 in */
|
|
DMPAPER_ENV_PERSONAL = 38 /* 6 3/4 Envelope 3 5/8 x 6 1/2 in */
|
|
DMPAPER_FANFOLD_US = 39 /* US Std Fanfold 14 7/8 x 11 in */
|
|
DMPAPER_FANFOLD_STD_GERMAN = 40 /* German Std Fanfold 8 1/2 x 12 in */
|
|
DMPAPER_FANFOLD_LGL_GERMAN = 41 /* German Legal Fanfold 8 1/2 x 13 in */
|
|
DMPAPER_ISO_B4 = 42 /* B4 (ISO) 250 x 353 mm */
|
|
DMPAPER_JAPANESE_POSTCARD = 43 /* Japanese Postcard 100 x 148 mm */
|
|
DMPAPER_9X11 = 44 /* 9 x 11 in */
|
|
DMPAPER_10X11 = 45 /* 10 x 11 in */
|
|
DMPAPER_15X11 = 46 /* 15 x 11 in */
|
|
DMPAPER_ENV_INVITE = 47 /* Envelope Invite 220 x 220 mm */
|
|
DMPAPER_RESERVED_48 = 48 /* RESERVED--DO NOT USE */
|
|
DMPAPER_RESERVED_49 = 49 /* RESERVED--DO NOT USE */
|
|
DMPAPER_LETTER_EXTRA = 50 /* Letter Extra 9 \275 x 12 in */
|
|
DMPAPER_LEGAL_EXTRA = 51 /* Legal Extra 9 \275 x 15 in */
|
|
DMPAPER_TABLOID_EXTRA = 52 /* Tabloid Extra 11.69 x 18 in */
|
|
DMPAPER_A4_EXTRA = 53 /* A4 Extra 9.27 x 12.69 in */
|
|
DMPAPER_LETTER_TRANSVERSE = 54 /* Letter Transverse 8 \275 x 11 in */
|
|
DMPAPER_A4_TRANSVERSE = 55 /* A4 Transverse 210 x 297 mm */
|
|
DMPAPER_LETTER_EXTRA_TRANSVERSE = 56 /* Letter Extra Transverse 9\275 x 12 in */
|
|
DMPAPER_A_PLUS = 57 /* SuperA/SuperA/A4 227 x 356 mm */
|
|
DMPAPER_B_PLUS = 58 /* SuperB/SuperB/A3 305 x 487 mm */
|
|
DMPAPER_LETTER_PLUS = 59 /* Letter Plus 8.5 x 12.69 in */
|
|
DMPAPER_A4_PLUS = 60 /* A4 Plus 210 x 330 mm */
|
|
DMPAPER_A5_TRANSVERSE = 61 /* A5 Transverse 148 x 210 mm */
|
|
DMPAPER_B5_TRANSVERSE = 62 /* B5 (JIS) Transverse 182 x 257 mm */
|
|
DMPAPER_A3_EXTRA = 63 /* A3 Extra 322 x 445 mm */
|
|
DMPAPER_A5_EXTRA = 64 /* A5 Extra 174 x 235 mm */
|
|
DMPAPER_B5_EXTRA = 65 /* B5 (ISO) Extra 201 x 276 mm */
|
|
DMPAPER_A2 = 66 /* A2 420 x 594 mm */
|
|
DMPAPER_A3_TRANSVERSE = 67 /* A3 Transverse 297 x 420 mm */
|
|
DMPAPER_A3_EXTRA_TRANSVERSE = 68 /* A3 Extra Transverse 322 x 445 mm */
|
|
DMPAPER_DBL_JAPANESE_POSTCARD = 69 /* Japanese Double Postcard 200 x 148 mm */
|
|
DMPAPER_A6 = 70 /* A6 105 x 148 mm */
|
|
DMPAPER_JENV_KAKU2 = 71 /* Japanese Envelope Kaku #2 */
|
|
DMPAPER_JENV_KAKU3 = 72 /* Japanese Envelope Kaku #3 */
|
|
DMPAPER_JENV_CHOU3 = 73 /* Japanese Envelope Chou #3 */
|
|
DMPAPER_JENV_CHOU4 = 74 /* Japanese Envelope Chou #4 */
|
|
DMPAPER_LETTER_ROTATED = 75 /* Letter Rotated 11 x 8 1/2 11 in */
|
|
DMPAPER_A3_ROTATED = 76 /* A3 Rotated 420 x 297 mm */
|
|
DMPAPER_A4_ROTATED = 77 /* A4 Rotated 297 x 210 mm */
|
|
DMPAPER_A5_ROTATED = 78 /* A5 Rotated 210 x 148 mm */
|
|
DMPAPER_B4_JIS_ROTATED = 79 /* B4 (JIS) Rotated 364 x 257 mm */
|
|
DMPAPER_B5_JIS_ROTATED = 80 /* B5 (JIS) Rotated 257 x 182 mm */
|
|
DMPAPER_JAPANESE_POSTCARD_ROTATED = 81 /* Japanese Postcard Rotated 148 x 100 mm */
|
|
DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82 /* Double Japanese Postcard Rotated 148 x 200 mm */
|
|
DMPAPER_A6_ROTATED = 83 /* A6 Rotated 148 x 105 mm */
|
|
DMPAPER_JENV_KAKU2_ROTATED = 84 /* Japanese Envelope Kaku #2 Rotated */
|
|
DMPAPER_JENV_KAKU3_ROTATED = 85 /* Japanese Envelope Kaku #3 Rotated */
|
|
DMPAPER_JENV_CHOU3_ROTATED = 86 /* Japanese Envelope Chou #3 Rotated */
|
|
DMPAPER_JENV_CHOU4_ROTATED = 87 /* Japanese Envelope Chou #4 Rotated */
|
|
DMPAPER_B6_JIS = 88 /* B6 (JIS) 128 x 182 mm */
|
|
DMPAPER_B6_JIS_ROTATED = 89 /* B6 (JIS) Rotated 182 x 128 mm */
|
|
DMPAPER_12X11 = 90 /* 12 x 11 in */
|
|
DMPAPER_JENV_YOU4 = 91 /* Japanese Envelope You #4 */
|
|
DMPAPER_JENV_YOU4_ROTATED = 92 /* Japanese Envelope You #4 Rotated*/
|
|
DMPAPER_P16K = 93 /* PRC 16K 146 x 215 mm */
|
|
DMPAPER_P32K = 94 /* PRC 32K 97 x 151 mm */
|
|
DMPAPER_P32KBIG = 95 /* PRC 32K(Big) 97 x 151 mm */
|
|
DMPAPER_PENV_1 = 96 /* PRC Envelope #1 102 x 165 mm */
|
|
DMPAPER_PENV_2 = 97 /* PRC Envelope #2 102 x 176 mm */
|
|
DMPAPER_PENV_3 = 98 /* PRC Envelope #3 125 x 176 mm */
|
|
DMPAPER_PENV_4 = 99 /* PRC Envelope #4 110 x 208 mm */
|
|
DMPAPER_PENV_5 = 100 /* PRC Envelope #5 110 x 220 mm */
|
|
DMPAPER_PENV_6 = 101 /* PRC Envelope #6 120 x 230 mm */
|
|
DMPAPER_PENV_7 = 102 /* PRC Envelope #7 160 x 230 mm */
|
|
DMPAPER_PENV_8 = 103 /* PRC Envelope #8 120 x 309 mm */
|
|
DMPAPER_PENV_9 = 104 /* PRC Envelope #9 229 x 324 mm */
|
|
DMPAPER_PENV_10 = 105 /* PRC Envelope #10 324 x 458 mm */
|
|
DMPAPER_P16K_ROTATED = 106 /* PRC 16K Rotated */
|
|
DMPAPER_P32K_ROTATED = 107 /* PRC 32K Rotated */
|
|
DMPAPER_P32KBIG_ROTATED = 108 /* PRC 32K(Big) Rotated */
|
|
DMPAPER_PENV_1_ROTATED = 109 /* PRC Envelope #1 Rotated 165 x 102 mm */
|
|
DMPAPER_PENV_2_ROTATED = 110 /* PRC Envelope #2 Rotated 176 x 102 mm */
|
|
DMPAPER_PENV_3_ROTATED = 111 /* PRC Envelope #3 Rotated 176 x 125 mm */
|
|
DMPAPER_PENV_4_ROTATED = 112 /* PRC Envelope #4 Rotated 208 x 110 mm */
|
|
DMPAPER_PENV_5_ROTATED = 113 /* PRC Envelope #5 Rotated 220 x 110 mm */
|
|
DMPAPER_PENV_6_ROTATED = 114 /* PRC Envelope #6 Rotated 230 x 120 mm */
|
|
DMPAPER_PENV_7_ROTATED = 115 /* PRC Envelope #7 Rotated 230 x 160 mm */
|
|
DMPAPER_PENV_8_ROTATED = 116 /* PRC Envelope #8 Rotated 309 x 120 mm */
|
|
DMPAPER_PENV_9_ROTATED = 117 /* PRC Envelope #9 Rotated 324 x 229 mm */
|
|
DMPAPER_PENV_10_ROTATED = 118 /* PRC Envelope #10 Rotated 458 x 324 mm */
|
|
DMPAPER_LAST = DMPAPER_PENV_10_ROTATED
|
|
DMPAPER_USER = 256
|
|
)
|
|
|
|
// Bin constants
|
|
const (
|
|
DMBIN_FIRST = DMBIN_UPPER
|
|
DMBIN_UPPER = 1
|
|
DMBIN_ONLYONE = 1
|
|
DMBIN_LOWER = 2
|
|
DMBIN_MIDDLE = 3
|
|
DMBIN_MANUAL = 4
|
|
DMBIN_ENVELOPE = 5
|
|
DMBIN_ENVMANUAL = 6
|
|
DMBIN_AUTO = 7
|
|
DMBIN_TRACTOR = 8
|
|
DMBIN_SMALLFMT = 9
|
|
DMBIN_LARGEFMT = 10
|
|
DMBIN_LARGECAPACITY = 11
|
|
DMBIN_CASSETTE = 14
|
|
DMBIN_FORMSOURCE = 15
|
|
DMBIN_LAST = DMBIN_FORMSOURCE
|
|
DMBIN_USER = 256
|
|
)
|
|
|
|
// Quality constants
|
|
const (
|
|
DMRES_DRAFT = -1
|
|
DMRES_LOW = -2
|
|
DMRES_MEDIUM = -3
|
|
DMRES_HIGH = -4
|
|
)
|
|
|
|
// Color/monochrome constants
|
|
const (
|
|
DMCOLOR_MONOCHROME = 1
|
|
DMCOLOR_COLOR = 2
|
|
)
|
|
|
|
// Duplex constants
|
|
const (
|
|
DMDUP_SIMPLEX = 1
|
|
DMDUP_VERTICAL = 2
|
|
DMDUP_HORIZONTAL = 3
|
|
)
|
|
|
|
// TrueType constants
|
|
const (
|
|
DMTT_BITMAP = 1
|
|
DMTT_DOWNLOAD = 2
|
|
DMTT_SUBDEV = 3
|
|
DMTT_DOWNLOAD_OUTLINE = 4
|
|
)
|
|
|
|
// Collation constants
|
|
const (
|
|
DMCOLLATE_FALSE = 0
|
|
DMCOLLATE_TRUE = 1
|
|
)
|
|
|
|
// Background modes
|
|
const (
|
|
TRANSPARENT = 1
|
|
OPAQUE = 2
|
|
)
|
|
|
|
// Ternary raster operations
|
|
const (
|
|
SRCCOPY = 0x00CC0020
|
|
SRCPAINT = 0x00EE0086
|
|
SRCAND = 0x008800C6
|
|
SRCINVERT = 0x00660046
|
|
SRCERASE = 0x00440328
|
|
NOTSRCCOPY = 0x00330008
|
|
NOTSRCERASE = 0x001100A6
|
|
MERGECOPY = 0x00C000CA
|
|
MERGEPAINT = 0x00BB0226
|
|
PATCOPY = 0x00F00021
|
|
PATPAINT = 0x00FB0A09
|
|
PATINVERT = 0x005A0049
|
|
DSTINVERT = 0x00550009
|
|
BLACKNESS = 0x00000042
|
|
WHITENESS = 0x00FF0062
|
|
NOMIRRORBITMAP = 0x80000000
|
|
CAPTUREBLT = 0x40000000
|
|
)
|
|
|
|
// StretchBlt modes
|
|
const (
|
|
BLACKONWHITE = 1
|
|
WHITEONBLACK = 2
|
|
COLORONCOLOR = 3
|
|
HALFTONE = 4
|
|
MAXSTRETCHBLTMODE = 4
|
|
STRETCH_ANDSCANS = BLACKONWHITE
|
|
STRETCH_ORSCANS = WHITEONBLACK
|
|
STRETCH_DELETESCANS = COLORONCOLOR
|
|
STRETCH_HALFTONE = HALFTONE
|
|
)
|
|
|
|
// Bitmap compression constants
|
|
const (
|
|
BI_RGB = 0
|
|
BI_RLE8 = 1
|
|
BI_RLE4 = 2
|
|
BI_BITFIELDS = 3
|
|
BI_JPEG = 4
|
|
BI_PNG = 5
|
|
)
|
|
|
|
// Bitmap color table usage
|
|
const (
|
|
DIB_RGB_COLORS = 0
|
|
DIB_PAL_COLORS = 1
|
|
)
|
|
|
|
const CBM_INIT = 4
|
|
|
|
const (
|
|
CLR_INVALID = 0xFFFFFFFF
|
|
CLR_NONE = CLR_INVALID
|
|
CLR_DEFAULT = 0xFF000000
|
|
)
|
|
|
|
const (
|
|
/* pixel types */
|
|
PFD_TYPE_RGBA = 0
|
|
PFD_TYPE_COLORINDEX = 1
|
|
|
|
/* layer types */
|
|
PFD_MAIN_PLANE = 0
|
|
PFD_OVERLAY_PLANE = 1
|
|
PFD_UNDERLAY_PLANE = (-1)
|
|
|
|
/* PIXELFORMATDESCRIPTOR flags */
|
|
PFD_DOUBLEBUFFER = 0x00000001
|
|
PFD_STEREO = 0x00000002
|
|
PFD_DRAW_TO_WINDOW = 0x00000004
|
|
PFD_DRAW_TO_BITMAP = 0x00000008
|
|
PFD_SUPPORT_GDI = 0x00000010
|
|
PFD_SUPPORT_OPENGL = 0x00000020
|
|
PFD_GENERIC_FORMAT = 0x00000040
|
|
PFD_NEED_PALETTE = 0x00000080
|
|
PFD_NEED_SYSTEM_PALETTE = 0x00000100
|
|
PFD_SWAP_EXCHANGE = 0x00000200
|
|
PFD_SWAP_COPY = 0x00000400
|
|
PFD_SWAP_LAYER_BUFFERS = 0x00000800
|
|
PFD_GENERIC_ACCELERATED = 0x00001000
|
|
PFD_SUPPORT_DIRECTDRAW = 0x00002000
|
|
|
|
/* PIXELFORMATDESCRIPTOR flags for use in ChoosePixelFormat only */
|
|
PFD_DEPTH_DONTCARE = 0x20000000
|
|
PFD_DOUBLEBUFFER_DONTCARE = 0x40000000
|
|
PFD_STEREO_DONTCARE = 0x80000000
|
|
)
|
|
|
|
// GradientFill constants
|
|
const (
|
|
GRADIENT_FILL_RECT_H = 0x00
|
|
GRADIENT_FILL_RECT_V = 0x01
|
|
GRADIENT_FILL_TRIANGLE = 0x02
|
|
)
|
|
|
|
// Region Combine Modes
|
|
const (
|
|
RGN_AND = 1
|
|
RGN_OR = 2
|
|
RGN_XOR = 3
|
|
RGN_DIFF = 4
|
|
RGN_COPY = 5
|
|
)
|
|
|
|
// Region Types
|
|
const (
|
|
REGIONERROR = 0
|
|
NULLREGION = 1
|
|
SIMPLEREGION = 2
|
|
COMPLEXREGION = 3
|
|
)
|
|
|
|
// AlphaBlend operations
|
|
const (
|
|
AC_SRC_ALPHA = 0x1
|
|
)
|
|
|
|
// AddFontResourceEx flags
|
|
const (
|
|
FR_PRIVATE = 0x10
|
|
FR_NOT_ENUM = 0x20
|
|
)
|
|
|
|
type (
|
|
COLORREF uint32
|
|
HBITMAP HGDIOBJ
|
|
HBRUSH HGDIOBJ
|
|
HDC HANDLE
|
|
HFONT HGDIOBJ
|
|
HGDIOBJ HANDLE
|
|
HENHMETAFILE HANDLE
|
|
HPALETTE HGDIOBJ
|
|
HPEN HGDIOBJ
|
|
HRGN HGDIOBJ
|
|
)
|
|
|
|
type PIXELFORMATDESCRIPTOR struct {
|
|
NSize uint16
|
|
NVersion uint16
|
|
DwFlags uint32
|
|
IPixelType byte
|
|
CColorBits byte
|
|
CRedBits byte
|
|
CRedShift byte
|
|
CGreenBits byte
|
|
CGreenShift byte
|
|
CBlueBits byte
|
|
CBlueShift byte
|
|
CAlphaBits byte
|
|
CAlphaShift byte
|
|
CAccumBits byte
|
|
CAccumRedBits byte
|
|
CAccumGreenBits byte
|
|
CAccumBlueBits byte
|
|
CAccumAlphaBits byte
|
|
CDepthBits byte
|
|
CStencilBits byte
|
|
CAuxBuffers byte
|
|
ILayerType byte
|
|
BReserved byte
|
|
DwLayerMask uint32
|
|
DwVisibleMask uint32
|
|
DwDamageMask uint32
|
|
}
|
|
|
|
type LOGFONT struct {
|
|
LfHeight int32
|
|
LfWidth int32
|
|
LfEscapement int32
|
|
LfOrientation int32
|
|
LfWeight int32
|
|
LfItalic byte
|
|
LfUnderline byte
|
|
LfStrikeOut byte
|
|
LfCharSet byte
|
|
LfOutPrecision byte
|
|
LfClipPrecision byte
|
|
LfQuality byte
|
|
LfPitchAndFamily byte
|
|
LfFaceName [LF_FACESIZE]uint16
|
|
}
|
|
|
|
type TEXTMETRIC struct {
|
|
TmHeight int32
|
|
TmAscent int32
|
|
TmDescent int32
|
|
TmInternalLeading int32
|
|
TmExternalLeading int32
|
|
TmAveCharWidth int32
|
|
TmMaxCharWidth int32
|
|
TmWeight int32
|
|
TmOverhang int32
|
|
TmDigitizedAspectX int32
|
|
TmDigitizedAspectY int32
|
|
TmFirstChar uint16
|
|
TmLastChar uint16
|
|
TmDefaultChar uint16
|
|
TmBreakChar uint16
|
|
TmItalic byte
|
|
TmUnderlined byte
|
|
TmStruckOut byte
|
|
TmPitchAndFamily byte
|
|
TmCharSet byte
|
|
}
|
|
|
|
type DEVMODE struct {
|
|
DmDeviceName [CCHDEVICENAME]uint16
|
|
DmSpecVersion uint16
|
|
DmDriverVersion uint16
|
|
DmSize uint16
|
|
DmDriverExtra uint16
|
|
DmFields uint32
|
|
DmOrientation int16
|
|
DmPaperSize int16
|
|
DmPaperLength int16
|
|
DmPaperWidth int16
|
|
DmScale int16
|
|
DmCopies int16
|
|
DmDefaultSource int16
|
|
DmPrintQuality int16
|
|
DmColor int16
|
|
DmDuplex int16
|
|
DmYResolution int16
|
|
DmTTOption int16
|
|
DmCollate int16
|
|
DmFormName [CCHFORMNAME]uint16
|
|
DmLogPixels uint16
|
|
DmBitsPerPel uint32
|
|
DmPelsWidth uint32
|
|
DmPelsHeight uint32
|
|
DmDisplayFlags uint32
|
|
DmDisplayFrequency uint32
|
|
DmICMMethod uint32
|
|
DmICMIntent uint32
|
|
DmMediaType uint32
|
|
DmDitherType uint32
|
|
DmReserved1 uint32
|
|
DmReserved2 uint32
|
|
DmPanningWidth uint32
|
|
DmPanningHeight uint32
|
|
}
|
|
|
|
type POINT struct {
|
|
X, Y int32
|
|
}
|
|
|
|
type RECT struct {
|
|
Left, Top, Right, Bottom int32
|
|
}
|
|
|
|
type SIZE struct {
|
|
CX, CY int32
|
|
}
|
|
|
|
type DOCINFO struct {
|
|
CbSize int32
|
|
LpszDocName *uint16
|
|
LpszOutput *uint16
|
|
LpszDatatype *uint16
|
|
FwType uint32
|
|
}
|
|
|
|
type LOGBRUSH struct {
|
|
LbStyle uint32
|
|
LbColor COLORREF
|
|
LbHatch uintptr
|
|
}
|
|
|
|
type CIEXYZ struct {
|
|
CiexyzX, CiexyzY, CiexyzZ int32 // FXPT2DOT30
|
|
}
|
|
|
|
type CIEXYZTRIPLE struct {
|
|
CiexyzRed, CiexyzGreen, CiexyzBlue CIEXYZ
|
|
}
|
|
|
|
type BITMAPINFOHEADER struct {
|
|
BiSize uint32
|
|
BiWidth int32
|
|
BiHeight int32
|
|
BiPlanes uint16
|
|
BiBitCount uint16
|
|
BiCompression uint32
|
|
BiSizeImage uint32
|
|
BiXPelsPerMeter int32
|
|
BiYPelsPerMeter int32
|
|
BiClrUsed uint32
|
|
BiClrImportant uint32
|
|
}
|
|
|
|
type BITMAPV4HEADER struct {
|
|
BITMAPINFOHEADER
|
|
BV4RedMask uint32
|
|
BV4GreenMask uint32
|
|
BV4BlueMask uint32
|
|
BV4AlphaMask uint32
|
|
BV4CSType uint32
|
|
BV4Endpoints CIEXYZTRIPLE
|
|
BV4GammaRed uint32
|
|
BV4GammaGreen uint32
|
|
BV4GammaBlue uint32
|
|
}
|
|
|
|
type BITMAPV5HEADER struct {
|
|
BITMAPV4HEADER
|
|
BV5Intent uint32
|
|
BV5ProfileData uint32
|
|
BV5ProfileSize uint32
|
|
BV5Reserved uint32
|
|
}
|
|
|
|
type RGBQUAD struct {
|
|
RgbBlue byte
|
|
RgbGreen byte
|
|
RgbRed byte
|
|
RgbReserved byte
|
|
}
|
|
|
|
type BITMAPINFO struct {
|
|
BmiHeader BITMAPINFOHEADER
|
|
BmiColors *RGBQUAD
|
|
}
|
|
|
|
type BITMAP struct {
|
|
BmType int32
|
|
BmWidth int32
|
|
BmHeight int32
|
|
BmWidthBytes int32
|
|
BmPlanes uint16
|
|
BmBitsPixel uint16
|
|
BmBits unsafe.Pointer
|
|
}
|
|
|
|
type DIBSECTION struct {
|
|
DsBm BITMAP
|
|
DsBmih BITMAPINFOHEADER
|
|
DsBitfields [3]uint32
|
|
DshSection HANDLE
|
|
DsOffset uint32
|
|
}
|
|
|
|
type ENHMETAHEADER struct {
|
|
IType uint32
|
|
NSize uint32
|
|
RclBounds RECT
|
|
RclFrame RECT
|
|
DSignature uint32
|
|
NVersion uint32
|
|
NBytes uint32
|
|
NRecords uint32
|
|
NHandles uint16
|
|
SReserved uint16
|
|
NDescription uint32
|
|
OffDescription uint32
|
|
NPalEntries uint32
|
|
SzlDevice SIZE
|
|
SzlMillimeters SIZE
|
|
CbPixelFormat uint32
|
|
OffPixelFormat uint32
|
|
BOpenGL uint32
|
|
SzlMicrometers SIZE
|
|
}
|
|
|
|
type TRIVERTEX struct {
|
|
X int32
|
|
Y int32
|
|
Red uint16
|
|
Green uint16
|
|
Blue uint16
|
|
Alpha uint16
|
|
}
|
|
|
|
type GRADIENT_RECT struct {
|
|
UpperLeft uint32
|
|
LowerRight uint32
|
|
}
|
|
|
|
type GRADIENT_TRIANGLE struct {
|
|
Vertex1 uint32
|
|
Vertex2 uint32
|
|
Vertex3 uint32
|
|
}
|
|
|
|
type BLENDFUNCTION struct {
|
|
BlendOp byte
|
|
BlendFlags byte
|
|
SourceConstantAlpha byte
|
|
AlphaFormat byte
|
|
}
|
|
|
|
var (
|
|
// Library
|
|
libgdi32 *windows.LazyDLL
|
|
libmsimg32 *windows.LazyDLL
|
|
|
|
// Functions
|
|
abortDoc *windows.LazyProc
|
|
addFontResourceEx *windows.LazyProc
|
|
addFontMemResourceEx *windows.LazyProc
|
|
alphaBlend *windows.LazyProc
|
|
bitBlt *windows.LazyProc
|
|
choosePixelFormat *windows.LazyProc
|
|
closeEnhMetaFile *windows.LazyProc
|
|
combineRgn *windows.LazyProc
|
|
copyEnhMetaFile *windows.LazyProc
|
|
createBitmap *windows.LazyProc
|
|
createCompatibleBitmap *windows.LazyProc
|
|
createBrushIndirect *windows.LazyProc
|
|
createCompatibleDC *windows.LazyProc
|
|
createDC *windows.LazyProc
|
|
createDIBSection *windows.LazyProc
|
|
createFontIndirect *windows.LazyProc
|
|
createEnhMetaFile *windows.LazyProc
|
|
createIC *windows.LazyProc
|
|
createPatternBrush *windows.LazyProc
|
|
createRectRgn *windows.LazyProc
|
|
deleteDC *windows.LazyProc
|
|
deleteEnhMetaFile *windows.LazyProc
|
|
deleteObject *windows.LazyProc
|
|
ellipse *windows.LazyProc
|
|
endDoc *windows.LazyProc
|
|
endPage *windows.LazyProc
|
|
excludeClipRect *windows.LazyProc
|
|
extCreatePen *windows.LazyProc
|
|
fillRgn *windows.LazyProc
|
|
gdiFlush *windows.LazyProc
|
|
getBkColor *windows.LazyProc
|
|
getDeviceCaps *windows.LazyProc
|
|
getDIBits *windows.LazyProc
|
|
getEnhMetaFile *windows.LazyProc
|
|
getEnhMetaFileHeader *windows.LazyProc
|
|
getObject *windows.LazyProc
|
|
getPixel *windows.LazyProc
|
|
getRgnBox *windows.LazyProc
|
|
getStockObject *windows.LazyProc
|
|
getTextColor *windows.LazyProc
|
|
getTextExtentExPoint *windows.LazyProc
|
|
getTextExtentPoint32 *windows.LazyProc
|
|
getTextMetrics *windows.LazyProc
|
|
getViewportOrgEx *windows.LazyProc
|
|
gradientFill *windows.LazyProc
|
|
intersectClipRect *windows.LazyProc
|
|
lineTo *windows.LazyProc
|
|
moveToEx *windows.LazyProc
|
|
playEnhMetaFile *windows.LazyProc
|
|
polyline *windows.LazyProc
|
|
rectangle *windows.LazyProc
|
|
removeFontResourceEx *windows.LazyProc
|
|
removeFontMemResourceEx *windows.LazyProc
|
|
resetDC *windows.LazyProc
|
|
restoreDC *windows.LazyProc
|
|
roundRect *windows.LazyProc
|
|
selectObject *windows.LazyProc
|
|
setBkColor *windows.LazyProc
|
|
setBkMode *windows.LazyProc
|
|
setBrushOrgEx *windows.LazyProc
|
|
setDIBits *windows.LazyProc
|
|
setPixel *windows.LazyProc
|
|
setPixelFormat *windows.LazyProc
|
|
setStretchBltMode *windows.LazyProc
|
|
setTextColor *windows.LazyProc
|
|
setViewportOrgEx *windows.LazyProc
|
|
saveDC *windows.LazyProc
|
|
startDoc *windows.LazyProc
|
|
startPage *windows.LazyProc
|
|
stretchBlt *windows.LazyProc
|
|
swapBuffers *windows.LazyProc
|
|
textOut *windows.LazyProc
|
|
transparentBlt *windows.LazyProc
|
|
)
|
|
|
|
func init() {
|
|
// Library
|
|
libgdi32 = windows.NewLazySystemDLL("gdi32.dll")
|
|
libmsimg32 = windows.NewLazySystemDLL("msimg32.dll")
|
|
|
|
// Functions
|
|
abortDoc = libgdi32.NewProc("AbortDoc")
|
|
addFontResourceEx = libgdi32.NewProc("AddFontResourceExW")
|
|
addFontMemResourceEx = libgdi32.NewProc("AddFontMemResourceEx")
|
|
bitBlt = libgdi32.NewProc("BitBlt")
|
|
choosePixelFormat = libgdi32.NewProc("ChoosePixelFormat")
|
|
closeEnhMetaFile = libgdi32.NewProc("CloseEnhMetaFile")
|
|
combineRgn = libgdi32.NewProc("CombineRgn")
|
|
copyEnhMetaFile = libgdi32.NewProc("CopyEnhMetaFileW")
|
|
createBitmap = libgdi32.NewProc("CreateBitmap")
|
|
createCompatibleBitmap = libgdi32.NewProc("CreateCompatibleBitmap")
|
|
createBrushIndirect = libgdi32.NewProc("CreateBrushIndirect")
|
|
createCompatibleDC = libgdi32.NewProc("CreateCompatibleDC")
|
|
createDC = libgdi32.NewProc("CreateDCW")
|
|
createDIBSection = libgdi32.NewProc("CreateDIBSection")
|
|
createEnhMetaFile = libgdi32.NewProc("CreateEnhMetaFileW")
|
|
createFontIndirect = libgdi32.NewProc("CreateFontIndirectW")
|
|
createIC = libgdi32.NewProc("CreateICW")
|
|
createPatternBrush = libgdi32.NewProc("CreatePatternBrush")
|
|
createRectRgn = libgdi32.NewProc("CreateRectRgn")
|
|
deleteDC = libgdi32.NewProc("DeleteDC")
|
|
deleteEnhMetaFile = libgdi32.NewProc("DeleteEnhMetaFile")
|
|
deleteObject = libgdi32.NewProc("DeleteObject")
|
|
ellipse = libgdi32.NewProc("Ellipse")
|
|
endDoc = libgdi32.NewProc("EndDoc")
|
|
endPage = libgdi32.NewProc("EndPage")
|
|
excludeClipRect = libgdi32.NewProc("ExcludeClipRect")
|
|
extCreatePen = libgdi32.NewProc("ExtCreatePen")
|
|
fillRgn = libgdi32.NewProc("FillRgn")
|
|
gdiFlush = libgdi32.NewProc("GdiFlush")
|
|
getBkColor = libgdi32.NewProc("GetBkColor")
|
|
getDeviceCaps = libgdi32.NewProc("GetDeviceCaps")
|
|
getDIBits = libgdi32.NewProc("GetDIBits")
|
|
getEnhMetaFile = libgdi32.NewProc("GetEnhMetaFileW")
|
|
getEnhMetaFileHeader = libgdi32.NewProc("GetEnhMetaFileHeader")
|
|
getObject = libgdi32.NewProc("GetObjectW")
|
|
getPixel = libgdi32.NewProc("GetPixel")
|
|
getRgnBox = libgdi32.NewProc("GetRgnBox")
|
|
getStockObject = libgdi32.NewProc("GetStockObject")
|
|
getTextColor = libgdi32.NewProc("GetTextColor")
|
|
getTextExtentExPoint = libgdi32.NewProc("GetTextExtentExPointW")
|
|
getTextExtentPoint32 = libgdi32.NewProc("GetTextExtentPoint32W")
|
|
getTextMetrics = libgdi32.NewProc("GetTextMetricsW")
|
|
getViewportOrgEx = libgdi32.NewProc("GetViewportOrgEx")
|
|
intersectClipRect = libgdi32.NewProc("IntersectClipRect")
|
|
lineTo = libgdi32.NewProc("LineTo")
|
|
moveToEx = libgdi32.NewProc("MoveToEx")
|
|
playEnhMetaFile = libgdi32.NewProc("PlayEnhMetaFile")
|
|
polyline = libgdi32.NewProc("Polyline")
|
|
rectangle = libgdi32.NewProc("Rectangle")
|
|
removeFontResourceEx = libgdi32.NewProc("RemoveFontResourceExW")
|
|
removeFontMemResourceEx = libgdi32.NewProc("RemoveFontMemResourceEx")
|
|
resetDC = libgdi32.NewProc("ResetDCW")
|
|
restoreDC = libgdi32.NewProc("RestoreDC")
|
|
roundRect = libgdi32.NewProc("RoundRect")
|
|
saveDC = libgdi32.NewProc("SaveDC")
|
|
selectObject = libgdi32.NewProc("SelectObject")
|
|
setBkColor = libgdi32.NewProc("SetBkColor")
|
|
setBkMode = libgdi32.NewProc("SetBkMode")
|
|
setBrushOrgEx = libgdi32.NewProc("SetBrushOrgEx")
|
|
setDIBits = libgdi32.NewProc("SetDIBits")
|
|
setPixel = libgdi32.NewProc("SetPixel")
|
|
setPixelFormat = libgdi32.NewProc("SetPixelFormat")
|
|
setStretchBltMode = libgdi32.NewProc("SetStretchBltMode")
|
|
setTextColor = libgdi32.NewProc("SetTextColor")
|
|
setViewportOrgEx = libgdi32.NewProc("SetViewportOrgEx")
|
|
startDoc = libgdi32.NewProc("StartDocW")
|
|
startPage = libgdi32.NewProc("StartPage")
|
|
stretchBlt = libgdi32.NewProc("StretchBlt")
|
|
swapBuffers = libgdi32.NewProc("SwapBuffers")
|
|
textOut = libgdi32.NewProc("TextOutW")
|
|
|
|
alphaBlend = libmsimg32.NewProc("AlphaBlend")
|
|
gradientFill = libmsimg32.NewProc("GradientFill")
|
|
transparentBlt = libmsimg32.NewProc("TransparentBlt")
|
|
}
|
|
|
|
func AbortDoc(hdc HDC) int32 {
|
|
ret, _, _ := syscall.Syscall(abortDoc.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func AddFontResourceEx(lpszFilename *uint16, fl uint32, pdv unsafe.Pointer) int32 {
|
|
ret, _, _ := syscall.Syscall(addFontResourceEx.Addr(), 3,
|
|
uintptr(unsafe.Pointer(lpszFilename)),
|
|
uintptr(fl),
|
|
uintptr(pdv))
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func AddFontMemResourceEx(pFileView uintptr, cjSize uint32, pvReserved unsafe.Pointer, pNumFonts *uint32) HANDLE {
|
|
ret, _, _ := syscall.Syscall6(addFontMemResourceEx.Addr(), 4,
|
|
pFileView,
|
|
uintptr(cjSize),
|
|
uintptr(pvReserved),
|
|
uintptr(unsafe.Pointer(pNumFonts)),
|
|
0,
|
|
0)
|
|
|
|
return HANDLE(ret)
|
|
}
|
|
|
|
func AlphaBlend(hdcDest HDC, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest int32, hdcSrc HDC, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc int32, ftn BLENDFUNCTION) bool {
|
|
ret, _, _ := syscall.Syscall12(alphaBlend.Addr(), 11,
|
|
uintptr(hdcDest),
|
|
uintptr(nXOriginDest),
|
|
uintptr(nYOriginDest),
|
|
uintptr(nWidthDest),
|
|
uintptr(nHeightDest),
|
|
uintptr(hdcSrc),
|
|
uintptr(nXOriginSrc),
|
|
uintptr(nYOriginSrc),
|
|
uintptr(nWidthSrc),
|
|
uintptr(nHeightSrc),
|
|
uintptr(*(*uint32)(unsafe.Pointer(uintptr(unsafe.Pointer(&ftn))))),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func BitBlt(hdcDest HDC, nXDest, nYDest, nWidth, nHeight int32, hdcSrc HDC, nXSrc, nYSrc int32, dwRop uint32) bool {
|
|
ret, _, _ := syscall.Syscall9(bitBlt.Addr(), 9,
|
|
uintptr(hdcDest),
|
|
uintptr(nXDest),
|
|
uintptr(nYDest),
|
|
uintptr(nWidth),
|
|
uintptr(nHeight),
|
|
uintptr(hdcSrc),
|
|
uintptr(nXSrc),
|
|
uintptr(nYSrc),
|
|
uintptr(dwRop))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func ChoosePixelFormat(hdc HDC, ppfd *PIXELFORMATDESCRIPTOR) int32 {
|
|
ret, _, _ := syscall.Syscall(choosePixelFormat.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(ppfd)),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func CloseEnhMetaFile(hdc HDC) HENHMETAFILE {
|
|
ret, _, _ := syscall.Syscall(closeEnhMetaFile.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return HENHMETAFILE(ret)
|
|
}
|
|
|
|
func CombineRgn(hrgnDest, hrgnSrc1, hrgnSrc2 HRGN, fnCombineMode int32) int32 {
|
|
ret, _, _ := syscall.Syscall6(combineRgn.Addr(), 4,
|
|
uintptr(hrgnDest),
|
|
uintptr(hrgnSrc1),
|
|
uintptr(hrgnSrc2),
|
|
uintptr(fnCombineMode),
|
|
0,
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func CopyEnhMetaFile(hemfSrc HENHMETAFILE, lpszFile *uint16) HENHMETAFILE {
|
|
ret, _, _ := syscall.Syscall(copyEnhMetaFile.Addr(), 2,
|
|
uintptr(hemfSrc),
|
|
uintptr(unsafe.Pointer(lpszFile)),
|
|
0)
|
|
|
|
return HENHMETAFILE(ret)
|
|
}
|
|
|
|
func CreateBitmap(nWidth, nHeight int32, cPlanes, cBitsPerPel uint32, lpvBits unsafe.Pointer) HBITMAP {
|
|
ret, _, _ := syscall.Syscall6(createBitmap.Addr(), 5,
|
|
uintptr(nWidth),
|
|
uintptr(nHeight),
|
|
uintptr(cPlanes),
|
|
uintptr(cBitsPerPel),
|
|
uintptr(lpvBits),
|
|
0)
|
|
|
|
return HBITMAP(ret)
|
|
}
|
|
|
|
func CreateCompatibleBitmap(hdc HDC, nWidth, nHeight int32) HBITMAP {
|
|
ret, _, _ := syscall.Syscall(createCompatibleBitmap.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(nWidth),
|
|
uintptr(nHeight))
|
|
|
|
return HBITMAP(ret)
|
|
}
|
|
|
|
func CreateBrushIndirect(lplb *LOGBRUSH) HBRUSH {
|
|
ret, _, _ := syscall.Syscall(createBrushIndirect.Addr(), 1,
|
|
uintptr(unsafe.Pointer(lplb)),
|
|
0,
|
|
0)
|
|
|
|
return HBRUSH(ret)
|
|
}
|
|
|
|
func CreateCompatibleDC(hdc HDC) HDC {
|
|
ret, _, _ := syscall.Syscall(createCompatibleDC.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return HDC(ret)
|
|
}
|
|
|
|
func CreateDC(lpszDriver, lpszDevice, lpszOutput *uint16, lpInitData *DEVMODE) HDC {
|
|
ret, _, _ := syscall.Syscall6(createDC.Addr(), 4,
|
|
uintptr(unsafe.Pointer(lpszDriver)),
|
|
uintptr(unsafe.Pointer(lpszDevice)),
|
|
uintptr(unsafe.Pointer(lpszOutput)),
|
|
uintptr(unsafe.Pointer(lpInitData)),
|
|
0,
|
|
0)
|
|
|
|
return HDC(ret)
|
|
}
|
|
|
|
func CreateDIBSection(hdc HDC, pbmih *BITMAPINFOHEADER, iUsage uint32, ppvBits *unsafe.Pointer, hSection HANDLE, dwOffset uint32) HBITMAP {
|
|
ret, _, _ := syscall.Syscall6(createDIBSection.Addr(), 6,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(pbmih)),
|
|
uintptr(iUsage),
|
|
uintptr(unsafe.Pointer(ppvBits)),
|
|
uintptr(hSection),
|
|
uintptr(dwOffset))
|
|
|
|
return HBITMAP(ret)
|
|
}
|
|
|
|
func CreateEnhMetaFile(hdcRef HDC, lpFilename *uint16, lpRect *RECT, lpDescription *uint16) HDC {
|
|
ret, _, _ := syscall.Syscall6(createEnhMetaFile.Addr(), 4,
|
|
uintptr(hdcRef),
|
|
uintptr(unsafe.Pointer(lpFilename)),
|
|
uintptr(unsafe.Pointer(lpRect)),
|
|
uintptr(unsafe.Pointer(lpDescription)),
|
|
0,
|
|
0)
|
|
|
|
return HDC(ret)
|
|
}
|
|
|
|
func CreateFontIndirect(lplf *LOGFONT) HFONT {
|
|
ret, _, _ := syscall.Syscall(createFontIndirect.Addr(), 1,
|
|
uintptr(unsafe.Pointer(lplf)),
|
|
0,
|
|
0)
|
|
|
|
return HFONT(ret)
|
|
}
|
|
|
|
func CreateIC(lpszDriver, lpszDevice, lpszOutput *uint16, lpdvmInit *DEVMODE) HDC {
|
|
ret, _, _ := syscall.Syscall6(createIC.Addr(), 4,
|
|
uintptr(unsafe.Pointer(lpszDriver)),
|
|
uintptr(unsafe.Pointer(lpszDevice)),
|
|
uintptr(unsafe.Pointer(lpszOutput)),
|
|
uintptr(unsafe.Pointer(lpdvmInit)),
|
|
0,
|
|
0)
|
|
|
|
return HDC(ret)
|
|
}
|
|
|
|
func CreatePatternBrush(hbmp HBITMAP) HBRUSH {
|
|
ret, _, _ := syscall.Syscall(createPatternBrush.Addr(), 1,
|
|
uintptr(hbmp),
|
|
0,
|
|
0)
|
|
|
|
return HBRUSH(ret)
|
|
}
|
|
|
|
func CreateRectRgn(nLeftRect, nTopRect, nRightRect, nBottomRect int32) HRGN {
|
|
ret, _, _ := syscall.Syscall6(createRectRgn.Addr(), 4,
|
|
uintptr(nLeftRect),
|
|
uintptr(nTopRect),
|
|
uintptr(nRightRect),
|
|
uintptr(nBottomRect),
|
|
0,
|
|
0)
|
|
|
|
return HRGN(ret)
|
|
}
|
|
|
|
func DeleteDC(hdc HDC) bool {
|
|
ret, _, _ := syscall.Syscall(deleteDC.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func DeleteEnhMetaFile(hemf HENHMETAFILE) bool {
|
|
ret, _, _ := syscall.Syscall(deleteEnhMetaFile.Addr(), 1,
|
|
uintptr(hemf),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func DeleteObject(hObject HGDIOBJ) bool {
|
|
ret, _, _ := syscall.Syscall(deleteObject.Addr(), 1,
|
|
uintptr(hObject),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func Ellipse(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect int32) bool {
|
|
ret, _, _ := syscall.Syscall6(ellipse.Addr(), 5,
|
|
uintptr(hdc),
|
|
uintptr(nLeftRect),
|
|
uintptr(nTopRect),
|
|
uintptr(nRightRect),
|
|
uintptr(nBottomRect),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func EndDoc(hdc HDC) int32 {
|
|
ret, _, _ := syscall.Syscall(endDoc.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func EndPage(hdc HDC) int32 {
|
|
ret, _, _ := syscall.Syscall(endPage.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func ExcludeClipRect(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect int32) int32 {
|
|
ret, _, _ := syscall.Syscall6(excludeClipRect.Addr(), 5,
|
|
uintptr(hdc),
|
|
uintptr(nLeftRect),
|
|
uintptr(nTopRect),
|
|
uintptr(nRightRect),
|
|
uintptr(nBottomRect),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func ExtCreatePen(dwPenStyle, dwWidth uint32, lplb *LOGBRUSH, dwStyleCount uint32, lpStyle *uint32) HPEN {
|
|
ret, _, _ := syscall.Syscall6(extCreatePen.Addr(), 5,
|
|
uintptr(dwPenStyle),
|
|
uintptr(dwWidth),
|
|
uintptr(unsafe.Pointer(lplb)),
|
|
uintptr(dwStyleCount),
|
|
uintptr(unsafe.Pointer(lpStyle)),
|
|
0)
|
|
|
|
return HPEN(ret)
|
|
}
|
|
|
|
func FillRgn(hdc HDC, hrgn HRGN, hbr HBRUSH) bool {
|
|
ret, _, _ := syscall.Syscall(fillRgn.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(hrgn),
|
|
uintptr(hbr))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func GdiFlush() bool {
|
|
ret, _, _ := syscall.Syscall(gdiFlush.Addr(), 0,
|
|
0,
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func GetBkColor(hdc HDC) COLORREF {
|
|
ret, _, _ := syscall.Syscall(getBkColor.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func GetDeviceCaps(hdc HDC, nIndex int32) int32 {
|
|
ret, _, _ := syscall.Syscall(getDeviceCaps.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(nIndex),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func GetDIBits(hdc HDC, hbmp HBITMAP, uStartScan uint32, cScanLines uint32, lpvBits *byte, lpbi *BITMAPINFO, uUsage uint32) int32 {
|
|
ret, _, _ := syscall.Syscall9(getDIBits.Addr(), 7,
|
|
uintptr(hdc),
|
|
uintptr(hbmp),
|
|
uintptr(uStartScan),
|
|
uintptr(cScanLines),
|
|
uintptr(unsafe.Pointer(lpvBits)),
|
|
uintptr(unsafe.Pointer(lpbi)),
|
|
uintptr(uUsage),
|
|
0,
|
|
0)
|
|
return int32(ret)
|
|
}
|
|
|
|
func GetEnhMetaFile(lpszMetaFile *uint16) HENHMETAFILE {
|
|
ret, _, _ := syscall.Syscall(getEnhMetaFile.Addr(), 1,
|
|
uintptr(unsafe.Pointer(lpszMetaFile)),
|
|
0,
|
|
0)
|
|
|
|
return HENHMETAFILE(ret)
|
|
}
|
|
|
|
func GetEnhMetaFileHeader(hemf HENHMETAFILE, cbBuffer uint32, lpemh *ENHMETAHEADER) uint32 {
|
|
ret, _, _ := syscall.Syscall(getEnhMetaFileHeader.Addr(), 3,
|
|
uintptr(hemf),
|
|
uintptr(cbBuffer),
|
|
uintptr(unsafe.Pointer(lpemh)))
|
|
|
|
return uint32(ret)
|
|
}
|
|
|
|
func GetObject(hgdiobj HGDIOBJ, cbBuffer uintptr, lpvObject unsafe.Pointer) int32 {
|
|
ret, _, _ := syscall.Syscall(getObject.Addr(), 3,
|
|
uintptr(hgdiobj),
|
|
uintptr(cbBuffer),
|
|
uintptr(lpvObject))
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func GetPixel(hdc HDC, nXPos, nYPos int32) COLORREF {
|
|
ret, _, _ := syscall.Syscall(getPixel.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(nXPos),
|
|
uintptr(nYPos))
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func GetRgnBox(hrgn HRGN, lprc *RECT) int32 {
|
|
ret, _, _ := syscall.Syscall(getRgnBox.Addr(), 2,
|
|
uintptr(hrgn),
|
|
uintptr(unsafe.Pointer(lprc)),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func GetStockObject(fnObject int32) HGDIOBJ {
|
|
ret, _, _ := syscall.Syscall(getStockObject.Addr(), 1,
|
|
uintptr(fnObject),
|
|
0,
|
|
0)
|
|
|
|
return HGDIOBJ(ret)
|
|
}
|
|
|
|
func GetTextColor(hdc HDC) COLORREF {
|
|
ret, _, _ := syscall.Syscall(getTextColor.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func GetTextExtentExPoint(hdc HDC, lpszStr *uint16, cchString, nMaxExtent int32, lpnFit, alpDx *int32, lpSize *SIZE) bool {
|
|
ret, _, _ := syscall.Syscall9(getTextExtentExPoint.Addr(), 7,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(lpszStr)),
|
|
uintptr(cchString),
|
|
uintptr(nMaxExtent),
|
|
uintptr(unsafe.Pointer(lpnFit)),
|
|
uintptr(unsafe.Pointer(alpDx)),
|
|
uintptr(unsafe.Pointer(lpSize)),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func GetTextExtentPoint32(hdc HDC, lpString *uint16, c int32, lpSize *SIZE) bool {
|
|
ret, _, _ := syscall.Syscall6(getTextExtentPoint32.Addr(), 4,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(lpString)),
|
|
uintptr(c),
|
|
uintptr(unsafe.Pointer(lpSize)),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func GetTextMetrics(hdc HDC, lptm *TEXTMETRIC) bool {
|
|
ret, _, _ := syscall.Syscall(getTextMetrics.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(lptm)),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func GetViewportOrgEx(hdc HDC, lpPoint *POINT) bool {
|
|
ret, _, _ := syscall.Syscall(getViewportOrgEx.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(lpPoint)),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func GradientFill(hdc HDC, pVertex *TRIVERTEX, nVertex uint32, pMesh unsafe.Pointer, nMesh, ulMode uint32) bool {
|
|
ret, _, _ := syscall.Syscall6(gradientFill.Addr(), 6,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(pVertex)),
|
|
uintptr(nVertex),
|
|
uintptr(pMesh),
|
|
uintptr(nMesh),
|
|
uintptr(ulMode))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func IntersectClipRect(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect int32) int32 {
|
|
ret, _, _ := syscall.Syscall6(intersectClipRect.Addr(), 5,
|
|
uintptr(hdc),
|
|
uintptr(nLeftRect),
|
|
uintptr(nTopRect),
|
|
uintptr(nRightRect),
|
|
uintptr(nBottomRect),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func LineTo(hdc HDC, nXEnd, nYEnd int32) bool {
|
|
ret, _, _ := syscall.Syscall(lineTo.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(nXEnd),
|
|
uintptr(nYEnd))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func MoveToEx(hdc HDC, x, y int, lpPoint *POINT) bool {
|
|
ret, _, _ := syscall.Syscall6(moveToEx.Addr(), 4,
|
|
uintptr(hdc),
|
|
uintptr(x),
|
|
uintptr(y),
|
|
uintptr(unsafe.Pointer(lpPoint)),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func PlayEnhMetaFile(hdc HDC, hemf HENHMETAFILE, lpRect *RECT) bool {
|
|
ret, _, _ := syscall.Syscall(playEnhMetaFile.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(hemf),
|
|
uintptr(unsafe.Pointer(lpRect)))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func Polyline(hdc HDC, lppt unsafe.Pointer, cPoints int32) bool {
|
|
ret, _, _ := syscall.Syscall(polyline.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(lppt),
|
|
uintptr(cPoints))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func Rectangle_(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect int32) bool {
|
|
ret, _, _ := syscall.Syscall6(rectangle.Addr(), 5,
|
|
uintptr(hdc),
|
|
uintptr(nLeftRect),
|
|
uintptr(nTopRect),
|
|
uintptr(nRightRect),
|
|
uintptr(nBottomRect),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func RemoveFontResourceEx(lpszFilename *uint16, fl uint32, pdv unsafe.Pointer) bool {
|
|
ret, _, _ := syscall.Syscall(removeFontResourceEx.Addr(), 3,
|
|
uintptr(unsafe.Pointer(lpszFilename)),
|
|
uintptr(fl),
|
|
uintptr(pdv))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func RemoveFontMemResourceEx(h HANDLE) bool {
|
|
ret, _, _ := syscall.Syscall(removeFontMemResourceEx.Addr(), 1,
|
|
uintptr(h),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func ResetDC(hdc HDC, lpInitData *DEVMODE) HDC {
|
|
ret, _, _ := syscall.Syscall(resetDC.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(lpInitData)),
|
|
0)
|
|
|
|
return HDC(ret)
|
|
}
|
|
|
|
func RestoreDC(hdc HDC, nSaveDC int32) bool {
|
|
ret, _, _ := syscall.Syscall(restoreDC.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(nSaveDC),
|
|
0)
|
|
return ret != 0
|
|
}
|
|
|
|
func RoundRect(hdc HDC, nLeftRect, nTopRect, nRightRect, nBottomRect, nWidth, nHeight int32) bool {
|
|
ret, _, _ := syscall.Syscall9(roundRect.Addr(), 7,
|
|
uintptr(hdc),
|
|
uintptr(nLeftRect),
|
|
uintptr(nTopRect),
|
|
uintptr(nRightRect),
|
|
uintptr(nBottomRect),
|
|
uintptr(nWidth),
|
|
uintptr(nHeight),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func SaveDC(hdc HDC) int32 {
|
|
ret, _, _ := syscall.Syscall(saveDC.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
return int32(ret)
|
|
}
|
|
|
|
func SelectObject(hdc HDC, hgdiobj HGDIOBJ) HGDIOBJ {
|
|
ret, _, _ := syscall.Syscall(selectObject.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(hgdiobj),
|
|
0)
|
|
|
|
return HGDIOBJ(ret)
|
|
}
|
|
|
|
func SetBkColor(hdc HDC, crColor COLORREF) COLORREF {
|
|
ret, _, _ := syscall.Syscall(setBkColor.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(crColor),
|
|
0)
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func SetBkMode(hdc HDC, iBkMode int32) int32 {
|
|
ret, _, _ := syscall.Syscall(setBkMode.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(iBkMode),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func SetBrushOrgEx(hdc HDC, nXOrg, nYOrg int32, lppt *POINT) bool {
|
|
ret, _, _ := syscall.Syscall6(setBrushOrgEx.Addr(), 4,
|
|
uintptr(hdc),
|
|
uintptr(nXOrg),
|
|
uintptr(nYOrg),
|
|
uintptr(unsafe.Pointer(lppt)),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func SetDIBits(hdc HDC, hbmp HBITMAP, uStartScan, cScanLines uint32, lpvBits *byte, lpbmi *BITMAPINFO, fuColorUse uint32) int32 {
|
|
ret, _, _ := syscall.Syscall9(setDIBits.Addr(), 7,
|
|
uintptr(hdc),
|
|
uintptr(hbmp),
|
|
uintptr(uStartScan),
|
|
uintptr(cScanLines),
|
|
uintptr(unsafe.Pointer(lpvBits)),
|
|
uintptr(unsafe.Pointer(lpbmi)),
|
|
uintptr(fuColorUse),
|
|
0,
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func SetPixel(hdc HDC, X, Y int32, crColor COLORREF) COLORREF {
|
|
ret, _, _ := syscall.Syscall6(setPixel.Addr(), 4,
|
|
uintptr(hdc),
|
|
uintptr(X),
|
|
uintptr(Y),
|
|
uintptr(crColor),
|
|
0,
|
|
0)
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func SetPixelFormat(hdc HDC, iPixelFormat int32, ppfd *PIXELFORMATDESCRIPTOR) bool {
|
|
ret, _, _ := syscall.Syscall(setPixelFormat.Addr(), 3,
|
|
uintptr(hdc),
|
|
uintptr(iPixelFormat),
|
|
uintptr(unsafe.Pointer(ppfd)))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func SetStretchBltMode(hdc HDC, iStretchMode int32) int32 {
|
|
ret, _, _ := syscall.Syscall(setStretchBltMode.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(iStretchMode),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func SetTextColor(hdc HDC, crColor COLORREF) COLORREF {
|
|
ret, _, _ := syscall.Syscall(setTextColor.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(crColor),
|
|
0)
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func SetViewportOrgEx(hdc HDC, x, y int32, lpPoint *POINT) COLORREF {
|
|
ret, _, _ := syscall.Syscall6(setViewportOrgEx.Addr(), 4,
|
|
uintptr(hdc),
|
|
uintptr(x),
|
|
uintptr(y),
|
|
uintptr(unsafe.Pointer(lpPoint)),
|
|
0,
|
|
0)
|
|
|
|
return COLORREF(ret)
|
|
}
|
|
|
|
func StartDoc(hdc HDC, lpdi *DOCINFO) int32 {
|
|
ret, _, _ := syscall.Syscall(startDoc.Addr(), 2,
|
|
uintptr(hdc),
|
|
uintptr(unsafe.Pointer(lpdi)),
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func StartPage(hdc HDC) int32 {
|
|
ret, _, _ := syscall.Syscall(startPage.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return int32(ret)
|
|
}
|
|
|
|
func StretchBlt(hdcDest HDC, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest int32, hdcSrc HDC, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc int32, dwRop uint32) bool {
|
|
ret, _, _ := syscall.Syscall12(stretchBlt.Addr(), 11,
|
|
uintptr(hdcDest),
|
|
uintptr(nXOriginDest),
|
|
uintptr(nYOriginDest),
|
|
uintptr(nWidthDest),
|
|
uintptr(nHeightDest),
|
|
uintptr(hdcSrc),
|
|
uintptr(nXOriginSrc),
|
|
uintptr(nYOriginSrc),
|
|
uintptr(nWidthSrc),
|
|
uintptr(nHeightSrc),
|
|
uintptr(dwRop),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func SwapBuffers(hdc HDC) bool {
|
|
ret, _, _ := syscall.Syscall(swapBuffers.Addr(), 1,
|
|
uintptr(hdc),
|
|
0,
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func TextOut(hdc HDC, nXStart, nYStart int32, lpString *uint16, cchString int32) bool {
|
|
ret, _, _ := syscall.Syscall6(textOut.Addr(), 5,
|
|
uintptr(hdc),
|
|
uintptr(nXStart),
|
|
uintptr(nYStart),
|
|
uintptr(unsafe.Pointer(lpString)),
|
|
uintptr(cchString),
|
|
0)
|
|
return ret != 0
|
|
}
|
|
|
|
func TransparentBlt(hdcDest HDC, xoriginDest, yoriginDest, wDest, hDest int32, hdcSrc HDC, xoriginSrc, yoriginSrc, wSrc, hSrc int32, crTransparent uint32) bool {
|
|
ret, _, _ := syscall.Syscall12(transparentBlt.Addr(), 11,
|
|
uintptr(hdcDest),
|
|
uintptr(xoriginDest),
|
|
uintptr(yoriginDest),
|
|
uintptr(wDest),
|
|
uintptr(hDest),
|
|
uintptr(hdcSrc),
|
|
uintptr(xoriginSrc),
|
|
uintptr(yoriginSrc),
|
|
uintptr(wSrc),
|
|
uintptr(hSrc),
|
|
uintptr(crTransparent),
|
|
0)
|
|
|
|
return ret != 0
|
|
}
|