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));
        }
Exemplo n.º 2
0
        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));
        }