#ifndef _GTCACA_WINDOW_H_
#define _GTCACA_WINDOW_H_
#include <gtcaca/main.h>
#include <gtcaca/widget.h>
typedef enum {
GTCACA_WINDOW_ANIM_NONE = 0,
GTCACA_WINDOW_ANIM_SHRINK,
} gtcaca_window_close_anim_t;
struct _gtcaca_window_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_window_widget_t *prev;
struct _gtcaca_window_widget_t *next;
char *window_title;
gtcaca_widget_t *focused_child;
gtcaca_widget_t *default_widget;
gtcaca_window_close_anim_t close_anim;
gtcaca_widget_t *close_anim_target;
};
typedef struct _gtcaca_window_widget_t gtcaca_window_widget_t;
gtcaca_window_widget_t *gtcaca_window_new(gtcaca_widget_t *parent, const char *window_title, int x, int y, int width, int height);
gtcaca_window_widget_t *gtcaca_window_new_centered(gtcaca_widget_t *parent, const char *window_title, int width, int height);
void gtcaca_window_draw(gtcaca_window_widget_t *win);
void gtcaca_window_set_focus(gtcaca_window_widget_t *win);
gtcaca_window_widget_t *gtcaca_window_get_current_focus(void);
gtcaca_window_widget_t *gtcaca_window_get_next(gtcaca_window_widget_t *win);
gtcaca_window_widget_t *gtcaca_window_get_prev(gtcaca_window_widget_t *win);
void gtcaca_window_set_focused_child(gtcaca_window_widget_t *win, gtcaca_widget_t *child);
void gtcaca_window_set_default(gtcaca_window_widget_t *win, gtcaca_widget_t *widget);
void gtcaca_window_focus_next_child(gtcaca_window_widget_t *win);
void gtcaca_window_focus_prev_child(gtcaca_window_widget_t *win);
void gtcaca_window_set_close_animation(gtcaca_window_widget_t *win, gtcaca_window_close_anim_t anim, gtcaca_widget_t *target);
void gtcaca_window_close(gtcaca_window_widget_t *win);
#endif