triton.pas 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538
  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-2003 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. Updated to triton 2.0. Added function with array of const.
  15. 09 Jan 2003.
  16. Added the defines use_amiga_smartlink and
  17. use_auto_openlib.
  18. 12 Jan 2003.
  19. Changed integer > smallint.
  20. Changed cardinal > longword.
  21. Changed startcode for unit.
  22. 11 Feb 2003.
  23. [email protected] Nils Sjoholm
  24. }
  25. {$mode objfpc}
  26. {$I useamigasmartlink.inc}
  27. {$ifdef use_amiga_smartlink}
  28. {$smartlink on}
  29. {$endif use_amiga_smartlink}
  30. UNIT TRITON;
  31. INTERFACE
  32. uses exec, intuition, graphics, utility;
  33. {* ------------------------------------------------------------------------------ *}
  34. {* library name and version *}
  35. {* ------------------------------------------------------------------------------ *}
  36. CONST TRITONNAME : PChar = 'triton.library';
  37. TRITON10VERSION = 1;
  38. TRITON11VERSION = 2;
  39. TRITON12VERSION = 3;
  40. TRITON13VERSION = 4;
  41. TRITON14VERSION = 5;
  42. TRITON20VERSION = 6;
  43. TRITONVERSION = TRITON20VERSION;
  44. {* ------------------------------------------------------------------------------ *}
  45. {* Triton Message *}
  46. {* ------------------------------------------------------------------------------ *}
  47. TYPE
  48. pTR_Project = ^tTR_Project;
  49. pTR_App = ^tTR_App;
  50. pTR_Message = ^tTR_Message;
  51. tTR_Message = RECORD
  52. trm_Project : pTR_Project; {* the message *}
  53. trm_Id : ULONG; {* The object's ID *}
  54. trm_Class : ULONG; {* The Triton message class *}
  55. trm_Data : ULONG; {* The class-specific data *}
  56. trm_Code : ULONG; {* Currently only used BY *}
  57. {* TRMS_KEYPRESSED *}
  58. trm_Pad0 : ULONG; {* qualifier is only 16 Bit *}
  59. trm_Qualifier : ULONG; {* Qualifiers *}
  60. trm_Seconds : ULONG; {* \ Copy of system clock time *}
  61. trm_Micros : ULONG; {* / (Only where available! IF *}
  62. {* not set, seconds is NULL) *}
  63. trm_App : pTR_App;
  64. END; {* End of TR_Message *}
  65. {* Data for TROM_NEW *}
  66. pTROM_NewDataPtr = ^tTROM_NewData;
  67. tTROM_NewData = record
  68. {* The following elements are set up for the object (read only) *}
  69. project : pTR_Project; {* TR_ProjectPtr; *}
  70. firstitem : pTagItem;
  71. objecttype : ULONG;
  72. grouptype : ULONG;
  73. itemdata : ULONG;
  74. backfilltype : ULONG;
  75. {* The following elements have to be set by the object and read by
  76. class_DisplayObject *}
  77. parseargs : BOOL;
  78. end;
  79. {* Data for TROM_INSTALL *}
  80. pTROM_InstallData = ^tTROM_InstallData;
  81. tTROM_InstallData = record
  82. left : ULONG;
  83. top : ULONG;
  84. width : ULONG;
  85. height : ULONG;
  86. end;
  87. {* Data for TROM_SETATTRIBUTE *}
  88. pTROM_SetAttributeData = ^tTROM_SetAttributeData;
  89. tTROM_SetAttributeData = record
  90. attribute : ULONG;
  91. value : ULONG;
  92. end;
  93. {* Data for TROM_EVENT *}
  94. pTROM_EventData = ^tTROM_EventData;
  95. tTROM_EventData = record
  96. imsg : pIntuiMessage;
  97. end;
  98. {* ------------------------------------------------------------------------------ *}
  99. {* The Application Structure *}
  100. {* ------------------------------------------------------------------------------ *}
  101. tTR_App = RECORD {* This structure is PRIVATE! *}
  102. tra_MemPool : Pointer; {* The memory pool *}
  103. tra_BitMask : ULONG; {* Bits to Wait() for *}
  104. tra_Name : STRPTR; {* Unique name *}
  105. END; {* TR_App *}
  106. pTR_Class = ^tTR_Class;
  107. tTR_Class = RECORD
  108. trc_Node : tMinNode; {* PRIVATE! *}
  109. trc_SuperClass : pTR_Class;
  110. end;
  111. {* ------------------------------------------------------------------------------ *}
  112. {* The Dimension Structure *}
  113. {* ------------------------------------------------------------------------------ *}
  114. pTR_Dimensions = ^tTR_Dimensions;
  115. tTR_Dimensions = RECORD
  116. trd_Left : Word;
  117. trd_Top : Word;
  118. trd_Width : Word;
  119. trd_Height : Word;
  120. trd_Left2 : Word;
  121. trd_Top2 : Word;
  122. trd_Width2 : Word;
  123. trd_Height2 : Word;
  124. trd_Zoomed : BOOL;
  125. reserved : ARRAY [0..2] OF Word;
  126. END; {* TR_Dimensions *}
  127. {* ////////////////////////////////////////////////////////////////////// *}
  128. {* ///////////////////////////// Default classes, attributes and flags // *}
  129. {* ////////////////////////////////////////////////////////////////////// *}
  130. pTROD_Object = ^tTROD_Object;
  131. tTROD_Object = record
  132. Node : tMinNode; {* The node for linking all objects *}
  133. tr_Class : pTR_Class; {* The object's class *}
  134. Project : pTR_Project; {* The object's project *}
  135. Reserved : array [0..5] of ULONG;
  136. end;
  137. pTROD_DisplayObject = ^tTROD_DisplayObject;
  138. tTROD_DisplayObject = record
  139. O : tTROD_Object; {* Superclass object data *}
  140. ID : ULONG; {* The object's ID *}
  141. MinWidth : ULONG; {* The precalculated minimum width *}
  142. MinHeight : ULONG; {* The precalculated minimum height *}
  143. Left : ULONG; {* The X coordinate of the object *}
  144. Top : ULONG; {* The Y coordinate of the object *}
  145. Width : ULONG; {* The width of the object *}
  146. Height : ULONG; {* The height of the object *}
  147. Flags : ULONG; {* See below for flags *}
  148. XResize : BOOL; {* Horizontally resizable? *}
  149. YResize : BOOL; {* Vertically resizable? *}
  150. QuickHelpString : STRPTR; {* QuickHelp string *}
  151. Shortcut : smallint; {* The object's shortcut *}
  152. Backfilltype : ULONG; {* The object's backfill type *}
  153. Installed : BOOL; {* Does the object have an on-screen
  154. representation? *}
  155. Reserved : array [0..3] of ULONG; {* Private! *}
  156. end;
  157. {* Data for TROM_HIT *}
  158. pTROM_HitData = ^tTROM_HitData;
  159. tTROM_HitData = record
  160. x : ULONG;
  161. y : ULONG;
  162. tr_object : pTROD_DisplayObject;
  163. end;
  164. {* ------------------------------------------------------------------------------ *}
  165. {* The Projects Structure *}
  166. {* ------------------------------------------------------------------------------ *}
  167. tTR_Project = RECORD
  168. tro_SC_Object : tTROD_Object; {* PRIVATE *}
  169. trp_App : pTR_App; {* Our application
  170. *}
  171. trp_MemPool : Pointer; {* The memory pool *}
  172. trp_ID : ULONG; {* The project's ID *}
  173. trp_IDCMPFlags : ULONG; {* The IDCMP flags *}
  174. trp_Window : pWindow; {* The default window *}
  175. trp_AspectFixing : Word; {* Pixel aspect
  176. correction factor *}
  177. END; {* End of TR_Projects
  178. *}
  179. {* Message classes *}
  180. CONST TRMS_CLOSEWINDOW = 1; {* The window should be closed *}
  181. TRMS_ERROR = 2; {* An error occured. Error code in trm_Data *}
  182. TRMS_NEWVALUE = 3; {* Object's VALUE has changed. New VALUE in
  183. trm_Data *}
  184. TRMS_ACTION = 4; {* Object has triggered an action *}
  185. TRMS_ICONDROPPED = 5; {* Icon dropped over window (ID=0) or DropBox.
  186. AppMessage* in trm_Data *}
  187. TRMS_KEYPRESSED = 6; {* Key pressed. trm_Data contains ASCII code,
  188. trm_Code raw code and *}
  189. {* trm_Qualifier contains qualifiers *}
  190. TRMS_HELP = 7; {* The user requested help for the specified ID
  191. *}
  192. TRMS_DISKINSERTED = 8; {* A disk has been inserted into a drive *}
  193. TRMS_DISKREMOVED = 9; {* A disk has been removed from a drive *}
  194. {* ////////////////////////////////////////////////////////////////////// *}
  195. {* //////////////////////////////////////////////// Triton error codes // *}
  196. {* ////////////////////////////////////////////////////////////////////// *}
  197. TRER_OK = 0; {* No error *}
  198. TRER_ALLOCMEM = 1; {* Not enough memory *}
  199. TRER_OPENWINDOW = 2; {* Can't open window *}
  200. TRER_WINDOWTOOBIG = 3; {* Window would be too big for screen *}
  201. TRER_DRAWINFO = 4; {* Can't get screen's DrawInfo *}
  202. TRER_OPENFONT = 5; {* Can't open font *}
  203. TRER_CREATEMSGPORT = 6; {* Can't create message port *}
  204. TRER_INSTALLOBJECT = 7; {* Can't create an object *}
  205. TRER_CREATECLASS = 8; {* Can't create a class *}
  206. TRER_NOLOCKPUBSCREEN = 9; {* Can't lock public screen *}
  207. TRER_CREATEMENUS = 12; {* Error while creating the menus *}
  208. TRER_GT_CREATECONTEXT = 14; {* Can't create gadget context *}
  209. TRER_MAXERRORNUM = 15; {* PRIVATE! *}
  210. {* ////////////////////////////////////////////////////////////////////// *}
  211. {* /////////////////////////////////////////////////// Object messages // *}
  212. {* ////////////////////////////////////////////////////////////////////// *}
  213. TROM_NEW = 1; {* Create object *}
  214. TROM_INSTALL = 2; {* Tell object to install itself in the
  215. window *}
  216. TROM_REFRESH = 4; {* Refresh object *}
  217. TROM_REMOVE = 6; {* Remove object from window *}
  218. TROM_DISPOSE = 7; {* Dispose an object's private data *}
  219. TROM_GETATTRIBUTE = 8; {* Get an object's attribute *}
  220. TROM_SETATTRIBUTE = 9; {* Set an object's attribute *}
  221. TROM_EVENT = 10; {* IDCMP event *}
  222. TROM_DISABLED = 11; {* Disabled object *}
  223. TROM_ENABLED = 12; {* Enabled object *}
  224. TROM_KEYDOWN = 13; {* Key pressed *}
  225. TROM_REPEATEDKEYDOWN = 14; {* Key pressed repeatedly *}
  226. TROM_KEYUP = 15; {* Key released *}
  227. TROM_KEYCANCELLED = 16; {* Key cancelled *}
  228. TROM_CREATECLASS = 17; {* Create class-specific data *}
  229. TROM_DISPOSECLASS = 18; {* Dispose class-specific data *}
  230. TROM_HIT = 22; {* Find an object for a coordinate pair
  231. *}
  232. TROM_ACTIVATE = 23; {* Activate an object *}
  233. TROM_EVENT_SWALLOWED = 1;
  234. TROM_EVENT_CONTINUE = 0;
  235. {* ////////////////////////////////////////////////////////////////////// *}
  236. {* ///////////////////////////////////////// Tags for TR_OpenProject() // *}
  237. {* ////////////////////////////////////////////////////////////////////// *}
  238. {* Tag bases *}
  239. TRTG_OAT = (TAG_USER+$400); {* Object attribute *}
  240. TRTG_CLS = (TAG_USER+$100); {* Class ID $1 to $2FF *}
  241. TRTG_OAT2 = (TAG_USER+$80); {* PRIVATE! *}
  242. TRTG_PAT = (TAG_USER); {* Project attribute *}
  243. {* Window/Project *}
  244. TRWI_Title = (TRTG_PAT+$01); {* STRPTR: The window title *}
  245. TRWI_Flags = (TRTG_PAT+$02); {* See below for window flags *}
  246. TRWI_Underscore = (TRTG_PAT+$03); {* BYTE *: The underscore for menu
  247. and gadget shortcuts *}
  248. TRWI_Position = (TRTG_PAT+$04); {* Window position, see below *}
  249. TRWI_CustomScreen = (TRTG_PAT+$05); {* STRUCT Screen * *}
  250. TRWI_PubScreen = (TRTG_PAT+$06); {* STRUCT Screen *, must have been
  251. locked! *}
  252. TRWI_PubScreenName = (TRTG_PAT+$07); {* ADDRESS, Triton is doing the
  253. locking *}
  254. TRWI_PropFontAttr = (TRTG_PAT+$08); {* STRUCT TextAttr *: The
  255. proportional font *}
  256. TRWI_FixedWidthFontAttr = (TRTG_PAT+$09); {* STRUCT TextAttr *: The fixed-
  257. width font *}
  258. TRWI_Backfill = (TRTG_PAT+$0A); {* The backfill type, see below *}
  259. TRWI_ID = (TRTG_PAT+$0B); {* ULONG: The window ID *}
  260. TRWI_Dimensions = (TRTG_PAT+$0C); {* STRUCT TR_Dimensions * *}
  261. TRWI_ScreenTitle = (TRTG_PAT+$0D); {* STRPTR: The screen title *}
  262. TRWI_QuickHelp = (TRTG_PAT+$0E); {* BOOL: Quick help active? *}
  263. {* Menus *}
  264. TRMN_Title = (TRTG_PAT+$65); {* STRPTR: Menu *}
  265. TRMN_Item = (TRTG_PAT+$66); {* STRPTR: Menu item *}
  266. TRMN_Sub = (TRTG_PAT+$67); {* STRPTR: Menu subitem *}
  267. TRMN_Flags = (TRTG_PAT+$68); {* See below for flags *}
  268. {* General object attributes *}
  269. TRAT_ID = (TRTG_OAT2+$16); {* The object's/menu's ID *}
  270. TRAT_Flags = (TRTG_OAT2+$17); {* The object's flags *}
  271. TRAT_Value = (TRTG_OAT2+$18); {* The object's value *}
  272. TRAT_Text = (TRTG_OAT2+$19); {* The object's text *}
  273. TRAT_Disabled = (TRTG_OAT2+$1A); {* Disabled object? *}
  274. TRAT_Backfill = (TRTG_OAT2+$1B); {* Backfill pattern *}
  275. TRAT_MinWidth = (TRTG_OAT2+$1C); {* Minimum width *}
  276. TRAT_MinHeight = (TRTG_OAT2+$1D); {* Minimum height *}
  277. {* ////////////////////////////////////////////////////////////////////// *}
  278. {* ////////////////////////////////////////////////////// Window flags // *}
  279. {* ////////////////////////////////////////////////////////////////////// *}
  280. TRWF_BACKDROP = $00000001; {* Create a backdrop borderless
  281. window *}
  282. TRWF_NODRAGBAR = $00000002; {* Don't use a dragbar *}
  283. TRWF_NODEPTHGADGET = $00000004; {* Don't use a depth-gadget *}
  284. TRWF_NOCLOSEGADGET = $00000008; {* Don't use a close-gadget *}
  285. TRWF_NOACTIVATE = $00000010; {* Don't activate window *}
  286. TRWF_NOESCCLOSE = $00000020; {* Don't send TRMS_CLOSEWINDOW when
  287. Esc is pressed *}
  288. TRWF_NOPSCRFALLBACK = $00000040; {* Don't fall back onto default
  289. PubScreen *}
  290. TRWF_NOZIPGADGET = $00000080; {* Don't use a zip-gadget *}
  291. TRWF_ZIPCENTERTOP = $00000100; {* Center the zipped window on the
  292. title bar *}
  293. TRWF_NOMINTEXTWIDTH = $00000200; {* Minimum window width not according
  294. to title text *}
  295. TRWF_NOSIZEGADGET = $00000400; {* Don't use a sizing-gadget *}
  296. TRWF_NOFONTFALLBACK = $00000800; {* Don't fall back to topaz.8 *}
  297. TRWF_NODELZIP = $00001000; {* Don't zip the window when Del is
  298. pressed *}
  299. TRWF_SIMPLEREFRESH = $00002000; {* *** OBSOLETE *** (V3+) *}
  300. TRWF_ZIPTOCURRENTPOS = $00004000; {* Will zip the window at the current
  301. position (OS3.0+) *}
  302. TRWF_APPWINDOW = $00008000; {* Create an AppWindow without using
  303. class_dropbox *}
  304. TRWF_ACTIVATESTRGAD = $00010000; {* Activate the first string gadget
  305. after opening the window *}
  306. TRWF_HELP = $00020000; {* Pressing <Help> will create a
  307. TRMS_HELP message (V4) *}
  308. TRWF_SYSTEMACTION = $00040000; {* System status messages will be
  309. sent (V4) *}
  310. {* ////////////////////////////////////////////////////////////////////// *}
  311. {* //////////////////////////////////////////////////////// Menu flags // *}
  312. {* ////////////////////////////////////////////////////////////////////// *}
  313. TRMF_CHECKIT = $00000001; {* Leave space for a checkmark *}
  314. TRMF_CHECKED = $00000002; {* Check the item (includes
  315. TRMF_CHECKIT) *}
  316. TRMF_DISABLED = $00000004; {* Ghost the menu/item *}
  317. {* ////////////////////////////////////////////////////////////////////// *}
  318. {* ////////////////////////////////////////////////// Window positions // *}
  319. {* ////////////////////////////////////////////////////////////////////// *}
  320. TRWP_DEFAULT = 0; {* Let Triton choose a good position
  321. *}
  322. TRWP_BELOWTITLEBAR = 1; {* Left side of screen, below title
  323. bar *}
  324. TRWP_CENTERTOP = 1025; {* Top of screen, centered on the
  325. title bar *}
  326. TRWP_TOPLEFTSCREEN = 1026; {* Top left corner of screen *}
  327. TRWP_CENTERSCREEN = 1027; {* Centered on the screen *}
  328. TRWP_CENTERDISPLAY = 1028; {* Centered on the currently
  329. displayed clip *}
  330. TRWP_MOUSEPOINTER = 1029; {* Under the mouse pointer *}
  331. TRWP_ABOVECOORDS = 2049; {* Above coordinates from the
  332. dimensions STRUCT *}
  333. TRWP_BELOWCOORDS = 2050; {* Below coordinates from the
  334. dimensions STRUCT *}
  335. {* ////////////////////////////////////////////////////////////////////// *}
  336. {* //////////////////////////////////// Backfill types / System images // *}
  337. {* ////////////////////////////////////////////////////////////////////// *}
  338. TRBF_WINDOWBACK = $00000000; {* Window backfill *}
  339. TRBF_REQUESTERBACK = $00000001; {* Requester backfill *}
  340. TRBF_NONE = $00000002; {* No backfill (= Fill with
  341. BACKGROUNDPEN) *}
  342. TRBF_SHINE = $00000003; {* Fill with SHINEPEN *}
  343. TRBF_SHINE_SHADOW = $00000004; {* Fill with SHINEPEN + SHADOWPEN *}
  344. TRBF_SHINE_FILL = $00000005; {* Fill with SHINEPEN + FILLPEN *}
  345. TRBF_SHINE_BACKGROUND = $00000006; {* Fill with SHINEPEN + BACKGROUNDPEN
  346. *}
  347. TRBF_SHADOW = $00000007; {* Fill with SHADOWPEN *}
  348. TRBF_SHADOW_FILL = $00000008; {* Fill with SHADOWPEN + FILLPEN *}
  349. TRBF_SHADOW_BACKGROUND = $00000009; {* Fill with SHADOWPEN +
  350. BACKGROUNDPEN *}
  351. TRBF_FILL = $0000000A; {* Fill with FILLPEN *}
  352. TRBF_FILL_BACKGROUND = $0000000B; {* Fill with FILLPEN + BACKGROUNDPEN
  353. *}
  354. TRSI_USBUTTONBACK = $00010002; {* Unselected button backfill *}
  355. TRSI_SBUTTONBACK = $00010003; {* Selected button backfill *}
  356. {* ////////////////////////////////////////////////////////////////////// *}
  357. {* /////////////////////////////////////////////////////// Frame types // *}
  358. {* ////////////////////////////////////////////////////////////////////// *}
  359. { * Copies of the GadTools BBFT_#? types *}
  360. TRFT_BUTTON = 1;
  361. TRFT_RIDGE = 2;
  362. TRFT_ICONDROPBOX = 3;
  363. { * Triton's low-level frame types *}
  364. TRFT_XENBUTTON1 = 33;
  365. TRFT_XENBUTTON2 = 34;
  366. TRFT_NEXTBUTTON = 35;
  367. { * Triton's abstract frame types *}
  368. TRFT_ABSTRACT_BUTTON = 65;
  369. TRFT_ABSTRACT_ICONDROPBOX = 66;
  370. TRFT_ABSTRACT_FRAMEBOX = 67;
  371. TRFT_ABSTRACT_PROGRESS = 68;
  372. TRFT_ABSTRACT_GROUPBOX = 69;
  373. {* ////////////////////////////////////////////////////////////////////// *}
  374. {* ///////////////////////////////////////////////////////// Pen types // *}
  375. {* ////////////////////////////////////////////////////////////////////// *}
  376. TRPT_SYSTEMPEN = 0;
  377. TRPT_GRAPHICSPEN = 1;
  378. TRPT_TRITONPEN = 128;
  379. TRTP_NORMUSCORE = 0;
  380. TRTP_HIGHUSCORE = 1;
  381. TRTP_HALFSHINE = 2;
  382. TRTP_HALFSHADOW = 3;
  383. TRTP_USSTRINGGADBACK = 4;
  384. TRTP_SSTRINGGADBACK = 5;
  385. TRTP_USSTRINGGADFRONT = 6;
  386. TRTP_SSTRINGGADFRONT = 7;
  387. {* ////////////////////////////////////////////////////////////////////// *}
  388. {* ////////////////////////////////////////////// Display Object flags // *}
  389. {* ////////////////////////////////////////////////////////////////////// *}
  390. {* General flags *}
  391. TROF_RAISED = $00000001; {* Raised object *}
  392. TROF_HORIZ = $00000002; {* Horizontal object \ Works
  393. automatically *}
  394. TROF_VERT = $00000004; {* Vertical object / in groups *}
  395. TROF_RIGHTALIGN = $00000008; {* Align object to the right border
  396. if available *}
  397. TROF_GENERAL_MASK = $000000FF; {* PRIVATE *}
  398. {* Text flags for different kinds of text-related objects *}
  399. TRTX_NOUNDERSCORE = $00000100; {* Don't interpret underscores *}
  400. TRTX_HIGHLIGHT = $00000200; {* Highlight text *}
  401. TRTX_3D = $00000400; {* 3D design *}
  402. TRTX_BOLD = $00000800; {* Softstyle 'bold' *}
  403. TRTX_TITLE = $00001000; {* A title (e.g. of a group) *}
  404. TRTX_MULTILINE = $00002000; {* A multi-line text. See
  405. TR_PrintText() autodoc clip *}
  406. TRTX_RIGHTALIGN = TROF_RIGHTALIGN;
  407. TRTX_CENTER = $00004000; {* Center text *}
  408. TRTX_SELECTED = $00002000; {* PRIVATE! *}
  409. {* ////////////////////////////////////////////////////////////////////// *}
  410. {* ////////////////////////////////////////////////////// Menu entries // *}
  411. {* ////////////////////////////////////////////////////////////////////// *}
  412. TRMN_BARLABEL = (-1); {* A barlabel instead of text *}
  413. {* ////////////////////////////////////////////////////////////////////// *}
  414. {* /////////////////////////////////////////// Tags for TR_CreateApp() // *}
  415. {* ////////////////////////////////////////////////////////////////////// *}
  416. TRCA_Name = (TAG_USER+1);
  417. TRCA_LongName = (TAG_USER+2);
  418. TRCA_Info = (TAG_USER+3);
  419. TRCA_Version = (TAG_USER+4);
  420. TRCA_Release = (TAG_USER+5);
  421. TRCA_Date = (TAG_USER+6);
  422. {* ////////////////////////////////////////////////////////////////////// *}
  423. {* ///////////////////////////////////////// Tags for TR_EasyRequest() // *}
  424. {* ////////////////////////////////////////////////////////////////////// *}
  425. TREZ_ReqPos = (TAG_USER+1);
  426. TREZ_LockProject = (TAG_USER+2);
  427. TREZ_Return = (TAG_USER+3);
  428. TREZ_Title = (TAG_USER+4);
  429. TREZ_Activate = (TAG_USER+5);
  430. {* class_DisplayObject *}
  431. TROB_DisplayObject = (TRTG_CLS+$3C); {* A basic display object *}
  432. TRDO_QuickHelpString = (TRTG_OAT+$1E3);
  433. {* Flags *}
  434. TROB_DISPLAYOBJECT_DISABLED = $00100000; {* Disabled? *}
  435. TROB_DISPLAYOBJECT_RETURNOK = $00200000; {* Activate with <Return> *}
  436. TROB_DISPLAYOBJECT_ESCOK = $00400000; {* Activate with <Esc> *}
  437. TROB_DISPLAYOBJECT_TABOK = $00800000; {* Activate with <Tab> *}
  438. TROB_DISPLAYOBJECT_SPACE = $01000000; {* A spacing object? *}
  439. {* class_DragItem *}
  440. TROB_DragItem = (TRTG_CLS+$3E); {* A draggable item *}
  441. {* class_Image *}
  442. TROB_Image = (TRTG_CLS+$3B); {* An image *}
  443. TRIM_BOOPSI = $00010000; {* Use a BOOPSI IClass image *}
  444. {* class_String *}
  445. TROB_String = (TRTG_CLS+$37); {* A string gadget *}
  446. TRST_Filter = (TRTG_OAT+$1E4);
  447. TRST_INVISIBLE = $00010000; {* A password gadget -> invisible
  448. typing *}
  449. TRST_NORETURNBROADCAST = $00020000; {* <Return> keys will not be
  450. broadcast to the window *}
  451. TRST_FLOAT = $00040000; {* Separators "." and "," will be
  452. accepted only once *}
  453. {* class_Cycle *}
  454. TROB_Cycle = (TRTG_CLS+$36); {* A cycle gadget *}
  455. TRCY_MX = $00010000; {* Unfold the cycle gadget to a MX
  456. gadget *}
  457. TRCY_RIGHTLABELS = $00020000; {* Put the labels to the right of a
  458. MX gadget *}
  459. {* class_Palette *}
  460. TROB_Palette = (TRTG_CLS+$33); {* A palette gadget *}
  461. {* class_DropBox *}
  462. TROB_DropBox = (TRTG_CLS+$38); {* An icon drop box *}
  463. {* class_Group *}
  464. TRGR_Horiz = (TAG_USER+201); {* Horizontal group *}
  465. TRGR_Vert = (TAG_USER+202); {* Vertical group *}
  466. TRGR_End = (TRTG_OAT2+$4B); {* End of a group *}
  467. TRGR_PROPSHARE = $00000000; {* Default: Divide objects
  468. proportionally *}
  469. TRGR_EQUALSHARE = $00000001; {* Divide objects equally *}
  470. TRGR_PROPSPACES = $00000002; {* Divide spaces proportionally *}
  471. TRGR_ARRAY = $00000004; {* Top-level array group *}
  472. TRGR_ALIGN = $00000008; {* Align resizeable objects in
  473. secondary dimension *}
  474. TRGR_CENTER = $00000010; {* Center unresizeable objects in
  475. secondary dimension *}
  476. TRGR_FIXHORIZ = $00000020; {* Don't allow horizontal resizing *}
  477. TRGR_FIXVERT = $00000040; {* Don't allow vertical resizing *}
  478. TRGR_INDEP = $00000080; {* Group is independant of
  479. surrounding array *}
  480. {* class_Line *}
  481. TROB_Line = (TRTG_CLS+$2D); {* A simple line *}
  482. {* class_Slider *}
  483. TROB_Slider = (TRTG_CLS+$34); {* A slider gadget *}
  484. TRSL_Min = (TRTG_OAT+$1DE);
  485. TRSL_Max = (TRTG_OAT+$1DF);
  486. {* class_Listview *}
  487. TROB_Listview = (TRTG_CLS+$39); {* A listview gadget *}
  488. TRLV_Top = (TRTG_OAT+$1E2);
  489. TRLV_VisibleLines = (TRTG_OAT+$1E4);
  490. TRLV_READONLY = $00010000; {* A read-only list *}
  491. TRLV_SELECT = $00020000; {* You may select an entry *}
  492. TRLV_SHOWSELECTED = $00040000; {* Selected entry will be shown *}
  493. TRLV_NOCURSORKEYS = $00080000; {* Don't use arrow keys *}
  494. TRLV_NONUMPADKEYS = $00100000; {* Don't use numeric keypad keys *}
  495. TRLV_FWFONT = $00200000; {* Use the fixed-width font *}
  496. TRLV_NOGAP = $00400000; {* Don't leave a gap below the list
  497. *}
  498. {* class_Progress *}
  499. TROB_Progress = (TRTG_CLS+$3A); {* A progress indicator *}
  500. {* class_Space *}
  501. TROB_Space = (TRTG_CLS+$285); {* The spaces class *}
  502. TRST_NONE = 1; {* No space *}
  503. TRST_SMALL = 2; {* Small space *}
  504. TRST_NORMAL = 3; {* Normal space (default) *}
  505. TRST_BIG = 4; {* Big space *}
  506. {* class_Text *}
  507. TROB_Text = (TRTG_CLS+$30); {* A line of text *}
  508. TRTX_CLIPPED = $00010000; {* Text is clipped *}
  509. {* class_Button *}
  510. TROB_Button = (TRTG_CLS+$31); {* A BOOPSI button gadget *}
  511. TRBU_RETURNOK = $00010000; {* <Return> answers the button *}
  512. TRBU_ESCOK = $00020000; {* <Esc> answers the button *}
  513. TRBU_SHIFTED = $00040000; {* Shifted shortcut only *}
  514. TRBU_UNSHIFTED = $00080000; {* Unshifted shortcut only *}
  515. TRBU_YRESIZE = $00100000; {* Button resizeable in Y direction
  516. *}
  517. TRBT_TEXT = 0; {* Text button *}
  518. TRBT_GETFILE = 1; {* GetFile button *}
  519. TRBT_GETDRAWER = 2; {* GetDrawer button *}
  520. TRBT_GETENTRY = 3; {* GetEntry button *}
  521. {* class_CheckBox *}
  522. TROB_CheckBox = (TRTG_CLS+$2F); {* A checkbox gadget *}
  523. {* class_Object *}
  524. TROB_Object = (TRTG_CLS+$3D); {* A rootclass object *}
  525. {* class_Scroller *}
  526. TROB_Scroller = (TRTG_CLS+$35); {* A scroller gadget *}
  527. TRSC_Total = (TRTG_OAT+$1E0);
  528. TRSC_Visible = (TRTG_OAT+$1E1);
  529. {* class_FrameBox *}
  530. TROB_FrameBox = (TRTG_CLS+$32); {* A framing box *}
  531. TRFB_GROUPING = $00000001; {* A grouping box *}
  532. TRFB_FRAMING = $00000002; {* A framing box *}
  533. TRFB_TEXT = $00000004; {* A text container *}
  534. VAR TritonBase : pLibrary;
  535. FUNCTION TR_AddClass(app : pTR_App; d0arg : longword; supertag : longword; defaultmethod : LONGINT;
  536. datasize : longword; tags : pTagItem) : BOOLEAN;
  537. PROCEDURE TR_AreaFill(project : pTR_Project; rp : pRastPort; left : ULONG; top :
  538. ULONG; right : ULONG; bottom : ULONG; typ : ULONG; dummy : POINTER);
  539. FUNCTION TR_AutoRequest(app : pTR_App; lockproject : pTR_Project; wintags : pTagItem)
  540. : ULONG;
  541. PROCEDURE TR_CloseProject(project : pTR_Project);
  542. PROCEDURE TR_CloseWindowSafely(window : pWindow);
  543. FUNCTION TR_CreateApp(apptags : pTagItem) : pTR_App;
  544. FUNCTION TR_CreateMsg(app : pTR_App) : pTR_Message;
  545. PROCEDURE TR_DeleteApp(app : pTR_App);
  546. FUNCTION TR_DoMethod(obj : pTROD_Object; messageid : ULONG; data : POINTER) : ULONG;
  547. FUNCTION TR_DoMethodClass(obj : pTROD_Object; messageid : ULONG; data : POINTER;
  548. trclass : pTR_Class) : ULONG;
  549. PROCEDURE TR_DrawFrame(project : pTR_Project; rp : pRastPort; left : WORD; top : WORD;
  550. width : WORD; height : WORD; typ : WORD; inverted : BOOLEAN);
  551. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; taglist :
  552. pTagItem) : ULONG;
  553. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; taglist :
  554. pTagItem) : ULONG;
  555. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; taglist :
  556. pTagItem) : ULONG;
  557. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : String; taglist :
  558. pTagItem) : ULONG;
  559. FUNCTION TR_FirstOccurance(ch : BYTE; str : pCHAR) : LONGINT;
  560. FUNCTION TR_FirstOccurance(ch : BYTE; str : String) : LONGINT;
  561. FUNCTION TR_FrameBorderHeight(project : pTR_Project; typ : WORD) : ULONG;
  562. FUNCTION TR_FrameBorderWidth(project : pTR_Project; typ : WORD) : ULONG;
  563. FUNCTION TR_GetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG) :
  564. ULONG;
  565. FUNCTION TR_GetErrorString(num : WORD) : pCHAR;
  566. FUNCTION TR_GetLastError(app : pTR_App) : WORD;
  567. FUNCTION TR_GetMsg(app : pTR_App) : pTR_Message;
  568. FUNCTION TR_GetPen(project : pTR_Project; pentype : ULONG; pendata : ULONG) : ULONG;
  569. PROCEDURE TR_LockProject(project : pTR_Project);
  570. FUNCTION TR_LockScreen(project : pTR_Project) : pScreen;
  571. FUNCTION TR_NumOccurances(ch : BYTE; str : pCHAR) : LONGINT;
  572. FUNCTION TR_NumOccurances(ch : BYTE; str : String) : LONGINT;
  573. FUNCTION TR_ObtainWindow(project : pTR_Project) : pWindow;
  574. FUNCTION TR_OpenProject(app : pTR_App; taglist : pTagItem) : pTR_Project;
  575. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : pCHAR; x : ULONG;
  576. y : ULONG; width : ULONG; flags : ULONG);
  577. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : String; x : ULONG;
  578. y : ULONG; width : ULONG; flags : ULONG);
  579. PROCEDURE TR_ReleaseWindow(window : pWindow);
  580. PROCEDURE TR_ReplyMsg(message : pTR_Message);
  581. FUNCTION TR_SendMessage(project : pTR_Project; objectid : ULONG; messageid : ULONG;
  582. messagedata : POINTER) : ULONG;
  583. PROCEDURE TR_SetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG; value
  584. : ULONG);
  585. FUNCTION TR_TextHeight(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  586. FUNCTION TR_TextHeight(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  587. FUNCTION TR_TextWidth(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  588. FUNCTION TR_TextWidth(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  589. PROCEDURE TR_UnlockProject(project : pTR_Project);
  590. PROCEDURE TR_UnlockScreen(screen : pScreen);
  591. FUNCTION TR_Wait(app : pTR_App; otherbits : ULONG) : ULONG;
  592. {
  593. Functions with array of const
  594. }
  595. FUNCTION TR_AddClassTags(app : pTR_App; d0arg : longword; supertag : longword;
  596. defaultmethod : LONGINT; datasize : longword; const tags : Array Of Const) : BOOLEAN;
  597. FUNCTION TR_OpenProjectTags(app : pTR_App; const taglist : Array Of Const) : pTR_Project;
  598. FUNCTION TR_AutoRequestTags(app : pTR_App; lockproject : pTR_Project; const wintags : Array Of Const): ULONG;
  599. FUNCTION TR_CreateAppTags(const apptags : Array of Const) : pTR_App;
  600. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; const taglist : Array Of Const) : ULONG;
  601. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; Const taglist : Array Of Const) : ULONG;
  602. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; Const taglist : Array Of Const) : ULONG;
  603. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : String; Const taglist : Array Of Const) : ULONG;
  604. { This are a few support functions for triton.
  605. Could be handy.
  606. }
  607. procedure TR_Disable(p : pTR_Project; id : Longint);
  608. procedure TR_Enable(p : pTR_Project; id : Longint);
  609. function TR_GetCheckBox(p : pTR_Project; id : Longint): boolean;
  610. function TR_GetSTRPTR(p : pTR_Project; id : Longint): PChar;
  611. function TR_GetString(p : pTR_Project; id : Longint): String;
  612. function TR_GetValue(p : pTR_Project; gadid : Longint): Longint;
  613. procedure TR_SetCheckBox(p : pTR_Project; id : Longint; onoff : boolean);
  614. procedure TR_SetString(p : pTR_Project; id : Longint; txt : String);
  615. procedure TR_SetString(p : pTR_Project; id : Longint; txt : PChar);
  616. procedure TR_SetText(p : pTR_Project; id : Longint; txt : string);
  617. procedure TR_SetText(p : pTR_Project; id : Longint; txt : PChar);
  618. procedure TR_SetValue(p : pTR_Project; id : Longint; value : Longint);
  619. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : string);
  620. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : PChar);
  621. procedure TR_UpdateListView(p : pTR_Project; gadid : Longint; thelist: pList);
  622. {You can remove this include and use a define instead}
  623. {$I useautoopenlib.inc}
  624. {$ifdef use_init_openlib}
  625. procedure InitTRITONLibrary;
  626. {$endif use_init_openlib}
  627. {This is a variable that knows how the unit is compiled}
  628. var
  629. TRITONIsCompiledHow : longint;
  630. IMPLEMENTATION
  631. uses
  632. {$ifndef dont_use_openlib}
  633. msgbox,
  634. {$endif dont_use_openlib}
  635. tagsarray,pastoc;
  636. procedure TR_Disable(p : pTR_Project; id : Longint);
  637. begin
  638. TR_SetAttribute(p,id, TRAT_Disabled,0);
  639. end;
  640. procedure TR_Enable(p : pTR_Project; id : Longint);
  641. begin
  642. TR_SetAttribute(p,id,TRAT_Disabled,1);
  643. end;
  644. function TR_GetCheckBox(p : pTR_Project; id : Longint): boolean;
  645. var
  646. temp : Longint;
  647. begin
  648. temp := TR_GetAttribute(p,id,TRAT_Value);
  649. if temp = 0 then TR_GetCheckBox := false
  650. else TR_GetCheckBox := true;
  651. end;
  652. function TR_GetSTRPTR(p : pTR_Project; id : Longint): PChar;
  653. var
  654. temp : Longint;
  655. begin
  656. temp := TR_GetAttribute(p,id,0);
  657. TR_GetSTRPTR := PChar(Pointer(temp));
  658. end;
  659. function TR_GetString(p : pTR_Project; id : Longint): String;
  660. var
  661. temp : Longint;
  662. begin
  663. temp := TR_GetAttribute(p,id,0);
  664. TR_GetString := strpas(PChar(Pointer(temp)));
  665. end;
  666. function TR_GetValue(p : pTR_Project; gadid : Longint): Longint;
  667. begin
  668. TR_GetValue := TR_GetAttribute(p,gadid,TRAT_Value);
  669. end;
  670. procedure TR_SetCheckBox(p : pTR_Project; id : Longint; onoff : boolean);
  671. begin
  672. TR_SetAttribute(p,id,TRAT_Value,Longint(byte(onoff)));
  673. end;
  674. procedure TR_SetString(p : pTR_Project; id : Longint; txt : String);
  675. begin
  676. TR_SetAttribute(p,id,0,Longint(pas2c(txt)));
  677. end;
  678. procedure TR_SetString(p : pTR_Project; id : Longint; txt : PChar);
  679. begin
  680. TR_SetAttribute(p,id,0,Longint(txt));
  681. end;
  682. procedure TR_SetText(p : pTR_Project; id : Longint; txt : string);
  683. begin
  684. TR_SetAttribute(p,id,TRAT_Text,Longint(pas2c(txt)));
  685. end;
  686. procedure TR_SetText(p : pTR_Project; id : Longint; txt : PChar);
  687. begin
  688. TR_SetAttribute(p,id,TRAT_Text,Longint(txt));
  689. end;
  690. procedure TR_SetValue(p : pTR_Project; id : Longint; value : Longint);
  691. begin
  692. TR_SetAttribute(p,id,TRAT_Value,value);
  693. end;
  694. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : string);
  695. begin
  696. TR_SetAttribute(p,0,TRWI_Title,Longint(pas2c(thetitle)));
  697. end;
  698. procedure TR_SetWindowTitle(p : pTR_Project; thetitle : PChar);
  699. begin
  700. TR_SetAttribute(p,0,TRWI_Title,Longint(thetitle));
  701. end;
  702. procedure TR_UpdateListView(p : pTR_Project; gadid : Longint; thelist: pList);
  703. begin
  704. TR_SetAttribute(p,gadid,0,Longint(thelist));
  705. end;
  706. FUNCTION TR_AddClass(app : pTR_App; d0arg : longword; supertag : longword; defaultmethod : LONGINT; datasize : longword; tags : pTagItem) : BOOLEAN;
  707. BEGIN
  708. ASM
  709. MOVE.L A6,-(A7)
  710. MOVEA.L app,A1
  711. MOVE.L d0arg,D0
  712. MOVE.L supertag,D1
  713. MOVEA.L defaultmethod,A2
  714. MOVE.L datasize,D2
  715. MOVEA.L tags,A0
  716. MOVEA.L TritonBase,A6
  717. JSR -168(A6)
  718. MOVEA.L (A7)+,A6
  719. TST.W D0
  720. BEQ.B @end
  721. MOVEQ #1,D0
  722. @end: MOVE.B D0,@RESULT
  723. END;
  724. END;
  725. PROCEDURE TR_AreaFill(project : pTR_Project; rp : pRastPort; left : ULONG; top :
  726. ULONG; right : ULONG; bottom : ULONG; typ : ULONG; dummy : POINTER);
  727. BEGIN
  728. ASM
  729. MOVE.L A6,-(A7)
  730. MOVEA.L project,A0
  731. MOVEA.L rp,A1
  732. MOVE.L left,D0
  733. MOVE.L top,D1
  734. MOVE.L right,D2
  735. MOVE.L bottom,D3
  736. MOVE.L typ,D4
  737. MOVEA.L dummy,A2
  738. MOVEA.L TritonBase,A6
  739. JSR -228(A6)
  740. MOVEA.L (A7)+,A6
  741. END;
  742. END;
  743. FUNCTION TR_AutoRequest(app : pTR_App; lockproject : pTR_Project; wintags : pTagItem)
  744. : ULONG;
  745. BEGIN
  746. ASM
  747. MOVE.L A6,-(A7)
  748. MOVEA.L app,A1
  749. MOVEA.L lockproject,A0
  750. MOVEA.L wintags,A2
  751. MOVEA.L TritonBase,A6
  752. JSR -084(A6)
  753. MOVEA.L (A7)+,A6
  754. MOVE.L D0,@RESULT
  755. END;
  756. END;
  757. PROCEDURE TR_CloseProject(project : pTR_Project);
  758. BEGIN
  759. ASM
  760. MOVE.L A6,-(A7)
  761. MOVEA.L project,A0
  762. MOVEA.L TritonBase,A6
  763. JSR -036(A6)
  764. MOVEA.L (A7)+,A6
  765. END;
  766. END;
  767. PROCEDURE TR_CloseWindowSafely(window : pWindow);
  768. BEGIN
  769. ASM
  770. MOVE.L A6,-(A7)
  771. MOVEA.L window,A0
  772. MOVEA.L TritonBase,A6
  773. JSR -126(A6)
  774. MOVEA.L (A7)+,A6
  775. END;
  776. END;
  777. FUNCTION TR_CreateApp(apptags : pTagItem) : pTR_App;
  778. BEGIN
  779. ASM
  780. MOVE.L A6,-(A7)
  781. MOVEA.L apptags,A1
  782. MOVEA.L TritonBase,A6
  783. JSR -096(A6)
  784. MOVEA.L (A7)+,A6
  785. MOVE.L D0,@RESULT
  786. END;
  787. END;
  788. FUNCTION TR_CreateMsg(app : pTR_App) : pTR_Message;
  789. BEGIN
  790. ASM
  791. MOVE.L A6,-(A7)
  792. MOVEA.L app,A1
  793. MOVEA.L TritonBase,A6
  794. JSR -234(A6)
  795. MOVEA.L (A7)+,A6
  796. MOVE.L D0,@RESULT
  797. END;
  798. END;
  799. PROCEDURE TR_DeleteApp(app : pTR_App);
  800. BEGIN
  801. ASM
  802. MOVE.L A6,-(A7)
  803. MOVEA.L app,A1
  804. MOVEA.L TritonBase,A6
  805. JSR -102(A6)
  806. MOVEA.L (A7)+,A6
  807. END;
  808. END;
  809. FUNCTION TR_DoMethod(obj : pTROD_Object; messageid : ULONG; data : POINTER) : ULONG;
  810. BEGIN
  811. ASM
  812. MOVE.L A6,-(A7)
  813. MOVEA.L obj,A0
  814. MOVE.L messageid,D0
  815. MOVEA.L data,A1
  816. MOVEA.L TritonBase,A6
  817. JSR -216(A6)
  818. MOVEA.L (A7)+,A6
  819. MOVE.L D0,@RESULT
  820. END;
  821. END;
  822. FUNCTION TR_DoMethodClass(obj : pTROD_Object; messageid : ULONG; data : POINTER;
  823. trclass : pTR_Class) : ULONG;
  824. BEGIN
  825. ASM
  826. MOVE.L A6,-(A7)
  827. MOVEA.L obj,A0
  828. MOVE.L messageid,D0
  829. MOVEA.L data,A1
  830. MOVEA.L trclass,A2
  831. MOVEA.L TritonBase,A6
  832. JSR -222(A6)
  833. MOVEA.L (A7)+,A6
  834. MOVE.L D0,@RESULT
  835. END;
  836. END;
  837. PROCEDURE TR_DrawFrame(project : pTR_Project; rp : pRastPort; left : WORD; top : WORD;
  838. width : WORD; height : WORD; typ : WORD; inverted : BOOLEAN);
  839. BEGIN
  840. ASM
  841. MOVE.L A6,-(A7)
  842. MOVEA.L project,A0
  843. MOVEA.L rp,A1
  844. MOVE.L left,D1
  845. MOVE.L top,D2
  846. MOVE.L width,D3
  847. MOVE.L height,D4
  848. MOVE.L typ,D0
  849. MOVE.L inverted,D5
  850. MOVEA.L TritonBase,A6
  851. JSR -174(A6)
  852. MOVEA.L (A7)+,A6
  853. END;
  854. END;
  855. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; taglist :
  856. pTagItem) : ULONG;
  857. BEGIN
  858. ASM
  859. MOVE.L A6,-(A7)
  860. MOVEA.L app,A1
  861. MOVEA.L bodyfmt,A2
  862. MOVEA.L gadfmt,A3
  863. MOVEA.L taglist,A0
  864. MOVEA.L TritonBase,A6
  865. JSR -090(A6)
  866. MOVEA.L (A7)+,A6
  867. MOVE.L D0,@RESULT
  868. END;
  869. END;
  870. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : PChar; gadfmt : String; taglist :
  871. pTagItem) : ULONG;
  872. begin
  873. TR_EasyRequest := TR_EasyRequest(app,bodyfmt,pas2c(gadfmt),taglist);
  874. end;
  875. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : PChar; taglist :
  876. pTagItem) : ULONG;
  877. begin
  878. TR_EasyRequest := TR_EasyRequest(app,pas2c(bodyfmt),gadfmt,taglist);
  879. end;
  880. FUNCTION TR_EasyRequest(app : pTR_App; bodyfmt : String; gadfmt : String; taglist :
  881. pTagItem) : ULONG;
  882. begin
  883. TR_EasyRequest := TR_EasyRequest(app,pas2c(bodyfmt),pas2c(gadfmt),taglist);
  884. end;
  885. FUNCTION TR_FirstOccurance(ch : BYTE; str : pCHAR) : LONGINT;
  886. BEGIN
  887. ASM
  888. MOVE.L A6,-(A7)
  889. MOVE.L ch,D0
  890. MOVEA.L str,A0
  891. MOVEA.L TritonBase,A6
  892. JSR -042(A6)
  893. MOVEA.L (A7)+,A6
  894. MOVE.L D0,@RESULT
  895. END;
  896. END;
  897. FUNCTION TR_FirstOccurance(ch : BYTE; str : String) : LONGINT;
  898. BEGIN
  899. TR_FirstOccurance := TR_FirstOccurance(ch, pas2c(str));
  900. END;
  901. FUNCTION TR_FrameBorderHeight(project : pTR_Project; typ : WORD) : ULONG;
  902. BEGIN
  903. ASM
  904. MOVE.L A6,-(A7)
  905. MOVEA.L project,A0
  906. MOVE.L typ,D0
  907. MOVEA.L TritonBase,A6
  908. JSR -186(A6)
  909. MOVEA.L (A7)+,A6
  910. MOVE.L D0,@RESULT
  911. END;
  912. END;
  913. FUNCTION TR_FrameBorderWidth(project : pTR_Project; typ : WORD) : ULONG;
  914. BEGIN
  915. ASM
  916. MOVE.L A6,-(A7)
  917. MOVEA.L project,A0
  918. MOVE.L typ,D0
  919. MOVEA.L TritonBase,A6
  920. JSR -180(A6)
  921. MOVEA.L (A7)+,A6
  922. MOVE.L D0,@RESULT
  923. END;
  924. END;
  925. FUNCTION TR_GetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG) :
  926. ULONG;
  927. BEGIN
  928. ASM
  929. MOVE.L A6,-(A7)
  930. MOVEA.L project,A0
  931. MOVE.L ID,D0
  932. MOVE.L attribute,D1
  933. MOVEA.L TritonBase,A6
  934. JSR -066(A6)
  935. MOVEA.L (A7)+,A6
  936. MOVE.L D0,@RESULT
  937. END;
  938. END;
  939. FUNCTION TR_GetErrorString(num : WORD) : pCHAR;
  940. BEGIN
  941. ASM
  942. MOVE.L A6,-(A7)
  943. MOVE.L num,D0
  944. MOVEA.L TritonBase,A6
  945. JSR -054(A6)
  946. MOVEA.L (A7)+,A6
  947. MOVE.L D0,@RESULT
  948. END;
  949. END;
  950. FUNCTION TR_GetLastError(app : pTR_App) : WORD;
  951. BEGIN
  952. ASM
  953. MOVE.L A6,-(A7)
  954. MOVEA.L app,A1
  955. MOVEA.L TritonBase,A6
  956. JSR -132(A6)
  957. MOVEA.L (A7)+,A6
  958. MOVE.L D0,@RESULT
  959. END;
  960. END;
  961. FUNCTION TR_GetMsg(app : pTR_App) : pTR_Message;
  962. BEGIN
  963. ASM
  964. MOVE.L A6,-(A7)
  965. MOVEA.L app,A1
  966. MOVEA.L TritonBase,A6
  967. JSR -108(A6)
  968. MOVEA.L (A7)+,A6
  969. MOVE.L D0,@RESULT
  970. END;
  971. END;
  972. FUNCTION TR_GetPen(project : pTR_Project; pentype : ULONG; pendata : ULONG) : ULONG;
  973. BEGIN
  974. ASM
  975. MOVE.L A6,-(A7)
  976. MOVEA.L project,A0
  977. MOVE.L pentype,D0
  978. MOVE.L pendata,D1
  979. MOVEA.L TritonBase,A6
  980. JSR -210(A6)
  981. MOVEA.L (A7)+,A6
  982. MOVE.L D0,@RESULT
  983. END;
  984. END;
  985. PROCEDURE TR_LockProject(project : pTR_Project);
  986. BEGIN
  987. ASM
  988. MOVE.L A6,-(A7)
  989. MOVEA.L project,A0
  990. MOVEA.L TritonBase,A6
  991. JSR -072(A6)
  992. MOVEA.L (A7)+,A6
  993. END;
  994. END;
  995. FUNCTION TR_LockScreen(project : pTR_Project) : pScreen;
  996. BEGIN
  997. ASM
  998. MOVE.L A6,-(A7)
  999. MOVEA.L project,A0
  1000. MOVEA.L TritonBase,A6
  1001. JSR -138(A6)
  1002. MOVEA.L (A7)+,A6
  1003. MOVE.L D0,@RESULT
  1004. END;
  1005. END;
  1006. FUNCTION TR_NumOccurances(ch : BYTE; str : pCHAR) : LONGINT;
  1007. BEGIN
  1008. ASM
  1009. MOVE.L A6,-(A7)
  1010. MOVE.L ch,D0
  1011. MOVEA.L str,A0
  1012. MOVEA.L TritonBase,A6
  1013. JSR -048(A6)
  1014. MOVEA.L (A7)+,A6
  1015. MOVE.L D0,@RESULT
  1016. END;
  1017. END;
  1018. FUNCTION TR_NumOccurances(ch : BYTE; str : String) : LONGINT;
  1019. BEGIN
  1020. TR_NumOccurances := TR_NumOccurances(ch, pas2c(str));
  1021. END;
  1022. FUNCTION TR_ObtainWindow(project : pTR_Project) : pWindow;
  1023. BEGIN
  1024. ASM
  1025. MOVE.L A6,-(A7)
  1026. MOVEA.L project,A0
  1027. MOVEA.L TritonBase,A6
  1028. JSR -150(A6)
  1029. MOVEA.L (A7)+,A6
  1030. MOVE.L D0,@RESULT
  1031. END;
  1032. END;
  1033. FUNCTION TR_OpenProject(app : pTR_App; taglist : pTagItem) : pTR_Project;
  1034. BEGIN
  1035. ASM
  1036. MOVE.L A6,-(A7)
  1037. MOVEA.L app,A1
  1038. MOVEA.L taglist,A0
  1039. MOVEA.L TritonBase,A6
  1040. JSR -030(A6)
  1041. MOVEA.L (A7)+,A6
  1042. MOVE.L D0,@RESULT
  1043. END;
  1044. END;
  1045. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : pCHAR; x : ULONG;
  1046. y : ULONG; width : ULONG; flags : ULONG);
  1047. BEGIN
  1048. ASM
  1049. MOVE.L A6,-(A7)
  1050. MOVEA.L project,A0
  1051. MOVEA.L rp,A1
  1052. MOVEA.L txt,A2
  1053. MOVE.L x,D1
  1054. MOVE.L y,D2
  1055. MOVE.L width,D3
  1056. MOVE.L flags,D0
  1057. MOVEA.L TritonBase,A6
  1058. JSR -204(A6)
  1059. MOVEA.L (A7)+,A6
  1060. END;
  1061. END;
  1062. PROCEDURE TR_PrintText(project : pTR_Project; rp : pRastPort; txt : String; x : ULONG;
  1063. y : ULONG; width : ULONG; flags : ULONG);
  1064. BEGIN
  1065. TR_PrintText(project,rp,pas2c(txt),x,y,width,flags);
  1066. END;
  1067. PROCEDURE TR_ReleaseWindow(window : pWindow);
  1068. BEGIN
  1069. ASM
  1070. MOVE.L A6,-(A7)
  1071. MOVEA.L window,A0
  1072. MOVEA.L TritonBase,A6
  1073. JSR -156(A6)
  1074. MOVEA.L (A7)+,A6
  1075. END;
  1076. END;
  1077. PROCEDURE TR_ReplyMsg(message : pTR_Message);
  1078. BEGIN
  1079. ASM
  1080. MOVE.L A6,-(A7)
  1081. MOVEA.L message,A1
  1082. MOVEA.L TritonBase,A6
  1083. JSR -114(A6)
  1084. MOVEA.L (A7)+,A6
  1085. END;
  1086. END;
  1087. FUNCTION TR_SendMessage(project : pTR_Project; objectid : ULONG; messageid : ULONG;
  1088. messagedata : POINTER) : ULONG;
  1089. BEGIN
  1090. ASM
  1091. MOVE.L A6,-(A7)
  1092. MOVEA.L project,A0
  1093. MOVE.L objectid,D0
  1094. MOVE.L messageid,D1
  1095. MOVEA.L messagedata,A1
  1096. MOVEA.L TritonBase,A6
  1097. JSR -162(A6)
  1098. MOVEA.L (A7)+,A6
  1099. MOVE.L D0,@RESULT
  1100. END;
  1101. END;
  1102. PROCEDURE TR_SetAttribute(project : pTR_Project; ID : ULONG; attribute : ULONG; value
  1103. : ULONG);
  1104. BEGIN
  1105. ASM
  1106. MOVE.L A6,-(A7)
  1107. MOVEA.L project,A0
  1108. MOVE.L ID,D0
  1109. MOVE.L attribute,D1
  1110. MOVE.L value,D2
  1111. MOVEA.L TritonBase,A6
  1112. JSR -060(A6)
  1113. MOVEA.L (A7)+,A6
  1114. END;
  1115. END;
  1116. FUNCTION TR_TextHeight(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  1117. BEGIN
  1118. ASM
  1119. MOVE.L A6,-(A7)
  1120. MOVEA.L project,A0
  1121. MOVEA.L txt,A2
  1122. MOVE.L flags,D0
  1123. MOVEA.L TritonBase,A6
  1124. JSR -198(A6)
  1125. MOVEA.L (A7)+,A6
  1126. MOVE.L D0,@RESULT
  1127. END;
  1128. END;
  1129. FUNCTION TR_TextHeight(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  1130. BEGIN
  1131. TR_TextHeight := TR_TextHeight(project,pas2c(txt),flags);
  1132. END;
  1133. FUNCTION TR_TextWidth(project : pTR_Project; txt : pCHAR; flags : ULONG) : ULONG;
  1134. BEGIN
  1135. ASM
  1136. MOVE.L A6,-(A7)
  1137. MOVEA.L project,A0
  1138. MOVEA.L txt,A2
  1139. MOVE.L flags,D0
  1140. MOVEA.L TritonBase,A6
  1141. JSR -192(A6)
  1142. MOVEA.L (A7)+,A6
  1143. MOVE.L D0,@RESULT
  1144. END;
  1145. END;
  1146. FUNCTION TR_TextWidth(project : pTR_Project; txt : String; flags : ULONG) : ULONG;
  1147. BEGIN
  1148. TR_TextWidth := TR_TextWidth(project,pas2c(txt),flags);
  1149. END;
  1150. PROCEDURE TR_UnlockProject(project : pTR_Project);
  1151. BEGIN
  1152. ASM
  1153. MOVE.L A6,-(A7)
  1154. MOVEA.L project,A0
  1155. MOVEA.L TritonBase,A6
  1156. JSR -078(A6)
  1157. MOVEA.L (A7)+,A6
  1158. END;
  1159. END;
  1160. PROCEDURE TR_UnlockScreen(screen : pScreen);
  1161. BEGIN
  1162. ASM
  1163. MOVE.L A6,-(A7)
  1164. MOVEA.L screen,A0
  1165. MOVEA.L TritonBase,A6
  1166. JSR -144(A6)
  1167. MOVEA.L (A7)+,A6
  1168. END;
  1169. END;
  1170. FUNCTION TR_Wait(app : pTR_App; otherbits : ULONG) : ULONG;
  1171. BEGIN
  1172. ASM
  1173. MOVE.L A6,-(A7)
  1174. MOVEA.L app,A1
  1175. MOVE.L otherbits,D0
  1176. MOVEA.L TritonBase,A6
  1177. JSR -120(A6)
  1178. MOVEA.L (A7)+,A6
  1179. MOVE.L D0,@RESULT
  1180. END;
  1181. END;
  1182. {
  1183. Functions with array of const
  1184. }
  1185. {
  1186. Functions and procedures with array of const go here
  1187. }
  1188. FUNCTION TR_AddClassTags(app : pTR_App; d0arg : longword; supertag : longword; defaultmethod : LONGINT; datasize : longword; const tags : Array Of Const) : BOOLEAN;
  1189. begin
  1190. TR_AddClassTags := TR_AddClass(app , d0arg , supertag , defaultmethod , datasize , readintags(tags));
  1191. end;
  1192. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : pCHAR; const taglist : Array Of Const) : Ulong;
  1193. begin
  1194. TR_EasyRequestTags := TR_EasyRequest(app , bodyfmt , gadfmt , readintags(taglist));
  1195. end;
  1196. FUNCTION TR_OpenProjectTags(app : pTR_App; const taglist : Array Of Const) : pTR_Project;
  1197. begin
  1198. TR_OpenProjectTags := TR_OpenProject(app , readintags(taglist));
  1199. end;
  1200. FUNCTION TR_AutoRequestTags(app : pTR_App; lockproject : pTR_Project; const wintags : Array Of Const): ULONG;
  1201. begin
  1202. TR_AutoRequestTags := TR_AutoRequest(app,lockproject,readintags(wintags));
  1203. end;
  1204. FUNCTION TR_CreateAppTags(const apptags : Array of Const) : pTR_App;
  1205. begin
  1206. TR_CreateAppTags := TR_CreateApp(readintags(apptags));
  1207. end;
  1208. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : pCHAR; gadfmt : String; Const taglist : Array Of Const) : ULONG;
  1209. begin
  1210. TR_EasyRequestTags := TR_EasyRequest(app,bodyfmt,pas2c(gadfmt),readintags(taglist));
  1211. end;
  1212. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : pCHAR; Const taglist : Array Of Const) : ULONG;
  1213. begin
  1214. TR_EasyRequestTags := TR_EasyRequest(app,pas2c(bodyfmt),gadfmt,readintags(taglist));
  1215. end;
  1216. FUNCTION TR_EasyRequestTags(app : pTR_App; bodyfmt : String; gadfmt : String; Const taglist : Array Of Const) : ULONG;
  1217. begin
  1218. TR_EasyRequestTags := TR_EasyRequest(app,pas2c(bodyfmt),pas2c(gadfmt),readintags(taglist));
  1219. end;
  1220. const
  1221. { Change VERSION and LIBVERSION to proper values }
  1222. VERSION : string[2] = '0';
  1223. LIBVERSION : longword = 0;
  1224. {$ifdef use_init_openlib}
  1225. {$Info Compiling initopening of triton.library}
  1226. {$Info don't forget to use InitTRITONLibrary in the beginning of your program}
  1227. var
  1228. triton_exit : Pointer;
  1229. procedure ClosetritonLibrary;
  1230. begin
  1231. ExitProc := triton_exit;
  1232. if TritonBase <> nil then begin
  1233. CloseLibrary(TritonBase);
  1234. TritonBase := nil;
  1235. end;
  1236. end;
  1237. procedure InitTRITONLibrary;
  1238. begin
  1239. TritonBase := nil;
  1240. TritonBase := OpenLibrary(TRITONNAME,LIBVERSION);
  1241. if TritonBase <> nil then begin
  1242. triton_exit := ExitProc;
  1243. ExitProc := @ClosetritonLibrary;
  1244. end else begin
  1245. MessageBox('FPC Pascal Error',
  1246. 'Can''t open triton.library version ' + VERSION + #10 +
  1247. 'Deallocating resources and closing down',
  1248. 'Oops');
  1249. halt(20);
  1250. end;
  1251. end;
  1252. begin
  1253. TRITONIsCompiledHow := 2;
  1254. {$endif use_init_openlib}
  1255. {$ifdef use_auto_openlib}
  1256. {$Info Compiling autoopening of triton.library}
  1257. var
  1258. triton_exit : Pointer;
  1259. procedure ClosetritonLibrary;
  1260. begin
  1261. ExitProc := triton_exit;
  1262. if TritonBase <> nil then begin
  1263. CloseLibrary(TritonBase);
  1264. TritonBase := nil;
  1265. end;
  1266. end;
  1267. begin
  1268. TritonBase := nil;
  1269. TritonBase := OpenLibrary(TRITONNAME,LIBVERSION);
  1270. if TritonBase <> nil then begin
  1271. triton_exit := ExitProc;
  1272. ExitProc := @ClosetritonLibrary;
  1273. TRITONIsCompiledHow := 1;
  1274. end else begin
  1275. MessageBox('FPC Pascal Error',
  1276. 'Can''t open triton.library version ' + VERSION + #10 +
  1277. 'Deallocating resources and closing down',
  1278. 'Oops');
  1279. halt(20);
  1280. end;
  1281. {$endif use_auto_openlib}
  1282. {$ifdef dont_use_openlib}
  1283. begin
  1284. TRITONIsCompiledHow := 3;
  1285. {$Warning No autoopening of triton.library compiled}
  1286. {$Warning Make sure you open triton.library yourself}
  1287. {$endif dont_use_openlib}
  1288. END. (* UNIT TRITON *)