comparison packages/services/gfx/mw/current/src/demos/nanowm/nanowm.h @ 208:e0c0827131d1 ecos

Merge from eCos master repository on 2002-05-20-20:11:54-BST
author jlarmour
date Mon, 20 May 2002 22:19:26 +0000
parents
children
comparison
equal deleted inserted replaced
207:74c807ddde34 208:e0c0827131d1
1 /*
2 * NanoWM- the NanoGUI window manager.
3 * Copyright (C) 2000 Alex Holden <alex@linuxhacker.org>
4 */
5
6 #ifndef __NANOWM_H
7 #define __NANOWM_H
8
9 #ifdef DEBUG
10 #define Dprintf printf
11 #else
12 #define Dprintf(ignore...)
13 #endif
14
15 /* Where to place the first window on the screen */
16 #define FIRST_WINDOW_LOCATION 2
17
18 /* The distance to leave between windows when deciding where to place */
19 #define WINDOW_STEP 20
20
21 /* The different window types which can be used in windowlist->type */
22 enum {
23 WINDOW_TYPE_ROOT,
24 WINDOW_TYPE_CONTAINER,
25 WINDOW_TYPE_CLIENT
26 /***WINDOW_TYPE_TOPBAR,
27 WINDOW_TYPE_LEFTBAR,
28 WINDOW_TYPE_RIGHTBAR,
29 WINDOW_TYPE_BOTTOMBAR,
30 WINDOW_TYPE_LEFTRESIZE,
31 WINDOW_TYPE_RIGHTRESIZE,
32 WINDOW_TYPE_CLOSEBUTTON,
33 WINDOW_TYPE_MAXIMISEBUTTON,
34 WINDOW_TYPE_RESTOREBUTTON,
35 WINDOW_TYPE_ICONISEBUTTON,
36 WINDOW_TYPE_ICON,
37 WINDOW_TYPE_UTILITYBUTTON,
38 WINDOW_TYPE_UTILITYMENU,
39 WINDOW_TYPE_UTILITYMENUENTRY,
40 WINDOW_TYPE_ROOTMENU,
41 WINDOW_TYPE_ROOTMENUENTRY**/
42 };
43
44 /*
45 * Used to keep a list of all the windows we know about so we can quickly
46 * find out whether a window is "one of ours", and if it is, what kind of
47 * window it is (title bar, side bar, button, icon, root menu, etc.), who
48 * it's a child of, and any special data associated with it (the title
49 * used in the title, the text of a root menu entry, the pixmap of an
50 * icon, etc.).
51 */
52 struct windowlist {
53 GR_WINDOW_ID wid; /* The ID of this window */
54 GR_WINDOW_ID pid; /* The ID of this window's parent */
55 GR_WINDOW_ID clientid; /* clientid for container window*/
56 int type; /* What kind of window this is */
57 int sizing; /* True if in the middle of a sizing request */
58 int active; /* Whether this window is active or not */
59 void *data; /* Data associated with this window */
60 struct windowlist *next; /* The next window in the list */
61 };
62 typedef struct windowlist win;
63
64 /*
65 * Used to record the offset position when performing a move.
66 */
67 struct position {
68 GR_COORD x;
69 GR_COORD y;
70 };
71
72 /*
73 * Used to record the original position, original size, and offset position
74 * when performing a resize.
75 */
76 struct pos_size {
77 GR_COORD xoff;
78 GR_COORD yoff;
79 GR_COORD xorig;
80 GR_COORD yorig;
81 GR_SIZE width;
82 GR_SIZE height;
83 };
84
85 #if 0000
86 /*
87 * Used to record some general information about the client.
88 */
89 struct clientinfo {
90 GR_WINDOW_ID cid;
91 };
92 #endif
93
94 /* Function prototypes */
95 win *find_window(GR_WINDOW_ID wid);
96 int add_window(win *window);
97 int remove_window(win *window);
98 int remove_window_and_children(win *window);
99 int new_client_window(GR_WINDOW_ID wid);
100 void client_window_destroy(win *window);
101 void redraw_ncarea(win *window);
102 void do_exposure(GR_EVENT_EXPOSURE *event);
103 void do_button_down(GR_EVENT_BUTTON *event);
104 void do_button_up(GR_EVENT_BUTTON *event);
105 void do_mouse_enter(GR_EVENT_GENERAL *event);
106 void do_mouse_exit(GR_EVENT_GENERAL *event);
107 void do_mouse_moved(GR_EVENT_MOUSE *event);
108 void do_focus_in(GR_EVENT_GENERAL *event);
109 void do_key_down(GR_EVENT_KEYSTROKE *event);
110 void do_key_up(GR_EVENT_KEYSTROKE *event);
111 void do_focus_in(GR_EVENT_GENERAL *event);
112 void do_focus_out(GR_EVENT_GENERAL *event);
113 void do_update(GR_EVENT_UPDATE *event);
114 void do_chld_update(GR_EVENT_UPDATE *event);
115 void rootwindow_exposure(win *window, GR_EVENT_EXPOSURE *event);
116 void container_exposure(win *window, GR_EVENT_EXPOSURE *event);
117 void topbar_exposure(win *window, GR_EVENT_EXPOSURE *event);
118 void closebutton_exposure(win *window, GR_EVENT_EXPOSURE *event);
119 void maximisebutton_exposure(win *window, GR_EVENT_EXPOSURE *event);
120 void restorebutton_exposure(win *window, GR_EVENT_EXPOSURE *event);
121 void iconisebutton_exposure(win *window, GR_EVENT_EXPOSURE *event);
122 void utilitybutton_exposure(win *window, GR_EVENT_EXPOSURE *event);
123 void utilitymenu_exposure(win *window, GR_EVENT_EXPOSURE *event);
124 void utilitymenuentry_exposure(win *window, GR_EVENT_EXPOSURE *event);
125 void rootmenu_exposure(win *window, GR_EVENT_EXPOSURE *event);
126 void rootmenuentry_exposure(win *window, GR_EVENT_EXPOSURE *event);
127 void icon_exposure(win *window, GR_EVENT_EXPOSURE *event);
128 void rootwindow_buttondown(win *window, GR_EVENT_BUTTON *event);
129 void container_buttondown(win *window, GR_EVENT_BUTTON *event);
130 void topbar_buttondown(win *window, GR_EVENT_BUTTON *event);
131 void resizebar_buttondown(win *window, GR_EVENT_BUTTON *event);
132 void closebutton_buttondown(win *window, GR_EVENT_BUTTON *event);
133 void maximisebutton_buttondown(win *window, GR_EVENT_BUTTON *event);
134 void restorebutton_buttondown(win *window, GR_EVENT_BUTTON *event);
135 void iconisebutton_buttondown(win *window, GR_EVENT_BUTTON *event);
136 void utilitybutton_buttondown(win *window, GR_EVENT_BUTTON *event);
137 void icon_buttondown(win *window, GR_EVENT_BUTTON *event);
138 void rootwindow_buttonup(win *window, GR_EVENT_BUTTON *event);
139 void container_buttonup(win *window, GR_EVENT_BUTTON *event);
140 void topbar_buttonup(win *window, GR_EVENT_BUTTON *event);
141 void resizebar_buttonup(win *window, GR_EVENT_BUTTON *event);
142 void closebutton_buttonup(win *window, GR_EVENT_BUTTON *event);
143 void maximisebutton_buttonup(win *window, GR_EVENT_BUTTON *event);
144 void restorebutton_buttonup(win *window, GR_EVENT_BUTTON *event);
145 void iconisebutton_buttonup(win *window, GR_EVENT_BUTTON *event);
146 void utilitybutton_buttonup(win *window, GR_EVENT_BUTTON *event);
147 void icon_buttonup(win *window, GR_EVENT_BUTTON *event);
148 void utilitymenuentry_buttonup(win *window, GR_EVENT_BUTTON *event);
149 void rootmenuentry_buttonup(win *window, GR_EVENT_BUTTON *event);
150 void closebutton_mouseexit(win *window, GR_EVENT_GENERAL *event);
151 void maximisebutton_mouseexit(win *window, GR_EVENT_GENERAL *event);
152 void restorebutton_mouseexit(win *window, GR_EVENT_GENERAL *event);
153 void iconisebutton_mouseexit(win *window, GR_EVENT_GENERAL *event);
154 void utilitybutton_mouseexit(win *window, GR_EVENT_GENERAL *event);
155 void utilitymenu_mouseexit(win *window, GR_EVENT_GENERAL *event);
156 void utilitymenuentry_mouseexit(win *window, GR_EVENT_GENERAL *event);
157 void rootmenu_mouseexit(win *window, GR_EVENT_GENERAL *event);
158 void rootmenuentry_mouseexit(win *window, GR_EVENT_GENERAL *event);
159 void container_mousemoved(win *window, GR_EVENT_MOUSE *event);
160 void topbar_mousemoved(win *window, GR_EVENT_MOUSE *event);
161 void leftbar_mousemoved(win *window, GR_EVENT_MOUSE *event);
162 void leftresize_mousemoved(win *window, GR_EVENT_MOUSE *event);
163 void bottombar_mousemoved(win *window, GR_EVENT_MOUSE *event);
164 void rightresize_mousemoved(win *window, GR_EVENT_MOUSE *event);
165 void rightbar_mousemoved(win *window, GR_EVENT_MOUSE *event);
166
167 extern GR_SCREEN_INFO si;
168 extern win *windows;
169 extern GR_BITMAP utilitybutton_notpressed[];
170 extern GR_BITMAP utilitybutton_pressed[];
171 extern GR_BITMAP maximisebutton_notpressed[];
172 extern GR_BITMAP maximisebutton_pressed[];
173 extern GR_BITMAP iconisebutton_notpressed[];
174 extern GR_BITMAP iconisebutton_pressed[];
175 extern GR_BITMAP closebutton_notpressed[];
176 extern GR_BITMAP closebutton_pressed[];
177 extern GR_BITMAP restorebutton_notpressed[];
178 extern GR_BITMAP restorebutton_pressed[];
179 extern GR_BITMAP horizontal_resize_fg[];
180 extern GR_BITMAP horizontal_resize_bg[];
181 extern GR_BITMAP vertical_resize_fg[];
182 extern GR_BITMAP vertical_resize_bg[];
183 extern GR_BITMAP righthand_resize_fg[];
184 extern GR_BITMAP righthand_resize_bg[];
185 extern GR_BITMAP lefthand_resize_fg[];
186 extern GR_BITMAP lefthand_resize_bg[];
187 extern int horizontal_resize_columns, horizontal_resize_rows;
188 extern int horizontal_resize_hotx, horizontal_resize_hoty;
189 extern int vertical_resize_columns, vertical_resize_rows;
190 extern int vertical_resize_hotx, vertical_resize_hoty;
191 extern int lefthand_resize_columns, lefthand_resize_rows;
192 extern int lefthand_resize_hotx, lefthand_resize_hoty;
193 extern int righthand_resize_columns, righthand_resize_rows;
194 extern int righthand_resize_hotx, righthand_resize_hoty;
195
196 #endif