memlayer.h (1922B)
1 #ifndef _MEMLAYER_H_ 2 #define _MEMLAYER_H_ 1 3 #if defined(__cplusplus) 4 extern "C" { 5 #endif 6 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*); 55 56 57 #if defined(__cplusplus) 58 } 59 #endif 60 #endif