plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

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