XrdDesktopCursor is implemented by XrdOverlayDesktopCursor and XrdSceneDesktopCursor.
void
xrd_desktop_cursor_submit_texture (XrdDesktopCursor *self);
Submits current texture.
void xrd_desktop_cursor_set_and_submit_texture (XrdDesktopCursor *self,GulkanTexture *texture);
Sets and submits a texture.
void xrd_desktop_cursor_set_hotspot (XrdDesktopCursor *self,int hotspot_x,int hotspot_y);
A hotspot of (x, y) means that the hotspot is at x pixels right, y pixels down from the top left corner of the texture.
self |
The XrdDesktopCursor |
|
hotspot_x |
The x component of the hotspot. |
|
hotspot_y |
The y component of the hotspot. |
GulkanTexture *
xrd_desktop_cursor_get_texture (XrdDesktopCursor *self);
void xrd_desktop_cursor_update (XrdDesktopCursor *self,GxrContext *context,XrdWindow *window,graphene_point3d_t *intersection);
void xrd_desktop_cursor_set_width_meters (XrdDesktopCursor *self,float meters);
XrdDesktopCursorData *
xrd_desktop_cursor_get_data (XrdDesktopCursor *self);
void xrd_desktop_cursor_get_transformation (XrdDesktopCursor *self,graphene_matrix_t *matrix);
void xrd_desktop_cursor_set_transformation (XrdDesktopCursor *self,graphene_matrix_t *matrix);
typedef struct {
XrdDesktopCursor *cursor;
GxrContext *context;
gboolean keep_apparent_size;
/* setting, either absolute size or the apparent size in 3 meter distance */
float width_meters;
/* cached values set by apparent size and used in hotspot calculation */
float cached_width_meters;
int hotspot_x;
int hotspot_y;
uint32_t texture_width;
uint32_t texture_height;
} XrdDesktopCursorData;
struct XrdDesktopCursorInterface {
GTypeInterface parent;
void
(*submit_texture) (XrdDesktopCursor *self);
void
(*set_and_submit_texture) (XrdDesktopCursor *self,
GulkanTexture *texture);
GulkanTexture *
(*get_texture) (XrdDesktopCursor *self);
void
(*show) (XrdDesktopCursor *self);
void
(*hide) (XrdDesktopCursor *self);
void
(*set_width_meters) (XrdDesktopCursor *self, float meters);
XrdDesktopCursorData*
(*get_data) (XrdDesktopCursor *self);
void
(*get_transformation) (XrdDesktopCursor *self,
graphene_matrix_t *matrix);
void
(*set_transformation) (XrdDesktopCursor *self,
graphene_matrix_t *matrix);
};