idTech4.UI.idWindow.CalculateClientRectangle C# (CSharp) Method

CalculateClientRectangle() private method

private CalculateClientRectangle ( float offsetX, float offsetY ) : void
offsetX float
offsetY float
return void
		private void CalculateClientRectangle(float offsetX, float offsetY)
		{
			_drawRect = _rect.Data;

			if((_flags & WindowFlags.InvertRectangle) == WindowFlags.InvertRectangle)
			{
				_drawRect.X = _rect.X - _rect.Width;
				_drawRect.Y = _rect.Y - _rect.Height;
			}

			if(((_flags & (WindowFlags.HorizontalCenter | WindowFlags.VerticalCenter)) != 0) && (_parent != null))
			{
				// in this case treat xofs and yofs as absolute top left coords
				// and ignore the original positioning
				if((_flags & WindowFlags.HorizontalCenter) == WindowFlags.HorizontalCenter)
				{
					_drawRect.X = (_parent.Rectangle.Width - _rect.Width) / 2;
				}
				else
				{
					_drawRect.Y = (_parent.Rectangle.Height - _rect.Height) / 2;
				}
			}

			_drawRect.X += offsetX;
			_drawRect.Y += offsetY;

			_clientRect = _drawRect;

			if((_rect.Height > 0.0f) && (_rect.Width > 0.0f))
			{
				if(((_flags & WindowFlags.Border) == WindowFlags.Border) && (_borderSize != 0.0f))
				{
					_clientRect.X += _borderSize;
					_clientRect.Y += _borderSize;
					_clientRect.Width -= _borderSize;
					_clientRect.Height -= _borderSize;
				}

				_textRect = _clientRect;
				_textRect.X += 2;
				_textRect.Y += 2;
				_textRect.Width -= 2;
				_textRect.Height -= 2;

				_textRect.X += _textAlignX;
				_textRect.Y += _textAlignY;
			}

			_origin = new Vector2(_rect.X + (_rect.Width / 2), _rect.Y + (_rect.Height / 2));
		}