1 {
2 This file is part of the Free Pascal run time library.
3 Copyright (c) 2016 by Free Pascal development team
4
5 Picasso96 functions for Amiga OS 4.x
6
7 See the file COPYING.FPC, included in this distribution,
8 for details about the copyright.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
13
14 **********************************************************************}
15 unit picasso96api;
16
17 interface
18
19 uses
20 Exec, utility, agraphics, intuition;
21
22 // Picasso96.h -- include File
23 // (C) Copyright 1996-98 Alexander Kneer & Tobias Abt
24 // All Rights Reserved.
25 const
26 PICASSO96APINAME: PChar = 'Picasso96API.library';
27
28 // Types for RGBFormat used
29 type
30 TRGBFTYPE = (
31 RGBFB_NONE, // no valid RGB format (should not happen)
32 RGBFB_CLUT, // palette mode, set colors when opening screen using tags or use SetRGB32/LoadRGB32(...)
33 RGBFB_R8G8B8, // TrueColor RGB (8 bit each)
34 RGBFB_B8G8R8, // TrueColor BGR (8 bit each)
35 RGBFB_R5G6B5PC, // HiColor16 (5 bit R, 6 bit G, 5 bit B), format: gggbbbbbrrrrrggg
36 RGBFB_R5G5B5PC, // HiColor15 (5 bit each), format: gggbbbbb0rrrrrgg
37 RGBFB_A8R8G8B8, // 4 Byte TrueColor ARGB (A unused alpha channel)
38 RGBFB_A8B8G8R8, // 4 Byte TrueColor ABGR (A unused alpha channel)
39 RGBFB_R8G8B8A8, // 4 Byte TrueColor RGBA (A unused alpha channel)
40 RGBFB_B8G8R8A8, // 4 Byte TrueColor BGRA (A unused alpha channel)
41 RGBFB_R5G6B5, // HiColor16 (5 bit R, 6 bit G, 5 bit B), format: rrrrrggggggbbbbb
42 RGBFB_R5G5B5, // HiColor15 (5 bit each), format: 0rrrrrgggggbbbbb
43 RGBFB_B5G6R5PC, // HiColor16 (5 bit R, 6 bit G, 5 bit B), format: gggrrrrrbbbbbggg
44 RGBFB_B5G5R5PC, // HiColor15 (5 bit each), format: gggrrrrr0bbbbbbgg
45 // By now, the following formats are for use with a hardware window only (bitmap operations may be implemented incompletely)
46 RGBFB_YUV422CGX,// 2 Byte TrueColor YUV (CCIR recommendation CCIR601).
47 RGBFB_YUV411, // 1 Byte TrueColor ACCUPAK.
48 RGBFB_YUV422PA, // 2 Byte TrueColor CCIR601 for use with YUV12 planar assist mode on Cirrus Logic base graphics chips.
49 RGBFB_YUV422, // 2 Byte TrueColor YUV (CCIR recommendation CCIR601).
50 RGBFB_YUV422PC, // 2 Byte TrueColor CCIR601 byte swapped (V0-Y0-U0-Y1)
51 RGBFB_YUV420P, // 12 Bit TrueColor 3-plane YUV
52 RGBFB_YUV410P, // 9 Bit TrueColor 3-plane YUV
53 RGBFB_ALPHA8,
54 RGBFB_MaxFormats);
55
56 const
57 RGBFF_NONE = 1 shl 0;
58 RGBFF_CLUT = 1 shl 1;
59 RGBFF_R8G8B8 = 1 shl 2;
60 RGBFF_B8G8R8 = 1 shl 3;
61 RGBFF_R5G6B5PC = 1 shl 4;
62 RGBFF_R5G5B5PC = 1 shl 5;
63 RGBFF_A8R8G8B8 = 1 shl 6;
64 RGBFF_A8B8G8R8 = 1 shl 7;
65 RGBFF_R8G8B8A8 = 1 shl 8;
66 RGBFF_B8G8R8A8 = 1 shl 9;
67 RGBFF_R5G6B5 = 1 shl 10;
68 RGBFF_R5G5B5 = 1 shl 11;
69 RGBFF_B5G6R5PC = 1 shl 12;
70 RGBFF_B5G5R5PC = 1 shl 13;
71 RGBFF_YUV422CGX = 1 shl 14;
72 RGBFF_YUV411 = 1 shl 15;
73 RGBFF_YUV422 = 1 shl 16;
74 RGBFF_YUV422PC = 1 shl 17;
75 RGBFF_YUV422PA = 1 shl 18;
76 RGBFF_YUV420P = 1 shl 19;
77 RGBFF_YUV410P = 1 shl 20;
78 RGBFF_ALPHA8 = 1 shl 21;
79
80 RGBFF_HICOLOR = RGBFF_R5G6B5PC or RGBFF_R5G5B5PC or RGBFF_R5G6B5 or RGBFF_R5G5B5 or RGBFF_B5G6R5PC or RGBFF_B5G5R5PC;
81 RGBFF_TRUECOLOR = RGBFF_R8G8B8 or RGBFF_B8G8R8;
82 RGBFF_TRUEALPHA = RGBFF_A8R8G8B8 or RGBFF_A8B8G8R8 or RGBFF_R8G8B8A8 or RGBFF_B8G8R8A8;
83
84 // Flags for p96AllocBitMap
85 BMF_USERPRIVATE = $8000; // private user bitmap that will never be put to a board, but may be used as a temporary render buffer and accessed
86 // with OS blit functions, too. Bitmaps allocated with this flag do not need to be locked.
87
88 // Attributes for p96GetBitMapAttr
89 P96BMA_WIDTH = 0;
90 P96BMA_HEIGHT = 1;
91 P96BMA_DEPTH = 2;
92 P96BMA_MEMORY = 3;
93 P96BMA_BYTESPERROW = 4;
94 P96BMA_BYTESPERPIXEL = 5;
95 P96BMA_BITSPERPIXEL = 6;
96 P96BMA_RGBFORMAT = 7;
97 P96BMA_ISP96 = 8;
98 P96BMA_ISONBOARD = 9;
99 P96BMA_BOARDMEMBASE = 10;
100 P96BMA_BOARDIOBASE = 11;
101 P96BMA_BOARDMEMIOBASE = 12;
102
103 // Attributes for p96GetModeIDAttr
104 P96IDA_WIDTH = 0;
105 P96IDA_HEIGHT = 1;
106 P96IDA_DEPTH = 2;
107 P96IDA_BYTESPERPIXEL = 3;
108 P96IDA_BITSPERPIXEL = 4;
109 P96IDA_RGBFORMAT = 5;
110 P96IDA_ISP96 = 6;
111 P96IDA_BOARDNUMBER = 7;
112 P96IDA_STDBYTESPERROW = 8;
113 P96IDA_BOARDNAME = 9;
114 P96IDA_COMPATIBLEFORMATS = 10;
115 P96IDA_VIDEOCOMPATIBLE = 11;
116 P96IDA_PABLOIVCOMPATIBLE = 12;
117 P96IDA_PALOMAIVCOMPATIBLE = 13;
118
119 // Tags for p96BestModeIDTagList
120 P96BIDTAG_Dummy = TAG_USER + 96;
121 P96BIDTAG_FormatsAllowed = P96BIDTAG_Dummy + $0001;
122 P96BIDTAG_FormatsForbidden = P96BIDTAG_Dummy + $0002;
123 P96BIDTAG_NominalWidth = P96BIDTAG_Dummy + $0003;
124 P96BIDTAG_NominalHeight = P96BIDTAG_Dummy + $0004;
125 P96BIDTAG_Depth = P96BIDTAG_Dummy + $0005;
126 P96BIDTAG_VideoCompatible = P96BIDTAG_Dummy + $0006;
127 P96BIDTAG_PabloIVCompatible = P96BIDTAG_Dummy + $0007;
128 P96BIDTAG_PalomaIVCompatible = P96BIDTAG_Dummy + $0008;
129 // Tags for p96RequestModeIDTagList
130 P96MA_Dummy = TAG_USER + $10000 + 96;
131 P96MA_MinWidth = P96MA_Dummy + $0001;
132 P96MA_MinHeight = P96MA_Dummy + $0002;
133 P96MA_MinDepth = P96MA_Dummy + $0003;
134 P96MA_MaxWidth = P96MA_Dummy + $0004;
135 P96MA_MaxHeight = P96MA_Dummy + $0005;
136 P96MA_MaxDepth = P96MA_Dummy + $0006;
137 P96MA_DisplayID = P96MA_Dummy + $0007;
138 P96MA_FormatsAllowed = P96MA_Dummy + $0008;
139 P96MA_FormatsForbidden = P96MA_Dummy + $0009;
140 P96MA_WindowTitle = P96MA_Dummy + $000a;
141 P96MA_OKText = P96MA_Dummy + $000b;
142 P96MA_CancelText = P96MA_Dummy + $000c;
143 P96MA_Window = P96MA_Dummy + $000d;
144 P96MA_PubScreenName = P96MA_Dummy + $000e;
145 P96MA_Screen = P96MA_Dummy + $000f;
146 P96MA_VideoCompatible = P96MA_Dummy + $0010;
147 P96MA_PabloIVCompatible = P96MA_Dummy + $0011;
148 P96MA_PalomaIVCompatible = P96MA_Dummy + $0012;
149 // Tags for p96OpenScreenTagList
150 P96SA_Dummy = TAG_USER + $20000 + 96;
151 P96SA_Left = P96SA_Dummy + $0001;
152 P96SA_Top = P96SA_Dummy + $0002;
153 P96SA_Width = P96SA_Dummy + $0003;
154 P96SA_Height = P96SA_Dummy + $0004;
155 P96SA_Depth = P96SA_Dummy + $0005;
156 P96SA_DetailPen = P96SA_Dummy + $0006;
157 P96SA_BlockPen = P96SA_Dummy + $0007;
158 P96SA_Title = P96SA_Dummy + $0008;
159 P96SA_Colors = P96SA_Dummy + $0009;
160 P96SA_ErrorCode = P96SA_Dummy + $000a;
161 P96SA_Font = P96SA_Dummy + $000b;
162 P96SA_SysFont = P96SA_Dummy + $000c;
163 P96SA_Type = P96SA_Dummy + $000d;
164 P96SA_BitMap = P96SA_Dummy + $000e;
165 P96SA_PubName = P96SA_Dummy + $000f;
166 P96SA_PubSig = P96SA_Dummy + $0010;
167 P96SA_PubTask = P96SA_Dummy + $0011;
168 P96SA_DisplayID = P96SA_Dummy + $0012;
169 P96SA_DClip = P96SA_Dummy + $0013;
170 P96SA_ShowTitle = P96SA_Dummy + $0014;
171 P96SA_Behind = P96SA_Dummy + $0015;
172 P96SA_Quiet = P96SA_Dummy + $0016;
173 P96SA_AutoScroll = P96SA_Dummy + $0017;
174 P96SA_Pens = P96SA_Dummy + $0018;
175 P96SA_SharePens = P96SA_Dummy + $0019;
176 P96SA_BackFill = P96SA_Dummy + $001a;
177 P96SA_Colors32 = P96SA_Dummy + $001b;
178 P96SA_VideoControl = P96SA_Dummy + $001c;
179 P96SA_RGBFormat = P96SA_Dummy + $001d;
180 P96SA_NoSprite = P96SA_Dummy + $001e;
181 P96SA_NoMemory = P96SA_Dummy + $001f;
182 P96SA_RenderFunc = P96SA_Dummy + $0020;
183 P96SA_SaveFunc = P96SA_Dummy + $0021;
184 P96SA_UserData = P96SA_Dummy + $0022;
185 P96SA_Alignment = P96SA_Dummy + $0023;
186 P96SA_FixedScreen = P96SA_Dummy + $0024;
187 P96SA_Exclusive = P96SA_Dummy + $0025;
188 P96SA_ConstantBytesPerRow = P96SA_Dummy + $0026;
189 P96SA_ConstantByteSwapping = P96SA_Dummy + $0027;
190
191 MODENAMELENGTH = 48;
192 type
193 PP96Mode = ^TP96Mode;
194 TP96Mode = record
195 Node: TNode;
196 Description: array[0..MODENAMELENGTH - 1] of Char;
197 Width: Word;
198 Height: Word;
199 Depth: Word;
200 DisplayID: LongWord;
201 end;
202 // Structure to describe graphics data
203 PRenderInfo = ^TRenderInfo;
204 TRenderInfo = record
205 Memory : APTR; // pointer to graphics data
206 BytesPerRow : Word; // distance in bytes between one pixel and its neighbour up or down.
207 pad : Word; // private, not used.
208 RGBFormat : TRGBFTYPE; // RGBFormat of the data.
209 end;
210 // used for planar YUV formats
211 PYUVRenderInfo = ^TYUVRenderInfo;
212 TYUVRenderInfo = record
213 RI: TRenderInfo;
214 Planes: array[0..2] of APTR;
215 BytesPerRow: array[0..2] of Word;
216 padWord: Word;
217 end;
218 // Structure for p96WriteTrueColorData() and p96ReadTrueColorData()
219 PTrueColorInfo = ^TTrueColorInfo;
220 TTrueColorInfo = record
221 PixelDistance : LongWord; // distance in bytes between the red (must be the same as for the green or blue)
222 // component of one pixel and its next neighbour to the left or right.
223 BytesPerRow : LongWord; // distance in bytes between the red (must be the same as for the green or blue)
224 // component of one pixel and its next neighbour up or down.
225 RedData: PByte; // pointer to the red component of the upper left pixel.
226 GreenData: PByte; // pointer to the green component of the upper left pixel.
227 BlueData: PByte; // pointer to the blue component of the upper left pixel.
228 end;
229 // Tags for PIPs
230 const
231 P96PIP_Dummy = TAG_USER + $30000 + 96;
232 P96PIP_SourceFormat = P96PIP_Dummy + 1; // TRGBFTYPE (I)
233 P96PIP_SourceBitMap = P96PIP_Dummy + 2; // struct BitMap (G)
234 P96PIP_SourceRPort = P96PIP_Dummy + 3; // struct RastPort (G)
235 P96PIP_SourceWidth = P96PIP_Dummy + 4; // LongWord (I)
236 P96PIP_SourceHeight = P96PIP_Dummy + 5; // LongWord (I)
237 P96PIP_Type = P96PIP_Dummy + 6; // LongWord (I) default: PIPT_MemoryWindow
238 P96PIP_ErrorCode = P96PIP_Dummy + 7; // LONG (I)
239 P96PIP_Brightness = P96PIP_Dummy + 8; // LongWord (IGS) default: 0
240 P96PIP_Left = P96PIP_Dummy + 9; // LongWord (I) default: 0
241 P96PIP_Top = P96PIP_Dummy + 10; // LongWord (I) default: 0
242 P96PIP_Width = P96PIP_Dummy + 11; // LongWord (I) default: inner width of window
243 P96PIP_Height = P96PIP_Dummy + 12; // LongWord (I) default: inner height of window
244 P96PIP_Relativity = P96PIP_Dummy + 13; // LongWord (I) default: PIPRel_Width|PIPRel_Height
245 P96PIP_Colors = P96PIP_Dummy + 14; // TColorSpec (IS) ti_Data is an array of TColorSpec, terminated by ColorIndex = -1.
246 P96PIP_Colors32 = P96PIP_Dummy + 15; // LongWord (IS) Tag to set the palette colors at 32 bits-per-gun.
247 P96PIP_NoMemory = P96PIP_Dummy + 16;
248 P96PIP_RenderFunc = P96PIP_Dummy + 17;
249 P96PIP_SaveFunc = P96PIP_Dummy + 18;
250 P96PIP_UserData = P96PIP_Dummy + 19;
251 P96PIP_Alignment = P96PIP_Dummy + 20;
252 P96PIP_ConstantBytesPerRow = P96PIP_Dummy + 21;
253 P96PIP_AllowCropping = P96PIP_Dummy + 22;
254 P96PIP_InitialIntScaling = P96PIP_Dummy + 23;
255 P96PIP_ClipLeft = P96PIP_Dummy + 24; // LongWord (IS)
256 P96PIP_ClipTop = P96PIP_Dummy + 25; // LongWord (IS)
257 P96PIP_ClipWidth = P96PIP_Dummy + 26; // LongWord (IS)
258 P96PIP_ClipHeight = P96PIP_Dummy + 27; // LongWord (IS)
259 P96PIP_ConstantByteSwapping = P96PIP_Dummy + 28;
260 P96PIP_ColorKeyPen = P96PIP_Dummy + 29;
261 P96PIP_NumberOfBuffers = P96PIP_Dummy + 30;
262 P96PIP_VisibleBuffer = P96PIP_Dummy + 31;
263 P96PIP_WorkBuffer = P96PIP_Dummy + 32;
264 P96PIP_DisplayedBuffer = P96PIP_Dummy + 33;
265 P96PIP_ColorKeyARGB = P96PIP_Dummy + 34;
266
267 PIPT_MemoryWindow = 0; // default
268 PIPT_VideoWindow = 1;
269 PIPT_NUMTYPES = 2;
270
271 P96PIPT_MemoryWindow = PIPT_MemoryWindow;
272 P96PIPT_VideoWindow = PIPT_VideoWindow;
273
274 PIPRel_Right = 1; // P96PIP_Left is relative to the right side (negative value)
275 PIPRel_Bottom = 2; // P96PIP_Top is relative to the bottom (negative value)
276 PIPRel_Width = 4; // P96PIP_Width is amount of pixels not used by PIP at the right side of the window (negative value)
277 PIPRel_Height = 8; // P96PIP_Height is amount of pixels not used by PIP at the window bottom (negative value)
278 PIPERR_NOMEMORY = 1; // couldn't get normal memory
279 PIPERR_ATTACHFAIL = 2; // Failed to attach to a screen
280 PIPERR_NOTAVAILABLE = 3; // PIP not available for other reason
281 PIPERR_OUTOFPENS = 4; // couldn't get a free pen for occlusion
282 PIPERR_BADDIMENSIONS = 5; // type, width, height or format invalid
283 PIPERR_NOWINDOW = 6; // couldn't open window
284 PIPERR_BADALIGNMENT = 7; // specified alignment is not ok
285 PIPERR_CROPPED = 8; // pip would be cropped, but isn't allowed to
286 // Tags for P96GetRTGDataTagList
287 P96RD_Dummy = TAG_USER + $40000 + 96;
288 P96RD_NumberOfBoards = P96RD_Dummy + 1;
289 // Tags for P96GetBoardDataTagList
290 P96BD_Dummy = TAG_USER + $50000 + 96;
291 P96BD_BoardName = P96BD_Dummy + 1;
292 P96BD_ChipName = P96BD_Dummy + 2;
293 P96BD_TotalMemory = P96BD_Dummy + 4;
294 P96BD_FreeMemory = P96BD_Dummy + 5;
295 P96BD_LargestFreeMemory = P96BD_Dummy + 6;
296 P96BD_MonitorSwitch = P96BD_Dummy + 7;
297 P96BD_RGBFormats = P96BD_Dummy + 8;
298 P96BD_MemoryClock = P96BD_Dummy + 9;
299 P96BD_PCIVendorID = P96BD_Dummy + 10;
300 P96BD_PCIProductID = P96BD_Dummy + 11;
301 P96BD_MonitorVendorID = P96BD_Dummy + 12; // new 2.354
302 P96BD_MonitorProduct = P96BD_Dummy + 13; // new 2.354
303 P96BD_MonitorProductID = P96BD_Dummy + 14; // new 2.354
304 P96BD_MonitorHSyncMin = P96BD_Dummy + 15; // new 2.354
305 P96BD_MonitorHSyncMax = P96BD_Dummy + 16; // new 2.354
306 P96BD_MonitorVSyncMin = P96BD_Dummy + 17; // new 2.354
307 P96BD_MonitorVSyncMax = P96BD_Dummy + 18; // new 2.354
308 P96BD_MonitorDotClockMin = P96BD_Dummy + 19; // new 2.354
309 P96BD_MonitorDotClockMax = P96BD_Dummy + 20; // new 2.354
310 P96BD_MonitorInputType = P96BD_Dummy + 21; // new 2.354
311 P96BD_MonitorEDIDVer = P96BD_Dummy + 22; // new 2.354
312 P96BD_MonitorEDIDRev = P96BD_Dummy + 23; // new 2.354
313 P96BD_MonitorDisplayWidth = P96BD_Dummy + 24; // new 2.354
314 P96BD_MonitorDisplayHeight = P96BD_Dummy + 25; // new 2.354
315
316 P96BD_BoardDriver = P96BD_Dummy + 26; // new 2.359
317 P96BD_ChipDriver = P96BD_Dummy + 27; // new 2.359
318 P96BD_InternalMemorySize = P96BD_Dummy + 28; // new 2.359
319
320 var
321 P96Base: PLibrary = nil;
322 IP96: PInterface = nil;
323
p96Obtainnull324 function p96Obtain(): LongWord; syscall IGfx 60;
p96Releasenull325 function p96Release(): LongWord; syscall IGfx 64;
326 procedure p96Expunge(); syscall IGfx 68;
p96Clonenull327 function p96Clone(): PInterface; syscall IGfx 72;
p96AllocBitMapnull328 function p96AllocBitMap(SizeX, SizeY, Depth, Flags: LongWord; Friend: PBitMap; RGBFormat: TRGBFTYPE): pBitMap; syscall IP96 76;
329 procedure p96FreeBitMap(BitMap: PBitMap); syscall IP96 80;
p96GetBitMapAttrnull330 function p96GetBitMapAttr(BitMap: PBitMap; Attribute: LongWord): LongWord; syscall IP96 84;
p96LockBitMapnull331 function p96LockBitMap(BitMap: PBitMap; Buffer: PByte; Size: LongWord): LongInt; syscall IP96 88;
332 procedure p96UnlockBitMap(BitMap: PBitMap; Lock: LongInt); syscall IP96 92;
p96BestModeIDTagListnull333 function p96BestModeIDTagList(Tags: PTagItem): LongWord; syscall IP96 96;
334 // 100 p96BestModeIDTags
p96RequestModeIDTagListnull335 function p96RequestModeIDTagList(Tags: PTagItem): LongWord; syscall IP96 104;
336 // 108 p96RequestModeIDTags
p96AllocModeListTagListnull337 function p96AllocModeListTagList(Tags: PTagItem): PList; syscall IP96 112;
338 // 116 p96AllocModeListTags
339 procedure p96FreeModeList(List: PList); syscall IP96 120;
p96GetModeIDAttrnull340 function p96GetModeIDAttr(Mode: LongWord; Attribute: LongWord): LongWord; syscall IP96 124;
p96OpenScreenTagListnull341 function p96OpenScreenTagList(Tags: PTagItem): PScreen; syscall IP96 128;
342 // 132 p96OpenScreenTags
p96CloseScreennull343 function p96CloseScreen(Screen: PScreen): Wordbool; syscall IP96 136;
344 procedure p96WritePixelArray(Ri: PRenderInfo; SrcX, SrcY: LongWord; Rp: PRastPort; DestX, DestY, SizeX, SizeY: LongWord); syscall IP96 140;
345 procedure p96ReadPixelArray(Ri: PRenderInfo; DestX, DestY: LongWord; Rp: PRastPort; SrcX, SrcY, SizeX, SizeY: LongWord); syscall IP96 144;
p96WritePixelnull346 function p96WritePixel(Rp: PRastPort; X, Y, Color: LongWord): LongWord; syscall IP96 148;
p96ReadPixelnull347 function p96ReadPixel(Rp: PRastPort; X, Y: LongWord): LongWord; syscall IP96 152;
348 procedure p96RectFill(Rp: PRastPort; MinX, MinY, MaxX, MaxY, Color: LongWord); syscall IP96 156;
349 procedure p96WriteTrueColorData(Tci: PTrueColorInfo; SrcX, SrcY: LongWord; Rp: PRastPort; DestX, DestY, SizeX, SizeY: LongWord); syscall IP96 160;
350 procedure p96ReadTrueColorData(Tci: PTrueColorInfo; DestX, DestY: LongWord; Rp: PRastPort; SrcX, SrcY, SizeX, SizeY: LongWord); syscall IP96 164;
p96PIP_OpenTagListnull351 function p96PIP_OpenTagList(Tags: PTagItem): PWindow; syscall IP96 168;
352 // 172 p96PIP_OpenTags
p96PIP_Closenull353 function p96PIP_Close(Window: PWindow): Wordbool; syscall IP96 176;
p96PIP_SetTagListnull354 function p96PIP_SetTagList(Window: PWindow; Tags: PTagItem): LongInt; syscall IP96 180;
355 // 184 p96PIP_SetTags
p96PIP_GetTagListnull356 function p96PIP_GetTagList(Window: PWindow; Tags: PTagItem): LongInt; syscall IP96 188;
357 // 192 p96PIP_GetTags
p96PIP_GetIMsgnull358 function p96PIP_GetIMsg(Port: PMsgPort): PIntuiMessage; syscall IP96 196;
359 procedure p96PIP_ReplyIMsg(IntuiMessage: PIntuiMessage); syscall IP96 200;
p96GetRTGDataTagListnull360 function p96GetRTGDataTagList(Tags: PTagItem): LongInt; syscall IP96 204;
361 // 208 p96GetRTGDataTags
p96GetBoardDataTagListnull362 function p96GetBoardDataTagList(Board: LongWord; Tags: PTagItem): LongInt; syscall IP96 212;
363 // 216 p96GetBoardDataTags
p96EncodeColornull364 function p96EncodeColor(RGBFormat: TRGBFTYPE; Color: LongWord): LongWord; syscall IP96 220;
p96LockBitMapToBoardnull365 function p96LockBitMapToBoard(Bm: PBitmap; Board_Number: LongWord; Buf: PByte; Size: LongWord): WordBool; syscall IP96 224;
366 procedure p96UnlockBitMapFromBoard(Bm: PBitmap; Modified: LongBool); syscall IP96 228;
367
368 // functions and procedures with array of PtrUInt go here
p96BestModeIDTagsnull369 function p96BestModeIDTags(const Tags: array of PtrUInt): LongWord;
p96RequestModeIDTagsnull370 function p96RequestModeIDTags(const Tags: array of PtrUInt): LongWord;
p96AllocModeListTagsnull371 function p96AllocModeListTags(const Tags: array of PtrUInt): PList;
p96OpenScreenTagsnull372 function p96OpenScreenTags(const Tags: array of PtrUInt): PScreen;
p96PIP_OpenTagsnull373 function p96PIP_OpenTags(const Tags: array of PtrUInt): PWindow;
p96PIP_SetTagsnull374 function p96PIP_SetTags(Window: PWindow; const Tags: array of PtrUInt): LongInt;
p96PIP_GetTagsnull375 function p96PIP_GetTags(Window: PWindow; const Tags: array of PtrUInt): LongInt;
p96GetRTGDataTagsnull376 function p96GetRTGDataTags(const Tags: array of PtrUInt): LongInt;
p96GetBoardDataTagsnull377 function p96GetBoardDataTags(Board: LongWord; const Tags: array of PtrUInt): LongInt;
378
379 implementation
380
381 // functions and procedures with array of PtrUInt go here
p96BestModeIDTagsnull382 function p96BestModeIDTags(const Tags: array of PtrUInt): LongWord;
383 begin
384 p96BestModeIDTags := p96BestModeIDTagList(@Tags);
385 end;
386
p96RequestModeIDTagsnull387 function p96RequestModeIDTags(const Tags: array of PtrUInt): LongWord;
388 begin
389 p96RequestModeIDTags := p96RequestModeIDTagList(@Tags);
390 end;
391
p96AllocModeListTagsnull392 function p96AllocModeListTags(const Tags: array of PtrUInt): PList;
393 begin
394 p96AllocModeListTags := p96AllocModeListTagList(@Tags);
395 end;
396
p96OpenScreenTagsnull397 function p96OpenScreenTags(const Tags: array of PtrUInt): PScreen;
398 begin
399 p96OpenScreenTags := p96OpenScreenTagList(@Tags);
400 end;
401
p96PIP_OpenTagsnull402 function p96PIP_OpenTags(const Tags: array of PtrUInt): PWindow;
403 begin
404 p96PIP_OpenTags := p96PIP_OpenTagList(@Tags);
405 end;
406
p96PIP_SetTagsnull407 function p96PIP_SetTags(Window: PWindow; const Tags: array of PtrUInt): LongInt;
408 begin
409 p96PIP_SetTags := p96PIP_SetTagList(Window , @Tags);
410 end;
411
p96PIP_GetTagsnull412 function p96PIP_GetTags(Window: PWindow; const Tags: array of PtrUInt): LongInt;
413 begin
414 p96PIP_GetTags := p96PIP_GetTagList(Window , @Tags);
415 end;
416
p96GetRTGDataTagsnull417 function p96GetRTGDataTags(const Tags: array of PtrUInt): LongInt;
418 begin
419 p96GetRTGDataTags := p96GetRTGDataTagList(@Tags);
420 end;
421
p96GetBoardDataTagsnull422 function p96GetBoardDataTags(Board: LongWord; const Tags: array of PtrUInt): LongInt;
423 begin
424 p96GetBoardDataTags := p96GetBoardDataTagList(Board , @Tags);
425 end;
426
427 const
428 LIBVERSION: LongWord = 0;
429
430 initialization
431 P96Base := OpenLibrary(PICASSO96APINAME, LIBVERSION);
432 if Assigned(P96Base) then
433 IP96 := GetInterface(P96Base, 'main', 1, nil);
434 finalization
435 if Assigned(IP96) then
436 DropInterface(IP96);
437 if Assigned(P96Base) then
438 CloseLibrary(P96Base);
439 end.
440
441
442