diff --git a/scwx-qt/res/palettes/wct/CC.pal b/scwx-qt/res/palettes/wct/CC.pal new file mode 100644 index 00000000..32aec57e --- /dev/null +++ b/scwx-qt/res/palettes/wct/CC.pal @@ -0,0 +1,19 @@ +; NEXRAD Level-3 palette for product code 161, NxC, Corr. Coeff. + + +Units: Unitless +Scale: 100 + +Color: 105 255 180 215 +Color: 100 255 180 215 +Color: 100 139 30 77 +Color: 97 225 3 0 +Color: 95 255 140 0 +Color: 90 255 255 0 +Color: 85 135 215 10 +Color: 80 95 245 100 +Color: 75 120 120 255 +Color: 60 10 10 190 +Color: 45 15 15 140 +Color: 20 100 100 100 +RF: 119 0 125 diff --git a/scwx-qt/res/palettes/wct/DOD_DSD.pal b/scwx-qt/res/palettes/wct/DOD_DSD.pal new file mode 100644 index 00000000..46f7e78e --- /dev/null +++ b/scwx-qt/res/palettes/wct/DOD_DSD.pal @@ -0,0 +1,24 @@ +; NEXRAD Level-3 palette for product code 174 - Dig One Hr Pcp Diff (Dual Pol) - DOD +; NEXRAD Level-3 palette for product code 175 - Storm Total Diff (Dual Pol) - DSD + +Units: IN + +Scale: 0.03937 ; convert internal units (MM) to INCHES +Color: 3.0 255 255 255 +Color: 2.5 250 190 189 +Color: 2.0 255 0 0 +Color: 1.5 255 182 0 +Color: 1.0 255 255 0 +Color: 0.6 189 255 0 +Color: 0.3 0 255 0 +Color: 0.1 99 215 99 +Color: 0.0 60 60 60 +#Color: 0.0 255 255 255 +Color: -0.1 99 223 222 +Color: -0.3 0 255 255 +Color: -0.6 0 174 255 +Color: -1.0 0 0 255 +Color: -1.5 198 0 255 +Color: -2.0 255 40 255 +Color: -2.5 255 190 255 +Color: -3.0 255 255 255 diff --git a/scwx-qt/res/palettes/wct/DR.pal b/scwx-qt/res/palettes/wct/DR.pal new file mode 100644 index 00000000..dc1615ab --- /dev/null +++ b/scwx-qt/res/palettes/wct/DR.pal @@ -0,0 +1,24 @@ +; NEXRAD Level-3 palette for product code 32 + +Units: dBZ + +Color: 75 235 235 235 +Color: 70 153 85 201 +Color: 65 255 0 255 +Color: 60 192 0 0 +Color: 55 214 0 0 +Color: 50 255 0 0 +Color: 45 255 144 0 +Color: 40 231 192 0 +Color: 35 255 255 0 +Color: 30 0 144 0 +Color: 25 0 200 0 +Color: 20 0 255 0 +Color: 15 0 0 246 +Color: 10 1 160 246 +Color: 5 0 236 236 +Color: 0 187 255 255 +Color: -5 174 238 238 +Color: -10 150 205 205 +Color: -15 102 139 139 +Color: -20 50 79 79 diff --git a/scwx-qt/res/palettes/wct/DV.pal b/scwx-qt/res/palettes/wct/DV.pal new file mode 100644 index 00000000..1838d57d --- /dev/null +++ b/scwx-qt/res/palettes/wct/DV.pal @@ -0,0 +1,20 @@ +; NEXRAD Level-3 palette for product code 99 +; L3PC_LONG_RANGE_BASE_VELOCITY_8BIT + +Units: KT +Color: +70 255 0 0 +Color: +60 255 0 0 +Color: +50 210 0 0 +Color: +40 180 0 0 +Color: +30 150 0 0 +Color: +20 115 0 0 +Color: +10 70 40 40 +Color: 0 70 70 70 +Color: -10 40 70 40 +Color: -20 0 115 0 +Color: -30 0 150 0 +Color: -40 0 180 0 +Color: -50 0 210 0 +Color: -60 0 255 0 +Color: -70 0 255 0 +RF: 119 0 125 diff --git a/scwx-qt/res/palettes/wct/Default16.pal b/scwx-qt/res/palettes/wct/Default16.pal new file mode 100644 index 00000000..0680d22c --- /dev/null +++ b/scwx-qt/res/palettes/wct/Default16.pal @@ -0,0 +1,18 @@ +; Default 16 color palette + +SolidColor: 0 0 0 0 +SolidColor: 1 156 156 156 +SolidColor: 2 118 118 118 +SolidColor: 3 255 170 170 +SolidColor: 4 238 140 140 +SolidColor: 5 201 112 112 +SolidColor: 6 0 251 144 +SolidColor: 7 0 187 0 +SolidColor: 8 255 255 112 +SolidColor: 9 208 208 96 +SolidColor: 10 255 96 96 +SolidColor: 11 218 0 0 +SolidColor: 12 174 0 0 +SolidColor: 13 0 0 255 +SolidColor: 14 255 255 255 +SolidColor: 15 231 0 255 diff --git a/scwx-qt/res/palettes/wct/ET.pal b/scwx-qt/res/palettes/wct/ET.pal new file mode 100644 index 00000000..11170e15 --- /dev/null +++ b/scwx-qt/res/palettes/wct/ET.pal @@ -0,0 +1,18 @@ +; NEXRAD Level-3 palette for product code 135 - EET - Enhanced Echo Tops + +Units: KFT +Color: 75 231 0 255 +Color: 70 255 255 255 +Color: 65 255 0 0 +Color: 60 174 0 0 +Color: 55 255 255 0 +Color: 50 254 191 0 +Color: 45 0 239 0 +Color: 40 0 187 0 +Color: 35 0 251 144 +Color: 30 50 0 150 +Color: 25 0 144 204 +Color: 20 0 176 255 +Color: 15 0 224 255 +Color: 10 118 118 118 +Color: 5 156 156 156 diff --git a/scwx-qt/res/palettes/wct/KDP.pal b/scwx-qt/res/palettes/wct/KDP.pal new file mode 100644 index 00000000..a737d24a --- /dev/null +++ b/scwx-qt/res/palettes/wct/KDP.pal @@ -0,0 +1,19 @@ +; NEXRAD Level-3 palette for product code 163, NxK, Spec. Diff. Phase + +Units: DEG/KM + +Color: 7.0 255 205 130 +Color: 5.0 255 120 20 +Color: 4.0 255 255 0 +Color: 3.0 10 255 10 +Color: 2.5 20 185 50 +Color: 2.0 98 255 250 +Color: 1.5 150 129 183 +Color: 1.0 235 120 185 +Color: 0.5 231 71 92 +Color: 0.25 165 8 44 +Color: 0.0 115 0 25 +Color: -0.5 75 0 0 +Color: -1.0 75 75 75 +Color: -2.0 118 118 118 +RF: 119 0 125 diff --git a/scwx-qt/res/palettes/wct/KDP2.pal b/scwx-qt/res/palettes/wct/KDP2.pal new file mode 100644 index 00000000..c5c9b56b --- /dev/null +++ b/scwx-qt/res/palettes/wct/KDP2.pal @@ -0,0 +1,14 @@ +; NEXRAD Level-3 palette for product code 163, NxK, Spec. Diff. Phase + +Units: DEG + +Color: 180.0 255 140 255 +Color: 120.0 90 0 0 +Color: 90.0 255 125 0 +Color: 75.0 255 255 0 +Color: 60.0 30 100 0 +Color: 45.0 0 255 0 +Color: 30.0 10 20 95 +Color: 15.0 210 210 180 +Color: 0.0 255 255 255 +RF: 119 0 125 diff --git a/scwx-qt/res/palettes/wct/OHP.pal b/scwx-qt/res/palettes/wct/OHP.pal new file mode 100644 index 00000000..2fe5c6cf --- /dev/null +++ b/scwx-qt/res/palettes/wct/OHP.pal @@ -0,0 +1,20 @@ +; NEXRAD Level-3 palette for product code 169, OHA, One Hour Precip, 16 Levels + +Units IN + +Scale: 0.03937 ; convert internal units (MM) to INCHES +Color: 4.0 255 255 255 +Color: 3.0 174 0 0 +Color: 2.75 255 0 0 +Color: 2.5 255 170 0 +Color: 2.25 255 255 0 +Color: 2.0 50 0 150 +Color: 1.75 0 0 255 +Color: 1.5 175 50 125 +Color: 1.25 255 0 255 +Color: 1.0 0 143 0 +Color: 0.75 0 255 0 +Color: 0.5 0 175 175 +Color: 0.3 0 255 255 +Color: 0.1 118 118 118 +Color: 0.0 175 255 250 diff --git a/scwx-qt/res/palettes/wct/SRV.pal b/scwx-qt/res/palettes/wct/SRV.pal new file mode 100644 index 00000000..debe5d3c --- /dev/null +++ b/scwx-qt/res/palettes/wct/SRV.pal @@ -0,0 +1,21 @@ +; NEXRAD Level-3 palette for product code 56 - NxS Spectum Width + +Units: KT + +;Scale: 1.9426 ; converts internal units (M/S) to KTS + +RF: 119 0 125 +Color: 75 255 0 0 +Color: 60 208 122 0 +Color: 45 174 0 0 +Color: 30 255 255 0 +Color: 20 255 207 0 +Color: 10 248 135 0 +Color: 0 118 118 118 +Color: -1 205 192 159 +Color: -10 0 143 0 +Color: -20 0 187 0 +Color: -30 0 251 144 +Color: -45 50 0 150 +Color: -60 0 138 255 +Color: -75 0 224 255 diff --git a/scwx-qt/res/palettes/wct/STP.pal b/scwx-qt/res/palettes/wct/STP.pal new file mode 100644 index 00000000..55019226 --- /dev/null +++ b/scwx-qt/res/palettes/wct/STP.pal @@ -0,0 +1,22 @@ +; NEXRAD Level-3 palette for product code 170, DAA, One Hour Precip 8-bit + +Units: IN + +Scale: 0.03937 ; convert internal units (MM) to INCHES +Color: 8.0 255 255 255 +Color: 6.0 174 0 0 +Color: 4.0 255 0 0 +Color: 3.0 255 170 0 +Color: 2.5 255 255 0 +Color: 2.0 50 0 150 +Color: 1.75 0 0 255 +Color: 1.50 175 50 125 +Color: 1.25 255 0 255 +Color: 1.00 0 143 0 +Color: 0.75 0 255 0 +Color: 0.50 0 175 175 +Color: 0.25 0 255 255 +Color: 0.10 118 118 118 +#Color: 0.01 175 255 250 +Color: 0.01 170 170 170 +Color: 0.0 0 0 0 diff --git a/scwx-qt/res/palettes/wct/SW.pal b/scwx-qt/res/palettes/wct/SW.pal new file mode 100644 index 00000000..c202d423 --- /dev/null +++ b/scwx-qt/res/palettes/wct/SW.pal @@ -0,0 +1,13 @@ +; NEXRAD Level-3 palette for product code 155 - custom super-res l3 product matching l2, produced by AllisonHouse(?) + +Units: KT + +# Category labels are replaced by categories decoded in product header + +Color: 20 255 255 0 +Color: 16 208 112 0 +Color: 12 255 0 0 +Color: 8 0 187 0 +Color: 4 156 156 156 +Color: 0 118 118 118 +RF: 119 0 125 diff --git a/scwx-qt/res/palettes/wct/VIL.pal b/scwx-qt/res/palettes/wct/VIL.pal new file mode 100644 index 00000000..011c7cf0 --- /dev/null +++ b/scwx-qt/res/palettes/wct/VIL.pal @@ -0,0 +1,22 @@ +; NEXRAD Level-3 palette for product code 134 + +; DVL DIG VERT INT LIQUID + +Units: KG/M2 + +Color: 75 235 235 235 +Color: 70 153 85 201 +Color: 65 255 0 255 +Color: 60 192 0 0 +Color: 55 214 0 0 +Color: 50 255 0 0 +Color: 45 255 144 0 +Color: 40 231 192 0 +Color: 35 255 255 0 +Color: 30 0 144 0 +Color: 25 0 200 0 +Color: 20 0 255 0 +Color: 15 0 0 246 +Color: 10 1 160 246 +Color: 5 0 236 236 +Color: 0.1 120 120 120 diff --git a/scwx-qt/res/palettes/wct/ZDR.pal b/scwx-qt/res/palettes/wct/ZDR.pal new file mode 100644 index 00000000..a884abe7 --- /dev/null +++ b/scwx-qt/res/palettes/wct/ZDR.pal @@ -0,0 +1,17 @@ +; NEXRAD Level-3 palette for product code 159, NnX, Diff. Reflect, ZDR + +Units: DB + +Color: 7.9 145 45 150 +Color: 6.0 255 255 255 +Color: 5.0 240 120 180 +Color: 4.0 175 0 0 +Color: 3.0 220 10 5 +Color: 2.0 255 255 100 +Color: 1.5 90 221 98 +Color: 1.0 68 248 212 +Color: 0.25 10 10 155 +Color: 0.0 142 121 181 +Color: 0.0 220 220 220 +Color: -7.9 0 0 0 +RF: 119 0 125 diff --git a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp index b73bd1ee..e5f8cb7a 100644 --- a/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp +++ b/scwx-qt/source/scwx/qt/ui/settings_dialog.cpp @@ -40,13 +40,13 @@ static const std::array, 15> std::pair {"BV", "BV"}, std::pair {"SW", "SW"}, std::pair {"ZDR", "ZDR"}, - std::pair {"PHI2", "PHI2"}, + std::pair {"PHI2", "KDP (L2)"}, std::pair {"CC", "CC"}, std::pair {"DOD", "DOD"}, std::pair {"DSD", "DSD"}, std::pair {"ET", "ET"}, std::pair {"OHP", "OHP"}, - std::pair {"PHI3", "PHI3"}, + std::pair {"PHI3", "KDP"}, std::pair {"SRV", "SRV"}, std::pair {"STP", "STP"}, std::pair {"VIL", "VIL"}, @@ -62,7 +62,7 @@ static const std::unordered_map {"ZDR", {0u, 1058u, 418.0f, 32.0f}}, {"PHI2", {0u, 1023u, 2.0f, 2.8361f}}, {"CC", {0u, 255u, -60.5f, 300.0f}}, - {"DOD", {0u, 255u, 128.0f, 6.0f}}, + {"DOD", {0u, 255u, 128.0f, 1.5f}}, {"DSD", {0u, 255u, 128.0f, 1.5f}}, {"ET", {0u, 255u, 2.0f, 1.0f}}, {"OHP", {0u, 255u, 0.0f, 2.5f}}, diff --git a/wxdata/source/scwx/common/color_table.cpp b/wxdata/source/scwx/common/color_table.cpp index 83fc01ee..7636ed09 100644 --- a/wxdata/source/scwx/common/color_table.cpp +++ b/wxdata/source/scwx/common/color_table.cpp @@ -68,7 +68,7 @@ public: ColorTable::ColorTable() : p(std::make_unique()) {} ColorTable::~ColorTable() = default; -ColorTable::ColorTable(ColorTable&&) noexcept = default; +ColorTable::ColorTable(ColorTable&&) noexcept = default; ColorTable& ColorTable::operator=(ColorTable&&) noexcept = default; boost::gil::rgba8_pixel_t ColorTable::rf_color() const @@ -268,16 +268,19 @@ ParseColor(const std::vector& tokenList, bool hasAlpha) { - uint8_t r; - uint8_t g; - uint8_t b; + uint8_t r {}; + uint8_t g {}; + uint8_t b {}; uint8_t a = 255; if (colorMode == ColorMode::RGBA) { - r = StringToDecimal(tokenList[startIndex + 0]); - g = StringToDecimal(tokenList[startIndex + 1]); - b = StringToDecimal(tokenList[startIndex + 2]); + if (tokenList.size() >= startIndex + 3) + { + r = StringToDecimal(tokenList[startIndex + 0]); + g = StringToDecimal(tokenList[startIndex + 1]); + b = StringToDecimal(tokenList[startIndex + 2]); + } if (hasAlpha && tokenList.size() >= startIndex + 4) { @@ -286,9 +289,17 @@ ParseColor(const std::vector& tokenList, } else // if (colorMode == ColorMode::HSLuv) { - double h = std::stod(tokenList[startIndex + 0]); - double s = std::stod(tokenList[startIndex + 1]); - double l = std::stod(tokenList[startIndex + 2]); + double h {}; + double s {}; + double l {}; + + if (tokenList.size() >= startIndex + 3) + { + h = std::stod(tokenList[startIndex + 0]); + s = std::stod(tokenList[startIndex + 1]); + l = std::stod(tokenList[startIndex + 2]); + } + double dr; double dg; double db;