RenderingLibrary.Graphics.NineSlice.RefreshSpriteDimensions C# (CSharp) Method

RefreshSpriteDimensions() private method

private RefreshSpriteDimensions ( ) : void
return void
        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;
        }