package org.geogebra.common.kernel.geos;
import org.geogebra.common.kernel.Path;
import org.geogebra.common.kernel.kernelND.GeoCurveCartesianND;
import org.geogebra.common.kernel.kernelND.GeoPointND;
/**
* Common interface for polygons and polylines
*
* @author Zbynek & Michael
*/
public interface GeoPoly extends Path {
/**
* Returns true iff all vertices are labeled
*
* @return true iff all vertices are labeled
*/
public boolean isAllVertexLabelsSet();
/**
* Returns true iff number of vertices is not volatile
*
* @return true iff number of vertices is not volatile
*/
public boolean isVertexCountFixed();
/**
* Returns array of all vertices
*
* @return array of all vertices
*/
public GeoPointND[] getPoints();
/**
* Returns i-th vertex
*
* @param i
* index
* @return i-th vertex
*/
public GeoPoint getPoint(int i);
/**
* Converts polyline to cartesian curve
*
* @param outGeo
* curve to store result
*/
public void toGeoCurveCartesian(GeoCurveCartesianND outGeo);
/**
* @return boundary as Path
*/
public Path getBoundary();
/**
* @return array of all vertices
*/
public GeoPointND[] getPointsND();
/**
* @return number of vertices
*/
public int getNumPoints();
/**
* @param index
* index, starts with 0
* @return vertex with given index
*/
public GeoPointND getPointND(int index);
}