public void ShouldReturnFalseWhenOtherAsObjectIsNotEqual() { var color = new ColorHSL(1, 2, 3); var other = new ColorHSL(3, 2, 1); Assert.False(color.Equals((object)other)); }
public void ShouldReturnTheCorrectValueWhenOtherIsHigher() { var color = new ColorHSL(0.5, 0.5, 0.5); var other = new ColorHSL(1.0, 1.0, 1.0); Assert.Equal(-1, color.CompareTo(other)); }
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) { EditorGUI.BeginProperty(position, label, property); var h = property.FindPropertyRelative("_h"); var s = property.FindPropertyRelative("_s"); var l = property.FindPropertyRelative("_l"); var a = property.FindPropertyRelative("_a"); EditorGUI.BeginChangeCheck(); var newColor = EditorGUI.ColorField(position, label, new ColorHSL(h.floatValue, s.floatValue, l.floatValue, a.floatValue).ToColor(), true, true, false); if (EditorGUI.EndChangeCheck()) { Undo.RecordObject(property.serializedObject.targetObject, "Changing color"); var newColorHSL = new ColorHSL(newColor); h.floatValue = newColorHSL.H; s.floatValue = newColorHSL.S; l.floatValue = newColorHSL.L; a.floatValue = newColorHSL.A; property.serializedObject.ApplyModifiedProperties(); } EditorGUI.EndProperty(); }
public static SplitComplementaryColorScheme FromColor(ColorRGB color) { var swatches = new Swatch[] { new Swatch(PrimaryColorID, ColorHSL.Empty), new Swatch(SecondaryColorID, ColorHSL.Empty), new Swatch(TertiaryColorID, ColorHSL.Empty) }; var primary = ColorHSL.FromColor(color); var h = primary.H; var s = primary.S; var l = primary.L; swatches[0].Color = primary; var secondary = new ColorHSL(h, s, l); secondary.H += 0.416666666666667; swatches[1].Color = secondary; var tertiary = new ColorHSL(h, s, l); tertiary.H = h + 0.5 + 0.0833333333333333; swatches[2].Color = tertiary; return(new SplitComplementaryColorScheme(swatches)); }
public static RectangleColorScheme FromColor(ColorRGB color) { var swatches = new Swatch[] { new Swatch(QuaternaryColorID, ColorHSL.Empty), new Swatch(PrimaryColorID, ColorHSL.Empty), new Swatch(SecondaryColorID, ColorHSL.Empty), new Swatch(TertiaryColorID, ColorHSL.Empty) }; var primary = ColorHSL.FromColor(color); var h = primary.H; var s = primary.S; var l = primary.L; // quaternary var quaternary = new ColorHSL(h, s, l); quaternary.H -= 0.166666666666667; swatches[0].Color = quaternary; // Primary swatches[1].Color = primary; // secondary swatches[2].Color = quaternary.Complementary(); // tertiary swatches[3].Color = primary.Complementary(); return(new RectangleColorScheme(swatches)); }
public ColorHSL(ColorHSL hsl) { this._alpha = hsl._alpha; this._h = hsl._h; this._s = hsl._s; this._l = hsl._l; }
public override void ComputeLookupTableForAnalysis(double sensorElevation) { var north = new ColorHSL(0.7, 1, 0.90); // North = Blue var east = new ColorHSL(0.9, 1, 0.5); // East = Pink var south = new ColorHSL(0.5, 0, 0.10); // South = Black var west = new ColorHSL(0.5, 1, 0.5); // West = Teal // The angle range coming from the calculation is -180 to +180; which then has 180 added to normalise as 0-360 // So our color span starts at South (-180 > 0) and proceeds clockwise to North (0 > 180) and then South (180 > 360) var NWAspect = new Analysis.VisualisationRangeWithColor { ValueSpan = 90, ColorStart = south, ColorEnd = east }; var SWAspect = new Analysis.VisualisationRangeWithColor { ValueSpan = 90, ColorStart = east, ColorEnd = north }; var SEAspect = new Analysis.VisualisationRangeWithColor { ValueSpan = 90, ColorStart = north, ColorEnd = west }; var NEAspect = new Analysis.VisualisationRangeWithColor { ValueSpan = 90, ColorStart = west, ColorEnd = south }; ComputeLinearRanges(NWAspect, SWAspect, SEAspect, NEAspect); }
public static Color ToColor(ColorHSL color) { float r, g, b, a = color.a; r = g = b = color.l; if (color.l <= 0) { color.l = 0.001f; } if (color.l >= 1) { color.l = 0.999f; } if (color.s != 0f) { var m2 = color.l < 0.5f ? color.l * (color.s + 1f) : color.l + color.s - color.l * color.s; var m1 = color.l * 2 - m2; r = ExtractRGB(m1, m2, color.h + 1f / 3f); g = ExtractRGB(m1, m2, color.h); b = ExtractRGB(m1, m2, color.h - 1f / 3f); } return(new Color(r, g, b, a)); }
public override void DrawViewportWires(IGH_PreviewArgs args) { if (autoColor) { gradientList = new System.Drawing.Color[_plan.getCells().Count]; for (int i = 0; i < gradientList.Length; i++) { var multiplier = sunAccess[i]; var gColor = new ColorHSL(multiplier, multiplier, 0, multiplier); var rgb = gColor.ToArgbColor(); gradientList[i] = (rgb); } for (int i = 0; i < rectangles.Count; i++) { Rhino.Display.DisplayMaterial mat = new Rhino.Display.DisplayMaterial(gradientList[i]); mat.Shine = 0.25; { var curve = rectangles[i].ToNurbsCurve(); var pts = rectangles[i].ToPolyline(); args.Display.DrawPolyline(pts, gradientList[i], 1); var mesh = Mesh.CreateFromPlanarBoundary(curve, Rhino.Geometry.MeshingParameters.FastRenderMesh, 0.01); args.Display.DrawMeshShaded(mesh, mat); } } } }
public void ShouldReturnTrueWhenOtherAsObjectIsEqual() { var color = new ColorHSL(1, 2, 3); var other = new ColorHSL(1, 2, 3); Assert.True(color.Equals((object)other)); }
public static AnalogousColorScheme FromColor(ColorRGB color) { var swatches = new Swatch[] { new Swatch(TertiaryColorID, ColorHSL.Empty), new Swatch(PrimaryColorID, ColorHSL.Empty), new Swatch(SecondaryColorID, ColorHSL.Empty) }; var primary = ColorHSL.FromColor(color); var h = primary.H; var s = primary.S; var l = primary.L; // Teriary var tertiary = new ColorHSL(h, s, l); tertiary.H -= 0.0833333333333333; swatches[0].Color = tertiary; // Primary swatches[1].Color = primary; // Secondary var secondary = new ColorHSL(h, s, l); secondary.H += 0.0833333333333333; swatches[2].Color = secondary; return(new AnalogousColorScheme(swatches)); }
public VertexBrush(ColorHSL _hsl, float _size, float _opacity, float _hardness) { hsl = _hsl; size = _size; opacity = _opacity; hardness = _hardness; }
public void ShouldReturnDifferentValueWhenChannelChanged() { ColorHSL first = new ColorHSL(0.0, 0.0, 0.0); int hashCode = first.GetHashCode(); first.Hue = first.Saturation = first.Lightness = 1.0; Assert.NotEqual(hashCode, first.GetHashCode()); }
/// <summary> /// Convert this color to its grayscale representation. /// </summary> public static Color Grayscale(this Color c) { ColorHSL c2 = c; c2.s = 0; return(c2); }
public static Color ModHSL(this Color col, double fShiftHue, double fMultiplySaturation, double fMultiplyLightness) { ColorHSL hsl = new ColorHSL(col); hsl.Hue += fShiftHue; hsl.Saturation *= fMultiplySaturation; hsl.Lightness *= fMultiplyLightness; return(hsl.ToColorRGB()); }
public static Color ShiftHSL(this Color col, double fHue, double fSaturation, double fLightness) { ColorHSL hsl = new ColorHSL(col); hsl.Hue += fHue; hsl.Saturation += fSaturation; hsl.Lightness += fLightness; return(hsl.ToColorRGB()); }
public void ShouldInitializeTheProperties() { var color = new MagickColor(Quantum.Max, Quantum.Max, (QuantumType)(Quantum.Max * 0.02)); var hslColor = ColorHSL.FromMagickColor(color); Assert.AreEqual(0.16, hslColor.Hue, 0.01); Assert.AreEqual(0.5, hslColor.Lightness, 0.01); Assert.AreEqual(1.0, hslColor.Saturation, 0.01); }
public ColorHSL(Color c) { ColorHSL temp = FromColor(c); h = temp.h; s = temp.s; l = temp.l; a = temp.a; }
public static VertexBrush Blend(VertexBrush a, VertexBrush b, float value) { MathHelper.Clamp(value, 0f, 1f); return(new VertexBrush( ColorHSL.Blend(a.hsl, b.hsl, value), a.size, a.opacity, a.hardness )); }
public static void xDrawTitleBar(string title, float barDx = 0f) { var r = GUILayoutUtility.GetRect(0, Screen.width, 20f, 20f); var c = new ColorHSL(0f, 0f, 0.5f).xProSkinAdjust(); GUI.DrawTexture(r.dx(barDx), c.xGetTexture2D()); GUI.Label(r.dy(2f), title, EditorStyles.boldLabel); //temp = EditorGUILayout.Slider(temp, -1f, 1f); }
public void ShouldInitializeTheProperties() { var color = new MagickColor(Quantum.Max, Quantum.Max, (QuantumType)(Quantum.Max * 0.02)); var hslColor = ColorHSL.FromMagickColor(color); Assert.InRange(hslColor.Hue, 0.16, 0.17); Assert.InRange(hslColor.Lightness, 0.5, 0.6); Assert.InRange(hslColor.Saturation, 0.10, 1.1); }
public static Color MultiplyHSL(this Color col, double fHue, double fSaturation, double fLightness) { ColorHSL hsl = new ColorHSL(col); hsl.Hue *= fHue; hsl.Saturation *= fSaturation; hsl.Lightness *= fLightness; return(hsl.ToColorRGB()); }
private void DrawWindow(int windowID) { // Layout three sliders as a simple color picker GUILayout.BeginHorizontal(); GUILayout.Label("Hue", GUILayout.MaxWidth(70)); color.h = GUILayout.HorizontalSlider(color.h, 0, 1); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Saturation", GUILayout.MaxWidth(70)); color.s = GUILayout.HorizontalSlider(color.s, 0, 1); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Lightness", GUILayout.MaxWidth(70)); color.l = GUILayout.HorizontalSlider(color.l, 0, 1); GUILayout.EndHorizontal(); // Draw a nice big box showing off the current color DrawColorPreview(color); // Finally, add some buttons to test various features GUILayout.BeginHorizontal(); if (GUILayout.Button("Random Bright Color")) { color = ColorHelper.RandomBrightColor(); } if (GUILayout.Button("Random Pastel Color")) { color = ColorHelper.RandomPastelColor(); } if (GUILayout.Button("Random Dark Color")) { color = ColorHelper.RandomDarkColor(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Invert Hue")) { color.InvertHue(); } if (GUILayout.Button("Invert Saturation")) { color.InvertSaturation(); } if (GUILayout.Button("Invert Lightness")) { color.InvertLightness(); } if (GUILayout.Button("Invert")) { color.Invert(); } GUILayout.EndHorizontal(); }
// The following Random color methods work in a similar way, but with different Satuation and lightness settings /// <summary> /// Returns a random dark color. /// </summary> public static Color RandomDarkColor() { ColorHSL randomColor = new ColorHSL(); randomColor.h = RandomValue(); randomColor.s = 0.8f; randomColor.l = 0.1f; randomColor.a = 1; return(randomColor); }
public static Color RandomColor(float saturation, float lightness) { ColorHSL randomColor = new ColorHSL(); randomColor.h = RandomValue(); randomColor.s = saturation; randomColor.l = lightness; randomColor.a = 1; return(randomColor); }
// Use this for initialization void Start() { color = ColorHelper.RandomBrightColor(); // Make a tiny 1x1 texture, were going to use this to preview the color we have picked previewTexture = new Texture2D(1, 1); previewStyle = new GUIStyle(); previewStyle.normal.background = previewTexture; StartCoroutine(AnimateWindow()); }
/// <summary> /// Returns a random pastal color. A pastal color is one that has a low saturation and a medium lightness. /// </summary> public static Color RandomPastelColor() { ColorHSL randomColor = new ColorHSL(); randomColor.h = RandomValue(); randomColor.s = RandomRange(0.3f, 0.4f); randomColor.l = RandomRange(0.45f, 0.6f); randomColor.a = 1; return(randomColor); }
public static void xDrawTitleBar(string title, ref bool enable, float barDx = 0f, float toggleDx = 0f) { var r = GUILayoutUtility.GetRect(0, Screen.width, 20f, 20f); var c = new ColorHSL(0f, 0f, 0.5f).xProSkinAdjust(); GUI.DrawTexture(r.dx(barDx), c.xGetTexture2D()); var r2 = r.dy(2f); GUI.Label(r2, title, EditorStyles.boldLabel); enable = GUI.Toggle(r2.xSubRectRight(20f).dx(toggleDx), enable, ""); }
/// <summary> /// Returns a random bright color. A bright color is one that has a high saturation. /// </summary> public static Color RandomBrightColor() { // Generating a bright color is easy in a HSL! ColorHSL randomColor = new ColorHSL(); randomColor.h = RandomValue(); // Generate a random hue. This defines what color we will have. randomColor.s = RandomRange(0.6f, 1f); // Set the saturation high to keep the color vivid. randomColor.l = RandomRange(0.45f, 0.6f); // Set lightness to the middle, so the color isnt dark or washed out randomColor.a = 1; return(randomColor); // ColorTool's HSL implementation implicity converts back to a Unity Color! }
public void ShouldReturnTheCorrectValueWhenInstancesAreNotEqual() { var first = new ColorHSL(1, 0.5, 0.5); var second = new ColorHSL(0.5, 0.5, 0.5); Assert.False(first == second); Assert.True(first != second); Assert.False(first < second); Assert.False(first <= second); Assert.True(first > second); Assert.True(first >= second); }
internal void UpdateColor() { ColorHSL hslColor = new ColorHSL(); hslColor.h = Mathf.Lerp ( hslNoLife.h, hslFullLife.h, Life ); hslColor.l = Mathf.Lerp ( hslNoLife.l, hslFullLife.l, Life ); hslColor.s = Mathf.Lerp ( hslNoLife.s, hslFullLife.s, Life ); // hslColor.l = hslFullLife.l; // hslColor.s = hslFullLife.s; Color color = Color.white; ColorUtil.hslToRgb ( hslColor, ref color ); spriteRenderer.color = color; cutOutParameter.CutOut = Life; }
public static Color HSLtoRGB(ColorHSL color) { float r; float g; float b; if (color.s == 0) { r = g = b = color.l; } else { float q = color.l < .5f ? color.l * (1f + color.s) : color.l + color.s - color.l * color.s; float p = 2f * color.l - q; r = HUEtoRGB(p, q, color.h + 1f / 3f); g = HUEtoRGB(p, q, color.h); b = HUEtoRGB(p, q, color.h + 1f / 3f); } return new Color(r, g, b); }
private bool Equals(ColorHSL other) { return (this.H == other.H && this.S == other.S && this.L == other.L); }
protected static Microsoft.Xna.Framework.Color HSLtoRGB(ColorHSL hsl) { if (hsl.S == 0) return new Microsoft.Xna.Framework.Color(hsl.L, hsl.L, hsl.L, hsl.A); float temp1; float temp2; float Rtemp3, Gtemp3, Btemp3; float H; if (hsl.L < 0.5f) temp2 = hsl.L * (1.0f + hsl.S); else temp2 = hsl.L + hsl.S - hsl.L * hsl.S; temp1 = 2.0f * hsl.L - temp2; H = hsl.H / 360; Rtemp3 = H + 1.0f / 3.0f; Gtemp3 = H; Btemp3 = H - 1.0f / 3.0f; if (Rtemp3 < 0) Rtemp3 += 1.0f; if (Rtemp3 > 1) Rtemp3 -= 1.0f; if (Gtemp3 < 0) Gtemp3 += 1.0f; if (Gtemp3 > 1) Gtemp3 -= 1.0f; if (Btemp3 < 0) Btemp3 += 1.0f; if (Btemp3 > 1) Btemp3 -= 1.0f; float R, G, B; if ((6.0f * Rtemp3) < 1) R = temp1 + (temp2 - temp1) * 6.0f * Rtemp3; else if (2.0f * Rtemp3 < 1) R = temp2; else if (3.0f * Rtemp3 < 2) R = temp1 + (temp2 - temp1) * ((2.0f / 3.0f) - Rtemp3) * 6.0f; else R = temp1; if ((6.0f * Gtemp3) < 1) G = temp1 + (temp2 - temp1) * 6.0f * Gtemp3; else if (2.0f * Gtemp3 < 1) G = temp2; else if (3.0f * Gtemp3 < 2) G = temp1 + (temp2 - temp1) * ((2.0f / 3.0f) - Gtemp3) * 6.0f; else G = temp1; if ((6.0f * Btemp3) < 1) B = temp1 + (temp2 - temp1) * 6.0f * Btemp3; else if (2.0f * Btemp3 < 1) B = temp2; else if (3.0f * Btemp3 < 2) B = temp1 + (temp2 - temp1) * ((2.0f / 3.0f) - Btemp3) * 6.0f; else B = temp1; return new Microsoft.Xna.Framework.Color(R, G, B, hsl.A); }