#ifndef LCD_H #define LCD_H // Maximum supported sizes #define LCD_MAX_WID 256 #define LCD_MAX_WIDTH 256 #define LCD_MAX_HGT 256 #define LCD_MAX_HEIGHT 256 int lcd_init (char *args); int lcd_add_driver (char *driver, char *args); int lcd_shutdown (); ///////////////////////////////////////////////////////////////// // Driver functions / info held here... // // Feel free to override any/all functions here with real driver // functions... // typedef struct lcd_logical_driver { // Size in cells of the LCD int wid, hgt; // Size of each LCD cell, in pixels int cellwid, cellhgt; // Frame buffer... char *framebuf; // Functions which might be the same for all drivers... void (*clear) (); void (*string) (int x, int y, char lcd[]); void (*chr) (int x, int y, char c); void (*vbar) (int x, int len); void (*hbar) (int x, int y, int len); void (*init_num) (); void (*num) (int x, int num); // Functions which should probably be implemented in each driver... int (*init) (struct lcd_logical_driver * driver, char *args); void (*close) (); void (*flush) (); void (*flush_box) (int lft, int top, int rgt, int bot); int (*contrast) (int contrast); void (*backlight) (int on); void (*output) (int on); void (*set_char) (int n, char *dat); void (*icon) (int which, char dest); void (*init_vbar) (); void (*init_hbar) (); void (*draw_frame) (); // Returns 0 for "no key pressed", or (A-Z). char (*getkey) (); // more? } lcd_logical_driver; typedef struct lcd_physical_driver { char *name; int (*init) (struct lcd_logical_driver * driver, char *device); } lcd_physical_driver; extern lcd_logical_driver lcd; int lcd_drv_init (lcd_logical_driver * driver, char *args); void lcd_drv_close (); void lcd_drv_clear (); void lcd_drv_flush (); void lcd_drv_string (int x, int y, char string[]); void lcd_drv_chr (int x, int y, char c); int lcd_drv_contrast (int contrast); void lcd_drv_backlight (int on); void lcd_drv_output (int on); void lcd_drv_init_vbar (); void lcd_drv_init_hbar (); void lcd_drv_init_num (); void lcd_drv_num (int x, int num); void lcd_drv_set_char (int n, char *dat); void lcd_drv_vbar (int x, int len); void lcd_drv_hbar (int x, int y, int len); void lcd_drv_icon (int which, char dest); void lcd_drv_flush_box (int lft, int top, int rgt, int bot); void lcd_drv_draw_frame (); char lcd_drv_getkey (); #endif