From 93cd4c5c7b0939038eab38a6f6eb71eae4014acb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Ka=CC=88fer?= Date: Mon, 30 Jun 2014 11:46:03 +0200 Subject: [PATCH] move StyleLayerGroup and PropertyTransition to their own files --- include/llmr/map/map.hpp | 2 +- include/llmr/map/tile_parser.hpp | 4 +- .../llmr/style/applied_class_properties.hpp | 8 +- include/llmr/style/class_properties.hpp | 10 +-- include/llmr/style/property_transition.hpp | 15 ++++ include/llmr/style/style.hpp | 27 +++---- include/llmr/style/style_layer.hpp | 14 ++-- include/llmr/style/style_layer_group.hpp | 21 +++++ include/llmr/style/style_parser.hpp | 2 +- src/map/map.cpp | 31 ++------ src/map/tile_parser.cpp | 7 +- src/style/applied_class_properties.cpp | 11 +++ src/style/style.cpp | 50 +++++------- src/style/style_layer.cpp | 13 ++-- src/style/style_layer_group.cpp | 14 ++++ src/style/style_parser.cpp | 76 +++++++++---------- 16 files changed, 166 insertions(+), 139 deletions(-) create mode 100644 include/llmr/style/property_transition.hpp create mode 100644 include/llmr/style/style_layer_group.hpp create mode 100644 src/style/applied_class_properties.cpp create mode 100644 src/style/style_layer_group.cpp diff --git a/include/llmr/map/map.hpp b/include/llmr/map/map.hpp index 54cbdcb16..75090f941 100644 --- a/include/llmr/map/map.hpp +++ b/include/llmr/map/map.hpp @@ -132,7 +132,7 @@ private: // Unconditionally performs a render with the current map state. void render(); - void renderLayers(std::shared_ptr layers); + void renderLayers(std::shared_ptr group); void renderLayer(std::shared_ptr layer_desc, RenderPass pass); private: diff --git a/include/llmr/map/tile_parser.hpp b/include/llmr/map/tile_parser.hpp index c4fd3d8bc..e18c2746a 100644 --- a/include/llmr/map/tile_parser.hpp +++ b/include/llmr/map/tile_parser.hpp @@ -16,7 +16,7 @@ class GlyphStore; class SpriteAtlas; class VectorTileData; class StyleLayer; -typedef std::vector> StyleLayerGroup; +class StyleLayerGroup; class StyleBucket; class StyleBucketFill; class StyleBucketLine; @@ -38,7 +38,7 @@ public: private: bool obsolete() const; void parseGlyphs(); - void parseStyleLayers(std::shared_ptr layers); + void parseStyleLayers(std::shared_ptr group); void addGlyph(uint64_t tileid, const std::string stackname, const std::u32string &string, const FontStack &fontStack, GlyphAtlas &glyphAtlas, GlyphPositions &face); std::unique_ptr createBucket(std::shared_ptr bucket_desc); diff --git a/include/llmr/style/applied_class_properties.hpp b/include/llmr/style/applied_class_properties.hpp index f90102200..cda3a42a4 100644 --- a/include/llmr/style/applied_class_properties.hpp +++ b/include/llmr/style/applied_class_properties.hpp @@ -14,10 +14,10 @@ public: AppliedClassProperty(ClassID class_id, timestamp begin, timestamp end, const PropertyValue &value); public: - ClassID name; - timestamp begin; - timestamp end; - PropertyValue value; + const ClassID name; + const timestamp begin; + const timestamp end; + const PropertyValue value; }; diff --git a/include/llmr/style/class_properties.hpp b/include/llmr/style/class_properties.hpp index 79b16e51a..3755563fe 100644 --- a/include/llmr/style/class_properties.hpp +++ b/include/llmr/style/class_properties.hpp @@ -3,16 +3,12 @@ #include #include +#include #include namespace llmr { -struct ClassPropertyTransition { - uint16_t duration = 0; - uint16_t delay = 0; -}; - class ClassProperties { public: inline ClassProperties() {} @@ -28,7 +24,7 @@ public: transitions.emplace(::std::forward(args)...); } - inline const ClassPropertyTransition &getTransition(PropertyKey key, const ClassPropertyTransition &defaultTransition) const { + inline const PropertyTransition &getTransition(PropertyKey key, const PropertyTransition &defaultTransition) const { auto it = transitions.find(key); if (it == transitions.end()) { return defaultTransition; @@ -47,7 +43,7 @@ public: public: std::map properties; - std::map transitions; + std::map transitions; }; } diff --git a/include/llmr/style/property_transition.hpp b/include/llmr/style/property_transition.hpp new file mode 100644 index 000000000..017527443 --- /dev/null +++ b/include/llmr/style/property_transition.hpp @@ -0,0 +1,15 @@ +#ifndef LLMR_STYLE_PROPERTY_TRANSITION +#define LLMR_STYLE_PROPERTY_TRANSITION + +#include + +namespace llmr { + +struct PropertyTransition { + uint16_t duration = 0; + uint16_t delay = 0; +}; + +} + +#endif \ No newline at end of file diff --git a/include/llmr/style/style.hpp b/include/llmr/style/style.hpp index 383aa5d75..62864b75f 100644 --- a/include/llmr/style/style.hpp +++ b/include/llmr/style/style.hpp @@ -1,11 +1,12 @@ #ifndef LLMR_STYLE_STYLE #define LLMR_STYLE_STYLE -#include +#include #include #include +#include #include #include #include @@ -17,7 +18,7 @@ namespace llmr { class Sprite; class Source; class StyleLayer; -typedef std::vector> StyleLayerGroup; +class StyleLayerGroup; class Style { public: @@ -26,20 +27,13 @@ public: public: Style(); - void reset(); - void loadJSON(const uint8_t *const data); size_t layerCount() const; - void cascade(float z); + void updateProperties(float z, timestamp t); - bool needsTransition() const; - void updateTransitions(timestamp now); - void cancelTransitions(); + void setDefaultTransitionDuration(uint16_t duration_milliseconds = 0); - void setDefaultTransitionDuration(uint64_t duration_milliseconds = 0); - - void updateSources(); const std::set> getActiveSources() const; const std::vector &getAppliedClasses() const; @@ -51,14 +45,17 @@ public: std::shared_ptr background; std::vector appliedClasses; - private: - void updateSources(const std::shared_ptr &layers); - void cascade(const std::shared_ptr &layers, float z); + void updateSources(); + void updateSources(const std::shared_ptr &group); + + void updateProperties(const std::shared_ptr &group, float z, timestamp t); + + void updateClasses(); private: std::set> activeSources; - uint64_t default_transition_duration = 0; + PropertyTransition defaultTransition; bool initial_render_complete = false; mutable uv::rwlock mtx; diff --git a/include/llmr/style/style_layer.hpp b/include/llmr/style/style_layer.hpp index b45982b79..89d4e1476 100644 --- a/include/llmr/style/style_layer.hpp +++ b/include/llmr/style/style_layer.hpp @@ -16,9 +16,7 @@ namespace llmr { class StyleBucket; - -class StyleLayer; -typedef std::vector> StyleLayerGroup; +class StyleLayerGroup; class StyleLayer { public: @@ -33,16 +31,21 @@ public: } } + // Determines whether this layer is the background layer. bool isBackground() const; + // Updates the StyleProperties information in this layer by evaluating all + // pending transitions and applied classes in order. + void updateStyle(float z); + // Sets the list of classes and creates transitions to the currently applied values. void setClasses(const std::vector &class_names, timestamp now, - const ClassPropertyTransition &defaultTransition); + const PropertyTransition &defaultTransition); private: // Applies all properties from a class, if they haven't been applied already. void applyClassProperties(ClassID class_id, std::set &already_applied, - timestamp now, const ClassPropertyTransition &defaultTransition); + timestamp now, const PropertyTransition &defaultTransition); public: // The name of this layer. @@ -74,7 +77,6 @@ public: std::shared_ptr layers; }; - } #endif diff --git a/include/llmr/style/style_layer_group.hpp b/include/llmr/style/style_layer_group.hpp new file mode 100644 index 000000000..73214830f --- /dev/null +++ b/include/llmr/style/style_layer_group.hpp @@ -0,0 +1,21 @@ +#ifndef LLMR_STYLE_STYLE_LAYER_GROUP +#define LLMR_STYLE_STYLE_LAYER_GROUP + +#include + +#include + +namespace llmr { + +class StyleLayerGroup { +public: + void setClasses(const std::vector &class_names, timestamp now, + const PropertyTransition &defaultTransition); + +public: + std::vector> layers; +}; + +} + +#endif diff --git a/include/llmr/style/style_parser.hpp b/include/llmr/style/style_parser.hpp index 808d3188d..3c2a12a2a 100644 --- a/include/llmr/style/style_parser.hpp +++ b/include/llmr/style/style_parser.hpp @@ -18,7 +18,7 @@ namespace llmr { enum class ClassID : uint32_t; class StyleLayer; -typedef std::vector> StyleLayerGroup; +class StyleLayerGroup; class StyleParser { public: diff --git a/src/map/map.cpp b/src/map/map.cpp index f0513ad32..3417f8f6b 100644 --- a/src/map/map.cpp +++ b/src/map/map.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include @@ -176,7 +176,6 @@ void Map::setup() { void Map::setStyleJSON(std::string newStyleJSON) { styleJSON.swap(newStyleJSON); - style->cancelTransitions(); style->loadJSON((const uint8_t *)styleJSON.c_str()); update(); } @@ -384,14 +383,6 @@ void Map::toggleClass(const std::string &name) { style->toggleClass(name); } -//void Map::setAppliedClasses(const std::vector &appliedClasses) { -// style->cancelTransitions(); -// -// style->appliedClasses = appliedClasses; -// -// update(); -//} - const std::vector &Map::getAppliedClasses() const { return style->getAppliedClasses(); } @@ -448,14 +439,8 @@ void Map::prepare() { painter.clearFramebuffers(); } - style->cascade(state.getNormalizedZoom()); - - // Update style transitions. animationTime = util::now(); - if (style->needsTransition()) { - style->updateTransitions(animationTime); - update(); - } + style->updateProperties(state.getNormalizedZoom(), animationTime); // Allow the sprite atlas to potentially pull new sprite images if needed. if (style->sprite && style->sprite->isLoaded()) { @@ -517,14 +502,14 @@ void Map::render() { glFlush(); } -void Map::renderLayers(std::shared_ptr layers) { - if (!layers) { +void Map::renderLayers(std::shared_ptr group) { + if (!group) { // Make sure that we actually do have a layer group. return; } // TODO: Correctly compute the number of layers recursively beforehand. - float strata_thickness = 1.0f / (layers->size() + 1); + float strata_thickness = 1.0f / (group->layers.size() + 1); // - FIRST PASS ------------------------------------------------------------ // Render everything top-to-bottom by using reverse iterators. Render opaque @@ -533,9 +518,8 @@ void Map::renderLayers(std::shared_ptr layers) { if (debug::renderTree) { std::cout << std::string(indent++ * 4, ' ') << "OPAQUE {" << std::endl; } - typedef StyleLayerGroup::reverse_iterator riterator; int i = 0; - for (riterator it = layers->rbegin(), end = layers->rend(); it != end; ++it, ++i) { + for (auto it = group->layers.rbegin(), end = group->layers.rend(); it != end; ++it, ++i) { painter.setOpaque(); painter.setStrata(i * strata_thickness); renderLayer(*it, Opaque); @@ -550,9 +534,8 @@ void Map::renderLayers(std::shared_ptr layers) { if (debug::renderTree) { std::cout << std::string(indent++ * 4, ' ') << "TRANSLUCENT {" << std::endl; } - typedef StyleLayerGroup::iterator iterator; --i; - for (iterator it = layers->begin(), end = layers->end(); it != end; ++it, --i) { + for (auto it = group->layers.begin(), end = group->layers.end(); it != end; ++it, --i) { painter.setTranslucent(); painter.setStrata(i * strata_thickness); renderLayer(*it, Translucent); diff --git a/src/map/tile_parser.cpp b/src/map/tile_parser.cpp index 45fa02672..b3a018f42 100644 --- a/src/map/tile_parser.cpp +++ b/src/map/tile_parser.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -63,12 +64,12 @@ void TileParser::addGlyph(uint64_t tileid, const std::string stackname, } } -void TileParser::parseStyleLayers(std::shared_ptr layers) { - if (!layers) { +void TileParser::parseStyleLayers(std::shared_ptr group) { + if (!group) { return; } - for (const std::shared_ptr &layer_desc : *layers) { + for (const std::shared_ptr &layer_desc : group->layers) { // Cancel early when parsing. if (obsolete()) { return; diff --git a/src/style/applied_class_properties.cpp b/src/style/applied_class_properties.cpp new file mode 100644 index 000000000..0b191364d --- /dev/null +++ b/src/style/applied_class_properties.cpp @@ -0,0 +1,11 @@ +#include + +namespace llmr { + +AppliedClassProperty::AppliedClassProperty(ClassID class_id, timestamp begin, timestamp end, const PropertyValue &value) + : name(class_id), + begin(begin), + end(end), + value(value) {} + +} diff --git a/src/style/style.cpp b/src/style/style.cpp index 4f23cd5bb..c2794fed8 100644 --- a/src/style/style.cpp +++ b/src/style/style.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -13,9 +13,6 @@ namespace llmr { Style::Style() { } -void Style::reset() { -} - void Style::updateSources() { activeSources.clear(); updateSources(layers); @@ -25,11 +22,11 @@ const std::set> Style::getActiveSources() const { return activeSources; } -void Style::updateSources(const std::shared_ptr &layers) { - if (!layers) { +void Style::updateSources(const std::shared_ptr &group) { + if (!group) { return; } - for (const std::shared_ptr &layer : *layers) { + for (const std::shared_ptr &layer : group->layers) { if (!layer) continue; if (layer->bucket) { if (layer->bucket->source) { @@ -143,16 +140,16 @@ void applyClassProperties(StyleProperties &style, const ClassProperties &propert } } -void Style::cascade(const std::shared_ptr &layers, float z) { - if (!layers) { +void Style::updateProperties(const std::shared_ptr &group, float z, timestamp t) { + if (!group) { return; } - for (const std::shared_ptr &layer : *layers) { + for (const std::shared_ptr &layer : group->layers) { if (!layer) continue; if (layer->layers) { - cascade(layer->layers, z); + updateProperties(layer->layers, z, t); } // Accomodate for different tile size. @@ -183,13 +180,12 @@ void Style::cascade(const std::shared_ptr &layers, float z) { } } -void Style::cascade(float z) { +void Style::updateProperties(float z, timestamp t) { uv::writelock lock(mtx); updateSources(); - reset(); - cascade(layers, z); + updateProperties(layers, z, t); // Apply transitions after the first time. if (!initial_render_complete) { @@ -198,22 +194,8 @@ void Style::cascade(float z) { } } -bool Style::needsTransition() const { - uv::readlock lock(mtx); - - return false; -} - -void Style::updateTransitions(timestamp now) { - uv::writelock lock(mtx); -} - -void Style::cancelTransitions() { - uv::writelock lock(mtx); -} - -void Style::setDefaultTransitionDuration(uint64_t duration_milliseconds) { - default_transition_duration = duration_milliseconds; +void Style::setDefaultTransitionDuration(uint16_t duration_milliseconds) { + defaultTransition.duration = duration_milliseconds; } const std::vector &Style::getAppliedClasses() const { @@ -229,6 +211,14 @@ void Style::toggleClass(const std::string &name) { appliedClasses.erase(it); } } + + updateClasses(); +} + +void Style::updateClasses() { + if (layers) { + layers->setClasses(appliedClasses, util::now(), defaultTransition); + } } void Style::loadJSON(const uint8_t *const data) { diff --git a/src/style/style_layer.cpp b/src/style/style_layer.cpp index 9e6de7861..3bfd23579 100644 --- a/src/style/style_layer.cpp +++ b/src/style/style_layer.cpp @@ -1,4 +1,5 @@ #include +#include #include namespace llmr { @@ -12,7 +13,7 @@ bool StyleLayer::isBackground() const { } void StyleLayer::setClasses(const std::vector &class_names, const timestamp now, - const ClassPropertyTransition &defaultTransition) { + const PropertyTransition &defaultTransition) { // Stores all keys that we have already added transitions for. std::set already_applied; @@ -51,18 +52,14 @@ void StyleLayer::setClasses(const std::vector &class_names, const t // Update all child layers as well. if (layers) { - for (std::shared_ptr &layer : *layers) { - if (layer) { - layer->setClasses(class_names, now, defaultTransition); - } - } + layers->setClasses(class_names, now, defaultTransition); } } // Helper function for applying all properties of a a single class that haven't been applied yet. void StyleLayer::applyClassProperties(const ClassID class_id, std::set &already_applied, timestamp now, - const ClassPropertyTransition &defaultTransition) { + const PropertyTransition &defaultTransition) { auto style_it = styles.find(class_id); if (style_it == styles.end()) { // There is no class in this layer with this class_name. @@ -87,7 +84,7 @@ void StyleLayer::applyClassProperties(const ClassID class_id, // a transition. AppliedClassProperties &appliedProperties = appliedStyle[key]; if (appliedProperties.mostRecent() != class_id) { - const ClassPropertyTransition &transition = + const PropertyTransition &transition = properties.getTransition(key, defaultTransition); const timestamp begin = now + transition.delay; const timestamp end = begin + transition.duration; diff --git a/src/style/style_layer_group.cpp b/src/style/style_layer_group.cpp new file mode 100644 index 000000000..2f0fdf39e --- /dev/null +++ b/src/style/style_layer_group.cpp @@ -0,0 +1,14 @@ +#include + +namespace llmr { + +void StyleLayerGroup::setClasses(const std::vector &class_names, timestamp now, + const PropertyTransition &defaultTransition) { + for (const std::shared_ptr &layer : layers) { + if (layer) { + layer->setClasses(class_names, now, defaultTransition); + } + } +} + +} diff --git a/src/style/style_parser.cpp b/src/style/style_parser.cpp index 4ecb9a0bc..7fa23cc91 100644 --- a/src/style/style_parser.cpp +++ b/src/style/style_parser.cpp @@ -1,5 +1,5 @@ #include -#include +#include #include #include #include @@ -257,12 +257,12 @@ template<> bool StyleParser::parseStyleProperty(const char *property_name return true; } -template <> bool StyleParser::parseStyleProperty(const char *property_name, PropertyKey key, ClassProperties &klass, JSVal value) { +template <> bool StyleParser::parseStyleProperty(const char *property_name, PropertyKey key, ClassProperties &klass, JSVal value) { if (!value.HasMember(property_name)) { return false; } JSVal elements = replaceConstant(value[property_name]); - ClassPropertyTransition transition; + PropertyTransition transition; if (elements.IsObject()) { if (elements.HasMember("duration") && elements["duration"].IsNumber()) { @@ -380,14 +380,14 @@ bool StyleParser::parseStyleProperty(const char *property_name, const std::vecto std::unique_ptr StyleParser::createLayers(JSVal value) { if (value.IsArray()) { - std::unique_ptr layers = std::make_unique(); + std::unique_ptr group = std::make_unique(); for (rapidjson::SizeType i = 0; i < value.Size(); ++i) { std::shared_ptr layer = createLayer(value[i]); if (layer) { - layers->emplace_back(layer); + group->layers.emplace_back(layer); } } - return layers; + return group; } else { throw Style::exception("layers must be an array"); } @@ -491,81 +491,81 @@ void StyleParser::parseStyle(JSVal value, ClassProperties &klass) { using Key = PropertyKey; parseStyleProperty("fill-enabled", Key::FillEnabled, klass, value); - parseStyleProperty("transition-fill-enabled", Key::FillEnabled, klass, value); + parseStyleProperty("transition-fill-enabled", Key::FillEnabled, klass, value); parseStyleProperty("fill-antialias", Key::FillAntialias, klass, value); parseStyleProperty("fill-opacity", Key::FillOpacity, klass, value); - parseStyleProperty("transition-fill-opacity", Key::FillOpacity, klass, value); + parseStyleProperty("transition-fill-opacity", Key::FillOpacity, klass, value); parseStyleProperty("fill-color", Key::FillColor, klass, value); - parseStyleProperty("transition-fill-color", Key::FillColor, klass, value); + parseStyleProperty("transition-fill-color", Key::FillColor, klass, value); parseStyleProperty("fill-outline-color", Key::FillOutlineColor, klass, value); - parseStyleProperty("transition-fill-outline-color", Key::FillOutlineColor, klass, value); + parseStyleProperty("transition-fill-outline-color", Key::FillOutlineColor, klass, value); parseStyleProperty("fill-translate", { Key::FillTranslateX, Key::FillTranslateY }, klass, value); - parseStyleProperty("transition-fill-translate", Key::FillTranslate, klass, value); + parseStyleProperty("transition-fill-translate", Key::FillTranslate, klass, value); parseStyleProperty("fill-translate-anchor", Key::FillTranslateAnchor, klass, value); parseStyleProperty("fill-image", Key::FillImage, klass, value); parseStyleProperty("line-enabled", Key::LineEnabled, klass, value); - parseStyleProperty("transition-line-enabled", Key::LineEnabled, klass, value); + parseStyleProperty("transition-line-enabled", Key::LineEnabled, klass, value); parseStyleProperty("line-opacity", Key::LineOpacity, klass, value); - parseStyleProperty("transition-line-opacity", Key::LineOpacity, klass, value); + parseStyleProperty("transition-line-opacity", Key::LineOpacity, klass, value); parseStyleProperty("line-color", Key::LineColor, klass, value); - parseStyleProperty("transition-line-color", Key::LineColor, klass, value); + parseStyleProperty("transition-line-color", Key::LineColor, klass, value); parseStyleProperty("line-translate", { Key::LineTranslateX, Key::LineTranslateY }, klass, value); - parseStyleProperty("transition-line-translate", Key::LineTranslate, klass, value); + parseStyleProperty("transition-line-translate", Key::LineTranslate, klass, value); parseStyleProperty("line-translate-anchor", Key::LineTranslateAnchor, klass, value); parseStyleProperty("line-width", Key::LineWidth, klass, value); - parseStyleProperty("transition-line-width", Key::LineWidth, klass, value); + parseStyleProperty("transition-line-width", Key::LineWidth, klass, value); parseStyleProperty("line-offset", Key::LineOffset, klass, value); - parseStyleProperty("transition-line-offset", Key::LineOffset, klass, value); + parseStyleProperty("transition-line-offset", Key::LineOffset, klass, value); parseStyleProperty("line-blur", Key::LineBlur, klass, value); - parseStyleProperty("transition-line-blur", Key::LineBlur, klass, value); + parseStyleProperty("transition-line-blur", Key::LineBlur, klass, value); parseStyleProperty("line-dasharray", { Key::LineDashLand, Key::LineDashGap }, klass, value); - parseStyleProperty("transition-line-dasharray", Key::LineDashArray, klass, value); + parseStyleProperty("transition-line-dasharray", Key::LineDashArray, klass, value); parseStyleProperty("line-image", Key::LineImage, klass, value); parseStyleProperty("icon-enabled", Key::IconEnabled, klass, value); - parseStyleProperty("transition-icon-enabled", Key::IconEnabled, klass, value); + parseStyleProperty("transition-icon-enabled", Key::IconEnabled, klass, value); parseStyleProperty("icon-opacity", Key::IconOpacity, klass, value); - parseStyleProperty("transition-icon-opacity", Key::IconOpacity, klass, value); + parseStyleProperty("transition-icon-opacity", Key::IconOpacity, klass, value); parseStyleProperty("icon-rotate", Key::IconRotate, klass, value); parseStyleProperty("icon-rotate-anchor", Key::IconRotateAnchor, klass, value); parseStyleProperty("text-enabled", Key::TextEnabled, klass, value); - parseStyleProperty("transition-text-enabled", Key::TextEnabled, klass, value); + parseStyleProperty("transition-text-enabled", Key::TextEnabled, klass, value); parseStyleProperty("text-opacity", Key::TextOpacity, klass, value); - parseStyleProperty("transition-text-opacity", Key::TextOpacity, klass, value); + parseStyleProperty("transition-text-opacity", Key::TextOpacity, klass, value); parseStyleProperty("text-size", Key::TextSize, klass, value); - parseStyleProperty("transition-text-size", Key::TextSize, klass, value); + parseStyleProperty("transition-text-size", Key::TextSize, klass, value); parseStyleProperty("text-color", Key::TextColor, klass, value); - parseStyleProperty("transition-text-color", Key::TextColor, klass, value); + parseStyleProperty("transition-text-color", Key::TextColor, klass, value); parseStyleProperty("text-halo-color", Key::TextHaloColor, klass, value); - parseStyleProperty("transition-text-halo-color", Key::TextHaloColor, klass, value); + parseStyleProperty("transition-text-halo-color", Key::TextHaloColor, klass, value); parseStyleProperty("text-halo-width", Key::TextHaloWidth, klass, value); - parseStyleProperty("transition-text-halo-width", Key::TextHaloWidth, klass, value); + parseStyleProperty("transition-text-halo-width", Key::TextHaloWidth, klass, value); parseStyleProperty("text-halo-blur", Key::TextHaloBlur, klass, value); - parseStyleProperty("transition-text-halo-blur", Key::TextHaloBlur, klass, value); + parseStyleProperty("transition-text-halo-blur", Key::TextHaloBlur, klass, value); parseStyleProperty("composite-enabled", Key::CompositeEnabled, klass, value); - parseStyleProperty("transition-composite-enabled", Key::CompositeEnabled, klass, value); + parseStyleProperty("transition-composite-enabled", Key::CompositeEnabled, klass, value); parseStyleProperty("composite-opacity", Key::CompositeOpacity, klass, value); - parseStyleProperty("transition-composite-opacity", Key::CompositeOpacity, klass, value); + parseStyleProperty("transition-composite-opacity", Key::CompositeOpacity, klass, value); parseStyleProperty("raster-enabled", Key::RasterEnabled, klass, value); - parseStyleProperty("transition-raster-enabled", Key::RasterEnabled, klass, value); + parseStyleProperty("transition-raster-enabled", Key::RasterEnabled, klass, value); parseStyleProperty("raster-opacity", Key::RasterOpacity, klass, value); - parseStyleProperty("transition-raster-opacity", Key::RasterOpacity, klass, value); + parseStyleProperty("transition-raster-opacity", Key::RasterOpacity, klass, value); parseStyleProperty("raster-spin", Key::RasterSpin, klass, value); - parseStyleProperty("transition-raster-spin", Key::RasterSpin, klass, value); + parseStyleProperty("transition-raster-spin", Key::RasterSpin, klass, value); parseStyleProperty("raster-brightness-low", Key::RasterBrightnessLow, klass, value); - parseStyleProperty("transition-raster-brightness-low", Key::RasterBrightnessLow, klass, value); + parseStyleProperty("transition-raster-brightness-low", Key::RasterBrightnessLow, klass, value); parseStyleProperty("raster-brightness-high", Key::RasterBrightnessHigh, klass, value); - parseStyleProperty("transition-raster-brightness-high", Key::RasterBrightnessHigh, klass, value); + parseStyleProperty("transition-raster-brightness-high", Key::RasterBrightnessHigh, klass, value); parseStyleProperty("raster-saturation", Key::RasterSaturation, klass, value); - parseStyleProperty("transition-raster-saturation", Key::RasterSaturation, klass, value); + parseStyleProperty("transition-raster-saturation", Key::RasterSaturation, klass, value); parseStyleProperty("raster-contrast", Key::RasterContrast, klass, value); - parseStyleProperty("transition-raster-contrast", Key::RasterContrast, klass, value); + parseStyleProperty("transition-raster-contrast", Key::RasterContrast, klass, value); parseStyleProperty("raster-fade", Key::RasterFade, klass, value); - parseStyleProperty("transition-raster-fade", Key::RasterFade, klass, value); + parseStyleProperty("transition-raster-fade", Key::RasterFade, klass, value); parseStyleProperty("background-color", Key::BackgroundColor, klass, value); }