blob: 7551a1ab234a38c0eb62221a9cf345f87f352b2d [file] [log] [blame]
Björn Stenbergd9eb5c72002-03-28 15:09:10 +00001/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2002 by Alan Korr
11 *
12 * All files in this archive are subject to the GNU General Public License.
13 * See the file COPYING in the source tree root for full license agreement.
14 *
15 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
16 * KIND, either express or implied.
17 *
18 ****************************************************************************/
19
20#ifndef __LCD_H__
21#define __LCD_H__
22
Björn Stenberg23820442002-05-13 12:29:34 +000023#include <stdbool.h>
Linus Nielsen Feltzingba809182004-10-26 05:40:24 +000024#include "cpu.h"
Björn Stenberg965401a2002-04-18 17:42:42 +000025#include "config.h"
Björn Stenbergd9eb5c72002-03-28 15:09:10 +000026
Linus Nielsen Feltzinge43b78a2003-04-16 00:12:31 +000027#define STYLE_DEFAULT 0
28#define STYLE_INVERT 1
29
Daniel Stenberg22b77012005-02-22 12:19:12 +000030#ifdef SIMULATOR
31#define lcd_icon(x,y) sim_lcd_icon(x,y)
Linus Nielsen Feltzing60e8f4f2006-01-25 12:15:25 +000032#ifndef MAX_PATH
Jens Arnold6a556c12005-06-23 16:53:54 +000033#define MAX_PATH 260
Linus Nielsen Feltzing60e8f4f2006-01-25 12:15:25 +000034#endif
Jens Arnold6a556c12005-06-23 16:53:54 +000035#else
36#include "file.h" /* for MAX_PATH; FIXME: Why does this not work for sims? */
Daniel Stenberg22b77012005-02-22 12:19:12 +000037#endif
38
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +000039#if LCD_DEPTH <=8
40typedef unsigned char fb_data;
41#elif LCD_DEPTH <= 16
42typedef unsigned short fb_data;
Linus Nielsen Feltzing39ecd722006-02-05 00:17:53 +000043#else
44typedef unsigned long fb_data;
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +000045#endif
46
Björn Stenberg29db1a92002-04-25 15:09:03 +000047/* common functions */
Jens Arnold6a556c12005-06-23 16:53:54 +000048extern void lcd_write_command(int byte);
49extern void lcd_write_command_ex(int cmd, int data1, int data2);
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +000050extern void lcd_write_data(const fb_data* p_bytes, int count);
Björn Stenberg29db1a92002-04-25 15:09:03 +000051extern void lcd_init(void);
Thom Johansen2fce9812005-11-10 01:08:09 +000052#ifdef SIMULATOR
53/* Define a dummy device specific init for the sims */
54#define lcd_init_device()
55#else
56extern void lcd_init_device(void);
57#endif
Björn Stenberg29db1a92002-04-25 15:09:03 +000058extern void lcd_backlight(bool on);
Jens Arnold6a556c12005-06-23 16:53:54 +000059extern int lcd_default_contrast(void);
60extern void lcd_set_contrast(int val);
61
62extern void lcd_clear_display(void);
Jens Arnoldabe77a12004-08-01 21:50:57 +000063extern void lcd_puts(int x, int y, const unsigned char *string);
64extern void lcd_puts_style(int x, int y, const unsigned char *string, int style);
Kjell Ericsondd7f2942003-01-10 09:58:04 +000065extern void lcd_putc(int x, int y, unsigned short ch);
Jens Arnold6a556c12005-06-23 16:53:54 +000066extern void lcd_stop_scroll(void);
67extern void lcd_scroll_speed(int speed);
68extern void lcd_scroll_delay(int ms);
69extern void lcd_puts_scroll(int x, int y, const unsigned char* string);
Jens Arnoldc76c5682004-08-16 23:37:23 +000070extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string,
Linus Nielsen Feltzinge43b78a2003-04-16 00:12:31 +000071 int style);
Linus Nielsen Feltzingcc22cd02002-07-22 22:37:03 +000072extern void lcd_icon(int icon, bool enable);
Robert Hak5d8e4c22002-05-21 08:50:46 +000073
Jens Arnoldc5a309a2006-08-08 13:44:43 +000074#if CONFIG_LCD == LCD_IPODCOLOR || CONFIG_LCD == LCD_IPODNANO \
75 || CONFIG_LCD == LCD_H300
Dave Chapmanc9d66562006-08-07 22:11:07 +000076void lcd_yuv_blit(unsigned char * const src[3],
77 int src_x, int src_y, int stride,
78 int x, int y, int width, int height);
79#endif
80
Daniel Stenberg1eea4a52002-05-24 09:03:08 +000081#if defined(SIMULATOR) || defined(HAVE_LCD_BITMAP)
Jörg Hohensohn56271b52003-12-12 22:11:08 +000082/* performance function */
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +000083extern void lcd_blit(const fb_data* data, int x, int by, int width,
Jens Arnold7e11acb2005-06-28 23:15:47 +000084 int bheight, int stride);
Daniel Stenberg6985f342002-08-09 12:20:54 +000085
Jens Arnold6a556c12005-06-23 16:53:54 +000086extern void lcd_update(void);
Daniel Stenberg6985f342002-08-09 12:20:54 +000087/* update a fraction of the screen */
88extern void lcd_update_rect(int x, int y, int width, int height);
Daniel Stenbergac31e6a2005-05-23 16:23:25 +000089
90#ifdef HAVE_REMOTE_LCD
91extern void lcd_remote_update(void);
92/* update a fraction of the screen */
93extern void lcd_remote_update_rect(int x, int y, int width, int height);
94#endif
95
Robert Hak5d8e4c22002-05-21 08:50:46 +000096#else
97 #define lcd_update()
Daniel Stenberg359b6952002-09-10 08:42:03 +000098 #define lcd_update_rect(x,y,w,h)
Robert Hak5d8e4c22002-05-21 08:50:46 +000099#endif
Björn Stenberg29db1a92002-04-25 15:09:03 +0000100
Daniel Stenberga1a2d9e2002-04-11 12:35:54 +0000101#ifdef HAVE_LCD_CHARCELLS
Linus Nielsen Feltzingcc22cd02002-07-22 22:37:03 +0000102
103/* Icon definitions for lcd_icon() */
104enum
105{
106 ICON_BATTERY = 0,
107 ICON_BATTERY_1,
108 ICON_BATTERY_2,
109 ICON_BATTERY_3,
110 ICON_USB,
111 ICON_PLAY,
112 ICON_RECORD,
113 ICON_PAUSE,
114 ICON_AUDIO,
115 ICON_REPEAT,
116 ICON_1,
117 ICON_VOLUME,
118 ICON_VOLUME_1,
119 ICON_VOLUME_2,
120 ICON_VOLUME_3,
121 ICON_VOLUME_4,
122 ICON_VOLUME_5,
123 ICON_PARAM
124};
Björn Stenbergd9eb5c72002-03-28 15:09:10 +0000125
Jens Arnold6a556c12005-06-23 16:53:54 +0000126extern void lcd_double_height(bool on);
127extern void lcd_define_hw_pattern(int which,const char *pattern,int length);
128extern void lcd_define_pattern(int which,const char *pattern);
Kjell Ericsona33d6b22003-01-10 10:12:17 +0000129unsigned char lcd_get_locked_pattern(void);
Kjell Ericsondd7f2942003-01-10 09:58:04 +0000130void lcd_unlock_pattern(unsigned char pat);
Kjell Ericson565505a2003-01-27 14:37:03 +0000131void lcd_put_cursor(int x, int y, char cursor_char);
Kjell Ericson9d40f7e2003-01-29 11:48:35 +0000132void lcd_remove_cursor(void);
Jens Arnold6a556c12005-06-23 16:53:54 +0000133extern void lcd_bidir_scroll(int threshold);
134#define JUMP_SCROLL_ALWAYS 5
135extern void lcd_jump_scroll(int mode); /* 0=off, 1=once, ..., ALWAYS */
136extern void lcd_jump_scroll_delay(int ms);
Daniel Stenbergc8b61192002-05-04 12:19:36 +0000137#endif
Kjell Ericson84d7d702002-10-17 18:44:02 +0000138
Jens Arnolda142d4d2005-06-30 18:42:24 +0000139/* Draw modes */
Jens Arnold04daef12005-06-24 22:33:21 +0000140#define DRMODE_COMPLEMENT 0
141#define DRMODE_BG 1
142#define DRMODE_FG 2
143#define DRMODE_SOLID 3
144#define DRMODE_INVERSEVID 4 /* used as bit modifier for basic modes */
145
Jens Arnolda142d4d2005-06-30 18:42:24 +0000146/* Low-level drawing function types */
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000147typedef void lcd_pixelfunc_type(int x, int y);
Jens Arnoldcb36fec2006-07-28 07:17:00 +0000148typedef void lcd_blockfunc_type(fb_data *address, unsigned mask, unsigned bits);
Jens Arnold1d6eeea2005-11-28 10:05:45 +0000149#if LCD_DEPTH >= 8
150typedef void lcd_fastpixelfunc_type(fb_data *address);
151#endif
Jens Arnolda142d4d2005-06-30 18:42:24 +0000152
Jens Arnold82ea7c32005-07-19 09:24:29 +0000153#ifdef HAVE_LCD_BITMAP
154
155#ifdef HAVE_LCD_COLOR
Dave Chapman77372d12005-11-07 23:07:19 +0000156#if LCD_DEPTH == 16
Jens Arnold5b2cba12005-11-16 21:09:23 +0000157#define LCD_MAX_RED 31
158#define LCD_MAX_GREEN 63
159#define LCD_MAX_BLUE 31
Dave Chapman603f87f2006-02-26 02:48:05 +0000160#define _RGB_UNPACK_RED(x) ((((x) >> 8) & 0xf8) | ((x) >> 13))
161#define _RGB_UNPACK_GREEN(x) ((((x) >> 3) & 0xfc) | (((x) >> 9) & 0x03))
162#define _RGB_UNPACK_BLUE(x) ((((x) << 3) & 0xf8) | (((x) >> 2) & 0x07))
Jens Arnolde6dac912006-02-22 21:41:44 +0000163#define _RGBPACK(r, g, b) ( ((((r) * (31*257) + (127*257)) >> 16) << 11) \
164 |((((g) * (63*257) + (127*257)) >> 16) << 5) \
165 | (((b) * (31*257) + (127*257)) >> 16))
166/* Note: ((x * 257) >> 16) almost equals (x / 255), but it avoids the division,
167 * so it's faster when the macro is used for variable r, g, b in the source. */
Dave Chapman260f8d32005-11-19 02:06:46 +0000168#if (LCD_PIXELFORMAT == RGB565SWAPPED)
Jens Arnold5b2cba12005-11-16 21:09:23 +0000169#define LCD_RGBPACK(r, g, b) ( ((_RGBPACK((r), (g), (b)) & 0xff00) >> 8) \
170 |((_RGBPACK((r), (g), (b)) & 0x00ff) << 8))
Dave Chapman603f87f2006-02-26 02:48:05 +0000171#define RGB_UNPACK_RED(x) _RGB_UNPACK_RED(swap16(x))
172#define RGB_UNPACK_GREEN(x) _RGB_UNPACK_GREEN(swap16(x))
173#define RGB_UNPACK_BLUE(x) _RGB_UNPACK_BLUE(swap16(x))
Dave Chapman77372d12005-11-07 23:07:19 +0000174#else
Jens Arnold5b2cba12005-11-16 21:09:23 +0000175#define LCD_RGBPACK(r, g, b) _RGBPACK((r), (g), (b))
Dave Chapman603f87f2006-02-26 02:48:05 +0000176#define RGB_UNPACK_RED(x) _RGB_UNPACK_RED(x)
177#define RGB_UNPACK_GREEN(x) _RGB_UNPACK_GREEN(x)
178#define RGB_UNPACK_BLUE(x) _RGB_UNPACK_BLUE(x)
Dave Chapman77372d12005-11-07 23:07:19 +0000179#endif
Linus Nielsen Feltzing39ecd722006-02-05 00:17:53 +0000180#elif LCD_DEPTH == 18
181#define LCD_MAX_RED 63
182#define LCD_MAX_GREEN 63
183#define LCD_MAX_BLUE 63
Jens Arnolde6dac912006-02-22 21:41:44 +0000184#define LCD_RGBPACK(r, g, b) ( ((((r) * (63*257) + (127*257)) >> 16) << 12) \
185 |((((g) * (63*257) + (127*257)) >> 16) << 6) \
186 | (((b) * (63*257) + (127*257)) >> 16))
Jens Arnold5b2cba12005-11-16 21:09:23 +0000187#else
188/* other colour depths */
189#endif
190
191#define LCD_BLACK LCD_RGBPACK(0, 0, 0)
192#define LCD_DARKGRAY LCD_RGBPACK(85, 85, 85)
193#define LCD_LIGHTGRAY LCD_RGBPACK(170, 170, 170)
194#define LCD_WHITE LCD_RGBPACK(255, 255, 255)
195#define LCD_DEFAULT_FG LCD_BLACK
196#define LCD_DEFAULT_BG LCD_RGBPACK(182, 198, 229) /* rockbox blue */
197
198#elif LCD_DEPTH > 1 /* greyscale */
Jens Arnold82ea7c32005-07-19 09:24:29 +0000199#define LCD_MAX_LEVEL ((1 << LCD_DEPTH) - 1)
Jens Arnold5b2cba12005-11-16 21:09:23 +0000200#define LCD_BRIGHTNESS(y) (((y) * LCD_MAX_LEVEL + 127) / 255)
201
202#define LCD_BLACK LCD_BRIGHTNESS(0)
203#define LCD_DARKGRAY LCD_BRIGHTNESS(85)
204#define LCD_LIGHTGRAY LCD_BRIGHTNESS(170)
205#define LCD_WHITE LCD_BRIGHTNESS(255)
206#define LCD_DEFAULT_FG LCD_BLACK
207#define LCD_DEFAULT_BG LCD_WHITE
Jens Arnold82ea7c32005-07-19 09:24:29 +0000208#endif
Jens Arnolda142d4d2005-06-30 18:42:24 +0000209
Jens Arnold6a556c12005-06-23 16:53:54 +0000210/* Memory copy of display bitmap */
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000211#if LCD_DEPTH == 1
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +0000212extern fb_data lcd_framebuffer[LCD_HEIGHT/8][LCD_WIDTH];
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000213#elif LCD_DEPTH == 2
Dave Chapman8ad2df82006-02-09 00:48:53 +0000214#if LCD_PIXELFORMAT == HORIZONTAL_PACKING
Jens Arnold19b45a42006-03-08 01:14:46 +0000215#define LCD_FBWIDTH ((LCD_WIDTH+3)/4)
216extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_FBWIDTH];
Dave Chapman8ad2df82006-02-09 00:48:53 +0000217#else
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +0000218extern fb_data lcd_framebuffer[LCD_HEIGHT/4][LCD_WIDTH];
Dave Chapman8ad2df82006-02-09 00:48:53 +0000219#endif
Dave Chapman77372d12005-11-07 23:07:19 +0000220#elif LCD_DEPTH == 16
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +0000221extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH];
Linus Nielsen Feltzing39ecd722006-02-05 00:17:53 +0000222#elif LCD_DEPTH == 18
223extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH];
Jens Arnold19b45a42006-03-08 01:14:46 +0000224#endif
225
226#ifndef LCD_FBWIDTH
227#define LCD_FBWIDTH LCD_WIDTH
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000228#endif
Daniel Stenberg57e2fb12002-08-01 13:29:30 +0000229
Dave Chapmand16a8b82006-02-05 16:52:22 +0000230#if (CONFIG_BACKLIGHT==BL_IRIVER_H300) || (CONFIG_BACKLIGHT==BL_IPOD3G)
Linus Nielsen Feltzing67f00222005-12-20 23:15:27 +0000231extern void lcd_enable(bool on);
232#endif
233
Linus Nielsen Feltzing745adad2006-01-28 12:12:42 +0000234/* Bitmap formats */
235enum
236{
237 FORMAT_MONO,
238 FORMAT_NATIVE,
239 FORMAT_ANY /* For passing to read_bmp_file() */
240};
241
Linus Nielsen Feltzing281403a2006-01-28 23:12:20 +0000242#define FORMAT_TRANSPARENT 0x40000000
243
244#define TRANSPARENT_COLOR LCD_RGBPACK(255,0,255)
245
Linus Nielsen Feltzing745adad2006-01-28 12:12:42 +0000246struct bitmap {
247 int width;
248 int height;
249#if LCD_DEPTH > 1
250 int format;
Linus Nielsen Feltzing281403a2006-01-28 23:12:20 +0000251 unsigned char *maskdata;
Linus Nielsen Feltzing745adad2006-01-28 12:12:42 +0000252#endif
253 unsigned char *data;
254};
255
Jens Arnold6a556c12005-06-23 16:53:54 +0000256extern void lcd_set_invert_display(bool yesno);
257extern void lcd_set_flip(bool yesno);
258extern void lcd_roll(int pixels);
Jens Arnold04daef12005-06-24 22:33:21 +0000259
260extern void lcd_set_drawmode(int mode);
261extern int lcd_get_drawmode(void);
Björn Stenberg71cda112002-05-10 14:54:56 +0000262extern void lcd_setmargins(int xmargin, int ymargin);
Markus Brauneef97042002-08-20 19:33:55 +0000263extern int lcd_getxmargin(void);
264extern int lcd_getymargin(void);
Jens Arnold6a556c12005-06-23 16:53:54 +0000265extern void lcd_setfont(int font);
266extern int lcd_getstringsize(const unsigned char *str, int *w, int *h);
Jens Arnold04daef12005-06-24 22:33:21 +0000267
Tomas Salfischberger7fa39df2006-01-22 01:42:05 +0000268extern void lcd_puts_offset(int x, int y, const unsigned char *str, int offset);
269extern void lcd_puts_style_offset(int x, int y, const unsigned char *str,
270 int style, int offset);
271extern void lcd_puts_scroll_offset(int x, int y, const unsigned char *string,
272 int offset);
273extern void lcd_puts_scroll_style_offset(int x, int y, const unsigned char *string,
274 int style, int offset);
275
Jens Arnold576908d2005-06-29 01:39:50 +0000276/* low level drawing function pointer arrays */
Jens Arnold71bc5042005-11-06 23:49:29 +0000277extern lcd_pixelfunc_type* const lcd_pixelfuncs[8];
278extern lcd_blockfunc_type* const lcd_blockfuncs[8];
Jens Arnold1d6eeea2005-11-28 10:05:45 +0000279#if LCD_DEPTH >= 8
Jens Arnold3c173302006-02-03 21:11:51 +0000280extern lcd_fastpixelfunc_type* const * lcd_fastpixelfuncs;
Jens Arnold1d6eeea2005-11-28 10:05:45 +0000281#endif
Jens Arnold576908d2005-06-29 01:39:50 +0000282
Björn Stenberg30e8c032002-04-25 13:45:23 +0000283extern void lcd_drawpixel(int x, int y);
Jens Arnold6a556c12005-06-23 16:53:54 +0000284extern void lcd_drawline(int x1, int y1, int x2, int y2);
Jens Arnold04daef12005-06-24 22:33:21 +0000285extern void lcd_hline(int x1, int x2, int y);
286extern void lcd_vline(int x, int y1, int y2);
287extern void lcd_drawrect(int x, int y, int width, int height);
288extern void lcd_fillrect(int x, int y, int width, int height);
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +0000289extern void lcd_bitmap_part(const fb_data *src, int src_x, int src_y,
Jens Arnold7e11acb2005-06-28 23:15:47 +0000290 int stride, int x, int y, int width, int height);
Linus Nielsen Feltzing0cb4a462005-11-14 20:43:49 +0000291extern void lcd_bitmap(const fb_data *src, int x, int y, int width,
Jens Arnolda142d4d2005-06-30 18:42:24 +0000292 int height);
Jens Arnold6a556c12005-06-23 16:53:54 +0000293extern void lcd_putsxy(int x, int y, const unsigned char *string);
Jens Arnold04daef12005-06-24 22:33:21 +0000294
Jens Arnold6a556c12005-06-23 16:53:54 +0000295extern void lcd_invertscroll(int x, int y);
Björn Stenberga2e98c12002-12-12 15:20:37 +0000296extern void lcd_bidir_scroll(int threshold);
297extern void lcd_scroll_step(int pixels);
Björn Stenbergbed3d3f2002-09-20 08:07:51 +0000298
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000299#if LCD_DEPTH > 1
Jens Arnold5b2cba12005-11-16 21:09:23 +0000300extern void lcd_set_foreground(unsigned foreground);
301extern unsigned lcd_get_foreground(void);
302extern void lcd_set_background(unsigned background);
303extern unsigned lcd_get_background(void);
304extern void lcd_set_drawinfo(int mode, unsigned foreground,
305 unsigned background);
Dave Chapmand9e5b672006-02-02 20:42:56 +0000306#ifdef HAVE_LCD_COLOR
307void lcd_set_backdrop(fb_data* backdrop);
308fb_data* lcd_get_backdrop(void);
309#endif
Jens Arnold5b2cba12005-11-16 21:09:23 +0000310
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000311extern void lcd_mono_bitmap_part(const unsigned char *src, int src_x, int src_y,
312 int stride, int x, int y, int width, int height);
313extern void lcd_mono_bitmap(const unsigned char *src, int x, int y, int width,
Jens Arnoldbf9f28b2005-07-14 18:11:36 +0000314 int height);
Linus Nielsen Feltzing281403a2006-01-28 23:12:20 +0000315extern void lcd_bitmap_transparent_part(const fb_data *src,
316 int src_x, int src_y,
317 int stride, int x, int y, int width,
318 int height);
319extern void lcd_bitmap_transparent(const fb_data *src, int x, int y,
320 int width, int height);
Jens Arnoldf894a4c2005-07-06 22:58:02 +0000321#else /* LCD_DEPTH == 1 */
322#define lcd_mono_bitmap lcd_bitmap
323#define lcd_mono_bitmap_part lcd_bitmap_part
324#endif
325
Jens Arnold82ea7c32005-07-19 09:24:29 +0000326#endif /* HAVE_LCD_BITMAP */
Björn Stenbergd9eb5c72002-03-28 15:09:10 +0000327
Jens Arnold6a556c12005-06-23 16:53:54 +0000328/* internal usage, but in multiple drivers */
329#ifdef HAVE_LCD_BITMAP
330#define SCROLL_SPACING 3
331
332struct scrollinfo {
333 char line[MAX_PATH + LCD_WIDTH/2 + SCROLL_SPACING + 2];
334 int len; /* length of line in chars */
335 int width; /* length of line in pixels */
336 int offset;
337 int startx;
338 bool backward; /* scroll presently forward or backward? */
339 bool bidir;
340 bool invert; /* invert the scrolled text */
341 long start_tick;
342};
343#else /* !HAVE_LCD_BITMAP */
344
345struct scrollinfo {
346 int mode;
347 char text[MAX_PATH];
348 int textlen;
349 int offset;
350 int turn_offset;
351 int startx;
352 int starty;
353 long scroll_start_tick;
354 int direction; /* +1 for right or -1 for left*/
355 int jump_scroll;
356 int jump_scroll_steps;
357};
358#endif
359
Björn Stenberg965401a2002-04-18 17:42:42 +0000360#endif /* __LCD_H__ */