#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "../rute_base.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "bitmap_ffi.h"
#include "pixmap_ffi.h"
#include "point_ffi.h"
struct RUCursorFuncs;
struct RUCursor;
typedef struct RUCursorFuncs {
void (*destroy)(struct RUBase* self);
void (*swap)(struct RUBase* self_c, struct RUBase* other);
int (*shape)(struct RUBase* self_c);
void (*set_shape)(struct RUBase* self_c, int new_shape);
struct RUBitmap (*bitmap)(struct RUBase* self_c);
struct RUBitmap (*mask)(struct RUBase* self_c);
struct RUPixmap (*pixmap)(struct RUBase* self_c);
struct RUPoint (*hot_spot)(struct RUBase* self_c);
struct RUPoint (*pos)(struct RUBase* self_c);
struct RUPoint (*pos_2)(struct RUBase* self_c, struct RUBase* screen);
void (*set_pos)(struct RUBase* self_c, int x, int y);
void (*set_pos_2)(struct RUBase* self_c, struct RUBase* screen, int x,
int y);
void (*set_pos_3)(struct RUBase* self_c, struct RUBase* p);
void (*set_pos_4)(struct RUBase* self_c, struct RUBase* screen,
struct RUBase* p);
} RUCursorFuncs;
typedef struct RUCursorAllFuncs {
struct RUCursorFuncs* cursor_funcs;
} RUCursorAllFuncs;
typedef struct RUCursor {
RUBase* qt_data;
RUBase* host_data;
struct RUCursorAllFuncs* all_funcs;
} RUCursor;
extern RUCursorFuncs s_cursor_funcs;
extern RUCursorAllFuncs s_cursor_all_funcs;
#ifdef __cplusplus
}
#endif