#pragma once #include "internalSharedTypes.hpp" #include #include #include #include struct SLoadedCursorImage { ~SLoadedCursorImage() { if (data) delete[] (char*)data; if (artificialData) delete[] (char*)artificialData; if (cairoSurface) cairo_surface_destroy(cairoSurface); } // read stuff size_t readNeedle = 0; void* data = nullptr; size_t dataLen = 0; bool isSVG = false; // if true, data is just a string of chars cairo_surface_t* cairoSurface = nullptr; int side = 0; int delay = 0; // means this was created by resampling void* artificialData = nullptr; bool artificial = false; }; struct SLoadedCursorShape { std::vector> images; }; class CHyprcursorImplementation { public: CHyprcursorImplementation(Hyprcursor::CHyprcursorManager* mgr, PHYPRCURSORLOGFUNC fn) : owner(mgr), logFn(fn) { ; } Hyprcursor::CHyprcursorManager* owner = nullptr; PHYPRCURSORLOGFUNC logFn = nullptr; std::string themeName; std::string themeFullDir; SCursorTheme theme; // std::unordered_map loadedShapes; // std::optional loadTheme(); std::vector getFramesFor(SCursorShape* shape, int size); };