|
@@ -104,7 +104,7 @@ namespace Godot
|
|
|
/// <summary>
|
|
|
/// The HSV hue of this color, on the range 0 to 1.
|
|
|
/// </summary>
|
|
|
- /// <value>Getting is a long process, refer to the source code for details. Setting uses <see cref="FromHsv"/>.</value>
|
|
|
+ /// <value>Getting is a long process, refer to the source code for details. Setting uses <see cref="FromHSV"/>.</value>
|
|
|
public float h
|
|
|
{
|
|
|
get
|
|
@@ -145,14 +145,14 @@ namespace Godot
|
|
|
}
|
|
|
set
|
|
|
{
|
|
|
- this = FromHsv(value, s, v, a);
|
|
|
+ this = FromHSV(value, s, v, a);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// The HSV saturation of this color, on the range 0 to 1.
|
|
|
/// </summary>
|
|
|
- /// <value>Getting is equivalent to the ratio between the min and max RGB value. Setting uses <see cref="FromHsv"/>.</value>
|
|
|
+ /// <value>Getting is equivalent to the ratio between the min and max RGB value. Setting uses <see cref="FromHSV"/>.</value>
|
|
|
public float s
|
|
|
{
|
|
|
get
|
|
@@ -166,14 +166,14 @@ namespace Godot
|
|
|
}
|
|
|
set
|
|
|
{
|
|
|
- this = FromHsv(h, value, v, a);
|
|
|
+ this = FromHSV(h, value, v, a);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
|
/// The HSV value (brightness) of this color, on the range 0 to 1.
|
|
|
/// </summary>
|
|
|
- /// <value>Getting is equivalent to using `Max()` on the RGB components. Setting uses <see cref="FromHsv"/>.</value>
|
|
|
+ /// <value>Getting is equivalent to using `Max()` on the RGB components. Setting uses <see cref="FromHSV"/>.</value>
|
|
|
public float v
|
|
|
{
|
|
|
get
|
|
@@ -182,7 +182,7 @@ namespace Godot
|
|
|
}
|
|
|
set
|
|
|
{
|
|
|
- this = FromHsv(h, s, value, a);
|
|
|
+ this = FromHSV(h, s, value, a);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -455,7 +455,7 @@ namespace Godot
|
|
|
/// </summary>
|
|
|
/// <param name="includeAlpha">Whether or not to include alpha. If false, the color is RGB instead of RGBA.</param>
|
|
|
/// <returns>A string for the HTML hexadecimal representation of this color.</returns>
|
|
|
- public string ToHtml(bool includeAlpha = true)
|
|
|
+ public string ToHTML(bool includeAlpha = true)
|
|
|
{
|
|
|
var txt = string.Empty;
|
|
|
|
|
@@ -531,19 +531,51 @@ namespace Godot
|
|
|
r = (rgba & 0xFFFF) / 65535.0f;
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Constructs a color either from an HTML color code or from a
|
|
|
+ /// standardized color name. Supported
|
|
|
+ /// color names are the same as the <see cref="Colors"/> constants.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="code">The HTML color code or color name to construct from.</param>
|
|
|
+ public Color(string code)
|
|
|
+ {
|
|
|
+ if (HtmlIsValid(code))
|
|
|
+ {
|
|
|
+ this = FromHTML(code);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ this = Named(code);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Constructs a color either from an HTML color code or from a
|
|
|
+ /// standardized color name, with `alpha` on the range of 0 to 1. Supported
|
|
|
+ /// color names are the same as the <see cref="Colors"/> constants.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="code">The HTML color code or color name to construct from.</param>
|
|
|
+ /// <param name="alpha">The alpha (transparency) value, typically on the range of 0 to 1.</param>
|
|
|
+ public Color(string code, float alpha)
|
|
|
+ {
|
|
|
+ this = new Color(code);
|
|
|
+ a = alpha;
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Constructs a color from the HTML hexadecimal color string in RGBA format.
|
|
|
/// </summary>
|
|
|
/// <param name="rgba">A string for the HTML hexadecimal representation of this color.</param>
|
|
|
- public Color(string rgba)
|
|
|
+ private static Color FromHTML(string rgba)
|
|
|
{
|
|
|
+ Color c;
|
|
|
if (rgba.Length == 0)
|
|
|
{
|
|
|
- r = 0f;
|
|
|
- g = 0f;
|
|
|
- b = 0f;
|
|
|
- a = 1.0f;
|
|
|
- return;
|
|
|
+ c.r = 0f;
|
|
|
+ c.g = 0f;
|
|
|
+ c.b = 0f;
|
|
|
+ c.a = 1.0f;
|
|
|
+ return c;
|
|
|
}
|
|
|
|
|
|
if (rgba[0] == '#')
|
|
@@ -577,47 +609,48 @@ namespace Godot
|
|
|
throw new ArgumentOutOfRangeException("Invalid color code. Length is " + rgba.Length + " but a length of 6 or 8 is expected: " + rgba);
|
|
|
}
|
|
|
|
|
|
- a = 1.0f;
|
|
|
+ c.a = 1.0f;
|
|
|
if (isShorthand)
|
|
|
{
|
|
|
- r = ParseCol4(rgba, 0) / 15f;
|
|
|
- g = ParseCol4(rgba, 1) / 15f;
|
|
|
- b = ParseCol4(rgba, 2) / 15f;
|
|
|
+ c.r = ParseCol4(rgba, 0) / 15f;
|
|
|
+ c.g = ParseCol4(rgba, 1) / 15f;
|
|
|
+ c.b = ParseCol4(rgba, 2) / 15f;
|
|
|
if (alpha)
|
|
|
{
|
|
|
- a = ParseCol4(rgba, 3) / 15f;
|
|
|
+ c.a = ParseCol4(rgba, 3) / 15f;
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- r = ParseCol8(rgba, 0) / 255f;
|
|
|
- g = ParseCol8(rgba, 2) / 255f;
|
|
|
- b = ParseCol8(rgba, 4) / 255f;
|
|
|
+ c.r = ParseCol8(rgba, 0) / 255f;
|
|
|
+ c.g = ParseCol8(rgba, 2) / 255f;
|
|
|
+ c.b = ParseCol8(rgba, 4) / 255f;
|
|
|
if (alpha)
|
|
|
{
|
|
|
- a = ParseCol8(rgba, 6) / 255f;
|
|
|
+ c.a = ParseCol8(rgba, 6) / 255f;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (r < 0)
|
|
|
+ if (c.r < 0)
|
|
|
{
|
|
|
throw new ArgumentOutOfRangeException("Invalid color code. Red part is not valid hexadecimal: " + rgba);
|
|
|
}
|
|
|
|
|
|
- if (g < 0)
|
|
|
+ if (c.g < 0)
|
|
|
{
|
|
|
throw new ArgumentOutOfRangeException("Invalid color code. Green part is not valid hexadecimal: " + rgba);
|
|
|
}
|
|
|
|
|
|
- if (b < 0)
|
|
|
+ if (c.b < 0)
|
|
|
{
|
|
|
throw new ArgumentOutOfRangeException("Invalid color code. Blue part is not valid hexadecimal: " + rgba);
|
|
|
}
|
|
|
|
|
|
- if (a < 0)
|
|
|
+ if (c.a < 0)
|
|
|
{
|
|
|
throw new ArgumentOutOfRangeException("Invalid color code. Alpha part is not valid hexadecimal: " + rgba);
|
|
|
}
|
|
|
+ return c;
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -640,9 +673,8 @@ namespace Godot
|
|
|
/// the constants defined in <see cref="Colors"/>.
|
|
|
/// </summary>
|
|
|
/// <param name="name">The name of the color.</param>
|
|
|
- /// <param name="alpha">The alpha (transparency) component represented on the range of 0 to 1. Default: 1.</param>
|
|
|
/// <returns>The constructed color.</returns>
|
|
|
- public static Color ColorN(string name, float alpha = 1f)
|
|
|
+ private static Color Named(string name)
|
|
|
{
|
|
|
name = name.Replace(" ", String.Empty);
|
|
|
name = name.Replace("-", String.Empty);
|
|
@@ -656,9 +688,7 @@ namespace Godot
|
|
|
throw new ArgumentOutOfRangeException($"Invalid Color Name: {name}");
|
|
|
}
|
|
|
|
|
|
- Color color = Colors.namedColors[name];
|
|
|
- color.a = alpha;
|
|
|
- return color;
|
|
|
+ return Colors.namedColors[name];
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -671,11 +701,11 @@ namespace Godot
|
|
|
/// <param name="value">The HSV value (brightness), typically on the range of 0 to 1.</param>
|
|
|
/// <param name="alpha">The alpha (transparency) value, typically on the range of 0 to 1.</param>
|
|
|
/// <returns>The constructed color.</returns>
|
|
|
- public static Color FromHsv(float hue, float saturation, float value, float alpha = 1.0f)
|
|
|
+ public static Color FromHSV(float hue, float saturation, float value, float alpha = 1.0f)
|
|
|
{
|
|
|
if (saturation == 0)
|
|
|
{
|
|
|
- // acp_hromatic (grey)
|
|
|
+ // Achromatic (grey)
|
|
|
return new Color(value, value, value, alpha);
|
|
|
}
|
|
|
|
|
@@ -715,7 +745,7 @@ namespace Godot
|
|
|
/// <param name="hue">Output parameter for the HSV hue.</param>
|
|
|
/// <param name="saturation">Output parameter for the HSV saturation.</param>
|
|
|
/// <param name="value">Output parameter for the HSV value.</param>
|
|
|
- public void ToHsv(out float hue, out float saturation, out float value)
|
|
|
+ public void ToHSV(out float hue, out float saturation, out float value)
|
|
|
{
|
|
|
float max = (float)Mathf.Max(r, Mathf.Max(g, b));
|
|
|
float min = (float)Mathf.Min(r, Mathf.Min(g, b));
|
|
@@ -803,7 +833,8 @@ namespace Godot
|
|
|
}
|
|
|
|
|
|
// Check if each hex digit is valid.
|
|
|
- for (int i = 0; i < len; i++) {
|
|
|
+ for (int i = 0; i < len; i++)
|
|
|
+ {
|
|
|
if (ParseCol4(color, i) == -1)
|
|
|
{
|
|
|
return false;
|