generalize stylesheet parse function

This commit is contained in:
Konstantin Käfer
2014-05-26 12:30:27 +02:00
parent a7c3b8b6f5
commit e506d6bcdd
6 changed files with 62 additions and 102 deletions

View File

@@ -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;
}