use class ids rather than names for storing styles
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include <llmr/geometry/sprite_atlas.hpp>
|
||||
#include <llmr/util/transition.hpp>
|
||||
#include <llmr/util/uv.hpp>
|
||||
#include <llmr/style/class_dictionary.hpp>
|
||||
|
||||
#include <map>
|
||||
#include <unordered_map>
|
||||
@@ -38,7 +39,7 @@ public:
|
||||
public:
|
||||
std::string id;
|
||||
StyleBucket::Ptr bucket;
|
||||
std::unordered_map<std::string, ClassProperties> styles;
|
||||
std::map<ClassID, ClassProperties> styles;
|
||||
StyleProperties style;
|
||||
std::unique_ptr<RasterizeProperties> rasterize;
|
||||
std::shared_ptr<StyleLayerGroup> layers;
|
||||
|
||||
@@ -164,14 +164,15 @@ void Style::cascade(const std::shared_ptr<StyleLayerGroup> &layers, float z) {
|
||||
layer->style = resetClassProperties(*layer);
|
||||
|
||||
// Apply default class (if exists)
|
||||
auto default_it = layer->styles.find("");
|
||||
auto default_it = layer->styles.find(ClassID::Default);
|
||||
if (default_it != layer->styles.end()) {
|
||||
applyClassProperties(layer->style, default_it->second, z);
|
||||
}
|
||||
|
||||
// Apply overriding classes in order.
|
||||
for (const std::string &class_name : appliedClasses) {
|
||||
auto class_it = layer->styles.find(class_name);
|
||||
const ClassID class_id = ClassDictionary::Lookup(class_name);
|
||||
auto class_it = layer->styles.find(class_id);
|
||||
if (class_it != layer->styles.end()) {
|
||||
applyClassProperties(layer->style, class_it->second, z);
|
||||
}
|
||||
|
||||
@@ -469,9 +469,10 @@ void StyleParser::parseStyles(JSVal value, std::shared_ptr<StyleLayer> &layer) {
|
||||
const std::string name { itr->name.GetString(), itr->name.GetStringLength() };
|
||||
|
||||
if (name == "style") {
|
||||
parseStyle(replaceConstant(itr->value), layer->styles[""]);
|
||||
parseStyle(replaceConstant(itr->value), layer->styles[ClassID::Default]);
|
||||
} else if (name.compare(0, 6, "style.") == 0 && name.length() > 6) {
|
||||
parseStyle(replaceConstant(itr->value), layer->styles[name.substr(6)]);
|
||||
const ClassID class_id = ClassDictionary::Lookup(name.substr(6));
|
||||
parseStyle(replaceConstant(itr->value), layer->styles[class_id]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user