Blob


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