0.5 update: added experimental multithreaded mode (-j).
Experimental because it's currently 8% slower than singlethreaded for some reason.
@marcomics, the analyse subcommand will stay, of course.
It should support all common image formats, I think.
Having observed your palette, I decided there should be an additional mode where a big (like 1280x1280) gif would be generated, showing slowly rotating 3D CAM16UCS representation with the important graph structure of the palette (ramps and cycles).
But there're some other things I need to do before that.
@marcomics, the colours look really good, and the art is nice!
Concerning logos, I'd recommend one of numbers 12 (but there're many similar logos already) and 13 (could benefit from making it a bit bigger).
P. S. By the way, keep in mind that palette examples on Lospec shouldn't contain any text except for palette name.
@marcomics, thank you!
I checked this, and Visual Studio Build Tools are indeed required for Windows installation of Rust toolchain with default options. I'll add a note into readme.
Probably I should start generating binary releases for all platforms at some point.
0.4 update: daemon command parser is upgraded, now it's using the same library as for the command-line interface. In particular, it means that it can finally do ~everything the command-line app could.
@b236, the contour and RGB primaries are now added.
@pixel-potter, if you mean the program, it wasn't very hard (and I already had the 0.1 version written in Python). As you can see from the source code, it's quite straightforward. XYZ to CAM16UCS conversion is one of less trivial parts, but I just followed the algorithm from the CAM16 paper. A couple of metrics/distributions used are described in other threads of this forum section.
I sampled some colours from an image of von Luschan's chromatic scale and here's the result:
Looking at the plots, I doubt that there can be a vectorscope-like line for skin tones: the range of hues is at least 60°.
I could still add a curve approximating skin colours, but it seems it won't be visible for most palettes because of low chroma.
The range of wavelengths in spectral distribution is currently 4100-6650 angstroms (in other words, 410-665 nm).
It was supposed to be wider, but I had issues in the 0.1 version (which was in Python) with computing CIExy hues because XYZ values were near-zero and lack of precision made the hue function outside of those boundaries non-monotone. I'll test if switching to f64 in Rust will allow to expand it again.