#ifndef ARC_NCURSES_ELEMENT_H_ #define ARC_NCURSES_ELEMENT_H_ #ifdef __cplusplus extern "C" { #endif #include #include "view.h" #include "arc/std/string.h" #include "arc/std/bool.h" #include "arc/math/point.h" /** * @brief */ typedef struct ARC_ConsoleElement ARC_ConsoleElement; /** * @brief */ typedef void (*ARC_ConsoleElement_RenderFn)(ARC_ConsoleView *view, ARC_ConsoleElement *element); /** * @brief */ typedef struct ARC_ConsoleElement { uint32_t type; uint8_t flags; ARC_String *string; ARC_Point pos; ARC_ConsoleElement_RenderFn renderFn; } ARC_ConsoleElement; /** * @brief */ #define ARC_CONSOLE_ELEMENT_FLAG_NONE 0b00000000 #define ARC_CONSOLE_ELEMENT_FLAG_SELECTABLE 0b00000001 #define ARC_CONSOLE_ELEMENT_FLAG_SELECTED 0b00000010 /** * @brief */ void ARC_ConsoleElement_Create(ARC_ConsoleElement **element, uint32_t type, uint8_t flags, ARC_String *string, ARC_Point pos, ARC_ConsoleElement_RenderFn renderFn); /** * @brief */ void ARC_ConsoleElement_Destroy(ARC_ConsoleElement *element); /** * @brief */ void ARC_ConsoleElement_DefaultRenderFn(ARC_ConsoleView *view, ARC_ConsoleElement *element); /** * @brief * * @param */ ARC_Bool ARC_ConsoleElement_IsSelectable(ARC_ConsoleElement *element); /** * @brief * * @param */ void ARC_ConsoleElement_SetSelected(ARC_ConsoleElement *element, ARC_Bool selected); /** * @brief */ void ARC_ConsoleElement_ToggleSelected(ARC_ConsoleElement *element); #endif //!ARC_CONSOLE_ELEMENT_H_