diff options
author | Tectu <joel@unormal.org> | 2012-06-27 10:03:05 -0700 |
---|---|---|
committer | Tectu <joel@unormal.org> | 2012-06-27 10:03:05 -0700 |
commit | 1f43c6d654b9cbb86138c40e1f7f133d0bb5d214 (patch) | |
tree | 781a53c2ba5ffa6b607db156f85bfc8544dcd371 /glcd.h | |
parent | 3a5be9c67812c2ef16f335078f2ec8e8773d2144 (diff) | |
parent | bb69ed37aad36fac6bdf1e2c9669caee5689630f (diff) | |
download | uGFX-1f43c6d654b9cbb86138c40e1f7f133d0bb5d214.tar.gz uGFX-1f43c6d654b9cbb86138c40e1f7f133d0bb5d214.tar.bz2 uGFX-1f43c6d654b9cbb86138c40e1f7f133d0bb5d214.zip |
Merge pull request #11 from trsaunders/master
Console support
Diffstat (limited to 'glcd.h')
-rw-r--r-- | glcd.h | 66 |
1 files changed, 22 insertions, 44 deletions
@@ -4,6 +4,11 @@ #include "ch.h" #include "hal.h" #include "fonts.h" + +#if !defined(LCD_USE_FSMC) && !defined(LCD_USE_GPIO) && !defined(LCD_USE_SPI) +#include "glcdconf.h" +#endif + #include "ssd1289_lld.h" #include "s6d1121_lld.h" @@ -30,87 +35,60 @@ enum filled {frame, filled}; enum transparency {solid, transparent}; enum powermode {powerOff, powerOn, sleepOn, sleepOff}; -// For text rendering only -extern uint16_t bgcolor, fgcolor; -extern uint16_t cx, cy; -extern const uint8_t* font; +typedef const uint8_t* font_t; // A few macros -#define lcdGotoXY(x,y) { cx=x; cy=y; } -#define lcdGetCurFontHeight() (font[FONT_TABLE_HEIGHT_IDX]) +#define lcdGetFontHeight(font) (font[FONT_TABLE_HEIGHT_IDX]) /** * @brief Structure representing a GLCD driver. */ typedef struct GLCDDriver GLCDDriver; -/** - * @brief @p GLCDDriver specific methods. - */ -#define _glcd_driver_methods \ - _base_asynchronous_channel_methods - -/** - * @extends BaseAsynchronousChannelVMT - * - * @brief @p GLCDDriver virtual methods table. - */ -struct GLCDDriverVMT { - _glcd_driver_methods -}; - -/** - * @extends BaseAsynchronousChannel - * - * @brief GLCD driver class. - * @details This class extends @p BaseAsynchronousChannel by adding physical - * I/O queues. - */ struct GLCDDriver { - /** @brief Virtual Methods Table.*/ - const struct GLCDDriverVMT *vmt; - _base_asynchronous_channel_data - /* WARNING: Do not add any data to this struct above this comment, only below */ }; #ifdef __cplusplus extern "C" { #endif - +/* Core functions */ void lcdInit(GLCDDriver *); void lcdClear(uint16_t color); void lcdSetOrientation(uint8_t newOrientation); void lcdSetWindow(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1); void lcdFillArea(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color); +void lcdWriteArea(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t *buffer, size_t n); void lcdSetPowerMode(uint8_t powerMode); +/* Drawing functions */ void lcdDrawPixel(uint16_t x, uint16_t y, uint16_t point); void lcdDrawLine(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color); void lcdDrawRect(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint8_t filled, uint16_t color); -void lcdDrawRectString(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, const char* str, uint16_t fontColor, uint16_t bkColor); +void lcdDrawRectString(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, const char* str, font_t font, uint16_t fontColor, uint16_t bkColor); void lcdDrawCircle(uint16_t x, uint16_t y, uint16_t radius, uint8_t filled, uint16_t color); -void lcdSetFontTransparency(uint8_t transparency); -void lcdSetFont(const uint8_t *newFont); -void lcdMoveCursor(uint16_t x, uint16_t y, uint16_t color, uint16_t bkcolor); -msg_t lcdDrawChar(char c); -size_t lcdWriteString(const char *str, size_t n); -size_t lcdPutString(const char *str); -void lcdDrawString(uint16_t x, uint16_t y, const char *str, uint16_t color, uint16_t bkcolor); -void lcdLineBreak(void); +/* Text Rendering Functions */ +int lcdDrawChar(uint16_t cx, uint16_t cy, char c, font_t font, uint16_t color, uint16_t bkcolor, bool_t tpText); +void lcdDrawString(uint16_t x, uint16_t y, const char *str, font_t font, uint16_t color, uint16_t bkcolor, bool_t tpText); -uint16_t lcdMeasureChar(char c); -uint16_t lcdMeasureString(const char* str); +/* Character measuring functions */ +uint16_t lcdMeasureChar(char c, font_t font); +uint16_t lcdMeasureString(const char* str, font_t font); +/* Size and orientation related */ uint16_t lcdGetHeight(void); uint16_t lcdGetWidth(void); uint16_t lcdGetOrientation(void); +/* BGR->RGB and pixel readback */ uint16_t lcdBGR2RGB(uint16_t color); uint16_t lcdGetPixelColor(uint16_t x, uint16_t y); +/* Scrolling function */ +void lcdVerticalScroll(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, int16_t lines); + #ifdef __cplusplus } #endif |