/// <summary> /// Insert a new horizontal placement from a linked list /// based on the comparison of the horizontal position /// </summary> /// <param name="list">list d'éléments horizontaux successifs</param> /// <param name="input">élément horizontal</param> public static void Compare(LinkedList <HorizontalPlacementItem> list, HorizontalPlacementItem input) { LinkedListNode <HorizontalPlacementItem> positiveCurrent = list.First; LinkedListNode <HorizontalPlacementItem> negativeCurrent = list.Last; while (positiveCurrent != null && positiveCurrent != negativeCurrent) { if (HorizontalComparer.Compare(positiveCurrent.Value, input) == 1) { list.AddAfter(positiveCurrent, input); break; } else if (HorizontalComparer.Compare(negativeCurrent.Value, input) == -1) { list.AddBefore(negativeCurrent, input); break; } positiveCurrent = positiveCurrent.Next; negativeCurrent = negativeCurrent.Previous; } if (positiveCurrent == null || positiveCurrent == negativeCurrent) { list.AddLast(input); } }
/// <summary> /// Insert a placement item into the right horizontal placement item /// </summary> /// <param name="list">vertical placement</param> /// <param name="p">element to place</param> public static void Compare(LinkedList <VerticalPlacementItem> list, PlacementItem p) { VerticalPlacementItem input = new VerticalPlacementItem(); input.Add(new HorizontalPlacementItem(p)); LinkedListNode <VerticalPlacementItem> positiveCurrent = list.First; LinkedListNode <VerticalPlacementItem> negativeCurrent = list.Last; while (positiveCurrent != null && positiveCurrent != negativeCurrent) { if (VerticalComparer.Compare(positiveCurrent.Value, input) == 0) { HorizontalComparer.Compare(positiveCurrent.Value.Items, input.Items.First.Value); break; } else if (VerticalComparer.Compare(negativeCurrent.Value, input) == 0) { HorizontalComparer.Compare(negativeCurrent.Value.Items, input.Items.First.Value); break; } else if (VerticalComparer.Compare(positiveCurrent.Value, input) == 1) { list.AddAfter(positiveCurrent, input); break; } else if (VerticalComparer.Compare(negativeCurrent.Value, input) == -1) { list.AddBefore(negativeCurrent, input); break; } positiveCurrent = positiveCurrent.Next; negativeCurrent = negativeCurrent.Previous; } if (positiveCurrent == null || positiveCurrent == negativeCurrent) { list.AddLast(input); } }