Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/wolfpld/tracy.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartosz Taudul <wolf.pld@gmail.com>2020-04-02 02:04:40 +0300
committerBartosz Taudul <wolf.pld@gmail.com>2020-04-02 02:04:59 +0300
commitb2c2bfc2aa5ec6c675fd8195d743b034868fffff (patch)
treebefdd2a9c476662c942deb6aa60f6760976a7145 /server/TracyColor.cpp
parent2303f18d393fa3c8f11ef4aa549dcaa2ed7ba21f (diff)
Move HSV color conversion to a separate source file.
Diffstat (limited to 'server/TracyColor.cpp')
-rw-r--r--server/TracyColor.cpp36
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;
+}
+
+}