hsl: add our own implementations of rgb-to-hsl and hsl-to-rgb

* New function: rgb_to_hsl()
* New function: hsl_to_rgb()
* Replace XTerm’s hls_to_rgb() with our own, hsl_to_rgb().
* Ensure hue/lum/sat values are within range before calling
  hsl_to_rgb()

Note that sixels’ use the following primary hues:

*  blue:  0°
*  red:   120
*  green: 240°

While “standard” HSL uses:

*  red:   0°
*  green: 120°
*  blue:  240°

Thus, we need to adjust the sixel’s hue value before calling
hsl_to_rgb().
This commit is contained in:
Daniel Eklöf 2020-11-15 19:45:33 +01:00
parent 8e779b356e
commit e0297daa1f
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
6 changed files with 124 additions and 136 deletions

6
hsl.h Normal file
View file

@ -0,0 +1,6 @@
#pragma once
#include <stdint.h>
void rgb_to_hsl(uint32_t rgb, int *hue, int *sat, int *lum);
uint32_t hsl_to_rgb(int hue, int sat, int lum);