diff options
author | Bartosz Taudul <wolf.pld@gmail.com> | 2020-04-02 02:04:40 +0300 |
---|---|---|
committer | Bartosz Taudul <wolf.pld@gmail.com> | 2020-04-02 02:04:59 +0300 |
commit | b2c2bfc2aa5ec6c675fd8195d743b034868fffff (patch) | |
tree | befdd2a9c476662c942deb6aa60f6760976a7145 /server/TracyColor.cpp | |
parent | 2303f18d393fa3c8f11ef4aa549dcaa2ed7ba21f (diff) |
Move HSV color conversion to a separate source file.
Diffstat (limited to 'server/TracyColor.cpp')
-rw-r--r-- | server/TracyColor.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/server/TracyColor.cpp b/server/TracyColor.cpp new file mode 100644 index 00000000..4e3f2e88 --- /dev/null +++ b/server/TracyColor.cpp @@ -0,0 +1,36 @@ +#include <algorithm> + +#include "TracyColor.hpp" + +namespace tracy +{ + +uint32_t GetHsvColor( uint64_t hue, int value ) +{ + const uint8_t h = ( hue * 11400714819323198485ull ) & 0xFF; + const uint8_t s = 108; + const uint8_t v = std::max( 96, 170 - value * 8 ); + + const uint8_t reg = h / 43; + const uint8_t rem = ( h - ( reg * 43 ) ) * 6; + + const uint8_t p = ( v * ( 255 - s ) ) >> 8; + const uint8_t q = ( v * ( 255 - ( ( s * rem ) >> 8 ) ) ) >> 8; + const uint8_t t = ( v * ( 255 - ( ( s * ( 255 - rem ) ) >> 8 ) ) ) >> 8; + + uint8_t r, g, b; + + switch( reg ) + { + case 0: r = v; g = t; b = p; break; + case 1: r = q; g = v; b = p; break; + case 2: r = p; g = v; b = t; break; + case 3: r = p; g = q; b = v; break; + case 4: r = t; g = p; b = v; break; + default: r = v; g = p; b = q; break; + } + + return 0xFF000000 | ( r << 16 ) | ( g << 8 ) | b; +} + +} |