struct GBitmap
{
ulong *base; /* pointer to start of data */
long zero; /* base+zero=&word containing (0,0) */
ulong width; /* width in 32 bit words of total data area */
int ldepth; /* log base 2 of number of bits per pixel */
Rectangle r; /* rectangle in data area, local coords */
Rectangle clipr; /* clipping region */
GBitmap *cache; /* zero; distinguishes bitmap from layer */
};
/*
* GFont etc. are not used in the library, only in devbit.c.
* GSubfont is only barely used.
*/
struct GSubfont
{
short n; /* number of chars in font */
char height; /* height of bitmap */
char ascent; /* top of bitmap to baseline */
Fontchar *info; /* n+1 character descriptors */
GBitmap *bits; /* where the characters are */
};
struct GCacheinfo
{
ulong xright; /* right edge of bits */
Fontchar;
};
struct GFont
{
uchar height; /* max height of bitmap, interline spacing */
char ascent; /* top of bitmap to baseline */
char width; /* widest so far; used in caching only */
char ldepth; /* of images */
short id; /* of font */
int ncache; /* number of entries in cache */
GCacheinfo *cache; /* cached characters */
GBitmap *b; /* cached images */
};
extern ulong *gaddr(GBitmap*, Point);
extern uchar *gbaddr(GBitmap*, Point);
extern void gbitblt(GBitmap*, Point, GBitmap*, Rectangle, Fcode);
extern void gbitbltclip(void*);
extern void gtexture(GBitmap*, Rectangle, GBitmap*, Fcode);
extern Point gsubfstrsize(GSubfont*, char*);
extern int gsubfstrwidth(GSubfont*, char*);
extern Point gsubfstring(GBitmap*, Point, GSubfont*, char*, Fcode);
extern Point gbitbltstring(GBitmap*, Point, GSubfont*, char*, Fcode);
extern void gsegment(GBitmap*, Point, Point, int, Fcode);
extern void gpoint(GBitmap*, Point, int, Fcode);
extern void gflushcpucache(void);
extern GBitmap* gballoc(Rectangle, int);
extern void gbfree(GBitmap*);