示例#1
0
    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;
    }
示例#2
0
 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;
 }
示例#3
0
        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);
        }
示例#4
0
        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);
        }