/// <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> /// Compare two horizontal elements of placement /// </summary> /// <param name="x">placement item 1</param> /// <param name="y">placement item 2</param> /// <returns>1 or -1</returns> public static int Compare(HorizontalPlacementItem x, HorizontalPlacementItem y) { return(x.Item.CompareWidth(y.Item)); }
/// <summary> /// Add a new horizontal item into this vertical item /// </summary> /// <param name="h">horizontal item</param> public void Add(HorizontalPlacementItem h) { this.list.AddLast(h); }