private static double GetRelativeUnit(double amount, ColorFunctionUnits units) { switch (units) { case ColorFunctionUnits.Relative: return(amount); case ColorFunctionUnits.Percentage: return(amount / 100.0); default: throw new ArgumentOutOfRangeException(nameof(units)); } }
public static HsvColor FadeIn(HsvColor hsv, double amount, ColorFunctionUnits units) { hsv.Alpha = ChannelOperation(FunctionKind.Increase, hsv.Alpha, amount, units); return(hsv); }
public static RgbColor Desaturate(RgbColor rgb, double amount, ColorFunctionUnits units) { return(Desaturate(rgb.ToHslColor(), amount, units).ToRgbColor()); }
public static HsvColor Desaturate(HsvColor hsv, double amount, ColorFunctionUnits units) { hsv.Saturation = ChannelOperation(FunctionKind.Decrease, hsv.Saturation, amount, units); return(hsv); }
public static HsvColor Darken(HsvColor hsv, double amount, ColorFunctionUnits units) { return(Darken(hsv.ToHslColor(), amount, units).ToHsvColor()); }
public static HslColor Darken(HslColor hsl, double amount, ColorFunctionUnits units) { hsl.Lightness = ChannelOperation(FunctionKind.Decrease, hsl.Lightness, amount, units); return(hsl); }
private static double ChannelOperation(FunctionKind functionKind, double channel, double amount, ColorFunctionUnits units) { switch (units) { case ColorFunctionUnits.Absolute: return(CalculateFunction(functionKind, channel, amount)); case ColorFunctionUnits.Relative: return(CalculateFunction(functionKind, channel, channel * amount)); case ColorFunctionUnits.Percentage: return(CalculateFunction(functionKind, channel, channel * amount / 100.0)); default: throw new ArgumentOutOfRangeException(nameof(units)); } }
public static HsvColor Tint(HsvColor color, double amount, ColorFunctionUnits units) { return(Mix(RgbWhite, (RgbColor)color, GetRelativeUnit(amount, units))); }
public static HsvColor Shade(HsvColor color, double amount, ColorFunctionUnits units) { return(Mix(RgbBlack, (RgbColor)color, GetRelativeUnit(amount, units))); }
public static HslColor Saturate(HslColor hsl, double amount, ColorFunctionUnits units) { hsl.Saturation = ChannelOperation(FunctionKind.Increase, hsl.Saturation, amount, units); return(hsl); }
public static RgbColor Lighten(RgbColor rgb, double amount, ColorFunctionUnits units) { return(Lighten(rgb.ToHslColor(), amount, units).ToRgbColor()); }
public static RgbColor FadeOut(RgbColor rgb, double amount, ColorFunctionUnits units) { rgb.A = ChannelOperation(FunctionKind.Decrease, rgb.A, amount, units); return(rgb); }
public static HslColor FadeOut(HslColor hsl, double amount, ColorFunctionUnits units) { hsl.Alpha = ChannelOperation(FunctionKind.Decrease, hsl.Alpha, amount, units); return(hsl); }