public static ScreenItemInstance FindItem( this IScreenItem item, IScreenLoc Start, IScreenLoc FindZeroLoc, ScreenContent Content) { ScreenItemInstance findItem = null; if (item.ItemType == ShowItemType.Section) { var sectionItem = item as IScreenSection; findItem = sectionItem.FindItem(Start, FindZeroLoc, Content); } else { // adjust screen loc of the item by start pos of the section it is contained in. var adjRow = Start.RowNum - 1; var adjCol = Start.ColNum - 1; var loc = new OneScreenLoc( item.ScreenLoc.RowNum + adjRow, item.ScreenLoc.ColNum + adjCol); var zeroLoc = loc.ToZeroRowCol(); var itemAtomic = item as IScreenAtomic; var range = new ScreenLocRange(zeroLoc, itemAtomic.Length, Content.ScreenDim); if (range.Contains(FindZeroLoc) == true) findItem = new ScreenItemInstance(item, range.From); } return findItem; }
public static ScreenLocRange GetLocRange(this IScreenItem item, ScreenDim Dim) { ScreenLocRange range = null; if ( item is IScreenAtomic ) { var atomicItem = item as IScreenAtomic; range = new ScreenLocRange(item.ScreenLoc, atomicItem.Length, Dim); } else if (item is IScreenSection) { var sectionItem = item as IScreenSection; range = sectionItem.ToRepeatRange(); } return range; }
public static ContentItemBase GetContentItem(this ScreenContent Content, IScreenLoc loc) { ContentItemBase foundItem = null; foreach (var contentItem in Content.ContentItems()) { var itemLoc = contentItem.RowCol as IScreenLoc; var range = new ScreenLocRange( itemLoc, contentItem.GetItemLength(Content), Content.ScreenDim); if (range.Contains(loc)) { foundItem = contentItem; break; } } return(foundItem); }
public static ScreenAtomic FindFieldItem( this IEnumerable <ScreenAtomic> List, IScreenLoc ScreenLoc, int Length) { ScreenAtomic found = null; var dim = new ScreenDim(24, 80); var range = new ScreenLocRange(ScreenLoc, Length, dim); foreach (var item in List) { if (item.ItemType == ShowItemType.Field) { if (item.ScreenLocRange.CompletelyContains(range) == true) { found = item; break; } } } return(found); }
public static ScreenLocRange ToRange(this IScreenSection Section) { var range = new ScreenLocRange(Section.ScreenLoc); foreach (var item in Section.Items) { ScreenLocRange r1 = null; if (item is IScreenAtomic) { var atom = item as IScreenAtomic; r1 = atom.ToRange(); } else if (item is IScreenSection) { var sect = item as IScreenSection; r1 = sect.ToRange(); } var r2 = r1.ToAbsolute(Section.ScreenLoc); range = range.Union(r2); } return(range); }
public static ScreenLocRange ToRange(this IScreenAtomic item) { var range = new ScreenLocRange(item.ScreenLoc, item.EndLoc(), RangeForm.Linear); return(range); }