#ifndef riscosio_H
#define riscosio_H

extern float screen_gamma;
extern int dithering;
extern int using_mouse;
extern int mouse_click;
extern int mouse_x, mouse_y, mouse_butt;
extern int SWidth, SWidthOS;
extern int SHeight, SHeightOS;
extern os_factors factors;
#ifdef osspriteop_H
extern osspriteop_area *gfx_area;
#endif
extern char textfont_name[];
extern char fixedfont_name[];
extern char encoding_name[];
extern int os_version;
extern int display_attr;
extern int display_font;
extern os_colour true_fg, true_bg;
extern os_box changed_box;
extern os_colour screen_bg;
extern int border;
extern int fullscreen;
#ifdef osspriteop_H
extern osspriteop_header **gfx_ptr;
#endif
extern int area_no;
extern int system_alphabet_no;

#define F_MEDIUM 0
#define F_BOLD 1
#define F_ITALIC 2
#define F_BOLDITALIC 3
#define F_FIXED 4
#define F_FIXEDBOLD 5
#define F_FIXEDITALIC 6
#define F_FIXEDBOLDITALIC 7
#define F_LAST 7

#define CHAR_W 16 /* OS units */
#define CHAR_H 32

#define char_width (CHAR_W*400) /* millipoints */
#define line_height (CHAR_H*400)

extern int fwidth[F_LAST+1][256];

#ifdef font_H
extern font_f fontno[F_LAST+1];
extern font_paint_block fblock;
#endif

void place_caret(void);
#ifdef wimp_H
void grab_caret(wimp_caret *current_pos);
void redraw_window(wimp_draw *r);
#endif
void set_graphics_window(int xmin, int ymin, int xmax, int ymax);
void set_graphics_origin(int x0, int y0);
void complete_redraw(void);
void find_fonts(void);
void resize_window(int new_cols, int new_rows);
void redo_fonts(void);
void load_gfx(void);
void draw_border(int rx, int ry);
void display_string(const zword_t *s);
__pure int end_key(int c);
int text_length(const zword_t *line_buffer, int len, int font, int style, int fixed);
void open_save_directory(void);
void optimise_status_line(void);
void v5ro_input_blank(const zword_t *buffer);
void v5ro_input_place_caret(const zword_t *buffer, int left, int pos);
int v5ro_input_get_left(const zword_t *buffer);
int v5ro_input_will_fit(const zword_t *buffer, unsigned u);
int v5ro_at_left(void);

#define NEWLINE 13

#define ARTHUR_120  0xA0
#define RISC_OS_200 0xA1
#define RISC_OS_201 0xA2
#define RISC_OS_300 0XA3
#define RISC_OS_310 0xA4
#define RISC_OS_350 0xA5
#define RISC_OS_360 0xA6

#endif
