summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLeith Bade <leith@mapbox.com>2015-01-18 16:33:39 +1100
committerLeith Bade <leith@mapbox.com>2015-01-18 16:33:39 +1100
commit016c2948c5e5d0f49c6169bd5802b54747c60312 (patch)
tree0bc1c8968ddf78e26ed21f8dd1217873bad3c2da /src
parent4540a8ae83fb219e1166d31ebd3cbbe1f2937993 (diff)
parent9b2c8d0391a0f06d65e34a87279973d191035015 (diff)
downloadqtlocation-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.cpp41
-rw-r--r--src/mbgl/style/style.cpp28
-rw-r--r--src/mbgl/style/style.hpp14
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;
};