X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=util.cpp;h=1c47e11787a8c9781d662334430a2220aef47bf0;hp=08298c7701b9146fcbd76b9330170b458a80f28b;hb=dc90a1f6be2e9b2cc5a0d3dfa8ad0c47cdac9af2;hpb=cfe0bc4fa1e2a56eeb12c33e596f79c1292292c8 diff --git a/util.cpp b/util.cpp index 08298c7..1c47e11 100644 --- a/util.cpp +++ b/util.cpp @@ -46,6 +46,21 @@ void hsv2rgb(float h, float s, float v, float *r, float *g, float *b) *b += m; } +void hsv2rgb_normalized(float h, float s, float v, float *r, float *g, float *b) +{ + float ref_r, ref_g, ref_b; + hsv2rgb(h, s, v, r, g, b); + hsv2rgb(h, 0.0f, v, &ref_r, &ref_g, &ref_b); + float lum = 0.2126 * *r + 0.7152 * *g + 0.0722 * *b; + float ref_lum = 0.2126 * ref_r + 0.7152 * ref_g + 0.0722 * ref_b; + if (lum > 1e-3) { + float fac = ref_lum / lum; + *r *= fac; + *g *= fac; + *b *= fac; + } +} + std::string read_file(const std::string &filename) { static char buf[131072];