private void RefreshSpriteDimensions()
{
bool usesMulti = mSprites[(int)NineSliceSections.TopLeft].Texture != mSprites[(int)NineSliceSections.Top].Texture;
float desiredMiddleWidth = 0;
float desiredMiddleHeight = 0;
if (usesMulti == false)
{
float fullWidth = mFullOutsideWidth * 2 + mFullInsideWidth;
if (Width >= fullWidth)
{
desiredMiddleWidth = Width - mSprites[(int)NineSliceSections.TopLeft].EffectiveWidth - mSprites[(int)NineSliceSections.TopRight].EffectiveWidth;
mSprites[(int)NineSliceSections.TopLeft].Width = mSprites[(int)NineSliceSections.TopRight].Width = mSprites[(int)NineSliceSections.Left].Width = mSprites[(int)NineSliceSections.Right].Width =
mSprites[(int)NineSliceSections.BottomLeft].Width = mSprites[(int)NineSliceSections.BottomRight].Width = mFullOutsideWidth;
}
else if (Width >= mFullOutsideWidth * 2)
{
desiredMiddleWidth = this.Width - mFullOutsideWidth * 2;
mSprites[(int)NineSliceSections.TopLeft].Width = mSprites[(int)NineSliceSections.TopRight].Width = mSprites[(int)NineSliceSections.Left].Width = mSprites[(int)NineSliceSections.Right].Width =
mSprites[(int)NineSliceSections.BottomLeft].Width = mSprites[(int)NineSliceSections.BottomRight].Width = mFullOutsideWidth;
}
else
{
desiredMiddleWidth = 0;
mSprites[(int)NineSliceSections.TopLeft].Width = mSprites[(int)NineSliceSections.TopRight].Width = mSprites[(int)NineSliceSections.Left].Width = mSprites[(int)NineSliceSections.Right].Width =
mSprites[(int)NineSliceSections.BottomLeft].Width = mSprites[(int)NineSliceSections.BottomRight].Width = Width / 2.0f;
}
float fullHeight = mFullOutsideHeight * 2 + mFullInsideHeight;
if (Height >= fullHeight)
{
desiredMiddleHeight = this.Height - mSprites[(int)NineSliceSections.TopLeft].EffectiveHeight - mSprites[(int)NineSliceSections.TopRight].EffectiveHeight;
}
else if (Height >= mFullOutsideHeight * 2)
{
desiredMiddleHeight = this.Height - mFullOutsideHeight * 2;
}
else
{
desiredMiddleHeight = 0;
}
}
else
{
desiredMiddleWidth = Width - mSprites[(int)NineSliceSections.TopLeft].EffectiveWidth - mSprites[(int)NineSliceSections.TopRight].EffectiveWidth;
desiredMiddleHeight = Height - mSprites[(int)NineSliceSections.TopLeft].EffectiveHeight - this.mSprites[(int)NineSliceSections.BottomLeft].EffectiveHeight;
}
mSprites[(int)NineSliceSections.Top].Width = desiredMiddleWidth;
mSprites[(int)NineSliceSections.Center].Width = desiredMiddleWidth;
mSprites[(int)NineSliceSections.Bottom].Width = desiredMiddleWidth;
mSprites[(int)NineSliceSections.Left].Height = desiredMiddleHeight;
mSprites[(int)NineSliceSections.Center].Height = desiredMiddleHeight;
mSprites[(int)NineSliceSections.Right].Height = desiredMiddleHeight;
}