1 #pragma src "/sys/src/libmemlayer"
2 #pragma lib "libmemlayer.a"
4 typedef struct Memscreen Memscreen;
5 typedef void (*Refreshfn)(Memimage*, Rectangle, void*);
9 Memimage *frontmost; /* frontmost layer on screen */
10 Memimage *rearmost; /* rearmost layer on screen */
11 Memimage *image; /* upon which all layers are drawn */
12 Memimage *fill; /* if non-zero, picture to use when repainting */
17 Rectangle screenr; /* true position of layer on screen */
18 Point delta; /* add delta to go from image coords to screen */
19 Memscreen *screen; /* screen this layer belongs to */
20 Memimage *front; /* window in front of this one */
21 Memimage *rear; /* window behind this one*/
22 int clear; /* layer is fully visible */
23 Memimage *save; /* save area for obscured parts */
24 Refreshfn refreshfn; /* function to call to refresh obscured parts if save==nil */
25 void *refreshptr; /* argument to refreshfn */
29 * These functions accept local coordinates
31 int memload(Memimage*, Rectangle, uchar*, int, int);
32 int memunload(Memimage*, Rectangle, uchar*, int);
35 * All these functions accept screen coordinates, not local ones.
37 void _memlayerop(void (*fn)(Memimage*, Rectangle, Rectangle, void*, int), Memimage*, Rectangle, Rectangle, void*);
38 Memimage* memlalloc(Memscreen*, Rectangle, Refreshfn, void*, ulong);
39 void memldelete(Memimage*);
40 void memlfree(Memimage*);
41 void memltofront(Memimage*);
42 void memltofrontn(Memimage**, int);
43 void _memltofrontfill(Memimage*, int);
44 void memltorear(Memimage*);
45 void memltorearn(Memimage**, int);
46 int memlsetrefresh(Memimage*, Refreshfn, void*);
47 void memlhide(Memimage*, Rectangle);
48 void memlexpose(Memimage*, Rectangle);
49 void _memlsetclear(Memscreen*);
50 int memlorigin(Memimage*, Point, Point);
51 void memlnorefresh(Memimage*, Rectangle, void*);