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); }
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); }