using System.Collections.Generic;
public static void Main()
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(Get2By2Grid()));
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(ShrinkToAccountForBorder(Get2By2Grid())));
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(Get3By2Grid()));
Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(ShrinkToAccountForBorder(Get3By2Grid())));
public static Layout Get2By2Grid()
Regions=new List<RectPlace>{
new RectPlace{width=0.5, height=0.5, x=0,y=0},
new RectPlace{width=0.5, height=0.5, x=0.5,y=0},
new RectPlace{width=0.5, height=0.5, x=0,y=.5},
new RectPlace{width=0.5, height=0.5, x=.5,y=0.5}
public static Layout Get3By2Grid()
BorderSizePercent=0.08000,
Regions=new List<RectPlace>{
new RectPlace{width=0.3333, height=0.5, x=0, y=0},
new RectPlace{width=0.3333, height=0.5, x=0.3333, y=0},
new RectPlace{width=0.3333, height=0.5, x=0.6667, y=0},
new RectPlace{width=0.3333, height=0.5, x=0, y=0.5},
new RectPlace{width=0.3333, height=0.5, x=0.3333, y=0.5},
new RectPlace{width=0.3333, height=0.5, x=0.6667, y=0.5}
public static Layout ShrinkToAccountForBorder(Layout toAdjust)
if (toAdjust.Border) return toAdjust;
double shrinkBorderX=toAdjust.BorderSizePercent;
double shrinkBorderY=toAdjust.BorderSizePercent;
if(toAdjust.SizeHeight<toAdjust.SizeWidth)
double scale=(double)toAdjust.SizeHeight/(double)toAdjust.SizeWidth;
shrinkBorderY=shrinkBorderY*scale;
double scale=(double)toAdjust.SizeWidth/(double)toAdjust.SizeHeight;
shrinkBorderX=shrinkBorderX*scale;
Console.WriteLine("Width Border Percent :" + (shrinkBorderX*100).ToString());
Console.WriteLine("Height Border Percent:" +(shrinkBorderY*100).ToString());
for(int i=0;i<toAdjust.Regions.Count;i++)
var thisRegion=toAdjust.Regions[i];
thisRegion.height-=shrinkBorderY;
thisRegion.y+=(shrinkBorderY/2);
thisRegion.width-=shrinkBorderX;
thisRegion.x+=(shrinkBorderX/2);
public double width{get;set;}
public double height{get;set;}
public double x{get;set;}
public double y{get;set;}
public List<RectPlace> Regions {get;set;}
public int SizeWidth {get;set;}
public int SizeHeight {get;set;}
public bool Border {get;set;}
public double BorderSizePercent {get;set;}