diff options
author | Leith Bade <leith@mapbox.com> | 2015-01-18 16:33:39 +1100 |
---|---|---|
committer | Leith Bade <leith@mapbox.com> | 2015-01-18 16:33:39 +1100 |
commit | 016c2948c5e5d0f49c6169bd5802b54747c60312 (patch) | |
tree | 0bc1c8968ddf78e26ed21f8dd1217873bad3c2da /src | |
parent | 4540a8ae83fb219e1166d31ebd3cbbe1f2937993 (diff) | |
parent | 9b2c8d0391a0f06d65e34a87279973d191035015 (diff) | |
download | qtlocation-mapboxgl-016c2948c5e5d0f49c6169bd5802b54747c60312.tar.gz |
Merge branch 'master' of github.com:mapbox/mapbox-gl-native into android-mason
Conflicts:
src/mbgl/map/map.cpp
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/map.cpp | 41 | ||||
-rw-r--r-- | src/mbgl/style/style.cpp | 28 | ||||
-rw-r--r-- | src/mbgl/style/style.hpp | 14 |
3 files changed, 31 insertions, 52 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index d135ce0da8..b1028e4675 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -301,8 +301,6 @@ void Map::run() { mode = Mode::None; fileSource.clearLoop(); } - - terminate(); } void Map::checkForPause() { @@ -387,6 +385,7 @@ void Map::setStyleJSON(std::string newStyleJSON, const std::string &base) { } style->loadJSON((const uint8_t *)styleJSON.c_str()); + style->cascadeClasses(classes); fileSource.setBase(base); glyphStore->setURL(style->glyph_url); @@ -587,28 +586,44 @@ bool Map::getDebug() const { return debug; } -void Map::setAppliedClasses(const std::vector<std::string> &classes) { +void Map::addClass(const std::string& klass) { + if (hasClass(klass)) return; + classes.push_back(klass); if (style) { - style->setAppliedClasses(classes); + style->cascadeClasses(classes); if (style->hasTransitions()) { update(); } - } else { - std::lock_guard<std::mutex> lock(appliedClassesMutex); - appliedClasses = mbgl::util::make_unique<std::vector<std::string>>(classes); } } +void Map::removeClass(const std::string& klass) { + if (!hasClass(klass)) return; + classes.erase(std::remove(classes.begin(), classes.end(), klass), classes.end()); + if (style) { + style->cascadeClasses(classes); + if (style->hasTransitions()) { + update(); + } + } +} -void Map::toggleClass(const std::string &name) { - style->toggleClass(name); - if (style->hasTransitions()) { - update(); +void Map::setClasses(const std::vector<std::string>& classes_) { + classes = classes_; + if (style) { + style->cascadeClasses(classes); + if (style->hasTransitions()) { + update(); + } } } -const std::vector<std::string> &Map::getAppliedClasses() const { - return style->getAppliedClasses(); +bool Map::hasClass(const std::string& klass) const { + return std::find(classes.begin(), classes.end(), klass) != classes.end(); +} + +std::vector<std::string> Map::getClasses() const { + return classes; } void Map::setDefaultTransitionDuration(uint64_t milliseconds) { diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp index 9669e0e4a7..ecff6fb5ff 100644 --- a/src/mbgl/style/style.cpp +++ b/src/mbgl/style/style.cpp @@ -48,31 +48,9 @@ void Style::setDefaultTransitionDuration(uint16_t duration_milliseconds) { defaultTransition.duration = duration_milliseconds; } -const std::vector<std::string> &Style::getAppliedClasses() const { - return appliedClasses; -} - -void Style::setAppliedClasses(const std::vector<std::string> &class_names) { - appliedClasses = class_names; - updateClasses(); -} - -void Style::toggleClass(const std::string &name) { - if (name.length()) { - auto it = std::find(appliedClasses.begin(), appliedClasses.end(), name); - if (it == appliedClasses.end()) { - appliedClasses.push_back(name); - } else { - appliedClasses.erase(it); - } - } - - updateClasses(); -} - -void Style::updateClasses() { +void Style::cascadeClasses(const std::vector<std::string>& classes) { if (layers) { - layers->setClasses(appliedClasses, util::now(), defaultTransition); + layers->setClasses(classes, util::now(), defaultTransition); } } @@ -102,8 +80,6 @@ void Style::loadJSON(const uint8_t *const data) { layers = parser.getLayers(); sprite_url = parser.getSprite(); glyph_url = parser.getGlyphURL(); - - updateClasses(); } } diff --git a/src/mbgl/style/style.hpp b/src/mbgl/style/style.hpp index 56f318ecbb..e9205712ef 100644 --- a/src/mbgl/style/style.hpp +++ b/src/mbgl/style/style.hpp @@ -25,7 +25,6 @@ class Style { public: struct exception : std::runtime_error { exception(const char *msg) : std::runtime_error(msg) {} }; -public: Style(); ~Style(); @@ -35,31 +34,20 @@ public: void updateProperties(float z, timestamp t); void setDefaultTransitionDuration(uint16_t duration_milliseconds = 0); - - void setAppliedClasses(const std::vector<std::string> &classes); - const std::vector<std::string> &getAppliedClasses() const; - void toggleClass(const std::string &name); - - // Updates the styling information to reflect the current array - // of applied classes. - void updateClasses(); + void cascadeClasses(const std::vector<std::string>&); bool hasTransitions() const; const std::string &getSpriteURL() const; -public: util::ptr<StyleLayerGroup> layers; std::vector<std::string> appliedClasses; std::string glyph_url; private: std::string sprite_url; - -private: PropertyTransition defaultTransition; bool initial_render_complete = false; - std::unique_ptr<uv::rwlock> mtx; }; |