package org.geogebra.common.plugin;
/**
* name MUST be in ggbtrans/properties
*/
public enum GeoClass {
/** ANGLE */
ANGLE("Angle", "Angle", 80, 130, false),
/** AXIS */
AXIS("Axis", 10, false),
/** BOOLEAN */
BOOLEAN("Boolean", 20, false),
/** BUTTON */
BUTTON("Button", 155, false),
/** TEXTFIELD */
TEXTFIELD("TextField", 155, false),
/** CONIC */
CONIC("Conic", 70, false),
/** CONICPART */
CONICPART("ConicPart", 70, false),
/** FUNCTION */
FUNCTION("Function", 90, false),
/** INTERVAL */
INTERVAL("Interval", 90, false),
/** IMAGE */
IMAGE("Image", 20, false),
/** LINE */
LINE("Line", 100, false),
/** LIST */
LIST("List", 40, false),
/** LOCUS */
LOCUS("Locus", 130, false),
/** NUMERIC */
NUMERIC("Numeric", "Numeric", 80, 130, false),
/** POINT */
POINT("Point", 140, false),
/** POLYGON */
POLYGON("Polygon", 50, false),
/** RAY */
RAY("Ray", 110, false),
/** SEGMENT */
SEGMENT("Segment", 110, false),
/** TEXT */
TEXT("Text", 150, false),
/** VECTOR */
VECTOR("Vector", 120, false),
/** CURVE_CARTESIAN */
CURVE_CARTESIAN("CurveCartesian", 90, false),
/** CURVE_POLAR */
CURVE_POLAR("CurvePolar", 90, false),
/** IMPLICIT_POLY */
IMPLICIT_POLY("ImplicitPoly", 60, false),
/** FUNCTION_NVAR */
FUNCTION_NVAR("FunctionNVar", 102, false),
/** POLYLINE */
POLYLINE("PolyLine", 51, false),
/** PENSTROKE */
PENSTROKE("PenStroke", 15, false),
/** SPLINE */
SPLINE("CurveCartesian", 90, false),
/** TURTLE */
TURTLE("Turtle", 140, false),
/** CAS_CELL */
CAS_CELL("CasCell", 80, false),
/* 3Dg geos */
/** ANGLE */
ANGLE3D("Angle", "Angle3D", 80, true),
/** POINT */
POINT3D("Point", "Point3D", 140, true),
/** VECTOR */
VECTOR3D("Vector", "Vector3D", 120, true),
/** SEGMENT */
SEGMENT3D("Segment", "Segment3D", 110, true),
/** LINE */
LINE3D("Line", "Line3D", 100, true),
/** RAY */
RAY3D("Ray", "Ray3D", 110, true),
/** CONIC */
CONIC3D("Conic", "Conic3D", 70, true),
/** CONICSECTION */
CONICSECTION("ConicPart", "Conic3DPart", 70, true),
/** AXIS */
AXIS3D("Axis", "Axis3D", 10, true),
/** CURVE_CARTESIAN */
CURVE_CARTESIAN3D("CurveCartesian", "CurveCartesian3D", 90, true),
/** POLYGON */
POLYGON3D("Polygon", "Polygon3D", 50, true),
/** PLANE */
PLANE3D("Plane", "Plane3D", 45, true),
/** QUADRIC */
QUADRIC("Quadric", 46, true),
/** QUADRIC_PART */
QUADRIC_PART("Quadric", "QuadricPart", 46, true),
/** QUADRIC_LIMITED */
QUADRIC_LIMITED("Quadric", "QuadricLimited", 47, true),
/** POLYLINE */
POLYLINE3D("PolyLine", "PolyLine3D", 51, true),
/** POLYHEDRON */
POLYHEDRON("Polyhedron", 50, true),
/** NET */
NET("Net", 50, true),
/** SURFACECARTESIAN */
SURFACECARTESIAN3D("Surface", "SurfaceCartesian3D", 160, true),
/** IMPLICIT_SURFACE_ */
IMPLICIT_SURFACE_3D("ImplicitSurface", "ImplicitSurface3D", 160, true),
/** TRIANGULATED_SURFACE_ */
TRIANGULATED_SURFACE_3D("TriangulatedSurface", "TriangulatedSurface3D", 160, true),
/** CLIPPINGCUBE */
CLIPPINGCUBE3D("ClippingCube3D", 160, true),
/** SPACE */
SPACE("Space", 160, true),
/** DEFAULT */
DEFAULT("Default", 160, false);
/**
* name MUST be in ggbtrans/properties
*/
final public String name;
/** in XML we need 3d extension */
final public String xmlName;
/** for 3D elements */
final public boolean is3D;
final private int priority;
final private int independentPriority;
GeoClass(String name, int priority, boolean is3D) {
this(name, name, priority, priority, is3D);
}
GeoClass(String name, String xmlName, int priority, int independentPriority,
boolean is3D) {
this.name = name;
this.priority = priority;
this.independentPriority = independentPriority;
this.xmlName = xmlName;
this.is3D = is3D;
}
GeoClass(String name, String xmlName, int priority, boolean is3D) {
this(name, xmlName, priority, priority, is3D);
}
/**
* @param independent
* whether element is independent
* @return drawing priority; the higher the easier to hit the object
*/
public int getPriority(boolean independent) {
return independent ? independentPriority : priority;
}
}