public override uint Vertex(out double x, out double y) { x = 0; y = 0; uint PathAndFlags = (uint)Path.EPathCommands.LineTo; switch (m_idx) { case 0: if (m_vertex == 0) { PathAndFlags = (uint)Path.EPathCommands.MoveTo; } if (m_vertex >= 4) { PathAndFlags = (uint)Path.EPathCommands.Stop; } x = m_vx[m_vertex]; y = m_vy[m_vertex]; m_vertex++; break; case 1: if (m_vertex == 0) { PathAndFlags = (uint)Path.EPathCommands.MoveTo; } if (m_vertex >= 4) { PathAndFlags = (uint)Path.EPathCommands.Stop; } x = m_vx[m_vertex]; y = m_vy[m_vertex]; m_vertex++; break; case 2: PathAndFlags = m_text_poly.Vertex(out x, out y); //return (uint)Path.path_commands_e.path_cmd_stop; break; case 3: case 4: PathAndFlags = m_ellipse.Vertex(out x, out y); break; case 5: PathAndFlags = m_storage.Vertex(out x, out y); break; default: PathAndFlags = (uint)Path.EPathCommands.Stop; break; } if (!Path.IsStop(PathAndFlags)) { GetTransform().InverseTransform(ref x, ref y); } return(PathAndFlags); }