mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-08 23:46:24 -06:00
Introduction of classes ColorRGB and ColorRGBA to unify color data definition and manipulation
(cherry picked from commit prusa3d/PrusaSlicer@d0bff2d996 )
This commit is contained in:
parent
36ffb18059
commit
28d0147d09
60 changed files with 1290 additions and 1174 deletions
|
@ -23,6 +23,7 @@
|
|||
#include "Event.hpp"
|
||||
#include "../libslic3r/libslic3r_version.h"
|
||||
#include "../libslic3r/Utils.hpp"
|
||||
#include "libslic3r/Color.hpp"
|
||||
|
||||
|
||||
class wxCheckBox;
|
||||
|
@ -39,28 +40,10 @@ inline int hex_to_int(const char c)
|
|||
return (c >= '0' && c <= '9') ? int(c - '0') : (c >= 'A' && c <= 'F') ? int(c - 'A') + 10 : (c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1;
|
||||
}
|
||||
|
||||
static std::array<float, 4> decode_color_to_float_array(const std::string color)
|
||||
static ColorRGBA decode_color_to_float_array(const std::string color)
|
||||
{
|
||||
// set alpha to 1.0f by default
|
||||
std::array<float, 4> ret = {0, 0, 0, 1.0f};
|
||||
const char * c = color.data() + 1;
|
||||
if (color.size() == 7 && color.front() == '#') {
|
||||
for (size_t j = 0; j < 3; ++j) {
|
||||
int digit1 = hex_to_int(*c++);
|
||||
int digit2 = hex_to_int(*c++);
|
||||
if (digit1 == -1 || digit2 == -1) break;
|
||||
ret[j] = float(digit1 * 16 + digit2) / 255.0f;
|
||||
}
|
||||
}
|
||||
else if (color.size() == 9 && color.front() == '#') {
|
||||
for (size_t j = 0; j < 4; ++j) {
|
||||
int digit1 = hex_to_int(*c++);
|
||||
int digit2 = hex_to_int(*c++);
|
||||
if (digit1 == -1 || digit2 == -1) break;
|
||||
|
||||
ret[j] = float(digit1 * 16 + digit2) / 255.0f;
|
||||
}
|
||||
}
|
||||
ColorRGBA ret = ColorRGBA::BLACK();
|
||||
decode_color(color, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -470,14 +453,6 @@ public:
|
|||
|
||||
std::ostream& operator<<(std::ostream &os, const WindowMetrics& metrics);
|
||||
|
||||
inline int hex_digit_to_int(const char c)
|
||||
{
|
||||
return
|
||||
(c >= '0' && c <= '9') ? int(c - '0') :
|
||||
(c >= 'A' && c <= 'F') ? int(c - 'A') + 10 :
|
||||
(c >= 'a' && c <= 'f') ? int(c - 'a') + 10 : -1;
|
||||
}
|
||||
|
||||
class TaskTimer
|
||||
{
|
||||
std::chrono::milliseconds start_timer;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue