+ added the win16api font support functions, types and consts

git-svn-id: trunk@31700 -
This commit is contained in:
nickysn 2015-09-15 15:03:37 +00:00
parent aa57e7e835
commit 34766b82d8
3 changed files with 424 additions and 0 deletions

View File

@ -190,6 +190,234 @@ const
COLOR_INACTIVECAPTIONTEXT = 19;
COLOR_BTNHIGHLIGHT = 20;
{ Font support }
{ OutPrecision values }
OUT_TT_PRECIS = 4;
OUT_DEVICE_PRECIS = 5;
OUT_RASTER_PRECIS = 6;
OUT_TT_ONLY_PRECIS = 7;
{ ClipPrecision values }
CLIP_LH_ANGLES = $10;
CLIP_TT_ALWAYS = $20;
CLIP_EMBEDDED = $80;
{ tmPitchAndFamily values }
TMPF_TRUETYPE = $04;
type
PPANOSE = ^PANOSE;
LPPANOSE = ^PANOSE; far;
PANOSE = record
bFamilyType: BYTE;
bSerifStyle: BYTE;
bWeight: BYTE;
bProportion: BYTE;
bContrast: BYTE;
bStrokeVariation: BYTE;
bArmStyle: BYTE;
bLetterform: BYTE;
bMidline: BYTE;
bXHeight: BYTE;
end;
TPanose = PANOSE;
POUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC;
LPOUTLINETEXTMETRIC = ^OUTLINETEXTMETRIC; far;
OUTLINETEXTMETRIC = record
otmSize: UINT;
otmTextMetrics: TEXTMETRIC;
otmFiller: BYTE;
otmPanoseNumber: PANOSE;
otmfsSelection: UINT;
otmfsType: UINT;
otmsCharSlopeRise: SmallInt;
otmsCharSlopeRun: SmallInt;
otmItalicAngle: SmallInt;
otmEMSquare: UINT;
otmAscent: SmallInt;
otmDescent: SmallInt;
otmLineGap: UINT;
otmsCapEmHeight: UINT;
otmsXHeight: UINT;
otmrcFontBox: RECT;
otmMacAscent: SmallInt;
otmMacDescent: SmallInt;
otmMacLineGap: UINT;
otmusMinimumPPEM: UINT;
otmptSubscriptSize: POINT;
otmptSubscriptOffset: POINT;
otmptSuperscriptSize: POINT;
otmptSuperscriptOffset: POINT;
otmsStrikeoutSize: UINT;
otmsStrikeoutPosition: SmallInt;
otmsUnderscorePosition: SmallInt;
otmsUnderscoreSize: SmallInt;
otmpFamilyName: PSTR;
otmpFaceName: PSTR;
otmpStyleName: PSTR;
otmpFullName: PSTR;
end;
TOutlineTextMetric = OUTLINETEXTMETRIC;
{ Structure passed to FONTENUMPROC }
{ NOTE: NEWTEXTMETRIC is the same as TEXTMETRIC plus 4 new fields }
PNEWTEXTMETRIC = ^NEWTEXTMETRIC;
NPNEWTEXTMETRIC = ^NEWTEXTMETRIC; near;
LPNEWTEXTMETRIC = ^NEWTEXTMETRIC; far;
NEWTEXTMETRIC = record
tmHeight: SmallInt;
tmAscent: SmallInt;
tmDescent: SmallInt;
tmInternalLeading: SmallInt;
tmExternalLeading: SmallInt;
tmAveCharWidth: SmallInt;
tmMaxCharWidth: SmallInt;
tmWeight: SmallInt;
tmItalic: BYTE;
tmUnderlined: BYTE;
tmStruckOut: BYTE;
tmFirstChar: BYTE;
tmLastChar: BYTE;
tmDefaultChar: BYTE;
tmBreakChar: BYTE;
tmPitchAndFamily: BYTE;
tmCharSet: BYTE;
tmOverhang: SmallInt;
tmDigitizedAspectX: SmallInt;
tmDigitizedAspectY: SmallInt;
ntmFlags: DWORD;
ntmSizeEM: UINT;
ntmCellHeight: UINT;
ntmAvgWidth: UINT;
end;
TNewTextMetric = NEWTEXTMETRIC;
const
{ ntmFlags field flags }
NTM_REGULAR = $00000040;
NTM_BOLD = $00000020;
NTM_ITALIC = $00000001;
LF_FULLFACESIZE = 64;
type
{ Structure passed to FONTENUMPROC }
PENUMLOGFONT = ^ENUMLOGFONT;
LPENUMLOGFONT = ^ENUMLOGFONT; far;
ENUMLOGFONT = record
elfLogFont: LOGFONT;
elfFullName: array [0..LF_FULLFACESIZE-1] of char;
elfStyle: array [0..LF_FACESIZE-1] of char;
end;
TEnumLogFont = ENUMLOGFONT;
FONTENUMPROC = function(lpelf: LPENUMLOGFONT; lpntm: LPNEWTEXTMETRIC; FontType: SmallInt; lpData: LPARAM): SmallInt; far;
const
{ EnumFonts font type values }
TRUETYPE_FONTTYPE = $0004;
type
PGLYPHMETRICS = ^GLYPHMETRICS;
LPGLYPHMETRICS = ^GLYPHMETRICS; far;
GLYPHMETRICS = record
gmBlackBoxX: UINT;
gmBlackBoxY: UINT;
gmptGlyphOrigin: POINT;
gmCellIncX: SmallInt;
gmCellIncY: SmallInt;
end;
TGlyphMetrics = GLYPHMETRICS;
PFIXED = ^FIXED;
LPFIXED = ^FIXED; far;
FIXED = record
fract: UINT;
value: SmallInt;
end;
TFixed = FIXED;
PMAT2 = ^MAT2;
LPMAT2 = ^MAT2; far;
MAT2 = record
eM11: FIXED;
eM12: FIXED;
eM21: FIXED;
eM22: FIXED;
end;
TMat2 = MAT2;
const
{ GetGlyphOutline constants }
GGO_METRICS = 0;
GGO_BITMAP = 1;
GGO_NATIVE = 2;
TT_POLYGON_TYPE = 24;
TT_PRIM_LINE = 1;
TT_PRIM_QSPLINE = 2;
type
PPOINTFX = ^POINTFX;
LPPOINTFX = ^POINTFX; far;
POINTFX = record
x: FIXED;
y: FIXED;
end;
TPointFX = POINTFX;
PTTPOLYCURVE = ^TTPOLYCURVE;
LPTTPOLYCURVE = ^TTPOLYCURVE; far;
TTPOLYCURVE = record
wType: UINT;
cpfx: UINT;
apfx: array [0..0] of POINTFX;
end;
TTTPOLYCURVE = TTPolyCurve;
PTTPOLYGONHEADER = ^TTPOLYGONHEADER;
LPTTPOLYGONHEADER = ^TTPOLYGONHEADER; far;
TTPOLYGONHEADER = record
cb: DWORD;
dwType: DWORD;
pfxStart: POINTFX;
end;
TTTPolygonHeader = TTPOLYGONHEADER;
PABC = ^ABC;
LPABC = ^ABC; far;
ABC = record
abcA: SmallInt;
abcB: UINT;
abcC: SmallInt;
end;
TABC = ABC;
PKERNINGPAIR = ^KERNINGPAIR;
LPKERNINGPAIR = ^KERNINGPAIR; far;
KERNINGPAIR = record
wFirst: WORD;
wSecond: WORD;
iKernAmount: SmallInt;
end;
TKerningPair = KERNINGPAIR;
PRASTERIZER_STATUS = ^RASTERIZER_STATUS;
LPRASTERIZER_STATUS = ^RASTERIZER_STATUS; far;
RASTERIZER_STATUS = record
nSize: SmallInt;
wFlags: SmallInt;
nLanguageID: SmallInt;
end;
TRasterizer_Status = RASTERIZER_STATUS;
const
{ bits defined in wFlags of RASTERIZER_STATUS }
TT_AVAILABLE = $0001;
TT_ENABLED = $0002;
function GetFreeSystemResources(SysResource: UINT): UINT; external 'USER';
procedure LogError(err: UINT; lpInfo: FarPointer); external 'KERNEL';
@ -271,6 +499,34 @@ function GetTextExtentPoint(hdc: HDC; lpszString: LPCSTR; cbString: SmallInt; lp
function GetTextExtentPoint(hdc: HDC; lpszString: LPCSTR; cbString: SmallInt; var Size: SIZE): BOOL; external 'GDI';
{$endif}
{ Font support }
function GetAspectRatioFilterEx(hdc: HDC; lpAspectRatio: LPSIZE): BOOL; external 'GDI';
function GetOutlineTextMetrics(hdc: HDC; cbData: UINT; lpotm: LPOUTLINETEXTMETRIC): WORD; external 'GDI';
function EnumFontFamilies(hdc: HDC; lpszFamily: LPCSTR; fntenmprc: FONTENUMPROC; lParam: LPARAM): SmallInt; external 'GDI';
function EnumFontFamilies(hdc: HDC; lpszFamily: LPCSTR; fntenmprc: TFarProc; lParam: LPARAM): SmallInt; external 'GDI';
function GetFontData(hdc: HDC; dwTable, dwOffset: DWORD; lpvBuffer: FarPointer; cbData: DWORD): DWORD; external 'GDI';
function CreateScalableFontResource(fHidden: UINT; lpszResourceFile, lpszFontFile, lpszCurrentPath: LPCSTR): BOOL; external 'GDI';
function GetGlyphOutline(hdc: HDC; uChar, fuFormat: UINT; lpgm: LPGLYPHMETRICS; cbBuffer: DWORD; lpBuffer: FarPointer; lpmat2: LPMAT2): DWORD; external 'GDI';
{$ifdef VAR_PARAMS_ARE_FAR}
function GetGlyphOutline(hdc: HDC; uChar, fuFormat: UINT; var gm: GLYPHMETRICS; cbBuffer: DWORD; lpBuffer: FarPointer; var mat2: MAT2): DWORD; external 'GDI';
{$endif}
function GetCharABCWidths(hdc: HDC; uFirstChar, uLastChar: UINT; lpabc: LPABC): BOOL; external 'GDI';
{$ifdef VAR_PARAMS_ARE_FAR}
function GetCharABCWidths(hdc: HDC; uFirstChar, uLastChar: UINT; var abc: ABC): BOOL; external 'GDI';
{$endif}
function GetKerningPairs(hdc: HDC; cPairs: SmallInt; lpkrnpair: LPKERNINGPAIR): SmallInt; external 'GDI';
function GetRasterizerCaps(lpraststat: LPRASTERIZER_STATUS; cb: SmallInt): BOOL; external 'GDI';
{$ifdef VAR_PARAMS_ARE_FAR}
function GetRasterizerCaps(var raststat: RASTERIZER_STATUS; cb: SmallInt): BOOL; external 'GDI';
{$endif}
implementation
end.

View File

@ -586,3 +586,30 @@ function SetTextCharacterExtra(hdc: HDC; nExtraSpace: SmallInt): SmallInt; exter
function GetTextCharacterExtra(hdc: HDC): SmallInt; external 'GDI';
function SetTextJustification(hdc: HDC; nExtraSpace, cBreakChars: SmallInt): SmallInt; external 'GDI';
{ Font support }
function CreateFont(nHeight, nWidth, nEscapement, nOrientation, fnWeight: SmallInt;
fbItalic, fbUnderline, fbStrikeOut, fbCharSet,
fbOutputPrecision, fbClipPrecision, fbQuality, fbPitchAndFamily: BYTE; lpszFace: LPCSTR): HFONT; external 'GDI';
function CreateFontIndirect(lplf: LPLOGFONT): HFONT; external 'GDI';
{$ifdef VAR_PARAMS_ARE_FAR}
function CreateFontIndirect(var lf: LOGFONT): HFONT; external 'GDI';
{$endif}
function SetMapperFlags(hdc: HDC; fdwMatch: DWORD): DWORD; external 'GDI';
function AddFontResource(lpszFilename: LPCSTR): SmallInt; external 'GDI';
function RemoveFontResource(lpszFile: LPCSTR): BOOL; external 'GDI';
function GetTextFace(hdc: HDC; cbBuffer: SmallInt; lpszFace: LPSTR): SmallInt; external 'GDI';
function GetAspectRatioFilter(hdc: HDC): DWORD; external 'GDI';
function GetTextMetrics(hdc: HDC; lptm: LPTEXTMETRIC): BOOL; external 'GDI';
{$ifdef VAR_PARAMS_ARE_FAR}
function GetTextMetrics(hdc: HDC; var tm: TEXTMETRIC): BOOL; external 'GDI';
{$endif}
function EnumFonts(hdc: HDC; lpszFace: LPCSTR; fntenmprc: OLDFONTENUMPROC; lParam: LPARAM): SmallInt; external 'GDI';
function EnumFonts(hdc: HDC; lpszFace: LPCSTR; fntenmprc: TFarProc; lParam: LPARAM): SmallInt; external 'GDI';

View File

@ -725,3 +725,144 @@ const
type
GRAYSTRINGPROC = function(hdc: HDC; lpData: LPARAM; cch: SmallInt): BOOL; far;
{ Font support }
const
{ Logical Font }
LF_FACESIZE = 32;
type
PLOGFONT = ^LOGFONT;
NPLOGFONT = ^LOGFONT; near;
LPLOGFONT = ^LOGFONT; far;
LOGFONT = record
lfHeight: SmallInt;
lfWidth: SmallInt;
lfEscapement: SmallInt;
lfOrientation: SmallInt;
lfWeight: SmallInt;
lfItalic: BYTE;
lfUnderline: BYTE;
lfStrikeOut: BYTE;
lfCharSet: BYTE;
lfOutPrecision: BYTE;
lfClipPrecision: BYTE;
lfQuality: BYTE;
lfPitchAndFamily: BYTE;
lfFaceName: array [0..LF_FACESIZE-1] of char;
end;
TLogFont = LOGFONT;
const
{ weight values }
FW_DONTCARE = 0;
FW_THIN = 100;
FW_EXTRALIGHT = 200;
FW_LIGHT = 300;
FW_NORMAL = 400;
FW_MEDIUM = 500;
FW_SEMIBOLD = 600;
FW_BOLD = 700;
FW_EXTRABOLD = 800;
FW_HEAVY = 900;
FW_ULTRALIGHT = FW_EXTRALIGHT;
FW_REGULAR = FW_NORMAL;
FW_DEMIBOLD = FW_SEMIBOLD;
FW_ULTRABOLD = FW_EXTRABOLD;
FW_BLACK = FW_HEAVY;
{ CharSet values }
ANSI_CHARSET = 0;
DEFAULT_CHARSET = 1;
SYMBOL_CHARSET = 2;
SHIFTJIS_CHARSET = 128;
HANGEUL_CHARSET = 129;
CHINESEBIG5_CHARSET = 136;
OEM_CHARSET = 255;
{ OutPrecision values }
OUT_DEFAULT_PRECIS = 0;
OUT_STRING_PRECIS = 1;
OUT_CHARACTER_PRECIS = 2;
OUT_STROKE_PRECIS = 3;
{ ClipPrecision values }
CLIP_DEFAULT_PRECIS = $00;
CLIP_CHARACTER_PRECIS = $01;
CLIP_STROKE_PRECIS = $02;
CLIP_MASK = $0F;
{ Quality values }
DEFAULT_QUALITY = 0;
DRAFT_QUALITY = 1;
PROOF_QUALITY = 2;
{ PitchAndFamily pitch values (low 4 bits) }
DEFAULT_PITCH = $00;
FIXED_PITCH = $01;
VARIABLE_PITCH = $02;
{ PitchAndFamily family values (high 4 bits) }
FF_DONTCARE = $00;
FF_ROMAN = $10;
FF_SWISS = $20;
FF_MODERN = $30;
FF_SCRIPT = $40;
FF_DECORATIVE = $50;
{ Stock fonts for use with GetStockObject() }
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;
ASPECT_FILTERING = $00000001;
WM_FONTCHANGE = $001D;
type
PTEXTMETRIC = ^TEXTMETRIC;
NPTEXTMETRIC = ^TEXTMETRIC; near;
LPTEXTMETRIC = ^TEXTMETRIC; far;
TEXTMETRIC = record
tmHeight: SmallInt;
tmAscent: SmallInt;
tmDescent: SmallInt;
tmInternalLeading: SmallInt;
tmExternalLeading: SmallInt;
tmAveCharWidth: SmallInt;
tmMaxCharWidth: SmallInt;
tmWeight: SmallInt;
tmItalic: BYTE;
tmUnderlined: BYTE;
tmStruckOut: BYTE;
tmFirstChar: BYTE;
tmLastChar: BYTE;
tmDefaultChar: BYTE;
tmBreakChar: BYTE;
tmPitchAndFamily: BYTE;
tmCharSet: BYTE;
tmOverhang: SmallInt;
tmDigitizedAspectX: SmallInt;
tmDigitizedAspectY: SmallInt;
end;
TTextMetric = TEXTMETRIC;
const
{ tmPitchAndFamily values }
TMPF_FIXED_PITCH = $01;
TMPF_VECTOR = $02;
TMPF_DEVICE = $08;
type
OLDFONTENUMPROC = function(lplf: LPLOGFONT; lptm: LPTEXTMETRIC; FontType: SmallInt; lpData: LPARAM): SmallInt; far;
const
{ EnumFonts font type values }
RASTER_FONTTYPE = $0001;
DEVICE_FONTTYPE = $0002;