mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-09 18:12:33 +02:00
1100 lines
38 KiB
ObjectPascal
1100 lines
38 KiB
ObjectPascal
{Set tabsize to 4.}
|
||
{****************************************************************************
|
||
|
||
VIOCALLS interface unit
|
||
FPK-Pascal Runtime Library for OS/2
|
||
Copyright (c) 1993,94 by Florian Kl„mpfl
|
||
Copyright (c) 1997 by Dani‰l Mantione
|
||
Copyright (c) 1998 by Tomas Hajny
|
||
|
||
The FPK-Pascal runtime library is distributed under the Library GNU Public
|
||
License v2. So is this unit. The Library GNU Public License requires you to
|
||
distribute the source code of this unit with any product that uses it.
|
||
Because the EMX library isn't under the LGPL, we grant you an exception to
|
||
this, and that is, when you compile a program with the FPK Pascal compiler,
|
||
you do not need to ship source code with that program, AS LONG AS YOU ARE
|
||
USING UNMODIFIED CODE! If you modify this code, you MUST change the next
|
||
line:
|
||
|
||
<This is an official, unmodified FPK Pascal source code file.>
|
||
|
||
Send us your modified files, we can work together if you want!
|
||
|
||
FPK-Pascal is distributed in the hope that it will be useful,
|
||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
Library GNU General Public License for more details.
|
||
|
||
You should have received a copy of the Library GNU General Public License
|
||
along with FPK-Pascal; see the file COPYING.LIB. If not, write to
|
||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||
Boston, MA 02111-1307, USA.
|
||
|
||
****************************************************************************}
|
||
|
||
unit VioCalls;
|
||
|
||
{ Interface library to VIOCALLS.DLL (through EMXWRAP.DLL)
|
||
|
||
Variant records and aliases for some record types created to maintain highest
|
||
possible level of compatibility with other existing OS/2 compilers.
|
||
|
||
Changelog:
|
||
|
||
People:
|
||
|
||
TH - Tomas Hajny (xhajt03@mbox.vol.cz on Internet)
|
||
|
||
Date: Description of change: Changed by:
|
||
|
||
- First released version 0.50 TH
|
||
|
||
Coding style:
|
||
|
||
I have tried to use the same coding style as Dani‰l Mantione in unit
|
||
DOSCALLS, although I can't say I would write it the same way otherwise
|
||
(I would write much more spaces myself, at least). Try to use it as well,
|
||
please. Original note by Dani‰l Mantione follows:
|
||
|
||
|
||
It may be well possible that coding style feels a bit strange to you.
|
||
Nevertheless I friendly ask you to try to make your changes not look all
|
||
to different. To make life easier, set your IDE to use tab characters,
|
||
turn optimal fill, autoindent and backspace unindents on and set a
|
||
tabsize of 4.}
|
||
|
||
|
||
{***************************************************************************}
|
||
interface
|
||
{***************************************************************************}
|
||
|
||
uses strings;
|
||
|
||
{$ifdef FPK}
|
||
{$packrecords 1}
|
||
{$endif FPK}
|
||
|
||
|
||
const
|
||
{return codes / error constants}
|
||
NO_ERROR = 0;
|
||
ERROR_VIO_INVALID_MASK =349;
|
||
ERROR_VIO_PTR =350;
|
||
ERROR_VIO_APTR =351;
|
||
ERROR_VIO_RPTR =352;
|
||
ERROR_VIO_CPTR =353;
|
||
ERROR_VIO_LPTR =354;
|
||
ERROR_VIO_MODE =355;
|
||
ERROR_VIO_WIDTH =356;
|
||
ERROR_VIO_ATTR =357;
|
||
ERROR_VIO_ROW =358;
|
||
ERROR_VIO_COL =359;
|
||
ERROR_VIO_TOPROW =360;
|
||
ERROR_VIO_BOTROW =361;
|
||
ERROR_VIO_RIGHTCOL =362;
|
||
ERROR_VIO_LEFTCOL =363;
|
||
ERROR_VIO_WAIT_FLAG =366;
|
||
ERROR_VIO_UNLOCK =367;
|
||
ERROR_VIO_SMG_ONLY =402;
|
||
ERROR_VIO_INVALID_ASCIIZ =403;
|
||
ERROR_VIO_DEREGISTER =404;
|
||
ERROR_VIO_NO_POPUP =405;
|
||
ERROR_VIO_EXISTING_POPUP =406;
|
||
ERROR_VIO_INVALID_PARMS =421;
|
||
ERROR_VIO_FUNCTION_OWNED =422;
|
||
ERROR_VIO_RETURN =423;
|
||
ERROR_VIO_REGISTER =426;
|
||
ERROR_VIO_NO_MODE_THREAD =427;
|
||
ERROR_VIO_NO_SAVE_RESTORE_THD =428;
|
||
ERROR_VIO_IN_BG =429;
|
||
ERROR_VIO_ILLEGAL_DURING_POPUP =430;
|
||
ERROR_VIO_LOCK =434;
|
||
ERROR_VIO_INVALID_HANDLE =436;
|
||
ERROR_VIO_ILLEGAL_DURING_LOCK =437;
|
||
ERROR_VIO_INVALID_LENGTH =438;
|
||
ERROR_VIO_DETACHED =465;
|
||
ERROR_VIO_FONT =467;
|
||
ERROR_VIO_USER_FONT =468;
|
||
ERROR_VIO_BAD_CP =469;
|
||
ERROR_VIO_NO_CP =470;
|
||
ERROR_VIO_NA_CP =471;
|
||
ERROR_VIO_INTERNAL_RESOURCE =479;
|
||
ERROR_VIO_SHELL_INIT =480;
|
||
ERROR_VIO_TRANSPARENT_POPUP =483;
|
||
ERROR_VIO_BAD_RESERVE =486;
|
||
ERROR_VIO_EXTENDED_SG =494;
|
||
ERROR_VIO_NOT_PRES_MGR_SG =495;
|
||
ERROR_VIO_SHIELD_OWNED =496;
|
||
ERROR_VIO_NO_MORE_HANDLES =497;
|
||
ERROR_VIO_SEE_ERROR_LOG =498;
|
||
ERROR_VIO_ASSOCIATED_DC =499;
|
||
|
||
{severity codes}
|
||
SEVERITY_NOERROR =$0000;
|
||
SEVERITY_WARNING =$0004;
|
||
SEVERITY_ERROR =$0008;
|
||
SEVERITY_SEVERE =$000C;
|
||
SEVERITY_UNRECOVERABLE =$0010;
|
||
|
||
{base component error values}
|
||
WINERR_BASE =$1000; {Window Manager}
|
||
GPIERR_BASE =$2000; {Graphics Presentation Interface}
|
||
DEVERR_BASE =$3000; {Device Manager}
|
||
SPLERR_BASE =$4000; {Spooler}
|
||
|
||
|
||
{first parameter registration constants}
|
||
VR_VIOGETCURPOS =$00000001;
|
||
VR_VIOGETCURTYPE =$00000002;
|
||
VR_VIOGETMODE =$00000004;
|
||
VR_VIOGETBUF =$00000008;
|
||
VR_VIOGETPHYSBUF =$00000010;
|
||
VR_VIOSETCURPOS =$00000020;
|
||
VR_VIOSETCURTYPE =$00000040;
|
||
VR_VIOSETMODE =$00000080;
|
||
VR_VIOSHOWBUF =$00000100;
|
||
VR_VIOREADCHARSTR =$00000200;
|
||
VR_VIOREADCELLSTR =$00000400;
|
||
VR_VIOWRTNCHAR =$00000800;
|
||
VR_VIOWRTNATTR =$00001000;
|
||
VR_VIOWRTNCELL =$00002000;
|
||
VR_VIOWRTTTY =$00004000;
|
||
VR_VIOWRTCHARSTR =$00008000;
|
||
VR_VIOWRTCHARSTRATT =$00010000;
|
||
VR_VIOWRTCELLSTR =$00020000;
|
||
VR_VIOSCROLLUP =$00040000;
|
||
VR_VIOSCROLLDN =$00080000;
|
||
VR_VIOSCROLLLF =$00100000;
|
||
VR_VIOSCROLLRT =$00200000;
|
||
VR_VIOSETANSI =$00400000;
|
||
VR_VIOGETANSI =$00800000;
|
||
VR_VIOPRTSC =$01000000;
|
||
VR_VIOSCRLOCK =$02000000;
|
||
VR_VIOSCRUNLOCK =$04000000;
|
||
VR_VIOSAVREDRAWWAIT =$08000000;
|
||
VR_VIOSAVREDRAWUNDO =$10000000;
|
||
VR_VIOPOPUP =$20000000;
|
||
VR_VIOENDPOPUP =$40000000;
|
||
VR_VIOPRTSCTOGGLE =$80000000;
|
||
|
||
{second parameter registration constants}
|
||
VR_VIOMODEWAIT =$00000001;
|
||
VR_VIOMODEUNDO =$00000002;
|
||
VR_VIOGETFONT =$00000004;
|
||
VR_VIOGETCONFIG =$00000008;
|
||
VR_VIOSETCP =$00000010;
|
||
VR_VIOGETCP =$00000020;
|
||
VR_VIOSETFONT =$00000040;
|
||
VR_VIOGETSTATE =$00000080;
|
||
VR_VIOSETSTATE =$00000100;
|
||
|
||
{constants for TVioModeInfo.Color}
|
||
COLORS_2 =$0001;
|
||
COLORS_4 =$0002;
|
||
COLORS_16 =$0004;
|
||
|
||
{constants for TVioModeInfo.fbType}
|
||
VGMT_OTHER =$01;
|
||
VGMT_GRAPHICS =$02;
|
||
VGMT_DISABLEBURST =$04;
|
||
|
||
{constants for CharType in VioCheckCharType}
|
||
VCC_SBCSCHAR =0;
|
||
VCC_DBCSFULLCHAR =1;
|
||
VCC_DBCS1STHALF =2;
|
||
VCC_DBCS2NDHALF =3;
|
||
|
||
{constants for Mode in VioGetAnsi/VioSetAnsi}
|
||
ANSI_ON =1;
|
||
ANSI_OFF =0;
|
||
|
||
{constants for RequestType in VioSavRedrawWait}
|
||
VSRWI_SAVEANDREDRAW =0;
|
||
VSRWI_REDRAW =1;
|
||
|
||
{constants for NotifyType in VioSavRedrawWait}
|
||
VSRWN_SAVE =0;
|
||
VSRWN_REDRAW =1;
|
||
|
||
{constants for Ownership in VioSavRedrawUndo}
|
||
UNDOI_GETOWNER =0;
|
||
UNDOI_RELEASEOWNER =1;
|
||
|
||
{constants for KillThread in VioSavRedrawUndo}
|
||
UNDOK_ERRORCODE =0;
|
||
UNDOK_TERMINATE =1;
|
||
|
||
VMWR_POPUP =0;
|
||
VMWN_POPUP =0;
|
||
|
||
{constants for WaitFlag in VioScrLock}
|
||
LOCKIO_NOWAIT =0;
|
||
LOCKIO_WAIT =1;
|
||
|
||
{constants for Status in VioScrLock}
|
||
LOCK_SUCCESS =0;
|
||
LOCK_FAIL =1;
|
||
|
||
{constants for OptionFlags in VioPopup}
|
||
VP_NOWAIT =$0000;
|
||
VP_WAIT =$0001;
|
||
VP_OPAQUE =$0000;
|
||
VP_TRANSPARENT =$0002;
|
||
|
||
{constants for TVioConfigInfo.Adapter}
|
||
DISPLAY_MONOCHROME =$0000;
|
||
DISPLAY_CGA =$0001;
|
||
DISPLAY_EGA =$0002;
|
||
DISPLAY_VGA =$0003;
|
||
DISPLAY_8514A =$0007;
|
||
DISPLAY_IMAGEADAPTER =$0008;
|
||
DISPLAY_XGA =$0009;
|
||
|
||
{constants for TVioConfigInfo.Display}
|
||
MONITOR_MONOCHROME =$0000;
|
||
MONITOR_COLOR =$0001;
|
||
MONITOR_ENHANCED =$0002;
|
||
MONITOR_8503 =$0003;
|
||
MONITOR_851X_COLOR =$0004;
|
||
MONITOR_8514 =$0009;
|
||
MONITOR_FLATPANEL =$000A;
|
||
MONITOR_8507_8604 =$000B;
|
||
MONITOR_8515 =$000C;
|
||
MONITOR_9515 =$000F;
|
||
MONITOR_9517 =$0011;
|
||
MONITOR_9518 =$0012;
|
||
|
||
{constants for TVioConfigInfo.Configuration, TVioSetTarget.DefaultAlgorithm
|
||
and usConfigID in VioGetConfig}
|
||
VIO_CONFIG_CURRENT =0;
|
||
VIO_CONFIG_PRIMARY =1;
|
||
VIO_CONFIG_SECONDARY =2;
|
||
|
||
{constants for TVioFontInfo.rType}
|
||
VGFI_GETCURFONT =0;
|
||
VGFI_GETROMFONT =1;
|
||
|
||
{constants for TFAttrs.fsSelection}
|
||
FATTR_SEL_ITALIC =$0001;
|
||
FATTR_SEL_UNDERSCORE =$0002;
|
||
FATTR_SEL_OUTLINE =$0008;
|
||
FATTR_SEL_STRIKEOUT =$0010;
|
||
FATTR_SEL_BOLD =$0020;
|
||
|
||
{constants for TFAttrs.fsType}
|
||
FATTR_TYPE_KERNING =$0004;
|
||
FATTR_TYPE_MBCS =$0008;
|
||
FATTR_TYPE_DBCS =$0010;
|
||
FATTR_TYPE_ANTIALIASED =$0020;
|
||
|
||
{constants for TFAttrs.fsFontUse}
|
||
FATTR_FONTUSE_NOMIX =$0002;
|
||
FATTR_FONTUSE_OUTLINE =$0004;
|
||
FATTR_FONTUSE_TRANSFORMABLE =$0008;
|
||
|
||
{size for fields in the font records}
|
||
FACESIZE =32;
|
||
|
||
{constants for TFontMetrics.fsType}
|
||
FM_TYPE_FIXED =$0001;
|
||
FM_TYPE_LICENSED =$0002;
|
||
FM_TYPE_KERNING =$0004;
|
||
FM_TYPE_DBCS =$0010;
|
||
FM_TYPE_MBCS =$0018;
|
||
FM_TYPE_64K =$8000;
|
||
FM_TYPE_ATOMS =$4000;
|
||
FM_TYPE_FAMTRUNC =$2000;
|
||
FM_TYPE_FACETRUNC =$1000;
|
||
|
||
{constants for TFontMetrics.fsDefn}
|
||
FM_DEFN_OUTLINE =$0001;
|
||
FM_DEFN_IFI =$0002;
|
||
FM_DEFN_WIN =$0004;
|
||
FM_DEFN_GENERIC =$8000;
|
||
|
||
{constants for TFontMetrics.fsSelection}
|
||
FM_SEL_ITALIC =$0001;
|
||
FM_SEL_UNDERSCORE =$0002;
|
||
FM_SEL_NEGATIVE =$0004;
|
||
FM_SEL_OUTLINE =$0008; { Hollow Outline Font }
|
||
FM_SEL_STRIKEOUT =$0010;
|
||
FM_SEL_BOLD =$0020;
|
||
FM_SEL_ISO9241_TESTED =$0040;
|
||
{ISO 9241 is an international standard covering health and safety
|
||
in the work place for users of visual display terminals. Part 3 of
|
||
this standard covers clarity and legibility of text displayed on
|
||
computer screens, it places requirements on minimum sizes and
|
||
luminance contrast. The presence of FM_SEL_ISO9241_TESTED flag in the
|
||
font metrics indicates that the font has been tested for compliance
|
||
to the standard. The FM_ISO_XXX flags indicate the results of the
|
||
test on the IBM 9515, 9517 and 9518 color displays at the supported
|
||
dimensions of 640x480 and 1024x768. To ensure compliance the
|
||
sXDeviceRes and sYDeviceRes must also match the target display
|
||
resolution.}
|
||
|
||
{constants for TPanose.fbPassedISO and TPanose.fbFailedISO}
|
||
FM_ISO_9518_640 =$01;
|
||
FM_ISO_9515_640 =$02;
|
||
FM_ISO_9515_1024 =$04;
|
||
FM_ISO_9517_640 =$08;
|
||
FM_ISO_9517_1024 =$10;
|
||
|
||
{constant for TFontMetrics.fsCapabilities}
|
||
FM_CAP_NOMIX =$0001;
|
||
|
||
|
||
type
|
||
|
||
(*This should be removed as soon as cardinal arithmetic in FPC works OK.*)
|
||
cardinal=longint;
|
||
|
||
{unnecessary, just FYI}
|
||
THVio=word;
|
||
PHVio=^THVio;
|
||
THVPS=word;
|
||
PHVPS=^THVPS;
|
||
|
||
TQWord=record
|
||
Lo:cardinal;
|
||
Hi:cardinal;
|
||
end;
|
||
PQWord=^TQWord;
|
||
|
||
{record type for VioSetCurType/VioGetCurType}
|
||
TVioCursorInfo=record
|
||
yStart:word; {Cursor start scan line (0-based)}
|
||
cEnd:word; {Cursor end scan line}
|
||
cx:word; {Cursor width (0=default width)}
|
||
Attr:word; {Cursor colour attribute (-1=hidden)}
|
||
end;
|
||
PVioCursorInfo=^TVioCursorInfo;
|
||
VioCursorInfo=TVioCursorInfo;
|
||
|
||
{record type for VioSetMode/GetMode}
|
||
TVioModeInfo=record
|
||
cb:word; {Size of the record}
|
||
case boolean of
|
||
false:(
|
||
fbType, {8-bit mask identifying the mode}
|
||
{- see VGMT_* constants }
|
||
Color:byte; {Number of colour bits available}
|
||
{(1=>2 colours, 2=>4,...) - see }
|
||
{COLORS_* constants }
|
||
Col, {Number of text character columns}
|
||
Row, {Number of text character rows}
|
||
HRes, {Display width in pixels}
|
||
VRes:word; {Display height in pixels}
|
||
fmt_ID, {Format of the attributes}
|
||
Attrib:byte; {Number of attributes in fmt_ID field}
|
||
Buf_Addr, {Address of the physical display buffer}
|
||
Buf_Length, {Length of the physical display buffer}
|
||
Full_Length, {Size of the buffer needed to save}
|
||
{the whole physical buffer }
|
||
Partial_Length:cardinal; {Size of the buffer needed to save}
|
||
{the part of the physical buffer }
|
||
{overwritten with VioPopup }
|
||
Ext_Data_Addr:pointer); {Address of an extended-mode data}
|
||
true:(
|
||
fbType2, (* should be fbType, Color, etc., but this *)
|
||
Color2:char; (* construct is unsupported currently *)
|
||
Col2,
|
||
Row2,
|
||
HRes2,
|
||
VRes2:word;
|
||
fmt_ID2,
|
||
Attrib2:char);
|
||
end;
|
||
PVioModeInfo=^TVioModeInfo;
|
||
VioModeInfo=TVioModeInfo;
|
||
|
||
{record type for VioGetPhysBuf}
|
||
TVioPhysBuf=record
|
||
pBuf:pointer; {Absolute screen address}
|
||
cb:cardinal; {Length of the buffer in bytes}
|
||
case boolean of
|
||
false:(Sel:word); {Selector for video access}
|
||
true:(aSel:array[0..0] of word);
|
||
end;
|
||
PVioPhysBuf=^TVioPhysBuf;
|
||
VioPhysBuf=TVioPhysBuf;
|
||
|
||
{record type for VioGetConfig}
|
||
(* #pragma pack(2) ??? *)
|
||
type
|
||
TVioConfigInfo=record
|
||
cb:word; {Size of the record}
|
||
Adapter:word; {Adapter type (see DISPLAY_* constants)}
|
||
Display:word; {Display type (see MONITOR_* constants)}
|
||
cbMemory:cardinal; {Amount of RAM in bytes on the adapter}
|
||
Configuration:word; {Configuration ID (see }
|
||
{VIO_CONFIG_* constants)}
|
||
VDHVersion:word; {Reserved, set to zero}
|
||
Flags:word; {Flags; 1 sets the default}
|
||
{power-on configuration }
|
||
HWBufferSize:cardinal; {Size of the buffer needed to save}
|
||
{the full adapter state (not }
|
||
{including the physical buffer) }
|
||
FullSaveSize:cardinal; {Size of the buffer needed to}
|
||
{save the full adapter state }
|
||
PartSaveSize:cardinal; {Size of the buffer needed to save}
|
||
{the part of the physical buffer }
|
||
{overwritten with VioPopup }
|
||
EmAdaptersOff:word; {Offset of the information }
|
||
{about emulated adapter types}
|
||
EmDisplaysOff:word; {Offset of the information }
|
||
{about emulated display types}
|
||
end;
|
||
PVioConfigInfo=^TVioConfigInfo;
|
||
VioConfigInfo=TVioConfigInfo;
|
||
|
||
{record type for VioGetFont/VioSetFont}
|
||
TVioFontInfo=record
|
||
cb:word; {Size of the data record}
|
||
case byte of
|
||
1:(
|
||
rType, {Request type}
|
||
cxCell, {Columns per cell (cell width)}
|
||
cyCell:word; {Rows per cell (cell height)}
|
||
pbData:pointer; {Address of caller's buffer}
|
||
cbData:word); {Size of caller's buffer in bytes}
|
||
2:(
|
||
aType,
|
||
cxCell2,
|
||
cyCell2:word;
|
||
pbData2:longint); (* should be pbData, but this construct *)
|
||
3:(_type:word); (* is not supported currently *)
|
||
end;
|
||
PVioFontInfo=^TVioFontInfo;
|
||
VioFontInfo=TVioFontInfo; (* *)
|
||
|
||
{record types for VioGetState/VioSetState}
|
||
TVioPalState=record
|
||
cb:word; {Size of the record}
|
||
rtype:word; {0=palette}
|
||
iFirst:word; {The first register}
|
||
AColor:array[0..15] of word; {Up to 16 register values}
|
||
end;
|
||
PVioPalState=^TVioPalState;
|
||
VioPalState=TVioPalState;
|
||
|
||
TVioOverscan=record
|
||
cb:word; {Size of the record}
|
||
rType:word; {1=border colour}
|
||
Color:word; {The colour of the border area}
|
||
end;
|
||
PVioOverscan=^TVioOverscan;
|
||
VioOverScan=TVioOverScan;
|
||
|
||
TVioIntensity=record
|
||
cb:word; {Size of the record}
|
||
rType:word; {2=blink/bold settings}
|
||
fs:word; {The flink/bold background switch}
|
||
end;
|
||
PVioIntensity=^TVioIntensity;
|
||
VioIntensity=TVioIntensity;
|
||
|
||
TVioColorReg=record
|
||
cb:word; {Size of the record}
|
||
rType:word; {3=colour registers}
|
||
FirstColorReg:word; {The first colour register}
|
||
NumColorRegs:word; {Number of colour registers}
|
||
ColorRegAddr:pointer; {pointer to an array with colour values}
|
||
end;
|
||
PVioColorReg=^TVioColorReg;
|
||
VioColorReg=TVioColorReg;
|
||
|
||
TVioSetULineLoc=record
|
||
cb:word; {Size of the record}
|
||
rType:word; {5=underline}
|
||
ScanLine:word; {Location of the underline (32=no underline)}
|
||
end;
|
||
PVioSetULineLoc=^TVioSetULineLoc;
|
||
VioSetULineLoc=TVioSetULineLoc;
|
||
|
||
TVioSetTarget=record
|
||
cb:word; {Size of the record}
|
||
rType:word; {6=target for VioSetMode}
|
||
DefaultAlgorithm:word; {Default/primary/secondary }
|
||
{(see VIO_CONFIG_* constants)}
|
||
end;
|
||
PVioSetTarget=^TVioSetTarget;
|
||
VioSetTarget=TVioSetTarget;
|
||
|
||
TStr8=array[0..7] of char;
|
||
PStr8=^TStr8;
|
||
|
||
{font record type for Vio/GpiCreateLogFont}
|
||
TFAttrs=record
|
||
usRecordLength:word;
|
||
fsSelection:word;
|
||
lMatch:longint;
|
||
szFacename:array[0..FACESIZE-1] of char;
|
||
idRegistry:word;
|
||
usCodePage:word;
|
||
lMaxBaselineExt:longint;
|
||
lAveCharWidth:longint;
|
||
fsType:word;
|
||
fsFontUse:word;
|
||
end;
|
||
PFAttrs=^TFAttrs;
|
||
FAttrs=TFAttrs;
|
||
|
||
{font metrics returned by GpiQueryFonts and others}
|
||
TPanose=record
|
||
bFamilyType:byte;
|
||
bSerifStyle:byte;
|
||
bWeight:byte;
|
||
bProportion:byte;
|
||
bContrast:byte;
|
||
bStrokeVariation:byte;
|
||
bArmStyle:byte;
|
||
bLetterform:byte;
|
||
bMidline:byte;
|
||
bXHeight:byte;
|
||
fbPassedISO:byte;
|
||
fbFailedISO:byte;
|
||
end;
|
||
PPanose=^TPanose;
|
||
|
||
TFontMetrics=record
|
||
szFamilyname:array[0..FACESIZE-1] of char;
|
||
szFacename:array[0..FACESIZE-1] of char;
|
||
idRegistry:word;
|
||
usCodePage:word;
|
||
lEmHeight:longint;
|
||
lXHeight:longint;
|
||
lMaxAscender:longint;
|
||
lMaxDescender:longint;
|
||
lLowerCaseAscent:longint;
|
||
lLowerCaseDescent:longint;
|
||
lInternalLeading:longint;
|
||
lExternalLeading:longint;
|
||
lAveCharWidth:longint;
|
||
lMaxCharInc:longint;
|
||
lEmInc:longint;
|
||
lMaxBaselineExt:longint;
|
||
sCharSlope:longint;
|
||
sInlineDir:integer;
|
||
sCharRot:integer;
|
||
usWeightClass:word;
|
||
usWidthClass:word;
|
||
sXDeviceRes:integer;
|
||
sYDeviceRes:integer;
|
||
sFirstChar:integer;
|
||
sLastChar:integer;
|
||
sDefaultChar:integer;
|
||
sBreakChar:integer;
|
||
sNominalPointSize:integer;
|
||
sMinimumPointSize:integer;
|
||
sMaximumPointSize:integer;
|
||
fsType:word;
|
||
fsDefn:word;
|
||
fsSelection:word;
|
||
fsCapabilities:word;
|
||
lSubscriptXSize:longint;
|
||
lSubscriptYSize:longint;
|
||
lSubscriptXOffset:longint;
|
||
lSubscriptYOffset:longint;
|
||
lSuperscriptXSize:longint;
|
||
lSuperscriptYSize:longint;
|
||
lSuperscriptXOffset:longint;
|
||
lSuperscriptYOffset:longint;
|
||
lUnderscoreSize:longint;
|
||
lUnderscorePosition:longint;
|
||
lStrikeoutSize:longint;
|
||
lStrikeoutPosition:longint;
|
||
sKerningPairs:integer;
|
||
sFamilyClass:integer;
|
||
lMatch:longint;
|
||
FamilyNameAtom:longint;
|
||
FaceNameAtom:longint;
|
||
Panose:TPanose;
|
||
end;
|
||
PFontMetrics=^TFontMetrics;
|
||
FontMetrics=TFontMetrics;
|
||
|
||
|
||
function VioRegister(ModuleName,ProcName:PChar;FnMask1,FnMask2:cardinal):word;
|
||
|
||
function VioRegister(ModuleName,ProcName:string;FnMask1,FnMask2:cardinal):word;
|
||
|
||
function VioGlobalReg(ModuleName,ProcName:PChar;FnMask1,FnMask2:cardinal;
|
||
Return:word):word;
|
||
|
||
function VioGlobalReg(ModuleName,ProcName:string;FnMask1,FnMask2:cardinal;
|
||
Return:word):word;
|
||
|
||
function VioDeRegister:word;
|
||
|
||
function VioGetBuf(var LVBAddr:pointer;var LVBLength:word;VioHandle:word):word;
|
||
|
||
function VioGetCurPos(var Row,Column:word;VioHandle:word):word;
|
||
|
||
function VioSetCurPos(Row,Column,VioHandle:word):word;
|
||
|
||
function VioGetCurType(var CurData:TVioCursorInfo;VioHandle:word):word;
|
||
|
||
function VioSetCurType(var CurData:TVioCursorInfo;VioHandle:word):word;
|
||
|
||
function VioGetMode(var Mode:TVioModeInfo;VioHandle:word):word;
|
||
|
||
function VioSetMode(var Mode:TVioModeInfo;VioHandle:word):word;
|
||
|
||
function VioGetPhysBuf(var PBData:TVioPhysBuf;Reserved:word):word;
|
||
|
||
function VioReadCellStr(var Buf;var BufLen:word;
|
||
Row,Column,VioHandle:word):word;
|
||
|
||
function VioReadCharStr(var Buf;var BufLen:word;
|
||
Row,Column,VioHandle:word):word;
|
||
|
||
function VioWrtCellStr(CellStr:pointer;Len,Row,Column,VioHandle:word):word;
|
||
|
||
function VioWrtCharStr(CharStr:pointer;Len,Row,Column,VioHandle:word):word;
|
||
|
||
function VioScrollDn(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
|
||
function VioScrollUp(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
|
||
function VioScrollLf(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
|
||
function VioScrollRt(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
|
||
function VioWrtNAttr(var Attr:byte;Times,Row,Column,VioHandle:word):word;
|
||
|
||
function VioWrtNCell(var Cell:word;Times,Row,Column,VioHandle:word):word;
|
||
|
||
function VioWrtNChar(var Ch:byte;Times,Row,Column,VioHandle:word):word;
|
||
|
||
function VioWrtNChar(var Ch:char;Times,Row,Column,VioHandle:word):word;
|
||
|
||
function VioWrtTTY(CharStr:pointer;Len,VioHandle:word):word;
|
||
|
||
function VioWrtCharStrAtt(CharStr:pointer;Len,Row,Column:word;var Attr:byte;
|
||
VioHandle:word):word;
|
||
|
||
function VioCheckCharType(var CharType:word;Row,Column,VioHandle:word):word;
|
||
|
||
function VioShowBuf(BufOfs,Len,VioHandle:word):word;
|
||
|
||
function VioSetAnsi(Mode,VioHandle:word):word;
|
||
|
||
function VioGetAnsi(var Mode:word;VioHandle:word):word;
|
||
|
||
function VioPrtSc(VioHandle:word):word;
|
||
|
||
function VioPrtScToggle(VioHandle:word):word;
|
||
|
||
(*
|
||
function VioRedrawSize(var RedrawSize:cardinal):word;
|
||
*)
|
||
|
||
function VioSavRedrawWait(RequestType:word;var NotifyType:word;
|
||
Reserved:word):word;
|
||
|
||
function VioSavRedrawUndo(Ownership,KillThread,Reserved:word):word;
|
||
|
||
function VioModeWait(RequestType:word;var NotifyType:word;Reserved:word):word;
|
||
|
||
function VioModeUndo(Ownership,KillThread,Reserved:word):word;
|
||
|
||
function VioScrLock(WaitFlag:word;var Status:word;VioHandle:word):word;
|
||
|
||
function VioScrUnLock(VioHandle:word):word;
|
||
|
||
function VioPopUp(var OptionFlags:word;VioHandle:word):word;
|
||
|
||
function VioEndPopUp(VioHandle:word):word;
|
||
|
||
function VioGetConfig(ConfigId:word;var VideoConfig:TVioConfigInfo;
|
||
VioHandle:word):word;
|
||
|
||
function VioGetFont(var FontData:TVioFontInfo;VioHandle:word):word;
|
||
|
||
function VioSetFont(var FontData:TVioFontInfo;VioHandle:word):word;
|
||
|
||
function VioGetCp(Reserved:word;var CodePage:word;VioHandle:word):word;
|
||
|
||
function VioSetCp(Reserved:word;CodePage:word;VioHandle:word):word;
|
||
|
||
function VioGetState(var State;VioHandle:word):word;
|
||
|
||
function VioSetState(var State;VioHandle:word):word;
|
||
|
||
function VioAssociate(DC:cardinal;VPS:word):word;
|
||
|
||
function VioCreateLogFont(var FAtAttrs:TFAttrs;LLCId:longint;var Name:TStr8;
|
||
VPS:word):word;
|
||
|
||
function VioCreatePS(var VPS:word;Depth,Width,Format,Attrs:integer;
|
||
Reserved:word):word;
|
||
|
||
function VioDeleteSetId(LLCId:longint;VPS:word):word;
|
||
|
||
function VioDestroyPS(VPS:word):word;
|
||
|
||
function VioGetDeviceCellSize(var Height,Width:integer;VPS:word):word;
|
||
|
||
function VioGetOrg(var Row,Column:integer;VPS:word):word;
|
||
|
||
function VioQueryFonts(var Remfonts:longint;var fmMetrics:TFontMetrics;
|
||
MetricsLength:longint;var Fonts:longint;FaceName:PChar;
|
||
flOptions:cardinal;VPS:word):word;
|
||
|
||
function VioQueryFonts(var Remfonts:longint;var fmMetrics:TFontMetrics;
|
||
MetricsLength:longint;var Fonts:longint;FaceName:string;
|
||
flOptions:cardinal;VPS:word):word;
|
||
|
||
function VioQuerySetIds(var allCIds:longint;var Names:TStr8;
|
||
var alTypes:longint;Count:longint;VPS:word):word;
|
||
|
||
function VioSetDeviceCellSize(Height,Width:integer;VPS:word):word;
|
||
|
||
function VioSetOrg(Row,Column:integer;VPS:word):word;
|
||
|
||
function VioShowPS(Depth,Width,offCell:integer;VPS:word):word;
|
||
|
||
{Default message processing for AVio PS's - imported from PMVIOP.DLL}
|
||
function WinDefAVioWindowProc(WND:cardinal;Msg:word;mp1,mp2:cardinal):pointer;
|
||
|
||
|
||
(* Following routines are not supported
|
||
(just have a look in some C header
|
||
file - you probably won't find it there either).
|
||
VioFree (index 4)
|
||
Avs_Prtsc (index 14)
|
||
VioSrfUnblock (index 16)
|
||
VioSrfBlock (index 17)
|
||
VioSave (index 20)
|
||
VioHetInit (index 34)
|
||
VioSswSwitch (index 36)
|
||
Avs_PrtscToggle (index 38)
|
||
VioInit (index 39)
|
||
VioRestore (index 41)
|
||
VioShellInit (index 54)
|
||
VioGetPSAddress (index 67)
|
||
VioQueryConsole (index 68)
|
||
XVioSetCAState (index 71)
|
||
XVioCheckCharType (index 72)
|
||
XVioDestroyCA (index 73)
|
||
XVioCreateCA (index 74)
|
||
XVioGetCAState (index 76)
|
||
*)
|
||
|
||
|
||
{***************************************************************************}
|
||
implementation
|
||
{***************************************************************************}
|
||
|
||
|
||
function VioRegister(ModuleName,ProcName:PChar;FnMask1,FnMask2:cardinal):word;
|
||
external 'EMXWRAP' index 145;
|
||
{external 'VIOCALLS' index 45;}
|
||
|
||
function VioRegister(ModuleName,ProcName:string;FnMask1,FnMask2:cardinal):word;
|
||
begin
|
||
if byte(ModuleName[0])>8 then byte(ModuleName[0]):=8;
|
||
ModuleName[Succ(byte(ModuleName[0]))]:=#0;
|
||
if byte(ProcName[0])>32 then byte(ProcName[0]):=32;
|
||
ProcName[Succ(byte(ProcName[0]))]:=#0;
|
||
VioRegister:=VioRegister(@ModuleName[1],@ProcName[1],FnMask1,FnMask2);
|
||
end;
|
||
|
||
function VioGlobalReg(ModuleName,ProcName:PChar;FnMask1,FnMask2:cardinal;
|
||
Return:word):word;
|
||
external 'EMXWRAP' index 170;
|
||
{external 'VIOCALLS' index 70;}
|
||
|
||
function VioGlobalReg(ModuleName,ProcName:string;FnMask1,FnMask2:cardinal;
|
||
Return:word):word;
|
||
begin
|
||
if byte(ModuleName[0])>8 then byte(ModuleName[0]):=8;
|
||
ModuleName[Succ(byte(ModuleName[0]))]:=#0;
|
||
if byte(ProcName[0])>32 then byte(ProcName[0]):=32;
|
||
ProcName[Succ(byte(ProcName[0]))]:=#0;
|
||
VioGlobalReg:=VioGlobalReg(@ModuleName[1],@ProcName[1],FnMask1,FnMask2,
|
||
Return);
|
||
end;
|
||
|
||
function VioDeRegister:word;
|
||
external 'EMXWRAP' index 106;
|
||
{external 'VIOCALLS' index 6;}
|
||
|
||
function VioGetBuf(var LVBAddr:pointer;var LVBLength:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 131;
|
||
{external 'VIOCALLS' index 31;}
|
||
|
||
function VioGetCurPos(var Row,Column:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 109;
|
||
{external 'VIOCALLS' index 9;}
|
||
|
||
function VioSetCurPos(Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 115;
|
||
{external 'VIOCALLS' index 15;}
|
||
|
||
function VioGetCurType(var CurData:TVioCursorInfo;VioHandle:word):word;
|
||
external 'EMXWRAP' index 127;
|
||
{external 'VIOCALLS' index 27;}
|
||
|
||
function VioSetCurType(var CurData:TVioCursorInfo;VioHandle:word):word;
|
||
external 'EMXWRAP' index 132;
|
||
{external 'VIOCALLS' index 32;}
|
||
|
||
function VioGetMode(var Mode:TVioModeInfo;VioHandle:word):word;
|
||
external 'EMXWRAP' index 121;
|
||
{external 'VIOCALLS' index 21;}
|
||
|
||
function VioSetMode(var Mode:TVioModeInfo;VioHandle:word):word;
|
||
external 'EMXWRAP' index 122;
|
||
{external 'VIOCALLS' index 22;}
|
||
|
||
function VioGetPhysBuf(var PBData:TVioPhysBuf;Reserved:word):word;
|
||
external 'EMXWRAP' index 102;
|
||
{external 'VIOCALLS' index 2;}
|
||
|
||
function VioReadCellStr(var Buf;var BufLen:word;
|
||
Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 124;
|
||
{external 'VIOCALLS' index 24;}
|
||
|
||
function VioReadCharStr(var Buf;var BufLen:word;
|
||
Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 130;
|
||
{external 'VIOCALLS' index 30;}
|
||
|
||
function VioWrtCellStr(CellStr:pointer;Len,Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 110;
|
||
{external 'VIOCALLS' index 10;}
|
||
|
||
function VioWrtCharStr(CharStr:pointer;Len,Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 113;
|
||
{external 'VIOCALLS' index 13;}
|
||
|
||
function VioScrollDn(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
external 'EMXWRAP' index 147;
|
||
{external 'VIOCALLS' index 47;}
|
||
|
||
function VioScrollUp(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
external 'EMXWRAP' index 107;
|
||
{external 'VIOCALLS' index 7;}
|
||
|
||
function VioScrollLf(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
external 'EMXWRAP' index 144;
|
||
{external 'VIOCALLS' index 44;}
|
||
|
||
function VioScrollRt(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
|
||
VioHandle:word):word;
|
||
external 'EMXWRAP' index 112;
|
||
{external 'VIOCALLS' index 12;}
|
||
|
||
function VioWrtNAttr(var Attr:byte;Times,Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 126;
|
||
{external 'VIOCALLS' index 26;}
|
||
|
||
function VioWrtNCell(var Cell:word;Times,Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 152;
|
||
{external 'VIOCALLS' index 52;}
|
||
|
||
function VioWrtNChar(var Ch:byte;Times,Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 153;
|
||
{external 'VIOCALLS' index 53;}
|
||
|
||
function VioWrtNChar(var Ch:char;Times,Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 153;
|
||
{external 'VIOCALLS' index 53;}
|
||
|
||
function VioWrtTTY(CharStr:pointer;Len,VioHandle:word):word;
|
||
external 'EMXWRAP' index 119;
|
||
{external 'VIOCALLS' index 19;}
|
||
|
||
function VioWrtCharStrAtt(CharStr:pointer;Len,Row,Column:word;var Attr:byte;
|
||
VioHandle:word):word;
|
||
external 'EMXWRAP' index 148;
|
||
{external 'VIOCALLS' index 48;}
|
||
|
||
function VioCheckCharType(var CharType:word;Row,Column,VioHandle:word):word;
|
||
external 'EMXWRAP' index 175;
|
||
{external 'VIOCALLS' index 75;}
|
||
|
||
function VioShowBuf(BufOfs,Len,VioHandle:word):word;
|
||
external 'EMXWRAP' index 143;
|
||
{external 'VIOCALLS' index 43;}
|
||
|
||
function VioSetAnsi(Mode,VioHandle:word):word;
|
||
external 'EMXWRAP' index 105;
|
||
{external 'VIOCALLS' index 5;}
|
||
|
||
function VioGetAnsi(var Mode:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 103;
|
||
{external 'VIOCALLS' index 3;}
|
||
|
||
function VioPrtSc(VioHandle:word):word;
|
||
external 'EMXWRAP' index 108;
|
||
{external 'VIOCALLS' index 8;}
|
||
|
||
function VioPrtScToggle(VioHandle:word):word;
|
||
external 'EMXWRAP' index 150;
|
||
{external 'VIOCALLS' index 50;}
|
||
|
||
(*
|
||
function VioRedrawSize(var RedrawSize:cardinal):word;
|
||
!!!not defined in EMXWRAP.DLL!!!
|
||
{external 'VIOCALLS' index 69;}
|
||
*)
|
||
|
||
function VioSavRedrawWait(RequestType:word;var NotifyType:word;
|
||
Reserved:word):word;
|
||
external 'EMXWRAP' index 125;
|
||
{external 'VIOCALLS' index 25;}
|
||
|
||
function VioSavRedrawUndo(Ownership,KillThread,Reserved:word):word;
|
||
external 'EMXWRAP' index 128;
|
||
{external 'VIOCALLS' index 28;}
|
||
|
||
function VioModeWait(RequestType:word;var NotifyType:word;Reserved:word):word;
|
||
external 'EMXWRAP' index 137;
|
||
{external 'VIOCALLS' index 37;}
|
||
|
||
function VioModeUndo(Ownership,KillThread,Reserved:word):word;
|
||
external 'EMXWRAP' index 135;
|
||
{external 'VIOCALLS' index 35;}
|
||
|
||
function VioScrLock(WaitFlag:word;var Status:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 123;
|
||
{external 'VIOCALLS' index 23;}
|
||
|
||
function VioScrUnLock(VioHandle:word):word;
|
||
external 'EMXWRAP' index 118;
|
||
{external 'VIOCALLS' index 18;}
|
||
|
||
function VioPopUp(var OptionFlags:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 111;
|
||
{external 'VIOCALLS' index 11;}
|
||
|
||
function VioEndPopUp(VioHandle:word):word;
|
||
external 'EMXWRAP' index 101;
|
||
{external 'VIOCALLS' index 1;}
|
||
|
||
function VioGetConfig(ConfigId:word;var VideoConfig:TVioConfigInfo;
|
||
VioHandle:word):word;
|
||
external 'EMXWRAP' index 146;
|
||
{external 'VIOCALLS' index 46;}
|
||
|
||
function VioGetFont(var FontData:TVioFontInfo;VioHandle:word):word;
|
||
external 'EMXWRAP' index 129;
|
||
{external 'VIOCALLS' index 29;}
|
||
|
||
function VioSetFont(var FontData:TVioFontInfo;VioHandle:word):word;
|
||
external 'EMXWRAP' index 133;
|
||
{external 'VIOCALLS' index 33;}
|
||
|
||
function VioGetCp(Reserved:word;var CodePage:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 140;
|
||
{external 'VIOCALLS' index 40;}
|
||
|
||
function VioSetCp(Reserved:word;CodePage:word;VioHandle:word):word;
|
||
external 'EMXWRAP' index 142;
|
||
{external 'VIOCALLS' index 42;}
|
||
|
||
function VioGetState(var State;VioHandle:word):word;
|
||
external 'EMXWRAP' index 149;
|
||
{external 'VIOCALLS' index 49;}
|
||
|
||
function VioSetState(var State;VioHandle:word):word;
|
||
external 'EMXWRAP' index 151;
|
||
{external 'VIOCALLS' index 51;}
|
||
|
||
|
||
{Extended functions for windowed VIO follow.}
|
||
function VioAssociate(DC:cardinal;VPS:word):word;
|
||
external 'EMXWRAP' index 155;
|
||
{external 'VIOCALLS' index 55;}
|
||
|
||
function VioCreateLogFont(var FAtAttrs:TFAttrs;LLCId:longint;var Name:TStr8;
|
||
VPS:word):word;
|
||
external 'EMXWRAP' index 160;
|
||
{external 'VIOCALLS' index 60;}
|
||
|
||
function VioCreatePS(var VPS:word;Depth,Width,Format,Attrs:integer;
|
||
Reserved:word):word;
|
||
external 'EMXWRAP' index 156;
|
||
{external 'VIOCALLS' index 56;}
|
||
|
||
function VioDeleteSetId(LLCId:longint;VPS:word):word;
|
||
external 'EMXWRAP' index 157;
|
||
{external 'VIOCALLS' index 57;}
|
||
|
||
function VioDestroyPS(VPS:word):word;
|
||
external 'EMXWRAP' index 161;
|
||
{external 'VIOCALLS' index 61;}
|
||
|
||
function VioGetDeviceCellSize(var Height,Width:integer;VPS:word):word;
|
||
external 'EMXWRAP' index 158;
|
||
{external 'VIOCALLS' index 58;}
|
||
|
||
function VioGetOrg(var Row,Column:integer;VPS:word):word;
|
||
external 'EMXWRAP' index 159;
|
||
{external 'VIOCALLS' index 59;}
|
||
|
||
function VioQueryFonts(var Remfonts:longint;var fmMetrics:TFontMetrics;
|
||
MetricsLength:longint;var Fonts:longint;FaceName:PChar;
|
||
flOptions:cardinal;VPS:word):word;
|
||
external 'EMXWRAP' index 164;
|
||
{external 'VIOCALLS' index 64;}
|
||
|
||
function VioQueryFonts(var Remfonts:longint;var fmMetrics:TFontMetrics;
|
||
MetricsLength:longint;var Fonts:longint;FaceName:string;
|
||
flOptions:cardinal;VPS:word):word;
|
||
|
||
var B:byte;
|
||
|
||
begin
|
||
B:=byte(FaceName[0]);
|
||
if B=0 then VioQueryFonts:=VioQueryFonts(RemFonts,fmMetrics,MetricsLength,
|
||
Fonts,nil,flOptions,VPS) else
|
||
begin
|
||
if B<>255 then
|
||
begin
|
||
FaceName[Succ(B)]:=#0;
|
||
VioQueryFonts:=VioQueryFonts(RemFonts,fmMetrics,MetricsLength,
|
||
Fonts,@FaceName[1],flOptions,VPS);
|
||
end else
|
||
begin
|
||
Move(FaceName[1],FaceName[0],B);
|
||
FaceName[B]:=#0;
|
||
VioQueryFonts:=VioQueryFonts(RemFonts,fmMetrics,MetricsLength,
|
||
Fonts,@FaceName,flOptions,VPS);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
function VioQuerySetIds(var allCIds:longint;var Names:TStr8;
|
||
var alTypes:longint;Count:longint;VPS:word):word;
|
||
external 'EMXWRAP' index 162;
|
||
{external 'VIOCALLS' index 62;}
|
||
|
||
function VioSetDeviceCellSize(Height,Width:integer;VPS:word):word;
|
||
external 'EMXWRAP' index 165;
|
||
{external 'VIOCALLS' index 65;}
|
||
|
||
function VioSetOrg(Row,Column:integer;VPS:word):word;
|
||
external 'EMXWRAP' index 163;
|
||
{external 'VIOCALLS' index 63;}
|
||
|
||
function VioShowPS(Depth,Width,offCell:integer;VPS:word):word;
|
||
external 'EMXWRAP' index 166;
|
||
{external 'VIOCALLS' index 66;}
|
||
|
||
function WinDefAVioWindowProc(WND:cardinal;Msg:word;mp1,mp2:cardinal):pointer;
|
||
external 'EMXWRAP' index 30;
|
||
{external 'PMVIOP' index 30;}
|
||
|
||
end.
|
||
|