Initial revision
[ssr] / StraySrc / Libraries / Sapphire / csapph / h / viewer
CommitLineData
2ee739cc 1/*
2 * viewer.h
3 *
4 * [Generated from viewer, 25 September 1996]
5 */
6
7#if !defined(__CC_NORCROFT) || !defined(__arm)
8 #error You must use the Norcroft ARM Compiler for Sapphire programs
9#endif
10
11#pragma include_only_once
12#pragma force_top_level
13
14#ifndef __viewer_h
15#define __viewer_h
16
17#ifndef __sapphire_h
18 #include "sapphire.h"
19#endif
20
21/*----- Overview ----------------------------------------------------------*
22 *
23 * Functions provided:
24 *
25 * viewer_create
26 * viewer_destroy
27 * viewer_open
28 * viewer_close
29 * viewer_eventHandler
30 * viewer_select
31 * viewer_isSelected
32 * viewer_selectAll
33 * viewer_click
34 * viewer_dragSelection
35 * viewer_window
36 * viewer_update
37 * viewer_setTitle
38 * viewer_rescan
39 */
40
41/* --- viewer_create --- *
42 *
43 * On entry: R0 == pointer to a viewer definition block
44 * R1 == pointer to a list
45 * R2 == sprite area for window
46 *
47 * On exit: R0 == viewer handle
48 * May return an error
49 *
50 * Use: Creates a viewer window. The viewer definition block
51 * contains various interesting bits of information about the
52 * viewer which are likely to be known at assembly time:
53 *
54 * (word) address of a list manager definition block
55 * (word) address of a shape handler function (or 0)
56 * (word) standard width of icons
57 * (word) standard height of icons
58 * (string) banner text message tag, or empty
59 *
60 * The shape function is used to allow viewer icons to have a
61 * non-rectangular shape. The function is called with a reason
62 * code in R0; entry and exit conditions depend on this:
63 *
64 * vwShape_size
65 * On entry
66 * R1 == pointer to list item
67 * R2 == standard width of icon
68 * R3 == standard height of icon
69 *
70 * On exit
71 * R2 == width of this icon
72 * R3 == height of this icon
73 *
74 * Use
75 * This routine is used to find the actual size of an icon.
76 * The icons are aligned on a grid according to the largest
77 * one: this routine is used to find out which one that is.
78 *
79 * vwShape_intersects
80 * On entry
81 * R1 == pointer to list item
82 * R2 == address of bounding box of this icon
83 * R3 == address of bounding box to compare
84 *
85 * On exit
86 * CS if boxes intersect, else CC
87 *
88 * Use
89 * For detecting mouse clicks etc. on an icon. viewer has
90 * already ensured that the box in R3 intersects with the
91 * bounding box, so for rectangular icons, you can just return
92 * with C set always. This entry is provided so that you
93 * can check against the sprite and text of a text+sprite
94 * icon separately.
95 *
96 * More reason codes may be added later; it will always be
97 * sensible to return immediately preserving all registers and
98 * flags.
99 */
100
101extern routine viewer_create;
102
103/* --- viewer_destroy --- *
104 *
105 * On entry: R0 == viewer handle
106 *
107 * On exit: --
108 *
109 * Use: Destroys a viewer, removing it from the screen etc.
110 */
111
112extern routine viewer_destroy;
113
114/* --- viewer_open --- *
115 *
116 * On entry: R0 == viewer handle
117 * R1 == opening style
118 * R2,R3 == extra arguments
119 *
120 * On exit: --
121 *
122 * Use: Opens a viewer window on the screen.
123 */
124
125extern routine viewer_open;
126
127/* --- viewer_close --- *
128 *
129 * On entry: R0 == viewer handle
130 *
131 * On exit: --
132 *
133 * Use: Closes a viewer window.
134 */
135
136extern routine viewer_close;
137
138/* --- viewer_eventHandler --- *
139 *
140 * On entry: R0 == viewer handle
141 * R1 == pointer to event handler
142 * R2 == value to pass in R10
143 * R3 == value to pass in R12
144 *
145 * On exit: R1-R3 == old values
146 *
147 * Use: Sets up the event handle for the viewer.
148 */
149
150extern routine viewer_eventHandler;
151
152/* --- viewer_select --- *
153 *
154 * On entry: R0 == viewer handle
155 * R1 == icon handle
156 * R2 == 0 to unselect, 1 to select or 2 to toggle
157 *
158 * On exit: --
159 *
160 * Use: Selects an icon, or maybe unselects it. Whatever, it doesn't
161 * flicker if it doesn't need to.
162 */
163
164extern routine viewer_select;
165
166/* --- viewer_isSelected --- *
167 *
168 * On entry: R0 == viewer handle
169 * R1 == icon handle
170 *
171 * On exit: CS if icon is selected, else CC
172 *
173 * Use: Informs you whether an icon is selected.
174 */
175
176extern routine viewer_isSelected;
177
178/* --- viewer_selectAll --- *
179 *
180 * On entry: R0 == viewer handle
181 * R2 == 0 to deselect, or 1 to select
182 *
183 * On exit: --
184 *
185 * Use: Selects or deselects all the icons in a viewer.
186 */
187
188extern routine viewer_selectAll;
189
190/* --- viewer_click --- *
191 *
192 * On entry: R0 == viewer handle
193 * R1 == icon handle (or 0)
194 * R2 == mouse button state
195 *
196 * On exit: --
197 *
198 * Use: Handles a click, drag etc. according to the standard
199 * selection model.
200 */
201
202extern routine viewer_click;
203
204/* --- viewer_dragSelection --- *
205 *
206 * On entry: R0 == viewer handle
207 *
208 * On exit: --
209 *
210 * Use: Starts a drag of the icons within the viewer. When the drag
211 * is finished, you get sent a vwEvent_dragged event.
212 */
213
214extern routine viewer_dragSelection;
215
216/* --- viewer_window --- *
217 *
218 * On entry: R0 == viewer handle
219 *
220 * On exit: R0 == window handle
221 *
222 * Use: Returns the window handle of the viewer.
223 */
224
225extern routine viewer_window;
226
227/* --- viewer_update --- *
228 *
229 * On entry: R0 == viewer handle
230 * R1 == icon handle
231 *
232 * On exit: --
233 *
234 * Use: Updates (redraws) a given icon.
235 */
236
237extern routine viewer_update;
238
239/* --- viewer_setTitle --- *
240 *
241 * On entry: R0 == viewer handle
242 * R1 == title string
243 *
244 * On exit: --
245 *
246 * Use: Sets the viewer window's title.
247 */
248
249extern routine viewer_setTitle;
250
251/* --- viewer_rescan --- *
252 *
253 * On entry: R0 == viewer handle
254 *
255 * On exit: --
256 *
257 * Use: Rescans all the icons in the viewer and forces a redraw,
258 * in case icons have been added or deleted (or renamed). Note
259 * that the redraw is done *anyway* -- it's your responsibility
260 * to avoid calling this routine when you don't need to.
261 */
262
263extern routine viewer_rescan;
264
265/*----- Shape function reason codes ---------------------------------------*/
266
267#define vwShape_size 0
268
269#define vwShape_intersects 1
270
271#define vwShape_slowBit 2
272
273/*----- Viewer event codes ------------------------------------------------*/
274
275#define vwEvent_close 0
276
277#define vwEvent_click 1
278
279#define vwEvent_double 2
280
281#define vwEvent_drag 3
282
283#define vwEvent_menu 4
284
285#define vwEvent_redraw 5
286
287#define vwEvent_drop 6
288
289#define vwEvent_help 7
290
291#define vwEvent_key 8
292
293#define vwEvent_dragged 9
294
295#define vwEvent_sprite 10
296
297#define vwEvent_open 11
298
299#define vwEvent_draw 12
300
301#define vwEvent_unDraw 13
302
303#define vwDrop_save 0
304#define vwDrop_load 1
305
306/*----- That's all, folks -------------------------------------------------*/
307
308#endif