summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBruno de Oliveira Abinader <bruno@mapbox.com>2016-09-12 08:03:08 +0100
committerBruno de Oliveira Abinader <bruno@mapbox.com>2016-09-13 12:38:59 +0300
commitbeb67fb7b2119fbda8cf2906bdcc67aa7d7fad65 (patch)
tree49a7f1f42d184aeff192bc3c24e95a0612d715a0
parent0cc062a5fd1f9ed63f688dbb802be252c04d917f (diff)
downloadqtlocation-mapboxgl-beb67fb7b2119fbda8cf2906bdcc67aa7d7fad65.tar.gz
[core] Separate transition options accessors from class API
Now the style class transition options have its own getter/setter, which persists for each style until a new style is set.
-rw-r--r--include/mbgl/map/map.hpp9
-rw-r--r--src/mbgl/map/map.cpp25
-rw-r--r--src/mbgl/style/style.cpp22
-rw-r--r--src/mbgl/style/style.hpp12
4 files changed, 46 insertions, 22 deletions
diff --git a/include/mbgl/map/map.hpp b/include/mbgl/map/map.hpp
index 866d292b99..6c478c17f0 100644
--- a/include/mbgl/map/map.hpp
+++ b/include/mbgl/map/map.hpp
@@ -51,9 +51,12 @@ public:
void update(Update update);
// Styling
- void addClass(const std::string&, const style::TransitionOptions& = {});
- void removeClass(const std::string&, const style::TransitionOptions& = {});
- void setClasses(const std::vector<std::string>&, const style::TransitionOptions& = {});
+ void addClass(const std::string&);
+ void removeClass(const std::string&);
+ void setClasses(const std::vector<std::string>&);
+
+ style::TransitionOptions getTransitionOptions() const;
+ void setTransitionOptions(const style::TransitionOptions&);
bool hasClass(const std::string&) const;
std::vector<std::string> getClasses() const;
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index e7bb2bd7f4..56be99d8fc 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -896,25 +896,38 @@ bool Map::isFullyLoaded() const {
return impl->style ? impl->style->isLoaded() : false;
}
-void Map::addClass(const std::string& className, const TransitionOptions& properties) {
- if (impl->style && impl->style->addClass(className, properties)) {
+void Map::addClass(const std::string& className) {
+ if (impl->style && impl->style->addClass(className)) {
update(Update::Classes);
}
}
-void Map::removeClass(const std::string& className, const TransitionOptions& properties) {
- if (impl->style && impl->style->removeClass(className, properties)) {
+void Map::removeClass(const std::string& className) {
+ if (impl->style && impl->style->removeClass(className)) {
update(Update::Classes);
}
}
-void Map::setClasses(const std::vector<std::string>& classNames, const TransitionOptions& properties) {
+void Map::setClasses(const std::vector<std::string>& classNames) {
if (impl->style) {
- impl->style->setClasses(classNames, properties);
+ impl->style->setClasses(classNames);
update(Update::Classes);
}
}
+style::TransitionOptions Map::getTransitionOptions() const {
+ if (impl->style) {
+ return impl->style->getTransitionOptions();
+ }
+ return {};
+}
+
+void Map::setTransitionOptions(const style::TransitionOptions& options) {
+ if (impl->style) {
+ impl->style->setTransitionOptions(options);
+ }
+}
+
bool Map::hasClass(const std::string& className) const {
return impl->style ? impl->style->hasClass(className) : false;
}
diff --git a/src/mbgl/style/style.cpp b/src/mbgl/style/style.cpp
index fba12b6127..34790683bc 100644
--- a/src/mbgl/style/style.cpp
+++ b/src/mbgl/style/style.cpp
@@ -58,10 +58,9 @@ Style::~Style() {
spriteStore->setObserver(nullptr);
}
-bool Style::addClass(const std::string& className, const TransitionOptions& properties) {
+bool Style::addClass(const std::string& className) {
if (hasClass(className)) return false;
classes.push_back(className);
- transitionProperties = properties;
return true;
}
@@ -69,29 +68,36 @@ bool Style::hasClass(const std::string& className) const {
return std::find(classes.begin(), classes.end(), className) != classes.end();
}
-bool Style::removeClass(const std::string& className, const TransitionOptions& properties) {
+bool Style::removeClass(const std::string& className) {
const auto it = std::find(classes.begin(), classes.end(), className);
if (it != classes.end()) {
classes.erase(it);
- transitionProperties = properties;
return true;
}
return false;
}
-void Style::setClasses(const std::vector<std::string>& classNames, const TransitionOptions& properties) {
+void Style::setClasses(const std::vector<std::string>& classNames) {
classes = classNames;
- transitionProperties = properties;
}
std::vector<std::string> Style::getClasses() const {
return classes;
}
+void Style::setTransitionOptions(const TransitionOptions& options) {
+ transitionOptions = options;
+}
+
+TransitionOptions Style::getTransitionOptions() const {
+ return transitionOptions;
+}
+
void Style::setJSON(const std::string& json) {
sources.clear();
layers.clear();
classes.clear();
+ transitionOptions = {};
updateBatch = {};
Parser parser;
@@ -249,11 +255,9 @@ void Style::cascade(const TimePoint& timePoint, MapMode mode) {
const CascadeParameters parameters {
classIDs,
mode == MapMode::Continuous ? timePoint : Clock::time_point::max(),
- mode == MapMode::Continuous ? transitionProperties.value_or(immediateTransition) : immediateTransition
+ mode == MapMode::Continuous ? transitionOptions : immediateTransition
};
- transitionProperties = {};
-
for (const auto& layer : layers) {
layer->baseImpl->cascade(parameters);
}
diff --git a/src/mbgl/style/style.hpp b/src/mbgl/style/style.hpp
index 61f2563c87..8027313ab9 100644
--- a/src/mbgl/style/style.hpp
+++ b/src/mbgl/style/style.hpp
@@ -79,10 +79,14 @@ public:
double getDefaultBearing() const;
double getDefaultPitch() const;
- bool addClass(const std::string&, const TransitionOptions& = {});
- bool removeClass(const std::string&, const TransitionOptions& = {});
+ bool addClass(const std::string&);
+ bool removeClass(const std::string&);
+ void setClasses(const std::vector<std::string>&);
+
+ TransitionOptions getTransitionOptions() const;
+ void setTransitionOptions(const TransitionOptions&);
+
bool hasClass(const std::string&) const;
- void setClasses(const std::vector<std::string>&, const TransitionOptions& = {});
std::vector<std::string> getClasses() const;
RenderData getRenderData(MapDebugOptions) const;
@@ -107,7 +111,7 @@ private:
std::vector<std::unique_ptr<Source>> sources;
std::vector<std::unique_ptr<Layer>> layers;
std::vector<std::string> classes;
- optional<TransitionOptions> transitionProperties;
+ TransitionOptions transitionOptions;
// Defaults
std::string name;