78 lines
1.5 KiB
C
78 lines
1.5 KiB
C
#ifndef ARC_NCURSES_ELEMENT_H_
|
|
#define ARC_NCURSES_ELEMENT_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <stdint.h>
|
|
#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_
|