From 10fe904011eef945e14a0b47a8f4739aa578e523 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Wed, 25 Oct 2023 22:30:47 -0500 Subject: [PATCH] Add map types string conversions --- scwx-qt/source/scwx/qt/types/map_types.cpp | 62 ++++++++++++++++++---- scwx-qt/source/scwx/qt/types/map_types.hpp | 10 +++- 2 files changed, 59 insertions(+), 13 deletions(-) diff --git a/scwx-qt/source/scwx/qt/types/map_types.cpp b/scwx-qt/source/scwx/qt/types/map_types.cpp index 57612242..21202914 100644 --- a/scwx-qt/source/scwx/qt/types/map_types.cpp +++ b/scwx-qt/source/scwx/qt/types/map_types.cpp @@ -2,6 +2,8 @@ #include +#include + namespace scwx { namespace qt @@ -9,27 +11,65 @@ namespace qt namespace types { -static const std::unordered_map layerTypeName_ { - {types::LayerType::Map, "Map"}, - {types::LayerType::Radar, "Radar"}, - {types::LayerType::Alert, "Alert"}, - {types::LayerType::Placefile, "Placefile"}, - {types::LayerType::Information, "Information"}}; +static const std::unordered_map layerTypeName_ { + {LayerType::Map, "Map"}, + {LayerType::Radar, "Radar"}, + {LayerType::Alert, "Alert"}, + {LayerType::Placefile, "Placefile"}, + {LayerType::Information, "Information"}, + {LayerType::Unknown, "?"}}; -static const std::unordered_map layerName_ { - {types::Layer::MapOverlay, "Map Overlay"}, - {types::Layer::ColorTable, "Color Table"}, - {types::Layer::MapSymbology, "Map Symbology"}, - {types::Layer::MapUnderlay, "Map Underlay"}}; +static const std::unordered_map layerName_ { + {Layer::MapOverlay, "Map Overlay"}, + {Layer::ColorTable, "Color Table"}, + {Layer::MapSymbology, "Map Symbology"}, + {Layer::MapUnderlay, "Map Underlay"}, + {Layer::Unknown, "?"}}; static const std::unordered_map mapTimeName_ { {MapTime::Live, "Live"}, {MapTime::Archive, "Archive"}}; +LayerType GetLayerType(const std::string& name) +{ + auto result = + std::find_if(layerTypeName_.cbegin(), + layerTypeName_.cend(), + [&](const std::pair& pair) -> bool + { return boost::iequals(pair.second, name); }); + + if (result != layerTypeName_.cend()) + { + return result->first; + } + else + { + return LayerType::Unknown; + } +} + std::string GetLayerTypeName(LayerType layerType) { return layerTypeName_.at(layerType); } +Layer GetLayer(const std::string& name) +{ + auto result = + std::find_if(layerName_.cbegin(), + layerName_.cend(), + [&](const std::pair& pair) -> bool + { return boost::iequals(pair.second, name); }); + + if (result != layerName_.cend()) + { + return result->first; + } + else + { + return Layer::Unknown; + } +} + std::string GetLayerName(Layer layer) { return layerName_.at(layer); diff --git a/scwx-qt/source/scwx/qt/types/map_types.hpp b/scwx-qt/source/scwx/qt/types/map_types.hpp index d9dd5548..ca2ecf04 100644 --- a/scwx-qt/source/scwx/qt/types/map_types.hpp +++ b/scwx-qt/source/scwx/qt/types/map_types.hpp @@ -15,7 +15,8 @@ enum class LayerType Radar, Alert, Placefile, - Information + Information, + Unknown }; enum class Layer @@ -23,7 +24,8 @@ enum class Layer MapOverlay, ColorTable, MapSymbology, - MapUnderlay + MapUnderlay, + Unknown }; enum class AnimationState @@ -46,8 +48,12 @@ enum class NoUpdateReason InvalidData }; +LayerType GetLayerType(const std::string& name); std::string GetLayerTypeName(LayerType layerType); + +Layer GetLayer(const std::string& name); std::string GetLayerName(Layer layer); + std::string GetMapTimeName(MapTime mapTime); } // namespace types