//---------------------------------------------------------------------
 public LineInterpolatorAA0(OutlineRenderer ren, LineParameters lp)
     : base(ren, lp)
 {
     m_di = new DistanceInterpolator1(lp.x1, lp.y1, lp.x2, lp.y2,
                                      lp.x1 & ~LineAA.SUBPIXEL_MARK, lp.y1 & ~LineAA.SUBPIXEL_MARK);
     m_li.adjust_forward();
 }
 //---------------------------------------------------------------------
 public LineInterpolatorAA0(OutlineRenderer ren, LineParameters lp)
 {
     this._ren = ren;
     _aa_data  = new LineInterpolatorAAData(ren, lp);
     _m_di     = new DistanceInterpolator1(lp.x1, lp.y1, lp.x2, lp.y2,
                                           lp.x1 & ~LineAA.SUBPIXEL_MARK, lp.y1 & ~LineAA.SUBPIXEL_MARK);
     _aa_data.m_li.adjust_forward();
 }
 public int BaseStepH(DistanceInterpolator1 di)
 {
     m_li.Next();
     m_x += m_lp.inc;
     m_y = (m_lp.y1 + m_li.Y) >> LineAA.SUBPIXEL_SHIFT;
     if (m_lp.inc > 0) di.IncX(m_y - m_old_y);
     else di.DecX(m_y - m_old_y);
     m_old_y = m_y;
     return di.Distance / m_len;
 }
 public int BaseStepH(DistanceInterpolator1 di)
 {
     m_li.Next();
     m_x += m_lp.inc;
     m_y  = (m_lp.y1 + m_li.Y) >> LineAA.SUBPIXEL_SHIFT;
     if (m_lp.inc > 0)
     {
         di.IncX(m_y - m_old_y);
     }
     else
     {
         di.DecX(m_y - m_old_y);
     }
     m_old_y = m_y;
     return(di.Distance / m_len);
 }
 //-------------------------------------------------------
 public int BaseStepV(DistanceInterpolator1 di)
 {
     m_li.Next();
     m_y += m_lp.inc;
     m_x  = (m_lp.x1 + m_li.Y) >> LineAA.SUBPIXEL_SHIFT;
     if (m_lp.inc > 0)
     {
         di.IncY(m_x - m_old_x);
     }
     else
     {
         di.DecY(m_x - m_old_x);
     }
     m_old_x = m_x;
     return(di.Distance / m_len);
 }
 //---------------------------------------------------------------------
 public LineInterpolatorAA0(OutlineRenderer ren, LineParameters lp)
     : base(ren, lp)
 {
     m_di = new DistanceInterpolator1(lp.x1, lp.y1, lp.x2, lp.y2,
          lp.x1 & ~LineAA.SUBPIXEL_MARK, lp.y1 & ~LineAA.SUBPIXEL_MARK);
     m_li.adjust_forward();
 }
 //-------------------------------------------------------
 public int BaseStepV(DistanceInterpolator1 di)
 {
     m_li.Next();
     m_y += m_lp.inc;
     m_x = (m_lp.x1 + m_li.Y) >> LineAA.SUBPIXEL_SHIFT;
     if (m_lp.inc > 0) di.IncY(m_x - m_old_x);
     else di.DecY(m_x - m_old_x);
     m_old_x = m_x;
     return di.Distance / m_len;
 }