#ifndef __TUI_TEXT_BOX_H__
#define __TUI_TEXT_BOX_H__

#include "stdint.h"
#include "TuiControl.h"

#define TEXT_BUFFER_SIZE		50

Control* initTextBox(Control* control, uint32_t id, Location loc, uint32_t width, uint32_t height,
	uint8_t* eventImg, uint32_t eventImgLen, uint8_t* originImg, uint32_t originImgLen,
	TextInfo textInfo, EContentAlign align, EContentVerticalAlign verticalAlign);
void addTextViewBox(Control *control, EXEC_FUNC func);
void addTextEditBox(Control *control, EXEC_FUNC func);
void updateBufferCursorWithMargin(uint32_t x, uint32_t y, uint32_t margin);
void updateBufferCursor(uint32_t x, uint32_t y);
void clearCursor(uint32_t x, uint32_t y, uint32_t margin);
void drawTextBox(Control* control);
bool updateText(Control *control, uint8_t *updatedText);
bool inputChar(uint8_t charValue);
bool deleteChar(void);
bool clearTextEdit(uint8_t* clearImage, uint32_t imageSize);
ResponseControl executeTextEditBox(Control *control);
ResponseControl executeTextViewBox(Control *control);
void initTextBuffer(void);
uint8_t* getQuizTextBuffer(void);
uint8_t* getTextBuffer(void);
uint8_t* copyTextBuffer(uint8_t *toBuffer, uint8_t *fromBuffer);
uint32_t getFontHeight(EFontType fontType);
void getCharWidthAndHeight(uint8_t charValue, EFontType fontType, uint32_t* width, uint32_t* height);
void getTextWidthAndHeight(uint8_t* text, EFontType fontType, uint32_t* width, uint32_t* height);

#endif // __TUI_TEXT_BOX_H__

