12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148 |
- {Set tabsize to 4.}
- {****************************************************************************
- VIOCALLS interface unit
- Free Pascal Runtime Library for OS/2
- Copyright (c) 1999-2000 by Florian Klaempfl
- Copyright (c) 1999-2000 by Daniel Mantione
- Copyright (c) 1999-2000 by Tomas Hajny
- The Free 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 Free 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 Free Pascal source code file.>
- Send us your modified files, we can work together if you want!
- Free 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 Free Pascal; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, 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 ([email protected] on Internet)
- Date: Description of change: Changed by:
- - First released version 0.50 TH
- 00/09/24 TVioCursorInfo definition extended,
- new names for VioScroll* added TH
- Coding style:
- I have tried to use the same coding style as Daniel 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 Daniel 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
- {***************************************************************************}
- {$IFDEF FPC}
- {$PACKRECORDS 1}
- {$ENDIF FPC}
- const
- {return codes / error constants}
- NO_ERROR = 0;
- Error_Invalid_Parameter = 87;
- 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
- {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; the second variant makes the use
- of percentage-based (negative) and hidden cursor type (-1) specification
- a bit easier}
- TVioCursorInfo=record
- case boolean of
- false:(
- yStart:word; {Cursor start (top) scan line (0-based)}
- cEnd:word; {Cursor end (bottom) scan line}
- cx:word; {Cursor width (0=default width)}
- Attr:word); {Cursor colour attribute (-1=hidden)}
- true:(
- yStartInt: integer;
- cEndInt:integer;
- cxInt:integer;
- AttrInt:integer);
- 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;
- cdecl;
- function VioRegister(ModuleName,ProcName:string;FnMask1,FnMask2:cardinal):word;
- function VioGlobalReg(ModuleName,ProcName:PChar;FnMask1,FnMask2:cardinal;
- Return:word):word; cdecl;
- function VioGlobalReg(ModuleName,ProcName:string;FnMask1,FnMask2:cardinal;
- Return:word):word;
- function VioDeRegister:word; cdecl;
- function VioGetBuf(var LVBAddr:pointer;var LVBLength:word;VioHandle:word):word;
- cdecl;
- function VioGetCurPos(var Row,Column:word;VioHandle:word):word; cdecl;
- function VioSetCurPos(Row,Column,VioHandle:word):word; cdecl;
- function VioGetCurType(var CurData:TVioCursorInfo;VioHandle:word):word; cdecl;
- function VioSetCurType(var CurData:TVioCursorInfo;VioHandle:word):word; cdecl;
- function VioGetMode(var Mode:TVioModeInfo;VioHandle:word):word; cdecl;
- function VioSetMode(var Mode:TVioModeInfo;VioHandle:word):word; cdecl;
- function VioGetPhysBuf(var PBData:TVioPhysBuf;Reserved:word):word; cdecl;
- function VioReadCellStr(var Buf;var BufLen:word;
- Row,Column,VioHandle:word):word; cdecl;
- function VioReadCharStr(var Buf;var BufLen:word;
- Row,Column,VioHandle:word):word; cdecl;
- function VioWrtCellStr(CellStr:pointer;Len,Row,Column,VioHandle:word):word;
- cdecl;
- function VioWrtCharStr(CharStr:pointer;Len,Row,Column,VioHandle:word):word;
- cdecl;
- function VioScrollDn(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioScrollDown(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioScrollUp(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioScrollLf(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioScrollLeft(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioScrollRt(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioScrollRight(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- function VioWrtNAttr(var Attr:byte;Times,Row,Column,VioHandle:word):word;
- cdecl;
- function VioWrtNCell(var Cell:word;Times,Row,Column,VioHandle:word):word;
- cdecl;
- function VioWrtNChar(var Ch:byte;Times,Row,Column,VioHandle:word):word; cdecl;
- function VioWrtNChar(var Ch:char;Times,Row,Column,VioHandle:word):word; cdecl;
- function VioWrtTTY(CharStr:pointer;Len,VioHandle:word):word; cdecl;
- function VioWrtCharStrAtt(CharStr:pointer;Len,Row,Column:word;var Attr:byte;
- VioHandle:word):word; cdecl;
- function VioCheckCharType(var CharType:word;Row,Column,VioHandle:word):word;
- cdecl;
- function VioShowBuf(BufOfs,Len,VioHandle:word):word; cdecl;
- function VioSetAnsi(Mode,VioHandle:word):word; cdecl;
- function VioGetAnsi(var Mode:word;VioHandle:word):word; cdecl;
- function VioPrtSc(VioHandle:word):word; cdecl;
- function VioPrtScToggle(VioHandle:word):word; cdecl;
- (*
- function VioRedrawSize(var RedrawSize:cardinal):word;
- *)
- function VioSavRedrawWait(RequestType:word;var NotifyType:word;
- Reserved:word):word; cdecl;
- function VioSavRedrawUndo(Ownership,KillThread,Reserved:word):word; cdecl;
- function VioModeWait(RequestType:word;var NotifyType:word;Reserved:word):word;
- cdecl;
- function VioModeUndo(Ownership,KillThread,Reserved:word):word; cdecl;
- function VioScrLock(WaitFlag:word;var Status:word;VioHandle:word):word; cdecl;
- function VioScrUnLock(VioHandle:word):word; cdecl;
- function VioPopUp(var OptionFlags:word;VioHandle:word):word; cdecl;
- function VioEndPopUp(VioHandle:word):word; cdecl;
- function VioGetConfig(ConfigId:word;var VideoConfig:TVioConfigInfo;
- VioHandle:word):word; cdecl;
- function VioGetFont(var FontData:TVioFontInfo;VioHandle:word):word; cdecl;
- function VioSetFont(var FontData:TVioFontInfo;VioHandle:word):word; cdecl;
- function VioGetCp(Reserved:word;var CodePage:word;VioHandle:word):word; cdecl;
- function VioSetCp(Reserved:word;CodePage:word;VioHandle:word):word; cdecl;
- function VioGetState(var State;VioHandle:word):word; cdecl;
- function VioSetState(var State;VioHandle:word):word; cdecl;
- function VioAssociate(DC:cardinal;VPS:word):word; cdecl;
- function VioCreateLogFont(var FAtAttrs:TFAttrs;LLCId:longint;var Name:TStr8;
- VPS:word):word; cdecl;
- function VioCreatePS(var VPS:word;Depth,Width,Format,Attrs:integer;
- Reserved:word):word; cdecl;
- function VioDeleteSetId(LLCId:longint;VPS:word):word; cdecl;
- function VioDestroyPS(VPS:word):word; cdecl;
- function VioGetDeviceCellSize(var Height,Width:integer;VPS:word):word; cdecl;
- function VioGetOrg(var Row,Column:integer;VPS:word):word; cdecl;
- function VioQueryFonts(var Remfonts:longint;var fmMetrics:TFontMetrics;
- MetricsLength:longint;var Fonts:longint;FaceName:PChar;
- flOptions:cardinal;VPS:word):word; cdecl;
- 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; cdecl;
- function VioSetDeviceCellSize(Height,Width:integer;VPS:word):word; cdecl;
- function VioSetOrg(Row,Column:integer;VPS:word):word; cdecl;
- function VioShowPS(Depth,Width,offCell:integer;VPS:word):word; cdecl;
- {Default message processing for AVio PS's - imported from PMVIOP.DLL}
- function WinDefAVioWindowProc(WND:cardinal;Msg:word;mp1,mp2:cardinal):pointer;
- cdecl;
- (* 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;
- cdecl;
- 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; cdecl;
- 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; cdecl;
- external 'EMXWRAP' index 106;
- {external 'VIOCALLS' index 6;}
- function VioGetBuf(var LVBAddr:pointer;var LVBLength:word;VioHandle:word):word;
- cdecl;
- external 'EMXWRAP' index 131;
- {external 'VIOCALLS' index 31;}
- function VioGetCurPos(var Row,Column:word;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 109;
- {external 'VIOCALLS' index 9;}
- function VioSetCurPos(Row,Column,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 115;
- {external 'VIOCALLS' index 15;}
- function VioGetCurType(var CurData:TVioCursorInfo;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 127;
- {external 'VIOCALLS' index 27;}
- function VioSetCurType(var CurData:TVioCursorInfo;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 132;
- {external 'VIOCALLS' index 32;}
- function VioGetMode(var Mode:TVioModeInfo;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 121;
- {external 'VIOCALLS' index 21;}
- function VioSetMode(var Mode:TVioModeInfo;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 122;
- {external 'VIOCALLS' index 22;}
- function VioGetPhysBuf(var PBData:TVioPhysBuf;Reserved:word):word; cdecl;
- external 'EMXWRAP' index 102;
- {external 'VIOCALLS' index 2;}
- function VioReadCellStr(var Buf;var BufLen:word;
- Row,Column,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 124;
- {external 'VIOCALLS' index 24;}
- function VioReadCharStr(var Buf;var BufLen:word;
- Row,Column,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 130;
- {external 'VIOCALLS' index 30;}
- function VioWrtCellStr(CellStr:pointer;Len,Row,Column,VioHandle:word):word;
- cdecl;
- external 'EMXWRAP' index 110;
- {external 'VIOCALLS' index 10;}
- function VioWrtCharStr(CharStr:pointer;Len,Row,Column,VioHandle:word):word;
- cdecl;
- external 'EMXWRAP' index 113;
- {external 'VIOCALLS' index 13;}
- function VioScrollDn(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 147;
- {external 'VIOCALLS' index 47;}
- function VioScrollDown(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 147;
- {external 'VIOCALLS' index 47;}
- function VioScrollUp(TopRow,LeftCol,BotRow,RightCol,Lines:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 107;
- {external 'VIOCALLS' index 7;}
- function VioScrollLf(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 144;
- {external 'VIOCALLS' index 44;}
- function VioScrollLeft(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 144;
- {external 'VIOCALLS' index 44;}
- function VioScrollRt(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 112;
- {external 'VIOCALLS' index 12;}
- function VioScrollRight(TopRow,LeftCol,BotRow,RightCol,Col:word;var Cell:word;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 112;
- {external 'VIOCALLS' index 12;}
- function VioWrtNAttr(var Attr:byte;Times,Row,Column,VioHandle:word):word;
- cdecl;
- external 'EMXWRAP' index 126;
- {external 'VIOCALLS' index 26;}
- function VioWrtNCell(var Cell:word;Times,Row,Column,VioHandle:word):word;
- cdecl;
- external 'EMXWRAP' index 152;
- {external 'VIOCALLS' index 52;}
- function VioWrtNChar(var Ch:byte;Times,Row,Column,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 153;
- {external 'VIOCALLS' index 53;}
- function VioWrtNChar(var Ch:char;Times,Row,Column,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 153;
- {external 'VIOCALLS' index 53;}
- function VioWrtTTY(CharStr:pointer;Len,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 119;
- {external 'VIOCALLS' index 19;}
- function VioWrtCharStrAtt(CharStr:pointer;Len,Row,Column:word;var Attr:byte;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 148;
- {external 'VIOCALLS' index 48;}
- function VioCheckCharType(var CharType:word;Row,Column,VioHandle:word):word;
- cdecl;
- external 'EMXWRAP' index 175;
- {external 'VIOCALLS' index 75;}
- function VioShowBuf(BufOfs,Len,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 143;
- {external 'VIOCALLS' index 43;}
- function VioSetAnsi(Mode,VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 105;
- {external 'VIOCALLS' index 5;}
- function VioGetAnsi(var Mode:word;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 103;
- {external 'VIOCALLS' index 3;}
- function VioPrtSc(VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 108;
- {external 'VIOCALLS' index 8;}
- function VioPrtScToggle(VioHandle:word):word; cdecl;
- 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; cdecl;
- external 'EMXWRAP' index 125;
- {external 'VIOCALLS' index 25;}
- function VioSavRedrawUndo(Ownership,KillThread,Reserved:word):word; cdecl;
- external 'EMXWRAP' index 128;
- {external 'VIOCALLS' index 28;}
- function VioModeWait(RequestType:word;var NotifyType:word;Reserved:word):word;
- cdecl;
- external 'EMXWRAP' index 137;
- {external 'VIOCALLS' index 37;}
- function VioModeUndo(Ownership,KillThread,Reserved:word):word; cdecl;
- external 'EMXWRAP' index 135;
- {external 'VIOCALLS' index 35;}
- function VioScrLock(WaitFlag:word;var Status:word;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 123;
- {external 'VIOCALLS' index 23;}
- function VioScrUnLock(VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 118;
- {external 'VIOCALLS' index 18;}
- function VioPopUp(var OptionFlags:word;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 111;
- {external 'VIOCALLS' index 11;}
- function VioEndPopUp(VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 101;
- {external 'VIOCALLS' index 1;}
- function VioGetConfig(ConfigId:word;var VideoConfig:TVioConfigInfo;
- VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 146;
- {external 'VIOCALLS' index 46;}
- function VioGetFont(var FontData:TVioFontInfo;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 129;
- {external 'VIOCALLS' index 29;}
- function VioSetFont(var FontData:TVioFontInfo;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 133;
- {external 'VIOCALLS' index 33;}
- function VioGetCp(Reserved:word;var CodePage:word;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 140;
- {external 'VIOCALLS' index 40;}
- function VioSetCp(Reserved:word;CodePage:word;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 142;
- {external 'VIOCALLS' index 42;}
- function VioGetState(var State;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 149;
- {external 'VIOCALLS' index 49;}
- function VioSetState(var State;VioHandle:word):word; cdecl;
- external 'EMXWRAP' index 151;
- {external 'VIOCALLS' index 51;}
- {Extended functions for windowed VIO follow.}
- function VioAssociate(DC:cardinal;VPS:word):word; cdecl;
- external 'EMXWRAP' index 155;
- {external 'VIOCALLS' index 55;}
- function VioCreateLogFont(var FAtAttrs:TFAttrs;LLCId:longint;var Name:TStr8;
- VPS:word):word; cdecl;
- external 'EMXWRAP' index 160;
- {external 'VIOCALLS' index 60;}
- function VioCreatePS(var VPS:word;Depth,Width,Format,Attrs:integer;
- Reserved:word):word; cdecl;
- external 'EMXWRAP' index 156;
- {external 'VIOCALLS' index 56;}
- function VioDeleteSetId(LLCId:longint;VPS:word):word; cdecl;
- external 'EMXWRAP' index 157;
- {external 'VIOCALLS' index 57;}
- function VioDestroyPS(VPS:word):word; cdecl;
- external 'EMXWRAP' index 161;
- {external 'VIOCALLS' index 61;}
- function VioGetDeviceCellSize(var Height,Width:integer;VPS:word):word; cdecl;
- external 'EMXWRAP' index 158;
- {external 'VIOCALLS' index 58;}
- function VioGetOrg(var Row,Column:integer;VPS:word):word; cdecl;
- 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; cdecl;
- 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; cdecl;
- external 'EMXWRAP' index 162;
- {external 'VIOCALLS' index 62;}
- function VioSetDeviceCellSize(Height,Width:integer;VPS:word):word; cdecl;
- external 'EMXWRAP' index 165;
- {external 'VIOCALLS' index 65;}
- function VioSetOrg(Row,Column:integer;VPS:word):word; cdecl;
- external 'EMXWRAP' index 163;
- {external 'VIOCALLS' index 63;}
- function VioShowPS(Depth,Width,offCell:integer;VPS:word):word; cdecl;
- external 'EMXWRAP' index 166;
- {external 'VIOCALLS' index 66;}
- function WinDefAVioWindowProc(WND:cardinal;Msg:word;mp1,mp2:cardinal):pointer;
- cdecl;
- external 'EMXWRAP' index 30;
- {external 'PMVIOP' index 30;}
- end.
|