 
#ifndef __dl_font_h
#define __dl_font_h
#ifdef __cplusplus
extern "C" {
#endif
#ifndef __dl_core_h
#include "Core.h"
#endif
#ifndef __dl_wimp_h
#include "Wimp.h"
#endif
typedef int font_handle;
typedef struct
{
char name[128]; 
int xsize, ysize, xres, yres;
int age, usage;
} font_defn;
typedef struct
{
int minx, miny, maxx, maxy;
} font_info;
typedef struct
{
char *s; 
int x; 
int y; 
int split; 
int term; 
} font_string;
typedef struct
{
int background, foreground;
} font_colours;
typedef struct
{
font_handle font;
font_colours colour;
int offset;
} font_state;
typedef struct
{
char offset;
char thresholds[15];
} font_thresholds;
extern os_error *Font_CacheAddr(int *version, int *cacheused, int *cachesize); 
extern os_error *Font_ListFonts(char *name, int *count); 
extern os_error *Font_ReadDefn(font_handle font, font_defn *defn); 
extern os_error *Font_ReadInfo(font_handle font, font_info *info); 
extern os_error *Font_ConverttoOS(int x, int y, int *xout, int *yout); 
#define Font_ConvertToOS Font_ConverttoOS 
extern os_error *Font_Converttopoints(int x, int y, int *xout, int *yout); 
#define Font_ConvertToPoints Font_Converttopoints 
extern os_error *Font_FindFont(font_handle *font, char *name,
int xsize, int ysize, int xres, int yres); 
extern os_error *Font_LoseFont(font_handle font); 
extern void Font_LoseAllFonts(font_array *fonts);
extern os_error *Font_SetFont(font_handle font); 
extern os_error *Font_CurrentFont(font_state *state); 
extern os_error *Font_FutureFont(font_state *state); 
extern os_error *Font_Paint(char *, int options, int x, int y); 
extern os_error *Font_Caret(int colour, int height, int flags, int x, int y); 
extern os_error *Font_FindCaret(font_string *string); 
extern os_error *Font_FindCaretJ(font_string *s, int xoffset, int yoffset); 
extern os_error *Font_StringWidth(font_string *string); 
extern os_error *Font_CharBBox(font_handle font, char c,
int flags, font_info *info); 
extern os_error *Font_StringBBox(char *string, font_info *info); 
extern os_error *Font_ReadScaleFactor(int *xscale, int *yscale); 
extern os_error *Font_SetFontColours(font_handle font,
int back_colour, int fore_colour,
int offset);
extern os_error *Font_SetPalette(int back_log, int fore_log,
int offset,
int back_phys, int fore_phys);
extern os_error *Font_ReadThresholds(font_thresholds *t);
extern os_error *Font_SetThresholds(font_thresholds *t);
#define font_justify_NONE (0)
#define font_justify_CURSOR (1<<0)
#define font_justify_COORBLOCK (1<<5)
#define font_rubout_NONE (0)
#define font_rubout_CURSOR (1<<1)
#define font_rubout_COORBLOCK (1<<1 + 1<<5)
#define font_plot_OSCOORS (1<<4)
#define font_plot_TRANSMATRIX (1<<6)
#define font_STRLEN (1<<7)
#define font_plot_CURRENTHANDLE (1<<8)
#define font_plot_KERN (1<<9)
typedef struct {
struct {
wimp_point space;
wimp_point letter;
}
offsets;
wimp_rect rubout;
}
font_coorblock;
typedef struct {
struct {
int xx; 
int xy;
int yx;
int yy;
}
scale;
wimp_point translate;
}
font_transformation;
os_error *Font_Paint3( 
font_handle font, 
const char *string, 
unsigned int plottype,
int x,
int y,
font_coorblock *coorblock,
font_transformation *transformation,
int length
);
#ifdef __cplusplus
}
#endif
#endif
