#ifndef ARC_CONSOLE_VIEW_BUFFER_H_ #define ARC_CONSOLE_VIEW_BUFFER_H_ #ifdef __cplusplus extern "C" { #endif #include #include "arc/console/view.h" #include "arc/math/point.h" #include "arc/std/string.h" /** * @brief */ typedef struct ARC_ConsoleViewBuffer ARC_ConsoleViewBuffer; /** * @brief creates ARC_ConsoleViewBuffer type * * @param buffer ARC_ConsoleViewBuffer to create */ void ARC_ConsoleViewBuffer_Create(ARC_ConsoleViewBuffer **buffer, ARC_ConsoleView *view); /** * @brief destroys ARC_ConsoleViewBuffer type * * @param buffer ARC_ConsoleViewBuffer to destroy */ void ARC_ConsoleViewBuffer_Destroy(ARC_ConsoleViewBuffer *buffer); /** * @brief clears the contents of a ARC_ConsoleViewBuffer * * @param buffer ARC_ConsoleViewBuffer to clear */ void ARC_ConsoleViewBuffer_Clear(ARC_ConsoleViewBuffer *buffer); /** * @brief renders a buffer to a ARC_ConsoleView * * @param buffer ARC_ConsoleViewBuffer to render * @param view ARC_ConsoleView to render the buffer contents to */ void ARC_ConsoleViewBuffer_Render(ARC_ConsoleViewBuffer *buffer, ARC_ConsoleView *view); /** * @brief renders a section of buffer to a ARC_ConsoleView * * @param buffer ARC_ConsoleViewBuffer to render * @param view ARC_ConsoleView to render the buffer contents to * @param startIndex start index of buffer to render * @param lines the number of lines of buffer to render */ void ARC_ConsoleViewBuffer_RenderArea(ARC_ConsoleViewBuffer *buffer, ARC_ConsoleView *view, uint32_t startIndex, uint32_t lines); /** * @brief adds a character to the buffer * * @param buffer ARC_ConsoleViewBuffer to add character to * @param character char to add to ARC_ConsoleBuffer * @param pos position to add the char at */ void ARC_ConsoleViewBuffer_AddCharAt(ARC_ConsoleViewBuffer *buffer, char character, ARC_Point pos); /** * @brief adds an ARC_String to the buffer * * @param buffer ARC_ConsoleViewBuffer to add character to * @param string ARC_String to add to ARC_ConsoleViewBuffer * @param pos position to add the char at */ void ARC_ConsoleViewBuffer_AddStringAt(ARC_ConsoleViewBuffer *buffer, ARC_String *string, ARC_Point pos); /** * @brief adds a cstring to the buffer * * @param buffer ARC_ConsoleViewBuffer to add character to * @param string cstring to add to ARC_ConsoleViewBuffer * @param length the length of the c string to add * @param pos position to add the char at */ void ARC_ConsoleViewBuffer_AddCString(ARC_ConsoleViewBuffer *buffer, char *cstring, uint64_t length); /** * @brief adds a cstring to the buffer with the cstrings string length * * @param buffer ARC_ConsoleViewBuffer to add character to * @param string cstring to add to ARC_ConsoleViewBuffer * @param pos position to add the char at */ void ARC_ConsoleViewBuffer_AddCStringWithStrlen(ARC_ConsoleViewBuffer *buffer, char *cstring); #ifdef __cplusplus } #endif #endif // [!ARC_CONSOLE_VIEW_BUFFER_H_