public override VertexStore MakeVxs()
        {
            var vxs = new VertexStore();

            this.RewindZero();
            //this polygon control has  2 subcontrol
            //stroke and ellipse

            VertexStore s_vxs = this.m_stroke.MakeVxs(this.m_vs.MakeVxs());
            int         j = s_vxs.Count;
            double      x, y;

            for (int i = 0; i < j; ++i)
            {
                var cmd = s_vxs.GetVertex(i, out x, out y);
                if (cmd == VertexCmd.Stop)
                {
                    break;
                }
                else
                {
                    vxs.AddVertex(x, y, cmd);
                }
            }

            //------------------------------------------------------------
            //draw each polygon point
            double r = m_point_radius;

            if (m_node >= 0 && m_node == (int)(m_status))
            {
                r *= 1.2;
            }

            int n_count = m_polygon.Length / 2;

            for (int m = 0; m < n_count; ++m)
            {
                m_ellipse.Reset(GetXN(m), GetYN(m), r, r, 32);
                var ellipseVxs = m_ellipse.MakeVxs();
                j = ellipseVxs.Count;
                for (int i = 0; i < j; ++i)
                {
                    var cmd = ellipseVxs.GetVertex(i, out x, out y);
                    if (cmd == VertexCmd.Stop)
                    {
                        break;
                    }
                    vxs.AddVertex(x, y, cmd);
                }
                m_status++;
            }
            //------------------------------------------------------------

            //close with stop
            vxs.AddVertex(0, 0, VertexCmd.Stop);
            return(vxs);
        }
Example #2
0
        public override VertexStore MakeVxs(VertexStore vxs)
        {
            this.RewindZero();
            //this polygon control has  2 subcontrol
            //stroke and ellipse

            VectorToolBox.GetFreeVxs(out var v1, out var v2);
            this.m_stroke.MakeVxs(this.m_vs.MakeVxs(v1), v2);
            int    j = v2.Count;
            double x, y;

            for (int i = 0; i < j; ++i)
            {
                var cmd = v2.GetVertex(i, out x, out y);
                if (cmd == VertexCmd.NoMore)
                {
                    break;
                }
                else
                {
                    vxs.AddVertex(x, y, cmd);
                }
            }

            VectorToolBox.ReleaseVxs(ref v1, ref v2);
            //------------------------------------------------------------
            //draw each polygon point
            double r = m_point_radius;

            if (m_node >= 0 && m_node == (int)(m_status))
            {
                r *= 1.2;
            }

            int n_count = m_polygon.Length / 2;

            VectorToolBox.GetFreeVxs(out var v3);
            for (int m = 0; m < n_count; ++m)
            {
                m_ellipse.Reset(GetXN(m), GetYN(m), r, r, 32);

                var ellipseVxs = m_ellipse.MakeVxs(v3);
                j = ellipseVxs.Count;
                for (int i = 0; i < j; ++i)
                {
                    var cmd = ellipseVxs.GetVertex(i, out x, out y);
                    if (cmd == VertexCmd.NoMore)
                    {
                        break;
                    }
                    vxs.AddVertex(x, y, cmd);
                }
                m_status++;

                //reuse
                v3.Clear();
            }
            VectorToolBox.ReleaseVxs(ref v3);
            //------------------------------------------------------------

            //close with stop
            vxs.AddVertex(0, 0, VertexCmd.NoMore);
            return(vxs);
        }