summaryrefslogtreecommitdiff
path: root/firmware/export/scroll_engine.h
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2008-01-07 20:34:11 +0000
committerDave Chapman <dave@dchapman.com>2008-01-07 20:34:11 +0000
commit945c8a221ade41c462a93f8452320a806e5645b3 (patch)
tree2a17823e286e6252e60c44c7f4753d5c18ef5172 /firmware/export/scroll_engine.h
parent2a8f39820b49f116820356c2ca224f82f2106c21 (diff)
downloadrockbox-945c8a221ade41c462a93f8452320a806e5645b3.zip
rockbox-945c8a221ade41c462a93f8452320a806e5645b3.tar.gz
rockbox-945c8a221ade41c462a93f8452320a806e5645b3.tar.bz2
rockbox-945c8a221ade41c462a93f8452320a806e5645b3.tar.xz
Add viewport capabilities to all the LCD drivers, and adapt scrolling code. This is the firmware/ part of FS#8385 - the changes to the WPS code still need more work and will be committed at a later date. NOTE: There are no user-visible changes with this commit - just the infrastructure.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@16018 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export/scroll_engine.h')
-rw-r--r--firmware/export/scroll_engine.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/firmware/export/scroll_engine.h b/firmware/export/scroll_engine.h
index 5e39990..48d5c5c 100644
--- a/firmware/export/scroll_engine.h
+++ b/firmware/export/scroll_engine.h
@@ -23,9 +23,17 @@
#ifndef __SCROLL_ENGINE_H__
#define __SCROLL_ENGINE_H__
+#include <lcd.h>
+
void scroll_init(void);
+void lcd_scroll_stop(struct viewport* vp);
+void lcd_scroll_stop_line(struct viewport* vp, int y);
void lcd_scroll_fn(void);
+#ifdef HAVE_REMOTE_LCD
void lcd_remote_scroll_fn(void);
+void lcd_remote_scroll_stop(struct viewport* vp);
+void lcd_remote_scroll_stop_line(struct viewport* vp, int y);
+#endif
/* internal usage, but in multiple drivers */
#define SCROLL_SPACING 3
@@ -37,8 +45,10 @@ void lcd_remote_scroll_fn(void);
struct scrollinfo
{
+ struct viewport* vp;
char line[SCROLL_LINE_SIZE];
int len; /* length of line in chars */
+ int y; /* Position of the line on the screen (char co-ordinates) */
int offset;
int startx;
#ifdef HAVE_LCD_BITMAP
@@ -54,7 +64,7 @@ struct scroll_screen_info
{
struct scrollinfo * const scroll;
const int num_scroll; /* number of scrollable lines (also number of scroll structs) */
- int lines; /* Bitpattern of which lines are scrolling */
+ int lines; /* Number of currently scrolling lines */
long ticks; /* # of ticks between updates*/
long delay; /* ticks delay before start */
int bidir_limit; /* percent */
@@ -74,7 +84,7 @@ struct scroll_screen_info
#ifdef HAVE_LCD_BITMAP
#define LCD_SCROLLABLE_LINES ((LCD_HEIGHT+4)/5 < 32 ? (LCD_HEIGHT+4)/5 : 32)
#else
-#define LCD_SCROLLABLE_LINES LCD_HEIGHT
+#define LCD_SCROLLABLE_LINES LCD_HEIGHT * 2
#endif
extern struct scroll_screen_info lcd_scroll_info;