void SetBoundOfFreeSpace(SpacePart space,
SpacePart centerspace,
bool suddenArr)
{
if (space == null)
{
return;
}
suddenArr = false;
var centerspacex = centerspace.Content;
int x_pos = centerspace.X;
int y_pos = centerspace.Y;
int dw = OwnerVisualElement.Width;
int dh = OwnerVisualElement.Height;
if (space.DesiredWidth < dw)
{
dw = space.DesiredWidth;
}
if (space.DesiredHeight < dh)
{
dh = space.DesiredHeight;
}
SetDockBound(space,
0,
0,
dw,
dh);
switch (space.SpaceName)
{
case SpaceName.Left:
{
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Outer:
{
x_pos -= space.Width;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
x_pos -= space.Width / 2;
} break;
}
space.SetLocation(x_pos, y_pos);
} break;
case SpaceName.Right:
{
x_pos = centerspace.Right;
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Inner:
{
x_pos -= space.Width;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
x_pos -= space.Width / 2;
} break;
}
} break;
case SpaceName.Top:
{
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Outer:
{
y_pos -= space.Height;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
y_pos -= space.Height / 2;
} break;
}
} break;
case SpaceName.Bottom:
{
y_pos = centerspace.Bottom;
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Inner:
{
y_pos -= space.Height;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
y_pos -= space.Height / 2;
} break;
}
} break;
case SpaceName.LeftTop:
{
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Outer:
{
x_pos -= space.Width;
y_pos -= space.Height;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
x_pos -= space.Width / 2;
y_pos -= space.Height / 2;
} break;
}
} break;
case SpaceName.LeftBottom:
{
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Outer:
{
x_pos -= space.Width;
y_pos = centerspace.Bottom;
} break;
case NamedSpaceContainerOverlapMode.Inner:
{
y_pos = centerspace.Bottom - space.Height;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
x_pos -= space.Width / 2;
y_pos = centerspace.Bottom - space.Height / 2;
} break;
}
} break;
case SpaceName.RightTop:
{
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Outer:
{
x_pos = centerspace.Right;
y_pos -= space.Height;
} break;
case NamedSpaceContainerOverlapMode.Inner:
{
x_pos = centerspace.Right - space.Width;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
//outter - half of grip
x_pos = centerspace.Right - (space.Width / 2);
y_pos -= space.Height - (space.Height / 2);
} break;
}
} break;
case SpaceName.RightBottom:
{
switch (space.OverlapMode)
{
case NamedSpaceContainerOverlapMode.Outer:
{
x_pos = centerspace.Right;
y_pos = centerspace.Bottom;
} break;
case NamedSpaceContainerOverlapMode.Inner:
{
x_pos = centerspace.Right - space.Width;
y_pos = centerspace.Bottom - space.Height;
} break;
case NamedSpaceContainerOverlapMode.Middle:
{
//outer - half of grid box
x_pos = centerspace.Right - (space.Width / 2);
y_pos = centerspace.Bottom - (space.Height / 2);
} break;
}
} break;
}
//VisualInvalidateCanvasArgs vinv = contentArrVisitor.GetVisualInvalidateCanvasArgs();
space.SetLocation(x_pos, y_pos);
}