aboutsummaryrefslogtreecommitdiffstats
path: root/glcd/glcd.h
diff options
context:
space:
mode:
Diffstat (limited to 'glcd/glcd.h')
-rw-r--r--glcd/glcd.h97
1 files changed, 97 insertions, 0 deletions
diff --git a/glcd/glcd.h b/glcd/glcd.h
new file mode 100644
index 00000000..a80dc1b8
--- /dev/null
+++ b/glcd/glcd.h
@@ -0,0 +1,97 @@
+#ifndef GLCD_H
+#define GLCD_H
+
+#include "ch.h"
+#include "hal.h"
+#include "fonts.h"
+#include "worker.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"
+
+#define PORTRAIT (lcdGetOrientation() == portrait || lcdGetOrientation() == portraitInv)
+#define LANDSCAPE (lcdGetOrientation() == landscape || lcdGetOrientation() == landscapeInv)
+
+/* LCD color */
+#define White 0xFFFF
+#define Black 0x0000
+#define Grey 0xF7DE
+#define Blue 0x001F
+#define Blue2 0x051F
+#define Red 0xF800
+#define Magenta 0xF81F
+#define Green 0x07E0
+#define Cyan 0x7FFF
+#define Yellow 0xFFE0
+
+#define RGB565CONVERT(red, green, blue) \
+(uint16_t)( (( red >> 3 ) << 11 ) | (( green >> 2 ) << 5 ) | ( blue >> 3 ))
+
+enum orientation {portrait, landscape, portraitInv, landscapeInv};
+enum filled {frame, filled};
+enum transparency {solid, transparent};
+enum powermode {powerOff, powerOn, sleepOn, sleepOff};
+
+typedef const uint8_t* font_t;
+
+// A few macros
+#define lcdGetFontHeight(font) (font[FONT_TABLE_HEIGHT_IDX])
+
+/**
+ * @brief Structure representing a GLCD driver.
+ */
+typedef struct GLCDDriver GLCDDriver;
+
+struct GLCDDriver {
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Core functions */
+void lcdInit(GLCDDriver *GLCDD1);
+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, 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 lcdDrawEllipse(uint16_t x, uint16_t y, uint16_t a, uint16_t b, uint8_t filled, uint16_t color);
+
+/* Text Rendering Functions */
+uint16_t 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);
+
+/* 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
+
+#endif