using System.Collections.Generic;
using Microsoft.Msagl.Core.Layout;
namespace Microsoft.Msagl.Layout.Incremental {
///
/// A constraint must provide a method to find a feasible starting configuration,
/// and a method to satisfy the constraint by moving the affected nodes as little as possible
///
public interface IConstraint {
///
/// Satisfy the constraint by moving as little as possible.
/// Amount of displacement
///
double Project();
///
/// Get the list of nodes involved in the constraint
///
IEnumerable Nodes { get; }
///
/// Constraints are applied according to a schedule.
/// Level 0 constraints will be applied at all stages,
/// Level 1 after a certain number of Level 0 has completed
/// Level 2 after level 1 and so on.
///
///
int Level { get; }
}
}