Added text aligment to button
Cloning LeftMargin and RightMargin Refactored the calculations for Text position in ButtonWidget
This commit is contained in:
@@ -25,6 +25,9 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
public bool DisableKeySound = false;
|
public bool DisableKeySound = false;
|
||||||
|
|
||||||
[Translate] public string Text = "";
|
[Translate] public string Text = "";
|
||||||
|
public TextAlign Align = TextAlign.Center;
|
||||||
|
public int LeftMargin = 5;
|
||||||
|
public int RightMargin = 5;
|
||||||
public string Background = "button";
|
public string Background = "button";
|
||||||
public bool Depressed = false;
|
public bool Depressed = false;
|
||||||
public int VisualHeight = ChromeMetrics.Get<int>("ButtonDepth");
|
public int VisualHeight = ChromeMetrics.Get<int>("ButtonDepth");
|
||||||
@@ -87,6 +90,9 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
ModRules = other.ModRules;
|
ModRules = other.ModRules;
|
||||||
|
|
||||||
Text = other.Text;
|
Text = other.Text;
|
||||||
|
Align = other.Align;
|
||||||
|
LeftMargin = other.LeftMargin;
|
||||||
|
RightMargin = other.RightMargin;
|
||||||
Font = other.Font;
|
Font = other.Font;
|
||||||
BaseLine = other.BaseLine;
|
BaseLine = other.BaseLine;
|
||||||
TextColor = other.TextColor;
|
TextColor = other.TextColor;
|
||||||
@@ -229,9 +235,10 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
var colordisabled = GetColorDisabled();
|
var colordisabled = GetColorDisabled();
|
||||||
var bgDark = GetContrastColorDark();
|
var bgDark = GetContrastColorDark();
|
||||||
var bgLight = GetContrastColorLight();
|
var bgLight = GetContrastColorLight();
|
||||||
var s = font.Measure(text);
|
var textSize = font.Measure(text);
|
||||||
var stateOffset = Depressed ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);
|
var stateOffset = Depressed ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);
|
||||||
var position = new int2(rb.X + (UsableWidth - s.X) / 2, rb.Y - BaseLine + (Bounds.Height - s.Y) / 2);
|
|
||||||
|
var position = GetTextPosition(textSize, rb);
|
||||||
|
|
||||||
DrawBackground(rb, disabled, Depressed, Ui.MouseOverWidget == this, highlighted);
|
DrawBackground(rb, disabled, Depressed, Ui.MouseOverWidget == this, highlighted);
|
||||||
if (Contrast)
|
if (Contrast)
|
||||||
@@ -244,6 +251,23 @@ namespace OpenRA.Mods.Common.Widgets
|
|||||||
disabled ? colordisabled : color);
|
disabled ? colordisabled : color);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int2 GetTextPosition(int2 textSize, Rectangle rb)
|
||||||
|
{
|
||||||
|
var y = rb.Y - BaseLine + (Bounds.Height - textSize.Y) / 2;
|
||||||
|
|
||||||
|
switch (Align)
|
||||||
|
{
|
||||||
|
case TextAlign.Left:
|
||||||
|
return new int2(rb.X + LeftMargin, y);
|
||||||
|
case TextAlign.Center:
|
||||||
|
return new int2(rb.X + (UsableWidth - textSize.X) / 2, y);
|
||||||
|
case TextAlign.Right:
|
||||||
|
return new int2(rb.X + UsableWidth - textSize.X - RightMargin, y);
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException("Align");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override Widget Clone() { return new ButtonWidget(this); }
|
public override Widget Clone() { return new ButtonWidget(this); }
|
||||||
public virtual int UsableWidth { get { return Bounds.Width; } }
|
public virtual int UsableWidth { get { return Bounds.Width; } }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user