color_t: use utils::from_chars

This commit is contained in:
Charles Dang 2024-06-24 17:39:02 -04:00
parent 6f32635788
commit 675d963016

View file

@ -12,9 +12,11 @@
See the COPYING file for more details.
*/
#include "serialization/string_utils.hpp"
#include "color.hpp"
#include "serialization/string_utils.hpp"
#include "utils/from_chars.hpp"
#include <iomanip>
#include <sstream>
@ -32,10 +34,10 @@ color_t color_t::from_rgba_string(const std::string& c)
}
return {
static_cast<uint8_t>(std::stoul(fields[0])),
static_cast<uint8_t>(std::stoul(fields[1])),
static_cast<uint8_t>(std::stoul(fields[2])),
static_cast<uint8_t>(fields.size() == 4 ? std::stoul(fields[3]) : ALPHA_OPAQUE)
utils::from_chars<uint8_t>(fields[0]).value(),
utils::from_chars<uint8_t>(fields[1]).value(),
utils::from_chars<uint8_t>(fields[2]).value(),
fields.size() == 4 ? utils::from_chars<uint8_t>(fields[3]).value() : ALPHA_OPAQUE
};
}
@ -52,10 +54,10 @@ color_t color_t::from_rgb_string(const std::string& c)
}
return {
static_cast<uint8_t>(std::stoul(fields[0])),
static_cast<uint8_t>(std::stoul(fields[1])),
static_cast<uint8_t>(std::stoul(fields[2])),
static_cast<uint8_t>(ALPHA_OPAQUE)
utils::from_chars<uint8_t>(fields[0]).value(),
utils::from_chars<uint8_t>(fields[1]).value(),
utils::from_chars<uint8_t>(fields[2]).value(),
ALPHA_OPAQUE
};
}
@ -69,7 +71,7 @@ color_t color_t::from_hex_string(const std::string& c)
throw std::invalid_argument("Color hex string contains invalid characters");
}
unsigned long temp_c = std::strtol(c.c_str(), nullptr, 16);
auto temp_c = utils::from_chars<uint32_t>(c, 16).value();
return {
static_cast<uint8_t>((0x00FFFFFF & temp_c) >> 16),