//--------------------------------------------------------------------- public line_interpolator_image(renderer_outline_aa ren, line_parameters lp, int sx, int sy, int ex, int ey, int pattern_start, double scale_x) { throw new NotImplementedException(); /* * m_lp=(lp); * m_li = new dda2_line_interpolator(lp.vertical ? LineAABasics.line_dbl_hr(lp.x2 - lp.x1) : * LineAABasics.line_dbl_hr(lp.y2 - lp.y1), * lp.vertical ? Math.Abs(lp.y2 - lp.y1) : * Math.Abs(lp.x2 - lp.x1) + 1); * m_di = new distance_interpolator4(lp.x1, lp.y1, lp.x2, lp.y2, sx, sy, ex, ey, lp.len, scale_x, * lp.x1 & ~LineAABasics.line_subpixel_mask, lp.y1 & ~LineAABasics.line_subpixel_mask); * m_ren=ren; * m_x = (lp.x1 >> LineAABasics.line_subpixel_shift); * m_y = (lp.y1 >> LineAABasics.line_subpixel_shift); * m_old_x=(m_x); * m_old_y=(m_y); * m_count = ((lp.vertical ? Math.Abs((lp.y2 >> LineAABasics.line_subpixel_shift) - m_y) : * Math.Abs((lp.x2 >> LineAABasics.line_subpixel_shift) - m_x))); * m_width=(ren.subpixel_width()); * //m_max_extent(m_width >> (LineAABasics.line_subpixel_shift - 2)); * m_max_extent = ((m_width + LineAABasics.line_subpixel_scale) >> LineAABasics.line_subpixel_shift); * m_start=(pattern_start + (m_max_extent + 2) * ren.pattern_width()); * m_step=(0); * * dda2_line_interpolator li = new dda2_line_interpolator(0, lp.vertical ? * (lp.dy << LineAABasics.line_subpixel_shift) : * (lp.dx << LineAABasics.line_subpixel_shift), * lp.len); * * uint i; * int stop = m_width + LineAABasics.line_subpixel_scale * 2; * for(i = 0; i < max_half_width; ++i) * { * m_dist_pos[i] = li.y(); * if(m_dist_pos[i] >= stop) break; ++li; * } * m_dist_pos[i] = 0x7FFF0000; * * int dist1_start; * int dist2_start; * int npix = 1; * * if(lp.vertical) * { * do * { * --m_li; * m_y -= lp.inc; * m_x = (m_lp.x1 + m_li.y()) >> LineAABasics.line_subpixel_shift; * * if(lp.inc > 0) m_di.dec_y(m_x - m_old_x); * else m_di.inc_y(m_x - m_old_x); * * m_old_x = m_x; * * dist1_start = dist2_start = m_di.dist_start(); * * int dx = 0; * if(dist1_start < 0) ++npix; * do * { * dist1_start += m_di.dy_start(); * dist2_start -= m_di.dy_start(); * if(dist1_start < 0) ++npix; * if(dist2_start < 0) ++npix; ++dx; * } * while(m_dist_pos[dx] <= m_width); * if(npix == 0) break; * * npix = 0; * } * while(--m_step >= -m_max_extent); * } * else * { * do * { * --m_li; * * m_x -= lp.inc; * m_y = (m_lp.y1 + m_li.y()) >> LineAABasics.line_subpixel_shift; * * if(lp.inc > 0) m_di.dec_x(m_y - m_old_y); * else m_di.inc_x(m_y - m_old_y); * * m_old_y = m_y; * * dist1_start = dist2_start = m_di.dist_start(); * * int dy = 0; * if(dist1_start < 0) ++npix; * do * { * dist1_start -= m_di.dx_start(); * dist2_start += m_di.dx_start(); * if(dist1_start < 0) ++npix; * if(dist2_start < 0) ++npix; ++dy; * } * while(m_dist_pos[dy] <= m_width); * if(npix == 0) break; * * npix = 0; * } * while(--m_step >= -m_max_extent); * } * m_li.adjust_forward(); * m_step -= m_max_extent; */ }
//--------------------------------------------------------------------- public line_interpolator_image(renderer_outline_aa ren, line_parameters lp, int sx, int sy, int ex, int ey, int pattern_start, double scale_x) { throw new NotImplementedException(); /* m_lp=(lp); m_li = new dda2_line_interpolator(lp.vertical ? LineAABasics.line_dbl_hr(lp.x2 - lp.x1) : LineAABasics.line_dbl_hr(lp.y2 - lp.y1), lp.vertical ? Math.Abs(lp.y2 - lp.y1) : Math.Abs(lp.x2 - lp.x1) + 1); m_di = new distance_interpolator4(lp.x1, lp.y1, lp.x2, lp.y2, sx, sy, ex, ey, lp.len, scale_x, lp.x1 & ~LineAABasics.line_subpixel_mask, lp.y1 & ~LineAABasics.line_subpixel_mask); m_ren=ren; m_x = (lp.x1 >> LineAABasics.line_subpixel_shift); m_y = (lp.y1 >> LineAABasics.line_subpixel_shift); m_old_x=(m_x); m_old_y=(m_y); m_count = ((lp.vertical ? Math.Abs((lp.y2 >> LineAABasics.line_subpixel_shift) - m_y) : Math.Abs((lp.x2 >> LineAABasics.line_subpixel_shift) - m_x))); m_width=(ren.subpixel_width()); //m_max_extent(m_width >> (LineAABasics.line_subpixel_shift - 2)); m_max_extent = ((m_width + LineAABasics.line_subpixel_scale) >> LineAABasics.line_subpixel_shift); m_start=(pattern_start + (m_max_extent + 2) * ren.pattern_width()); m_step=(0); dda2_line_interpolator li = new dda2_line_interpolator(0, lp.vertical ? (lp.dy << LineAABasics.line_subpixel_shift) : (lp.dx << LineAABasics.line_subpixel_shift), lp.len); uint i; int stop = m_width + LineAABasics.line_subpixel_scale * 2; for(i = 0; i < max_half_width; ++i) { m_dist_pos[i] = li.y(); if(m_dist_pos[i] >= stop) break; ++li; } m_dist_pos[i] = 0x7FFF0000; int dist1_start; int dist2_start; int npix = 1; if(lp.vertical) { do { --m_li; m_y -= lp.inc; m_x = (m_lp.x1 + m_li.y()) >> LineAABasics.line_subpixel_shift; if(lp.inc > 0) m_di.dec_y(m_x - m_old_x); else m_di.inc_y(m_x - m_old_x); m_old_x = m_x; dist1_start = dist2_start = m_di.dist_start(); int dx = 0; if(dist1_start < 0) ++npix; do { dist1_start += m_di.dy_start(); dist2_start -= m_di.dy_start(); if(dist1_start < 0) ++npix; if(dist2_start < 0) ++npix; ++dx; } while(m_dist_pos[dx] <= m_width); if(npix == 0) break; npix = 0; } while(--m_step >= -m_max_extent); } else { do { --m_li; m_x -= lp.inc; m_y = (m_lp.y1 + m_li.y()) >> LineAABasics.line_subpixel_shift; if(lp.inc > 0) m_di.dec_x(m_y - m_old_y); else m_di.inc_x(m_y - m_old_y); m_old_y = m_y; dist1_start = dist2_start = m_di.dist_start(); int dy = 0; if(dist1_start < 0) ++npix; do { dist1_start -= m_di.dx_start(); dist2_start += m_di.dx_start(); if(dist1_start < 0) ++npix; if(dist2_start < 0) ++npix; ++dy; } while(m_dist_pos[dy] <= m_width); if(npix == 0) break; npix = 0; } while(--m_step >= -m_max_extent); } m_li.adjust_forward(); m_step -= m_max_extent; */ }