示例#1
0
 public Space(ILayout layout)
 {
     Layout      = layout;
     _viewports  = new List <SpaceView>();
     _rootRegion = new SpaceRegion {
         Rows = layout.Row, Columns = layout.Columns
     };
 }
示例#2
0
 private static SpaceRegion SplitRegion(SpaceRegion region, int viewRows, int viewColumns)
 {
     region.IsOccupied   = true;
     region.BottomRegion = new SpaceRegion {
         PosX = region.PosX, PosY = region.PosY + viewRows, Columns = region.Columns, Rows = region.Rows - viewRows
     };
     region.RightRegion = new SpaceRegion {
         PosX = region.PosX + viewColumns, PosY = region.PosY, Columns = region.Columns - viewColumns, Rows = viewRows
     };
     return(region);
 }
示例#3
0
        private static SpaceRegion FindRegion(SpaceRegion region, int viewRows, int viewColumns)
        {
            if (region == null)
            {
                return(null);
            }

            if (region.IsOccupied)
            {
                var nextNode = FindRegion(region.RightRegion, viewRows, viewColumns) ?? FindRegion(region.BottomRegion, viewRows, viewColumns);

                return(nextNode);
            }

            if (viewRows <= region.Rows && viewColumns <= region.Columns)
            {
                return(region);
            }

            return(null);
        }