diff --git a/Color.cpp b/Color.cpp index 2130c5a..40cba4a 100644 --- a/Color.cpp +++ b/Color.cpp @@ -16,11 +16,11 @@ Color::Color(const HSB& hsb) { if (hsb.s == 0) { _rgb.r = _rgb.g = _rgb.b = hsb.b; } else { - hi = fabs(hsb.h / 60); - f = hsb.h / 60 - hi; - p = hsb.b * (1 - hsb.s); - q = hsb.b * (1 - f * hsb.s); - t = hsb.b * (1- (1 - f) * s); + int hi = static_cast(round(fabs(hsb.h / 60))); + double f = hsb.h / 60 - hi; + double p = hsb.b * (1 - hsb.s); + double q = hsb.b * (1 - f * hsb.s); + double t = hsb.b * (1- (1 - f) * hsb.s); switch (hi) { case 0: _rgb.r = hsb.b; @@ -60,10 +60,8 @@ Color::Color(const HSB& hsb) { Color::operator HSB() const { HSB hsb; - bool r_is_max {_rgb.r > _rgb.g && _rgb.r > _rgb.b}; - bool g_is_max {_rgb.g > _rgb.r && _rgb.g > _rgb.b}; - double rgb_max = std::max(_rgb.r, _rgb.g, _rgb.b); - double rgb_min = std::min(_rgb.r, _rgb.g, _rgb.b); + double rgb_max = std::max({_rgb.r, _rgb.g, _rgb.b}); + double rgb_min = std::min({_rgb.r, _rgb.g, _rgb.b}); double delta = rgb_max - rgb_min; if (_rgb.r > _rgb.g && _rgb.r > _rgb.b) { // red is max hsb.h = ((_rgb.g - _rgb.b) / delta) * 60;