#ifndef _GTCACA_CUSTOM_H_
#define _GTCACA_CUSTOM_H_
#include <gtcaca/main.h>
#include <gtcaca/widget.h>
typedef struct _gtcaca_custom_widget_t gtcaca_custom_widget_t;
typedef void (*gtcaca_custom_draw_cb_t)(gtcaca_custom_widget_t *widget, void *userdata);
typedef int (*gtcaca_custom_key_cb_t)(gtcaca_custom_widget_t *widget, int key, void *userdata);
struct _gtcaca_custom_widget_t {
gtcaca_widget_type_t type;
unsigned int id;
int has_focus;
int is_visible;
int x;
int y;
int width;
int height;
uint8_t color_focus_fg;
uint8_t color_focus_bg;
uint8_t color_nonfocus_fg;
uint8_t color_nonfocus_bg;
gtcaca_widget_t *parent;
gtcaca_widget_t *children;
struct _gtcaca_custom_widget_t *prev;
struct _gtcaca_custom_widget_t *next;
gtcaca_custom_draw_cb_t draw_cb;
void *draw_cb_userdata;
gtcaca_custom_key_cb_t key_cb;
void *key_cb_userdata;
int focusable;
};
gtcaca_custom_widget_t *gtcaca_custom_new(gtcaca_widget_t *parent, int x, int y, int width, int height);
void gtcaca_custom_free(gtcaca_custom_widget_t *widget);
void gtcaca_custom_draw(gtcaca_custom_widget_t *widget);
void gtcaca_custom_set_draw_cb(gtcaca_custom_widget_t *widget, gtcaca_custom_draw_cb_t cb, void *userdata);
void gtcaca_custom_set_key_cb(gtcaca_custom_widget_t *widget, gtcaca_custom_key_cb_t cb, void *userdata);
void gtcaca_custom_set_focusable(gtcaca_custom_widget_t *widget, int focusable);
#endif