rsc | f701258 | 2003-11-25 01:40:27 +0000 | [diff] [blame] | 1 | #ifndef _MEMLAYER_H_ |
| 2 | #define _MEMLAYER_H_ 1 |
| 3 | #if defined(__cplusplus) |
| 4 | extern "C" { |
| 5 | #endif |
| 6 | |
rsc | 55dedf7 | 2003-09-30 19:06:20 +0000 | [diff] [blame] | 7 | typedef struct Memscreen Memscreen; |
| 8 | typedef void (*Refreshfn)(Memimage*, Rectangle, void*); |
| 9 | |
| 10 | struct 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 | |
| 18 | struct 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 | */ |
| 34 | int memload(Memimage*, Rectangle, uchar*, int, int); |
| 35 | int memunload(Memimage*, Rectangle, uchar*, int); |
| 36 | |
| 37 | /* |
| 38 | * All these functions accept screen coordinates, not local ones. |
| 39 | */ |
| 40 | void _memlayerop(void (*fn)(Memimage*, Rectangle, Rectangle, void*, int), Memimage*, Rectangle, Rectangle, void*); |
| 41 | Memimage* memlalloc(Memscreen*, Rectangle, Refreshfn, void*, u32int); |
| 42 | void memldelete(Memimage*); |
| 43 | void memlfree(Memimage*); |
| 44 | void memltofront(Memimage*); |
| 45 | void memltofrontn(Memimage**, int); |
| 46 | void _memltofrontfill(Memimage*, int); |
| 47 | void memltorear(Memimage*); |
| 48 | void memltorearn(Memimage**, int); |
| 49 | int memlsetrefresh(Memimage*, Refreshfn, void*); |
| 50 | void memlhide(Memimage*, Rectangle); |
| 51 | void memlexpose(Memimage*, Rectangle); |
| 52 | void _memlsetclear(Memscreen*); |
| 53 | int memlorigin(Memimage*, Point, Point); |
| 54 | void memlnorefresh(Memimage*, Rectangle, void*); |
rsc | f701258 | 2003-11-25 01:40:27 +0000 | [diff] [blame] | 55 | |
| 56 | |
| 57 | #if defined(__cplusplus) |
| 58 | } |
| 59 | #endif |
| 60 | #endif |