edge_walk.h 822 Bytes

/* edge_walk.h */

/* x, y data */
struct EW_xy_edge {
	int yp;		/* y scanline */
	int ypf;	/* y fraction */
	int xpi[AA_SP_COUNT];	/* integer x coordinates */	
	int xpf[AA_SP_COUNT];	/* fractional x coordinates */
	int xdi;	/* integer x delta */
	int xdf;	/* fractional x delta */
	} ;

/* attribute data */
struct EW_at_edge {
	int z;
	int s;
	int t;
	int w;
	int l;
	int r;
	int g;
	int b;
	int a;
	} ;

/* edge data */
struct EW_major_edge {
	int left;	/* true if major edge on left */
	struct EW_xy_edge xy;
	struct EW_at_edge pnt;
	struct EW_at_edge del;
	} ; 
struct EW_minor_edge {
	struct EW_xy_edge xy;
	} ;
struct EW_span_edge {
	struct EW_at_edge del;
	} ;

/* three double-buffered edges and dx */
struct EW_major_edge ew_high[2];
struct EW_minor_edge ew_mid[2], ew_low[2];
struct EW_span_edge ew_span[2];