/// <summary> /// Indicates whether the current value is equal to another object. /// </summary> /// <param name="obj">An object to compare with the current value.</param> /// <returns><c>true</c> if the current value is equal to object; otherwise, <c>false</c>.</returns> public override bool Equals(object obj) { if (obj == null) { return(false); } object value = (obj is PSObject) ? ((PSObject)obj).BaseObject : obj; if (value is HsbColor32Normalized) { return(Equals((HsbColor32Normalized)value)); } if (value is IHsbColorModel <byte> ) { return(Equals((IHsbColorModel <byte>)value)); } if (value is IHsbColorModel <float> ) { return(Equals((IHsbColorModel <float>)value, false)); } if (value is IRgbColorModel <byte> ) { return(Equals((IRgbColorModel <byte>)value, false)); } if (value is IRgbColorModel <float> ) { return(Equals((IRgbColorModel <float>)value, false)); } if (value is int) { return(Equals((int)value)); } value = ColorExtensions.AsSimplestType(value); if (value is string) { return((string)value == ToString()); } if (value is int) { return(ToAHSB() == (int)value); } if (value is float) { return(ToAHSB() == (float)value); } if (obj is PSObject && ColorExtensions.TryGetColor((PSObject)obj, out IColorModel color)) { return(Equals(color.AsHsb32())); } return(false); }