| @@ -244,6 +244,8 @@ int caca_get_event(caca_t *kk, unsigned int, struct caca_event *); | |||||
| int caca_wait_event(caca_t *kk, unsigned int, struct caca_event *); | int caca_wait_event(caca_t *kk, unsigned int, struct caca_event *); | ||||
| unsigned int caca_get_mouse_x(caca_t *kk); | unsigned int caca_get_mouse_x(caca_t *kk); | ||||
| unsigned int caca_get_mouse_y(caca_t *kk); | unsigned int caca_get_mouse_y(caca_t *kk); | ||||
| void caca_hide_cursor(caca_t *kk); | |||||
| void caca_show_cursor(caca_t *kk); | |||||
| /* @} */ | /* @} */ | ||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| @@ -117,6 +117,8 @@ struct caca_context | |||||
| void (* display) (caca_t *); | void (* display) (caca_t *); | ||||
| void (* handle_resize) (caca_t *); | void (* handle_resize) (caca_t *); | ||||
| int (* get_event) (caca_t *, struct caca_event *); | int (* get_event) (caca_t *, struct caca_event *); | ||||
| void (* show_cursor) (caca_t *); | |||||
| void (* hide_cursor) (caca_t *); | |||||
| } drv; | } drv; | ||||
| /* Mouse position */ | /* Mouse position */ | ||||
| @@ -163,6 +163,8 @@ int conio_install(caca_t *kk) | |||||
| kk->drv.display = conio_display; | kk->drv.display = conio_display; | ||||
| kk->drv.handle_resize = conio_handle_resize; | kk->drv.handle_resize = conio_handle_resize; | ||||
| kk->drv.get_event = conio_get_event; | kk->drv.get_event = conio_get_event; | ||||
| kk->drv.show_cursor = NULL; | |||||
| kk->drv.hide_cursor = NULL; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -386,6 +386,19 @@ static int gl_get_event(caca_t *kk, struct caca_event *ev) | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| static void gl_show_cursor(caca_t *kk) | |||||
| { | |||||
| glutSetCursor(GLUT_CURSOR_RIGHT_ARROW); | |||||
| } | |||||
| static void gl_hide_cursor(caca_t *kk) | |||||
| { | |||||
| glutSetCursor(GLUT_CURSOR_NONE); | |||||
| } | |||||
| /* | /* | ||||
| * XXX: following functions are local | * XXX: following functions are local | ||||
| */ | */ | ||||
| @@ -464,7 +477,8 @@ int gl_install(caca_t *kk) | |||||
| kk->drv.display = gl_display; | kk->drv.display = gl_display; | ||||
| kk->drv.handle_resize = gl_handle_resize; | kk->drv.handle_resize = gl_handle_resize; | ||||
| kk->drv.get_event = gl_get_event; | kk->drv.get_event = gl_get_event; | ||||
| kk->drv.show_cursor = gl_show_cursor; | |||||
| kk->drv.hide_cursor = gl_hide_cursor; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -542,7 +542,8 @@ int ncurses_install(caca_t *kk) | |||||
| kk->drv.display = ncurses_display; | kk->drv.display = ncurses_display; | ||||
| kk->drv.handle_resize = ncurses_handle_resize; | kk->drv.handle_resize = ncurses_handle_resize; | ||||
| kk->drv.get_event = ncurses_get_event; | kk->drv.get_event = ncurses_get_event; | ||||
| kk->drv.show_cursor = NULL; | |||||
| kk->drv.hide_cursor = NULL; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -562,6 +562,8 @@ int network_install(caca_t *kk) | |||||
| kk->drv.display = network_display; | kk->drv.display = network_display; | ||||
| kk->drv.handle_resize = network_handle_resize; | kk->drv.handle_resize = network_handle_resize; | ||||
| kk->drv.get_event = network_get_event; | kk->drv.get_event = network_get_event; | ||||
| kk->drv.show_cursor = NULL; | |||||
| kk->drv.hide_cursor = NULL; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -480,6 +480,8 @@ int slang_install(caca_t *kk) | |||||
| kk->drv.display = slang_display; | kk->drv.display = slang_display; | ||||
| kk->drv.handle_resize = slang_handle_resize; | kk->drv.handle_resize = slang_handle_resize; | ||||
| kk->drv.get_event = slang_get_event; | kk->drv.get_event = slang_get_event; | ||||
| kk->drv.show_cursor = NULL; | |||||
| kk->drv.hide_cursor = NULL; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -157,6 +157,8 @@ int vga_install(caca_t *kk) | |||||
| kk->drv.display = vga_display; | kk->drv.display = vga_display; | ||||
| kk->drv.handle_resize = vga_handle_resize; | kk->drv.handle_resize = vga_handle_resize; | ||||
| kk->drv.get_event = vga_get_event; | kk->drv.get_event = vga_get_event; | ||||
| kk->drv.show_cursor = NULL; | |||||
| kk->drv.hide_cursor = NULL; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -345,6 +345,8 @@ int win32_install(caca_t *kk) | |||||
| kk->drv.display = win32_display; | kk->drv.display = win32_display; | ||||
| kk->drv.handle_resize = win32_handle_resize; | kk->drv.handle_resize = win32_handle_resize; | ||||
| kk->drv.get_event = win32_get_event; | kk->drv.get_event = win32_get_event; | ||||
| kk->drv.show_cursor = NULL; | |||||
| kk->drv.hide_cursor = NULL; | |||||
| return 0; | return 0; | ||||
| } | } | ||||
| @@ -143,6 +143,29 @@ void caca_display(caca_t *kk) | |||||
| kk->lastticks = 0; | kk->lastticks = 0; | ||||
| } | } | ||||
| /** \brief Show cursor on capable drivers | |||||
| * | |||||
| * This function shows the cursor on drivers permitting it. | |||||
| * | |||||
| */ | |||||
| void caca_show_cursor(caca_t *kk) | |||||
| { | |||||
| if(kk->drv.show_cursor) | |||||
| kk->drv.show_cursor(kk); | |||||
| } | |||||
| /** \brief Hide cursor on capable drivers | |||||
| * | |||||
| * This function hides the cursor on drivers permitting it. | |||||
| * | |||||
| */ | |||||
| void caca_hide_cursor(caca_t *kk) | |||||
| { | |||||
| if(kk->drv.show_cursor) | |||||
| kk->drv.show_cursor(kk); | |||||
| } | |||||
| /* | /* | ||||
| * XXX: following functions are local | * XXX: following functions are local | ||||
| */ | */ | ||||