mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-07 16:06:16 +02:00
2921 lines
90 KiB
ObjectPascal
2921 lines
90 KiB
ObjectPascal
{
|
|
Interface to the ncurses library. Original ncurses library copyright:
|
|
|
|
****************************************************************************
|
|
* Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. *
|
|
* *
|
|
* Permission is hereby granted, free of charge, to any person obtaining a *
|
|
* copy of this software and associated documentation files (the *
|
|
* "Software"), to deal in the Software without restriction, including *
|
|
* without limitation the rights to use, copy, modify, merge, publish, *
|
|
* distribute, distribute with modifications, sublicense, and/or sell *
|
|
* copies of the Software, and to permit persons to whom the Software is *
|
|
* furnished to do so, subject to the following conditions: *
|
|
* *
|
|
* The above copyright notice and this permission notice shall be included *
|
|
* in all copies or substantial portions of the Software. *
|
|
* *
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
|
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
|
|
* IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
|
|
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
|
|
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
|
|
* THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
|
|
* *
|
|
* Except as contained in this notice, the name(s) of the above copyright *
|
|
* holders shall not be used in advertising or otherwise to promote the *
|
|
* sale, use or other dealings in this Software without prior written *
|
|
* authorization. *
|
|
****************************************************************************}
|
|
|
|
{$MODE OBJFPC}
|
|
|
|
|
|
{$IFNDEF FPC_DOTTEDUNITS}
|
|
unit ncurses;
|
|
{$ENDIF FPC_DOTTEDUNITS}
|
|
interface
|
|
|
|
{$IFDEF FPC_DOTTEDUNITS}
|
|
uses
|
|
UnixApi.Types;
|
|
{$ELSE FPC_DOTTEDUNITS}
|
|
uses
|
|
unixtype;
|
|
{$ENDIF FPC_DOTTEDUNITS}
|
|
|
|
{$PACKRECORDS C}
|
|
{$LINKLIB ncursesw}
|
|
{$LINKLIB c} // should be uses initc ?
|
|
|
|
{$DEFINE USE_FPC_BYTEBOOL}
|
|
|
|
const
|
|
libncurses = 'ncursesw';
|
|
|
|
type
|
|
PFILE = Pointer;
|
|
{$IFDEF USE_FPC_BYTEBOOL}
|
|
Bool = ByteBool;
|
|
{$ELSE USE_FPC_BYTEBOOL}
|
|
Bool = Byte;
|
|
{$ENDIF USE_FPC_BYTEBOOL}
|
|
|
|
const
|
|
{$IFDEF USE_FPC_BYTEBOOL}
|
|
NC_FPC_TRUE = true;
|
|
NC_FPC_FALSE = false;
|
|
{$ELSE USE_FPC_BYTEBOOL}
|
|
NC_FPC_TRUE = 1;
|
|
NC_FPC_FALSE = 0;
|
|
{$ENDIF USE_FPC_BYTEBOOL}
|
|
|
|
const
|
|
NCURSES_VERSION_MAJOR = 5;
|
|
NCURSES_VERSION_MINOR = 6;
|
|
NCURSES_VERSION_PATCH = 20061217;
|
|
NCURSES_VERSION = '5.6';
|
|
|
|
{$MACRO ON}
|
|
{$IFNDEF NCURSES_MOUSE_VERSION}
|
|
{$DEFINE NCURSES_MOUSE_VERSION:=2} // Can be changed for ancient versions of ncurses
|
|
{$ENDIF}
|
|
{$MACRO OFF}
|
|
|
|
type
|
|
pchtype = ^chtype;
|
|
chtype = culong;
|
|
pmmask_t = ^mmask_t;
|
|
mmask_t = culong;
|
|
|
|
{ colors }
|
|
var
|
|
{$IFNDEF darwin}
|
|
COLORS : cint cvar; external;
|
|
COLOR_PAIRS : cint cvar; external;
|
|
{$ELSE darwin}
|
|
COLORS : cint external libncurses name 'COLORS';
|
|
COLOR_PAIRS : cint external libncurses name 'COLOR_PAIRS';
|
|
{$ENDIF darwin}
|
|
|
|
const
|
|
COLOR_BLACK = 0;
|
|
COLOR_RED = 1;
|
|
COLOR_GREEN = 2;
|
|
COLOR_YELLOW = 3;
|
|
COLOR_BLUE = 4;
|
|
COLOR_MAGENTA = 5;
|
|
COLOR_CYAN = 6;
|
|
COLOR_WHITE = 7;
|
|
|
|
type
|
|
pNC_FPC_COLOR = ^NC_FPC_COLOR;
|
|
NC_FPC_COLOR = Smallint;
|
|
|
|
{ line graphics }
|
|
type
|
|
tacs_map = array [AnsiChar] of chtype;
|
|
pacs_map = ^tacs_map;
|
|
|
|
var
|
|
{$IFNDEF darwin}
|
|
acs_map : tacs_map cvar; external;
|
|
{$ELSE darwin}
|
|
acs_map : tacs_map external libncurses name 'acs_map';
|
|
{$ENDIF darwin}
|
|
|
|
//function NCURSES_ACS(c : Longint) : Longint;
|
|
(* VT100 symbols begin here *)
|
|
function ACS_ULCORNER : chtype; inline; { upper left corner }
|
|
function ACS_LLCORNER : chtype; inline; { lower left corner }
|
|
function ACS_URCORNER : chtype; inline; { upper right corner }
|
|
function ACS_LRCORNER : chtype; inline; { lower right corner }
|
|
function ACS_LTEE : chtype; inline; { tee pointing right }
|
|
function ACS_RTEE : chtype; inline; { tee pointing left }
|
|
function ACS_BTEE : chtype; inline; { tee pointing up }
|
|
function ACS_TTEE : chtype; inline; { tee pointing down }
|
|
function ACS_HLINE : chtype; inline; { horizontal line }
|
|
function ACS_VLINE : chtype; inline; { vertical line }
|
|
function ACS_PLUS : chtype; inline; { large plus or crossover }
|
|
function ACS_S1 : chtype; inline; { scan line 1 }
|
|
function ACS_S9 : chtype; inline; { scan line 9 }
|
|
function ACS_DIAMOND : chtype; inline; { diamond }
|
|
function ACS_CKBOARD : chtype; inline; { checker board (stipple) }
|
|
function ACS_DEGREE : chtype; inline; { degree symbol }
|
|
function ACS_PLMINUS : chtype; inline; { plus/minus }
|
|
function ACS_BULLET : chtype; inline; { bullet }
|
|
(* Teletype 5410v1 symbols begin here *)
|
|
function ACS_LARROW : chtype; inline; { arrow pointing left }
|
|
function ACS_RARROW : chtype; inline; { arrow pointing right }
|
|
function ACS_DARROW : chtype; inline; { arrow pointing down }
|
|
function ACS_UARROW : chtype; inline; { arrow pointing up }
|
|
function ACS_BOARD : chtype; inline; { board of squares }
|
|
function ACS_LANTERN : chtype; inline; { lantern symbol }
|
|
function ACS_BLOCK : chtype; inline; { solid square block }
|
|
(*
|
|
* These aren't documented, but a lot of System Vs have them anyway
|
|
* (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
|
|
* The ACS_names may not match AT&T's, our source didn't know them.
|
|
*)
|
|
function ACS_S3 : chtype; inline; { scan line 3 }
|
|
function ACS_S7 : chtype; inline; { scan line 7 }
|
|
function ACS_LEQUAL : chtype; inline; { less/equal }
|
|
function ACS_GEQUAL : chtype; inline; { greater/equal }
|
|
function ACS_PI : chtype; inline; { Pi }
|
|
function ACS_NEQUAL : chtype; inline; { not equal }
|
|
function ACS_STERLING : chtype; inline; { UK pound sign }
|
|
|
|
(*
|
|
* Line drawing ACS names are of the form ACS_trbl, where t is the top, r
|
|
* is the right, b is the bottom, and l is the left. t, r, b, and l might
|
|
* be B (blank), S (single), D (double), or T (thick). The subset defined
|
|
* here only uses B and S.
|
|
*)
|
|
|
|
{$IFDEF FPC_OBJFPC}
|
|
property ACS_BSSB : chtype read ACS_ULCORNER;
|
|
property ACS_SSBB : chtype read ACS_LLCORNER;
|
|
property ACS_BBSS : chtype read ACS_URCORNER;
|
|
property ACS_SBBS : chtype read ACS_LRCORNER;
|
|
property ACS_SBSS : chtype read ACS_RTEE;
|
|
property ACS_SSSB : chtype read ACS_LTEE;
|
|
property ACS_SSBS : chtype read ACS_BTEE;
|
|
property ACS_BSSS : chtype read ACS_TTEE;
|
|
property ACS_BSBS : chtype read ACS_HLINE;
|
|
property ACS_SBSB : chtype read ACS_VLINE;
|
|
property ACS_SSSS : chtype read ACS_PLUS;
|
|
{$ENDIF FPC_OBJFPC}
|
|
|
|
const
|
|
ERR = -(1);
|
|
OK = 0;
|
|
_SUBWIN = $01; { is this a sub-window? }
|
|
_ENDLINE = $02; { is the window flush right? }
|
|
_FULLWIN = $04; { is the window full-screen? }
|
|
_SCROLLWIN = $08; { bottom edge is at screen bottom? }
|
|
_ISPAD = $10; { is this window a pad? }
|
|
_HASMOVED = $20; { has cursor moved since last refresh? }
|
|
_WRAPPED = $40; { cursor was just wrappped }
|
|
_NOCHANGE = -(1);
|
|
{
|
|
this value is used in the firstchar and lastchar fields to mark
|
|
unchanged lines
|
|
}
|
|
_NEWINDEX = -(1);
|
|
|
|
CCHARW_MAX = 5;
|
|
|
|
|
|
type
|
|
pattr_t = ^attr_t;
|
|
attr_t = chtype; { ...must be at least as wide as chtype }
|
|
pcchar_t = ^cchar_t;
|
|
|
|
cchar_t = record
|
|
attr : attr_t;
|
|
chars : array[0..CCHARW_MAX - 1] of wchar_t;
|
|
{$IFDEF NCURSES_EXT_COLORS}
|
|
ext_color : cint; { color pair, must be more than 16-bits }
|
|
{$ENDIF NCURSES_EXT_COLORS}
|
|
end;
|
|
|
|
ldat = record
|
|
text : pcchar_t; { text of the line }
|
|
firstchar : Smallint; { first changed character in the line }
|
|
lastchar : Smallint; { last changed character in the line }
|
|
oldindex : Smallint; { index of the line at last update }
|
|
end;
|
|
|
|
PWINDOW = ^TWINDOW;
|
|
|
|
_win_st = record
|
|
_cury, _curx : Smallint; { current cursor position }
|
|
{ window location and size }
|
|
_maxy, _maxx : Smallint; { maximums of x and y, NOT window size }
|
|
_begy, _begx : Smallint; { screen coords of upper-left-hand corner }
|
|
_flags : Smallint; { window state flags }
|
|
{ attribute tracking }
|
|
_attrs : attr_t; { current attribute for non-space character }
|
|
_bkgd : chtype; { current background AnsiChar/attribute pair }
|
|
{ option values set by user }
|
|
_notimeout : Bool; { no time out on function-key entry? }
|
|
_clear : Bool; { consider all data in the window invalid? }
|
|
_leaveok : Bool; { OK to not reset cursor on exit? }
|
|
_scroll : Bool; { OK to scroll this window? }
|
|
_idlok : Bool; { OK to use insert/delete line? }
|
|
_idcok : Bool; { OK to use insert/delete AnsiChar? }
|
|
_immed : Bool; { window in immed mode? (not yet used) }
|
|
_sync : Bool; { window in sync mode? }
|
|
_use_keypad : Bool; { process function keys into KEY_ symbols? }
|
|
_delay : cint; { 0 = nodelay, <0 = blocking, >0 = delay }
|
|
_line : ^ldat; { the actual line data }
|
|
{ global screen state }
|
|
_regtop : Smallint; { top line of scrolling region }
|
|
_regbottom : Smallint; { bottom line of scrolling region }
|
|
{ these are used only if this is a sub-window }
|
|
_parx : cint; { x coordinate of this window in parent }
|
|
_pary : cint; { y coordinate of this window in parent }
|
|
_parent : PWINDOW; { pointer to parent if a sub-window }
|
|
{ these are used only if this is a pad }
|
|
_pad : record
|
|
_pad_y : Smallint;
|
|
_pad_x : Smallint;
|
|
_pad_top : Smallint;
|
|
_pad_left : Smallint;
|
|
_pad_bottom : Smallint;
|
|
_pad_right : Smallint;
|
|
end;
|
|
_yoffset : Smallint; { real begy is _begy + _yoffset }
|
|
_bkgrnd : cchar_t; { current background AnsiChar/attribute pair }
|
|
{$IFDEF NCURSES_EXT_COLORS}
|
|
_color : cint; { current color-pair for non-space character }
|
|
{$ENDIF NCURSES_EXT_COLORS}
|
|
end;
|
|
|
|
TWINDOW = _win_st;
|
|
TSCREEN = TWINDOW;
|
|
PSCREEN = ^TSCREEN;
|
|
|
|
var
|
|
{$IFNDEF darwin}
|
|
stdscr : PWINDOW cvar; external;
|
|
curscr : PWINDOW cvar; external;
|
|
newscr : PWINDOW cvar; external;
|
|
LINES : Longint cvar; external;
|
|
COLS : Longint cvar; external;
|
|
TABSIZE : Longint cvar; external;
|
|
ESCDELAY: Longint cvar; external; { ESC expire time in milliseconds }
|
|
{$ELSE darwin}
|
|
stdscr : PWINDOW external libncurses name 'stdscr';
|
|
curscr : PWINDOW external libncurses name 'curscr';
|
|
newscr : PWINDOW external libncurses name 'newscr';
|
|
LINES : Longint external libncurses name 'LINES';
|
|
COLS : Longint external libncurses name 'COLS';
|
|
TABSIZE : Longint external libncurses name 'TABSIZE';
|
|
ESCDELAY: Longint external libncurses name 'ESCDELAY';
|
|
{$ENDIF darwin}
|
|
|
|
(*
|
|
* These functions are extensions - not in XSI Curses.
|
|
*)
|
|
|
|
function is_term_resized(_para1:Longint; _para2:Longint):Bool;cdecl;external libncurses;
|
|
function keybound(_para1:Longint; _para2:Longint):PAnsiChar;cdecl;external libncurses;
|
|
function curses_version:PAnsiChar;cdecl;external libncurses;
|
|
function assume_default_colors(_para1:Longint; _para2:Longint):Longint; cdecl;external libncurses;
|
|
function define_key(_para1:PAnsiChar; _para2:Longint):Longint; cdecl;external libncurses;
|
|
function key_defined(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function keyok(_para1:Longint; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function resize_term(_para1:Longint; _para2:Longint):Longint; cdecl;external libncurses;
|
|
function resizeterm(_para1:Longint; _para2:Longint):Longint; cdecl;external libncurses;
|
|
function use_default_colors:Longint;cdecl;external libncurses;
|
|
function use_extended_names(_para1:Bool):Longint; cdecl;external libncurses;
|
|
function use_legacy_coding(_para1:Longint):Longint; cdecl;external libncurses;
|
|
function wresize(_para1:PWINDOW; _para2:Longint; _para3:Longint):Longint; cdecl;external libncurses;
|
|
procedure nofilter;cdecl;external libncurses;
|
|
|
|
(*
|
|
* Function prototypes. This is the complete XSI Curses list of required
|
|
* functions.
|
|
*)
|
|
function baudrate:Longint; cdecl;external libncurses;
|
|
function beep:Longint; cdecl;external libncurses;
|
|
function can_change_color:Bool;cdecl;external libncurses;
|
|
function cbreak:Longint; cdecl;external libncurses;
|
|
//function color_content(_para1:Smallint; _para2:PSmallint; _para3:PSmallint; _para4:PSmallInt):Longint; cdecl;external libncurses;
|
|
function color_content(color: NC_FPC_COLOR; r, g, b: PSmallint):Longint; cdecl;external libncurses;
|
|
function copywin(_para1:PWINDOW; _para2:PWINDOW; _para3:Longint; _para4:Longint; _para5:Longint;
|
|
_para6:Longint; _para7:Longint; _para8:Longint; _para9:Longint):Longint; cdecl;external libncurses;
|
|
function curs_set(_para1:Longint):Longint; cdecl;external libncurses;
|
|
function def_prog_mode:Longint; cdecl;external libncurses;
|
|
function def_shell_mode:Longint; cdecl;external libncurses;
|
|
function delay_output(_para1:Longint):Longint; cdecl;external libncurses;
|
|
procedure delscreen(_para1:PSCREEN);cdecl;external libncurses;
|
|
function delwin(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function derwin(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:Longint; _para5:Longint):PWINDOW;cdecl;external libncurses;
|
|
function doupdate:Longint; cdecl;external libncurses;
|
|
function dupwin(_para1:PWINDOW):PWINDOW;cdecl;external libncurses;
|
|
function echo:Longint; cdecl;external libncurses;
|
|
function endwin:Longint; cdecl;external libncurses;
|
|
function erasechar:PAnsiChar;cdecl;external libncurses;
|
|
procedure filter;cdecl;external libncurses;
|
|
function flash:Longint; cdecl;external libncurses;
|
|
function flushinp:Longint; cdecl;external libncurses;
|
|
function getwin(_para1:PFILE):PWINDOW;cdecl;external libncurses;
|
|
function halfdelay(_para1:Longint):Longint; cdecl;external libncurses;
|
|
function has_colors:Bool;cdecl;external libncurses;
|
|
function has_ic:Bool;cdecl;external libncurses;
|
|
function has_il:Bool;cdecl;external libncurses;
|
|
procedure idcok(_para1:PWINDOW; _para2:Bool);cdecl;external libncurses;
|
|
function idlok(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
procedure immedok(_para1:PWINDOW; _para2:Bool);cdecl;external libncurses;
|
|
function initscr:PWINDOW;cdecl;external libncurses;
|
|
//function init_color(_para1:Smallint; _para2:Smallint; _para3:Smallint; _para4:Smallint):Longint; cdecl;external libncurses;
|
|
function init_color(color: NC_FPC_COLOR; r, g, b: Smallint):Longint; cdecl;external libncurses;
|
|
//function init_pair(_para1:Smallint; _para2:Smallint; _para3:Smallint):Longint; cdecl;external libncurses;
|
|
function init_pair(pair: Smallint; f, b: NC_FPC_COLOR):Longint; cdecl;external libncurses; overload;
|
|
function intrflush(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function isendwin:Bool;cdecl;external libncurses;
|
|
function is_linetouched(_para1:PWINDOW; _para2:Longint):Bool;cdecl;external libncurses;
|
|
function is_wintouched(_para1:PWINDOW):Bool;cdecl;external libncurses;
|
|
function keyname(_para1:Longint):PAnsiChar;cdecl;external libncurses;
|
|
function keypad(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function killchar:PAnsiChar;cdecl;external libncurses;
|
|
function leaveok(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function longname:PAnsiChar;cdecl;external libncurses;
|
|
function meta(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function mvcur(_para1:Longint; _para2:Longint; _para3:Longint; _para4:Longint):Longint; cdecl;external libncurses;
|
|
function mvderwin(_para1:PWINDOW; _para2:Longint; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function mvwin(_para1:PWINDOW; _para2:Longint; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function napms(_para1:Longint):Longint; cdecl;external libncurses;
|
|
function newpad(_para1:Longint; _para2:Longint):PWINDOW;cdecl;external libncurses;
|
|
function newterm(_para1:PAnsiChar; _para2:PFILE; _para3:PFILE):PSCREEN;cdecl;external libncurses;
|
|
function newwin(_para1:Longint; _para2:Longint; _para3:Longint; _para4:Longint):PWINDOW;cdecl;external libncurses;
|
|
function nl:Longint; cdecl;external libncurses;
|
|
function nocbreak:Longint; cdecl;external libncurses;
|
|
function nodelay(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function noecho:Longint; cdecl;external libncurses;
|
|
function nonl:Longint; cdecl;external libncurses;
|
|
procedure noqiflush;cdecl;external libncurses;
|
|
function noraw:Longint; cdecl;external libncurses;
|
|
function notimeout(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function overlay(_para1:PWINDOW; _para2:PWINDOW):Longint; cdecl;external libncurses;
|
|
function overwrite(_para1:PWINDOW; _para2:PWINDOW):Longint; cdecl;external libncurses;
|
|
//function pair_content(_para1:Smallint; _para2:PSmallint; _para3:PSmallInt):Longint; cdecl;external libncurses;
|
|
function pair_content(pair: Smallint; f, b: pNC_FPC_COLOR):Longint; cdecl;external libncurses;
|
|
function pechochar(_para1:PWINDOW; _para2:chtype):Longint; cdecl;external libncurses;
|
|
function pnoutrefresh(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:Longint; _para5:Longint;
|
|
_para6:Longint; _para7:Longint):Longint; cdecl;external libncurses;
|
|
function prefresh(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:Longint; _para5:Longint;
|
|
_para6:Longint; _para7:Longint):Longint; cdecl;external libncurses;
|
|
function putwin(_para1:PWINDOW; _para2:PFILE):Longint; cdecl;external libncurses;
|
|
procedure qiflush;cdecl;external libncurses;
|
|
function raw:Longint; cdecl;external libncurses;
|
|
function resetty:Longint; cdecl;external libncurses;
|
|
function reset_prog_mode:Longint; cdecl;external libncurses;
|
|
function reset_shell_mode:Longint; cdecl;external libncurses;
|
|
|
|
type TWinInit = function (win: PWINDOW; ncols: Longint): Longint; cdecl;
|
|
|
|
function ripoffline(line: Longint; init: TWinInit):Longint; cdecl;external libncurses;
|
|
|
|
function savetty:Longint; cdecl;external libncurses;
|
|
function scr_dump(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function scr_init(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function scrollok(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function scr_restore(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function scr_set(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function set_term(_para1:PSCREEN):PSCREEN;cdecl;external libncurses;
|
|
function slk_attroff(_para1:chtype):Longint; cdecl;external libncurses;
|
|
|
|
function slk_attron(_para1:chtype):Longint; cdecl;external libncurses;
|
|
|
|
function slk_attrset(_para1:chtype):Longint; cdecl;external libncurses;
|
|
function slk_attr:attr_t;cdecl;external libncurses;
|
|
function slk_attr_set(_para1:attr_t; _para2:Smallint; _para3:Pointer):Longint; cdecl;external libncurses;
|
|
function slk_clear:Longint; cdecl;external libncurses;
|
|
function slk_color(_para1:Smallint):Longint; cdecl;external libncurses;
|
|
function slk_init(_para1:Longint):Longint; cdecl;external libncurses;
|
|
function slk_label(_para1:Longint):PAnsiChar;cdecl;external libncurses;
|
|
function slk_noutrefresh:Longint; cdecl;external libncurses;
|
|
function slk_refresh:Longint; cdecl;external libncurses;
|
|
function slk_restore:Longint; cdecl;external libncurses;
|
|
function slk_set(_para1:Longint; _para2:PAnsiChar; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function slk_touch:Longint; cdecl;external libncurses;
|
|
function start_color:Longint; cdecl;external libncurses;
|
|
function subpad(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:Longint; _para5:Longint):PWINDOW;cdecl;external libncurses;
|
|
function subwin(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:Longint; _para5:Longint):PWINDOW;cdecl;external libncurses;
|
|
function syncok(_para1:PWINDOW; _para2:Bool):Longint; cdecl;external libncurses;
|
|
function termattrs:chtype;cdecl;external libncurses;
|
|
function termname:PAnsiChar;cdecl;external libncurses;
|
|
function typeahead(_para1:Longint):Longint; cdecl;external libncurses;
|
|
function ungetch(_para1:Longint):Longint; cdecl;external libncurses;
|
|
procedure use_env(_para1:Bool);cdecl;external libncurses;
|
|
function vidattr(_para1:chtype):Longint; cdecl;external libncurses;
|
|
function waddch(_para1:PWINDOW; _para2:chtype):Longint; cdecl;external libncurses;
|
|
function waddchnstr(_para1:PWINDOW; _para2:Pchtype; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function waddnstr(_para1:PWINDOW; _para2:PAnsiChar; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function wattr_on(_para1:PWINDOW; _para2:attr_t; _para3:Pointer):Longint; cdecl;external libncurses;
|
|
function wattr_off(_para1:PWINDOW; _para2:attr_t; _para3:Pointer):Longint; cdecl;external libncurses;
|
|
function wbkgd(_para1:PWINDOW; _para2:chtype):Longint; cdecl;external libncurses;
|
|
procedure wbkgdset(_para1:PWINDOW; _para2:chtype);cdecl;external libncurses;
|
|
function wborder(_para1:PWINDOW; _para2:chtype; _para3:chtype; _para4:chtype; _para5:chtype;
|
|
_para6:chtype; _para7:chtype; _para8:chtype; _para9:chtype):Longint; cdecl;external libncurses;
|
|
function wchgat(_para1:PWINDOW; _para2:Longint; _para3:attr_t; _para4:Smallint; _para5:Pointer):Longint; cdecl;external libncurses;
|
|
function wclear(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wclrtobot(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wclrtoeol(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wcolor_set(_para1:PWINDOW; _para2:Smallint; _para3:Pointer):Longint; cdecl;external libncurses;
|
|
procedure wcursyncup(_para1:PWINDOW);cdecl;external libncurses;
|
|
function wdelch(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wechochar(_para1:PWINDOW; _para2:chtype):Longint; cdecl;external libncurses;
|
|
function werase(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wgetch(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wgetnstr(_para1:PWINDOW; _para2:PAnsiChar; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function whline(_para1:PWINDOW; _para2:chtype; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function winch(_para1:PWINDOW):chtype;cdecl;external libncurses;
|
|
function winchnstr(_para1:PWINDOW; _para2:Pchtype; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function winnstr(_para1:PWINDOW; _para2:PAnsiChar; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function winsch(_para1:PWINDOW; _para2:chtype):Longint; cdecl;external libncurses;
|
|
function winsdelln(_para1:PWINDOW; _para2:Longint):Longint; cdecl;external libncurses;
|
|
function winsnstr(_para1:PWINDOW; _para2:PAnsiChar; _para3:Longint):Longint; cdecl;external libncurses;
|
|
{ realised as inline function }
|
|
//function wmove(_para1:PWINDOW; _para2:Longint; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function wnoutrefresh(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wredrawln(_para1:PWINDOW; _para2:Longint; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function wrefresh(_para1:PWINDOW):Longint; cdecl;external libncurses;
|
|
function wscrl(_para1:PWINDOW; _para2:Longint):Longint; cdecl;external libncurses;
|
|
function wsetscrreg(_para1:PWINDOW; _para2:Longint; _para3:Longint):Longint; cdecl;external libncurses;
|
|
procedure wsyncdown(_para1:PWINDOW);cdecl;external libncurses;
|
|
procedure wsyncup(_para1:PWINDOW);cdecl;external libncurses;
|
|
procedure wtimeout(_para1:PWINDOW; _para2:Longint);cdecl;external libncurses;
|
|
function wtouchln(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:Longint):Longint; cdecl;external libncurses;
|
|
function wvline(_para1:PWINDOW; _para2:chtype; _para3:Longint):Longint; cdecl;external libncurses;
|
|
|
|
(*
|
|
* These are also declared in <ncursesw/term.h>:
|
|
*)
|
|
|
|
function tigetflag(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function tigetnum(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
function tigetstr(_para1:PAnsiChar):PAnsiChar;cdecl;external libncurses;
|
|
function putp(_para1:PAnsiChar):Longint; cdecl;external libncurses;
|
|
|
|
var
|
|
{$IFNDEF darwin}
|
|
ttytype : array of PAnsiChar cvar; external; { needed for backward compatibility }
|
|
{$ELSE darwin}
|
|
ttytype : array of PAnsiChar external libncurses name 'ttytype';
|
|
{$ENDIF darwin}
|
|
|
|
(*
|
|
* Function prototypes for wide-character operations.
|
|
*)
|
|
{function vid_puts(_para1:attr_t; _para2:Smallint; _para3:pointer; _para4:function (_para1:cint):cint):longint; cdecl;external libncurses;
|
|
function vidputs(_para1:chtype; _para2:function (_para1:Longint):Longint):Longint; cdecl;external libncurses;}
|
|
type TPutc = function(arg:Longint):Longint; cdecl;
|
|
function vid_puts(attrs:attr_t; pair:Smallint; opts:Pointer; _putc:TPutc):Longint; cdecl;external libncurses;
|
|
function vidputs(attrs:chtype; _putc:TPutc):Longint; cdecl;external libncurses;
|
|
|
|
function erasewchar(_para1:Pwchar_t):Longint; cdecl;external libncurses;
|
|
function getcchar(_para1:Pcchar_t; _para2:Pwchar_t; _para3:Pattr_t; _para4:PSmallInt; _para5:Pointer):Longint; cdecl;external libncurses;
|
|
function key_name(_para1:wchar_t):PAnsiChar;cdecl;external libncurses;
|
|
function killwchar(_para1:Pwchar_t):Longint; cdecl;external libncurses;
|
|
function pecho_wchar(_para1:PWINDOW; _para2:Pcchar_t):Longint; cdecl;external libncurses;
|
|
function setcchar(_para1:Pcchar_t; _para2:Pwchar_t; _para3:attr_t; _para4:Smallint; _para5:Pointer):Longint; cdecl;external libncurses;
|
|
function slk_wset(_para1:Longint; _para2:Pwchar_t; _para3:Longint):Longint; cdecl;external libncurses;
|
|
function term_attrs:attr_t;cdecl;external libncurses;
|
|
function unget_wch(_para1:wchar_t):longint; cdecl;external libncurses;
|
|
function vid_attr(_para1:attr_t; _para2:Smallint; _para3:pointer):longint; cdecl;external libncurses;
|
|
function wadd_wch(_para1:PWINDOW; _para2:Pcchar_t):longint; cdecl;external libncurses;
|
|
function wadd_wchnstr(_para1:PWINDOW; _para2:Pcchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
function waddnwstr(_para1:PWINDOW; _para2:Pwchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
function wbkgrnd(_para1:PWINDOW; _para2:Pcchar_t):longint; cdecl;external libncurses;
|
|
procedure wbkgrndset(_para1:PWINDOW; _para2:Pcchar_t);cdecl;external libncurses;
|
|
function wborder_set(_para1:PWINDOW; _para2:Pcchar_t; _para3:Pcchar_t; _para4:Pcchar_t; _para5:Pcchar_t;
|
|
_para6:Pcchar_t; _para7:Pcchar_t; _para8:Pcchar_t; _para9:Pcchar_t):longint; cdecl;external libncurses;
|
|
function wecho_wchar(_para1:PWINDOW; _para2:Pcchar_t):longint; cdecl;external libncurses;
|
|
function wget_wch(_para1:PWINDOW; _para2:PLongint):longint; cdecl;external libncurses;
|
|
function wgetbkgrnd(_para1:PWINDOW; _para2:Pcchar_t):longint; cdecl;external libncurses;
|
|
function wgetn_wstr(_para1:PWINDOW; _para2:PLongint; _para3:Longint):longint; cdecl;external libncurses;
|
|
function whline_set(_para1:PWINDOW; _para2:Pcchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
function win_wch(_para1:PWINDOW; _para2:Pcchar_t):longint; cdecl;external libncurses;
|
|
function win_wchnstr(_para1:PWINDOW; _para2:Pcchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
function winnwstr(_para1:PWINDOW; _para2:Pwchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
function wins_nwstr(_para1:PWINDOW; _para2:Pwchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
function wins_wch(_para1:PWINDOW; _para2:Pcchar_t):longint; cdecl;external libncurses;
|
|
function winwstr(_para1:PWINDOW; _para2:Pwchar_t):longint; cdecl;external libncurses;
|
|
function wunctrl(_para1:Pcchar_t):Pwchar_t;cdecl;external libncurses;
|
|
function wvline_set(_para1:PWINDOW; _para2:Pcchar_t; _para3:Longint):longint; cdecl;external libncurses;
|
|
|
|
const
|
|
A_NORMAL = 0;
|
|
A_ATTRIBUTES = (not 0) shl 8;
|
|
A_CHARTEXT=(1 shl (0 + 8)) - 1;
|
|
A_COLOR=((1 shl 8) - 1) shl 8;
|
|
A_STANDOUT = 1 shl (8 + 8);
|
|
A_UNDERLINE = 1 shl (9 + 8);
|
|
A_REVERSE = 1 shl (10 + 8);
|
|
A_BLINK = 1 shl (11 + 8);
|
|
A_DIM = 1 shl (12 + 8);
|
|
A_BOLD = 1 shl (13 + 8);
|
|
A_ALTCHARSET = 1 shl (14 + 8);
|
|
A_INVIS = 1 shl (15 + 8);
|
|
A_PROTECT = 1 shl (16 + 8);
|
|
A_HORIZONTAL = 1 shl (17 + 8);
|
|
A_LEFT = 1 shl (18 + 8);
|
|
A_LOW = 1 shl (19 + 8);
|
|
A_RIGHT = 1 shl (20 + 8);
|
|
A_TOP = 1 shl (21 + 8);
|
|
A_VERTICAL = 1 shl (22 + 8);
|
|
|
|
const
|
|
WA_ATTRIBUTES = A_ATTRIBUTES;
|
|
WA_NORMAL = A_NORMAL;
|
|
WA_STANDOUT = A_STANDOUT;
|
|
WA_UNDERLINE = A_UNDERLINE;
|
|
WA_REVERSE = A_REVERSE;
|
|
WA_BLINK = A_BLINK;
|
|
WA_DIM = A_DIM;
|
|
WA_BOLD = A_BOLD;
|
|
WA_ALTCHARSET = A_ALTCHARSET;
|
|
WA_INVIS = A_INVIS;
|
|
WA_PROTECT = A_PROTECT;
|
|
WA_HORIZONTAL = A_HORIZONTAL;
|
|
WA_LEFT = A_LEFT;
|
|
WA_LOW = A_LOW;
|
|
WA_RIGHT = A_RIGHT;
|
|
WA_TOP = A_TOP;
|
|
WA_VERTICAL = A_VERTICAL;
|
|
|
|
function COLOR_PAIR(n: cint): cint; inline;
|
|
function PAIR_NUMBER(attr: attr_t): longint; inline;
|
|
function color_set(color_pair_number: Smallint; opts: Pointer): longint; inline;
|
|
|
|
(* pseudo functions *)
|
|
|
|
function wgetstr(win: PWINDOW; s: PAnsiChar): Longint;
|
|
function getnstr(s: PAnsiChar;n: Longint): Longint; inline;
|
|
function setterm(term: PAnsiChar): Longint; inline;
|
|
function fixterm: Longint; inline;
|
|
function resetterm: Longint; inline;
|
|
function saveterm: Longint; inline;
|
|
function crmode: Longint; inline;
|
|
function nocrmode: Longint; inline;
|
|
|
|
// formal parameter versions not endiansafe?
|
|
procedure getyx (win: PWINDOW; var y,x: Smallint); inline; overload;
|
|
procedure getbegyx(win: PWINDOW; var y,x: Smallint); inline; overload;
|
|
procedure getmaxyx(win: PWINDOW; var y,x: Smallint); inline; overload;
|
|
procedure getparyx(win: PWINDOW; var y,x: Smallint); inline; overload;
|
|
procedure getsyx (var y,x: Smallint); inline; overload;
|
|
|
|
procedure getyx (win: PWINDOW; var y,x: Longint); inline; overload;
|
|
procedure getbegyx(win: PWINDOW; var y,x: Longint); inline; overload;
|
|
procedure getmaxyx(win: PWINDOW; var y,x: Longint); inline; overload;
|
|
procedure getparyx(win: PWINDOW; var y,x: Longint); inline; overload;
|
|
procedure getsyx (var y,x: Longint); inline; overload;
|
|
|
|
procedure setsyx (y,x: Smallint); inline;
|
|
function getattrs(win: PWINDOW): attr_t; inline;
|
|
function getcurx(win: PWINDOW): Smallint; inline;
|
|
function getcury(win: PWINDOW): Smallint; inline;
|
|
function getbegx(win: PWINDOW): Smallint; inline;
|
|
function getbegy(win: PWINDOW): Smallint; inline;
|
|
function getmaxx(win: PWINDOW): Smallint; inline;
|
|
function getmaxy(win: PWINDOW): Smallint; inline;
|
|
function getparx(win: PWINDOW): Smallint; inline;
|
|
function getpary(win: PWINDOW): Smallint; inline;
|
|
function wstandout(win: PWINDOW): Longint; inline;
|
|
function wstandend(win: PWINDOW): Longint; inline;
|
|
function wattr_set(win:PWINDOW; attrs:attr_t; pair:Smallint; opts:Pointer):Longint; inline;
|
|
//function wattr_get(win: PWINDOW): longint;// original fpc ncurses?
|
|
function wattr_get(win:PWINDOW; attrs:Pattr_t; pair:PSmallint; opts:Pointer):longint; // inline; breaks compilation on some architectures currently
|
|
function wattron(win:PWINDOW; attrs: attr_t): Longint; inline;
|
|
function wattroff(win:PWINDOW; attrs: attr_t): Longint; inline;
|
|
function wattrset(win: PWINDOW; attrs: attr_t): longint; inline;
|
|
function scroll(win: PWINDOW): longint; inline;
|
|
function touchwin(win: PWINDOW): longint; inline;
|
|
function touchline(win: PWINDOW;s,c: longint): longint; inline;
|
|
function untouchwin(win: PWINDOW): longint; inline;
|
|
function box(win:PWINDOW; v,h :chtype):Longint; inline;
|
|
function border(ls,rs,ts,bs,tl,tr,bl,br: chtype): longint; inline;
|
|
function hline(ch:chtype; n:longint): longint; inline;
|
|
function vline(ch:chtype; n:longint): longint; inline;
|
|
function winstr(win: PWINDOW;s: PAnsiChar): longint; inline;
|
|
function winchstr(win: PWINDOW; chstr: pchtype): longint; inline;
|
|
function winsstr(win: PWINDOW;s: PAnsiChar): longint; inline;
|
|
function redrawwin(win: PWINDOW): longint; inline;
|
|
function waddstr(win: PWINDOW;st: PAnsiChar): longint; inline;
|
|
function waddchstr(win: PWINDOW; chstr: pchtype): longint; inline;
|
|
{
|
|
pseudo functions for standard screen
|
|
}
|
|
function addch(ch: chtype): longint; inline;
|
|
function addchnstr(chstr: pchtype; n: longint): longint; inline;
|
|
function addchstr(chstr: pchtype): longint; inline;
|
|
function addnstr(str: PAnsiChar;n: longint): longint; inline;
|
|
function addstr(str: PAnsiChar): longint; inline;
|
|
function attroff(attrs: attr_t): longint; inline;
|
|
function attron(attrs: attr_t): longint; inline;
|
|
function attrset(attrs: attr_t): longint; inline;
|
|
function bkgd(ch: chtype): longint; inline;
|
|
procedure bkgdset(ch: chtype); inline;
|
|
function clear: longint; inline;
|
|
function clrtobot: longint; inline;
|
|
function clrtoeol: longint; inline;
|
|
function delch: longint; inline;
|
|
function deleteln: longint; inline;
|
|
function echochar(ch: chtype): longint; inline;
|
|
function erase: longint; inline;
|
|
function getch: longint; inline;
|
|
function getstr(str: PAnsiChar): longint; inline;
|
|
function inch: chtype; inline;
|
|
function inchnstr(chstr: pchtype;n: longint): longint; inline;
|
|
function inchstr(chstr: pchtype): longint; inline;
|
|
function innstr(str: PAnsiChar;n: longint): longint; inline;
|
|
function insch(ch: chtype): longint; inline;
|
|
function insdelln(n: longint): longint; inline;
|
|
function insertln: longint; inline;
|
|
function insnstr(str: PAnsiChar;n: longint): longint; inline;
|
|
function insstr(str: PAnsiChar): longint; inline;
|
|
function instr(str: PAnsiChar): longint; inline;
|
|
function move(y,x: Smallint): longint; inline;
|
|
function refresh: longint; inline;
|
|
function scrl(n: longint): longint; inline;
|
|
function setscrreg(t,b: longint): longint; inline;
|
|
function standend: longint; inline;
|
|
function standout: longint; inline;
|
|
procedure timeout(delay: longint); inline;
|
|
function wdeleteln(win: PWINDOW): longint; inline;
|
|
function winsertln(win: PWINDOW): longint; inline;
|
|
|
|
{
|
|
mv functions
|
|
}
|
|
|
|
function mvwaddch(win: PWINDOW;y,x: Smallint; ch: chtype): longint; inline;
|
|
function mvwaddchnstr(win: PWINDOW;y,x: Smallint; chstr: pchtype; n: longint): longint; inline;
|
|
function mvwaddchstr(win: PWINDOW;y,x: Smallint; chstr: pchtype): longint; inline;
|
|
function mvwaddnstr(win: PWINDOW;y,x: Smallint; str: PAnsiChar; n: longint): longint; inline;
|
|
function mvwaddstr(win: PWINDOW;y,x: Smallint; str: PAnsiChar): longint; inline;
|
|
function mvwdelch(win: PWINDOW; y,x: Smallint): longint;
|
|
function mvwchgat(win: PWINDOW;y, x: Smallint; n: Longint;attr: attr_t;
|
|
color: Smallint; opts: Pointer): longint; inline;
|
|
function mvwgetch(win: PWINDOW; y,x: Smallint): longint; inline;
|
|
function mvwgetnstr(win: PWINDOW; y,x: Smallint; str: PAnsiChar; n: longint): longint; inline;
|
|
function mvwgetstr(win: PWINDOW; y,x: Smallint; str: PAnsiChar): longint; inline;
|
|
function mvwhline(win: PWINDOW; y,x: Smallint; ch: chtype; n: longint): longint; inline;
|
|
function mvwinch(win: PWINDOW;y,x: Smallint): chtype; inline;
|
|
function mvwinchnstr(win: PWINDOW;y,x: Smallint;chstr: pchtype; n: longint): longint; inline;
|
|
function mvwinchstr(win: PWINDOW;y,x: Smallint;chstr: pchtype): longint; inline;
|
|
function mvwinnstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar;n: longint): longint; inline;
|
|
function mvwinsch(win: PWINDOW;y,x: Smallint;ch: chtype): longint; inline;
|
|
function mvwinsnstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar;n: longint): longint; inline;
|
|
function mvwinsstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar): longint; inline;
|
|
function mvwinstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar): longint; inline;
|
|
function mvwvline(win: PWINDOW;y,x: Smallint;ch: chtype;n: longint): longint; inline;
|
|
function mvaddch(y,x: Smallint; ch: chtype): longint; inline;
|
|
function mvaddchnstr(y,x: Smallint; chstr: pchtype;n: longint): longint; inline;
|
|
function mvaddchstr(y,x: Smallint; chstr: pchtype): longint; inline;
|
|
function mvaddnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint; inline;
|
|
function mvaddstr(y,x: Smallint; str: PAnsiChar): longint; inline;
|
|
function mvdelch(y,x: Smallint): longint; inline;
|
|
function mvgetch(y,x: Smallint): longint; inline;
|
|
function mvgetnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint; inline;
|
|
function mvgetstr(y,x: Smallint; str: PAnsiChar): longint; inline;
|
|
function mvhline(y,x: Smallint;ch: chtype;n: longint): longint; inline;
|
|
function mvinch(y,x: Smallint): chtype; inline;
|
|
function mvinchnstr(y,x: Smallint; chstr: pchtype;n: longint): longint; inline;
|
|
function mvinchstr(y,x: Smallint; chstr: pchtype): longint; inline;
|
|
function mvinnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint; inline;
|
|
function mvinsch(y,x: Smallint;ch: chtype): longint; inline;
|
|
function mvinsnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint; inline;
|
|
function mvinsstr(y,x: Smallint; str: PAnsiChar): longint; inline;
|
|
function mvinstr(y,x: Smallint; str: PAnsiChar): longint; inline;
|
|
function mvvline(y,x: Smallint; ch:chtype; n:longint): longint; inline;
|
|
function attr_get(attrs:Pattr_t; pair:PSmallint; opts:Pointer): longint; inline;
|
|
function attr_off(attrs:attr_t; opts:Pointer): longint; inline;
|
|
function attr_on(attrs:attr_t; opts:Pointer): longint; inline;
|
|
function attr_set(attrs:attr_t; pair:Smallint; opts:Pointer): longint; inline;
|
|
function chgat(n: Longint;attr: attr_t;color: Smallint; opts: Pointer): longint; inline;
|
|
{not present in fpc ncurses}
|
|
function mvchgat(y, x: Smallint; n: Longint;attr: attr_t;color: Smallint; opts: Pointer):Longint; inline;
|
|
function getbkgd(win: PWINDOW): chtype; inline;
|
|
function slk_attr_off(attrs: attr_t; opts: Pointer) : longint; inline;
|
|
function slk_attr_on(attrs: attr_t; opts: Pointer): longint; inline;
|
|
|
|
|
|
|
|
|
|
|
|
(*
|
|
* Pseudo-character tokens outside ASCII range. The curses wgetch() function
|
|
* will return any given one of these only if the corresponding k- capability
|
|
* is defined in your terminal's terminfo entry.
|
|
*
|
|
* Some keys (KEY_A1, etc) are arranged like this:
|
|
* a1 up a3
|
|
* left b2 right
|
|
* c1 down c3
|
|
*
|
|
* A few key codes do not depend upon the terminfo entry.
|
|
*)
|
|
|
|
const
|
|
KEY_CODE_YES = 256; { A wchar_t contains a key code &0400 }
|
|
KEY_MIN = 257; { Minimum curses key &0401 }
|
|
KEY_BREAK = 257; { Break key (unreliable) &0401 }
|
|
KEY_SRESET = 344; { Soft (partial) reset (unreliable) &0530 }
|
|
KEY_RESET = 345; { Reset or hard reset (unreliable) &0531 }
|
|
KEY_DOWN = 258; { down-arrow key &0402 }
|
|
KEY_UP = 259; { up-arrow key &0403 }
|
|
KEY_LEFT = 260; { left-arrow key &0404 }
|
|
KEY_RIGHT = 261; { right-arrow key &0405 }
|
|
KEY_HOME = 262; { home key &0406 }
|
|
KEY_BACKSPACE = 263; { backspace key &0407 }
|
|
KEY_F0 = 264; { Function keys. Space for 64 &0410 }
|
|
|
|
{ Manually Added KEY_F1 .. KEY_F12 }
|
|
|
|
KEY_F1 = KEY_F0 + 1;
|
|
KEY_F2 = KEY_F0 + 2;
|
|
KEY_F3 = KEY_F0 + 3;
|
|
KEY_F4 = KEY_F0 + 4;
|
|
KEY_F5 = KEY_F0 + 5;
|
|
KEY_F6 = KEY_F0 + 6;
|
|
KEY_F7 = KEY_F0 + 7;
|
|
KEY_F8 = KEY_F0 + 8;
|
|
KEY_F9 = KEY_F0 + 9;
|
|
KEY_F10 = KEY_F0 + 10;
|
|
KEY_F11 = KEY_F0 + 11;
|
|
KEY_F12 = KEY_F0 + 12;
|
|
|
|
function KEY_F(n : Byte) : chtype; inline;
|
|
|
|
const
|
|
KEY_DL = 328; { delete-line key &0510 }
|
|
KEY_IL = 329; { insert-line key &0511 }
|
|
KEY_DC = 330; { delete-character key &0512 }
|
|
KEY_IC = 331; { insert-character key &0513 }
|
|
KEY_EIC = 332; { sent by rmir or smir in insert mode &0514 }
|
|
KEY_CLEAR = 333; { clear-screen or erase key &0515 }
|
|
KEY_EOS = 334; { clear-to-end-of-screen key &0516 }
|
|
KEY_EOL = 335; { clear-to-end-of-line key &0517 }
|
|
KEY_SF = 336; { scroll-forward key &0520 }
|
|
KEY_SR = 337; { scroll-backward key &0521 }
|
|
KEY_NPAGE = 338; { next-page key &0522 }
|
|
KEY_PPAGE = 339; { previous-page key &0523 }
|
|
KEY_STAB = 340; { set-tab key &0524 }
|
|
KEY_CTAB = 341; { clear-tab key &0525 }
|
|
KEY_CATAB = 342; { clear-all-tabs key &0526 }
|
|
KEY_ENTER = 343; { enter/send key &0527 }
|
|
KEY_PRINT = 346; { print key &0532 }
|
|
KEY_LL = 347; { lower-left key (home down) &0533 }
|
|
KEY_A1 = 348; { upper left of keypad &0534 }
|
|
KEY_A3 = 349; { upper right of keypad &0535 }
|
|
KEY_B2 = 350; { center of keypad &0536 }
|
|
KEY_C1 = 351; { lower left of keypad &0537 }
|
|
KEY_C3 = 352; { lower right of keypad &0540 }
|
|
KEY_BTAB = 353; { back-tab key &0541 }
|
|
KEY_BEG = 354; { begin key &0542 }
|
|
KEY_CANCEL = 355; { cancel key &0543 }
|
|
KEY_CLOSE = 356; { close key &0544 }
|
|
KEY_COMMAND = 357; { command key &0545 }
|
|
KEY_COPY = 358; { copy key &0546 }
|
|
KEY_CREATE = 359; { create key &0547 }
|
|
KEY_END = 360; { end key &0550 }
|
|
KEY_EXIT = 361; { exit key &0551 }
|
|
KEY_FIND = 362; { find key &0552 }
|
|
KEY_HELP = 363; { help key &0553 }
|
|
KEY_MARK = 364; { mark key &0554 }
|
|
KEY_MESSAGE = 365; { message key &0555 }
|
|
KEY_MOVE = 366; { move key &0556 }
|
|
KEY_NEXT = 367; { next key &0557 }
|
|
KEY_OPEN = 368; { open key &0560 }
|
|
KEY_OPTIONS = 369; { options key &0561 }
|
|
KEY_PREVIOUS = 370; { previous key &0562 }
|
|
KEY_REDO = 371; { redo key &0563 }
|
|
KEY_REFERENCE = 372; { reference key &0564 }
|
|
KEY_REFRESH = 373; { refresh key &0565 }
|
|
KEY_REPLACE = 374; { replace key &0566 }
|
|
KEY_RESTART = 375; { restart key &0567 }
|
|
KEY_RESUME = 376; { resume key &0570 }
|
|
KEY_SAVE = 377; { save key &0571 }
|
|
KEY_SBEG = 378; { shifted begin key &0572 }
|
|
KEY_SCANCEL = 379; { shifted cancel key &0573 }
|
|
KEY_SCOMMAND = 380; { shifted command key &0574 }
|
|
KEY_SCOPY = 381; { shifted copy key &0575 }
|
|
KEY_SCREATE = 382; { shifted create key &0576 }
|
|
KEY_SDC = 383; { shifted delete-character key &0577 }
|
|
KEY_SDL = 384; { shifted delete-line key &0600 }
|
|
KEY_SELECT = 385; { select key &0601 }
|
|
KEY_SEND = 386; { shifted end key &0602 }
|
|
KEY_SEOL = 387; { shifted clear-to-end-of-line key &0603 }
|
|
KEY_SEXIT = 388; { shifted exit key &0604 }
|
|
KEY_SFIND = 389; { shifted find key &0605 }
|
|
KEY_SHELP = 390; { shifted help key &0606 }
|
|
KEY_SHOME = 391; { shifted home key &0607 }
|
|
KEY_SIC = 392; { shifted insert-character key &0610 }
|
|
KEY_SLEFT = 393; { shifted left-arrow key &0611 }
|
|
KEY_SMESSAGE = 394; { shifted message key &0612 }
|
|
KEY_SMOVE = 395; { shifted move key &0613 }
|
|
KEY_SNEXT = 396; { shifted next key &0614 }
|
|
KEY_SOPTIONS = 397; { shifted options key &0615 }
|
|
KEY_SPREVIOUS = 398; { shifted previous key &0616 }
|
|
KEY_SPRINT = 399; { shifted print key &0617 }
|
|
KEY_SREDO = 400; { shifted redo key &0620 }
|
|
KEY_SREPLACE = 401; { shifted replace key &0621 }
|
|
KEY_SRIGHT = 402; { shifted right-arrow key &0622 }
|
|
KEY_SRSUME = 403; { shifted resume key &0623 }
|
|
KEY_SSAVE = 404; { shifted save key &0624 }
|
|
KEY_SSUSPEND = 405; { shifted suspend key &0625 }
|
|
KEY_SUNDO = 406; { shifted undo key &0626 }
|
|
KEY_SUSPEND = 407; { suspend key &0627 }
|
|
KEY_UNDO = 408; { undo key &0630}
|
|
KEY_MOUSE = 409; { Mouse event has occurred &0631 }
|
|
KEY_RESIZE = 410; { Terminal resize event &0632 }
|
|
KEY_EVENT = 411; { We were interrupted by an event &0633 }
|
|
KEY_MAX = 511; { Maximum key value is 0633 &0777 }
|
|
|
|
type
|
|
//tnc_wacs= array [AnsiChar] of cchar_t;
|
|
tnc_wacs= array of cchar_t;
|
|
pnc_wacs = ^tacs_map;
|
|
|
|
var
|
|
{$IFNDEF darwin}
|
|
//_nc_wacs : pcchar_t cvar; external;
|
|
_nc_wacs : tnc_wacs cvar; external;
|
|
{$ELSE darwin}
|
|
//_nc_wacs : pcchar_t external libncurses name '_nc_wacs';
|
|
_nc_wacs : tnc_wacs external libncurses name '_nc_wacs';
|
|
{$ENDIF darwin}
|
|
|
|
function NCURSES_WACS(c: chtype): cchar_t; inline;
|
|
|
|
function WACS_BSSB: cchar_t; inline;
|
|
function WACS_SSBB: cchar_t; inline;
|
|
function WACS_BBSS: cchar_t; inline;
|
|
function WACS_SBBS: cchar_t; inline;
|
|
function WACS_SBSS: cchar_t; inline;
|
|
function WACS_SSSB: cchar_t; inline;
|
|
function WACS_SSBS: cchar_t; inline;
|
|
function WACS_BSSS: cchar_t; inline;
|
|
function WACS_BSBS: cchar_t; inline;
|
|
function WACS_SBSB: cchar_t; inline;
|
|
function WACS_SSSS: cchar_t; inline;
|
|
function WACS_S1: cchar_t; inline;
|
|
function WACS_S9: cchar_t; inline;
|
|
function WACS_DIAMOND: cchar_t; inline;
|
|
function WACS_CKBOARD: cchar_t; inline;
|
|
function WACS_DEGREE: cchar_t; inline;
|
|
function WACS_PLMINUS: cchar_t; inline;
|
|
function WACS_BULLET: cchar_t; inline;
|
|
function WACS_LARROW: cchar_t; inline;
|
|
function WACS_RARROW: cchar_t; inline;
|
|
function WACS_DARROW: cchar_t; inline;
|
|
function WACS_UARROW: cchar_t; inline;
|
|
function WACS_BOARD: cchar_t; inline;
|
|
function WACS_LANTERN: cchar_t; inline;
|
|
function WACS_BLOCK: cchar_t; inline;
|
|
function WACS_S3: cchar_t; inline;
|
|
function WACS_S7: cchar_t; inline;
|
|
function WACS_LEQUAL: cchar_t; inline;
|
|
function WACS_GEQUAL: cchar_t; inline;
|
|
function WACS_PI: cchar_t; inline;
|
|
function WACS_NEQUAL: cchar_t; inline;
|
|
function WACS_STERLING: cchar_t; inline;
|
|
|
|
{$IFDEF FPC_OBJFPC}
|
|
property WACS_ULCORNER : cchar_t read WACS_BSSB;
|
|
property WACS_LLCORNER : cchar_t read WACS_SSBB;
|
|
property WACS_URCORNER : cchar_t read WACS_BBSS;
|
|
property WACS_LRCORNER : cchar_t read WACS_SBBS;
|
|
property WACS_RTEE : cchar_t read WACS_SBSS;
|
|
property WACS_LTEE : cchar_t read WACS_SSSB;
|
|
property WACS_BTEE : cchar_t read WACS_SSBS;
|
|
property WACS_TTEE : cchar_t read WACS_BSSS;
|
|
property WACS_HLINE : cchar_t read WACS_BSBS;
|
|
property WACS_VLINE : cchar_t read WACS_SBSB;
|
|
property WACS_PLUS : cchar_t read WACS_SSSS;
|
|
{$ENDIF FPC_OBJFPC}
|
|
|
|
(* mouse interface *)
|
|
|
|
(* event masks *)
|
|
|
|
const
|
|
BUTTON1_RELEASED = 1;
|
|
BUTTON1_PRESSED = 2;
|
|
BUTTON1_CLICKED = 4;
|
|
BUTTON1_DOUBLE_CLICKED = 8;
|
|
BUTTON1_TRIPLE_CLICKED = 16;
|
|
|
|
BUTTON2_RELEASED = 1 shl 6;
|
|
BUTTON2_PRESSED = 2 shl 6;
|
|
BUTTON2_CLICKED = 4 shl 6;
|
|
BUTTON2_DOUBLE_CLICKED = 8 shl 6;
|
|
BUTTON2_TRIPLE_CLICKED = 16 shl 6;
|
|
|
|
BUTTON3_RELEASED = 1 shl (2 * 6);
|
|
BUTTON3_PRESSED = 2 shl (2 * 6);
|
|
BUTTON3_CLICKED = 4 shl (2 * 6);
|
|
BUTTON3_DOUBLE_CLICKED = 8 shl (2 * 6);
|
|
BUTTON3_TRIPLE_CLICKED = 16 shl (2 * 6);
|
|
|
|
BUTTON4_RELEASED = 1 shl (3 * 6);
|
|
BUTTON4_PRESSED = 2 shl (3 * 6);
|
|
BUTTON4_CLICKED = 4 shl (3 * 6);
|
|
BUTTON4_DOUBLE_CLICKED = 8 shl (3 * 6);
|
|
BUTTON4_TRIPLE_CLICKED = 16 shl (3 * 6);
|
|
|
|
{$IF NCURSES_MOUSE_VERSION > 1}
|
|
BUTTON5_RELEASED = BUTTON1_RELEASED shl (4 * 6);
|
|
BUTTON5_PRESSED = BUTTON1_PRESSED shl (4 * 6);
|
|
BUTTON5_CLICKED = BUTTON1_CLICKED shl (4 * 6);
|
|
BUTTON5_DOUBLE_CLICKED = BUTTON1_DOUBLE_CLICKED shl (4 * 6);
|
|
BUTTON5_TRIPLE_CLICKED = BUTTON1_TRIPLE_CLICKED shl (4 * 6);
|
|
|
|
BUTTON_CTRL = 1 shl (5 * 6);
|
|
BUTTON_SHIFT = 2 shl (5 * 6);
|
|
BUTTON_ALT = 4 shl (5 * 6);
|
|
REPORT_MOUSE_POSITION = 8 shl (5 * 6);
|
|
{$ELSE}
|
|
BUTTON1_RESERVED_EVENT = 32;
|
|
BUTTON2_RESERVED_EVENT = 32 shl 6;
|
|
BUTTON3_RESERVED_EVENT = 32 shl (2 * 6);
|
|
BUTTON4_RESERVED_EVENT = 32 shl (3 * 6);
|
|
|
|
BUTTON_CTRL = 1 shl (4 * 6);
|
|
BUTTON_SHIFT = 2 shl (4 * 6);
|
|
BUTTON_ALT = 4 shl (4 * 6);
|
|
REPORT_MOUSE_POSITION = 8 shl (4 * 6);
|
|
{$ENDIF}
|
|
|
|
ALL_MOUSE_EVENTS = REPORT_MOUSE_POSITION - 1;
|
|
|
|
(* macros to extract single event-bits from masks *)
|
|
|
|
function BUTTON_RELEASE(e,x: longint): longint; inline;
|
|
function BUTTON_PRESS(e,x: longint): longint; inline;
|
|
function BUTTON_CLICK(e,x: longint): longint; inline;
|
|
function BUTTON_DOUBLE_CLICK(e,x: longint): longint; inline;
|
|
function BUTTON_TRIPLE_CLICK(e,x: longint): longint; inline;
|
|
function BUTTON_RESERVED_EVENT(e,x: longint): longint; inline;
|
|
function mouse_trafo(pY,pX: PLongint; to_screen: Bool): Bool; inline;
|
|
|
|
type
|
|
PMEVENT = ^MEVENT;
|
|
MEVENT = record
|
|
id : Smallint; { ID to distinguish multiple devices }
|
|
x, y, z : Longint; { event coordinates (character-cell) }
|
|
bstate : mmask_t; { button state bits }
|
|
end;
|
|
|
|
function getmouse(_para1:PMEVENT):longint; cdecl;external libncurses;
|
|
function ungetmouse(_para1:PMEVENT):longint; cdecl;external libncurses;
|
|
function mousemask(_para1:mmask_t; _para2:Pmmask_t):mmask_t;cdecl;external;
|
|
function wenclose(_para1:PWINDOW; _para2:Longint; _para3:Longint):Bool;cdecl;external;
|
|
function mouseinterval(_para1:Longint):longint; cdecl;external libncurses;
|
|
function wmouse_trafo(_para1:PWINDOW; _para2:PLongint; _para3:PLongint; _para4:Bool):Bool;cdecl;external;
|
|
|
|
{
|
|
wide-character (enhanced) functionality
|
|
}
|
|
|
|
function add_wch(wch: pcchar_t): longint; inline;
|
|
function add_wchnstr(wchstr: pcchar_t; n: longint): longint; inline;
|
|
function add_wchstr(wchstr: pcchar_t): longint; inline;
|
|
function addnwstr(wchstr: pwchar_t; n : longint) : longint; inline;
|
|
function addwstr(wchstr: pwchar_t): longint; inline;
|
|
function bkgrnd(wch: pcchar_t): longint; inline;
|
|
procedure bkgrndset(wch: pcchar_t); inline;
|
|
function border_set(ls,rs,ts,bs,tl,tr,bl,br: pcchar_t): longint; inline;
|
|
function box_set(win: PWINDOW; verch,horch: pcchar_t): longint; inline;
|
|
function echo_wchar(wch: Pcchar_t): longint; inline;
|
|
function get_wch(wch: Plongint): longint; inline;
|
|
function get_wstr(wstr: PLongint): longint; inline;
|
|
function getbkgrnd(wch: pcchar_t): longint; inline;
|
|
function getn_wstr(wstr: PLongint; n: longint): longint; inline;
|
|
function hline_set(wch: pcchar_t; n: longint): longint; inline;
|
|
function in_wch(wch: pcchar_t) : longint; inline;
|
|
function in_wchnstr(wchstr: pcchar_t; n: longint): longint; inline;
|
|
function in_wchstr(wchstr: pcchar_t): longint; inline;
|
|
function innwstr(wstr: pwchar_t; n: longint): longint; inline;
|
|
function ins_nwstr(wstr: pwchar_t; n: longint): longint; inline;
|
|
function ins_wch(wch: pcchar_t): longint; inline;
|
|
function ins_wstr(wstr: pwchar_t): longint; inline;
|
|
function inwstr(wstr: pwchar_t): longint; inline;
|
|
function vline_set(wch: pcchar_t; n: longint): longint; inline;
|
|
function wadd_wchstr(win: PWINDOW; wchstr: pcchar_t): longint; inline;
|
|
function waddwstr(win: PWINDOW; wstr :pwchar_t): longint; inline;
|
|
function wget_wstr(win: PWINDOW; wstr: PLongint): longint; inline;
|
|
function win_wchstr(win: PWINDOW; wchstr: pcchar_t): longint; inline;
|
|
function wins_wstr(win: PWINDOW; wstr: pwchar_t): longint; inline;
|
|
function mvadd_wch(y,x: Smallint; wch: pcchar_t): longint; inline;
|
|
function mvadd_wchnstr(y,x: Smallint; wchstr: pcchar_t; n: longint): longint; inline;
|
|
function mvadd_wchstr(y,x: Smallint; wchstr: pcchar_t): longint; inline;
|
|
function mvaddnwstr(y,x: Smallint; wstr: pwchar_t; n: longint): longint; inline;
|
|
function mvaddwstr(y,x: Smallint; wstr: pwchar_t): longint; inline;
|
|
function mvget_wch(y,x: Smallint; wch: Plongint): longint; inline;
|
|
function mvget_wstr(y,x: Smallint; wstr: Plongint): longint; inline;
|
|
function mvgetn_wstr(y,x: Smallint; wstr: Plongint; n: longint): longint; inline;
|
|
function mvhline_set(y,x: Smallint; wch: pcchar_t; n: longint): longint; inline;
|
|
function mvin_wch(y,x: Smallint; wch: pcchar_t) : longint; inline;
|
|
function mvin_wchnstr(y,x: Smallint; wchstr: pcchar_t; n: longint): longint; inline;
|
|
function mvin_wchstr(y,x: Smallint; wchstr: pcchar_t): longint; inline;
|
|
function mvinnwstr(y,x: Smallint; wstr: pwchar_t; n : longint): longint; inline;
|
|
function mvins_nwstr(y,x: Smallint; wstr: pwchar_t; n : longint): longint; inline;
|
|
function mvins_wch(y,x: Smallint; wch: pcchar_t): longint; inline;
|
|
function mvins_wstr(y,x: Smallint; wstr: pwchar_t): longint; inline;
|
|
function mvinwstr(y,x: Smallint; wstr: pwchar_t): longint; inline;
|
|
function mvvline_set(y,x: Smallint; wch: pcchar_t; n : longint): longint; inline;
|
|
function mvwadd_wch(win: PWINDOW; y,x: Smallint; wch: pcchar_t): longint; inline;
|
|
function mvwadd_wchnstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t; n: longint): longint; inline;
|
|
function mvwadd_wchstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t): longint; inline;
|
|
function mvwaddnwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t; n: longint): longint; inline;
|
|
function mvwaddwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t): longint; inline;
|
|
function mvwget_wch(win: PWINDOW; y,x: Smallint; wch: Plongint): longint; inline;
|
|
function mvwget_wstr(win: PWINDOW; y,x: Smallint; wstr: Plongint): longint; inline;
|
|
function mvwgetn_wstr(win: PWINDOW; y,x: Smallint; wstr: Plongint; n: longint): longint; inline;
|
|
function mvwhline_set(win: PWINDOW; y,x: Smallint; wch: pcchar_t; n: longint): longint; inline;
|
|
function mvwin_wch(win: PWINDOW; y,x: Smallint; wch: pcchar_t): longint; inline;
|
|
function mvwin_wchnstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t; n: longint): longint; inline;
|
|
function mvwin_wchstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t): longint; inline;
|
|
function mvwinnwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t; n : longint): longint; inline;
|
|
function mvwins_nwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t; n: longint): longint; inline;
|
|
function mvwins_wch(win: PWINDOW; y,x: Smallint; wch: pcchar_t): longint; inline;
|
|
function mvwins_wstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t) : longint; inline;
|
|
function mvwinwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t) : longint; inline;
|
|
function mvwvline_set(win: PWINDOW; y,x: Smallint; wch: pcchar_t; n: longint) : longint; inline;
|
|
|
|
function wmove(win: PWINDOW; y,x: Smallint): Longint; inline;
|
|
|
|
(* C varargs procedures*)
|
|
|
|
function tparm(_para1:PAnsiChar):PAnsiChar;cdecl; varargs; external libncurses; overload;
|
|
function mvprintw(_para1:Longint; _para2:Longint; _para3:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
function mvscanw(_para1:Longint; _para2:Longint; _para3:PAnsiChar):Longint; cdecl; varargs;external libncurses; overload;
|
|
function mvwprintw(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
function mvwscanw(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
function scanw(_para1:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
function wprintw(_para1:PWINDOW; _para2:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
function wscanw(_para1:PWINDOW; _para2:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
function printw(_para1:PAnsiChar):Longint; cdecl; varargs; external libncurses; overload;
|
|
{function vwprintw(_para1:PWINDOW; _para2:PAnsiChar; _para3:va_list):Longint; cdecl;external libncurses;
|
|
function vw_printw(_para1:PWINDOW; _para2:PAnsiChar; _para3:va_list):Longint; cdecl;external libncurses;
|
|
function vwscanw(_para1:PWINDOW; _para2:PAnsiChar; _para3:va_list):Longint; cdecl;external libncurses;
|
|
function vw_scanw(_para1:PWINDOW; _para2:PAnsiChar; _para3:va_list):Longint; cdecl;external libncurses;}
|
|
|
|
{$IF DEFINED(FPC_OBJFPC) OR DEFINED(FPC_DELPHI)}
|
|
{function tparm(_para1:PAnsiChar; args:array of const):PAnsiChar;cdecl;external libncurses; overload;
|
|
function mvprintw(_para1:Longint; _para2:Longint; _para3:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function mvscanw(_para1:Longint; _para2:Longint; _para3:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function mvwprintw(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function mvwscanw(_para1:PWINDOW; _para2:Longint; _para3:Longint; _para4:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function scanw(_para1:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function wprintw(_para1:PWINDOW; _para2:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function wscanw(_para1:PWINDOW; _para2:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;
|
|
function printw(_para1:PAnsiChar; args:array of const):Longint; cdecl;external libncurses; overload;}
|
|
|
|
{$ENDIF}
|
|
|
|
implementation
|
|
|
|
function ACS_ULCORNER : chtype;
|
|
begin
|
|
ACS_ULCORNER:=acs_map['l'];
|
|
end;
|
|
|
|
function ACS_LLCORNER : chtype;
|
|
begin
|
|
ACS_LLCORNER:=acs_map['m'];
|
|
end;
|
|
|
|
function ACS_URCORNER : chtype;
|
|
begin
|
|
ACS_URCORNER:=acs_map['k'];
|
|
end;
|
|
|
|
function ACS_LRCORNER : chtype;
|
|
begin
|
|
ACS_LRCORNER:=acs_map['j'];
|
|
end;
|
|
|
|
function ACS_LTEE : chtype;
|
|
begin
|
|
ACS_LTEE:=acs_map['t'];
|
|
end;
|
|
|
|
function ACS_RTEE : chtype;
|
|
begin
|
|
ACS_RTEE:=acs_map['u'];
|
|
end;
|
|
|
|
function ACS_BTEE : chtype;
|
|
begin
|
|
ACS_BTEE:=acs_map['v'];
|
|
end;
|
|
|
|
function ACS_TTEE : chtype;
|
|
begin
|
|
ACS_TTEE:=acs_map['w'];
|
|
end;
|
|
|
|
function ACS_HLINE : chtype;
|
|
begin
|
|
ACS_HLINE:=acs_map['q'];
|
|
end;
|
|
|
|
function ACS_VLINE : chtype;
|
|
begin
|
|
ACS_VLINE:=acs_map['x'];
|
|
end;
|
|
|
|
function ACS_PLUS : chtype;
|
|
begin
|
|
ACS_PLUS:=acs_map['n'];
|
|
end;
|
|
|
|
function ACS_S1 : chtype;
|
|
begin
|
|
ACS_S1 :=acs_map['o'];
|
|
end;
|
|
|
|
function ACS_S9 : chtype;
|
|
begin
|
|
ACS_S9 :=acs_map['s'];
|
|
end;
|
|
|
|
function ACS_DIAMOND : chtype;
|
|
begin
|
|
ACS_DIAMOND:=acs_map['`'];
|
|
end;
|
|
|
|
function ACS_CKBOARD : chtype;
|
|
begin
|
|
ACS_CKBOARD:=acs_map['a'];
|
|
end;
|
|
|
|
function ACS_DEGREE : chtype;
|
|
begin
|
|
ACS_DEGREE:=acs_map['f'];
|
|
end;
|
|
|
|
function ACS_PLMINUS : chtype;
|
|
begin
|
|
ACS_PLMINUS:=acs_map['g'];
|
|
end;
|
|
|
|
function ACS_BULLET : chtype;
|
|
begin
|
|
ACS_BULLET:=acs_map['~'];
|
|
end;
|
|
|
|
function ACS_LARROW : chtype;
|
|
begin
|
|
ACS_LARROW:=acs_map[','];
|
|
end;
|
|
|
|
function ACS_RARROW : chtype;
|
|
begin
|
|
ACS_RARROW:=acs_map['+'];
|
|
end;
|
|
|
|
function ACS_DARROW : chtype;
|
|
begin
|
|
ACS_DARROW:=acs_map['.'];
|
|
end;
|
|
|
|
function ACS_UARROW : chtype;
|
|
begin
|
|
ACS_UARROW:=acs_map['-'];
|
|
end;
|
|
|
|
function ACS_BOARD : chtype;
|
|
begin
|
|
ACS_BOARD:=acs_map['h'];
|
|
end;
|
|
|
|
function ACS_LANTERN : chtype;
|
|
begin
|
|
ACS_LANTERN:=acs_map['i'];
|
|
end;
|
|
|
|
function ACS_BLOCK : chtype;
|
|
begin
|
|
ACS_BLOCK:=acs_map['0'];
|
|
end;
|
|
|
|
function ACS_S3 : chtype;
|
|
begin
|
|
ACS_S3 :=acs_map['p'];
|
|
end;
|
|
|
|
function ACS_S7 : chtype;
|
|
begin
|
|
ACS_S7 :=acs_map['r'];
|
|
end;
|
|
|
|
function ACS_LEQUAL : chtype;
|
|
begin
|
|
ACS_LEQUAL:=acs_map['y'];
|
|
end;
|
|
|
|
function ACS_GEQUAL : chtype;
|
|
begin
|
|
ACS_GEQUAL:=acs_map['z'];
|
|
end;
|
|
|
|
function ACS_PI : chtype;
|
|
begin
|
|
ACS_PI :=acs_map['{'];
|
|
end;
|
|
|
|
function ACS_NEQUAL : chtype;
|
|
begin
|
|
ACS_NEQUAL:=acs_map['|'];
|
|
end;
|
|
|
|
function ACS_STERLING : chtype;
|
|
begin
|
|
ACS_STERLING:=acs_map['}'];
|
|
end;
|
|
|
|
function COLOR_PAIR(n : longint): longint;
|
|
begin
|
|
COLOR_PAIR:=n shl 8;
|
|
end;
|
|
|
|
function PAIR_NUMBER(attr: attr_t) : longint;
|
|
begin
|
|
PAIR_NUMBER := (attr AND A_COLOR) shr 8
|
|
//#define PAIR_NUMBER(a) (NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
|
|
end;
|
|
|
|
function color_set(color_pair_number: Smallint; opts: Pointer): longint; inline;
|
|
begin
|
|
color_set:=wcolor_set(stdscr,color_pair_number,opts);
|
|
end;
|
|
|
|
function wgetstr(win: PWINDOW; s: PAnsiChar): Longint;
|
|
begin
|
|
wgetstr := wgetnstr(win, s, -1);
|
|
end;
|
|
|
|
function getnstr(s: PAnsiChar;n: Longint): Longint;
|
|
begin
|
|
getnstr := wgetnstr(stdscr,s,n);
|
|
end;
|
|
|
|
{
|
|
setupterm are declared in <ncursesw/term.h>:
|
|
int setupterm(AnsiChar *term, int fildes, int *errret);
|
|
}
|
|
function setupterm(term:PAnsiChar; fildes:Longint; errret:Plongint):Longint; cdecl;external libncurses;
|
|
|
|
function setterm(term: PAnsiChar): Longint;
|
|
begin
|
|
setterm:=setupterm(term,1,plongint(0));
|
|
end;
|
|
|
|
function fixterm: Longint;
|
|
begin
|
|
fixterm:=reset_prog_mode;
|
|
end;
|
|
|
|
function resetterm: Longint;
|
|
begin
|
|
resetterm:=reset_shell_mode;
|
|
end;
|
|
|
|
function saveterm: Longint;
|
|
begin
|
|
saveterm:=def_prog_mode;
|
|
end;
|
|
|
|
function crmode: Longint;
|
|
begin
|
|
crmode:=cbreak;
|
|
end;
|
|
|
|
function nocrmode: Longint;
|
|
begin
|
|
nocrmode:=nocbreak;
|
|
end;
|
|
|
|
procedure getyx(win: PWINDOW; var y,x: Smallint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._cury; x := win^._curx
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getbegyx(win: PWINDOW; var y,x: Smallint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._begy; x := win^._begx
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getmaxyx(win: PWINDOW; var y,x: Smallint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._maxy+1; x := win^._maxx+1
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getparyx(win: PWINDOW; var y,x: Smallint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._pary; x :=win^._parx
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getsyx(var y,x: Smallint);
|
|
begin
|
|
{$IFNDEF USE_FPC_BYTEBOOL}
|
|
if newscr^._leaveok = NC_FPC_TRUE then
|
|
{$ELSE USE_FPC_BYTEBOOL}
|
|
if newscr^._leaveok then
|
|
{$ENDIF USE_FPC_BYTEBOOL}
|
|
begin
|
|
y := -1; x := -1
|
|
end
|
|
else
|
|
begin
|
|
y := newscr^._cury; x := newscr^._curx
|
|
end
|
|
end;
|
|
|
|
procedure getyx(win: PWINDOW; var y,x: Longint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._cury; x := win^._curx
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getbegyx(win: PWINDOW; var y,x: Longint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._begy; x := win^._begx
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getmaxyx(win: PWINDOW; var y,x: Longint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._maxy+1; x := win^._maxx+1
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getparyx(win: PWINDOW; var y,x: Longint);
|
|
begin
|
|
if win<>nil then
|
|
begin
|
|
y := win^._pary; x :=win^._parx
|
|
end
|
|
else
|
|
begin
|
|
y := ERR; x := ERR
|
|
end
|
|
end;
|
|
|
|
procedure getsyx(var y,x: Longint);
|
|
begin
|
|
{$IFNDEF USE_FPC_BYTEBOOL}
|
|
if newscr^._leaveok = NC_FPC_TRUE then
|
|
{$ELSE USE_FPC_BYTEBOOL}
|
|
if newscr^._leaveok then
|
|
{$ENDIF USE_FPC_BYTEBOOL}
|
|
begin
|
|
y := -1; x := -1
|
|
end
|
|
else
|
|
begin
|
|
y := newscr^._cury; x := newscr^._curx
|
|
end
|
|
end;
|
|
|
|
procedure setsyx(y,x: Smallint);
|
|
begin
|
|
(*
|
|
C macros:
|
|
#define setsyx(y,x) do { if((y)==-1 && (x)==-1) newscr->_leaveok=TRUE; \
|
|
else {newscr->_leaveok=FALSE;wmove(newscr,(y),(x));} \
|
|
} while(0)
|
|
*)
|
|
if (x>=0) and (y >=0) AND (x<=newscr^._maxx) AND (y<=newscr^._maxy) then
|
|
begin
|
|
newscr^._curx := x;
|
|
newscr^._cury := y;
|
|
newscr^._flags := newscr^._flags AND not _WRAPPED;
|
|
newscr^._flags := newscr^._flags OR _HASMOVED;
|
|
newscr^._leaveok := NC_FPC_FALSE;
|
|
end
|
|
else if (x OR y = -1) then
|
|
newscr^._leaveok := NC_FPC_TRUE
|
|
|
|
//stdscr^._cury := y; //fpc ncurses original
|
|
//stdscr^._curx := x;
|
|
end;
|
|
|
|
function getattrs(win: PWINDOW): attr_t;
|
|
begin
|
|
if win<>nil then
|
|
getattrs:=win^._attrs
|
|
else
|
|
getattrs:=A_NORMAL;
|
|
end;
|
|
|
|
function getcurx(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getcurx:=win^._curx
|
|
else
|
|
getcurx:=ERR;
|
|
end;
|
|
|
|
function getcury(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getcury:=win^._cury
|
|
else
|
|
getcury:=ERR;
|
|
end;
|
|
|
|
function getbegx(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getbegx:=win^._begx
|
|
else
|
|
getbegx:=ERR;
|
|
end;
|
|
|
|
function getbegy(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getbegy:=win^._begy
|
|
else
|
|
getbegy:=ERR;
|
|
end;
|
|
|
|
function getmaxx(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getmaxx:=(win^._maxx) + 1
|
|
else
|
|
getmaxx:=ERR;
|
|
end;
|
|
|
|
function getmaxy(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getmaxy:=(win^._maxy) + 1
|
|
else
|
|
getmaxy:=ERR;
|
|
end;
|
|
|
|
function getparx(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getparx:=win^._parx
|
|
else
|
|
getparx:=ERR;
|
|
end;
|
|
|
|
function getpary(win: PWINDOW): Smallint;
|
|
begin
|
|
if win<>nil then
|
|
getpary:=win^._pary
|
|
else
|
|
getpary:=ERR;
|
|
end;
|
|
|
|
function wstandout(win: PWINDOW): Longint;
|
|
begin
|
|
wstandout:=wattrset(win,A_STANDOUT);
|
|
end;
|
|
|
|
function wstandend(win: PWINDOW): Longint;
|
|
begin
|
|
wstandend:=wattrset(win,A_NORMAL);
|
|
end;
|
|
|
|
function wattr_set(win: PWINDOW; attrs: attr_t; pair: Smallint; opts: Pointer): Longint;
|
|
begin
|
|
{ The parameter opts is reserved for future use, applications must supply a null pointer. }
|
|
{
|
|
C macros
|
|
#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
|
|
}
|
|
win^._attrs := (attrs AND not A_COLOR) OR COLOR_PAIR(pair);
|
|
wattr_set := OK
|
|
end;
|
|
|
|
function wattr_get(win:PWINDOW; attrs:Pattr_t; pair:PSmallint; opts:Pointer):longint;
|
|
begin
|
|
{
|
|
C macros
|
|
#define wattr_get(win,a,p,opts) ((void)((a) != 0 && (*(a) = (win)->_attrs)), \
|
|
(void)((p) != 0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \
|
|
OK)
|
|
}
|
|
attrs^ := win^._attrs;
|
|
pair^ := PAIR_NUMBER(win^._attrs);
|
|
wattr_get := OK
|
|
end;
|
|
|
|
function wattron(win:PWINDOW; attrs: attr_t): Longint;
|
|
begin
|
|
wattron:=wattr_on(win, attrs, nil);
|
|
end;
|
|
|
|
function wattroff(win:PWINDOW; attrs: attr_t): longint;
|
|
begin
|
|
wattroff:=wattr_off(win, attrs, nil);
|
|
end;
|
|
|
|
function wattrset(win: PWINDOW; attrs: attr_t): longint;
|
|
begin
|
|
win^._attrs := attrs;
|
|
wattrset := OK
|
|
end;
|
|
|
|
function scroll(win: PWINDOW): longint;
|
|
begin
|
|
scroll:=wscrl(win,1);
|
|
end;
|
|
|
|
function touchwin(win: PWINDOW): longint;
|
|
begin
|
|
touchwin:=wtouchln(win,0,getmaxy(win),1);
|
|
end;
|
|
|
|
function touchline(win: PWINDOW;s,c: longint): longint;
|
|
begin
|
|
touchline:=wtouchln(win,s,c,1);
|
|
end;
|
|
|
|
function untouchwin(win: PWINDOW): longint;
|
|
begin
|
|
untouchwin:=wtouchln(win,0,getmaxy(win),0);
|
|
end;
|
|
|
|
function box(win:PWINDOW; v,h :chtype):Longint;
|
|
begin
|
|
box:=wborder(win,v,v,h,h,0,0,0,0);
|
|
end;
|
|
|
|
function border(ls,rs,ts,bs,tl,tr,bl,br: chtype): longint;
|
|
begin
|
|
border:=wborder(stdscr,ls,rs,ts,bs,tl,tr,bl,br);
|
|
end;
|
|
|
|
function hline(ch:chtype; n:longint): longint;
|
|
begin
|
|
hline:=whline(stdscr,ch,n);
|
|
end;
|
|
|
|
function vline(ch:chtype; n:longint): longint;
|
|
begin
|
|
vline:=wvline(stdscr,ch,n);
|
|
end;
|
|
|
|
|
|
function winstr(win: PWINDOW;s: PAnsiChar): longint;
|
|
begin
|
|
winstr:=winnstr(win,s,-(1));
|
|
end;
|
|
|
|
function winchstr(win: PWINDOW; chstr: pchtype): longint;
|
|
begin
|
|
winchstr:=winchnstr(win,chstr,-(1));
|
|
end;
|
|
|
|
function winsstr(win: PWINDOW;s: PAnsiChar): longint;
|
|
begin
|
|
winsstr:=winsnstr(win,s,-(1));
|
|
end;
|
|
|
|
function redrawwin(win: PWINDOW): longint;
|
|
begin
|
|
redrawwin:=wredrawln(win,0,(win^._maxy)+1);
|
|
end;
|
|
|
|
function waddstr(win: PWINDOW;st: PAnsiChar): longint;
|
|
begin
|
|
waddstr:=waddnstr(win,st,-(1));
|
|
end;
|
|
|
|
function waddchstr(win: PWINDOW; chstr: pchtype): longint;
|
|
begin
|
|
waddchstr:=waddchnstr(win,chstr,-(1));
|
|
end;
|
|
|
|
{
|
|
pseudo functions for standard screen
|
|
}
|
|
function addch(ch: chtype): longint;
|
|
begin
|
|
addch:=waddch(stdscr,ch);
|
|
end;
|
|
|
|
function addchnstr(chstr: pchtype; n: longint): longint;
|
|
begin
|
|
addchnstr:=waddchnstr(stdscr,chstr,n);
|
|
end;
|
|
|
|
function addchstr(chstr: pchtype): longint;
|
|
begin
|
|
addchstr:=waddchstr(stdscr,chstr);
|
|
end;
|
|
|
|
function addnstr(str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
addnstr:=waddnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function addstr(str: PAnsiChar): longint;
|
|
begin
|
|
addstr:=waddnstr(stdscr,str,-(1));
|
|
end;
|
|
|
|
function attroff(attrs: attr_t): longint;
|
|
begin
|
|
attroff:=wattroff(stdscr,attrs);
|
|
end;
|
|
|
|
function attron(attrs: attr_t): longint;
|
|
begin
|
|
attron:=wattron(stdscr,attrs);
|
|
end;
|
|
|
|
function attrset(attrs: attr_t): longint;
|
|
begin
|
|
//attrset:=wattrset(stdscr,attrs);
|
|
stdscr^._attrs := attrs;
|
|
attrset := OK
|
|
end;
|
|
|
|
function bkgd(ch: chtype): longint;
|
|
begin
|
|
bkgd:=wbkgd(stdscr,ch);
|
|
end;
|
|
|
|
procedure bkgdset(ch: chtype);
|
|
begin
|
|
wbkgdset(stdscr,ch);
|
|
end;
|
|
|
|
function clear: longint;
|
|
begin
|
|
clear:=wclear(stdscr);
|
|
end;
|
|
|
|
function clrtobot: longint;
|
|
begin
|
|
clrtobot:=wclrtobot(stdscr);
|
|
end;
|
|
|
|
function clrtoeol: longint;
|
|
begin
|
|
clrtoeol:=wclrtoeol(stdscr);
|
|
end;
|
|
|
|
function delch: longint;
|
|
begin
|
|
delch:=wdelch(stdscr);
|
|
end;
|
|
|
|
function deleteln: longint;
|
|
begin
|
|
deleteln:=winsdelln(stdscr,-(1));
|
|
end;
|
|
|
|
function echochar(ch: chtype): longint;
|
|
begin
|
|
echochar:=wechochar(stdscr,ch);
|
|
end;
|
|
|
|
function erase: longint;
|
|
begin
|
|
erase:=werase(stdscr);
|
|
end;
|
|
|
|
function getch: longint;
|
|
begin
|
|
getch:=wgetch(stdscr);
|
|
end;
|
|
|
|
function getstr(str: PAnsiChar): longint;
|
|
begin
|
|
getstr:=wgetstr(stdscr,str);
|
|
end;
|
|
|
|
function inch: chtype;
|
|
begin
|
|
inch:=winch(stdscr);
|
|
end;
|
|
|
|
function inchnstr(chstr: pchtype;n: longint): longint;
|
|
begin
|
|
inchnstr:=winchnstr(stdscr,chstr ,n);
|
|
end;
|
|
|
|
function inchstr(chstr: pchtype): longint;
|
|
begin
|
|
inchstr:=winchstr(stdscr,chstr);
|
|
end;
|
|
|
|
function innstr(str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
innstr:=winnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function insch(ch: chtype): longint;
|
|
begin
|
|
insch:=winsch(stdscr,ch);
|
|
end;
|
|
|
|
function insdelln(n: longint): longint;
|
|
begin
|
|
insdelln:=winsdelln(stdscr,n);
|
|
end;
|
|
|
|
function insertln: longint;
|
|
begin
|
|
insertln:=winsdelln(stdscr,1);
|
|
end;
|
|
|
|
function insnstr(str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
insnstr:=winsnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function insstr(str: PAnsiChar): longint;
|
|
begin
|
|
insstr:=winsstr(stdscr,str);
|
|
end;
|
|
|
|
function instr(str: PAnsiChar): longint;
|
|
begin
|
|
instr:=winstr(stdscr,str);
|
|
end;
|
|
|
|
function move(y,x: Smallint): longint;
|
|
begin
|
|
if (x OR y >=0)AND(x<=stdscr^._maxx)AND(y<=stdscr^._maxy) then
|
|
begin
|
|
stdscr^._curx := x;
|
|
stdscr^._cury := y;
|
|
stdscr^._flags := stdscr^._flags AND not _WRAPPED;
|
|
stdscr^._flags := stdscr^._flags OR _HASMOVED;
|
|
move := OK
|
|
end
|
|
else
|
|
move := ERR
|
|
end;
|
|
|
|
function refresh: longint;
|
|
begin
|
|
refresh:=wrefresh(stdscr);
|
|
end;
|
|
|
|
function scrl(n: longint): longint;
|
|
begin
|
|
scrl:=wscrl(stdscr,n);
|
|
end;
|
|
|
|
function setscrreg(t,b: longint): longint;
|
|
begin
|
|
setscrreg:=wsetscrreg(stdscr,t,b);
|
|
end;
|
|
|
|
function standend: longint;
|
|
begin
|
|
standend:=wstandend(stdscr);
|
|
end;
|
|
|
|
function standout: longint;
|
|
begin
|
|
standout:=wstandout(stdscr);
|
|
end;
|
|
|
|
procedure timeout(delay: longint);
|
|
begin
|
|
wtimeout(stdscr,delay);
|
|
end;
|
|
|
|
function wdeleteln(win: PWINDOW): longint;
|
|
begin
|
|
wdeleteln:=winsdelln(win,-(1));
|
|
end;
|
|
|
|
function winsertln(win: PWINDOW): longint;
|
|
begin
|
|
winsertln:=winsdelln(win,1);
|
|
end;
|
|
|
|
{
|
|
mv functions
|
|
}
|
|
function mvwaddch(win: PWINDOW;y,x: Smallint; ch: chtype): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddch := ERR
|
|
else
|
|
mvwaddch := waddch(win,ch)
|
|
end;
|
|
|
|
function mvwaddchnstr(win: PWINDOW;y,x: Smallint;chstr: pchtype;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddchnstr := ERR
|
|
else
|
|
mvwaddchnstr := waddchnstr(win,chstr,n);
|
|
end;
|
|
|
|
function mvwaddchstr(win: PWINDOW;y,x: Smallint;chstr: pchtype): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddchstr := ERR
|
|
else
|
|
mvwaddchstr := waddchnstr(win,chstr,-(1))
|
|
end;
|
|
|
|
function mvwaddnstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddnstr := ERR
|
|
else
|
|
mvwaddnstr := waddnstr(win,str,n);
|
|
end;
|
|
|
|
function mvwaddstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddstr := ERR
|
|
else
|
|
mvwaddstr := waddnstr(win,str,-(1));
|
|
end;
|
|
|
|
function mvwdelch(win: PWINDOW;y,x: Smallint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwdelch := ERR
|
|
else
|
|
mvwdelch :=wdelch(win);
|
|
end;
|
|
|
|
function mvwchgat(win: PWINDOW;y, x: Smallint; n: Longint;attr: attr_t;
|
|
color: Smallint; opts: Pointer): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwchgat := ERR
|
|
else
|
|
mvwchgat := wchgat(win,n,attr,color,opts);
|
|
end;
|
|
|
|
function mvwgetch(win: PWINDOW;y,x: Smallint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwgetch := ERR
|
|
else
|
|
mvwgetch := wgetch(win);
|
|
end;
|
|
|
|
function mvwgetnstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwgetnstr := ERR
|
|
else
|
|
mvwgetnstr := wgetnstr(win,str,n);
|
|
end;
|
|
|
|
function mvwgetstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwgetstr := ERR
|
|
else
|
|
mvwgetstr := wgetstr(win,str);
|
|
end;
|
|
|
|
function mvwhline(win: PWINDOW;y,x: Smallint;ch: chtype;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwhline := ERR
|
|
else
|
|
mvwhline := whline(win,ch,n);
|
|
end;
|
|
|
|
function mvwinch(win: PWINDOW;y,x: Smallint): chtype;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinch := chtype(ERR)
|
|
else
|
|
mvwinch := winch(win);
|
|
end;
|
|
|
|
function mvwinchnstr(win: PWINDOW;y,x: Smallint;chstr: pchtype; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinchnstr := ERR
|
|
else
|
|
mvwinchnstr := winchnstr(win,chstr,n);
|
|
end;
|
|
|
|
function mvwinchstr(win: PWINDOW;y,x: Smallint;chstr: pchtype): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinchstr := ERR
|
|
else
|
|
mvwinchstr := winchnstr(win,chstr,-(1));
|
|
end;
|
|
|
|
function mvwinnstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinnstr := ERR
|
|
else
|
|
mvwinnstr := winnstr(win,str,n);
|
|
end;
|
|
|
|
function mvwinsch(win: PWINDOW;y,x: Smallint;ch: chtype): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinsch := ERR
|
|
else
|
|
mvwinsch := winsch(win,ch);
|
|
end;
|
|
|
|
function mvwinsnstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinsnstr := ERR
|
|
else
|
|
mvwinsnstr := winsnstr(win,str,n);
|
|
end;
|
|
|
|
function mvwinsstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinsstr := ERR
|
|
else
|
|
mvwinsstr := winsnstr(win,str,-(1));
|
|
end;
|
|
|
|
function mvwinstr(win: PWINDOW;y,x: Smallint;str: PAnsiChar): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinstr := ERR
|
|
else
|
|
mvwinstr := winnstr(win,str,-(1));
|
|
end;
|
|
|
|
function mvwvline(win: PWINDOW;y,x: Smallint;ch: chtype;n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwvline := ERR
|
|
else
|
|
mvwvline := wvline(win,ch,n);
|
|
end;
|
|
|
|
function mvaddch(y,x: Smallint; ch: chtype): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddch := ERR
|
|
else
|
|
mvaddch := waddch(stdscr,ch)
|
|
end;
|
|
|
|
function mvaddchnstr(y,x: Smallint; chstr: pchtype;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddchnstr := ERR
|
|
else
|
|
mvaddchnstr := waddchnstr(stdscr,chstr,n);
|
|
end;
|
|
|
|
function mvaddchstr(y,x: Smallint; chstr: pchtype): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddchstr := ERR
|
|
else
|
|
mvaddchstr := waddchnstr(stdscr,chstr,-(1));
|
|
end;
|
|
|
|
function mvaddnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddnstr := ERR
|
|
else
|
|
mvaddnstr := waddnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function mvaddstr(y,x: Smallint; str: PAnsiChar): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddstr := ERR
|
|
else
|
|
mvaddstr := waddnstr(stdscr,str,-(1));
|
|
end;
|
|
|
|
function mvdelch(y,x: Smallint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvdelch := ERR
|
|
else
|
|
mvdelch := wdelch(stdscr);
|
|
end;
|
|
|
|
function mvgetch(y,x: Smallint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvgetch := ERR
|
|
else
|
|
mvgetch := wgetch(stdscr);
|
|
end;
|
|
|
|
function mvgetnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvgetnstr := ERR
|
|
else
|
|
mvgetnstr := wgetnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function mvgetstr(y,x: Smallint; str: PAnsiChar): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvgetstr := ERR
|
|
else
|
|
mvgetstr := wgetnstr(stdscr,str,-(1));
|
|
end;
|
|
|
|
function mvhline(y,x: Smallint;ch: chtype;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvhline := ERR
|
|
else
|
|
mvhline := whline(stdscr,ch,n);
|
|
end;
|
|
|
|
function mvinch(y,x: Smallint): chtype;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinch := chtype(ERR)
|
|
else
|
|
mvinch := winch(stdscr);
|
|
end;
|
|
|
|
function mvinchnstr(y,x: Smallint; chstr: pchtype;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinchnstr := ERR
|
|
else
|
|
mvinchnstr := winchnstr(stdscr,chstr,n);
|
|
end;
|
|
|
|
function mvinchstr(y,x: Smallint; chstr: pchtype): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinchstr := ERR
|
|
else
|
|
mvinchstr := winchnstr(stdscr,chstr,-(1));
|
|
end;
|
|
|
|
function mvinnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinnstr := ERR
|
|
else
|
|
mvinnstr := winnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function mvinsch(y,x: Smallint;ch: chtype): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinsch := ERR
|
|
else
|
|
mvinsch := winsch(stdscr,ch);
|
|
end;
|
|
|
|
function mvinsnstr(y,x: Smallint; str: PAnsiChar;n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinsnstr := ERR
|
|
else
|
|
mvinsnstr := winsnstr(stdscr,str,n);
|
|
end;
|
|
|
|
function mvinsstr(y,x: Smallint; str: PAnsiChar): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinsstr := ERR
|
|
else
|
|
mvinsstr := winsstr(stdscr,str);
|
|
end;
|
|
|
|
function mvinstr(y,x: Smallint; str: PAnsiChar): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinstr := ERR
|
|
else
|
|
mvinstr := winstr(stdscr,str);
|
|
end;
|
|
|
|
function mvvline(y,x: Smallint; ch:chtype; n:longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvvline := ERR
|
|
else
|
|
mvvline := wvline(stdscr,ch,n);
|
|
end;
|
|
|
|
function attr_get(attrs:Pattr_t; pair:PSmallint; opts:Pointer): longint;
|
|
begin
|
|
attr_get := wattr_get(stdscr,attrs,pair,opts);
|
|
end;
|
|
|
|
function attr_off(attrs:attr_t; opts:Pointer): longint;
|
|
begin
|
|
attr_off := wattr_off(stdscr,attrs,opts);
|
|
end;
|
|
|
|
function attr_on(attrs:attr_t; opts:Pointer): longint;
|
|
begin
|
|
attr_on := wattr_on(stdscr,attrs,opts);
|
|
end;
|
|
|
|
function attr_set(attrs:attr_t; pair:Smallint; opts:Pointer): longint;
|
|
begin
|
|
attr_set := wattr_set(stdscr,attrs,pair,opts);
|
|
end;
|
|
|
|
function chgat(n: Longint;attr: attr_t;color: Smallint; opts: Pointer): longint;
|
|
begin
|
|
chgat := wchgat(stdscr,n,attr,color,opts);
|
|
end;
|
|
|
|
function mvchgat(y, x: Smallint; n: Longint;attr: attr_t;color: Smallint; opts: Pointer):Longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvchgat := ERR
|
|
else
|
|
mvchgat := wchgat(stdscr,n,attr,color,opts);
|
|
end;
|
|
|
|
function getbkgd(win: PWINDOW): chtype;
|
|
begin
|
|
getbkgd := win^._bkgd;
|
|
end;
|
|
|
|
function slk_attr_off(attrs: attr_t; opts: Pointer) : longint;
|
|
begin
|
|
slk_attr_off := slk_attroff(attrs);
|
|
end;
|
|
|
|
function slk_attr_on(attrs: attr_t; opts: Pointer): longint;
|
|
begin
|
|
slk_attr_on := slk_attron(attrs);
|
|
end;
|
|
|
|
|
|
|
|
|
|
function KEY_F(n : Byte) : chtype;
|
|
begin
|
|
KEY_F := KEY_F0 + n;
|
|
end;
|
|
|
|
|
|
|
|
function NCURSES_WACS(c: chtype): cchar_t;
|
|
begin
|
|
NCURSES_WACS := _nc_wacs[c];
|
|
end;
|
|
|
|
function WACS_BSSB: cchar_t;
|
|
begin
|
|
WACS_BSSB := _nc_wacs[chtype('l')];
|
|
end;
|
|
|
|
function WACS_SSBB: cchar_t;
|
|
begin
|
|
WACS_SSBB:= _nc_wacs[chtype('m')];
|
|
end;
|
|
|
|
function WACS_BBSS: cchar_t;
|
|
begin
|
|
WACS_BBSS:= _nc_wacs[chtype('k')];
|
|
end;
|
|
|
|
function WACS_SBBS: cchar_t;
|
|
begin
|
|
WACS_SBBS:= _nc_wacs[chtype('j')];
|
|
end;
|
|
|
|
function WACS_SBSS: cchar_t;
|
|
begin
|
|
WACS_SBSS:= _nc_wacs[chtype('u')];
|
|
end;
|
|
|
|
function WACS_SSSB: cchar_t;
|
|
begin
|
|
WACS_SSSB:= _nc_wacs[chtype('t')];
|
|
end;
|
|
|
|
function WACS_SSBS: cchar_t;
|
|
begin
|
|
WACS_SSBS:= _nc_wacs[chtype('v')];
|
|
end;
|
|
|
|
function WACS_BSSS: cchar_t;
|
|
begin
|
|
WACS_BSSS:= _nc_wacs[chtype('w')];
|
|
end;
|
|
|
|
function WACS_BSBS: cchar_t;
|
|
begin
|
|
WACS_BSBS:= _nc_wacs[chtype('q')];
|
|
end;
|
|
|
|
function WACS_SBSB: cchar_t;
|
|
begin
|
|
WACS_SBSB:= _nc_wacs[chtype('x')];
|
|
end;
|
|
|
|
function WACS_SSSS: cchar_t;
|
|
begin
|
|
WACS_SSSS:= _nc_wacs[chtype('n')];
|
|
end;
|
|
|
|
function WACS_S1: cchar_t;
|
|
begin
|
|
WACS_S1:= _nc_wacs[chtype('o')];
|
|
end;
|
|
|
|
function WACS_S9: cchar_t;
|
|
begin
|
|
WACS_S9:= _nc_wacs[chtype('s')];
|
|
end;
|
|
|
|
function WACS_DIAMOND: cchar_t;
|
|
begin
|
|
WACS_DIAMOND:= _nc_wacs[chtype('`')];
|
|
end;
|
|
|
|
function WACS_CKBOARD: cchar_t;
|
|
begin
|
|
WACS_CKBOARD:= _nc_wacs[chtype('a')];
|
|
end;
|
|
|
|
function WACS_DEGREE: cchar_t;
|
|
begin
|
|
WACS_DEGREE:= _nc_wacs[chtype('f')];
|
|
end;
|
|
|
|
function WACS_PLMINUS: cchar_t;
|
|
begin
|
|
WACS_PLMINUS:= _nc_wacs[chtype('g')];
|
|
end;
|
|
|
|
function WACS_BULLET: cchar_t;
|
|
begin
|
|
WACS_BULLET:= _nc_wacs[chtype('~')];
|
|
end;
|
|
|
|
function WACS_LARROW: cchar_t;
|
|
begin
|
|
WACS_LARROW:= _nc_wacs[chtype(',')];
|
|
end;
|
|
|
|
function WACS_RARROW: cchar_t;
|
|
begin
|
|
WACS_RARROW:= _nc_wacs[chtype('+')];
|
|
end;
|
|
|
|
function WACS_DARROW: cchar_t;
|
|
begin
|
|
WACS_DARROW:= _nc_wacs[chtype('.')];
|
|
end;
|
|
|
|
function WACS_UARROW: cchar_t;
|
|
begin
|
|
WACS_UARROW:= _nc_wacs[chtype('-')];
|
|
end;
|
|
|
|
function WACS_BOARD: cchar_t;
|
|
begin
|
|
WACS_BOARD:= _nc_wacs[chtype('h')];
|
|
end;
|
|
|
|
function WACS_LANTERN: cchar_t;
|
|
begin
|
|
WACS_LANTERN:= _nc_wacs[chtype('i')];
|
|
end;
|
|
|
|
function WACS_BLOCK: cchar_t;
|
|
begin
|
|
WACS_BLOCK:= _nc_wacs[chtype('0')];
|
|
end;
|
|
|
|
function WACS_S3: cchar_t;
|
|
begin
|
|
WACS_S3:= _nc_wacs[chtype('p')];
|
|
end;
|
|
|
|
function WACS_S7: cchar_t;
|
|
begin
|
|
WACS_S7:= _nc_wacs[chtype('r')];
|
|
end;
|
|
|
|
function WACS_LEQUAL: cchar_t;
|
|
begin
|
|
WACS_LEQUAL:= _nc_wacs[chtype('y')];
|
|
end;
|
|
|
|
function WACS_GEQUAL: cchar_t;
|
|
begin
|
|
WACS_GEQUAL:= _nc_wacs[chtype('z')];
|
|
end;
|
|
|
|
function WACS_PI: cchar_t;
|
|
begin
|
|
WACS_PI:= _nc_wacs[chtype('{')];
|
|
end;
|
|
|
|
function WACS_NEQUAL: cchar_t;
|
|
begin
|
|
WACS_NEQUAL:= _nc_wacs[chtype('|')];
|
|
end;
|
|
|
|
function WACS_STERLING: cchar_t;
|
|
begin
|
|
WACS_STERLING:= _nc_wacs[chtype('}')];
|
|
end;
|
|
|
|
|
|
|
|
|
|
function add_wch(wch: pcchar_t): longint;
|
|
begin
|
|
add_wch:=wadd_wch(stdscr,wch);
|
|
end;
|
|
|
|
function add_wchnstr(wchstr: pcchar_t; n: longint): longint;
|
|
begin
|
|
add_wchnstr:=wadd_wchnstr(stdscr,wchstr,n);
|
|
end;
|
|
|
|
function add_wchstr(wchstr: pcchar_t): longint;
|
|
begin
|
|
add_wchstr:=wadd_wchstr(stdscr,wchstr);
|
|
end;
|
|
|
|
function addnwstr(wchstr: pwchar_t; n : longint) : longint;
|
|
begin
|
|
addnwstr:=waddnwstr(stdscr,wchstr,n);
|
|
end;
|
|
|
|
function addwstr(wchstr: pwchar_t): longint;
|
|
begin
|
|
addwstr:=waddnwstr(stdscr,wchstr,-(1));
|
|
end;
|
|
|
|
function bkgrnd(wch: pcchar_t): longint;
|
|
begin
|
|
bkgrnd:=wbkgrnd(stdscr,wch);
|
|
end;
|
|
|
|
procedure bkgrndset(wch: pcchar_t);
|
|
begin
|
|
wbkgrndset(stdscr,wch);
|
|
end;
|
|
|
|
function border_set(ls,rs,ts,bs,tl,tr,bl,br: pcchar_t) : longint;
|
|
begin
|
|
border_set:=wborder_set(stdscr,ls,rs,ts,bs,tl,tr,bl,br);
|
|
end;
|
|
|
|
function box_set(win: PWINDOW; verch,horch: pcchar_t) : longint;
|
|
begin
|
|
//box_set:=wborder_set(win,verch,verch,horch,horch,0,0,0,0);
|
|
box_set:=wborder_set(win,verch,verch,horch,horch,nil,nil,nil,nil);
|
|
end;
|
|
|
|
function echo_wchar(wch: Pcchar_t): longint;
|
|
begin
|
|
echo_wchar:=wecho_wchar(stdscr,wch);
|
|
end;
|
|
|
|
function get_wch(wch: Plongint): longint;
|
|
begin
|
|
get_wch:=wget_wch(stdscr,wch);
|
|
end;
|
|
|
|
function get_wstr(wstr: PLongint): longint;
|
|
begin
|
|
get_wstr:=wget_wstr(stdscr,wstr);
|
|
end;
|
|
|
|
|
|
|
|
|
|
function getbkgrnd(wch: pcchar_t): longint;
|
|
begin
|
|
getbkgrnd := wgetbkgrnd(stdscr,wch);
|
|
end;
|
|
|
|
function getn_wstr(wstr: PLongint; n: longint): longint;
|
|
begin
|
|
getn_wstr := wgetn_wstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
function hline_set(wch: pcchar_t; n: longint): longint;
|
|
begin
|
|
hline_set := whline_set(stdscr,wch,n);
|
|
end;
|
|
|
|
function in_wch(wch: pcchar_t) : longint;
|
|
begin
|
|
in_wch := win_wch(stdscr,wch);
|
|
end;
|
|
|
|
function in_wchnstr(wchstr: pcchar_t; n: longint): longint;
|
|
begin
|
|
in_wchnstr := win_wchnstr(stdscr,wchstr,n);
|
|
end;
|
|
|
|
function in_wchstr(wchstr: pcchar_t) : longint;
|
|
begin
|
|
in_wchstr := win_wchstr(stdscr,wchstr);
|
|
end;
|
|
|
|
function innwstr(wstr: pwchar_t; n : longint) : longint;
|
|
begin
|
|
innwstr:=winnwstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
function ins_nwstr(wstr: pwchar_t; n: longint): longint;
|
|
begin
|
|
ins_nwstr:=wins_nwstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
function ins_wch(wch: pcchar_t): longint;
|
|
begin
|
|
ins_wch:=wins_wch(stdscr,wch);
|
|
end;
|
|
|
|
function ins_wstr(wstr: pwchar_t): longint;
|
|
begin
|
|
ins_wstr:=wins_wstr(stdscr,wstr);
|
|
end;
|
|
|
|
function inwstr(wstr: pwchar_t): longint;
|
|
begin
|
|
inwstr:=winwstr(stdscr,wstr);
|
|
end;
|
|
|
|
function vline_set(wch: pcchar_t; n: longint): longint;
|
|
begin
|
|
vline_set:=wvline_set(stdscr,wch,n);
|
|
end;
|
|
|
|
function wadd_wchstr(win: PWINDOW; wchstr: pcchar_t): longint;
|
|
begin
|
|
wadd_wchstr:=wadd_wchnstr(win,wchstr,-(1));
|
|
end;
|
|
|
|
function waddwstr(win: PWINDOW; wstr: pwchar_t): longint;
|
|
begin
|
|
waddwstr:=waddnwstr(win,wstr,-(1));
|
|
end;
|
|
|
|
function wget_wstr(win: PWINDOW; wstr: PLongint): longint;
|
|
begin
|
|
wget_wstr:=wgetn_wstr(win,wstr,-(1));
|
|
end;
|
|
|
|
function win_wchstr(win: PWINDOW; wchstr: pcchar_t): longint;
|
|
begin
|
|
win_wchstr:=win_wchnstr(win,wchstr,-(1));
|
|
end;
|
|
|
|
function wins_wstr(win: PWINDOW; wstr: pwchar_t) : longint;
|
|
begin
|
|
wins_wstr:=wins_nwstr(win,wstr,-(1));
|
|
end;
|
|
|
|
function mvadd_wch(y,x: Smallint; wch: pcchar_t): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvadd_wch := ERR
|
|
else
|
|
mvadd_wch := wadd_wch(stdscr,wch);
|
|
end;
|
|
|
|
function mvadd_wchnstr(y,x: Smallint; wchstr: pcchar_t; n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvadd_wchnstr := ERR
|
|
else
|
|
mvadd_wchnstr := wadd_wchnstr(stdscr,wchstr,n);
|
|
end;
|
|
|
|
function mvadd_wchstr(y,x: Smallint; wchstr: pcchar_t): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvadd_wchstr := ERR
|
|
else
|
|
mvadd_wchstr := wadd_wchnstr(stdscr,wchstr,-(1));
|
|
end;
|
|
|
|
function mvaddnwstr(y,x: Smallint; wstr: pwchar_t; n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddnwstr := ERR
|
|
else
|
|
mvaddnwstr := waddnwstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
function mvaddwstr(y,x: Smallint; wstr: pwchar_t) : longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvaddwstr := ERR
|
|
else
|
|
mvaddwstr := waddnwstr(stdscr,wstr,-(1));
|
|
end;
|
|
|
|
function mvget_wch(y,x: Smallint; wch: Plongint) : longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvget_wch := ERR
|
|
else
|
|
mvget_wch := wget_wch(stdscr,wch);
|
|
end;
|
|
|
|
|
|
function mvget_wstr(y,x: Smallint; wstr: Plongint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvget_wstr := ERR
|
|
else
|
|
mvget_wstr := wgetn_wstr(stdscr,wstr,-(1));
|
|
end;
|
|
|
|
function mvgetn_wstr(y,x: Smallint; wstr: Plongint; n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvgetn_wstr := ERR
|
|
else
|
|
mvgetn_wstr := wgetn_wstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
|
|
function mvhline_set(y,x: Smallint; wch: pcchar_t; n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvhline_set := ERR
|
|
else
|
|
mvhline_set := whline_set(stdscr,wch,n);
|
|
end;
|
|
|
|
function mvin_wch(y,x: Smallint; wch: pcchar_t) : longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvin_wch := ERR
|
|
else
|
|
mvin_wch := win_wch(stdscr,wch);
|
|
end;
|
|
|
|
function mvin_wchnstr(y,x: Smallint; wchstr: pcchar_t; n: longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvin_wchnstr := ERR
|
|
else
|
|
mvin_wchnstr := win_wchnstr(stdscr,wchstr,n);
|
|
end;
|
|
|
|
function mvin_wchstr(y,x: Smallint; wchstr: pcchar_t): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvin_wchstr := ERR
|
|
else
|
|
mvin_wchstr := win_wchnstr(stdscr,wchstr,-(1));
|
|
end;
|
|
|
|
function mvinnwstr(y,x: Smallint; wstr: pwchar_t; n : longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinnwstr := ERR
|
|
else
|
|
mvinnwstr := winnwstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
function mvins_nwstr(y,x: Smallint; wstr: pwchar_t; n : longint): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvins_nwstr := ERR
|
|
else
|
|
mvins_nwstr := wins_nwstr(stdscr,wstr,n);
|
|
end;
|
|
|
|
function mvins_wch(y,x: Smallint; wch: pcchar_t): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvins_wch := ERR
|
|
else
|
|
mvins_wch := wins_wch(stdscr,wch);
|
|
end;
|
|
|
|
function mvins_wstr(y,x: Smallint; wstr: pwchar_t): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvins_wstr := ERR
|
|
else
|
|
mvins_wstr := wins_nwstr(stdscr,wstr,-(1));
|
|
end;
|
|
|
|
function mvinwstr(y,x: Smallint; wstr: pwchar_t): longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvinwstr := ERR
|
|
else
|
|
mvinwstr := winwstr(stdscr,wstr);
|
|
end;
|
|
|
|
function mvvline_set(y,x: Smallint; wch: pcchar_t; n : longint) : longint;
|
|
begin
|
|
if move(y,x) = ERR then
|
|
mvvline_set := ERR
|
|
else
|
|
mvvline_set := wvline_set(stdscr,wch,n);
|
|
end;
|
|
|
|
function mvwadd_wch(win: PWINDOW; y,x: Smallint; wch: pcchar_t): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwadd_wch := ERR
|
|
else
|
|
mvwadd_wch := wadd_wch(win,wch);
|
|
end;
|
|
|
|
function mvwadd_wchnstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwadd_wchnstr := ERR
|
|
else
|
|
mvwadd_wchnstr := wadd_wchnstr(win,wchstr,n);
|
|
end;
|
|
|
|
function mvwadd_wchstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwadd_wchstr := ERR
|
|
else
|
|
mvwadd_wchstr := wadd_wchnstr(win,wchstr,-(1));
|
|
end;
|
|
|
|
function mvwaddnwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddnwstr := ERR
|
|
else
|
|
mvwaddnwstr := waddnwstr(win,wstr,n);
|
|
end;
|
|
|
|
function mvwaddwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwaddwstr := ERR
|
|
else
|
|
mvwaddwstr := waddnwstr(win,wstr,-(1));
|
|
end;
|
|
|
|
function mvwget_wch(win: PWINDOW; y,x: Smallint; wch: Plongint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwget_wch := ERR
|
|
else
|
|
mvwget_wch := wget_wch(win,wch);
|
|
end;
|
|
|
|
function mvwget_wstr(win: PWINDOW; y,x: Smallint; wstr: Plongint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwget_wstr := ERR
|
|
else
|
|
mvwget_wstr := wgetn_wstr(win,wstr,-(1));
|
|
end;
|
|
|
|
function mvwgetn_wstr(win: PWINDOW; y,x: Smallint; wstr: Plongint; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwgetn_wstr := ERR
|
|
else
|
|
mvwgetn_wstr := wgetn_wstr(win,wstr,n);
|
|
end;
|
|
|
|
function mvwhline_set(win: PWINDOW; y,x: Smallint; wch: pcchar_t; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwhline_set := ERR
|
|
else
|
|
mvwhline_set := whline_set(win,wch,n);
|
|
end;
|
|
|
|
function mvwin_wch(win: PWINDOW; y,x: Smallint; wch: pcchar_t): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwin_wch := ERR
|
|
else
|
|
mvwin_wch := win_wch(win,wch);
|
|
end;
|
|
|
|
function mvwin_wchnstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwin_wchnstr := ERR
|
|
else
|
|
mvwin_wchnstr := win_wchnstr(win,wchstr,n);
|
|
end;
|
|
|
|
function mvwin_wchstr(win: PWINDOW; y,x: Smallint; wchstr: pcchar_t): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwin_wchstr := ERR
|
|
else
|
|
mvwin_wchstr := win_wchstr(win,wchstr);
|
|
end;
|
|
|
|
function mvwinnwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t; n : longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinnwstr := ERR
|
|
else
|
|
mvwinnwstr := winnwstr(win,wstr,n);
|
|
end;
|
|
|
|
function mvwins_nwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t; n: longint): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwins_nwstr := ERR
|
|
else
|
|
mvwins_nwstr := wins_nwstr(win,wstr,n);
|
|
end;
|
|
|
|
function mvwins_wch(win: PWINDOW; y,x: Smallint; wch: pcchar_t): longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwins_wch := ERR
|
|
else
|
|
mvwins_wch := wins_wch(win,wch);
|
|
end;
|
|
|
|
function mvwins_wstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t) : longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwins_wstr := ERR
|
|
else
|
|
mvwins_wstr := wins_wstr(win,wstr);
|
|
end;
|
|
|
|
function mvwinwstr(win: PWINDOW; y,x: Smallint; wstr: pwchar_t) : longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwinwstr := ERR
|
|
else
|
|
mvwinwstr := winwstr(stdscr,wstr);
|
|
end;
|
|
|
|
function mvwvline_set(win: PWINDOW; y,x: Smallint; wch: pcchar_t; n: longint) : longint;
|
|
begin
|
|
if wmove(win,y,x) = ERR then
|
|
mvwvline_set := ERR
|
|
else
|
|
mvwvline_set := wvline_set(win,wch,n);
|
|
end;
|
|
|
|
|
|
function wmove(win: PWINDOW; y,x: Smallint): Longint;
|
|
begin
|
|
//if (win!=nil)AND(x>=0)AND(x<=win^._maxx)AND(y>=0)AND(y<=win^._maxy) then
|
|
if (x>=0) and ( y>=0)AND(x<=win^._maxx)AND(y<=win^._maxy) then
|
|
begin
|
|
win^._curx := x;
|
|
win^._cury := y;
|
|
win^._flags := win^._flags AND not _WRAPPED;
|
|
win^._flags := win^._flags OR _HASMOVED;
|
|
wmove := OK
|
|
end
|
|
else
|
|
wmove := ERR
|
|
end;
|
|
|
|
|
|
(* macros to extract single event-bits from masks *)
|
|
|
|
function BUTTON_RELEASE(e,x: longint): longint;
|
|
{ #define BUTTON_RELEASE(e, x) ((e) & (001 << (6 * ((x) - 1)))) }
|
|
begin
|
|
BUTTON_RELEASE:=e AND (001 shl (6*(x-1)));
|
|
end;
|
|
|
|
function BUTTON_PRESS(e,x: longint): longint;
|
|
{ #define BUTTON_PRESS(e, x) ((e) & (002 << (6 * ((x) - 1)))) }
|
|
begin
|
|
BUTTON_PRESS:=e AND (002 shl (6*(x-1)));
|
|
end;
|
|
|
|
function BUTTON_CLICK(e,x: longint): longint;
|
|
//#define BUTTON_CLICK(e, x) ((e) & (004 << (6 * ((x) - 1))))
|
|
begin
|
|
BUTTON_CLICK:=e AND (004 shl (6*(x-1)));
|
|
end;
|
|
|
|
function BUTTON_DOUBLE_CLICK(e,x: longint): longint;
|
|
//#define BUTTON_DOUBLE_CLICK(e, x) ((e) & (010 << (6 * ((x) - 1))))
|
|
begin
|
|
BUTTON_DOUBLE_CLICK:=e AND (8 shl (6*(x-1)));
|
|
end;
|
|
|
|
function BUTTON_TRIPLE_CLICK(e,x: longint): longint;
|
|
//#define BUTTON_TRIPLE_CLICK(e, x) ((e) & (020 << (6 * ((x) - 1))))
|
|
begin
|
|
BUTTON_TRIPLE_CLICK:=e AND (16 shl (6*(x-1)));
|
|
end;
|
|
|
|
function BUTTON_RESERVED_EVENT(e,x: longint): longint;
|
|
//#define BUTTON_RESERVED_EVENT(e, x) ((e) & (040 << (6 * ((x) - 1))))
|
|
begin
|
|
BUTTON_RESERVED_EVENT:=e AND (32 shl (6*(x-1)));
|
|
end;
|
|
|
|
|
|
function mouse_trafo(pY,pX: PLongint; to_screen: Bool): Bool;
|
|
begin
|
|
mouse_trafo:=wmouse_trafo(stdscr,pY,pX,to_screen);
|
|
end;
|
|
|
|
|
|
end.
|