Add a way to change the IconButton icon colour

This commit is contained in:
smoogipoo
2017-10-12 18:17:23 +09:00
parent f08f7a4ecb
commit a5817e6e75
2 changed files with 27 additions and 6 deletions

View File

@ -27,13 +27,28 @@ namespace osu.Game.Graphics.UserInterface
set { flashColour = value; } set { flashColour = value; }
} }
private Color4? iconColour;
/// <summary> /// <summary>
/// The icon colour. This does not affect <see cref="IconButton.Colour"/>. /// The icon colour. This does not affect <see cref="IconButton.Colour"/>.
/// </summary> /// </summary>
public Color4 IconColour public Color4 IconColour
{ {
get { return icon.Colour; } get { return iconColour ?? Color4.White; }
set { icon.Colour = value; } set
{
iconColour = value;
icon.Colour = value;
}
}
private Color4? iconHoverColour;
/// <summary>
/// The icon colour while the <see cref="IconButton"/> is hovered.
/// </summary>
public Color4 IconHoverColour
{
get { return iconHoverColour ?? IconColour; }
set { iconHoverColour = value; }
} }
private Color4? hoverColour; private Color4? hoverColour;
@ -133,12 +148,14 @@ namespace osu.Game.Graphics.UserInterface
protected override bool OnHover(InputState state) protected override bool OnHover(InputState state)
{ {
hover.FadeIn(500, Easing.OutQuint); hover.FadeIn(500, Easing.OutQuint);
icon.FadeColour(IconHoverColour, 500, Easing.OutQuint);
return base.OnHover(state); return base.OnHover(state);
} }
protected override void OnHoverLost(InputState state) protected override void OnHoverLost(InputState state)
{ {
hover.FadeOut(500, Easing.OutQuint); hover.FadeOut(500, Easing.OutQuint);
icon.FadeColour(IconColour, 500, Easing.OutQuint);
base.OnHoverLost(state); base.OnHoverLost(state);
} }

View File

@ -25,14 +25,18 @@ namespace osu.Game.Tests.Visual
Children = new[] Children = new[]
{ {
new NamedIconButton("No change", new IconButton()), new NamedIconButton("No change", new IconButton()),
new NamedIconButton("Green colours", new IconButton new NamedIconButton("Background colours", new IconButton
{ {
IconColour = Color4.LightGreen,
FlashColour = Color4.DarkGreen, FlashColour = Color4.DarkGreen,
HoverColour = Color4.Green HoverColour = Color4.Green,
}), }),
new NamedIconButton("Full-width", new IconButton { ButtonSize = new Vector2(200, 30) }), new NamedIconButton("Full-width", new IconButton { ButtonSize = new Vector2(200, 30) }),
new NamedIconButton("Unchanging size", new IconButton(), false) new NamedIconButton("Unchanging size", new IconButton(), false),
new NamedIconButton("Icon colours", new IconButton
{
IconColour = Color4.Green,
IconHoverColour = Color4.Red
})
} }
}; };
} }