summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/lcd-bitmap-common.c11
-rw-r--r--firmware/drivers/lcd-charcell.c10
-rw-r--r--firmware/export/lcd-remote.h3
-rw-r--r--firmware/export/lcd.h5
4 files changed, 29 insertions, 0 deletions
diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c
index d8417e13e2..5961bba7a5 100644
--- a/firmware/drivers/lcd-bitmap-common.c
+++ b/firmware/drivers/lcd-bitmap-common.c
@@ -572,6 +572,17 @@ void LCDFN(puts_scroll_style_xyoffset)(int x, int y, const unsigned char *string
572 true, LCDFN(scroll_fn), NULL); 572 true, LCDFN(scroll_fn), NULL);
573} 573}
574 574
575void LCDFN(putsxy_scroll_func)(int x, int y, const unsigned char *string,
576 void (*scroll_func)(struct scrollinfo *),
577 void *data, int x_offset)
578{
579 if (!scroll_func)
580 LCDFN(putsxyofs)(x, y, x_offset, string);
581 else
582 LCDFN(puts_scroll_worker)(x, y, string, STYLE_NONE, x_offset, 0,
583 false, scroll_func, data);
584}
585
575void LCDFN(puts_scroll)(int x, int y, const unsigned char *string) 586void LCDFN(puts_scroll)(int x, int y, const unsigned char *string)
576{ 587{
577 LCDFN(puts_scroll_style)(x, y, string, STYLE_DEFAULT); 588 LCDFN(puts_scroll_style)(x, y, string, STYLE_DEFAULT);
diff --git a/firmware/drivers/lcd-charcell.c b/firmware/drivers/lcd-charcell.c
index db867cdb0a..54159519a3 100644
--- a/firmware/drivers/lcd-charcell.c
+++ b/firmware/drivers/lcd-charcell.c
@@ -563,6 +563,16 @@ void lcd_puts_scroll_worker(int x, int y, const unsigned char *string,
563 lcd_scroll_info.lines++; 563 lcd_scroll_info.lines++;
564} 564}
565 565
566void lcd_putsxy_scroll_func(int x, int y, const unsigned char *string,
567 void (*scroll_func)(struct scrollinfo *),
568 void *data, int x_offset)
569{
570 if (!scroll_func)
571 lcd_putsxyofs(x, y, x_offset, string);
572 else
573 lcd_puts_scroll_worker(x, y, string, x_offset, scroll_func, data);
574}
575
566void lcd_scroll_fn(struct scrollinfo* s) 576void lcd_scroll_fn(struct scrollinfo* s)
567{ 577{
568 lcd_putsxyofs(s->x, s->y, s->offset, s->line); 578 lcd_putsxyofs(s->x, s->y, s->offset, s->line);
diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h
index be6816cd7e..f209e6b47d 100644
--- a/firmware/export/lcd-remote.h
+++ b/firmware/export/lcd-remote.h
@@ -196,6 +196,9 @@ extern void lcd_remote_puts_scroll_style_xyoffset(int x, int y,
196 const unsigned char *string, 196 const unsigned char *string,
197 int style, int x_offset, 197 int style, int x_offset,
198 int y_offset); 198 int y_offset);
199extern void lcd_remote_putsxy_scroll_func(int x, int y, const unsigned char *string,
200 void (*scroll_func)(struct scrollinfo *),
201 void *data, int x_offset);
199 202
200extern void lcd_remote_update(void); 203extern void lcd_remote_update(void);
201extern void lcd_remote_update_rect(int x, int y, int width, int height); 204extern void lcd_remote_update_rect(int x, int y, int width, int height);
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index 7842ce59f2..745c445dda 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -108,6 +108,8 @@ enum screen_type {
108#endif 108#endif
109}; 109};
110 110
111struct scrollinfo;
112
111#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE 113#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
112#define STRIDE_MAIN(w, h) (h) 114#define STRIDE_MAIN(w, h) (h)
113#else 115#else
@@ -212,6 +214,9 @@ extern void lcd_putc(int x, int y, unsigned long ucs);
212extern void lcd_puts_scroll(int x, int y, const unsigned char* string); 214extern void lcd_puts_scroll(int x, int y, const unsigned char* string);
213extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string, 215extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string,
214 int style); 216 int style);
217extern void lcd_putsxy_scroll_func(int x, int y, const unsigned char *string,
218 void (*scroll_func)(struct scrollinfo *),
219 void *data, int x_offset);
215 220
216#ifdef HAVE_LCD_BITMAP 221#ifdef HAVE_LCD_BITMAP
217 222