using System.Collections.Generic; using GeoAPI.Extensions.Feature; using GeoAPI.Geometries; namespace SharpMap.Api.Editors { /// /// IFallOffPolicy implements the algorithm to move multiple coordinates of a geometry /// For example when a coordinate of a line string is moved neighbour coordinates are also moved. /// public interface IFallOffPolicy { FallOffType FallOffPolicy { get; } /// /// Moves the coordinates of a geometry while applying a falloff policy. In some cases the falloff policy /// should always be applied to the same 'constant' source geometry. This is the case during certain drag /// operations. /// /// /// The geometry that receives a modified sourceGeometry. /// /// The geometry that is used as source by the FallOffPolicy. /// /// The coordinates of the geometry parameter that are represented as special IGeometry (IPoint) objects /// to give the user a visual feedback. There is a 1 to 1 relation between the coordinates of geometry /// and the Trackers parameter. /// /// The selected Trackers. In most cases handleIndices has length 1 and handleIndices[0] == mouseIndex /// A special case is when multiple Trackers are selected (eg by using the CONTROL key). /// /// The index of the tracker at which the mouse is positioned. /// /// void Move(IGeometry targetGeometry, IGeometry sourceGeometry, IList trackers, IList handleIndices, int mouseIndex, double deltaX, double deltaY); void Move(IFeature targetFeature, IGeometry sourceGeometry, IList trackers, IList handleIndices, int mouseIndex, double deltaX, double deltaY); void Move(IGeometry geometry, IList trackers, IList handleIndices, int mouseIndex, double deltaX, double deltaY); void Move(IGeometry targetGeometry, IGeometry sourceGeometry, int handleIndex, double deltaX, double deltaY); void Move(IFeature targetFeature, IGeometry sourceGeometry, int handleIndex, double deltaX, double deltaY); void Move(IGeometry geometry, int handleIndex, double deltaX, double deltaY); void Reset(); } }