]> git.lizzy.rs Git - plan9front.git/blob - sys/include/memlayer.h
merge
[plan9front.git] / sys / include / memlayer.h
1 #pragma src "/sys/src/libmemlayer"
2 #pragma lib "libmemlayer.a"
3
4 typedef struct Memscreen Memscreen;
5 typedef void (*Refreshfn)(Memimage*, Rectangle, void*);
6
7 struct Memscreen
8 {
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 */
13 };
14
15 struct Memlayer
16 {
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 */
26 };
27
28 /*
29  * These functions accept local coordinates
30  */
31 int                     memload(Memimage*, Rectangle, uchar*, int, int);
32 int                     memunload(Memimage*, Rectangle, uchar*, int);
33
34 /*
35  * All these functions accept screen coordinates, not local ones.
36  */
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*);