ncurses.pp 46 KB

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