📄 wingdi.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Graphics Device Interface interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: wingdi.h, released June 2000. }
{ The original Pascal code is: WinGDI.pas, released December 2000 }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ The contents of this file are used with permission, subject to }
{ the Mozilla Public License Version 1.1 (the "License"); you may }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
{ implied. See the License for the specific language governing }
{ rights and limitations under the License. }
{ }
{******************************************************************}
unit WinGDI;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "WinGDI.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
WinNT, WinType;
type
PInteger = ^Integer; { TODO}
// Binary raster ops
const
R2_BLACK = 1; // 0
{$EXTERNALSYM R2_BLACK}
R2_NOTMERGEPEN = 2; // DPon
{$EXTERNALSYM R2_NOTMERGEPEN}
R2_MASKNOTPEN = 3; // DPna
{$EXTERNALSYM R2_MASKNOTPEN}
R2_NOTCOPYPEN = 4; // PN
{$EXTERNALSYM R2_NOTCOPYPEN}
R2_MASKPENNOT = 5; // PDna
{$EXTERNALSYM R2_MASKPENNOT}
R2_NOT = 6; // Dn
{$EXTERNALSYM R2_NOT}
R2_XORPEN = 7; // DPx
{$EXTERNALSYM R2_XORPEN}
R2_NOTMASKPEN = 8; // DPan
{$EXTERNALSYM R2_NOTMASKPEN}
R2_MASKPEN = 9; // DPa
{$EXTERNALSYM R2_MASKPEN}
R2_NOTXORPEN = 10; // DPxn
{$EXTERNALSYM R2_NOTXORPEN}
R2_NOP = 11; // D
{$EXTERNALSYM R2_NOP}
R2_MERGENOTPEN = 12; // DPno
{$EXTERNALSYM R2_MERGENOTPEN}
R2_COPYPEN = 13; // P
{$EXTERNALSYM R2_COPYPEN}
R2_MERGEPENNOT = 14; // PDno
{$EXTERNALSYM R2_MERGEPENNOT}
R2_MERGEPEN = 15; // DPo
{$EXTERNALSYM R2_MERGEPEN}
R2_WHITE = 16; // 1
{$EXTERNALSYM R2_WHITE}
R2_LAST = 16;
{$EXTERNALSYM R2_LAST}
// Ternary raster operations
SRCCOPY = DWORD($00CC0020); // dest = source
{$EXTERNALSYM SRCCOPY}
SRCPAINT = DWORD($00EE0086); // dest = source OR dest
{$EXTERNALSYM SRCPAINT}
SRCAND = DWORD($008800C6); // dest = source AND dest
{$EXTERNALSYM SRCAND}
SRCINVERT = DWORD($00660046); // dest = source XOR dest
{$EXTERNALSYM SRCINVERT}
SRCERASE = DWORD($00440328); // dest = source AND (NOT dest )
{$EXTERNALSYM SRCERASE}
NOTSRCCOPY = DWORD($00330008); // dest = (NOT source)
{$EXTERNALSYM NOTSRCCOPY}
NOTSRCERASE = DWORD($001100A6); // dest = (NOT src) AND (NOT dest)
{$EXTERNALSYM NOTSRCERASE}
MERGECOPY = DWORD($00C000CA); // dest = (source AND pattern)
{$EXTERNALSYM MERGECOPY}
MERGEPAINT = DWORD($00BB0226); // dest = (NOT source) OR dest
{$EXTERNALSYM MERGEPAINT}
PATCOPY = DWORD($00F00021); // dest = pattern
{$EXTERNALSYM PATCOPY}
PATPAINT = DWORD($00FB0A09); // dest = DPSnoo
{$EXTERNALSYM PATPAINT}
PATINVERT = DWORD($005A0049); // dest = pattern XOR dest
{$EXTERNALSYM PATINVERT}
DSTINVERT = DWORD($00550009); // dest = (NOT dest)
{$EXTERNALSYM DSTINVERT}
BLACKNESS = DWORD($00000042); // dest = BLACK
{$EXTERNALSYM BLACKNESS}
WHITENESS = DWORD($00FF0062); // dest = WHITE
{$EXTERNALSYM WHITENESS}
NOMIRRORBITMAP = DWORD($80000000); // Do not Mirror the bitmap in this call
{$EXTERNALSYM NOMIRRORBITMAP}
CAPTUREBLT = DWORD($40000000); // Include layered windows
{$EXTERNALSYM CAPTUREBLT}
// Quaternary raster codes
function MAKEROP4(Fore, Back: DWORD): DWORD;
{$EXTERNALSYM MAKEROP4}
const
GDI_ERROR = DWORD($FFFFFFFF);
{$EXTERNALSYM GDI_ERROR}
HGDI_ERROR = HANDLE($FFFFFFFF);
{$EXTERNALSYM HGDI_ERROR}
// Region Flags
ERROR = 0;
{$EXTERNALSYM ERROR}
NULLREGION = 1;
{$EXTERNALSYM NULLREGION}
SIMPLEREGION = 2;
{$EXTERNALSYM SIMPLEREGION}
COMPLEXREGION = 3;
{$EXTERNALSYM COMPLEXREGION}
RGN_ERROR = ERROR;
{$EXTERNALSYM RGN_ERROR}
// CombineRgn() Styles
RGN_AND = 1;
{$EXTERNALSYM RGN_AND}
RGN_OR = 2;
{$EXTERNALSYM RGN_OR}
RGN_XOR = 3;
{$EXTERNALSYM RGN_XOR}
RGN_DIFF = 4;
{$EXTERNALSYM RGN_DIFF}
RGN_COPY = 5;
{$EXTERNALSYM RGN_COPY}
RGN_MIN = RGN_AND;
{$EXTERNALSYM RGN_MIN}
RGN_MAX = RGN_COPY;
{$EXTERNALSYM RGN_MAX}
// StretchBlt() Modes
BLACKONWHITE = 1;
{$EXTERNALSYM BLACKONWHITE}
WHITEONBLACK = 2;
{$EXTERNALSYM WHITEONBLACK}
COLORONCOLOR = 3;
{$EXTERNALSYM COLORONCOLOR}
HALFTONE = 4;
{$EXTERNALSYM HALFTONE}
MAXSTRETCHBLTMODE = 4;
{$EXTERNALSYM MAXSTRETCHBLTMODE}
// New StretchBlt() Modes
STRETCH_ANDSCANS = BLACKONWHITE;
{$EXTERNALSYM STRETCH_ANDSCANS}
STRETCH_ORSCANS = WHITEONBLACK;
{$EXTERNALSYM STRETCH_ORSCANS}
STRETCH_DELETESCANS = COLORONCOLOR;
{$EXTERNALSYM STRETCH_DELETESCANS}
STRETCH_HALFTONE = HALFTONE;
{$EXTERNALSYM STRETCH_HALFTONE}
// PolyFill() Modes
ALTERNATE = 1;
{$EXTERNALSYM ALTERNATE}
WINDING = 2;
{$EXTERNALSYM WINDING}
POLYFILL_LAST = 2;
{$EXTERNALSYM POLYFILL_LAST}
// Layout Orientation Options
LAYOUT_RTL = $00000001; // Right to left
{$EXTERNALSYM LAYOUT_RTL}
LAYOUT_BTT = $00000002; // Bottom to top
{$EXTERNALSYM LAYOUT_BTT}
LAYOUT_VBH = $00000004; // Vertical before horizontal
{$EXTERNALSYM LAYOUT_VBH}
LAYOUT_ORIENTATIONMASK = (LAYOUT_RTL or LAYOUT_BTT or LAYOUT_VBH);
{$EXTERNALSYM LAYOUT_ORIENTATIONMASK}
LAYOUT_BITMAPORIENTATIONPRESERVED = $00000008;
{$EXTERNALSYM LAYOUT_BITMAPORIENTATIONPRESERVED}
// Text Alignment Options
TA_NOUPDATECP = 0;
{$EXTERNALSYM TA_NOUPDATECP}
TA_UPDATECP = 1;
{$EXTERNALSYM TA_UPDATECP}
TA_LEFT = 0;
{$EXTERNALSYM TA_LEFT}
TA_RIGHT = 2;
{$EXTERNALSYM TA_RIGHT}
TA_CENTER = 6;
{$EXTERNALSYM TA_CENTER}
TA_TOP = 0;
{$EXTERNALSYM TA_TOP}
TA_BOTTOM = 8;
{$EXTERNALSYM TA_BOTTOM}
TA_BASELINE = 24;
{$EXTERNALSYM TA_BASELINE}
TA_RTLREADING = 256;
{$EXTERNALSYM TA_RTLREADING}
{$IFDEF WINVER_0400_GREATER}
TA_MASK = (TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING);
{$EXTERNALSYM TA_MASK}
{$ELSE}
TA_MASK = (TA_BASELINE + TA_CENTER + TA_UPDATECP);
{$EXTERNALSYM TA_MASK}
{$ENDIF}
VTA_BASELINE = TA_BASELINE;
{$EXTERNALSYM VTA_BASELINE}
VTA_LEFT = TA_BOTTOM;
{$EXTERNALSYM VTA_LEFT}
VTA_RIGHT = TA_TOP;
{$EXTERNALSYM VTA_RIGHT}
VTA_CENTER = TA_CENTER;
{$EXTERNALSYM VTA_CENTER}
VTA_BOTTOM = TA_RIGHT;
{$EXTERNALSYM VTA_BOTTOM}
VTA_TOP = TA_LEFT;
{$EXTERNALSYM VTA_TOP}
ETO_OPAQUE = $0002;
{$EXTERNALSYM ETO_OPAQUE}
ETO_CLIPPED = $0004;
{$EXTERNALSYM ETO_CLIPPED}
ETO_GLYPH_INDEX = $0010;
{$EXTERNALSYM ETO_GLYPH_INDEX}
ETO_RTLREADING = $0080;
{$EXTERNALSYM ETO_RTLREADING}
ETO_NUMERICSLOCAL = $0400;
{$EXTERNALSYM ETO_NUMERICSLOCAL}
ETO_NUMERICSLATIN = $0800;
{$EXTERNALSYM ETO_NUMERICSLATIN}
ETO_IGNORELANGUAGE = $1000;
{$EXTERNALSYM ETO_IGNORELANGUAGE}
ETO_PDY = $2000;
{$EXTERNALSYM ETO_PDY}
ASPECT_FILTERING = $0001;
{$EXTERNALSYM ASPECT_FILTERING}
// Bounds Accumulation APIs
DCB_RESET = $0001;
{$EXTERNALSYM DCB_RESET}
DCB_ACCUMULATE = $0002;
{$EXTERNALSYM DCB_ACCUMULATE}
DCB_DIRTY = DCB_ACCUMULATE;
{$EXTERNALSYM DCB_DIRTY}
DCB_SET = (DCB_RESET or DCB_ACCUMULATE);
{$EXTERNALSYM DCB_SET}
DCB_ENABLE = $0004;
{$EXTERNALSYM DCB_ENABLE}
DCB_DISABLE = $0008;
{$EXTERNALSYM DCB_DISABLE}
// Metafile Functions
META_SETBKCOLOR = $0201;
{$EXTERNALSYM META_SETBKCOLOR}
META_SETBKMODE = $0102;
{$EXTERNALSYM META_SETBKMODE}
META_SETMAPMODE = $0103;
{$EXTERNALSYM META_SETMAPMODE}
META_SETROP2 = $0104;
{$EXTERNALSYM META_SETROP2}
META_SETRELABS = $0105;
{$EXTERNALSYM META_SETRELABS}
META_SETPOLYFILLMODE = $0106;
{$EXTERNALSYM META_SETPOLYFILLMODE}
META_SETSTRETCHBLTMODE = $0107;
{$EXTERNALSYM META_SETSTRETCHBLTMODE}
META_SETTEXTCHAREXTRA = $0108;
{$EXTERNALSYM META_SETTEXTCHAREXTRA}
META_SETTEXTCOLOR = $0209;
{$EXTERNALSYM META_SETTEXTCOLOR}
META_SETTEXTJUSTIFICATION = $020A;
{$EXTERNALSYM META_SETTEXTJUSTIFICATION}
META_SETWINDOWORG = $020B;
{$EXTERNALSYM META_SETWINDOWORG}
META_SETWINDOWEXT = $020C;
{$EXTERNALSYM META_SETWINDOWEXT}
META_SETVIEWPORTORG = $020D;
{$EXTERNALSYM META_SETVIEWPORTORG}
META_SETVIEWPORTEXT = $020E;
{$EXTERNALSYM META_SETVIEWPORTEXT}
META_OFFSETWINDOWORG = $020F;
{$EXTERNALSYM META_OFFSETWINDOWORG}
META_SCALEWINDOWEXT = $0410;
{$EXTERNALSYM META_SCALEWINDOWEXT}
META_OFFSETVIEWPORTORG = $0211;
{$EXTERNALSYM META_OFFSETVIEWPORTORG}
META_SCALEVIEWPORTEXT = $0412;
{$EXTERNALSYM META_SCALEVIEWPORTEXT}
META_LINETO = $0213;
{$EXTERNALSYM META_LINETO}
META_MOVETO = $0214;
{$EXTERNALSYM META_MOVETO}
META_EXCLUDECLIPRECT = $0415;
{$EXTERNALSYM META_EXCLUDECLIPRECT}
META_INTERSECTCLIPRECT = $0416;
{$EXTERNALSYM META_INTERSECTCLIPRECT}
META_ARC = $0817;
{$EXTERNALSYM META_ARC}
META_ELLIPSE = $0418;
{$EXTERNALSYM META_ELLIPSE}
META_FLOODFILL = $0419;
{$EXTERNALSYM META_FLOODFILL}
META_PIE = $081A;
{$EXTERNALSYM META_PIE}
META_RECTANGLE = $041B;
{$EXTERNALSYM META_RECTANGLE}
META_ROUNDRECT = $061C;
{$EXTERNALSYM META_ROUNDRECT}
META_PATBLT = $061D;
{$EXTERNALSYM META_PATBLT}
META_SAVEDC = $001E;
{$EXTERNALSYM META_SAVEDC}
META_SETPIXEL = $041F;
{$EXTERNALSYM META_SETPIXEL}
META_OFFSETCLIPRGN = $0220;
{$EXTERNALSYM META_OFFSETCLIPRGN}
META_TEXTOUT = $0521;
{$EXTERNALSYM META_TEXTOUT}
META_BITBLT = $0922;
{$EXTERNALSYM META_BITBLT}
META_STRETCHBLT = $0B23;
{$EXTERNALSYM META_STRETCHBLT}
META_POLYGON = $0324;
{$EXTERNALSYM META_POLYGON}
META_POLYLINE = $0325;
{$EXTERNALSYM META_POLYLINE}
META_ESCAPE = $0626;
{$EXTERNALSYM META_ESCAPE}
META_RESTOREDC = $0127;
{$EXTERNALSYM META_RESTOREDC}
META_FILLREGION = $0228;
{$EXTERNALSYM META_FILLREGION}
META_FRAMEREGION = $0429;
{$EXTERNALSYM META_FRAMEREGION}
META_INVERTREGION = $012A;
{$EXTERNALSYM META_INVERTREGION}
META_PAINTREGION = $012B;
{$EXTERNALSYM META_PAINTREGION}
META_SELECTCLIPREGION = $012C;
{$EXTERNALSYM META_SELECTCLIPREGION}
META_SELECTOBJECT = $012D;
{$EXTERNALSYM META_SELECTOBJECT}
META_SETTEXTALIGN = $012E;
{$EXTERNALSYM META_SETTEXTALIGN}
META_CHORD = $0830;
{$EXTERNALSYM META_CHORD}
META_SETMAPPERFLAGS = $0231;
{$EXTERNALSYM META_SETMAPPERFLAGS}
META_EXTTEXTOUT = $0a32;
{$EXTERNALSYM META_EXTTEXTOUT}
META_SETDIBTODEV = $0d33;
{$EXTERNALSYM META_SETDIBTODEV}
META_SELECTPALETTE = $0234;
{$EXTERNALSYM META_SELECTPALETTE}
META_REALIZEPALETTE = $0035;
{$EXTERNALSYM META_REALIZEPALETTE}
META_ANIMATEPALETTE = $0436;
{$EXTERNALSYM META_ANIMATEPALETTE}
META_SETPALENTRIES = $0037;
{$EXTERNALSYM META_SETPALENTRIES}
META_POLYPOLYGON = $0538;
{$EXTERNALSYM META_POLYPOLYGON}
META_RESIZEPALETTE = $0139;
{$EXTERNALSYM META_RESIZEPALETTE}
META_DIBBITBLT = $0940;
{$EXTERNALSYM META_DIBBITBLT}
META_DIBSTRETCHBLT = $0b41;
{$EXTERNALSYM META_DIBSTRETCHBLT}
META_DIBCREATEPATTERNBRUSH = $0142;
{$EXTERNALSYM META_DIBCREATEPATTERNBRUSH}
META_STRETCHDIB = $0f43;
{$EXTERNALSYM META_STRETCHDIB}
META_EXTFLOODFILL = $0548;
{$EXTERNALSYM META_EXTFLOODFILL}
META_SETLAYOUT = $0149;
{$EXTERNALSYM META_SETLAYOUT}
META_DELETEOBJECT = $01f0;
{$EXTERNALSYM META_DELETEOBJECT}
META_CREATEPALETTE = $00f7;
{$EXTERNALSYM META_CREATEPALETTE}
META_CREATEPATTERNBRUSH = $01F9;
{$EXTERNALSYM META_CREATEPATTERNBRUSH}
META_CREATEPENINDIRECT = $02FA;
{$EXTERNALSYM META_CREATEPENINDIRECT}
META_CREATEFONTINDIRECT = $02FB;
{$EXTERNALSYM META_CREATEFONTINDIRECT}
META_CREATEBRUSHINDIRECT = $02FC;
{$EXTERNALSYM META_CREATEBRUSHINDIRECT}
META_CREATEREGION = $06FF;
{$EXTERNALSYM META_CREATEREGION}
type
PDrawPatRect = ^TDrawPatRect;
_DRAWPATRECT = record
ptPosition: POINT;
ptSize: POINT;
wStyle: WORD;
wPattern: WORD;
end;
{$EXTERNALSYM _DRAWPATRECT}
DRAWPATRECT = _DRAWPATRECT;
{$EXTERNALSYM DRAWPATRECT}
TDrawPatRect = _DRAWPATRECT;
// GDI Escapes
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -