summaryrefslogtreecommitdiff
path: root/src/csscolorparser
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-10-30 16:43:16 -0400
committerKonstantin Käfer <mail@kkaefer.com>2014-10-30 16:43:36 -0400
commit8712beff80fdee10c3eb9634b65cfeb659944936 (patch)
tree9d284fa083204cb27929b4015a44c4ef75501c10 /src/csscolorparser
parentae3ef1214242da28900bdd6727c6d2d19220f50f (diff)
downloadqtlocation-mapboxgl-8712beff80fdee10c3eb9634b65cfeb659944936.tar.gz
don't use std::map for checking color constants
Diffstat (limited to 'src/csscolorparser')
-rw-r--r--src/csscolorparser/csscolorparser.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/csscolorparser/csscolorparser.cpp b/src/csscolorparser/csscolorparser.cpp
index d52c6280cf..938470f192 100644
--- a/src/csscolorparser/csscolorparser.cpp
+++ b/src/csscolorparser/csscolorparser.cpp
@@ -29,12 +29,12 @@
#include <sstream>
#include <cmath>
#include <algorithm>
-#include <map>
using namespace CSSColorParser;
// http://www.w3.org/TR/css3-color/
-const std::map<std::string, Color> kCSSColorTable = {
+struct NamedColor { const char *const name; const Color color; };
+const NamedColor namedColors[] = {
{ "transparent", { 0, 0, 0, 0 } }, { "aliceblue", { 240, 248, 255, 1 } },
{ "antiquewhite", { 250, 235, 215, 1 } }, { "aqua", { 0, 255, 255, 1 } },
{ "aquamarine", { 127, 255, 212, 1 } }, { "azure", { 240, 255, 255, 1 } },
@@ -111,6 +111,8 @@ const std::map<std::string, Color> kCSSColorTable = {
{ "yellow", { 255, 255, 0, 1 } }, { "yellowgreen", { 154, 205, 50, 1 } }
};
+const size_t namedColorCount = sizeof (namedColors) / sizeof (NamedColor);
+
template <typename T>
uint8_t clamp_css_byte(T i) { // Clamp to integer 0 .. 255.
@@ -187,10 +189,11 @@ Color CSSColorParser::parse(const std::string& css_str) {
// Convert to lowercase.
std::transform(str.begin(), str.end(), str.begin(), ::tolower);
- // Color keywords (and transparent) lookup.
- auto it = kCSSColorTable.find(str);
- if (it != kCSSColorTable.end()) {
- return it->second;
+
+ for (size_t i = 0; i < namedColorCount; i++) {
+ if (str == namedColors[i].name) {
+ return namedColors[i].color;
+ }
}
// #abc and #abc123 syntax.