/* GeoGebra - Dynamic Mathematics for Everyone http://www.geogebra.org This file is part of GeoGebra. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. */ package org.geogebra.common.kernel.geos; import org.geogebra.common.kernel.Path; import org.geogebra.common.kernel.Transform; /** * Represents geos with endpoints (segment, ray, arc, etc.) * */ public interface LimitedPath extends Path { /** * Returns whether intersection points with this path are allowed that lie * on the extension of this path. * * @return true iff outlying intersection should be allowed */ public boolean allowOutlyingIntersections(); /** * Sets whether intersection points with this path are allowed that lie on * the extension of this path. * * @param flag * true iff outlying intersection should be allowed */ public void setAllowOutlyingIntersections(boolean flag); /** * Returns true iff the intersection point P lies on this limited path. * * @param P * intersection point * @param eps * epsilon precision for testing * @return true iff the intersection point P lies on this limited path. * */ public boolean isIntersectionPointIncident(GeoPoint P, double eps); /** * Returns whether a geometric transform of this path should yield an object * of the same kind (i.e. segment becomes segment). * * @return true iff the geo keeps type on transform */ public boolean keepsTypeOnGeometricTransform(); /** * Sets whether a geometric transform of this path should yield an object of * the same kind (i.e. segment becomes segment). * * @param flag * true when a geometric transform of this path should yield an * object of the same kind */ public void setKeepTypeOnGeometricTransform(boolean flag); /** * Creates a new object using the geometrical transform of the given type. * * @param t * transform * @param label * label for new object * @return array of elements generated by transform */ public GeoElement[] createTransformedObject(Transform t, String label); /** * Returns true iff all endpoints are labeled * * @return true iff all endpoints are labeled */ public boolean isAllEndpointsLabelsSet(); }