summaryrefslogtreecommitdiff
path: root/src/style
diff options
context:
space:
mode:
authorKonstantin Käfer <mail@kkaefer.com>2014-05-26 12:30:27 +0200
committerKonstantin Käfer <mail@kkaefer.com>2014-05-26 12:30:27 +0200
commite506d6bcdddc2cda548e7e1dd064519b0856d534 (patch)
treeb12f5e53fe9552c83f27a0043f503570f92fc97c /src/style
parenta7c3b8b6f589cbe78744ac5eb4e1c1b2214c0c88 (diff)
downloadqtlocation-mapboxgl-e506d6bcdddc2cda548e7e1dd064519b0856d534.tar.gz
generalize stylesheet parse function
Diffstat (limited to 'src/style')
-rw-r--r--src/style/style.cpp8
-rw-r--r--src/style/style_parser.cpp128
2 files changed, 40 insertions, 96 deletions
diff --git a/src/style/style.cpp b/src/style/style.cpp
index fce70eadeb..e3adc3c897 100644
--- a/src/style/style.cpp
+++ b/src/style/style.cpp
@@ -115,12 +115,12 @@ void Style::cascade(float z) {
fill.image = layer.image.get();
}
- if (layer.prerendered) {
- fill.prerendered = layer.prerendered.get().evaluate<bool>(z);
+ if (layer.prerender) {
+ fill.prerender = layer.prerender.get();
}
- if (layer.blur) {
- fill.blur = layer.blur.get().evaluate<float>(z);
+ if (layer.prerenderBlur) {
+ fill.prerenderBlur = layer.prerenderBlur.get();
}
}
diff --git a/src/style/style_parser.cpp b/src/style/style_parser.cpp
index 52ef85f1dc..b6e73147dc 100644
--- a/src/style/style_parser.cpp
+++ b/src/style/style_parser.cpp
@@ -500,10 +500,8 @@ PropertyTransition StyleParser::parseTransition(JSVal value, std::string propert
return transition;
}
-FillClass StyleParser::parseFillClass(JSVal value) {
- FillClass klass;
-
- if (value.HasMember("enabled")) {
+void StyleParser::parseGenericClass(GenericClass &klass, JSVal value) {
+ if (value.HasMember("enabled")) {
klass.enabled = parseFunction(value["enabled"]);
}
@@ -517,6 +515,33 @@ FillClass StyleParser::parseFillClass(JSVal value) {
klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
}
+ if (value.HasMember("opacity")) {
+ klass.opacity = parseFunction(value["opacity"]);
+ klass.opacity_transition = parseTransition(value, "opacity");
+ }
+
+ if (value.HasMember("prerender")) {
+ klass.prerender = parseBoolean(value["prerender"]);
+ }
+
+ if (value.HasMember("prerender-buffer")) {
+ klass.prerenderBuffer = toNumber<double>(parseValue(value["prerender-buffer"]));
+ }
+
+ if (value.HasMember("prerender-size")) {
+ klass.prerenderBuffer = toNumber<uint64_t>(parseValue(value["prerender-size"]));
+ }
+
+ if (value.HasMember("prerender-blur")) {
+ klass.prerenderBlur = parseBoolean(value["prerender-blur"]);
+ }
+}
+
+FillClass StyleParser::parseFillClass(JSVal value) {
+ FillClass klass;
+
+ parseGenericClass(klass, value);
+
if (value.HasMember("winding")) {
throw std::runtime_error("winding in stylesheets not yet supported");
}
@@ -537,42 +562,17 @@ FillClass StyleParser::parseFillClass(JSVal value) {
klass.antialias = parseBoolean(value["antialias"]);
}
- if (value.HasMember("prerendered")) {
- klass.prerendered = parseBoolean(value["prerendered"]);
- }
-
- if (value.HasMember("blur")) {
- klass.blur = parseFunction(value["blur"]);
- }
-
if (value.HasMember("image")) {
klass.image = parseString(value["image"]);
}
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
-
return klass;
}
LineClass StyleParser::parseLineClass(JSVal value) {
LineClass klass;
- if (value.HasMember("enabled")) {
- klass.enabled = parseFunction(value["enabled"]);
- }
-
- if (value.HasMember("translate")) {
- std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
- klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
- klass.translate_transition = parseTransition(value, "translate");
- }
-
- if (value.HasMember("translate-anchor")) {
- klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
- }
+ parseGenericClass(klass, value);
if (value.HasMember("color")) {
klass.color = parseColor(value["color"]);
@@ -584,11 +584,6 @@ LineClass StyleParser::parseLineClass(JSVal value) {
klass.width_transition = parseTransition(value, "width");
}
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
-
if (value.HasMember("dasharray")) {
std::vector<FunctionProperty> values = parseArray(value["dasharray"], 2);
klass.dash_array = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
@@ -601,30 +596,13 @@ LineClass StyleParser::parseLineClass(JSVal value) {
IconClass StyleParser::parseIconClass(JSVal value) {
IconClass klass;
- if (value.HasMember("enabled")) {
- klass.enabled = parseFunction(value["enabled"]);
- }
-
- if (value.HasMember("translate")) {
- std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
- klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
- klass.translate_transition = parseTransition(value, "translate");
- }
-
- if (value.HasMember("translate-anchor")) {
- klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
- }
+ parseGenericClass(klass, value);
if (value.HasMember("color")) {
klass.color = parseColor(value["color"]);
klass.color_transition = parseTransition(value, "color");
}
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
-
if (value.HasMember("image")) {
klass.image = parseString(value["image"]);
}
@@ -649,19 +627,7 @@ IconClass StyleParser::parseIconClass(JSVal value) {
TextClass StyleParser::parseTextClass(JSVal value) {
TextClass klass;
- if (value.HasMember("enabled")) {
- klass.enabled = parseFunction(value["enabled"]);
- }
-
- if (value.HasMember("translate")) {
- std::vector<FunctionProperty> values = parseArray(value["translate"], 2);
- klass.translate = std::array<FunctionProperty, 2> {{ values[0], values[1] }};
- klass.translate_transition = parseTransition(value, "translate");
- }
-
- if (value.HasMember("translate-anchor")) {
- klass.translateAnchor = parseTranslateAnchor(value["translate-anchor"]);
- }
+ parseGenericClass(klass, value);
if (value.HasMember("color")) {
klass.color = parseColor(value["color"]);
@@ -695,25 +661,13 @@ TextClass StyleParser::parseTextClass(JSVal value) {
klass.always_visible = parseFunction(value["alwaysVisible"]);
}
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
-
return klass;
}
RasterClass StyleParser::parseRasterClass(JSVal value) {
RasterClass klass;
- if (value.HasMember("enabled")) {
- klass.enabled = parseFunction(value["enabled"]);
- }
-
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
+ parseGenericClass(klass, value);
return klass;
}
@@ -721,14 +675,7 @@ RasterClass StyleParser::parseRasterClass(JSVal value) {
CompositeClass StyleParser::parseCompositeClass(JSVal value) {
CompositeClass klass;
- if (value.HasMember("enabled")) {
- klass.enabled = parseFunction(value["enabled"]);
- }
-
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
+ parseGenericClass(klass, value);
return klass;
}
@@ -736,16 +683,13 @@ CompositeClass StyleParser::parseCompositeClass(JSVal value) {
BackgroundClass StyleParser::parseBackgroundClass(JSVal value) {
BackgroundClass klass;
+ parseGenericClass(klass, value);
+
if (value.HasMember("color")) {
klass.color = parseColor(value["color"]);
klass.color_transition = parseTransition(value, "color");
}
- if (value.HasMember("opacity")) {
- klass.opacity = parseFunction(value["opacity"]);
- klass.opacity_transition = parseTransition(value, "opacity");
- }
-
return klass;
}