<< Click to Display Table of Contents >> NShape Reference

Arranges shapes on grid nodes.
public class GridLayouter : LayouterBase, ILayouter 
The grid layouter is used for finetuning a diagram, where the shapes are already approximately in place but must be lined up neatly.
The algorithm searches the largest horizontal and a vertical grid distances dh and dv, such that the sum of necessary displacements has a local minimum and all shapes can be placed on different grid nodes. It only operates on nonconnectors.
1.Find the grid origin and the largest horizontal grid distance, where the sum of necessary displacements is a local minimum.
2.Find the grid origin and the largest vertical grid distance, where the sum of necessary displacements is a local minimum.
3.Repeat the following steps until there are no more unassigned shapes:
4.Place all shapes on the nearest grid nodes. If more than one shapes want to occupy the same grid node, choose the nearest shape and leave the other shapes unassigned.
5.Calculate the distance sum of the unassigned shapes for the nearest horizontal and vertical lines.
6.Halve the grid distance for which the distance sum is smaller.
The first and second step are identical but for the direction, therefore only the algorithm for the first step is described:
1.Start with the left side of the bounding rectangle of the shapes to layout for the grid origin
2.Start with the width of the diagram for the grid distance.
3.Start with minus one tenth of the grid distance for the distance delta.
4.Calculate the distance sum and the average displacement.
5.Choose 90% of the initial grid distance as the new grid distance and calculate the distance sum.
6.If the new sum is less than the previous one, choose 80% of the initial grid distance.
7.When the new sum is greater than the previous one, choose a tenth of the delta for the new delta and switch the sign (direction).
8.Continue until the delta is 1.
Name 
Description 

CoarsenessX 
Coarseness of the layouting algorithm on X axis. 
CoarsenessY 
Coarseness of the layouting algorithm on Y axis. 
Description 
Description of the layouter. 
InvariantName 
The invariant name of the layouter. 
Name 
Description 

Constructor 
Constructs a new instance. 
ExecuteStep 
Executes one step of the layouting operation. 
Prepare 
Prepares for layouting. 
Unprepare 
Resets the layouter to the state before the preparation. 
Name 
Description 

ArrangeShapes 
Add all seleced shapes into the grid. 
CalcDistance 

CalcDistanceSum 

CalcEnergy 
Calculates the optimization value for a given spacing. 
FindNextLocalMinimum 

FindSpacing1 

FindSpacing2 
Calculates the best spacing for the shapes 
OptimizeOrigin 

ReduceLocalMinimum 
Searches a quotient, by which the spacing is divided to lead to a distance sum which is almost the distance sum of the current spacing divided by the quotient. The spacing must be larger than the average shape size. 
Namespace: Dataweb.NShape.Layouters
Assembly: Dataweb.NShape