# Convert sRGB to Okhsl/Okhsv (Oklab-based) perceptual color space
A simple Rust implementation of Okhsl and Okhsv color conversion routines based on the reference implementation in the [blog post](https://bottosson.github.io/posts/colorpicker/).
Okhsl and Okhsv color spaces are meant to have more orhogonal hue, saturation, and lightness than the basic HSL/HSV colors.
## API
```rust
use oklab::*;
let Oklab {l, a, b} = srgb_to_oklab(RGB {r, g, b});
let Okhsv {h, s, v} = oklab_to_okhsv(Oklab {l, a, b});
```
Oklab components are floats. `l` is in range 0 to 1, and `a`/`b` are small numbers that *can be negative*.
Okhsv/Okhsl components are floats. HSL values are approximately in range 0 to 1 (inclusive). You can expect to roundtrip `Okhsl`⇔`Oklab` and `Okhsv`⇔`Oklab` with little loss of precision.