13,14 → 13,89 |
#define KMENU_LBORDER_SIZE 2 |
#define KMENU_DBORDER_SIZE 1 |
|
typedef struct { |
int type; |
uint32_t color; |
union { |
uint32_t bgcolor; |
void *buffer; |
}; |
} t_font; |
|
typedef struct { |
uint16_t left, top, right, bottom; |
} t_rect; |
|
typedef struct kmenuitem_t{ |
int type; |
char *text; |
union { |
void *submenu; |
//kmenuitem_callback_t callback; |
size_t btnid; |
}; |
|
void (*paint)(struct kmenuitem_t *item, t_rect *rc) __attribute__((__stdcall__)); |
|
int is_focused; |
int is_enabled; |
int is_visible; |
size_t style; |
|
int font_width, font_height; |
t_font font; |
|
size_t left, top; |
size_t width, height, pref_width, pref_height; |
size_t margin_left, margin_right, margin_top, margin_bottom; |
size_t padding_left, padding_right, padding_top, padding_bottom; |
} kmenuitem_t; |
|
typedef struct ksubmenu_t{ |
kmenuitem_t **items; |
int count; |
|
void (*paint)(struct ksubmenu_t *menu) __attribute__((__stdcall__)); |
|
int is_opened; |
int focus_idx; |
|
size_t width, height; |
size_t left, top; |
int tid; |
int parent_wnd, parent_tid, submenu_tid, self_wnd; |
int level; |
size_t return_btnid; |
|
int set_new_padding, set_new_margin; |
t_rect items_padding; |
t_rect items_margin; |
|
struct ksubmenu_t *parent; |
} ksubmenu_t; |
|
typedef struct { |
kmenuitem_t **submenu; |
int count; |
|
size_t width, height; |
size_t left, top; |
|
int line_height; |
|
int focus_idx; |
int submenu_tid; |
} kmenu_t; |
|
|
extern int kolibri_kmenu_init(void); |
|
extern void (*kmainmenu_draw)(void *) __attribute__((__stdcall__)); |
extern void (*kmainmenu_dispatch_cursorevent)(void *) __attribute__((__stdcall__)); |
extern void (*kmainmenu_draw)(ksubmenu_t *) __attribute__((__stdcall__)); |
extern void (*kmainmenu_dispatch_cursorevent)(ksubmenu_t *) __attribute__((__stdcall__)); |
extern void (*kmenu_init)(void *) __attribute__((__stdcall__)); |
extern void* (*ksubmenu_new)() __attribute__((__stdcall__)); |
extern void (*ksubmenu_add)(void *, void *) __attribute__((__stdcall__)); |
extern void* (*kmenuitem_new)(uint32_t, const char *, uint32_t) __attribute__((__stdcall__)); |
extern void* (*kmenuitem__submenu_new)(uint32_t, const char *, void *) __attribute__((__stdcall__)); |
extern ksubmenu_t* (*ksubmenu_new)() __attribute__((__stdcall__)); |
extern void (*ksubmenu_add)(ksubmenu_t *, kmenuitem_t *) __attribute__((__stdcall__)); |
extern kmenuitem_t* (*kmenuitem_new)(uint32_t, const char *, uint32_t) __attribute__((__stdcall__)); |
extern kmenuitem_t* (*kmenuitem__submenu_new)(uint32_t, const char *, ksubmenu_t *) __attribute__((__stdcall__)); |
|
#endif /* KOLIBRI_KMENU_H */ |