diff options
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  | 
