From 44b9785465fcb96f7544576b7657a47813625a01 Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Sun, 2 Oct 2022 01:32:16 +0100 Subject: lcd: Move grayscale clear_viewport() to lcd-bitmap-common.c All grayscale LCDs have the same clear_viewport() implementation. Change-Id: I087ac3be824c97a1f42857b4e2fedb0675d453fa --- firmware/drivers/lcd-1bit-vert.c | 28 ---------------------------- firmware/drivers/lcd-2bit-horz.c | 27 --------------------------- firmware/drivers/lcd-2bit-vert.c | 27 --------------------------- firmware/drivers/lcd-2bit-vi.c | 27 --------------------------- firmware/drivers/lcd-bitmap-common.c | 28 ++++++++++++++++++++++++++++ 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 -- cgit v1.2.3