//----------------------------------------------------------------
        public void Begin(double x, double y, uint len)
        {
            double tx;
            double ty;

            tx = x;
            ty = y;
            m_trans.Transform(ref tx, ref ty);
            int x1 = Basics.Round(tx * (double)ESubpixelScale.Scale);
            int y1 = Basics.Round(ty * (double)ESubpixelScale.Scale);

            tx = x + len;
            ty = y;
            m_trans.Transform(ref tx, ref ty);
            int x2 = Basics.Round(tx * (double)ESubpixelScale.Scale);
            int y2 = Basics.Round(ty * (double)ESubpixelScale.Scale);

            m_li_x = new Dda2LineInterpolator(x1, x2, (int)len);
            m_li_y = new Dda2LineInterpolator(y1, y2, (int)len);
        }
 //----------------------------------------------------------------
 public void ReSynchronize(double xe, double ye, uint len)
 {
     m_trans.Transform(ref xe, ref ye);
     m_li_x = new Dda2LineInterpolator(m_li_x.y(), Basics.Round(xe * (double)ESubpixelScale.Scale), (int)len);
     m_li_y = new Dda2LineInterpolator(m_li_y.y(), Basics.Round(ye * (double)ESubpixelScale.Scale), (int)len);
 }
        //----------------------------------------------------------------
        public void Begin(double x, double y, uint len)
        {
            double tx;
            double ty;

            tx = x;
            ty = y;
            m_trans.Transform(ref tx, ref ty);
            int x1 = Basics.Round(tx * (double)ESubpixelScale.Scale);
            int y1 = Basics.Round(ty * (double)ESubpixelScale.Scale);

            tx = x + len;
            ty = y;
            m_trans.Transform(ref tx, ref ty);
            int x2 = Basics.Round(tx * (double)ESubpixelScale.Scale);
            int y2 = Basics.Round(ty * (double)ESubpixelScale.Scale);

            m_li_x = new Dda2LineInterpolator(x1, x2, (int)len);
            m_li_y = new Dda2LineInterpolator(y1, y2, (int)len);
        }
 //----------------------------------------------------------------
 public void ReSynchronize(double xe, double ye, uint len)
 {
     m_trans.Transform(ref xe, ref ye);
     m_li_x = new Dda2LineInterpolator(m_li_x.y(), Basics.Round(xe * (double)ESubpixelScale.Scale), (int)len);
     m_li_y = new Dda2LineInterpolator(m_li_y.y(), Basics.Round(ye * (double)ESubpixelScale.Scale), (int)len);
 }