public void move_to(int x, int y)
 {
     if (m_Rasterizer.sorted())
     {
         reset();
     }
     m_VectorClipper.move_to(m_start_x = m_VectorClipper.downscale(x),
                             m_start_y = m_VectorClipper.downscale(y));
 }
        /*
         * //--------------------------------------------------------------------
         * public int apply_gamma(int cover)
         * {
         *      return (int)m_gamma[cover];
         * }
         */

        //--------------------------------------------------------------------
        private void move_to(int x, int y)
        {
            if (m_outline.sorted())
            {
                reset();
            }
            if (m_auto_close)
            {
                close_polygon();
            }
            m_VectorClipper.move_to(m_start_x = m_VectorClipper.downscale(x),
                                    m_start_y = m_VectorClipper.downscale(y));
            m_status = status.status_move_to;
        }
        public void add_path(IVertexSource vs, int pathID)
        {
            #if false
            if (m_outline.sorted())
            {
                reset();
            }

            foreach (VertexData vertexData in vs.Vertices())
            {
                if(!ShapePath.is_stop(vertexData.command))
                {
                    AddVertex(new VertexData(vertexData.command, new Vector2(vertexData.position.x, vertexData.position.y)));
                }
            }
            #else
            double x = 0;
            double y = 0;

            ShapePath.FlagsAndCommand PathAndFlags;
            vs.rewind(pathID);
            if (m_outline.sorted())
            {
                reset();
            }

            while (!ShapePath.is_stop(PathAndFlags = vs.vertex(out x, out y)))
            {
                AddVertex(new VertexData(PathAndFlags, new Vector2(x, y)));
            }
            #endif
        }