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