#ifndef SWIFT_CONTROL_INPUT_H
#define SWIFT_CONTROL_INPUT_H

#include <swift/window.h>
#include <swift/stdlib.h>
#include <swift/gui/api.h>

typedef void (* swift_gui_win_pos_fn_t)(swift_widgets_t*, int,
	int);
typedef void (* swift_gui_win_resize_fn_t)(swift_widgets_t*,
	int, int);
typedef void (* swift_gui_win_close_fn_t)(swift_widgets_t*);
typedef void (* swift_gui_win_refresh_fn_t)(swift_widgets_t*);
typedef void (* swift_gui_win_focus_fn_t)(swift_widgets_t*,
	int);
typedef void (* swift_gui_iconify_fn_t)(swift_widgets_t*, int);
typedef void (* swift_gui_buf_resize_fn_t)(swift_widgets_t*,
	int, int);
typedef void (* swift_gui_mouse_btn_fn_t)(swift_widgets_t*,
	int, int, int);
typedef void (* swift_gui_cur_pos_fn_t)(swift_widgets_t*,
	double, double);
typedef void (* swift_gui_cur_enter_fn_t)(swift_widgets_t*,
	int);
typedef void (* swift_gui_scroll_fn_t)(swift_widgets_t*,
	double, double);
typedef void (* swift_gui_key_fn_t)(swift_widgets_t*, int, int,
	int, int);
typedef void (* swift_gui_char_fn_t)(swift_widgets_t*,
	unsigned int);
typedef void (* swift_gui_mods_fn_t)(swift_widgets_t*,
	unsigned int, int);
typedef void (* swift_gui_drop_fn_t)(swift_widgets_t*, int,
	const char**);

SWIFT_GUI_API void swift_gui_set_char_callback(swift_widgets_t *wgts,
	swift_gui_char_fn_t callback);
SWIFT_GUI_API void swift_gui_set_mods_callback(swift_widgets_t *wgts,
	swift_gui_mods_fn_t callback);
SWIFT_GUI_API void swift_gui_set_key_callback(swift_widgets_t *wgts,
	swift_gui_key_fn_t callback);
SWIFT_GUI_API void swift_gui_set_cursor_pos_callback(swift_widgets_t *wgts,
	swift_gui_cur_pos_fn_t callback);
SWIFT_GUI_API void swift_gui_set_mouse_press_callback(swift_widgets_t *wgts,
	swift_gui_mouse_btn_fn_t callback);
SWIFT_GUI_API void swift_gui_set_scroll_callback(swift_widgets_t *wgts,
	swift_gui_scroll_fn_t callback);
SWIFT_GUI_API void swift_gui_set_wgts_close_callback(swift_widgets_t *wgts,
	swift_gui_win_close_fn_t callback);
SWIFT_GUI_API void swift_gui_set_wgts_pos_callback(swift_widgets_t *wgts,
	swift_gui_win_pos_fn_t callback);
SWIFT_GUI_API void swift_gui_set_wgts_resize_callback(swift_widgets_t *wgts,
	swift_gui_win_resize_fn_t callback);
SWIFT_GUI_API void swift_gui_set_wgts_refresh_callback(swift_widgets_t *wgts,
	swift_gui_win_refresh_fn_t callback);
SWIFT_GUI_API void swift_gui_set_wgts_focus_callback(swift_widgets_t *wgts,
	swift_gui_win_focus_fn_t callback);
SWIFT_GUI_API void swift_gui_set_iconify_callback(swift_widgets_t *wgts,
	swift_gui_iconify_fn_t callback);
SWIFT_GUI_API void swift_gui_set_buffer_resize_callback(swift_widgets_t *wgts,
	swift_gui_buf_resize_fn_t callback);
SWIFT_GUI_API void swift_gui_set_cursor_entered_callback(swift_widgets_t *wgts,
	swift_gui_cur_enter_fn_t callback);
SWIFT_GUI_API void swift_gui_set_drops_callback(swift_widgets_t *wgts,
	swift_gui_drop_fn_t callback);
#endif /*SWIFT_CONTROL_INPUT_H*/
