#ifndef HYPRCURSOR_H #define HYPRCURSOR_H #ifdef __cplusplus #define CAPI extern "C" #else #define CAPI #endif #include struct hyprcursor_manager_t; /*! Simple struct for styles */ struct hyprcursor_cursor_style_info { /*! Shape size. 0 means "any" or "unspecified". */ unsigned int size; }; /*! Basic Hyprcursor manager. Has to be created for either a specified theme, or nullptr if you want to use a default from the env. If no env is set, picks the first found. If none found, hyprcursor_manager_valid will be false. If loading fails, hyprcursor_manager_valid will be false. The caller gets the ownership, call hyprcursor_manager_free to free this object. */ CAPI struct hyprcursor_manager_t* hyprcursor_manager_create(const char* theme_name); /*! Free a hyprcursor_manager_t* */ CAPI void hyprcursor_manager_free(struct hyprcursor_manager_t* manager); /*! Returns true if the theme was successfully loaded, i.e. everything is A-OK and nothing should fail. */ CAPI int hyprcursor_manager_valid(struct hyprcursor_manager_t* manager); /*! Loads a theme at a given style, synchronously. Returns whether it succeeded. */ CAPI int hyprcursor_load_theme_style(struct hyprcursor_manager_t* manager, struct hyprcursor_cursor_style_info info); /*! Returns a cairo_surface_t for a given cursor shape and size. Once done with a size, call hyprcursor_style_done() */ CAPI cairo_surface_t* hyprcursor_get_surface_for(struct hyprcursor_manager_t* manager, const char* shape, struct hyprcursor_cursor_style_info info); /*! Marks a certain style as done, allowing it to be potentially freed */ CAPI void hyprcursor_style_done(struct hyprcursor_manager_t* manager, struct hyprcursor_cursor_style_info info); #endif