Fix RGB returning wrong color and change it to RGBA (#1793)

* FIx RGB returning wrong color and change it to RGBA

* Don't use the old RGB variable

* Fix UIGlowPayload too

* Add RGBA to ABGR helper and new method for glow/foreground to expose it directly

* Move from Utils to ColorHelpers

* Rename the function
This commit is contained in:
Infi 2024-05-04 06:22:53 +02:00 committed by GitHub
parent d2a0c94ddd
commit 44a3c3a1ee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 44 additions and 21 deletions

View file

@ -77,15 +77,21 @@ public class UIForegroundPayload : Payload
}
/// <summary>
/// Gets the Red/Green/Blue values for this foreground color, encoded as a typical hex color.
/// Gets the Red/Green/Blue/Alpha values for this foreground color, encoded as a typical hex color.
/// </summary>
[JsonIgnore]
public uint RGB => this.UIColor.UIForeground & 0xFFFFFF;
public uint RGBA => this.UIColor.UIForeground;
/// <summary>
/// Gets the ABGR value for this foreground color, as ImGui requires it in PushColor.
/// </summary>
[JsonIgnore]
public uint ABGR => Interface.ColorHelpers.SwapEndianness(this.UIColor.UIForeground);
/// <inheritdoc/>
public override string ToString()
{
return $"{this.Type} - UIColor: {this.colorKey} color: {(this.IsEnabled ? this.RGB : 0)}";
return $"{this.Type} - UIColor: {this.colorKey} color: {(this.IsEnabled ? this.RGBA : 0)}";
}
/// <inheritdoc/>

View file

@ -68,10 +68,16 @@ public class UIGlowPayload : Payload
public bool IsEnabled => this.ColorKey != 0;
/// <summary>
/// Gets the Red/Green/Blue values for this glow color, encoded as a typical hex color.
/// Gets the Red/Green/Blue/Alpha values for this glow color, encoded as a typical hex color.
/// </summary>
[JsonIgnore]
public uint RGB => this.UIColor.UIGlow & 0xFFFFFF;
public uint RGBA => this.UIColor.UIGlow;
/// <summary>
/// Gets the ABGR value for this glow color, as ImGui requires it in PushColor.
/// </summary>
[JsonIgnore]
public uint ABGR => Interface.ColorHelpers.SwapEndianness(this.UIColor.UIGlow);
/// <summary>
/// Gets a Lumina UIColor object representing this payload. The actual color data is at UIColor.UIGlow.
@ -85,7 +91,7 @@ public class UIGlowPayload : Payload
/// <inheritdoc/>
public override string ToString()
{
return $"{this.Type} - UIColor: {this.colorKey} color: {(this.IsEnabled ? this.RGB : 0)}";
return $"{this.Type} - UIColor: {this.colorKey} color: {(this.IsEnabled ? this.RGBA : 0)}";
}
/// <inheritdoc/>

View file

@ -1,3 +1,4 @@
using System.Buffers.Binary;
using System.Diagnostics.CodeAnalysis;
using System.Drawing;
using System.Numerics;
@ -159,6 +160,16 @@ public static class ColorHelpers
return new Vector4(r, g, b, hsv.A);
}
/// <summary>
/// Performs a swap of endianness
/// Exmaple:
/// (FFXIV) RGBA to ABGR (ImGui)
/// </summary>
/// <param name="rgba">Color value in byte order X Y Z W.</param>
/// <returns>Endian swapped color value with new byte order W Z Y X.</returns>
public static uint SwapEndianness(uint rgba)
=> BinaryPrimitives.ReverseEndianness(rgba);
/// <summary>
/// Lighten a color.
/// </summary>