|
|
-
- #ifndef SDL_CLICKY_CLICKABLE_H_
- #define SDL_CLICKY_CLICKABLE_H_
-
- #include <SDL.h>
- #include <stdbool.h>
-
- typedef struct {
- SDL_Rect dimensions;
- bool isdown; //When clicked and held.
- void (*clickFunc)(void*, int, int); //The function to call when the clickable is registered as clicked. The arg should be set to be a pointer to the clicked clickable. Makes sense when the clickable is the first member (not as pointer) of an "inheriting" type.
- void (*releaseFunc)(void*, int, int); //Same as above for when the button is released.
- void (*drawFunc)(void*, SDL_Renderer*);
- } Clickable;
-
- typedef struct {
- Clickable super;
- SDL_Rect *boundaries; //Don't go outside these bounds. May be NULL.
- SDL_Rect *coordinatesToDrag; //The dragable may be inside a container to be moved around.
- } Dragable;
-
- bool Clickable_CheckBounds(Clickable *c, int x, int y);
- bool Clicky_ClickClickable(void *c_, int x, int y);
- void Clicky_ReleaseClickable(void *c_, int x, int y);
- void Clicky_ReleaseHeldClickable(int x, int y);
-
- void Clicky_DragUpdate(int x, int y); //Updates the dragging.
-
- void Dragable_ClickFunc(void *dragable, int x, int y);
- void Dragable_ReleaseFunc(void *dragable, int x, int y);
-
- #endif // SDL_CLICKY_CLICKABLE_H_
-
|