package org.geogebra.common.kernel.geos;
import org.geogebra.common.kernel.geos.GeoAngle.AngleStyle;
import org.geogebra.common.kernel.kernelND.GeoElementND;
/**
* @author michael
*
* Allow GeoList to have angle properties so that eg can change angles
* in a list to be all reflex
*
*/
public interface AngleProperties extends GeoElementND {
/**
* Returns angle style. See GeoAngle.ANGLE_*
*
* @return anticlockwise, reflex, not reflex or unbounded
*/
public AngleStyle getAngleStyle();
/**
*
* @return true if has a "super" orientation (e.g. in 3D, from a specific
* oriented plane)
*/
public boolean hasOrientation();
/**
* Changes angle style and recomputes the value from raw. See
* GeoAngle.ANGLE_*
*
* @param angleStyle
* clockwise, anticlockwise, (force) reflex or (force) not reflex
*/
public void setAngleStyle(AngleStyle angleStyle);
/**
* @param allowReflex
* whether reflex angle is allowed
*/
public void setAllowReflexAngle(boolean allowReflex);
/**
* @param emRightAngle
* whether to use special EV drawing when this angle is right
*/
public void setEmphasizeRightAngle(boolean emRightAngle);
/**
* @param forceReflex
* whether angle is forced to (180,360)
*/
public void setForceReflexAngle(boolean forceReflex);
/**
* @param arcSize
* arc size
*/
public void setArcSize(int arcSize);
/**
* @return arc radius
*/
public int getArcSize();
@Override
public boolean isDrawable();
/**
* @return decoration
*/
public int getDecorationType();
/**
* @param type
* decoration
*/
public void setDecorationType(int type);
/**
* @return whether right angle is drawn differently
*/
public boolean isEmphasizeRightAngle();
/**
* @param angleStyle
* see AngleStyle enum in GeoAngle.
*/
public void setAngleStyle(int angleStyle);
}