public static ImGuiVector4 ImColor_HSV(float h, float s, float v, float a) { ImGui.ColorConvertHSVtoRGB(h, s, v, out var r, out var g, out var b); return(new ImGuiVector4(r, g, b, a)); }
static public Vector4 HSVtoRGB(float h, float s, float v, float a = 1.0f) { float r, g, b; ImGui.ColorConvertHSVtoRGB(h, s, v, out r, out g, out b); return(new Vector4(r, g, b, a)); }
/// <summary> /// Creates default color palette for use with color pickers. /// </summary> /// <param name="swatchCount">The total number of swatches to use.</param> /// <returns>Default color palette.</returns> public static List <Vector4> DefaultColorPalette(int swatchCount = 32) { var colorPalette = new List <Vector4>(); for (var i = 0; i < swatchCount; i++) { ImGui.ColorConvertHSVtoRGB(i / 31.0f, 0.7f, 0.8f, out var r, out var g, out var b); colorPalette.Add(new Vector4(r, g, b, 1.0f)); } return(colorPalette); }
public void SetHSV(float h, float s, float v, float a = 1.0f) { ImGui.ColorConvertHSVtoRGB(h, s, v, out Value.x, out Value.y, out Value.z); Value.w = a; }
public static ImColor HSV(float h, float s, float v, float a = 1.0f) { float r, g, b; ImGui.ColorConvertHSVtoRGB(h, s, v, out r, out g, out b); return(new ImColor(r, g, b, a)); }
public Vector4 HSVtoRGB(Vector4 hsv) { ImGui.ColorConvertHSVtoRGB(hsv.X, hsv.Y, hsv.Z, out var r, out var g, out var b); return(new Vector4(r, g, b, hsv.W)); }
public static Vector4 AnimateColor(Vector4 c) { float r, g, b, a, x; r = g = b = a = 1; var t = QoLBar.GetDrawTime(); var anim = Math.Round(c.W * 255) - 256; switch (anim) { case 0: // Slow Rainbow ImGui.ColorConvertHSVtoRGB(((t * 15) % 360) / 360, 1, 1, out r, out g, out b); break; case 1: // Rainbow ImGui.ColorConvertHSVtoRGB(((t * 30) % 360) / 360, 1, 1, out r, out g, out b); break; case 2: // Fast Rainbow ImGui.ColorConvertHSVtoRGB(((t * 60) % 360) / 360, 1, 1, out r, out g, out b); break; case 3: // Slow Fade r = c.X; g = c.Y; b = c.Z; a = (float)(Math.Sin(((t * 30) % 360) * Math.PI / 180) + 1) / 2; break; case 4: // Fade r = c.X; g = c.Y; b = c.Z; a = (float)(Math.Sin(((t * 60) % 360) * Math.PI / 180) + 1) / 2; break; case 5: // Fast Fade r = c.X; g = c.Y; b = c.Z; a = (float)(Math.Sin(((t * 120) % 360) * Math.PI / 180) + 1) / 2; break; case 6: // Red Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (1 - c.X) * x; g = c.Y + (0 - c.Y) * x; b = c.Z + (0 - c.Z) * x; break; case 7: // Yellow Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (1 - c.X) * x; g = c.Y + (1 - c.Y) * x; b = c.Z + (0 - c.Z) * x; break; case 8: // Green Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (0 - c.X) * x; g = c.Y + (1 - c.Y) * x; b = c.Z + (0 - c.Z) * x; break; case 9: // Cyan Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (0 - c.X) * x; g = c.Y + (1 - c.Y) * x; b = c.Z + (1 - c.Z) * x; break; case 10: // Blue Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (0 - c.X) * x; g = c.Y + (0 - c.Y) * x; b = c.Z + (1 - c.Z) * x; break; case 11: // Purple Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (1 - c.X) * x; g = c.Y + (0 - c.Y) * x; b = c.Z + (1 - c.Z) * x; break; case 12: // White Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (1 - c.X) * x; g = c.Y + (1 - c.Y) * x; b = c.Z + (1 - c.Z) * x; break; case 13: // Black Transition x = Math.Abs(((t * 60) % 360) - 180) / 180; r = c.X + (0 - c.X) * x; g = c.Y + (0 - c.Y) * x; b = c.Z + (0 - c.Z) * x; break; } return(new Vector4(r, g, b, a)); }