#pragma src "/sys/src/liblayer" #pragma lib "liblayer.a" typedef struct Layer Layer; typedef struct Cover Cover; typedef enum Lvis { Visible, Obscured, Invisible, }Lvis; struct Layer { Bitmap; /* Bitmap.cache!=0 ==> layer */ Layer *next; /* next layer from front to back */ Cover *cover; /* layer etc. from which this is derived */ int user; /* a place for the user to stick stuff */ Lvis vis; /* visibility state */ }; struct Cover { Layer *layer; /* layer on which these are painted */ Layer *front; /* first sublayer */ Bitmap *ground; /* background texture */ }; extern void layerop(void (*)(Layer*, Rectangle, Layer*, void*), Rectangle, Layer*, void*); extern Layer *lalloc(Cover*, Rectangle); extern void lfree(Layer*); extern void ltofront(Layer*); extern void ltoback(Layer*); extern void lupdate(Layer*, Rectangle, Layer *, void *); extern void lcstring(Bitmap*, int, int, uchar*, uchar*, int); extern void _bitblt(Bitmap*, Point, Bitmap*, Rectangle, Fcode); extern void _linsertback(Layer*); extern void _linsertfront(Layer*); extern void _ldelete(Layer*); extern void _point(Bitmap*, Point, int, Fcode); extern void _polysegment(Bitmap*, int, Point*, int, Fcode); extern Point _string(Bitmap*, Point, Font*, char*, Fcode); extern void _segment(Bitmap*, Point, Point, int, Fcode); extern void _texture(Bitmap*, Rectangle, Bitmap*, Fcode); extern Point _subfontstring(Bitmap*, Point, Subfont*, char*, Fcode, int); extern void _lvis(Layer *);