+#if 1
+// Bresenham's
+void MaskUnit::draw_line_clamped(VFrame *frame,
+ int x1,int y1, int x2,int y2, unsigned char k)
+{
+ int w = frame->get_w(), h = frame->get_h();
+ unsigned char **rows = (unsigned char**)frame->get_rows();
+ int dx = x2-x1, dy = y2-y1;
+//printf("MaskUnit::draw_line_clamped(%d,%d -> %d,%d, 0x%02x\n", x1,y1, x2,y2, k);
+
+ int ax = 2*abs(dx), ay = 2*abs(dy);
+
+ if( ax > ay ) { /* x dominant */
+ if( dx == 0 ) return;
+ if( x1 > x2 ) {
+ int xx = x2; x2 = x1; x1 = xx;
+ int yy = y2; y2 = y1; y1 = yy;
+ }
+ if( x1 >= w || x2 < 0 ) return;
+ if( dx < 0 ) { dx = -dx; dy = -dy; }
+ int x = x1, y = y1, d = dx;
+ int sy = dy < 0 ? -1 : 1;
+ if( x1 < 0 ) {
+ double py = -(double)dy/dx * x1 + y1 + 0.5;
+ x = 0; y = py;
+ d = (py - y) * ay;
+ }