2 int n
, dx
, dy
, sx
, pp_inc_1
, pp_inc_2
;
5 #if defined(INTERP_RGB) || TGL_FEATURE_RENDER_BITS == 24
6 register unsigned int r
, g
, b
;
9 register unsigned int rinc
, ginc
, binc
;
12 register unsigned short *pz
;
17 if (p1
->y
> p2
->y
|| (p1
->y
== p2
->y
&& p1
->x
> p2
->x
)) {
24 pp
= (PIXEL
*) ((char *) zb
->pbuf
+ zb
->linesize
* p1
->y
+ p1
->x
* PSZB
);
26 pz
= zb
->zbuf
+ (p1
->y
* sx
+ p1
->x
);
36 #elif TGL_FEATURE_RENDER_BITS == 24
37 /* for 24 bits, we store the colors in different variables */
45 #if TGL_FEATURE_RENDER_BITS == 24
46 #define RGBPIXEL pp[0] = r >> 16, pp[1] = g >> 16, pp[2] = b >> 16
48 #define RGBPIXEL *pp = RGB_TO_PIXEL(r >> 8,g >> 8,b >> 8)
50 #else /* INTERP_RGB */
52 #if TGL_FEATURE_RENDER_BITS == 24
53 #define RGBPIXEL pp[0] = r, pp[1] = g, pp[2] = b
55 #define RGBPIXEL *pp = color
57 #endif /* INTERP_RGB */
63 zz=z >> ZB_POINT_Z_FRAC_BITS; \
71 #define PUTPIXEL() RGBPIXEL
74 #define DRAWLINE(dx,dy,inc_1,inc_2) \
76 ZZ(zinc=(p2->z-p1->z)/n);\
77 RGB(rinc=((p2->r-p1->r) << 8)/n;\
78 ginc=((p2->g-p1->g) << 8)/n;\
79 binc=((p2->b-p1->b) << 8)/n);\
83 pp_inc_1 = (inc_1) * PSZB;\
84 pp_inc_2 = (inc_2) * PSZB;\
88 RGB(r+=rinc;g+=ginc;b+=binc);\
89 if (a>0) { pp=(PIXEL *)((char *)pp + pp_inc_1); ZZ(pz+=(inc_1)); a-=dx; }\
90 else { pp=(PIXEL *)((char *)pp + pp_inc_2); ZZ(pz+=(inc_2)); a+=dy; }\
95 if (dx
== 0 && dy
== 0) {
99 DRAWLINE(dx
, dy
, sx
+ 1, 1);
101 DRAWLINE(dy
, dx
, sx
+ 1, sx
);
106 DRAWLINE(dx
, dy
, sx
- 1, -1);
108 DRAWLINE(dy
, dx
, sx
- 1, sx
);
116 /* internal defines */