@@ -199,6 +199,7 @@ int caca_get_event(caca_display_t *, unsigned int, caca_event_t *, int); | |||||
unsigned int caca_get_mouse_x(caca_display_t *); | unsigned int caca_get_mouse_x(caca_display_t *); | ||||
unsigned int caca_get_mouse_y(caca_display_t *); | unsigned int caca_get_mouse_y(caca_display_t *); | ||||
int caca_set_mouse(caca_display_t *, int); | int caca_set_mouse(caca_display_t *, int); | ||||
int caca_set_cursor(caca_display_t *, int); | |||||
/* @} */ | /* @} */ | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -113,6 +113,7 @@ struct caca_display | |||||
void (* handle_resize) (caca_display_t *); | void (* handle_resize) (caca_display_t *); | ||||
int (* get_event) (caca_display_t *, caca_event_t *); | int (* get_event) (caca_display_t *, caca_event_t *); | ||||
void (* set_mouse) (caca_display_t *, int); | void (* set_mouse) (caca_display_t *, int); | ||||
void (* set_cursor) (caca_display_t *, int); | |||||
} drv; | } drv; | ||||
/* Mouse position */ | /* Mouse position */ | ||||
@@ -172,6 +172,7 @@ int conio_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = conio_handle_resize; | dp->drv.handle_resize = conio_handle_resize; | ||||
dp->drv.get_event = conio_get_event; | dp->drv.get_event = conio_get_event; | ||||
dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -590,6 +590,7 @@ int gl_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = gl_handle_resize; | dp->drv.handle_resize = gl_handle_resize; | ||||
dp->drv.get_event = gl_get_event; | dp->drv.get_event = gl_get_event; | ||||
dp->drv.set_mouse = gl_set_mouse; | dp->drv.set_mouse = gl_set_mouse; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -475,6 +475,7 @@ int ncurses_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = ncurses_handle_resize; | dp->drv.handle_resize = ncurses_handle_resize; | ||||
dp->drv.get_event = ncurses_get_event; | dp->drv.get_event = ncurses_get_event; | ||||
dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -105,6 +105,7 @@ int raw_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = raw_handle_resize; | dp->drv.handle_resize = raw_handle_resize; | ||||
dp->drv.get_event = raw_get_event; | dp->drv.get_event = raw_get_event; | ||||
dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -519,6 +519,7 @@ int slang_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = slang_handle_resize; | dp->drv.handle_resize = slang_handle_resize; | ||||
dp->drv.get_event = slang_get_event; | dp->drv.get_event = slang_get_event; | ||||
dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -166,6 +166,7 @@ int vga_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = vga_handle_resize; | dp->drv.handle_resize = vga_handle_resize; | ||||
dp->drv.get_event = vga_get_event; | dp->drv.get_event = vga_get_event; | ||||
dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -351,6 +351,7 @@ int win32_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = win32_handle_resize; | dp->drv.handle_resize = win32_handle_resize; | ||||
dp->drv.get_event = win32_get_event; | dp->drv.get_event = win32_get_event; | ||||
dp->drv.set_mouse = NULL; | dp->drv.set_mouse = NULL; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -643,6 +643,7 @@ int x11_install(caca_display_t *dp) | |||||
dp->drv.handle_resize = x11_handle_resize; | dp->drv.handle_resize = x11_handle_resize; | ||||
dp->drv.get_event = x11_get_event; | dp->drv.get_event = x11_get_event; | ||||
dp->drv.set_mouse = x11_set_mouse; | dp->drv.set_mouse = x11_set_mouse; | ||||
dp->drv.set_cursor = NULL; | |||||
return 0; | return 0; | ||||
} | } | ||||
@@ -177,6 +177,31 @@ int caca_refresh_display(caca_display_t *dp) | |||||
return 0; | return 0; | ||||
} | } | ||||
/** \brief Show or hide the cursor. | |||||
* | |||||
* Show or hide the cursor, for devices that support such a feature. | |||||
* | |||||
* If an error occurs, -1 is returned and \b errno is set accordingly: | |||||
* - \c ENOSYS Display driver does not support showing the cursor. | |||||
* | |||||
* \param dp The libcaca display context. | |||||
* \param flag 0 hides the cursor, 1 shows the system's default cursor | |||||
* (usually a white rectangle). Other values are reserved for | |||||
* future use. | |||||
* \return 0 upon success, -1 if an error occurred. | |||||
*/ | |||||
int caca_set_cursor(caca_display_t *dp, int flag) | |||||
{ | |||||
if(!dp->drv.set_cursor) | |||||
{ | |||||
seterrno(ENOSYS); | |||||
return -1; | |||||
} | |||||
dp->drv.set_cursor(dp, flag); | |||||
return 0; | |||||
} | |||||
/** \brief Show or hide the mouse pointer. | /** \brief Show or hide the mouse pointer. | ||||
* | * | ||||
* Show or hide the mouse pointer, for devices that support such a feature. | * Show or hide the mouse pointer, for devices that support such a feature. | ||||