Blob


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