private Rectangle CalculateCarrotBounds(MonoInputBox textbox, Rectangle containerBounds) { Vector2 size = textbox.Font.MeasureString(textbox.Text); Vector2 origin = size * 0.5f; #pragma warning disable RCS1096 // Use bitwise operation instead of calling 'HasFlag'. if (textbox.TextAlignment.HasFlag(Alignment.Left)) { origin.X += (textbox.DrawingBounds.Width / 2) - (size.X / 2); } if (textbox.TextAlignment.HasFlag(Alignment.Right)) { origin.X -= (textbox.DrawingBounds.Width / 2) - (size.X / 2); } if (textbox.TextAlignment.HasFlag(Alignment.Top)) { origin.Y += (textbox.DrawingBounds.Height / 2) - (size.Y / 2); } if (textbox.TextAlignment.HasFlag(Alignment.Bottom)) { origin.Y -= (textbox.DrawingBounds.Height / 2) - (size.Y / 2); } string TextBeforeCarrot = textbox.Text.Substring(0, textbox.CarrotPosition); int XPos = (int)Math.Round(origin.X + textbox.DrawingBounds.X + textbox.Font.MeasureString(TextBeforeCarrot).X) + containerBounds.X; int YPos = (int)Math.Round(origin.Y + textbox.DrawingBounds.Y) + containerBounds.Y; if (textbox.TextAlignment == Alignment.Left) { XPos -= (int)Math.Round(origin.X); YPos += (int)Math.Round(origin.Y); } return(new Rectangle(XPos, YPos, textbox.CarrotWidth, textbox.CarrotHeight)); }
private Rectangle CalculateCarrotBounds(MonoInputBox textbox, Rectangle containerBounds) { Vector2 size = textbox.Font.MeasureString(textbox.Text); Vector2 origin = size * 0.5f; if ((textbox.TextAlignment & Alignment.Left) != 0) { origin.X += (textbox.DrawingBounds.Width / 2) - (size.X / 2); } if ((textbox.TextAlignment & Alignment.Right) != 0) { origin.X -= (textbox.DrawingBounds.Width / 2) - (size.X / 2); } if ((textbox.TextAlignment & Alignment.Top) != 0) { origin.Y += (textbox.DrawingBounds.Height / 2) - (size.Y / 2); } if ((textbox.TextAlignment & Alignment.Bottom) != 0) { origin.Y -= (textbox.DrawingBounds.Height / 2) - (size.Y / 2); } string TextBeforeCarrot = textbox.Text.Substring(0, textbox.CarrotPosition); int XPos = (int)Math.Round(origin.X + textbox.DrawingBounds.X + textbox.Font.MeasureString(TextBeforeCarrot).X) + containerBounds.X; int YPos = (int)Math.Round(origin.Y + textbox.DrawingBounds.Y) + containerBounds.Y; if (textbox.TextAlignment == Alignment.Left) { XPos -= (int)Math.Round(origin.X); YPos += (int)Math.Round(origin.Y); } return(new Rectangle(XPos, YPos, textbox.CarrotWidth, textbox.CarrotHeight)); }