Initial revision
[ssr] / StraySrc / Libraries / Sapphire / csapph / h / drag
1 /*
2 * drag.h
3 *
4 * [Generated from drag, 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 __drag_h
15 #define __drag_h
16
17 #ifndef __sapphire_h
18 #include "sapphire.h"
19 #endif
20
21 /*----- Overview ----------------------------------------------------------*
22 *
23 * Functions provided:
24 *
25 * drag_start
26 * drag_scroll
27 * drag_setDash
28 * drag_cancel
29 * drag_redraw
30 * drag_eorColour
31 */
32
33 /* --- drag_start --- *
34 *
35 * On entry: R0 == window containing the drag
36 * R1 == flags word (see flags below)
37 * R2 == pointer to drag routine
38 * R3 == magic number to pass in R9
39 * R4 == value to pass to routine in R10
40 * R5 == value to pass to routine in R12
41 *
42 * On exit: --
43 *
44 * Use: Starts a drag operation. Any outstanding drag operation
45 * is cancelled on the assumption that someone stole our
46 * UserDragBox event.
47 */
48
49 extern routine drag_start;
50
51 /* --- drag_scroll --- *
52 *
53 * On entry: R1 == pointer to window state block
54 *
55 * On exit: R2,R3 == new scroll positions to set
56 * R14 == R1+20 (pointer to scroll offsets)
57 *
58 * Use: Works out the scroll positions which should be set to auto-
59 * scroll the window. The algorithm is simple: the window is
60 * scrolled so that the point beneath the mouse pointer is
61 * within the window's visible work area.
62 */
63
64 extern routine drag_scroll;
65
66 /* --- drag_setDash --- *
67 *
68 * On entry: R0 == dash pattern byte
69 *
70 * On exit: --
71 *
72 * Use: Sets the dash pattern to be the given value.
73 */
74
75 extern routine drag_setDash;
76
77 /* --- drag_cancel --- *
78 *
79 * On entry: --
80 *
81 * On exit: --
82 *
83 * Use: Cancels the current drag operation.
84 */
85
86 extern routine drag_cancel;
87
88 /* --- drag_redraw --- *
89 *
90 * On entry: R1 == pointer to redraw block
91 *
92 * On exit: --
93 *
94 * Use: Redraws the drag box, if the redraw takes place in the
95 * currently dragging window.
96 */
97
98 extern routine drag_redraw;
99
100 /* --- drag_eorColour --- *
101 *
102 * On entry: R0 == colour A
103 * R1 == colour B
104 *
105 * On exit: --
106 *
107 * Use: Sets the foreground colour to be an EOR colour such that
108 * when painted over Wimp colour A, it appears as Wimp colour B.
109 */
110
111 extern routine drag_eorColour;
112
113 /*----- Flags -------------------------------------------------------------*/
114
115 #define drFlag_noUpdate ((1<<0))
116
117 /*----- Drag handler events -----------------------------------------------*/
118
119 /* --- Note --- *
120 *
121 * The events which request that you draw something are called for each
122 * rectangle of the draw operation -- i.e. do not call Wimp_GetRectangle
123 * because this is done for you.
124 */
125
126 #define drEvent_draw 0
127
128 #define drEvent_undraw 1
129
130 #define drEvent_update 2
131
132 #define drEvent_trans 3
133
134 #define drEvent_getPos 4
135
136 #define drEvent_done 5
137
138 #define drEvent_cancel 6
139
140 /*----- That's all, folks -------------------------------------------------*/
141
142 #endif