install: add install sources and resources
[doom2d-restoration.git] / LIBS / GUI.H
blob569c180cc5f3c4b9aa66d224b0541fb9a15a4d9b
1 // Graphics User Interface
3 #pragma library("gui.lib")
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
9 // Commands
10 enum{C_CANCEL=-1,C_NONE=0,C_OK,C_YES,C_NO,C_SLIDE,C_SCROLL,C_USER};
12 typedef struct{
13   char *t;
14   int c;
15 }menu_t;
17 #ifdef __cplusplus
21 // Main class
22 struct gui_obj{
23   int left,top,width,height;
24   gui_obj *next,*prev,*child,*owner;
25   gui_obj();
26   gui_obj(int x,int y,int w,int h);
27   virtual void draw(void);
28   virtual void redraw(void);
29   virtual void update(void);
30   virtual int chkmouse(int x,int y,int b);
31   virtual int mouse(int x,int y,int b);
32   virtual int key(int k);
33   virtual void command(int,long);
34   virtual gui_obj& operator +=(gui_obj&);
35   virtual gui_obj& operator <<=(gui_obj&);
36   virtual void remove(void);
39 typedef struct{
40   gui_obj *o;
41   void *t;
42 }cont_t;
44 // base button class
45 struct base_button:gui_obj{
46   char pressed;
47   int com,hotkey;
48   int clrl,clrn,clrh;
49   long par;
50   base_button(int x,int y,int w,int h,int c,long p,int k);
51   virtual void draw(void);
52   virtual int mouse(int x,int y,int b);
53   virtual int key(int k);
56 // text button
57 struct button:base_button{
58   char *text;
59   int textx,texty;
60   button(int x,int y,int w,int h,char *s,int c,long p,int k);
61   virtual void draw(void);
64 // sprite button
65 struct sprbutton:base_button{
66   vgaimg *spr;
67   int sprx,spry;
68   sprbutton(int x,int y,int w,int h,vgaimg *s,int c,long p,int k);
69   virtual void draw(void);
70   virtual void redraw(void);
73 // frame
74 struct frame:gui_obj{
75   int clrl,clrn,clrh;
76   frame(int x,int y,int w,int h);
77   virtual void draw(void);
80 // modal dialog
81 struct mdialog:frame{
82   mdialog(int x,int y,int w,int h);
83   virtual int chkmouse(int x,int y,int b);
86 // message box
87 struct msgbox:mdialog{
88   char *text;
89   msgbox(int minw,int minh,char *,int x=160,int y=100);
90   virtual void draw(void);
91   virtual void command(int,long);
94 // container box
95 struct vcontbox:frame{
96   cont_t *cont;
97   int cw,cur,com,num;
98   vcontbox(int x,int y,int w,int h,int cw,cont_t *,int cur,int cmd);
99   virtual void draw(void);
100   virtual int mouse(int x,int y,int b);
103 // menu box
104 struct menubox:frame{
105   menu_t *mnu;
106   int line;
107   menubox(int x,int y,menu_t *);
108   virtual void draw(void);
109   virtual int mouse(int x,int y,int b);
110   virtual int chkmouse(int x,int y,int b);
113 // base slider class
114 struct base_slider:gui_obj{
115   long total,cur;
116   int com;
117   base_slider(long t,long c,int cmd);
118   virtual void adjust(void);
121 // horizontal slider
122 struct hslider:base_slider{
123   hslider(int x,int y,int w,int h,long t,long c,int cmd);
124   virtual void draw(void);
125   virtual int mouse(int x,int y,int b);
128 // horizontal scroll bar
129 struct hscroll:gui_obj{
130   hslider *sld;
131   button *b1,*b2;
132   hscroll(int x,int y,int w,int h,long t,long c,int cmd,long step);
133   virtual ~hscroll(void);
134   virtual void command(int,long);
137 // vertical slider
138 struct vslider:base_slider{
139   vslider(int x,int y,int w,int h,long t,long c,int cmd);
140   virtual void draw(void);
141   virtual int mouse(int x,int y,int b);
144 // vertical scroll bar
145 struct vscroll:gui_obj{
146   vslider *sld;
147   button *b1,*b2;
148   vscroll(int x,int y,int w,int h,long t,long c,int cmd,long step);
149   virtual ~vscroll(void);
150   virtual void command(int,long);
153 // string list
154 struct strlist:frame{
155   int com,lines,tline,cline;
156   char **list;
157   strlist(int x,int y,int w,int h,char **,int cmd);
158   virtual void newlist(char **);
159   virtual void draw(void);
160   virtual int mouse(int x,int y,int b);
163 // string list with scroll bar
164 struct strlist2:gui_obj{
165   vscroll *sb;
166   strlist *lst;
167   strlist2(int x,int y,int w,int h,char **,int cmd,long step);
168   virtual ~strlist2(void);
169   virtual void newlist(char **);
170   virtual void command(int,long);
173 // checkbox
174 struct chkbox:gui_obj{
175   int com;
176   char st;
177   chkbox(int x,int y,int w,int h,int c,int s);
178   virtual void draw(void);
179   virtual int mouse(int x,int y,int b);
182 // text string
183 struct textstr:gui_obj{
184   char *txt,clr;
185   void *fnt;
186   textstr(int x,int y,int cntr,int h,char *t,void *f,char c);
187   virtual void newtext(int x,int y,int cntr,int h,char *,void *,char c);
188   virtual void draw(void);
191 // input box
192 struct inputbox:gui_obj{
193   char *buf;
194   int sz,cur;
195   inputbox(int x,int y,int w,int h,char *buf,int sz);
196   virtual void draw(void);
197   virtual int key(int);
200 extern "C" {
202 #endif
204 void I_init(void);
205 void I_close(void);
206 void I_mon(void);
207 void I_moff(void);
208 int I_mget(int *x,int *y);
209 int I_iskey(void);
210 int I_getkey(void);
212 void GUI_start(void); // init GUI
213 void GUI(void);       // run GUI
214 void GUI_wait(void);  // poll mouse, keys, but don't do anything
215 void GUI_close(void); // close GUI
216 void GUI_update(void); // update screen
218 enum{MB_OK,MB_C,MB_OKC,MB_YN,MB_YNC};
220 int message(int type,char *format,...);
222 #ifdef __cplusplus
226 void def_command(int,long);
228 void send_command(gui_obj *,int,long);
230 extern "C" {
232 #endif
234 extern vgaimg stdarrow; // cursor image
235 extern int smallfont; // font
236 extern vgapal mainpal; // GUI palette
238 extern int msg;
239 extern unsigned char gray[256];
240 extern vgaimg *mouseshape;
242 #ifdef __cplusplus
244 extern gui_obj& desktop;
245 #endif