#ifndef _GTCACA_CALENDAR_H_
#define _GTCACA_CALENDAR_H_
#include <stdint.h>
#include <gtcaca/main.h>
#include <gtcaca/widget.h>
typedef int (*gtcaca_calendar_marker_cb)(int year, int month, int day, void *userdata);
typedef struct _gtcaca_calendar_widget_t gtcaca_calendar_widget_t;
struct _gtcaca_calendar_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_calendar_widget_t *prev;
struct _gtcaca_calendar_widget_t *next;
int year, month, day;
int today_y, today_m, today_d;
char *title;
gtcaca_calendar_marker_cb marker;
void *marker_ud;
uint8_t sel_fg, sel_bg;
};
gtcaca_calendar_widget_t *gtcaca_calendar_new(gtcaca_widget_t *parent, int x, int y, int width, int height);
void gtcaca_calendar_set_date(gtcaca_calendar_widget_t *c, int year, int month, int day);
void gtcaca_calendar_get_date(gtcaca_calendar_widget_t *c, int *year, int *month, int *day);
void gtcaca_calendar_set_marker(gtcaca_calendar_widget_t *c, gtcaca_calendar_marker_cb cb, void *userdata);
void gtcaca_calendar_set_title(gtcaca_calendar_widget_t *c, const char *title);
void gtcaca_calendar_draw(gtcaca_calendar_widget_t *c);
int gtcaca_calendar_key(gtcaca_calendar_widget_t *c, int key, void *userdata);
void gtcaca_calendar_free(gtcaca_calendar_widget_t *c);
int gtcaca_calendar_days_in_month(int year, int month);
int gtcaca_calendar_day_of_week(int year, int month, int day);
#endif