summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--firmware/drivers/lcd-1bit-vert.c28
-rw-r--r--firmware/drivers/lcd-2bit-horz.c27
-rw-r--r--firmware/drivers/lcd-2bit-vert.c27
-rw-r--r--firmware/drivers/lcd-2bit-vi.c27
-rw-r--r--firmware/drivers/lcd-bitmap-common.c28
5 files changed, 28 insertions, 109 deletions
diff --git a/firmware/drivers/lcd-1bit-vert.c b/firmware/drivers/lcd-1bit-vert.c
index 66c785a3aa..accce026cd 100644
--- a/firmware/drivers/lcd-1bit-vert.c
+++ b/firmware/drivers/lcd-1bit-vert.c
@@ -206,34 +206,6 @@ void LCDFN(clear_display)(void)
LCDFN(scroll_info).lines = 0;
}
-/* Clear the current viewport */
-void LCDFN(clear_viewport)(void)
-{
- int oldmode;
-
- if (CURRENT_VP == &default_vp &&
- default_vp.buffer == &LCDFN(framebuffer_default))
- {
- LCDFN(clear_display)();
- }
- else
- {
- oldmode = CURRENT_VP->drawmode;
-
- /* Invert the INVERSEVID bit and set basic mode to SOLID */
- CURRENT_VP->drawmode = (~CURRENT_VP->drawmode & DRMODE_INVERSEVID) |
- DRMODE_SOLID;
-
- LCDFN(fillrect)(0, 0, CURRENT_VP->width, CURRENT_VP->height);
-
- CURRENT_VP->drawmode = oldmode;
-
- LCDFN(scroll_stop_viewport)(CURRENT_VP);
- }
-
- CURRENT_VP->flags &= ~(VP_FLAG_VP_SET_CLEAN);
-}
-
/* Draw a horizontal line (optimised) */
void LCDFN(hline)(int x1, int x2, int y)
{
diff --git a/firmware/drivers/lcd-2bit-horz.c b/firmware/drivers/lcd-2bit-horz.c
index 0ec9d2a6aa..b8ebaff7e1 100644
--- a/firmware/drivers/lcd-2bit-horz.c
+++ b/firmware/drivers/lcd-2bit-horz.c
@@ -348,33 +348,6 @@ void lcd_clear_display(void)
lcd_scroll_info.lines = 0;
}
-/* Clear the current viewport */
-void lcd_clear_viewport(void)
-{
- int lastmode;
-
- if (lcd_current_viewport == &default_vp &&
- default_vp.buffer == &lcd_framebuffer_default)
- {
- lcd_clear_display();
- }
- else
- {
- lastmode = lcd_current_viewport->drawmode;
-
- /* Invert the INVERSEVID bit and set basic mode to SOLID */
- lcd_current_viewport->drawmode = (~lastmode & DRMODE_INVERSEVID) |
- DRMODE_SOLID;
-
- lcd_fillrect(0, 0, lcd_current_viewport->width, lcd_current_viewport->height);
-
- lcd_current_viewport->drawmode = lastmode;
-
- lcd_scroll_stop_viewport(lcd_current_viewport);
- }
- lcd_current_viewport->flags &= ~(VP_FLAG_VP_SET_CLEAN);
-}
-
/* Draw a horizontal line (optimised) */
void lcd_hline(int x1, int x2, int y)
{
diff --git a/firmware/drivers/lcd-2bit-vert.c b/firmware/drivers/lcd-2bit-vert.c
index 51897712d1..9856b28819 100644
--- a/firmware/drivers/lcd-2bit-vert.c
+++ b/firmware/drivers/lcd-2bit-vert.c
@@ -350,33 +350,6 @@ void lcd_clear_display(void)
lcd_scroll_info.lines = 0;
}
-/* Clear the current viewport */
-void lcd_clear_viewport(void)
-{
- int lastmode;
-
- if (lcd_current_viewport == &default_vp &&
- default_vp.buffer == &lcd_framebuffer_default)
- {
- lcd_clear_display();
- }
- else
- {
- lastmode = lcd_current_viewport->drawmode;
-
- /* Invert the INVERSEVID bit and set basic mode to SOLID */
- lcd_current_viewport->drawmode = (~lastmode & DRMODE_INVERSEVID) |
- DRMODE_SOLID;
-
- lcd_fillrect(0, 0, lcd_current_viewport->width, lcd_current_viewport->height);
-
- lcd_current_viewport->drawmode = lastmode;
-
- lcd_scroll_stop_viewport(lcd_current_viewport);
- }
- lcd_current_viewport->flags &= ~(VP_FLAG_VP_SET_CLEAN);
-}
-
/* Draw a horizontal line (optimised) */
void lcd_hline(int x1, int x2, int y)
{
diff --git a/firmware/drivers/lcd-2bit-vi.c b/firmware/drivers/lcd-2bit-vi.c
index c464537185..d621951c78 100644
--- a/firmware/drivers/lcd-2bit-vi.c
+++ b/firmware/drivers/lcd-2bit-vi.c
@@ -383,33 +383,6 @@ void LCDFN(clear_display)(void)
LCDFN(scroll_info).lines = 0;
}
-/* Clear the current viewport */
-void LCDFN(clear_viewport)(void)
-{
- int lastmode;
-
- if (CURRENT_VP == &default_vp &&
- default_vp.buffer == &LCDFN(framebuffer_default))
- {
- LCDFN(clear_display)();
- }
- else
- {
- lastmode = CURRENT_VP->drawmode;
-
- /* Invert the INVERSEVID bit and set basic mode to SOLID */
- CURRENT_VP->drawmode = (~lastmode & DRMODE_INVERSEVID) |
- DRMODE_SOLID;
-
- LCDFN(fillrect)(0, 0, CURRENT_VP->width, CURRENT_VP->height);
-
- CURRENT_VP->drawmode = lastmode;
-
- LCDFN(scroll_stop_viewport)(CURRENT_VP);
- }
- CURRENT_VP->flags &= ~(VP_FLAG_VP_SET_CLEAN);
-}
-
/* Draw a horizontal line (optimised) */
void LCDFN(hline)(int x1, int x2, int y)
{
diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c
index 07ed509229..a8ecbd370d 100644
--- a/firmware/drivers/lcd-bitmap-common.c
+++ b/firmware/drivers/lcd-bitmap-common.c
@@ -221,6 +221,34 @@ void LCDFN(fill_viewport)(void)
LCDFN(fillrect)(0, 0, LCDFN(current_viewport)->width, LCDFN(current_viewport)->height);
}
+#if LCDM(DEPTH) < 8
+/*
+ * clear the current viewport - grayscale displays
+ */
+void LCDFN(clear_viewport)(void)
+{
+ struct viewport *vp = LCDFN(current_viewport);
+ int oldmode;
+
+ if (vp == &default_vp && default_vp.buffer == &LCDFN(framebuffer_default))
+ {
+ LCDFN(clear_display)();
+ }
+ else
+ {
+ oldmode = vp->drawmode;
+ vp->drawmode &= ~DRMODE_INVERSEVID;
+ vp->drawmode |= DRMODE_SOLID;
+
+ LCDFN(fillrect)(0, 0, vp->width, vp->height);
+
+ vp->drawmode = oldmode;
+ LCDFN(scroll_stop_viewport)(vp);
+ }
+
+ vp->flags &= ~VP_FLAG_VP_SET_CLEAN;
+}
+#endif
/*** Viewports ***/
/* init_viewport Notes: When a viewport is initialized