bool StepH()
        {
            int dist_start;
            int dist_end;
            int dist;
            int dy;
            int s1      = _aa_data.BaseStepH(ref _m_di);
            int Offset0 = LineInterpolatorAAData.MAX_HALF_WIDTH + 2;
            int Offset1 = Offset0;

            dist_start = _m_di.dist_start;
            dist_end   = _m_di.dist_end;
            int npix = 0;

            _aa_data.m_covers[Offset1] = 0;
            if (dist_end > 0)
            {
                if (dist_start <= 0)
                {
                    _aa_data.m_covers[Offset1] = (byte)_ren.GetCover(s1);
                }
                ++npix;
            }
            ++Offset1;
            dy = 1;
            while ((dist = _aa_data.m_dist[dy] - s1) <= _aa_data.m_width)
            {
                dist_start -= _m_di.DxStart;
                dist_end   -= _m_di.DxEnd;
                _aa_data.m_covers[Offset1] = 0;
                if (dist_end > 0 && dist_start <= 0)
                {
                    _aa_data.m_covers[Offset1] = (byte)_ren.GetCover(dist);
                    ++npix;
                }
                ++Offset1;
                ++dy;
            }

            dy         = 1;
            dist_start = _m_di.dist_start;
            dist_end   = _m_di.dist_end;
            while ((dist = _aa_data.m_dist[dy] + s1) <= _aa_data.m_width)
            {
                dist_start += _m_di.DxStart;
                dist_end   += _m_di.DxEnd;
                _aa_data.m_covers[--Offset0] = 0;
                if (dist_end > 0 && dist_start <= 0)
                {
                    _aa_data.m_covers[Offset0] = (byte)_ren.GetCover(dist);
                    ++npix;
                }
                ++dy;
            }
            _ren.BlendSolidVSpan(_aa_data.m_x,
                                 _aa_data.m_y - dy + 1,
                                 Offset1 - Offset0, _aa_data.m_covers,
                                 Offset0);
            return(npix != 0 && ++_aa_data.m_step < _aa_data.m_count);
        }
        bool StepH()
        {
            int dist;
            int dy;
            int s1      = _aa_data.BaseStepH(ref _m_di);
            int Offset0 = LineInterpolatorAAData.MAX_HALF_WIDTH + 2;
            int Offset1 = Offset0;

            _aa_data.m_covers[Offset1++] = (byte)_ren.GetCover(s1);
            dy = 1;
            while ((dist = _aa_data.m_dist[dy] - s1) <= _aa_data.m_width)
            {
                _aa_data.m_covers[Offset1++] = (byte)_ren.GetCover(dist);
                ++dy;
            }

            dy = 1;
            while ((dist = _aa_data.m_dist[dy] + s1) <= _aa_data.m_width)
            {
                _aa_data.m_covers[--Offset0] = (byte)_ren.GetCover(dist);
                ++dy;
            }
            _ren.BlendSolidVSpan(_aa_data.m_x,
                                 _aa_data.m_y - dy + 1,
                                 Offset1 - Offset0,
                                 _aa_data.m_covers, Offset0);
            return(++_aa_data.m_step < _aa_data.m_count);
        }
        //---------------------------------------------------------------------
        bool StepH()
        {
            int dist_start;
            int dist;
            int dy;
            int s1 = _aa_data.BaseStepH(ref _m_di);

            dist_start = _m_di.DistanceStart;
            int Offset0 = LineInterpolatorAAData.MAX_HALF_WIDTH + 2;
            int Offset1 = Offset0;

            _aa_data.m_covers[Offset1] = 0;
            if (dist_start <= 0)
            {
                _aa_data.m_covers[Offset1] = (byte)_ren.GetCover(s1);
            }
            ++Offset1;
            dy = 1;
            while ((dist = _aa_data.m_dist[dy] - s1) <= _aa_data.m_width)
            {
                dist_start -= _m_di.DxStart;
                _aa_data.m_covers[Offset1] = 0;
                if (dist_start <= 0)
                {
                    _aa_data.m_covers[Offset1] = (byte)_ren.GetCover(dist);
                }
                ++Offset1;
                ++dy;
            }

            dy         = 1;
            dist_start = _m_di.DistanceStart;
            while ((dist = _aa_data.m_dist[dy] + s1) <= _aa_data.m_width)
            {
                dist_start += _m_di.DxStart;
                _aa_data.m_covers[--Offset0] = 0;
                if (dist_start <= 0)
                {
                    _aa_data.m_covers[Offset0] = (byte)_ren.GetCover(dist);
                }
                ++dy;
            }

            int len = Offset1 - Offset0;

            _ren.BlendSolidVSpan(_aa_data.m_x,
                                 _aa_data.m_y - dy + 1,
                                 len, _aa_data.m_covers,
                                 Offset0);
            return(++_aa_data.m_step < _aa_data.m_count);
        }