diff --git a/scwx-qt/source/scwx/qt/map/alert_layer.cpp b/scwx-qt/source/scwx/qt/map/alert_layer.cpp index 93aa9a5f..28937b68 100644 --- a/scwx-qt/source/scwx/qt/map/alert_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/alert_layer.cpp @@ -1,5 +1,7 @@ #include +#include #include +#include #include #include @@ -43,18 +45,6 @@ static const std::vector kAlertPhenomena_ { awips::Phenomenon::SnowSquall, awips::Phenomenon::Tornado}; -static const std::map< - awips::Phenomenon, - std::pair> - kAlertColors_ { - {awips::Phenomenon::Marine, {{255, 127, 0, 255}, {127, 63, 0, 255}}}, - {awips::Phenomenon::FlashFlood, {{0, 255, 0, 255}, {0, 127, 0, 255}}}, - {awips::Phenomenon::SevereThunderstorm, - {{255, 255, 0, 255}, {127, 127, 0, 255}}}, - {awips::Phenomenon::SnowSquall, - {{127, 127, 255, 255}, {63, 63, 127, 255}}}, - {awips::Phenomenon::Tornado, {{255, 0, 0, 255}, {127, 0, 0, 255}}}}; - template struct AlertTypeHash; @@ -69,7 +59,7 @@ class AlertLayerHandler : public QObject Q_OBJECT public : explicit AlertLayerHandler() : textEventManager_ {manager::TextEventManager::Instance()}, - alertUpdateTimer_ {util::io_context()}, + alertUpdateTimer_ {scwx::util::io_context()}, alertSourceMap_ {}, featureMap_ {} { @@ -403,10 +393,13 @@ static void AddAlertLayer(std::shared_ptr map, bool alertActive, const QString& beforeLayer) { + settings::PaletteSettings& paletteSettings = + manager::SettingsManager::palette_settings(); + QString sourceId = GetSourceId(phenomenon, alertActive); QString idSuffix = GetSuffix(phenomenon, alertActive); - auto& outlineColor = (alertActive) ? kAlertColors_.at(phenomenon).first : - kAlertColors_.at(phenomenon).second; + auto outlineColor = util::color::ToRgba8PixelT( + paletteSettings.alert_color(phenomenon, alertActive).GetValue()); QString bgLayerId = QString("alertPolygonLayerBg-%1").arg(idSuffix); QString fgLayerId = QString("alertPolygonLayerFg-%1").arg(idSuffix); diff --git a/scwx-qt/source/scwx/qt/util/color.cpp b/scwx-qt/source/scwx/qt/util/color.cpp index b4955918..e7729663 100644 --- a/scwx-qt/source/scwx/qt/util/color.cpp +++ b/scwx-qt/source/scwx/qt/util/color.cpp @@ -1,6 +1,7 @@ #include #include +#include namespace scwx { @@ -19,6 +20,15 @@ std::string ToArgbString(const boost::gil::rgba8_pixel_t& color) "#{:02x}{:02x}{:02x}{:02x}", color[3], color[0], color[1], color[2]); } +boost::gil::rgba8_pixel_t ToRgba8PixelT(const std::string& argbString) +{ + QRgb color = QColor(QString::fromStdString(argbString)).rgba(); + return boost::gil::rgba8_pixel_t {static_cast(qRed(color)), + static_cast(qGreen(color)), + static_cast(qBlue(color)), + static_cast(qAlpha(color))}; +} + } // namespace color } // namespace util } // namespace qt diff --git a/scwx-qt/source/scwx/qt/util/color.hpp b/scwx-qt/source/scwx/qt/util/color.hpp index cbd95660..d38f033f 100644 --- a/scwx-qt/source/scwx/qt/util/color.hpp +++ b/scwx-qt/source/scwx/qt/util/color.hpp @@ -11,8 +11,24 @@ namespace util namespace color { +/** + * Converts a Boost.GIL 8-bit RGBA pixel to an ARGB string used by Qt libraries. + * + * @param color RGBA8 pixel + * + * @return ARGB string in the format #AARRGGBB + */ std::string ToArgbString(const boost::gil::rgba8_pixel_t& color); +/** + * Converts an ARGB string used by Qt libraries to a Boost.GIL 8-bit RGBA pixel. + * + * @param argbString ARGB string in the format #AARRGGBB + * + * @return RGBA8 pixel + */ +boost::gil::rgba8_pixel_t ToRgba8PixelT(const std::string& argbString); + } // namespace color } // namespace util } // namespace qt