1 /*	Public domain	*/
2 
3 #ifndef _AGAR_WIDGET_RADIO_H_
4 #define _AGAR_WIDGET_RADIO_H_
5 
6 #include <agar/gui/widget.h>
7 
8 #include <agar/gui/begin.h>
9 
10 typedef struct ag_radio_item {
11 	char text[128];
12 	int surface;
13 	AG_KeySym hotkey;
14 } AG_RadioItem;
15 
16 typedef struct ag_radio {
17 	struct ag_widget wid;
18 	Uint flags;
19 #define AG_RADIO_HFILL	0x01
20 #define AG_RADIO_VFILL	0x02
21 #define AG_RADIO_EXPAND (AG_RADIO_HFILL|AG_RADIO_VFILL)
22 	int value;		/* Default value binding */
23 	AG_RadioItem *items;
24 	int nItems;
25 	int selitem;		/* Index of selected item */
26 	int max_w;		/* Width of widest label */
27 	int oversel;		/* Overlapping selection */
28 	int xPadding, yPadding;
29 	int xSpacing, ySpacing;
30 	int radius;		/* Control radius in pixels */
31 	int itemHeight;
32 	AG_Rect r;		/* View area */
33 } AG_Radio;
34 
35 __BEGIN_DECLS
36 extern AG_WidgetClass agRadioClass;
37 
38 AG_Radio *AG_RadioNew(void *, Uint, const char *[]);
39 AG_Radio *AG_RadioNewFn(void *, Uint, const char **, AG_EventFn,
40                         const char *, ...);
41 AG_Radio *AG_RadioNewInt(void *, Uint, const char **, int *);
42 AG_Radio *AG_RadioNewUint(void *, Uint, const char **, Uint *);
43 void      AG_RadioItemsFromArray(AG_Radio *, const char **);
44 int       AG_RadioAddItem(AG_Radio *, const char *, ...)
45                           FORMAT_ATTRIBUTE(printf,2,3)
46 			  NONNULL_ATTRIBUTE(2);
47 int       AG_RadioAddItemS(AG_Radio *, const char *);
48 int       AG_RadioAddItemHK(AG_Radio *, AG_KeySym, const char *, ...)
49                             FORMAT_ATTRIBUTE(printf,3,4)
50 			    NONNULL_ATTRIBUTE(3);
51 int       AG_RadioAddItemHKS(AG_Radio *, AG_KeySym, const char *);
52 void      AG_RadioClearItems(AG_Radio *);
53 __END_DECLS
54 
55 #include <agar/gui/close.h>
56 #endif /* _AGAR_WIDGET_RADIO_H_ */
57