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