LightnessBar.cs 740 B

1234567891011121314151617181920212223242526272829
  1. #nullable enable
  2. using ColorHelper;
  3. using ColorConverter = ColorHelper.ColorConverter;
  4. namespace Terminal.Gui;
  5. internal class LightnessBar : ColorBar
  6. {
  7. public HueBar? HBar { get; set; }
  8. public SaturationBar? SBar { get; set; }
  9. /// <inheritdoc/>
  10. protected override Color GetColor (double fraction)
  11. {
  12. if (HBar == null || SBar == null)
  13. {
  14. throw new ($"{nameof (LightnessBar)} has not been set up correctly before drawing");
  15. }
  16. var hsl = new HSL (HBar.Value, (byte)SBar.Value, (byte)(MaxValue * fraction));
  17. RGB rgb = ColorConverter.HslToRgb (hsl);
  18. return new (rgb.R, rgb.G, rgb.B);
  19. }
  20. /// <inheritdoc/>
  21. protected override int MaxValue => 100;
  22. }