aboutsummaryrefslogtreecommitdiffstats
path: root/glcd.h
diff options
context:
space:
mode:
authorTectu <joel@unormal.org>2012-06-27 10:03:05 -0700
committerTectu <joel@unormal.org>2012-06-27 10:03:05 -0700
commit1f43c6d654b9cbb86138c40e1f7f133d0bb5d214 (patch)
tree781a53c2ba5ffa6b607db156f85bfc8544dcd371 /glcd.h
parent3a5be9c67812c2ef16f335078f2ec8e8773d2144 (diff)
parentbb69ed37aad36fac6bdf1e2c9669caee5689630f (diff)
downloaduGFX-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.h66
1 files changed, 22 insertions, 44 deletions
diff --git a/glcd.h b/glcd.h
index 8108b21f..d0597a88 100644
--- a/glcd.h
+++ b/glcd.h
@@ -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