ugfx/console.h

70 lines
1.6 KiB
C

#ifndef CONSOLE_H
#define CONSOLE_H
/**
* @brief Structure representing a GLCD driver.
*/
typedef struct GLCDConsole GLCDConsole;
/**
* @brief @p GLCDConsole specific methods.
*/
#define _glcd_driver_methods \
_base_asynchronous_channel_methods
/**
* @extends BaseAsynchronousChannelVMT
*
* @brief @p GLCDConsole virtual methods table.
*/
struct GLCDConsoleVMT {
_glcd_driver_methods
};
/**
* @extends BaseAsynchronousChannel
*
* @brief GLCD Console class.
* @details This class extends @p BaseAsynchronousChannel by adding physical
* I/O queues.
*/
struct GLCDConsole {
/** @brief Virtual Methods Table.*/
const struct GLCDConsoleVMT *vmt;
_base_asynchronous_channel_data
/* WARNING: Do not add any data to this struct above this comment, only below */
/* text buffer */
uint8_t *buf;
/* font */
const uint8_t *font;
/* lcd area to use */
uint16_t x0,y0,x1,y1;
/* current cursor position, in character coordinates (not pixels) */
uint16_t cx,cy;
/* console size in characters */
uint16_t sx,sy;
/* foreground and background colour */
uint16_t bkcolor, color;
/* font size in pixels */
uint8_t fx,fy;
/* buffer index */
uint16_t wptr, blen, bstrt;
bool_t full;
};
#ifdef __cplusplus
extern "C" {
#endif
msg_t lcdConsoleInit(GLCDConsole *console, uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1,
const uint8_t *font, uint8_t *buffer, uint16_t bkcolor, uint16_t color);
msg_t lcdConsolePut(GLCDConsole *console, char c);
msg_t lcdConsoleWrite(GLCDConsole *console, uint8_t *bp, size_t n);
#ifdef __cplusplus
}
#endif
#endif /* CONSOLE_H */