reqtools.pas 38 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222
  1. {
  2. This file is part of the Free Pascal run time library.
  3. A file in Amiga system run time library.
  4. Copyright (c) 1998-2002 by Nils Sjoholm
  5. member of the Amiga RTL development team.
  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. History:
  14. Added overlay functions for Pchar->Strings, functions
  15. and procedures.
  16. 14 Jul 2000.
  17. Added MessageBox for error report.
  18. 31 Jul 2000.
  19. Added functions and procedures with array of const.
  20. For use with fpc 1.0.
  21. 07 Dec 2002.
  22. Added the defines use_amiga_smartlink and
  23. use_auto_openlib.
  24. 12 Jan 2003.
  25. Changed startcode for unit.
  26. 11 Feb 2003.
  27. [email protected]
  28. }
  29. {$mode objfpc}
  30. {$I useamigasmartlink.inc}
  31. {$ifdef use_amiga_smartlink}
  32. {$smartlink on}
  33. {$endif use_amiga_smartlink}
  34. UNIT REQTOOLS;
  35. INTERFACE
  36. USES Exec, intuition, amigados, diskfont, graphics, utility;
  37. {***********************
  38. * *
  39. * Preferences *
  40. * *
  41. ***********************}
  42. CONST RTPREF_FILEREQ = 0;
  43. RTPREF_FONTREQ = 1;
  44. RTPREF_PALETTEREQ = 2;
  45. RTPREF_SCREENMODEREQ = 3;
  46. RTPREF_VOLUMEREQ = 4;
  47. RTPREF_OTHERREQ = 5;
  48. RTPREF_NR_OF_REQ = 6;
  49. Type
  50. pReqDefaults = ^tReqDefaults;
  51. tReqDefaults = Record
  52. Size : ULONG;
  53. ReqPos : ULONG;
  54. LeftOffset : WORD;
  55. TopOffset : WORD;
  56. MinEntries : WORD;
  57. MaxEntries : WORD;
  58. END;
  59. pReqToolsPrefs = ^tReqToolsPrefs;
  60. tReqToolsPrefs = Record
  61. { Size of preferences (_without_ this field and the semaphore) }
  62. PrefsSize : ULONG;
  63. PrefsSemaphore : tSignalSemaphore;
  64. { Start of real preferences }
  65. Flags : ULONG;
  66. ReqDefaults : ARRAY [0..RTPREF_NR_OF_REQ-1] OF tReqDefaults;
  67. END;
  68. CONST
  69. RTPREFS_SIZE = 100;
  70. { Flags }
  71. RTPRB_DIRSFIRST = 0;
  72. RTPRF_DIRSFIRST = 1;
  73. RTPRB_DIRSMIXED = 1;
  74. RTPRF_DIRSMIXED = 2;
  75. RTPRB_IMMSORT = 2;
  76. RTPRF_IMMSORT = 4;
  77. RTPRB_NOSCRTOFRONT = 3;
  78. RTPRF_NOSCRTOFRONT = 8;
  79. RTPRB_NOLED = 4;
  80. RTPRF_NOLED = 16;
  81. RTPRB_DEFAULTFONT = 5;
  82. RTPRF_DEFAULTFONT = 32;
  83. RTPRB_DOWHEEL = 6;
  84. RTPRF_DOWHEEL = 64;
  85. RTPRB_FKEYS = 7;
  86. RTPRF_FKEYS = 128;
  87. RTPRB_FANCYWHEEL = 8;
  88. RTPRF_FANCYWHEEL = 256;
  89. RTPRB_MMBPARENT = 9;
  90. RTPRF_MMBPARENT = 512;
  91. {***********************
  92. * *
  93. * Library Base *
  94. * *
  95. ***********************}
  96. Const
  97. REQTOOLSNAME : PChar = 'reqtools.library';
  98. REQTOOLSVERSION = 38;
  99. Type
  100. pReqToolsBase = ^tReqToolsBase;
  101. tReqToolsBase = Record
  102. LibNode : pLibrary;
  103. RTFlags : Byte;
  104. Pad : Array[0..2] of Byte;
  105. SegList : BPTR;
  106. { The following library bases may be read and used by your program }
  107. IntuitionBase : pLibrary;
  108. GfxBase : pLibrary;
  109. DOSBase : pLibrary;
  110. { Next two library bases are only (and always) valid on Kickstart 2.0!
  111. (1.3 version of reqtools also initializes these when run on 2.0) }
  112. GadToolsBase : pLibrary;
  113. UtilityBase : pLibrary;
  114. { PRIVATE FIELDS, THESE WILL CHANGE FROM RELEASE TO RELEASE! }
  115. { The RealOpenCnt is for the buffered AvailFonts feature. Since
  116. Kickstart 3.0 offers low memory handlers a release of ReqTools for 3.0
  117. will not use this field and start using the normal OpenCnt again. }
  118. RealOpenCnt : WORD;
  119. AvailFontsLock : WORD;
  120. AvailFontsHeader : pAvailFontsHeader;
  121. FontsAssignType : ULONG;
  122. FontsAssignLock : BPTR;
  123. FontsAssignList : pAssignList;
  124. ReqToolsPrefs : tReqToolsPrefs;
  125. prefspad : WORD;
  126. end;
  127. Const
  128. { types of requesters, for rtAllocRequestA() }
  129. RT_FILEREQ = 0;
  130. RT_REQINFO = 1;
  131. RT_FONTREQ = 2;
  132. { (V38) }
  133. RT_SCREENMODEREQ = 3;
  134. {***********************
  135. * *
  136. * File requester *
  137. * *
  138. ***********************}
  139. type
  140. { structure _MUST_ be allocated with rtAllocRequest() }
  141. prtFileRequester = ^trtFileRequester;
  142. trtFileRequester = Record
  143. ReqPos : ULONG;
  144. LeftOffset : WORD;
  145. TopOffset : WORD;
  146. Flags : ULONG;
  147. { OBSOLETE IN V38! DON'T USE! } Hook: pHook;
  148. Dir : STRPTR; { READ ONLY! Change with rtChangeReqAttrA()! }
  149. MatchPat : STRPTR; { READ ONLY! Change with rtChangeReqAttrA()! }
  150. DefaultFont : pTextFont;
  151. WaitPointer : ULONG;
  152. { (V38) }
  153. LockWindow : ULONG;
  154. ShareIDCMP : ULONG;
  155. IntuiMsgFunc: pHook;
  156. reserved1 : WORD;
  157. reserved2 : WORD;
  158. reserved3 : WORD;
  159. ReqHeight : WORD; { READ ONLY! Use RTFI_Height tag! }
  160. { Private data follows! HANDS OFF }
  161. end;
  162. { returned by rtFileRequestA() if multiselect is enabled,
  163. free list with rtFreeFileList() }
  164. prtFileList = ^trtFileList;
  165. trtFileList = Record
  166. Next : prtFileList;
  167. StrLen : ULONG; { -1 for directories }
  168. Name : STRPTR;
  169. end;
  170. { structure passed to RTFI_FilterFunc callback hook by
  171. volume requester (see RTFI_VolumeRequest tag) }
  172. prtVolumeEntry = ^trtVolumeEntry;
  173. trtVolumeEntry = Record
  174. Type_ : ULONG; { DLT_DEVICE or DLT_DIRECTORY }
  175. Name : STRPTR;
  176. END;
  177. {***********************
  178. * *
  179. * Font requester *
  180. * *
  181. ***********************}
  182. { structure _MUST_ be allocated with rtAllocRequest() }
  183. prtFontRequester = ^trtFontRequester;
  184. trtFontRequester = Record
  185. ReqPos : ULONG;
  186. LeftOffset : WORD;
  187. TopOffset : WORD;
  188. Flags : ULONG;
  189. { OBSOLETE IN V38! DON'T USE! } Hook: pHook;
  190. Attr : tTextAttr; { READ ONLY! }
  191. DefaultFont : pTextFont;
  192. WaitPointer : ULONG;
  193. { (V38) }
  194. LockWindow : ULONG;
  195. ShareIDCMP : ULONG;
  196. IntuiMsgFunc : pHook;
  197. reserved1 : WORD;
  198. reserved2 : WORD;
  199. reserved3 : WORD;
  200. ReqHeight : WORD; { READ ONLY! Use RTFO_Height tag! }
  201. { Private data follows! HANDS OFF }
  202. end;
  203. {*************************
  204. * *
  205. * ScreenMode requester *
  206. * *
  207. *************************}
  208. { structure _MUST_ be allocated with rtAllocRequest() }
  209. prtScreenModeRequester = ^trtScreenModeRequester;
  210. trtScreenModeRequester = Record
  211. ReqPos : ULONG;
  212. LeftOffset : WORD;
  213. TopOffset : WORD;
  214. Flags : ULONG;
  215. private1 : ULONG;
  216. DisplayID : ULONG; { READ ONLY! }
  217. DisplayWidth: WORD; { READ ONLY! }
  218. DisplayHeight: WORD; { READ ONLY! }
  219. DefaultFont : pTextFont;
  220. WaitPointer : ULONG;
  221. LockWindow : ULONG;
  222. ShareIDCMP : ULONG;
  223. IntuiMsgFunc: pHook;
  224. reserved1 : WORD;
  225. reserved2 : WORD;
  226. reserved3 : WORD;
  227. ReqHeight : WORD; { READ ONLY! Use RTSC_Height tag! }
  228. DisplayDepth: WORD; { READ ONLY! }
  229. OverscanType: WORD; { READ ONLY! }
  230. AutoScroll : ULONG; { READ ONLY! }
  231. { Private data follows! HANDS OFF }
  232. end;
  233. {***********************
  234. * *
  235. * Requester Info *
  236. * *
  237. ***********************}
  238. { for rtEZRequestA(), rtGetLongA(), rtGetStringA() and rtPaletteRequestA(),
  239. _MUST_ be allocated with rtAllocRequest() }
  240. prtReqInfo = ^trtReqInfo;
  241. trtReqInfo = Record
  242. ReqPos : ULONG;
  243. LeftOffset : WORD;
  244. TopOffset : WORD;
  245. Width : ULONG; { not for rtEZRequestA() }
  246. ReqTitle : STRPTR; { currently only for rtEZRequestA() }
  247. Flags : ULONG; { currently only for rtEZRequestA() }
  248. DefaultFont : pTextFont; { currently only for rtPaletteRequestA() }
  249. WaitPointer : ULONG;
  250. { (V38) }
  251. LockWindow : ULONG;
  252. ShareIDCMP : ULONG;
  253. IntuiMsgFunc: pHook;
  254. { structure may be extended in future }
  255. end;
  256. {***********************
  257. * *
  258. * Handler Info *
  259. * *
  260. ***********************}
  261. { for rtReqHandlerA(), will be allocated for you when you use
  262. the RT_ReqHandler tag, never try to allocate this yourself! }
  263. prtHandlerInfo = ^trtHandlerInfo;
  264. trtHandlerInfo = Record
  265. private1 : ULONG;
  266. WaitMask : ULONG;
  267. DoNotWait : ULONG;
  268. { Private data follows, HANDS OFF }
  269. end;
  270. Const
  271. { possible return codes from rtReqHandlerA() }
  272. CALL_HANDLER = $80000000;
  273. {*************************************
  274. * *
  275. * TAGS *
  276. * *
  277. *************************************}
  278. RT_TagBase = TAG_USER;
  279. { *** tags understood by most requester functions *** }
  280. RT_Window = $80000001; { Optional pointer to window }
  281. RT_IDCMPFlags = $80000002; { idcmp flags requester should abort on (useful for
  282. IDCMP_DISKINSERTED) }
  283. RT_ReqPos = $80000003; { position of requester window (see below) - default
  284. REQPOS_POINTER }
  285. RT_LeftOffset = $80000004; { signal mask to wait for abort signal }
  286. RT_TopOffset = $80000005; { topedge offset of requester relative to position
  287. specified by RT_ReqPos }
  288. RT_PubScrName = $80000006; { name of public screen to put requester on (Kickstart
  289. 2.0 only!) }
  290. RT_Screen = $80000007; { address of screen to put requester on }
  291. RT_ReqHandler = $80000008; { tagdata must hold the address of (!) an APTR variable }
  292. RT_DefaultFont = $80000009; { font to use when screen font is rejected, _MUST_ be
  293. fixed-width font! pTextFont , not pTextAttr ) - default GfxBase^.DefaultFont }
  294. RT_WaitPointer = $8000000A; { boolean to set the standard wait pointer in window -
  295. default FALSE }
  296. RT_Underscore = $8000000B; { (V38) char preceding keyboard shortcut characters (will
  297. be underlined) }
  298. RT_ShareIDCMP = $8000000C; { (V38) share IDCMP port with window - default FALSE }
  299. RT_LockWindow = $8000000D; { (V38) lock window and set standard wait pointer -
  300. default FALSE }
  301. RT_ScreenToFront= $8000000E; { (V38) boolean to make requester's screen pop to front -
  302. default TRUE }
  303. RT_TextAttr = $8000000F; { (V38) Requester should use this font - default: screen
  304. font }
  305. RT_IntuiMsgFunc = $80000010; { (V38) call this hook for every IDCMP message not for
  306. requester }
  307. RT_Locale = $80000011; { (V38) Locale ReqTools should use for text }
  308. { *** tags specific to rtEZRequestA *** }
  309. RTEZ_ReqTitle = $80000014; { title of requester window - english default "Request"
  310. or "Information" }
  311. { ($80000015) reserved }
  312. RTEZ_Flags = $80000016; { various flags (see below) }
  313. RTEZ_DefaultResponse
  314. = $80000017; { default response (activated by pressing RETURN) -
  315. default TRUE }
  316. { *** tags specific to rtGetLongA *** }
  317. RTGL_Min = $8000001E; { minimum allowed value - default MININT }
  318. RTGL_Max = $8000001F; { maximum allowed value - default MAXINT }
  319. RTGL_Width = $80000020; { suggested width of requester window (in pixels) }
  320. RTGL_ShowDefault= $80000021; { boolean to show the default value - default TRUE }
  321. RTGL_GadFmt = $80000022; { (V38) string with possible responses - english default
  322. " _Ok |_Cancel" }
  323. RTGL_GadFmtArgs = $80000023; { (V38) optional arguments for RTGL_GadFmt }
  324. RTGL_Invisible = $80000024; { (V38) invisible typing - default FALSE }
  325. RTGL_Backfill = $80000025; { (V38) window backfill - default TRUE }
  326. RTGL_TextFmt = $80000026; { (V38) optional text above gadget }
  327. RTGL_TextFmtArgs= $80000027; { (V38) optional arguments for RTGS_TextFmt }
  328. RTGL_Flags = RTEZ_Flags; { (V38) various flags (see below) }
  329. { *** tags specific to rtGetStringA *** }
  330. RTGS_Width = RTGL_Width; { suggested width of requester window (in pixels)
  331. }
  332. RTGS_AllowEmpty = $80000050; { allow empty string to be accepted - default
  333. FALSE }
  334. RTGS_GadFmt = RTGL_GadFmt; { (V38) string with possible responses - english
  335. default " _Ok |_Cancel" }
  336. RTGS_GadFmtArgs = RTGL_GadFmtArgs; { (V38) optional arguments for RTGS_GadFmt }
  337. RTGS_Invisible = RTGL_Invisible; { (V38) invisible typing - default FALSE }
  338. RTGS_Backfill = RTGL_Backfill; { (V38) window backfill - default TRUE }
  339. RTGS_TextFmt = RTGL_TextFmt; { (V38) optional text above gadget }
  340. RTGS_TextFmtArgs= RTGL_TextFmtArgs; { (V38) optional arguments for RTGS_TextFmt }
  341. RTGS_Flags = RTEZ_Flags; { (V38) various flags (see below) }
  342. { *** tags specific to rtFileRequestA *** }
  343. RTFI_Flags = $80000028; { various flags (see below) }
  344. RTFI_Height = $80000029; { suggested height of file requester }
  345. RTFI_OkText = $8000002A; { replacement text for 'Ok' gadget (max 6 chars) }
  346. RTFI_VolumeRequest=$8000002B;{ (V38) bring up volume requester, tag data holds flags
  347. (see below) }
  348. RTFI_FilterFunc = $8000002C; { (V38) call this hook for every file in the directory }
  349. RTFI_AllowEmpty = $8000002D; { (V38) allow empty file to be accepted - default FALSE }
  350. { *** tags specific to rtFontRequestA *** }
  351. RTFO_Flags = RTFI_Flags; { various flags (see below) }
  352. RTFO_Height = RTFI_Height; { suggested height of font requester }
  353. RTFO_OkText = RTFI_OkText; { replacement text for 'Ok' gadget (max 6 chars) }
  354. RTFO_SampleHeight=$8000003C; { suggested height of font sample display - default 24
  355. }
  356. RTFO_MinHeight = $8000003D; { minimum height of font displayed }
  357. RTFO_MaxHeight = $8000003E; { maximum height of font displayed }
  358. { [($8000003F) to ($80000042) used below] }
  359. RTFO_FilterFunc = RTFI_FilterFunc;{ (V38) call this hook for every font }
  360. { *** (V38) tags for rtScreenModeRequestA *** }
  361. RTSC_Flags = RTFI_Flags;{ various flags (see below) }
  362. RTSC_Height = RTFI_Height;{ suggested height of screenmode requester }
  363. RTSC_OkText = RTFI_OkText;{ replacement text for 'Ok' gadget (max 6 chars) }
  364. RTSC_PropertyFlags = $8000005A;{ property flags (see also RTSC_PropertyMask) }
  365. RTSC_PropertyMask = $8000005B;{ property mask - default all bits in
  366. RTSC_PropertyFlags considered }
  367. RTSC_MinWidth = $8000005C;{ minimum display width allowed }
  368. RTSC_MaxWidth = $8000005D;{ maximum display width allowed }
  369. RTSC_MinHeight = $8000005E;{ minimum display height allowed }
  370. RTSC_MaxHeight = $8000005F;{ maximum display height allowed }
  371. RTSC_MinDepth = $80000060;{ minimum display depth allowed }
  372. RTSC_MaxDepth = $80000061;{ maximum display depth allowed }
  373. RTSC_FilterFunc = RTFI_FilterFunc;{ call this hook for every display mode id }
  374. { *** tags for rtChangeReqAttrA *** }
  375. RTFI_Dir = $80000032;{ file requester - set directory }
  376. RTFI_MatchPat = $80000033;{ file requester - set wildcard pattern }
  377. RTFI_AddEntry = $80000034;{ file requester - add a file or directory to the buffer }
  378. RTFI_RemoveEntry = $80000035;{ file requester - remove a file or directory from the
  379. buffer }
  380. RTFO_FontName = $8000003F;{ font requester - set font name of selected font }
  381. RTFO_FontHeight = $80000040;{ font requester - set font size }
  382. RTFO_FontStyle = $80000041;{ font requester - set font style }
  383. RTFO_FontFlags = $80000042;{ font requester - set font flags }
  384. RTSC_ModeFromScreen = $80000050;{ (V38) screenmode requester - get display attributes
  385. from screen }
  386. RTSC_DisplayID = $80000051;{ (V38) screenmode requester - set display mode id (32-bit
  387. extended) }
  388. RTSC_DisplayWidth = $80000052;{ (V38) screenmode requester - set display width }
  389. RTSC_DisplayHeight = $80000053;{ (V38) screenmode requester - set display height }
  390. RTSC_DisplayDepth = $80000054;{ (V38) screenmode requester - set display depth }
  391. RTSC_OverscanType = $80000055;{ (V38) screenmode requester - set overscan type, 0 for
  392. regular size }
  393. RTSC_AutoScroll = $80000056;{ (V38) screenmode requester - set autoscroll }
  394. { *** tags for rtPaletteRequestA *** }
  395. { initially selected color - default 1 }
  396. RTPA_Color = $80000046;
  397. { *** tags for rtReqHandlerA *** }
  398. { end requester by software control, set tagdata to REQ_CANCEL, REQ_OK or
  399. in case of rtEZRequest to the return value }
  400. RTRH_EndRequest = $800003C;
  401. { *** tags for rtAllocRequestA *** }
  402. { no tags defined yet }
  403. {************
  404. * RT_ReqPos *
  405. ************}
  406. REQPOS_POINTER = 0;
  407. REQPOS_CENTERWIN = 1;
  408. REQPOS_CENTERSCR = 2;
  409. REQPOS_TOPLEFTWIN = 3;
  410. REQPOS_TOPLEFTSCR = 4;
  411. {******************
  412. * RTRH_EndRequest *
  413. ******************}
  414. REQ_CANCEL = 0;
  415. REQ_OK = 1;
  416. {***************************************
  417. * flags for RTFI_Flags and RTFO_Flags *
  418. * or filereq->Flags and fontreq->Flags *
  419. ***************************************}
  420. FREQB_NOBUFFER = 2;
  421. FREQF_NOBUFFER = 4;
  422. {*****************************************
  423. * flags for RTFI_Flags or filereq->Flags *
  424. *****************************************}
  425. FREQB_MULTISELECT = 0;
  426. FREQF_MULTISELECT = 1;
  427. FREQB_SAVE = 1;
  428. FREQF_SAVE = 2;
  429. FREQB_NOFILES = 3;
  430. FREQF_NOFILES = 8;
  431. FREQB_PATGAD = 4;
  432. FREQF_PATGAD = 16;
  433. FREQB_SELECTDIRS = 12;
  434. FREQF_SELECTDIRS = 4096;
  435. {*****************************************
  436. * flags for RTFO_Flags or fontreq->Flags *
  437. *****************************************}
  438. FREQB_FIXEDWIDTH = 5;
  439. FREQF_FIXEDWIDTH = 32;
  440. FREQB_COLORFONTS = 6;
  441. FREQF_COLORFONTS = 64;
  442. FREQB_CHANGEPALETTE = 7;
  443. FREQF_CHANGEPALETTE = 128;
  444. FREQB_LEAVEPALETTE = 8;
  445. FREQF_LEAVEPALETTE = 256;
  446. FREQB_SCALE = 9;
  447. FREQF_SCALE = 512;
  448. FREQB_STYLE = 10;
  449. FREQF_STYLE = 1024;
  450. {*****************************************************
  451. * (V38) flags for RTSC_Flags or screenmodereq->Flags *
  452. *****************************************************}
  453. SCREQB_SIZEGADS = 13;
  454. SCREQF_SIZEGADS = 8192;
  455. SCREQB_DEPTHGAD = 14;
  456. SCREQF_DEPTHGAD = 16384;
  457. SCREQB_NONSTDMODES = 15;
  458. SCREQF_NONSTDMODES = 32768;
  459. SCREQB_GUIMODES = 16;
  460. SCREQF_GUIMODES = 65536;
  461. SCREQB_AUTOSCROLLGAD = 18;
  462. SCREQF_AUTOSCROLLGAD = 262144;
  463. SCREQB_OVERSCANGAD = 19;
  464. SCREQF_OVERSCANGAD = 524288;
  465. {*****************************************
  466. * flags for RTEZ_Flags or reqinfo->Flags *
  467. *****************************************}
  468. EZREQB_NORETURNKEY = 0;
  469. EZREQF_NORETURNKEY = 1;
  470. EZREQB_LAMIGAQUAL = 1;
  471. EZREQF_LAMIGAQUAL = 2;
  472. EZREQB_CENTERTEXT = 2;
  473. EZREQF_CENTERTEXT = 4;
  474. {***********************************************
  475. * (V38) flags for RTGL_Flags or reqinfo->Flags *
  476. ***********************************************}
  477. GLREQB_CENTERTEXT = EZREQB_CENTERTEXT;
  478. GLREQF_CENTERTEXT = EZREQF_CENTERTEXT;
  479. GLREQB_HIGHLIGHTTEXT = 3;
  480. GLREQF_HIGHLIGHTTEXT = 8;
  481. {***********************************************
  482. * (V38) flags for RTGS_Flags or reqinfo->Flags *
  483. ***********************************************}
  484. GSREQB_CENTERTEXT = EZREQB_CENTERTEXT;
  485. GSREQF_CENTERTEXT = EZREQF_CENTERTEXT;
  486. GSREQB_HIGHLIGHTTEXT = GLREQB_HIGHLIGHTTEXT;
  487. GSREQF_HIGHLIGHTTEXT = GLREQF_HIGHLIGHTTEXT;
  488. {*****************************************
  489. * (V38) flags for RTFI_VolumeRequest tag *
  490. *****************************************}
  491. VREQB_NOASSIGNS = 0;
  492. VREQF_NOASSIGNS = 1;
  493. VREQB_NODISKS = 1;
  494. VREQF_NODISKS = 2;
  495. VREQB_ALLDISKS = 2;
  496. VREQF_ALLDISKS = 4;
  497. {*
  498. Following things are obsolete in ReqTools V38.
  499. DON'T USE THESE IN NEW CODE!
  500. *}
  501. REQHOOK_WILDFILE = 0;
  502. REQHOOK_WILDFONT = 1;
  503. FREQB_DOWILDFUNC = 11;
  504. FREQF_DOWILDFUNC = 2048;
  505. VAR ReqToolsBase : pLibrary;
  506. FUNCTION rtAllocRequestA(typ : ULONG; taglist : pTagItem) : POINTER;
  507. FUNCTION rtChangeReqAttrA(req : POINTER; taglist : pTagItem) : LONGINT;
  508. PROCEDURE rtCloseWindowSafely(win : pWindow);
  509. FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
  510. FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : PChar; taglist : pTagItem) : POINTER;
  511. FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : PChar; taglist : pTagItem) : ULONG;
  512. PROCEDURE rtFreeFileList(filelist : prtFileList);
  513. PROCEDURE rtFreeReqBuffer(req : POINTER);
  514. PROCEDURE rtFreeRequest(req : POINTER);
  515. FUNCTION rtGetLongA(VAR longptr : ULONG; title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
  516. FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
  517. FUNCTION rtGetVScreenSize(screen : pScreen; VAR widthptr : ULONG; VAR heightptr : ULONG) : ULONG;
  518. FUNCTION rtLockWindow(win : pWindow) : POINTER;
  519. FUNCTION rtPaletteRequestA(title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) : LONGINT;
  520. FUNCTION rtReqHandlerA(handlerinfo : prtHandlerInfo; sigs : ULONG; taglist : pTagItem) : ULONG;
  521. FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : PChar; taglist : pTagItem) : ULONG;
  522. PROCEDURE rtScreenToFrontSafely(screen : pScreen);
  523. PROCEDURE rtSetReqPosition(reqpos : ULONG; newwindow : pNewWindow; screen : pScreen; window : pWindow);
  524. PROCEDURE rtSetWaitPointer(window : pWindow);
  525. PROCEDURE rtSpread(VAR posarray : ULONG; VAR sizearray : ULONG; length : ULONG; min : ULONG; max : ULONG; num : ULONG);
  526. PROCEDURE rtUnlockWindow(win : pWindow; winlock : POINTER);
  527. {
  528. This is functions and procedures with array of const.
  529. For use with fpc 1.0 and above.
  530. }
  531. FUNCTION rtAllocRequest(typ : ULONG; const argv : Array Of Const) : POINTER;
  532. FUNCTION rtChangeReqAttr(req : POINTER; const argv : Array Of Const) : LONGINT;
  533. FUNCTION rtEZRequest(bodyfmt : PChar; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  534. FUNCTION rtFileRequest(filereq : prtFileRequester; filebuf : PChar; title : PChar; const argv : Array Of Const) : POINTER;
  535. FUNCTION rtFontRequest(fontreq : prtFontRequester; title : PChar; const argv : Array Of Const) : ULONG;
  536. FUNCTION rtGetLong(VAR longptr : ULONG; title : PChar; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  537. FUNCTION rtGetString(buffer : pCHAR; maxchars : ULONG; title : PChar; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  538. FUNCTION rtPaletteRequest(title : PChar; reqinfo : prtReqInfo; const argv : Array Of Const) : LONGINT;
  539. FUNCTION rtReqHandler(handlerinfo : prtHandlerInfo; sigs : ULONG; const argv : Array Of Const) : ULONG;
  540. FUNCTION rtScreenModeRequest(screenmodereq : prtScreenModeRequester; title : PChar; const argv : Array Of Const) : ULONG;
  541. {overlay functions}
  542. FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
  543. FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
  544. FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; taglist : pTagItem) : ULONG;
  545. FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : String; taglist : pTagItem) : POINTER;
  546. FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : String; taglist : pTagItem) : ULONG;
  547. FUNCTION rtGetLongA(VAR longptr : ULONG; title : String; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
  548. FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : String; reqinfo : prtReqInfo; taglist : pTagItem) : ULONG;
  549. FUNCTION rtPaletteRequestA(title : String; reqinfo : prtReqInfo; taglist : pTagItem) : LONGINT;
  550. FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : String; taglist : pTagItem) : ULONG;
  551. {
  552. This is functions and procedures with array of const.
  553. For use with fpc 1.0 and above. + overlay
  554. }
  555. FUNCTION rtEZRequest(bodyfmt : PChar; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  556. FUNCTION rtEZRequest(bodyfmt : String; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  557. FUNCTION rtEZRequest(bodyfmt : String; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  558. FUNCTION rtFileRequest(filereq : prtFileRequester; filebuf : PChar; title : String; const argv : Array Of Const) : POINTER;
  559. FUNCTION rtFontRequest(fontreq : prtFontRequester; title : String; const argv : Array Of Const) : ULONG;
  560. FUNCTION rtGetLong(VAR longptr : ULONG; title : String; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  561. FUNCTION rtGetString(buffer : pCHAR; maxchars : ULONG; title : String; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  562. FUNCTION rtPaletteRequest(title : String; reqinfo : prtReqInfo; const argv : Array Of Const) : LONGINT;
  563. FUNCTION rtScreenModeRequest(screenmodereq : prtScreenModeRequester; title : String; const argv : Array Of Const) : ULONG;
  564. {You can remove this include and use a define instead}
  565. {$I useautoopenlib.inc}
  566. {$ifdef use_init_openlib}
  567. procedure InitREQTOOLSLibrary;
  568. {$endif use_init_openlib}
  569. {This is a variable that knows how the unit is compiled}
  570. var
  571. REQTOOLSIsCompiledHow : longint;
  572. IMPLEMENTATION
  573. uses
  574. {$ifndef dont_use_openlib}
  575. msgbox,
  576. {$endif dont_use_openlib}
  577. tagsarray,pastoc;
  578. FUNCTION rtAllocRequestA(typ : ULONG; taglist : pTagItem) : POINTER;
  579. BEGIN
  580. ASM
  581. MOVE.L A6,-(A7)
  582. MOVE.L typ,D0
  583. MOVEA.L taglist,A0
  584. MOVEA.L ReqToolsBase,A6
  585. JSR -030(A6)
  586. MOVEA.L (A7)+,A6
  587. MOVE.L D0,@RESULT
  588. END;
  589. END;
  590. FUNCTION rtChangeReqAttrA(req : POINTER; taglist : pTagItem) : LONGINT;
  591. BEGIN
  592. ASM
  593. MOVE.L A6,-(A7)
  594. MOVEA.L req,A1
  595. MOVEA.L taglist,A0
  596. MOVEA.L ReqToolsBase,A6
  597. JSR -048(A6)
  598. MOVEA.L (A7)+,A6
  599. MOVE.L D0,@RESULT
  600. END;
  601. END;
  602. PROCEDURE rtCloseWindowSafely(win : pWindow);
  603. BEGIN
  604. ASM
  605. MOVE.L A6,-(A7)
  606. MOVEA.L win,A0
  607. MOVEA.L ReqToolsBase,A6
  608. JSR -150(A6)
  609. MOVEA.L (A7)+,A6
  610. END;
  611. END;
  612. FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : PChar; reqinfo : prtReqInfo; argarray
  613. : POINTER; taglist : pTagItem) : ULONG;
  614. BEGIN
  615. ASM
  616. MOVE.L A6,-(A7)
  617. MOVEA.L bodyfmt,A1
  618. MOVEA.L gadfmt,A2
  619. MOVEA.L reqinfo,A3
  620. MOVEA.L argarray,A4
  621. MOVEA.L taglist,A0
  622. MOVEA.L ReqToolsBase,A6
  623. JSR -066(A6)
  624. MOVEA.L (A7)+,A6
  625. MOVE.L D0,@RESULT
  626. END;
  627. END;
  628. FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : PChar;
  629. taglist : pTagItem) : POINTER;
  630. BEGIN
  631. ASM
  632. MOVE.L A6,-(A7)
  633. MOVEA.L filereq,A1
  634. MOVEA.L filebuf,A2
  635. MOVEA.L title,A3
  636. MOVEA.L taglist,A0
  637. MOVEA.L ReqToolsBase,A6
  638. JSR -054(A6)
  639. MOVEA.L (A7)+,A6
  640. MOVE.L D0,@RESULT
  641. END;
  642. END;
  643. FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : PChar; taglist : pTagItem)
  644. : ULONG;
  645. BEGIN
  646. ASM
  647. MOVE.L A6,-(A7)
  648. MOVEA.L fontreq,A1
  649. MOVEA.L title,A3
  650. MOVEA.L taglist,A0
  651. MOVEA.L ReqToolsBase,A6
  652. JSR -096(A6)
  653. MOVEA.L (A7)+,A6
  654. MOVE.L D0,@RESULT
  655. END;
  656. END;
  657. PROCEDURE rtFreeFileList(filelist : prtFileList);
  658. BEGIN
  659. ASM
  660. MOVE.L A6,-(A7)
  661. MOVEA.L filelist,A0
  662. MOVEA.L ReqToolsBase,A6
  663. JSR -060(A6)
  664. MOVEA.L (A7)+,A6
  665. END;
  666. END;
  667. PROCEDURE rtFreeReqBuffer(req : POINTER);
  668. BEGIN
  669. ASM
  670. MOVE.L A6,-(A7)
  671. MOVEA.L req,A1
  672. MOVEA.L ReqToolsBase,A6
  673. JSR -042(A6)
  674. MOVEA.L (A7)+,A6
  675. END;
  676. END;
  677. PROCEDURE rtFreeRequest(req : POINTER);
  678. BEGIN
  679. ASM
  680. MOVE.L A6,-(A7)
  681. MOVEA.L req,A1
  682. MOVEA.L ReqToolsBase,A6
  683. JSR -036(A6)
  684. MOVEA.L (A7)+,A6
  685. END;
  686. END;
  687. FUNCTION rtGetLongA(VAR longptr : ULONG; title : PChar; reqinfo : prtReqInfo; taglist
  688. : pTagItem) : ULONG;
  689. BEGIN
  690. ASM
  691. MOVE.L A6,-(A7)
  692. MOVEA.L longptr,A1
  693. MOVEA.L title,A2
  694. MOVEA.L reqinfo,A3
  695. MOVEA.L taglist,A0
  696. MOVEA.L ReqToolsBase,A6
  697. JSR -078(A6)
  698. MOVEA.L (A7)+,A6
  699. MOVE.L D0,@RESULT
  700. END;
  701. END;
  702. FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : PChar; reqinfo :
  703. prtReqInfo; taglist : pTagItem) : ULONG;
  704. BEGIN
  705. ASM
  706. MOVE.L A6,-(A7)
  707. MOVEA.L buffer,A1
  708. MOVE.L maxchars,D0
  709. MOVEA.L title,A2
  710. MOVEA.L reqinfo,A3
  711. MOVEA.L taglist,A0
  712. MOVEA.L ReqToolsBase,A6
  713. JSR -072(A6)
  714. MOVEA.L (A7)+,A6
  715. MOVE.L D0,@RESULT
  716. END;
  717. END;
  718. FUNCTION rtGetVScreenSize(screen : pScreen; VAR widthptr : ULONG; VAR heightptr :
  719. ULONG) : ULONG;
  720. BEGIN
  721. ASM
  722. MOVE.L A6,-(A7)
  723. MOVEA.L screen,A0
  724. MOVEA.L widthptr,A1
  725. MOVEA.L heightptr,A2
  726. MOVEA.L ReqToolsBase,A6
  727. JSR -120(A6)
  728. MOVEA.L (A7)+,A6
  729. MOVE.L D0,@RESULT
  730. END;
  731. END;
  732. FUNCTION rtLockWindow(win : pWindow) : POINTER;
  733. BEGIN
  734. ASM
  735. MOVE.L A6,-(A7)
  736. MOVEA.L win,A0
  737. MOVEA.L ReqToolsBase,A6
  738. JSR -156(A6)
  739. MOVEA.L (A7)+,A6
  740. MOVE.L D0,@RESULT
  741. END;
  742. END;
  743. FUNCTION rtPaletteRequestA(title : PChar; reqinfo : prtReqInfo; taglist : pTagItem) :
  744. LONGINT;
  745. BEGIN
  746. ASM
  747. MOVE.L A6,-(A7)
  748. MOVEA.L title,A2
  749. MOVEA.L reqinfo,A3
  750. MOVEA.L taglist,A0
  751. MOVEA.L ReqToolsBase,A6
  752. JSR -102(A6)
  753. MOVEA.L (A7)+,A6
  754. MOVE.L D0,@RESULT
  755. END;
  756. END;
  757. FUNCTION rtReqHandlerA(handlerinfo : prtHandlerInfo; sigs : ULONG; taglist : pTagItem)
  758. : ULONG;
  759. BEGIN
  760. ASM
  761. MOVE.L A6,-(A7)
  762. MOVEA.L handlerinfo,A1
  763. MOVE.L sigs,D0
  764. MOVEA.L taglist,A0
  765. MOVEA.L ReqToolsBase,A6
  766. JSR -108(A6)
  767. MOVEA.L (A7)+,A6
  768. MOVE.L D0,@RESULT
  769. END;
  770. END;
  771. FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : PChar;
  772. taglist : pTagItem) : ULONG;
  773. BEGIN
  774. ASM
  775. MOVE.L A6,-(A7)
  776. MOVEA.L screenmodereq,A1
  777. MOVEA.L title,A3
  778. MOVEA.L taglist,A0
  779. MOVEA.L ReqToolsBase,A6
  780. JSR -144(A6)
  781. MOVEA.L (A7)+,A6
  782. MOVE.L D0,@RESULT
  783. END;
  784. END;
  785. PROCEDURE rtScreenToFrontSafely(screen : pScreen);
  786. BEGIN
  787. ASM
  788. MOVE.L A6,-(A7)
  789. MOVEA.L screen,A0
  790. MOVEA.L ReqToolsBase,A6
  791. JSR -138(A6)
  792. MOVEA.L (A7)+,A6
  793. END;
  794. END;
  795. PROCEDURE rtSetReqPosition(reqpos : ULONG; newwindow : pNewWindow; screen : pScreen;
  796. window : pWindow);
  797. BEGIN
  798. ASM
  799. MOVE.L A6,-(A7)
  800. MOVE.L reqpos,D0
  801. MOVEA.L newwindow,A0
  802. MOVEA.L screen,A1
  803. MOVEA.L window,A2
  804. MOVEA.L ReqToolsBase,A6
  805. JSR -126(A6)
  806. MOVEA.L (A7)+,A6
  807. END;
  808. END;
  809. PROCEDURE rtSetWaitPointer(window : pWindow);
  810. BEGIN
  811. ASM
  812. MOVE.L A6,-(A7)
  813. MOVEA.L window,A0
  814. MOVEA.L ReqToolsBase,A6
  815. JSR -114(A6)
  816. MOVEA.L (A7)+,A6
  817. END;
  818. END;
  819. PROCEDURE rtSpread(VAR posarray : ULONG; VAR sizearray : ULONG; length : ULONG; min :
  820. ULONG; max : ULONG; num : ULONG);
  821. BEGIN
  822. ASM
  823. MOVE.L A6,-(A7)
  824. MOVEA.L posarray,A0
  825. MOVEA.L sizearray,A1
  826. MOVE.L length,D0
  827. MOVE.L min,D1
  828. MOVE.L max,D2
  829. MOVE.L num,D3
  830. MOVEA.L ReqToolsBase,A6
  831. JSR -132(A6)
  832. MOVEA.L (A7)+,A6
  833. END;
  834. END;
  835. PROCEDURE rtUnlockWindow(win : pWindow; winlock : POINTER);
  836. BEGIN
  837. ASM
  838. MOVE.L A6,-(A7)
  839. MOVEA.L win,A0
  840. MOVEA.L winlock,A1
  841. MOVEA.L ReqToolsBase,A6
  842. JSR -162(A6)
  843. MOVEA.L (A7)+,A6
  844. END;
  845. END;
  846. FUNCTION rtEZRequestA(bodyfmt : PChar; gadfmt : String; reqinfo : prtReqInfo; argarray
  847. : POINTER; taglist : pTagItem) : ULONG;
  848. BEGIN
  849. rtEZRequestA := rtEZRequestA(bodyfmt,pas2c(gadfmt),reqinfo,argarray,taglist);
  850. END;
  851. FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : PChar; reqinfo : prtReqInfo; argarray
  852. : POINTER; taglist : pTagItem) : ULONG;
  853. BEGIN
  854. rtEZRequestA := rtEZRequestA(pas2c(bodyfmt),gadfmt,reqinfo,argarray,taglist);
  855. END;
  856. FUNCTION rtEZRequestA(bodyfmt : String; gadfmt : String; reqinfo : prtReqInfo;
  857. argarray : POINTER; taglist : pTagItem) : ULONG;
  858. BEGIN
  859. rtEZRequestA :=
  860. rtEZRequestA(pas2c(bodyfmt),pas2c(gadfmt),reqinfo,argarray,taglist);
  861. END;
  862. FUNCTION rtFileRequestA(filereq : prtFileRequester; filebuf : PChar; title : String;
  863. taglist : pTagItem) : POINTER;
  864. BEGIN
  865. rtFileRequestA := rtFileRequestA(filereq,filebuf,pas2c(title),taglist);
  866. END;
  867. FUNCTION rtFontRequestA(fontreq : prtFontRequester; title : String; taglist :
  868. pTagItem) : ULONG;
  869. BEGIN
  870. rtFontRequestA := rtFontRequestA(fontreq,pas2c(title),taglist);
  871. END;
  872. FUNCTION rtGetLongA(VAR longptr : ULONG; title : String; reqinfo : prtReqInfo; taglist
  873. : pTagItem) : ULONG;
  874. BEGIN
  875. rtGetLongA := rtGetLongA(longptr,pas2c(title),reqinfo,taglist);
  876. END;
  877. FUNCTION rtGetStringA(buffer : pCHAR; maxchars : ULONG; title : String; reqinfo :
  878. prtReqInfo; taglist : pTagItem) : ULONG;
  879. BEGIN
  880. rtGetStringA := rtGetStringA(buffer,maxchars,pas2c(title),reqinfo,taglist);
  881. END;
  882. FUNCTION rtPaletteRequestA(title : String; reqinfo : prtReqInfo; taglist : pTagItem) :
  883. LONGINT;
  884. BEGIN
  885. rtPaletteRequestA := rtPaletteRequestA(pas2c(title),reqinfo,taglist);
  886. END;
  887. FUNCTION rtScreenModeRequestA(screenmodereq : prtScreenModeRequester; title : String;
  888. taglist : pTagItem) : ULONG;
  889. BEGIN
  890. rtScreenModeRequestA := rtScreenModeRequestA(screenmodereq,pas2c(title),taglist);
  891. END;
  892. FUNCTION rtAllocRequest(typ : ULONG; const argv : Array Of Const) : POINTER;
  893. begin
  894. rtAllocRequest := rtAllocRequestA(typ,readintags(argv));
  895. end;
  896. FUNCTION rtChangeReqAttr(req : POINTER; const argv : Array Of Const) : LONGINT;
  897. begin
  898. rtChangeReqAttr := rtChangeReqAttrA(req,readintags(argv));
  899. end;
  900. FUNCTION rtEZRequest(bodyfmt : PChar; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  901. begin
  902. rtEZRequest := rtEZRequestA(bodyfmt,gadfmt,reqinfo,argarray,readintags(argv));
  903. end;
  904. FUNCTION rtFileRequest(filereq : prtFileRequester; filebuf : PChar; title : PChar; const argv : Array Of Const) : POINTER;
  905. begin
  906. rtFileRequest := rtFileRequestA(filereq,filebuf,title,readintags(argv));
  907. end;
  908. FUNCTION rtFontRequest(fontreq : prtFontRequester; title : PChar; const argv : Array Of Const) : ULONG;
  909. begin
  910. rtFontRequest := rtFontRequestA(fontreq,title,readintags(argv));
  911. end;
  912. FUNCTION rtGetLong(VAR longptr : ULONG; title : PChar; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  913. begin
  914. rtGetLong := rtGetLongA(longptr,title,reqinfo,readintags(argv));
  915. end;
  916. FUNCTION rtGetString(buffer : pCHAR; maxchars : ULONG; title : PChar; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  917. begin
  918. rtGetString := rtGetStringA(buffer,maxchars,title,reqinfo,readintags(argv));
  919. end;
  920. FUNCTION rtPaletteRequest(title : PChar; reqinfo : prtReqInfo; const argv : Array Of Const) : LONGINT;
  921. begin
  922. rtPaletteRequest := rtPaletteRequestA(title,reqinfo,readintags(argv));
  923. end;
  924. FUNCTION rtReqHandler(handlerinfo : prtHandlerInfo; sigs : ULONG; const argv : Array Of Const) : ULONG;
  925. begin
  926. rtReqHandler := rtReqHandlerA(handlerinfo,sigs,readintags(argv));
  927. end;
  928. FUNCTION rtScreenModeRequest(screenmodereq : prtScreenModeRequester; title : PChar; const argv : Array Of Const) : ULONG;
  929. begin
  930. rtScreenModeRequest := rtScreenModeRequestA(screenmodereq,title,readintags(argv));
  931. end;
  932. FUNCTION rtEZRequest(bodyfmt : PChar; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  933. begin
  934. rtEZRequest := rtEZRequestA(bodyfmt,gadfmt,reqinfo,argarray,readintags(argv));
  935. end;
  936. FUNCTION rtEZRequest(bodyfmt : String; gadfmt : PChar; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  937. begin
  938. rtEZRequest := rtEZRequestA(bodyfmt,gadfmt,reqinfo,argarray,readintags(argv));
  939. end;
  940. FUNCTION rtEZRequest(bodyfmt : String; gadfmt : String; reqinfo : prtReqInfo; argarray : POINTER; const argv : Array Of Const) : ULONG;
  941. begin
  942. rtEZRequest := rtEZRequestA(bodyfmt,gadfmt,reqinfo,argarray,readintags(argv));
  943. end;
  944. FUNCTION rtFileRequest(filereq : prtFileRequester; filebuf : PChar; title : String; const argv : Array Of Const) : POINTER;
  945. begin
  946. rtFileRequest := rtFileRequestA(filereq,filebuf,title,readintags(argv));
  947. end;
  948. FUNCTION rtFontRequest(fontreq : prtFontRequester; title : String; const argv : Array Of Const) : ULONG;
  949. begin
  950. rtFontRequest := rtFontRequestA(fontreq,title,readintags(argv));
  951. end;
  952. FUNCTION rtGetLong(VAR longptr : ULONG; title : String; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  953. begin
  954. rtGetLong := rtGetLongA(longptr,title,reqinfo,readintags(argv));
  955. end;
  956. FUNCTION rtGetString(buffer : pCHAR; maxchars : ULONG; title : String; reqinfo : prtReqInfo; const argv : Array Of Const) : ULONG;
  957. begin
  958. rtGetString := rtGetStringA(buffer,maxchars,title,reqinfo,readintags(argv));
  959. end;
  960. FUNCTION rtPaletteRequest(title : String; reqinfo : prtReqInfo; const argv : Array Of Const) : LONGINT;
  961. begin
  962. rtPaletteRequest := rtPaletteRequestA(title,reqinfo,readintags(argv));
  963. end;
  964. FUNCTION rtScreenModeRequest(screenmodereq : prtScreenModeRequester; title : String; const argv : Array Of Const) : ULONG;
  965. begin
  966. rtScreenModeRequest := rtScreenModeRequestA(screenmodereq,title,readintags(argv));
  967. end;
  968. const
  969. { Change VERSION and LIBVERSION to proper values }
  970. VERSION : string[2] = '0';
  971. LIBVERSION : longword = 0;
  972. {$ifdef use_init_openlib}
  973. {$Info Compiling initopening of reqtools.library}
  974. {$Info don't forget to use InitREQTOOLSLibrary in the beginning of your program}
  975. var
  976. reqtools_exit : Pointer;
  977. procedure ClosereqtoolsLibrary;
  978. begin
  979. ExitProc := reqtools_exit;
  980. if ReqToolsBase <> nil then begin
  981. CloseLibrary(ReqToolsBase);
  982. ReqToolsBase := nil;
  983. end;
  984. end;
  985. procedure InitREQTOOLSLibrary;
  986. begin
  987. ReqToolsBase := nil;
  988. ReqToolsBase := OpenLibrary(REQTOOLSNAME,LIBVERSION);
  989. if ReqToolsBase <> nil then begin
  990. reqtools_exit := ExitProc;
  991. ExitProc := @ClosereqtoolsLibrary;
  992. end else begin
  993. MessageBox('FPC Pascal Error',
  994. 'Can''t open reqtools.library version ' + VERSION + #10 +
  995. 'Deallocating resources and closing down',
  996. 'Oops');
  997. halt(20);
  998. end;
  999. end;
  1000. begin
  1001. REQTOOLSIsCompiledHow := 2;
  1002. {$endif use_init_openlib}
  1003. {$ifdef use_auto_openlib}
  1004. {$Info Compiling autoopening of reqtools.library}
  1005. var
  1006. reqtools_exit : Pointer;
  1007. procedure ClosereqtoolsLibrary;
  1008. begin
  1009. ExitProc := reqtools_exit;
  1010. if ReqToolsBase <> nil then begin
  1011. CloseLibrary(ReqToolsBase);
  1012. ReqToolsBase := nil;
  1013. end;
  1014. end;
  1015. begin
  1016. ReqToolsBase := nil;
  1017. ReqToolsBase := OpenLibrary(REQTOOLSNAME,LIBVERSION);
  1018. if ReqToolsBase <> nil then begin
  1019. reqtools_exit := ExitProc;
  1020. ExitProc := @ClosereqtoolsLibrary;
  1021. REQTOOLSIsCompiledHow := 1;
  1022. end else begin
  1023. MessageBox('FPC Pascal Error',
  1024. 'Can''t open reqtools.library version ' + VERSION + #10 +
  1025. 'Deallocating resources and closing down',
  1026. 'Oops');
  1027. halt(20);
  1028. end;
  1029. {$endif use_auto_openlib}
  1030. {$ifdef dont_use_openlib}
  1031. begin
  1032. REQTOOLSIsCompiledHow := 3;
  1033. {$Warning No autoopening of reqtools.library compiled}
  1034. {$Warning Make sure you open reqtools.library yourself}
  1035. {$endif dont_use_openlib}
  1036. END. (* UNIT REQTOOLS *)