return 1;
}
+#ifdef ALT_LCLIP
+#define PUTPIXEL(ptr) \
+ do { \
+ if(x0 >= 0 && x0 < fbwidth && y0 >= 0 && y0 < fbheight) { \
+ uint16_t *pptr = (uint16_t*)((uint32_t)ptr & 0xfffffffe); \
+ if((uint32_t)ptr & 1) { \
+ *pptr = (*pptr & 0xff) | (color << 8); \
+ } else { \
+ *pptr = (*pptr & 0xff00) | color; \
+ } \
+ } \
+ } while(0)
+#else /* !ALT_LCLIP */
#define PUTPIXEL(ptr) \
do { \
uint16_t *pptr = (uint16_t*)((uint32_t)ptr & 0xfffffffe); \
*pptr = (*pptr & 0xff00) | color; \
} \
} while(0)
+#endif
void draw_line(int x0, int y0, int x1, int y1, unsigned short color)
{
int i, dx, dy, x_inc, y_inc, error;
+#ifdef ALT_LCLIP
+ int y0inc;
+#endif
unsigned char *fbptr = fb;
fbptr += y0 * fbwidth + x0;
}
if(dy >= 0) {
y_inc = fbwidth;
+#ifdef ALT_LCLIP
+ y0inc = 1;
+#endif
} else {
y_inc = -fbwidth;
+#ifdef ALT_LCLIP
+ y0inc = -1;
+#endif
dy = -dy;
}
if(error >= 0) {
error -= dx * 2;
fbptr += y_inc;
+#ifdef ALT_LCLIP
+ y0 += y0inc;
+#endif
}
error += dy * 2;
fbptr += x_inc;
+#ifdef ALT_LCLIP
+ x0 += x_inc;
+#endif
}
} else {
error = dx * 2 - dy;
if(error >= 0) {
error -= dy * 2;
fbptr += x_inc;
+#ifdef ALT_LCLIP
+ x0 += x_inc;
+#endif
}
error += dx * 2;
fbptr += y_inc;
+#ifdef ALT_LCLIP
+ y0 += y0inc;
+#endif
}
}
}