ncurses.pp 46 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708
  1. {
  2. $Id$
  3. Copyright (c) 1998 by Michael Van Canneyt
  4. member of the Free Pascal development team
  5. Unit to access the ncurses library
  6. See the file COPYING.FPC included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. {$mode objfpc}
  13. {
  14. Many thanks to Ken Wright for his patches !
  15. }
  16. unit ncurses;
  17. interface
  18. {$packrecords C}
  19. {$ifdef OpenBSD} // openbsd curses=ncurses. Openbsd ocurses=old curses.
  20. {$linklib curses}
  21. {$else}
  22. {$linklib ncurses}
  23. {$endif}
  24. {$linklib c}
  25. { Manually Added types }
  26. Type
  27. Bool = byte;
  28. PINTEGER = ^Longint;
  29. PLongint = ^ longint;
  30. PFILE = pointer;
  31. const
  32. NCURSES_VERSION_MAJOR = 5;
  33. NCURSES_VERSION_MINOR = 0;
  34. NCURSES_VERSION_PATCH = 19991023;
  35. NCURSES_VERSION = '5.0';
  36. type
  37. chtype = longint;
  38. pchtype = pchar;
  39. const
  40. CXX_BUILTIN_BOOL = 1;
  41. type
  42. CXX_TYPE_OF_BOOL = char;
  43. Var
  44. COLORS : longint; cvar; external;
  45. COLOR_PAIRS : longint; cvar; external;
  46. const
  47. COLOR_BLACK = 0;
  48. COLOR_RED = 1;
  49. COLOR_GREEN = 2;
  50. COLOR_YELLOW = 3;
  51. COLOR_BLUE = 4;
  52. COLOR_MAGENTA = 5;
  53. COLOR_CYAN = 6;
  54. COLOR_WHITE = 7;
  55. Type
  56. tacs_map = array [char] of chtype;
  57. pacs_map = ^tacs_map;
  58. Var
  59. acs_map : tacs_map; cvar; external;
  60. function ACS_ULCORNER : chtype;
  61. function ACS_LLCORNER : chtype;
  62. function ACS_URCORNER : chtype;
  63. function ACS_LRCORNER : chtype;
  64. function ACS_LTEE : chtype;
  65. function ACS_RTEE : chtype;
  66. function ACS_BTEE : chtype;
  67. function ACS_TTEE : chtype;
  68. function ACS_HLINE : chtype;
  69. function ACS_VLINE : chtype;
  70. function ACS_PLUS : chtype;
  71. function ACS_S1 : chtype;
  72. function ACS_S9 : chtype;
  73. function ACS_DIAMOND : chtype;
  74. function ACS_CKBOARD : chtype;
  75. function ACS_DEGREE : chtype;
  76. function ACS_PLMINUS : chtype;
  77. function ACS_BULLET : chtype;
  78. function ACS_LARROW : chtype;
  79. function ACS_RARROW : chtype;
  80. function ACS_DARROW : chtype;
  81. function ACS_UARROW : chtype;
  82. function ACS_BOARD : chtype;
  83. function ACS_LANTERN : chtype;
  84. function ACS_BLOCK : chtype;
  85. function ACS_S3 : chtype;
  86. function ACS_S7 : chtype;
  87. function ACS_LEQUAL : chtype;
  88. function ACS_GEQUAL : chtype;
  89. function ACS_PI : chtype;
  90. function ACS_NEQUAL : chtype;
  91. function ACS_STERLING : chtype;
  92. {
  93. Line drawing ACS names are of the form ACS_trbl, where t is the top, r
  94. is the right, b is the bottom, and l is the left. t, r, b, and l might
  95. be B (blank), S (single), D (double), or T (thick). The subset defined
  96. here only uses B and S.
  97. }
  98. {
  99. #define ACS_BSSB ACS_ULCORNER
  100. #define ACS_SSBB ACS_LLCORNER
  101. #define ACS_BBSS ACS_URCORNER
  102. #define ACS_SBBS ACS_LRCORNER
  103. #define ACS_SBSS ACS_RTEE
  104. #define ACS_SSSB ACS_LTEE
  105. #define ACS_SSBS ACS_BTEE
  106. #define ACS_BSSS ACS_TTEE
  107. #define ACS_BSBS ACS_HLINE
  108. #define ACS_SBSB ACS_VLINE
  109. #define ACS_SSSS ACS_PLUS
  110. }
  111. Const
  112. ERR = -(1);
  113. OK = 0;
  114. _SUBWIN = $01;
  115. _ENDLINE = $02;
  116. _FULLWIN = $04;
  117. _SCROLLWIN = $08;
  118. _ISPAD = $10;
  119. _HASMOVED = $20;
  120. _WRAPPED = $40;
  121. {
  122. this value is used in the firstchar and lastchar fields to mark
  123. unchanged lines
  124. }
  125. _NOCHANGE = -(1);
  126. {
  127. this value is used in the oldindex field to mark lines created by insertions
  128. and scrolls.
  129. }
  130. _NEWINDEX = -(1);
  131. {
  132. typedef struct screen SCREEN;
  133. typedef struct _win_st WINDOW;
  134. }
  135. type
  136. attr_t = chtype;
  137. ldat = record
  138. text : ^chtype;
  139. firstchar : integer;
  140. lastchar : integer;
  141. oldindex : integer;
  142. end;
  143. _win_st = record
  144. _cury : integer;
  145. _curx : integer;
  146. _maxy : integer;
  147. _maxx : integer;
  148. _begy : integer;
  149. _begx : integer;
  150. _flags : integer;
  151. _attrs : attr_t;
  152. _bkgd : chtype;
  153. _notimeout : bool;
  154. _clear : bool;
  155. _leaveok : bool;
  156. _scroll : bool;
  157. _idlok : bool;
  158. _idcok : bool;
  159. _immed : bool;
  160. _sync : bool;
  161. _use_keypad : bool;
  162. _delay : longint;
  163. _line : ^ldat;
  164. _regtop : integer;
  165. _regbottom : integer;
  166. _parx : longint;
  167. _pary : longint;
  168. _parent : ^WINDOW;
  169. _pad : record
  170. _pad_y : integer;
  171. _pad_x : integer;
  172. _pad_top : integer;
  173. _pad_left : integer;
  174. _pad_bottom : integer;
  175. _pad_right : integer;
  176. end;
  177. _yoffset : integer;
  178. end;
  179. WINDOW = _win_st;
  180. PWINDOW = ^WINDOW;
  181. SCREEN=WINDOW;
  182. PSCREEN = PWINDOW;
  183. var
  184. stdscr : PWINDOW; cvar; external;
  185. curscr : PWINDOW; cvar; external;
  186. newscr : PWINDOW; cvar; external;
  187. LINES : longint; cvar; external;
  188. COLS : longint; cvar; external;
  189. TABSIZE : longint; cvar; external;
  190. ESCDELAY: longint; cvar; external;
  191. Function define_key(_para1:pchar; _para2:longint):longint; cdecl;external;
  192. Function keyok(_para1:longint; _para2:bool):longint; cdecl;external;
  193. Function resizeterm(_para1:longint; _para2:longint):longint; cdecl;external;
  194. Function use_default_colors:longint; cdecl;external;
  195. Function wresize(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;external;
  196. {
  197. extern char ttytype[];
  198. }
  199. Function baudrate:longint; cdecl;external;
  200. Function beep:longint; cdecl;external;
  201. Function can_change_color:bool; cdecl;external;
  202. Function cbreak:longint; cdecl;external;
  203. Function clearok(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  204. Function color_content(_para1:longint; _para2:plongint; _para3:plongint; _para4:plongint):longint; cdecl;external;
  205. Function copywin(_para1:pWINDOW; _para2:pWINDOW; _para3:longint; _para4:longint; _para5:longint;
  206. _para6:longint; _para7:longint; _para8:longint; _para9:longint):longint;cdecl;external;
  207. Function curs_set(_para1:longint):longint; cdecl;external;
  208. Function def_prog_mode:longint; cdecl;external;
  209. Function def_shell_mode:longint; cdecl;external;
  210. Function delay_output(_para1:longint):longint; cdecl;external;
  211. procedure delscreen(_para1:pSCREEN);cdecl;external;
  212. Function delwin(_para1:pWINDOW):longint; cdecl;external;
  213. Function doupdate:longint; cdecl;external;
  214. Function echo:longint; cdecl;external;
  215. Function endwin:longint; cdecl;external;
  216. Function erasechar:char; cdecl;external;
  217. procedure filter;cdecl;external;
  218. Function flash:longint; cdecl;external;
  219. Function flushinp:longint; cdecl;external;
  220. Function halfdelay(_para1:longint):longint; cdecl;external;
  221. Function has_colors:bool; cdecl;external;
  222. Function has_ic:longint; cdecl;external;
  223. Function has_il:longint; cdecl;external;
  224. procedure idcok(_para1:pWINDOW; _para2:bool);cdecl;external;
  225. Function idlok(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  226. procedure immedok(_para1:pWINDOW; _para2:bool);cdecl;external;
  227. Function init_color(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;external;
  228. Function init_pair(_para1:longint; _para2:longint; _para3:longint):longint; cdecl;external;
  229. Function intrflush(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  230. Function isendwin:longint; cdecl;external;
  231. Function is_linetouched(_para1:pWINDOW; _para2:longint):longint; cdecl;external;
  232. Function is_wintouched(_para1:pWINDOW):longint; cdecl;external;
  233. Function keypad(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  234. Function killchar:char; cdecl;external;
  235. Function leaveok(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  236. Function meta(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  237. Function mvcur(_para1:longint; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;external;
  238. Function mvderwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;external;
  239. function mvprintw(_para1:longint;_para2:longint;_para3:pchar;_para4:array of const):longint; cdecl;external;
  240. {
  241. extern int mvscanw(int,int,const char ,...)
  242. GCC_SCANFLIKE(3,4);
  243. }
  244. Function mvwin(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;external;
  245. Function mvwprintw(_para1:pWINDOW;_para2,_para3:longint;_para4:pchar;_para5:array of const):longint; cdecl;external;
  246. {
  247. extern int mvwprintw(WINDOW ,int,int,const char ,...)
  248. GCC_PRINTFLIKE(4,5);
  249. extern int mvwscanw(WINDOW ,int,int,const char ,...)
  250. GCC_SCANFLIKE(4,5);
  251. }
  252. Function napms(_para1:longint):longint; cdecl;external;
  253. Function nl:longint; cdecl;external;
  254. Function nocbreak:longint; cdecl;external;
  255. Function nodelay(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  256. Function noecho:longint; cdecl;external;
  257. Function nonl:longint; cdecl;external;
  258. Function noqiflush:longint; cdecl;external;
  259. Function noraw:longint; cdecl;external;
  260. Function notimeout(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  261. Function overlay(_para1:pWINDOW; _para2:pWINDOW):longint; cdecl;external;
  262. Function overwrite(_para1:pWINDOW; _para2:pWINDOW):longint; cdecl;external;
  263. Function pair_content(_para1:longint; _para2:plongint; _para3:plongint):longint; cdecl;external;
  264. Function pechochar(_para1:pWINDOW; _para2:chtype):longint; cdecl;external;
  265. Function pnoutrefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
  266. _para6:longint; _para7:longint):longint;cdecl;external;
  267. Function prefresh(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint;
  268. _para6:longint; _para7:longint):longint;cdecl;external;
  269. {
  270. extern int printw(const char ,...)
  271. GCC_PRINTFLIKE(1,2);
  272. }
  273. Function putp(_para1:pchar):longint; cdecl;external;
  274. Function putwin(_para1:pWINDOW; _para2:pFILE):longint; cdecl;external;
  275. Function qiflush:longint; cdecl;external;
  276. Function raw:longint; cdecl;external;
  277. Function resetty:longint; cdecl;external;
  278. Function reset_prog_mode:longint; cdecl;external;
  279. Function reset_shell_mode:longint; cdecl;external;
  280. {
  281. Function ripoffline(_para1:longint; init:function (_para1:pWINDOW; _para2:longint):longint):longint; cdecl;external;
  282. }
  283. Function savetty:longint; cdecl;external;
  284. {
  285. extern int scanw(const char ,...)
  286. GCC_SCANFLIKE(1,2);
  287. }
  288. Function scr_dump(_para1:pchar):longint; cdecl;external;
  289. Function scr_init(_para1:pchar):longint; cdecl;external;
  290. Function scrollok(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  291. Function scr_restore(_para1:pchar):longint; cdecl;external;
  292. Function scr_set(_para1:pchar):longint; cdecl;external;
  293. Function slk_attroff(_para1:attr_t):longint; cdecl;external;
  294. Function slk_attron(_para1:attr_t):longint; cdecl;external;
  295. Function slk_attrset(_para1:attr_t):longint; cdecl;external;
  296. Function slk_attr:attr_t; cdecl;external;
  297. Function slk_clear:longint; cdecl;external;
  298. Function slk_init(_para1:longint):longint; cdecl;external;
  299. Function slk_noutrefresh:longint; cdecl;external;
  300. Function slk_refresh:longint; cdecl;external;
  301. Function slk_restore:longint; cdecl;external;
  302. Function slk_set(_para1:longint; _para2:pchar; _para3:longint):longint; cdecl;external;
  303. Function slk_touch:longint; cdecl;external;
  304. Function start_color:longint; cdecl;external;
  305. Function syncok(_para1:pWINDOW; _para2:bool):longint; cdecl;external;
  306. Function termattrs:chtype; cdecl;external;
  307. Function tigetflag(_para1:pchar):longint; cdecl;external;
  308. Function tigetnum(_para1:pchar):longint; cdecl;external;
  309. Function derwin (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW; cdecl;external;
  310. Function dupwin (_para1:pWINDOW):PWINDOW; cdecl;external;
  311. Function getwin (_para1:pFILE):PWINDOW; cdecl;external;
  312. Function initscr :PWINDOW; cdecl;external;
  313. Function keyname (_para1:longint):pchar; cdecl;external;
  314. Function longname :pchar; cdecl;external;
  315. Function newpad (_para1:longint; _para2:longint):PWINDOW; cdecl;external;
  316. Function newterm (_para1:pchar; _para2:pFILE; _para3:pFILE):PSCREEN; cdecl;external;
  317. Function newwin (_para1:longint; _para2:longint; _para3:longint; _para4:longint):PWINDOW; cdecl;external;
  318. Function set_term (_para1:pSCREEN):PSCREEN; cdecl;external;
  319. Function slk_label (_para1:longint):pchar; cdecl;external;
  320. Function subpad (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW; cdecl;external;
  321. Function subwin (_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint; _para5:longint):PWINDOW; cdecl;external;
  322. Function termname :pchar; cdecl;external;
  323. Function tigetstr (_para1:pchar):pchar; cdecl;external;
  324. Function typeahead(_para1:longint):longint; cdecl;external;
  325. Function ungetch(_para1:longint):longint; cdecl;external;
  326. procedure use_env(_para1:bool);cdecl;external;
  327. Function vidattr(_para1:chtype):longint; cdecl;external;
  328. {
  329. Function vidputs(_para1:chtype; _para2:function (_para1:longint):longint):longint; cdecl;external;
  330. }
  331. {
  332. Function vwprintw(_para1:pWINDOW; _para2:pchar; _para3:va_list):longint; cdecl;external;
  333. Function vwscanw(_para1:pWINDOW; _para2:pchar; _para3:va_list):longint; cdecl;external;
  334. }
  335. Function waddch(_para1:pWINDOW; _para2:chtype):longint; cdecl;external;
  336. Function waddchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint; cdecl;external;
  337. Function waddnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;external;
  338. Function wattr_on(_para1:pWINDOW; _para2:attr_t):longint; cdecl;external;
  339. Function wattr_off(_para1:pWINDOW; _para2:attr_t):longint; cdecl;external;
  340. Function wattr_set(win : pwindow; at : longint) : longint; cdecl;external;
  341. function wattron(win : pwindow;at : longint) : longint; cdecl;external;
  342. function wattroff(win : pwindow;at : longint) : longint; cdecl;external;
  343. function wattrset(win : pwindow;at : longint) : longint; cdecl;external;
  344. Function wbkgd(_para1:pWINDOW; _para2:chtype):longint; cdecl;external;
  345. procedure wbkgdset(_para1:pWINDOW; _para2:chtype);cdecl;external;
  346. Function wborder(_para1:pWINDOW; _para2:chtype; _para3:chtype; _para4:chtype; _para5:chtype;
  347. _para6:chtype; _para7:chtype; _para8:chtype; _para9:chtype):longint;cdecl;external;
  348. Function wchgat(_para1:pWINDOW; _para2:longint; _para3:attr_t; _para4:longint; _para5:pointer):longint; cdecl;external;
  349. Function wclear(_para1:pWINDOW):longint; cdecl;external;
  350. Function wclrtobot(_para1:pWINDOW):longint; cdecl;external;
  351. Function wclrtoeol(_para1:pWINDOW):longint; cdecl;external;
  352. procedure wcursyncup(_para1:pWINDOW);cdecl;external;
  353. Function wdelch(_para1:pWINDOW):longint; cdecl;external;
  354. Function wechochar(_para1:pWINDOW; _para2:chtype):longint; cdecl;external;
  355. Function werase(_para1:pWINDOW):longint; cdecl;external;
  356. Function wgetch(_para1:pWINDOW):longint; cdecl;external;
  357. Function wgetnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;external;
  358. Function whline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint; cdecl;external;
  359. Function winch (win : PWindow) : longint; cdecl;external;
  360. Function winchnstr(_para1:pWINDOW; _para2:pchtype; _para3:longint):longint; cdecl;external;
  361. Function winnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;external;
  362. Function winsch(_para1:pWINDOW; _para2:chtype):longint; cdecl;external;
  363. Function winsdelln(_para1:pWINDOW; _para2:longint):longint; cdecl;external;
  364. Function winsnstr(_para1:pWINDOW; _para2:pchar; _para3:longint):longint; cdecl;external;
  365. Function wmove(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;external;
  366. Function wnoutrefresh(_para1:pWINDOW):longint; cdecl;external;
  367. {
  368. extern int wprintw(WINDOW ,const char ,...)
  369. GCC_PRINTFLIKE(2,3);
  370. }
  371. Function wredrawln(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;external;
  372. Function wrefresh(_para1:pWINDOW):longint; cdecl;external;
  373. {
  374. extern int wscanw(WINDOW ,const char ,...)
  375. GCC_SCANFLIKE(2,3);
  376. }
  377. Function wscrl(_para1:pWINDOW; _para2:longint):longint; cdecl;external;
  378. Function wsetscrreg(_para1:pWINDOW; _para2:longint; _para3:longint):longint; cdecl;external;
  379. procedure wsyncdown(_para1:pWINDOW);cdecl;external;
  380. procedure wsyncup(_para1:pWINDOW);cdecl;external;
  381. Function wtimeout(_para1:pWINDOW; _para2:longint):longint; cdecl;external;
  382. Function wtouchln(_para1:pWINDOW; _para2:longint; _para3:longint; _para4:longint):longint; cdecl;external;
  383. Function wvline(_para1:pWINDOW; _para2:chtype; _para3:longint):longint; cdecl;external;
  384. Function mvwchgat(_para1:pWINDOW; _para2:longint; _para3:longint;
  385. _para4:longint; _para5:longint; _para6:longint;
  386. _para7:longint):longint;cdecl;external;
  387. Function PAIR_NUMBER(_para1:longint):longint;cdecl;external;
  388. const
  389. A_NORMAL = 0;
  390. A_ATTRIBUTES = (not 0) shl 8;
  391. A_CHARTEXT=(1 shl (0 + 8)) - 1;
  392. A_COLOR=((1 shl 8) - 1) shl 8;
  393. A_STANDOUT = 1 shl (8 + 8);
  394. A_UNDERLINE = 1 shl (9 + 8);
  395. A_REVERSE = 1 shl (10 + 8);
  396. A_BLINK = 1 shl (11 + 8);
  397. A_DIM = 1 shl (12 + 8);
  398. A_BOLD = 1 shl (13 + 8);
  399. A_ALTCHARSET = 1 shl (14 + 8);
  400. A_INVIS = 1 shl (15 + 8);
  401. A_PROTECT = 1 shl (16 + 8);
  402. A_HORIZONTAL = 1 shl (17 + 8);
  403. A_LEFT = 1 shl (18 + 8);
  404. A_LOW = 1 shl (19 + 8);
  405. A_RIGHT = 1 shl (20 + 8);
  406. A_TOP = 1 shl (21 + 8);
  407. A_VERTICAL = 1 shl (22 + 8);
  408. Function color_pair(n : longint): longint;
  409. {
  410. PAIR_NUMBER = (a(@(A_COLOR))) shr 8;
  411. }
  412. {
  413. pseudo functions
  414. }
  415. function wgetstr(w : pwindow;s : pchar) : longint;
  416. function getnstr(s : pchar;n : longint) : longint;
  417. function setterm(term : longint) : longint;
  418. function fixterm : longint;
  419. function resetterm : longint;
  420. function saveterm : longint;
  421. function crmode : longint;
  422. function nocrmode : longint;
  423. procedure getyx (win : pwindow; var y,x : longint);
  424. procedure getbegyx(win : pwindow; var y,x : longint);
  425. procedure getmaxyx(win : pwindow; var y,x : longint);
  426. procedure getparyx(win : pwindow; var y,x : longint);
  427. Procedure getsyx (var y,x : longint);
  428. procedure setsyx (y,x : longint);
  429. function getattrs(win : pwindow) : longint;
  430. function getcurx(win : pwindow) : longint;
  431. function getcury(win : pwindow) : longint;
  432. function getbegx(win : pwindow) : longint;
  433. function getbegy(win : pwindow) : longint;
  434. function getmaxx(win : pwindow) : longint;
  435. function getmaxy(win : pwindow) : longint;
  436. function getparx(win : pwindow) : longint;
  437. function getpary(win : pwindow) : longint;
  438. function wstandout(win : pwindow) : longint;
  439. function wstandend(win : pwindow) : longint;
  440. {kjw, 08/24/2000, changed to cdecl; external
  441. function wattr_set(win : pwindow; at : longint) : longint;
  442. function wattron(win : pwindow;at : longint) : longint;
  443. function wattroff(win : pwindow;at : longint) : longint;
  444. function wattrset(win : pwindow;at : longint) : longint;
  445. }
  446. function scroll(win : pwindow) : longint;
  447. function touchwin(win : pwindow) : longint;
  448. function touchline(win : pwindow;s,c : longint) : longint;
  449. function untouchwin(win : pwindow) : longint;
  450. function box(win : pwindow;v,h : longint) : longint;
  451. function border(ls,rs,ts,bs,tl,tr,bl,br : longint) : longint;
  452. function hline(ch,n : longint) : longint;
  453. function vline(ch,n : longint) : longint;
  454. function winstr(w : pwindow;s : pchar) : longint;
  455. function winchstr(w : pwindow;s : pchar) : longint;
  456. function winsstr(w : pwindow;s : pchar) : longint;
  457. function redrawwin(w : pwindow) : longint;
  458. function waddstr(win : pwindow;st : pchar) : longint;
  459. function waddchstr(win : pwindow;st : pchar) : longint;
  460. {
  461. pseudo functions for standard screen
  462. }
  463. function addch(ch : longint) : longint;
  464. function addchnstr(st : pchar;n : longint) : longint;
  465. function addchstr(st : pchar) : longint;
  466. function addnstr(st : pchar;n : longint) : longint;
  467. function addstr(st : pchar) : longint;
  468. function attroff(at : longint) : longint;
  469. function attron(at : longint) : longint;
  470. function attrset(at : longint) : longint;
  471. function bkgd(ch : longint) : longint;
  472. procedure bkgdset(ch : longint);
  473. function clear : longint;
  474. function clrtobot : longint;
  475. function clrtoeol : longint;
  476. function delch : longint;
  477. function deleteln : longint;
  478. function echochar(c : longint) : longint;
  479. function erase : longint;
  480. function getch : longint;
  481. function getstr(st : pchar) : longint;
  482. function inch : longint;
  483. function inchnstr(s : pchar;n : longint) : longint;
  484. function inchstr(s : pchar) : longint;
  485. function innstr(s : pchar;n : longint) : longint;
  486. function insch(c : longint) : longint;
  487. function insdelln(n : longint) : longint;
  488. function insertln : longint;
  489. function insnstr(s : pchar;n : longint) : longint;
  490. function insstr(s : pchar) : longint;
  491. function instr(s : pchar) : longint;
  492. function move(y,x : longint) : longint;
  493. function refresh : longint;
  494. function scrl(n : longint) : longint;
  495. function setscrreg(t,b : longint) : longint;
  496. function standend : longint;
  497. function standout : longint;
  498. function timeout(delay : longint) : longint;
  499. function wdeleteln(win : pwindow) : longint;
  500. function winsertln(win : pwindow) : longint;
  501. {
  502. mv functions
  503. }
  504. function mvwaddch(win : pwindow;y,x : longint; ch : chtype) : longint;
  505. function mvwaddchnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
  506. function mvwaddchstr(win : pwindow;y,x : longint;st : pchar) : longint;
  507. function mvwaddnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
  508. function mvwaddstr(win : pwindow;y,x : longint;st : pchar) : longint;
  509. function mvwdelch(win : pwindow;y,x : longint) : longint;
  510. function mvwgetch(win : pwindow;y,x : longint) : longint;
  511. function mvwgetnstr(win : pwindow;y,x : longint;st : pchar;n: longint) : longint;
  512. function mvwgetstr(win : pwindow;y,x : longint;st: pchar) : longint;
  513. function mvwhline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
  514. function mvwinch(win : pwindow;y,x : longint) : longint;
  515. function mvwinchnstr(win : pwindow;y,x : longint;s : pchar; n : longint) : longint;
  516. function mvwinchstr(win : pwindow;y,x : longint;s : pchar) : longint;
  517. function mvwinnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
  518. function mvwinsch(win : pwindow;y,x : longint;c : chtype) : longint;
  519. function mvwinsnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
  520. function mvwinsstr(win : pwindow;y,x : longint;s : pchar) : longint;
  521. function mvwinstr(win : pwindow;y,x : longint;s : pchar) : longint;
  522. function mvwvline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
  523. function mvaddch(y,x,ch : longint) : longint;
  524. function mvaddchnstr(y,x : longint; st: pchar;n : longint) : longint;
  525. function mvaddchstr(y,x : longint; st : pchar) : longint;
  526. function mvaddnstr(y,x : longint; st : pchar;n : longint) : longint;
  527. function mvaddstr(y,x : longint; st : pchar) : longint;
  528. function mvdelch(y,x : longint) : longint;
  529. function mvgetch(y,x : longint) : longint;
  530. function mvgetnstr(y,x : longint; st : pchar;n : longint) : longint;
  531. function mvgetstr(y,x : longint; st : pchar) : longint;
  532. function mvhline(y,x : longint;c : chtype;n : longint) : longint;
  533. function mvinch(y,x : longint) : longint;
  534. function mvinchnstr(y,x : longint; s : pchar;n : longint) : longint;
  535. function mvinchstr(y,x : longint; s : pchar) : longint;
  536. function mvinnstr(y,x : longint; s : pchar;n : longint) : longint;
  537. function mvinsch(y,x: longint;c : chtype) : longint;
  538. function mvinsnstr(y,x : longint; s : pchar;n : longint) : longint;
  539. function mvinsstr(y,x : longint; s : pchar) : longint;
  540. function mvinstr(y,x : longint; s : pchar) : longint;
  541. function mvvline(y,x,c,n : longint) : longint;
  542. function attr_get : longint;
  543. function attr_off(a : longint) : longint;
  544. function attr_on(a : longint) : longint;
  545. function attr_set(a : longint) : longint;
  546. function chgat(n,a,c,o : longint) : longint;
  547. function getbkgd(win : pwindow) : longint;
  548. function slk_attr_off(a : longint) : longint;
  549. function slk_attr_on(a : longint) : longint;
  550. function slk_attr_set(a : longint) : longint;
  551. function vid_attr(a : longint) : longint;
  552. function wattr_get(win : pwindow) : longint;
  553. {
  554. Pseudo-character tokens outside ASCII range. The curses wgetch() function
  555. will return any given one of these only if the corresponding k- capability
  556. is defined in your terminal's terminfo entry.
  557. }
  558. const {octal}
  559. KEY_CODE_YES = 256; {0400}
  560. KEY_MIN = 257; {0401}
  561. KEY_BREAK = 257; {0401}
  562. KEY_DOWN = 258; {0402}
  563. KEY_UP = 259; {0403}
  564. KEY_LEFT = 260; {0404}
  565. KEY_RIGHT = 261; {0405}
  566. KEY_HOME = 262; {0406}
  567. KEY_BACKSPACE = 263; {0407}
  568. KEY_F0 = 264; {0410}
  569. function KEY_F(n : longint) : longint;
  570. const
  571. KEY_DL = 328; {0510}
  572. KEY_IL = 329; {0511}
  573. KEY_DC = 330; {0512}
  574. KEY_IC = 331; {0513}
  575. KEY_EIC = 332; {0514}
  576. KEY_CLEAR = 333; {0515}
  577. KEY_EOS = 334; {0516}
  578. KEY_EOL = 335; {0517}
  579. KEY_SF = 336; {0520}
  580. KEY_SR = 337; {0521}
  581. KEY_NPAGE = 338; {0522}
  582. KEY_PPAGE = 339; {0523}
  583. KEY_STAB = 340; {0524}
  584. KEY_CTAB = 341; {0525}
  585. KEY_CATAB = 342; {0526}
  586. KEY_ENTER = 343; {0527}
  587. KEY_SRESET = 344; {0530}
  588. KEY_RESET = 345; {0531}
  589. KEY_PRINT = 346; {0532}
  590. KEY_LL = 347; {0533}
  591. KEY_A1 = 348; {0534}
  592. KEY_A3 = 349; {0535}
  593. KEY_B2 = 350; {0536}
  594. KEY_C1 = 351; {0537}
  595. KEY_C3 = 352; {0540}
  596. KEY_BTAB = 353; {0541}
  597. KEY_BEG = 354; {0542}
  598. KEY_CANCEL = 355; {0543}
  599. KEY_CLOSE = 356; {0544}
  600. KEY_COMMAND = 357; {0545}
  601. KEY_COPY = 358; {0546}
  602. KEY_CREATE = 359; {0547}
  603. KEY_END = 360; {0550}
  604. KEY_EXIT = 361; {0551}
  605. KEY_FIND = 362; {0552}
  606. KEY_HELP = 363; {0553}
  607. KEY_MARK = 364; {0554}
  608. KEY_MESSAGE = 365; {0555}
  609. KEY_MOVE = 366; {0556}
  610. KEY_NEXT = 367; {0557}
  611. KEY_OPEN = 368; {0560}
  612. KEY_OPTIONS = 369; {0561}
  613. KEY_PREVIOUS = 370; {0562}
  614. KEY_REDO = 371; {0563}
  615. KEY_REFERENCE = 372; {0564}
  616. KEY_REFRESH = 373; {0565}
  617. KEY_REPLACE = 374; {0566}
  618. KEY_RESTART = 375; {0567}
  619. KEY_RESUME = 376; {0570}
  620. KEY_SAVE = 377; {0571}
  621. KEY_SBEG = 378; {0572}
  622. KEY_SCANCEL = 379; {0573}
  623. KEY_SCOMMAND = 380; {0574}
  624. KEY_SCOPY = 381; {0575}
  625. KEY_SCREATE = 382; {0576}
  626. KEY_SDC = 383; {0577}
  627. KEY_SDL = 384; {0600}
  628. KEY_SELECT = 385; {0601}
  629. KEY_SEND = 386; {0602}
  630. KEY_SEOL = 387; {0603}
  631. KEY_SEXIT = 388; {0604}
  632. KEY_SFIND = 389; {0605}
  633. KEY_SHELP = 390; {0606}
  634. KEY_SHOME = 391; {0607}
  635. KEY_SIC = 392; {0610}
  636. KEY_SLEFT = 393; {0611}
  637. KEY_SMESSAGE = 394; {0612}
  638. KEY_SMOVE = 395; {0613}
  639. KEY_SNEXT = 396; {0614}
  640. KEY_SOPTIONS = 397; {0615}
  641. KEY_SPREVIOUS = 398; {0616}
  642. KEY_SPRINT = 399; {0617}
  643. KEY_SREDO = 400; {0620}
  644. KEY_SREPLACE = 401; {0621}
  645. KEY_SRIGHT = 402; {0622}
  646. KEY_SRSUME = 403; {0623}
  647. KEY_SSAVE = 404; {0624}
  648. KEY_SSUSPEND = 405; {0625}
  649. KEY_SUNDO = 406; {0626}
  650. KEY_SUSPEND = 407; {0627}
  651. KEY_UNDO = 408; {0630}
  652. KEY_MOUSE = 409; {0631}
  653. KEY_RESIZE = 410; {0632}
  654. KEY_MAX = 511; {0777}
  655. function mcprint(_para1:pchar; _para2:longint):longint;cdecl;external;
  656. function has_key(_para1:longint):longint;cdecl;external;
  657. implementation
  658. function wgetstr(w : pwindow;s : pchar) : longint;
  659. begin
  660. wgetstr:=wgetnstr(w,s,-(1));
  661. end;
  662. function getnstr(s : pchar;n : longint) : longint;
  663. begin
  664. getnstr:=wgetnstr(stdscr,s,n);
  665. end;
  666. function setterm(term : longint) : longint;
  667. begin
  668. {
  669. setterm:=setupterm(term,1,plongint(0));
  670. }
  671. setterm:=0;
  672. end;
  673. function fixterm : longint;
  674. begin
  675. fixterm:=reset_prog_mode;
  676. end;
  677. function resetterm : longint;
  678. begin
  679. resetterm:=reset_shell_mode;
  680. end;
  681. function saveterm : longint;
  682. begin
  683. saveterm:=def_prog_mode;
  684. end;
  685. function crmode : longint;
  686. begin
  687. crmode:=cbreak;
  688. end;
  689. function nocrmode : longint;
  690. begin
  691. nocrmode:=nocbreak;
  692. end;
  693. procedure getsyx(var y,x : longint);
  694. begin
  695. getyx(stdscr,y,x);
  696. end;
  697. function getattrs(win : pwindow) : longint;
  698. var
  699. if_local1 : longint;
  700. begin
  701. if win<>nil then
  702. if_local1:=win^._attrs
  703. else
  704. if_local1:=A_NORMAL;
  705. getattrs:=if_local1;
  706. end;
  707. function getcurx(win : pwindow) : longint;
  708. var
  709. if_local1 : longint;
  710. begin
  711. if win<>nil then
  712. if_local1:=win^._curx
  713. else
  714. if_local1:=ERR;
  715. getcurx:=if_local1;
  716. end;
  717. function getcury(win : pwindow) : longint;
  718. var
  719. if_local1 : longint;
  720. begin
  721. if win<>Nil then
  722. if_local1:=win^._cury
  723. else
  724. if_local1:=ERR;
  725. getcury:=if_local1;
  726. end;
  727. function getbegx(win : pwindow) : longint;
  728. var
  729. if_local1 : longint;
  730. begin
  731. if win<>Nil then
  732. if_local1:=win^._begx
  733. else
  734. if_local1:=ERR;
  735. getbegx:=if_local1;
  736. end;
  737. function getbegy(win : pwindow) : longint;
  738. var
  739. if_local1 : longint;
  740. begin
  741. if win<>Nil then
  742. if_local1:=win^._begy
  743. else
  744. if_local1:=ERR;
  745. getbegy:=if_local1;
  746. end;
  747. function getmaxx(win : pwindow) : longint;
  748. var
  749. if_local1 : longint;
  750. begin
  751. if win<>Nil then
  752. if_local1:=(win^._maxx) + 1
  753. else
  754. if_local1:=ERR;
  755. getmaxx:=if_local1;
  756. end;
  757. function getmaxy(win : pwindow) : longint;
  758. var
  759. if_local1 : longint;
  760. begin
  761. if win<>Nil then
  762. if_local1:=(win^._maxy) + 1
  763. else
  764. if_local1:=ERR;
  765. getmaxy:=if_local1;
  766. end;
  767. function getparx(win : pwindow) : longint;
  768. var
  769. if_local1 : longint;
  770. begin
  771. if win<>Nil then
  772. if_local1:=win^._parx
  773. else
  774. if_local1:=ERR;
  775. getparx:=if_local1;
  776. end;
  777. function getpary(win : pwindow) : longint;
  778. var
  779. if_local1 : longint;
  780. begin
  781. if win<>Nil then
  782. if_local1:=win^._pary
  783. else
  784. if_local1:=ERR;
  785. getpary:=if_local1;
  786. end;
  787. function wstandout(win : pwindow) : longint;
  788. begin
  789. wstandout:=wattr_set(win,A_STANDOUT);
  790. end;
  791. function wstandend(win : pwindow) : longint;
  792. begin
  793. wstandend:=wattr_set(win,A_NORMAL);
  794. end;
  795. (*
  796. function wattron(win : pwindow;at : longint) : longint;
  797. begin
  798. wattron:=wattr_on(win,at);
  799. end;
  800. function wattroff(win : pwindow;at : longint) : longint;
  801. begin
  802. wattroff:=wattr_off(win,at);
  803. end;
  804. function wattrset(win : pwindow;at : longint) : longint;
  805. begin
  806. wattrset:=wattr_set(win,at);
  807. end;
  808. *)
  809. function scroll(win : pwindow) : longint;
  810. begin
  811. scroll:=wscrl(win,1);
  812. end;
  813. function touchwin(win : pwindow) : longint;
  814. begin
  815. touchwin:=wtouchln(win,0,getmaxy(win),1);
  816. end;
  817. function touchline(win : pwindow;s,c : longint) : longint;
  818. begin
  819. touchline:=wtouchln(win,s,c,1);
  820. end;
  821. function untouchwin(win : pwindow) : longint;
  822. begin
  823. untouchwin:=wtouchln(win,0,getmaxy(win),0);
  824. end;
  825. function box(win : pwindow;v,h : longint) : longint;
  826. begin
  827. box:=wborder(win,v,v,h,h,0,0,0,0);
  828. end;
  829. function border(ls,rs,ts,bs,tl,tr,bl,br : longint) : longint;
  830. begin
  831. border:=wborder(stdscr,ls,rs,ts,bs,tl,tr,bl,br);
  832. end;
  833. function hline(ch,n : longint) : longint;
  834. begin
  835. hline:=whline(stdscr,ch,n);
  836. end;
  837. function vline(ch,n : longint) : longint;
  838. begin
  839. vline:=wvline(stdscr,ch,n);
  840. end;
  841. function winstr(w : pwindow;s : pchar) : longint;
  842. begin
  843. winstr:=winnstr(w,s,-(1));
  844. end;
  845. function winchstr(w : pwindow;s : pchar) : longint;
  846. begin
  847. winchstr:=winchnstr(w,s,-1);
  848. end;
  849. function winsstr(w : pwindow;s : pchar) : longint;
  850. begin
  851. winsstr:=winsnstr(w,s,-(1));
  852. end;
  853. function redrawwin(w : pwindow) : longint;
  854. begin
  855. redrawwin:=wredrawln(w,0,(w^._maxy) + 1);
  856. end;
  857. function waddstr(win : pwindow;st : pchar) : longint;
  858. begin
  859. waddstr:=waddnstr(win,st,-1);
  860. end;
  861. function waddchstr(win : pwindow;st : pchar) : longint;
  862. begin
  863. waddchstr:=waddchnstr(win,st,-1);
  864. end;
  865. function addch(ch : longint) : longint;
  866. begin
  867. addch:=waddch(stdscr,ch);
  868. end;
  869. function addchnstr(st : pchar;n : longint) : longint;
  870. begin
  871. addchnstr:=waddchnstr(stdscr,st,n);
  872. end;
  873. function addchstr(st : pchar) : longint;
  874. begin
  875. addchstr:=waddchstr(stdscr,st);
  876. end;
  877. function addnstr(st : pchar;n : longint) : longint;
  878. begin
  879. addnstr:=waddnstr(stdscr,st,n);
  880. end;
  881. function addstr(st : pchar) : longint;
  882. begin
  883. addstr:=waddnstr(stdscr,st,-1);
  884. end;
  885. function attroff(at : longint) : longint;
  886. begin
  887. attroff:=wattroff(stdscr,at);
  888. end;
  889. function attron(at : longint) : longint;
  890. begin
  891. attron:=wattron(stdscr,at);
  892. end;
  893. function attrset(at : longint) : longint;
  894. begin
  895. attrset:=wattrset(stdscr,at);
  896. end;
  897. function bkgd(ch : longint) : longint;
  898. begin
  899. bkgd:=wbkgd(stdscr,ch);
  900. end;
  901. procedure bkgdset(ch : longint);
  902. begin
  903. wbkgdset(stdscr,ch);
  904. end;
  905. function clear : longint;
  906. begin
  907. clear:=wclear(stdscr);
  908. end;
  909. function clrtobot : longint;
  910. begin
  911. clrtobot:=wclrtobot(stdscr);
  912. end;
  913. function clrtoeol : longint;
  914. begin
  915. clrtoeol:=wclrtoeol(stdscr);
  916. end;
  917. function delch : longint;
  918. begin
  919. delch:=wdelch(stdscr);
  920. end;
  921. function deleteln : longint;
  922. begin
  923. deleteln:=winsdelln(stdscr,-1);
  924. end;
  925. function echochar(c : longint) : longint;
  926. begin
  927. echochar:=wechochar(stdscr,c);
  928. end;
  929. function erase : longint;
  930. begin
  931. erase:=werase(stdscr);
  932. end;
  933. function getch : longint;
  934. begin
  935. getch:=wgetch(stdscr);
  936. end;
  937. function getstr(st : pchar) : longint;
  938. begin
  939. getstr:=wgetstr(stdscr,st);
  940. end;
  941. function inch : longint;
  942. begin
  943. inch:=winch(stdscr);
  944. end;
  945. function inchnstr(s : pchar;n : longint) : longint;
  946. begin
  947. inchnstr:=winchnstr(stdscr,s,n);
  948. end;
  949. function inchstr(s : pchar) : longint;
  950. begin
  951. inchstr:=winchstr(stdscr,s);
  952. end;
  953. function innstr(s : pchar;n : longint) : longint;
  954. begin
  955. innstr:=winnstr(stdscr,s,n);
  956. end;
  957. function insch(c : longint) : longint;
  958. begin
  959. insch:=winsch(stdscr,c);
  960. end;
  961. function insdelln(n : longint) : longint;
  962. begin
  963. insdelln:=winsdelln(stdscr,n);
  964. end;
  965. function insertln : longint;
  966. begin
  967. insertln:=winsdelln(stdscr,1);
  968. end;
  969. function insnstr(s : pchar;n : longint) : longint;
  970. begin
  971. insnstr:=winsnstr(stdscr,s,n);
  972. end;
  973. function insstr(s : pchar) : longint;
  974. begin
  975. insstr:=winsstr(stdscr,s);
  976. end;
  977. function instr(s : pchar) : longint;
  978. begin
  979. instr:=winstr(stdscr,s);
  980. end;
  981. function move(y,x : longint) : longint;
  982. begin
  983. move:=wmove(stdscr,y,x);
  984. end;
  985. function refresh : longint;
  986. begin
  987. refresh:=wrefresh(stdscr);
  988. end;
  989. function scrl(n : longint) : longint;
  990. begin
  991. scrl:=wscrl(stdscr,n);
  992. end;
  993. function setscrreg(t,b : longint) : longint;
  994. begin
  995. setscrreg:=wsetscrreg(stdscr,t,b);
  996. end;
  997. function standend : longint;
  998. begin
  999. standend:=wstandend(stdscr);
  1000. end;
  1001. function standout : longint;
  1002. begin
  1003. standout:=wstandout(stdscr);
  1004. end;
  1005. function timeout(delay : longint) : longint;
  1006. begin
  1007. timeout:=wtimeout(stdscr,delay);
  1008. end;
  1009. function wdeleteln(win : pwindow) : longint;
  1010. begin
  1011. wdeleteln:=winsdelln(win,-1);
  1012. end;
  1013. function winsertln(win : pwindow) : longint;
  1014. begin
  1015. winsertln:=winsdelln(win,1);
  1016. end;
  1017. function mvaddch(y,x,ch : longint) : longint;
  1018. begin
  1019. mvaddch:=mvwaddch(stdscr,y,x,ch);
  1020. end;
  1021. function mvaddchnstr(y,x: longint;st : pchar;n : longint) : longint;
  1022. begin
  1023. mvaddchnstr:=mvwaddchnstr(stdscr,y,x,st,n);
  1024. end;
  1025. function mvaddchstr(y,x : longint;st : pchar) : longint;
  1026. begin
  1027. mvaddchstr:=mvwaddchstr(stdscr,y,x,st);
  1028. end;
  1029. function mvaddnstr(y,x: longint;st : pchar; n : longint) : longint;
  1030. begin
  1031. mvaddnstr:=mvwaddnstr(stdscr,y,x,st,n);
  1032. end;
  1033. function mvaddstr(y,x : longint;st : pchar) : longint;
  1034. begin
  1035. mvaddstr:=mvwaddstr(stdscr,y,x,st);
  1036. end;
  1037. function mvdelch(y,x : longint) : longint;
  1038. begin
  1039. mvdelch:=mvwdelch(stdscr,y,x);
  1040. end;
  1041. function mvgetch(y,x : longint) : longint;
  1042. begin
  1043. mvgetch:=mvwgetch(stdscr,y,x);
  1044. end;
  1045. function mvgetnstr(y,x : longint;st : pchar;n : longint) : longint;
  1046. begin
  1047. mvgetnstr:=mvwgetnstr(stdscr,y,x,st,n);
  1048. end;
  1049. function mvgetstr(y,x: longint;st : pchar) : longint;
  1050. begin
  1051. mvgetstr:=mvwgetstr(stdscr,y,x,st);
  1052. end;
  1053. function mvhline(y,x : longint;c : chtype;n : longint) : longint;
  1054. begin
  1055. mvhline:=mvwhline(stdscr,y,x,c,n);
  1056. end;
  1057. function mvinch(y,x : longint) : longint;
  1058. begin
  1059. mvinch:=mvwinch(stdscr,y,x);
  1060. end;
  1061. function mvinchnstr(y,x : longint;s : pchar;n : longint) : longint;
  1062. begin
  1063. mvinchnstr:=mvwinchnstr(stdscr,y,x,s,n);
  1064. end;
  1065. function mvinchstr(y,x : longint;s : pchar) : longint;
  1066. begin
  1067. mvinchstr:=mvwinchstr(stdscr,y,x,s);
  1068. end;
  1069. function mvinnstr(y,x : longint;s : pchar;n : longint) : longint;
  1070. begin
  1071. mvinnstr:=mvwinnstr(stdscr,y,x,s,n);
  1072. end;
  1073. function mvinsch(y,x: longint;c : chtype) : longint;
  1074. begin
  1075. mvinsch:=mvwinsch(stdscr,y,x,c);
  1076. end;
  1077. function mvinsnstr(y,x : longint;s : pchar;n : longint) : longint;
  1078. begin
  1079. mvinsnstr:=mvwinsnstr(stdscr,y,x,s,n);
  1080. end;
  1081. function mvinsstr(y,x : longint;s : pchar) : longint;
  1082. begin
  1083. mvinsstr:=mvwinsstr(stdscr,y,x,s);
  1084. end;
  1085. function mvinstr(y,x : longint;s : pchar) : longint;
  1086. begin
  1087. mvinstr:=mvwinstr(stdscr,y,x,s);
  1088. end;
  1089. function mvvline(y,x,c,n : longint) : longint;
  1090. begin
  1091. mvvline:=mvwvline(stdscr,y,x,c,n);
  1092. end;
  1093. function attr_get : longint;
  1094. begin
  1095. attr_get:=wattr_get(stdscr);
  1096. end;
  1097. function attr_off(a : longint) : longint;
  1098. begin
  1099. attr_off:=wattr_off(stdscr,a);
  1100. end;
  1101. function attr_on(a : longint) : longint;
  1102. begin
  1103. attr_on:=wattr_on(stdscr,a);
  1104. end;
  1105. function attr_set(a : longint) : longint;
  1106. begin
  1107. attr_set:=wattr_set(stdscr,a);
  1108. end;
  1109. function chgat(n,a,c,o : longint) : longint;
  1110. begin
  1111. chgat:=wchgat(stdscr,n,a,c,pointer(o));
  1112. end;
  1113. function getbkgd(win : pwindow) : longint;
  1114. begin
  1115. getbkgd:=win^._bkgd;
  1116. end;
  1117. function mvchgat(y,x,n,a,c,o : longint) : longint;
  1118. begin
  1119. mvchgat:=mvwchgat(stdscr,y,x,n,a,c,o);
  1120. end;
  1121. function slk_attr_off(a : longint) : longint;
  1122. begin
  1123. slk_attr_off:=slk_attroff(a);
  1124. end;
  1125. function slk_attr_on(a : longint) : longint;
  1126. begin
  1127. slk_attr_on:=slk_attron(a);
  1128. end;
  1129. function slk_attr_set(a : longint) : longint;
  1130. begin
  1131. slk_attr_set:=slk_attrset(a);
  1132. end;
  1133. function vid_attr(a : longint) : longint;
  1134. begin
  1135. vid_attr:=vidattr(a);
  1136. end;
  1137. function wattr_get(win : pwindow) : longint;
  1138. begin
  1139. wattr_get:=win^._attrs;
  1140. end;
  1141. function KEY_F(n : longint) : longint;
  1142. begin
  1143. KEY_F:=KEY_F0 + n;
  1144. end;
  1145. procedure getyx(win : pwindow; var y,x : longint);
  1146. begin
  1147. X:=ERR;
  1148. Y:=ERR;
  1149. if Win<>Nil then
  1150. begin
  1151. Y:=win^._cury;
  1152. X:=Win^._curx;
  1153. end;
  1154. end;
  1155. procedure getbegyx(win : pwindow; var y,x : longint);
  1156. begin
  1157. X:=ERR;
  1158. Y:=ERR;
  1159. if Win<>Nil then
  1160. begin
  1161. Y:=win^._begy;
  1162. X:=Win^._begx;
  1163. end;
  1164. end;
  1165. procedure getmaxyx(win : pwindow; var y,x : longint);
  1166. begin
  1167. X:=ERR;
  1168. Y:=ERR;
  1169. if Win<>Nil then
  1170. begin
  1171. Y:=win^._maxy+1;
  1172. X:=Win^._maxx+1;
  1173. end;
  1174. end;
  1175. procedure getparyx(win : pwindow; var y,x : longint);
  1176. begin
  1177. X:=ERR;
  1178. Y:=ERR;
  1179. if Win<>Nil then
  1180. begin
  1181. Y:=win^._pary;
  1182. X:=Win^._parx;
  1183. end;
  1184. end;
  1185. (* kjw, 08/23/2000, external in v4.2
  1186. function winch (win : PWindow) : longint;
  1187. begin
  1188. if win<>nil then
  1189. winch:=win^._line[win^._cury].text[Win^ ._curx]
  1190. else
  1191. winch:=0;
  1192. end;
  1193. function wattr_set(win : pwindow; at : longint) : longint;
  1194. begin
  1195. If win<>nil then
  1196. begin
  1197. win^._attrs := at;
  1198. wattr_set:=at;
  1199. end
  1200. else
  1201. wattr_set:=0;
  1202. end;
  1203. *)
  1204. procedure setsyx (y,x : longint);
  1205. begin
  1206. stdscr^._cury := y;
  1207. stdscr^._curx := x;
  1208. end;
  1209. function mvwaddch(win : pwindow;y,x : longint; ch : chtype) : longint;
  1210. begin
  1211. if wmove(win,y,x) = ERR then
  1212. exit(ERR)
  1213. else
  1214. exit(waddch(win,ch))
  1215. end;
  1216. function mvwaddchnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
  1217. begin
  1218. if wmove (win,y,x)=ERR then
  1219. exit(ERR)
  1220. else
  1221. exit(waddchnstr(win,st,n))
  1222. end;
  1223. function mvwaddchstr(win : pwindow;y,x : longint;st : pchar) : longint;
  1224. begin
  1225. if wmove (win,y,x)=ERR then
  1226. exit(ERR)
  1227. else
  1228. exit(waddchnstr(win,st,-1))
  1229. end;
  1230. function mvwaddnstr(win : pwindow;y,x : longint;st : pchar;n : longint) : longint;
  1231. begin
  1232. if wmove (win,y,x)=ERR then
  1233. exit(ERR)
  1234. else
  1235. exit(waddnstr(win,st,n))
  1236. end;
  1237. function mvwaddstr(win : pwindow;y,x : longint;st : pchar) : longint;
  1238. begin
  1239. if wmove (win,y,x)=ERR then
  1240. exit(ERR)
  1241. else
  1242. exit(waddnstr(win,st,-1))
  1243. end;
  1244. function mvwdelch(win : pwindow;y,x : longint) : longint;
  1245. begin
  1246. if wmove (win,y,x)=ERR then
  1247. exit(ERR)
  1248. else
  1249. exit(wdelch(win))
  1250. end;
  1251. function mvwgetch(win : pwindow;y,x : longint) : longint;
  1252. begin
  1253. if wmove (win,y,x)=ERR then
  1254. exit(ERR)
  1255. else
  1256. exit(wgetch(win))
  1257. end;
  1258. function mvwgetnstr(win : pwindow;y,x : longint;st : pchar;n: longint) : longint;
  1259. begin
  1260. if wmove (win,y,x)=ERR then
  1261. exit(ERR)
  1262. else
  1263. exit(wgetnstr(win,st,n))
  1264. end;
  1265. function mvwgetstr(win : pwindow;y,x : longint;st: pchar) : longint;
  1266. begin
  1267. if wmove (win,y,x)=ERR then
  1268. exit(ERR)
  1269. else
  1270. exit(wgetstr(win,st))
  1271. end;
  1272. function mvwhline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
  1273. begin
  1274. if wmove (win,y,x)=ERR then
  1275. exit(ERR)
  1276. else
  1277. exit(whline(win,c,n))
  1278. end;
  1279. function mvwinch(win : pwindow;y,x : longint) : longint;
  1280. begin
  1281. if wmove (win,y,x)=ERR then
  1282. exit(ERR)
  1283. else
  1284. exit(winch(win))
  1285. end;
  1286. function mvwinchnstr(win : pwindow;y,x : longint;s : pchar; n : longint) : longint;
  1287. begin
  1288. if wmove (win,y,x)=ERR then
  1289. exit(ERR)
  1290. else
  1291. exit(winchnstr(win,s,n))
  1292. end;
  1293. function mvwinchstr(win : pwindow;y,x : longint;s : pchar) : longint;
  1294. begin
  1295. if wmove (win,y,x)=ERR then
  1296. exit(ERR)
  1297. else
  1298. exit(winchstr(win,s))
  1299. end;
  1300. function mvwinnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
  1301. begin
  1302. if wmove (win,y,x)=ERR then
  1303. exit(ERR)
  1304. else
  1305. exit(winnstr(win,s,n))
  1306. end;
  1307. function mvwinsch(win : pwindow;y,x : longint;c : chtype) : longint;
  1308. begin
  1309. if wmove (win,y,x)=ERR then
  1310. exit(ERR)
  1311. else
  1312. exit(winsch(win,c))
  1313. end;
  1314. function mvwinsnstr(win : pwindow;y,x : longint;s : pchar;n : longint) : longint;
  1315. begin
  1316. if wmove (win,y,x)=ERR then
  1317. exit(ERR)
  1318. else
  1319. exit(winsnstr(win,s,n))
  1320. end;
  1321. function mvwinsstr(win : pwindow;y,x : longint;s : pchar) : longint;
  1322. begin
  1323. if wmove (win,y,x)=ERR then
  1324. exit(ERR)
  1325. else
  1326. exit(winsstr(win,s))
  1327. end;
  1328. function mvwinstr(win : pwindow;y,x : longint;s : pchar) : longint;
  1329. begin
  1330. if wmove (win,y,x)=ERR then
  1331. exit(ERR)
  1332. else
  1333. exit(winstr(win,s))
  1334. end;
  1335. function mvwvline(win : pwindow;y,x : longint;c : chtype;n : longint) : longint;
  1336. begin
  1337. if wmove (win,y,x)=ERR then
  1338. exit(ERR)
  1339. else
  1340. exit(wvline(win,c,n))
  1341. end;
  1342. function color_pair(n : longint): longint;
  1343. begin
  1344. color_pair:=n shl 8;
  1345. end;
  1346. function ACS_ULCORNER : chtype;
  1347. begin
  1348. ACS_ULCORNER:=acs_map['l'];
  1349. end;
  1350. function ACS_LLCORNER : chtype;
  1351. begin
  1352. ACS_LLCORNER:=acs_map['m'];
  1353. end;
  1354. function ACS_URCORNER : chtype;
  1355. begin
  1356. ACS_URCORNER:=acs_map['k'];
  1357. end;
  1358. function ACS_LRCORNER : chtype;
  1359. begin
  1360. ACS_LRCORNER:=acs_map['j'];
  1361. end;
  1362. function ACS_LTEE : chtype;
  1363. begin
  1364. ACS_LTEE:=acs_map['t'];
  1365. end;
  1366. function ACS_RTEE : chtype;
  1367. begin
  1368. ACS_RTEE:=acs_map['u'];
  1369. end;
  1370. function ACS_BTEE : chtype;
  1371. begin
  1372. ACS_BTEE:=acs_map['v'];
  1373. end;
  1374. function ACS_TTEE : chtype;
  1375. begin
  1376. ACS_TTEE:=acs_map['w'];
  1377. end;
  1378. function ACS_HLINE : chtype;
  1379. begin
  1380. ACS_HLINE:=acs_map['q'];
  1381. end;
  1382. function ACS_VLINE : chtype;
  1383. begin
  1384. ACS_VLINE:=acs_map['x'];
  1385. end;
  1386. function ACS_PLUS : chtype;
  1387. begin
  1388. ACS_PLUS:=acs_map['n'];
  1389. end;
  1390. function ACS_S1 : chtype;
  1391. begin
  1392. ACS_S1 :=acs_map['o'];
  1393. end;
  1394. function ACS_S9 : chtype;
  1395. begin
  1396. ACS_S9 :=acs_map['s'];
  1397. end;
  1398. function ACS_DIAMOND : chtype;
  1399. begin
  1400. ACS_DIAMOND:=acs_map['`'];
  1401. end;
  1402. function ACS_CKBOARD : chtype;
  1403. begin
  1404. ACS_CKBOARD:=acs_map['a'];
  1405. end;
  1406. function ACS_DEGREE : chtype;
  1407. begin
  1408. ACS_DEGREE:=acs_map['f'];
  1409. end;
  1410. function ACS_PLMINUS : chtype;
  1411. begin
  1412. ACS_PLMINUS:=acs_map['g'];
  1413. end;
  1414. function ACS_BULLET : chtype;
  1415. begin
  1416. ACS_BULLET:=acs_map['~'];
  1417. end;
  1418. function ACS_LARROW : chtype;
  1419. begin
  1420. ACS_LARROW:=acs_map[','];
  1421. end;
  1422. function ACS_RARROW : chtype;
  1423. begin
  1424. ACS_RARROW:=acs_map['+'];
  1425. end;
  1426. function ACS_DARROW : chtype;
  1427. begin
  1428. ACS_DARROW:=acs_map['.'];
  1429. end;
  1430. function ACS_UARROW : chtype;
  1431. begin
  1432. ACS_UARROW:=acs_map['-'];
  1433. end;
  1434. function ACS_BOARD : chtype;
  1435. begin
  1436. ACS_BOARD:=acs_map['h'];
  1437. end;
  1438. function ACS_LANTERN : chtype;
  1439. begin
  1440. ACS_LANTERN:=acs_map['i'];
  1441. end;
  1442. function ACS_BLOCK : chtype;
  1443. begin
  1444. ACS_BLOCK:=acs_map['0'];
  1445. end;
  1446. function ACS_S3 : chtype;
  1447. begin
  1448. ACS_S3 :=acs_map['p'];
  1449. end;
  1450. function ACS_S7 : chtype;
  1451. begin
  1452. ACS_S7 :=acs_map['r'];
  1453. end;
  1454. function ACS_LEQUAL : chtype;
  1455. begin
  1456. ACS_LEQUAL:=acs_map['y'];
  1457. end;
  1458. function ACS_GEQUAL : chtype;
  1459. begin
  1460. ACS_GEQUAL:=acs_map['z'];
  1461. end;
  1462. function ACS_PI : chtype;
  1463. begin
  1464. ACS_PI :=acs_map['{'];
  1465. end;
  1466. function ACS_NEQUAL : chtype;
  1467. begin
  1468. ACS_NEQUAL:=acs_map['|'];
  1469. end;
  1470. function ACS_STERLING : chtype;
  1471. begin
  1472. ACS_STERLING:=acs_map['}'];
  1473. end;
  1474. end.
  1475. {
  1476. $Log$
  1477. Revision 1.6 2003-10-15 17:04:40 florian
  1478. + some print functions added
  1479. Revision 1.5 2003/02/09 19:10:13 marco
  1480. OpenBSD links curses, not ncurses
  1481. Revision 1.4 2003/02/09 19:05:05 marco
  1482. * And now with new refreshing "external;" added.
  1483. Revision 1.3 2003/02/09 16:22:51 marco
  1484. * xx : thetype; external name ='xx'; to xx :thetype; cvar;
  1485. Revision 1.2 2002/09/07 15:43:01 peter
  1486. * old logs removed and tabs fixed
  1487. Revision 1.1 2002/01/29 17:55:17 peter
  1488. * splitted to base and extra
  1489. }