From 623988791364290cf33fc22604e9eb7d14884e0f Mon Sep 17 00:00:00 2001 From: Jean-Yves Lamoureux Date: Fri, 24 Mar 2006 15:00:47 +0000 Subject: [PATCH] * Added caca_show/hide_cursor, and corresponding GL binding --- caca/caca.h | 2 ++ caca/caca_internals.h | 2 ++ caca/driver_conio.c | 2 ++ caca/driver_gl.c | 16 +++++++++++++++- caca/driver_ncurses.c | 3 ++- caca/driver_network.c | 2 ++ caca/driver_slang.c | 2 ++ caca/driver_vga.c | 2 ++ caca/driver_win32.c | 2 ++ caca/graphics.c | 23 +++++++++++++++++++++++ 10 files changed, 54 insertions(+), 2 deletions(-) diff --git a/caca/caca.h b/caca/caca.h index a559386..4beeab2 100644 --- a/caca/caca.h +++ b/caca/caca.h @@ -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 *); unsigned int caca_get_mouse_x(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 diff --git a/caca/caca_internals.h b/caca/caca_internals.h index 91a137a..16d16e8 100644 --- a/caca/caca_internals.h +++ b/caca/caca_internals.h @@ -117,6 +117,8 @@ struct caca_context void (* display) (caca_t *); void (* handle_resize) (caca_t *); int (* get_event) (caca_t *, struct caca_event *); + void (* show_cursor) (caca_t *); + void (* hide_cursor) (caca_t *); } drv; /* Mouse position */ diff --git a/caca/driver_conio.c b/caca/driver_conio.c index b981a11..6b55965 100644 --- a/caca/driver_conio.c +++ b/caca/driver_conio.c @@ -163,6 +163,8 @@ int conio_install(caca_t *kk) kk->drv.display = conio_display; kk->drv.handle_resize = conio_handle_resize; kk->drv.get_event = conio_get_event; + kk->drv.show_cursor = NULL; + kk->drv.hide_cursor = NULL; return 0; } diff --git a/caca/driver_gl.c b/caca/driver_gl.c index 716291b..9bf286a 100644 --- a/caca/driver_gl.c +++ b/caca/driver_gl.c @@ -386,6 +386,19 @@ static int gl_get_event(caca_t *kk, struct caca_event *ev) 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 */ @@ -464,7 +477,8 @@ int gl_install(caca_t *kk) kk->drv.display = gl_display; kk->drv.handle_resize = gl_handle_resize; kk->drv.get_event = gl_get_event; - + kk->drv.show_cursor = gl_show_cursor; + kk->drv.hide_cursor = gl_hide_cursor; return 0; } diff --git a/caca/driver_ncurses.c b/caca/driver_ncurses.c index 7a49bd5..44c30bd 100644 --- a/caca/driver_ncurses.c +++ b/caca/driver_ncurses.c @@ -542,7 +542,8 @@ int ncurses_install(caca_t *kk) kk->drv.display = ncurses_display; kk->drv.handle_resize = ncurses_handle_resize; kk->drv.get_event = ncurses_get_event; - + kk->drv.show_cursor = NULL; + kk->drv.hide_cursor = NULL; return 0; } diff --git a/caca/driver_network.c b/caca/driver_network.c index 4cdfbc6..726badd 100644 --- a/caca/driver_network.c +++ b/caca/driver_network.c @@ -562,6 +562,8 @@ int network_install(caca_t *kk) kk->drv.display = network_display; kk->drv.handle_resize = network_handle_resize; kk->drv.get_event = network_get_event; + kk->drv.show_cursor = NULL; + kk->drv.hide_cursor = NULL; return 0; } diff --git a/caca/driver_slang.c b/caca/driver_slang.c index c8293d8..a72de12 100644 --- a/caca/driver_slang.c +++ b/caca/driver_slang.c @@ -480,6 +480,8 @@ int slang_install(caca_t *kk) kk->drv.display = slang_display; kk->drv.handle_resize = slang_handle_resize; kk->drv.get_event = slang_get_event; + kk->drv.show_cursor = NULL; + kk->drv.hide_cursor = NULL; return 0; } diff --git a/caca/driver_vga.c b/caca/driver_vga.c index 45bcb07..a6d4335 100644 --- a/caca/driver_vga.c +++ b/caca/driver_vga.c @@ -157,6 +157,8 @@ int vga_install(caca_t *kk) kk->drv.display = vga_display; kk->drv.handle_resize = vga_handle_resize; kk->drv.get_event = vga_get_event; + kk->drv.show_cursor = NULL; + kk->drv.hide_cursor = NULL; return 0; } diff --git a/caca/driver_win32.c b/caca/driver_win32.c index 58ddba9..d141e1c 100644 --- a/caca/driver_win32.c +++ b/caca/driver_win32.c @@ -345,6 +345,8 @@ int win32_install(caca_t *kk) kk->drv.display = win32_display; kk->drv.handle_resize = win32_handle_resize; kk->drv.get_event = win32_get_event; + kk->drv.show_cursor = NULL; + kk->drv.hide_cursor = NULL; return 0; } diff --git a/caca/graphics.c b/caca/graphics.c index c198057..4a25d5a 100644 --- a/caca/graphics.c +++ b/caca/graphics.c @@ -143,6 +143,29 @@ void caca_display(caca_t *kk) 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 */