UI1.H 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
  11. COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
  12. */
  13. /*
  14. * $Source: f:/miner/source/ui/rcs/ui.h $
  15. * $Revision: 1.5 $
  16. * $Author: john $
  17. * $Date: 1993/12/07 12:30:11 $
  18. *
  19. * Header file for user interface
  20. *
  21. * $Log: ui.h $
  22. * Revision 1.5 1993/12/07 12:30:11 john
  23. * new version.
  24. *
  25. * Revision 1.4 1993/10/26 13:46:15 john
  26. * *** empty log message ***
  27. *
  28. * Revision 1.3 1993/10/07 11:23:30 john
  29. * *** empty log message ***
  30. *
  31. * Revision 1.2 1993/10/05 17:31:15 john
  32. * *** empty log message ***
  33. *
  34. * Revision 1.1 1993/09/20 10:36:36 john
  35. * Initial revision
  36. *
  37. *
  38. */
  39. #ifndef _UI_H
  40. #define _UI_H
  41. typedef struct {
  42. char description[100];
  43. char * buttontext[17];
  44. int numkeys;
  45. short keycode[100];
  46. int function_number[100];
  47. } UI_KEYPAD;
  48. typedef struct
  49. {
  50. unsigned int frame;
  51. int type;
  52. int data;
  53. } UI_EVENT;
  54. #define BASE_GADGET \
  55. short kind; \
  56. struct _gadget * prev; \
  57. struct _gadget * next; \
  58. struct _gadget * when_tab; \
  59. struct _gadget * when_btab; \
  60. struct _gadget * when_up; \
  61. struct _gadget * when_down; \
  62. struct _gadget * when_left; \
  63. struct _gadget * when_right; \
  64. struct _gadget * parent; \
  65. int status; \
  66. int oldstatus; \
  67. grs_canvas * canvas; \
  68. int hotkey; \
  69. short x1,y1,x2,y2;
  70. typedef struct _gadget {
  71. BASE_GADGET
  72. unsigned char rsvd[256];
  73. } UI_GADGET;
  74. typedef struct {
  75. BASE_GADGET
  76. int trap_key;
  77. int (*user_function)(void);
  78. } UI_GADGET_KEYTRAP;
  79. typedef struct {
  80. BASE_GADGET
  81. short width, height;
  82. short b1_held_down;
  83. short b1_clicked;
  84. short b1_double_clicked;
  85. short b1_dragging;
  86. short b1_drag_x1, b1_drag_y1;
  87. short b1_drag_x2, b1_drag_y2;
  88. short b1_done_dragging;
  89. int keypress;
  90. short mouse_onme;
  91. short mouse_x, mouse_y;
  92. grs_bitmap * bitmap;
  93. } UI_GADGET_USERBOX;
  94. typedef struct {
  95. BASE_GADGET
  96. short width, height;
  97. char * text;
  98. short position;
  99. short oldposition;
  100. short pressed;
  101. int (*user_function)(void);
  102. int (*user_function1)(void);
  103. int hotkey1;
  104. int dim_if_no_function;
  105. } UI_GADGET_BUTTON;
  106. typedef struct {
  107. BASE_GADGET
  108. short width, height;
  109. char * text;
  110. short length;
  111. short slength;
  112. short position;
  113. short oldposition;
  114. short pressed;
  115. short first_time;
  116. } UI_GADGET_INPUTBOX;
  117. typedef struct {
  118. BASE_GADGET
  119. short width, height;
  120. char * text;
  121. short position;
  122. short oldposition;
  123. short pressed;
  124. short group;
  125. short flag;
  126. } UI_GADGET_RADIO;
  127. typedef struct {
  128. BASE_GADGET
  129. char *text;
  130. short width, height;
  131. byte flag;
  132. byte pressed;
  133. byte position;
  134. byte oldposition;
  135. int trap_key;
  136. int (*user_function)(void);
  137. } UI_GADGET_ICON;
  138. typedef struct {
  139. BASE_GADGET
  140. short width, height;
  141. char * text;
  142. short position;
  143. short oldposition;
  144. short pressed;
  145. short group;
  146. short flag;
  147. } UI_GADGET_CHECKBOX;
  148. typedef struct {
  149. BASE_GADGET
  150. short horz;
  151. short width, height;
  152. int start;
  153. int stop;
  154. int position;
  155. int window_size;
  156. int fake_length;
  157. int fake_position;
  158. int fake_size;
  159. UI_GADGET_BUTTON * up_button;
  160. UI_GADGET_BUTTON * down_button;
  161. unsigned int last_scrolled;
  162. short drag_x, drag_y;
  163. int drag_starting;
  164. int dragging;
  165. int moved;
  166. } UI_GADGET_SCROLLBAR;
  167. typedef struct {
  168. BASE_GADGET
  169. short width, height;
  170. char * list;
  171. int text_width;
  172. int num_items;
  173. int num_items_displayed;
  174. int first_item;
  175. int old_first_item;
  176. int current_item;
  177. int selected_item;
  178. int old_current_item;
  179. unsigned int last_scrolled;
  180. int dragging;
  181. int textheight;
  182. UI_GADGET_SCROLLBAR * scrollbar;
  183. int moved;
  184. } UI_GADGET_LISTBOX;
  185. typedef struct _ui_window {
  186. short x, y;
  187. short width, height;
  188. short text_x, text_y;
  189. grs_canvas * canvas;
  190. grs_canvas * oldcanvas;
  191. grs_bitmap * background;
  192. UI_GADGET * gadget;
  193. UI_GADGET * keyboard_focus_gadget;
  194. struct _ui_window * next;
  195. struct _ui_window * prev;
  196. } UI_WINDOW;
  197. typedef struct {
  198. short new_dx, new_dy;
  199. short new_buttons;
  200. short x, y;
  201. short dx, dy;
  202. short hidden;
  203. short backwards;
  204. short b1_status;
  205. short b1_last_status;
  206. short b2_status;
  207. short b2_last_status;
  208. short b3_status;
  209. short b3_last_status;
  210. short bg_x, bg_y;
  211. short bg_saved;
  212. grs_bitmap * background;
  213. grs_bitmap * pointer;
  214. unsigned int time_lastpressed;
  215. short moved;
  216. } UI_MOUSE;
  217. #define BUTTON_PRESSED 1
  218. #define BUTTON_RELEASED 2
  219. #define BUTTON_JUST_PRESSED 4
  220. #define BUTTON_JUST_RELEASED 8
  221. #define BUTTON_DOUBLE_CLICKED 16
  222. #define B1_PRESSED (Mouse.b1_status & BUTTON_PRESSED)
  223. #define B1_RELEASED (Mouse.b1_status & BUTTON_RELEASED)
  224. #define B1_JUST_PRESSED (Mouse.b1_status & BUTTON_JUST_PRESSED)
  225. #define B1_JUST_RELEASED (Mouse.b1_status & BUTTON_JUST_RELEASED)
  226. #define B1_DOUBLE_CLICKED (Mouse.b1_status & BUTTON_DOUBLE_CLICKED)
  227. extern grs_font * ui_small_font;
  228. extern UI_MOUSE Mouse;
  229. extern UI_WINDOW * CurWindow;
  230. extern UI_WINDOW * FirstWindow;
  231. extern UI_WINDOW * LastWindow;
  232. extern unsigned char CBLACK,CGREY,CWHITE,CBRIGHT,CRED;
  233. extern UI_GADGET * selected_gadget;
  234. extern int last_keypress;
  235. extern void Hline(short x1, short x2, short y );
  236. extern void Vline(short y1, short y2, short x );
  237. extern void ui_string_centered( short x, short y, char * s );
  238. extern void ui_draw_box_out( short x1, short y1, short x2, short y2 );
  239. extern void ui_draw_box_in( short x1, short y1, short x2, short y2 );
  240. extern void ui_draw_line_in( short x1, short y1, short x2, short y2 );
  241. void ui_init();
  242. void ui_close();
  243. int MessageBox( short x, short y, int NumButtons, char * text, ... );
  244. void ui_string_centered( short x, short y, char * s );
  245. int PopupMenu( int NumItems, char * text[] );
  246. extern void ui_mouse_init();
  247. extern grs_bitmap * ui_mouse_set_pointer( grs_bitmap * new );
  248. extern void ui_mouse_process();
  249. extern void ui_mouse_hide();
  250. extern void ui_mouse_show();
  251. #define WIN_BORDER 1
  252. #define WIN_FILLED 2
  253. #define WIN_SAVE_BG 4
  254. #define WIN_DIALOG (4+2+1)
  255. extern UI_WINDOW * ui_open_window( short x, short y, short w, short h, int flags );
  256. extern void ui_close_window( UI_WINDOW * wnd );
  257. extern UI_GADGET * ui_gadget_add( UI_WINDOW * wnd, short kind, short x1, short y1, short x2, short y2 );
  258. extern UI_GADGET_BUTTON * ui_add_gadget_button( UI_WINDOW * wnd, short x, short y, short w, short h, char * text, int (*function_to_call)(void) );
  259. extern void ui_gadget_delete_all( UI_WINDOW * wnd );
  260. extern void ui_window_do_gadgets( UI_WINDOW * wnd );
  261. extern void ui_draw_button( UI_GADGET_BUTTON * button );
  262. extern int ui_mouse_on_gadget( UI_GADGET * gadget );
  263. extern void ui_button_do( UI_GADGET_BUTTON * button, int keypress );
  264. extern void ui_listbox_do( UI_GADGET_LISTBOX * listbox, int keypress );
  265. extern void ui_draw_listbox( UI_GADGET_LISTBOX * listbox );
  266. extern UI_GADGET_LISTBOX * ui_add_gadget_listbox( UI_WINDOW * wnd, short x, short y, short w, short h, short numitems, char * list, int text_width );
  267. extern void ui_mega_process();
  268. extern void ui_get_button_size( char * text, short * width, short * height );
  269. extern UI_GADGET_SCROLLBAR * ui_add_gadget_scrollbar( UI_WINDOW * wnd, short x, short y, short w, short h, int start, int stop, int position, int window_size );
  270. extern void ui_scrollbar_do( UI_GADGET_SCROLLBAR * scrollbar, int keypress );
  271. extern void ui_draw_scrollbar( UI_GADGET_SCROLLBAR * scrollbar );
  272. extern void ui_wprintf( UI_WINDOW * wnd, char * format, ... );
  273. extern void ui_wprintf_at( UI_WINDOW * wnd, short x, short y, char * format, ... );
  274. extern void ui_draw_radio( UI_GADGET_RADIO * radio );
  275. extern UI_GADGET_RADIO * ui_add_gadget_radio( UI_WINDOW * wnd, short x, short y, short w, short h, short group, char * text );
  276. extern void ui_radio_do( UI_GADGET_RADIO * radio, int keypress );
  277. extern void ui_draw_checkbox( UI_GADGET_CHECKBOX * checkbox );
  278. extern UI_GADGET_CHECKBOX * ui_add_gadget_checkbox( UI_WINDOW * wnd, short x, short y, short w, short h, short group, char * text );
  279. extern void ui_checkbox_do( UI_GADGET_CHECKBOX * checkbox, int keypress );
  280. extern UI_GADGET * ui_gadget_get_prev( UI_GADGET * gadget );
  281. extern UI_GADGET * ui_gadget_get_next( UI_GADGET * gadget );
  282. extern void ui_gadget_calc_keys( UI_WINDOW * wnd);
  283. extern void ui_listbox_change( UI_WINDOW * wnd, UI_GADGET_LISTBOX * listbox, short numitems, char * list, int text_width );
  284. extern void ui_draw_inputbox( UI_GADGET_INPUTBOX * inputbox );
  285. extern UI_GADGET_INPUTBOX * ui_add_gadget_inputbox( UI_WINDOW * wnd, short x, short y, short w, short h, char * text );
  286. extern void ui_inputbox_do( UI_GADGET_INPUTBOX * inputbox, int keypress );
  287. extern void ui_userbox_do( UI_GADGET_USERBOX * userbox, int keypress );
  288. extern UI_GADGET_USERBOX * ui_add_gadget_userbox( UI_WINDOW * wnd, short x, short y, short w, short h );
  289. extern void ui_draw_userbox( UI_GADGET_USERBOX * userbox );
  290. extern int MenuX( int x, int y, int NumButtons, char * text[] );
  291. // Changes to a drive if valid.. 1=A, 2=B, etc
  292. // If flag, then changes to it.
  293. // Returns 0 if not-valid, 1 if valid.
  294. int file_chdrive( int DriveNum, int flag );
  295. // Changes to directory in dir. Even drive is changed.
  296. // Returns 1 if failed.
  297. // 0 = Changed ok.
  298. // 1 = Invalid disk drive.
  299. // 2 = Invalid directory.
  300. int file_chdir( char * dir );
  301. int file_getdirlist( int MaxNum, char list[][13] );
  302. int file_getfilelist( int MaxNum, char list[][13], char * filespec );
  303. int ui_get_filename( char * filename, char * Filespec, char * message );
  304. void * ui_malloc( int size );
  305. void ui_free( void * buffer );
  306. UI_GADGET_KEYTRAP * ui_add_gadget_keytrap( UI_WINDOW * wnd, int key_to_trap, int (*function_to_call)(void) );
  307. void ui_keytrap_do( UI_GADGET_KEYTRAP * keytrap, int keypress );
  308. void ui_mouse_close();
  309. #define UI_RECORD_MOUSE 1
  310. #define UI_RECORD_KEYS 2
  311. #define UI_STATUS_NORMAL 0
  312. #define UI_STATUS_RECORDING 1
  313. #define UI_STATUS_PLAYING 2
  314. #define UI_STATUS_FASTPLAY 3
  315. int ui_record_events( int NumberOfEvents, UI_EVENT * buffer, int Flags );
  316. int ui_play_events_realtime( int NumberOfEvents, UI_EVENT * buffer );
  317. int ui_play_events_fast( int NumberOfEvents, UI_EVENT * buffer );
  318. int ui_recorder_status();
  319. void ui_set_playback_speed( int speed );
  320. extern unsigned int ui_number_of_events;
  321. extern unsigned int ui_event_counter;
  322. int ui_get_file( char * filename, char * Filespec );
  323. int MessageBoxN( short xc, short yc, int NumButtons, char * text, char * Button[] );
  324. void ui_draw_icon( UI_GADGET_ICON * icon );
  325. void ui_icon_do( UI_GADGET_ICON * icon, int keypress );
  326. UI_GADGET_ICON * ui_add_gadget_icon( UI_WINDOW * wnd, char * text, short x, short y, short w, short h, int k,int (*f)(void) );
  327. int GetKeyCode(char * text);
  328. int DecodeKeyText( char * text );
  329. void GetKeyDescription( char * text, int keypress );
  330. extern void menubar_init(char * filename );
  331. extern void menubar_do( int keypress );
  332. extern void menubar_close();
  333. extern void menubar_hide();
  334. extern void menubar_show();
  335. void ui_pad_init();
  336. void ui_pad_close();
  337. void ui_pad_activate( UI_WINDOW * wnd, int x, int y );
  338. void ui_pad_deactivate();
  339. void ui_pad_goto(int n);
  340. void ui_pad_goto_next();
  341. void ui_pad_goto_prev();
  342. void ui_pad_read( int n, char * filename );
  343. #endif
  344.