aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c')
-rw-r--r--drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c b/drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c
index 67584576..ddc67be0 100644
--- a/drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c
+++ b/drivers/gdisp/PCD8544/gdisp_lld_PCD8544.c
@@ -110,6 +110,8 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
write_data(g, RAM(g), GDISP_SCREEN_BYTES);
release_bus(g);
+
+ g->flags &= ~GDISP_FLG_NEEDFLUSH;
}
#endif
@@ -152,6 +154,33 @@ LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
}
#endif
+#if GDISP_HARDWARE_PIXELREAD
+ LLDSPEC color_t gdisp_lld_get_pixel_color(GDisplay *g) {
+ coord_t x, y;
+
+ switch(g->g.Orientation) {
+ default:
+ case GDISP_ROTATE_0:
+ x = g->p.x;
+ y = g->p.y;
+ break;
+ case GDISP_ROTATE_90:
+ x = g->p.y;
+ y = GDISP_SCREEN_HEIGHT-1 - g->p.x;
+ break;
+ case GDISP_ROTATE_180:
+ x = GDISP_SCREEN_WIDTH-1 - g->p.x;
+ y = GDISP_SCREEN_HEIGHT-1 - g->p.y;
+ break;
+ case GDISP_ROTATE_270:
+ x = GDISP_SCREEN_WIDTH-1 - g->p.y;
+ y = g->p.x;
+ break;
+ }
+ return (RAM(g)[xyaddr(x, y)] & xybit(y)) ? White : Black;
+ }
+#endif
+
#if GDISP_NEED_CONTROL
LLDSPEC void gdisp_lld_control(GDisplay *g) {
switch(g->p.x) {