summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r--src/mbgl/renderer/render_background_layer.cpp4
-rw-r--r--src/mbgl/renderer/render_background_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_circle_layer.cpp4
-rw-r--r--src/mbgl/renderer/render_circle_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_custom_layer.cpp5
-rw-r--r--src/mbgl/renderer/render_custom_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_fill_extrusion_layer.cpp4
-rw-r--r--src/mbgl/renderer/render_fill_extrusion_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_fill_layer.cpp5
-rw-r--r--src/mbgl/renderer/render_fill_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_layer.hpp4
-rw-r--r--src/mbgl/renderer/render_line_layer.cpp5
-rw-r--r--src/mbgl/renderer/render_line_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_raster_layer.cpp4
-rw-r--r--src/mbgl/renderer/render_raster_layer.hpp3
-rw-r--r--src/mbgl/renderer/render_symbol_layer.cpp5
-rw-r--r--src/mbgl/renderer/render_symbol_layer.hpp3
17 files changed, 45 insertions, 19 deletions
diff --git a/src/mbgl/renderer/render_background_layer.cpp b/src/mbgl/renderer/render_background_layer.cpp
index a6b4a5e36e..485d4b16c6 100644
--- a/src/mbgl/renderer/render_background_layer.cpp
+++ b/src/mbgl/renderer/render_background_layer.cpp
@@ -23,12 +23,14 @@ void RenderBackgroundLayer::cascade(const CascadeParameters &parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderBackgroundLayer::evaluate(const PropertyEvaluationParameters &parameters) {
+void RenderBackgroundLayer::evaluate(const PropertyEvaluationParameters &parameters) {
evaluated = unevaluated.evaluate(parameters);
passes = evaluated.get<style::BackgroundOpacity>() > 0 ? RenderPass::Translucent
: RenderPass::None;
+}
+bool RenderBackgroundLayer::hasTransition() const {
return unevaluated.hasTransition();
}
diff --git a/src/mbgl/renderer/render_background_layer.hpp b/src/mbgl/renderer/render_background_layer.hpp
index 137980389c..b1f709953f 100644
--- a/src/mbgl/renderer/render_background_layer.hpp
+++ b/src/mbgl/renderer/render_background_layer.hpp
@@ -15,7 +15,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override;
diff --git a/src/mbgl/renderer/render_circle_layer.cpp b/src/mbgl/renderer/render_circle_layer.cpp
index 56832d53cb..f59c174dd3 100644
--- a/src/mbgl/renderer/render_circle_layer.cpp
+++ b/src/mbgl/renderer/render_circle_layer.cpp
@@ -24,7 +24,7 @@ void RenderCircleLayer::cascade(const CascadeParameters& parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderCircleLayer::evaluate(const PropertyEvaluationParameters& parameters) {
+void RenderCircleLayer::evaluate(const PropertyEvaluationParameters& parameters) {
evaluated = unevaluated.evaluate(parameters);
passes = ((evaluated.get<style::CircleRadius>().constantOr(1) > 0 ||
@@ -34,7 +34,9 @@ bool RenderCircleLayer::evaluate(const PropertyEvaluationParameters& parameters)
&& (evaluated.get<style::CircleOpacity>().constantOr(1) > 0 ||
evaluated.get<style::CircleStrokeOpacity>().constantOr(1) > 0))
? RenderPass::Translucent : RenderPass::None;
+}
+bool RenderCircleLayer::hasTransition() const {
return unevaluated.hasTransition();
}
diff --git a/src/mbgl/renderer/render_circle_layer.hpp b/src/mbgl/renderer/render_circle_layer.hpp
index 8a2f73ec83..3b82b5c988 100644
--- a/src/mbgl/renderer/render_circle_layer.hpp
+++ b/src/mbgl/renderer/render_circle_layer.hpp
@@ -15,7 +15,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/render_custom_layer.cpp b/src/mbgl/renderer/render_custom_layer.cpp
index d500d11f4a..66dd57b3d3 100644
--- a/src/mbgl/renderer/render_custom_layer.cpp
+++ b/src/mbgl/renderer/render_custom_layer.cpp
@@ -13,8 +13,11 @@ std::unique_ptr<RenderLayer> RenderCustomLayer::clone() const {
return std::make_unique<RenderCustomLayer>(*this);
}
-bool RenderCustomLayer::evaluate(const PropertyEvaluationParameters&) {
+void RenderCustomLayer::evaluate(const PropertyEvaluationParameters&) {
passes = RenderPass::Translucent;
+}
+
+bool RenderCustomLayer::hasTransition() const {
return false;
}
diff --git a/src/mbgl/renderer/render_custom_layer.hpp b/src/mbgl/renderer/render_custom_layer.hpp
index cb728fecb3..c3af6c77b2 100644
--- a/src/mbgl/renderer/render_custom_layer.hpp
+++ b/src/mbgl/renderer/render_custom_layer.hpp
@@ -14,7 +14,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) final {}
- bool evaluate(const PropertyEvaluationParameters&) final;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const final;
diff --git a/src/mbgl/renderer/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/render_fill_extrusion_layer.cpp
index 70ee74b56e..f6ba164d8c 100644
--- a/src/mbgl/renderer/render_fill_extrusion_layer.cpp
+++ b/src/mbgl/renderer/render_fill_extrusion_layer.cpp
@@ -24,12 +24,14 @@ void RenderFillExtrusionLayer::cascade(const CascadeParameters& parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderFillExtrusionLayer::evaluate(const PropertyEvaluationParameters& parameters) {
+void RenderFillExtrusionLayer::evaluate(const PropertyEvaluationParameters& parameters) {
evaluated = unevaluated.evaluate(parameters);
passes = (evaluated.get<style::FillExtrusionOpacity>() > 0) ? RenderPass::Translucent
: RenderPass::None;
+}
+bool RenderFillExtrusionLayer::hasTransition() const {
return unevaluated.hasTransition();
}
diff --git a/src/mbgl/renderer/render_fill_extrusion_layer.hpp b/src/mbgl/renderer/render_fill_extrusion_layer.hpp
index b4fd1411f5..bd66d8e3b1 100644
--- a/src/mbgl/renderer/render_fill_extrusion_layer.hpp
+++ b/src/mbgl/renderer/render_fill_extrusion_layer.hpp
@@ -15,7 +15,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/render_fill_layer.cpp b/src/mbgl/renderer/render_fill_layer.cpp
index 53c1ff3032..1af139cded 100644
--- a/src/mbgl/renderer/render_fill_layer.cpp
+++ b/src/mbgl/renderer/render_fill_layer.cpp
@@ -24,7 +24,7 @@ void RenderFillLayer::cascade(const CascadeParameters& parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderFillLayer::evaluate(const PropertyEvaluationParameters& parameters) {
+void RenderFillLayer::evaluate(const PropertyEvaluationParameters& parameters) {
evaluated = unevaluated.evaluate(parameters);
if (unevaluated.get<style::FillOutlineColor>().isUndefined()) {
@@ -44,11 +44,12 @@ bool RenderFillLayer::evaluate(const PropertyEvaluationParameters& parameters) {
} else {
passes |= RenderPass::Opaque;
}
+}
+bool RenderFillLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-
bool RenderFillLayer::queryIntersectsFeature(
const GeometryCoordinates& queryGeometry,
const GeometryTileFeature& feature,
diff --git a/src/mbgl/renderer/render_fill_layer.hpp b/src/mbgl/renderer/render_fill_layer.hpp
index 3a8de3622a..8080cf289b 100644
--- a/src/mbgl/renderer/render_fill_layer.hpp
+++ b/src/mbgl/renderer/render_fill_layer.hpp
@@ -15,7 +15,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp
index 003059005e..eea2ec1f61 100644
--- a/src/mbgl/renderer/render_layer.hpp
+++ b/src/mbgl/renderer/render_layer.hpp
@@ -33,8 +33,10 @@ public:
virtual void cascade(const CascadeParameters&) = 0;
// Fully evaluate cascaded paint properties based on a zoom level.
+ virtual void evaluate(const PropertyEvaluationParameters&) = 0;
+
// Returns true if any paint properties have active transitions.
- virtual bool evaluate(const PropertyEvaluationParameters&) = 0;
+ virtual bool hasTransition() const = 0;
// Check whether this layer is of the given subtype.
template <class T>
diff --git a/src/mbgl/renderer/render_line_layer.cpp b/src/mbgl/renderer/render_line_layer.cpp
index e5060af79e..06c2564516 100644
--- a/src/mbgl/renderer/render_line_layer.cpp
+++ b/src/mbgl/renderer/render_line_layer.cpp
@@ -24,7 +24,7 @@ void RenderLineLayer::cascade(const CascadeParameters& parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderLineLayer::evaluate(const PropertyEvaluationParameters& parameters) {
+void RenderLineLayer::evaluate(const PropertyEvaluationParameters& parameters) {
// for scaling dasharrays
auto dashArrayParams = parameters;
dashArrayParams.z = std::floor(dashArrayParams.z);
@@ -36,9 +36,12 @@ bool RenderLineLayer::evaluate(const PropertyEvaluationParameters& parameters) {
&& evaluated.get<style::LineColor>().constantOr(Color::black()).a > 0
&& evaluated.get<style::LineWidth>() > 0)
? RenderPass::Translucent : RenderPass::None;
+}
+bool RenderLineLayer::hasTransition() const {
return unevaluated.hasTransition();
}
+
optional<GeometryCollection> offsetLine(const GeometryCollection& rings, const double offset) {
if (offset == 0) return {};
diff --git a/src/mbgl/renderer/render_line_layer.hpp b/src/mbgl/renderer/render_line_layer.hpp
index 15052deb38..6d6fecc227 100644
--- a/src/mbgl/renderer/render_line_layer.hpp
+++ b/src/mbgl/renderer/render_line_layer.hpp
@@ -15,7 +15,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
bool queryIntersectsFeature(
const GeometryCoordinates&,
diff --git a/src/mbgl/renderer/render_raster_layer.cpp b/src/mbgl/renderer/render_raster_layer.cpp
index 0cfccc81b3..5e664e6f58 100644
--- a/src/mbgl/renderer/render_raster_layer.cpp
+++ b/src/mbgl/renderer/render_raster_layer.cpp
@@ -22,11 +22,13 @@ void RenderRasterLayer::cascade(const CascadeParameters& parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderRasterLayer::evaluate(const PropertyEvaluationParameters& parameters) {
+void RenderRasterLayer::evaluate(const PropertyEvaluationParameters& parameters) {
evaluated = unevaluated.evaluate(parameters);
passes = evaluated.get<style::RasterOpacity>() > 0 ? RenderPass::Translucent : RenderPass::None;
+}
+bool RenderRasterLayer::hasTransition() const {
return unevaluated.hasTransition();
}
diff --git a/src/mbgl/renderer/render_raster_layer.hpp b/src/mbgl/renderer/render_raster_layer.hpp
index c6e38fa147..3ffeb8febf 100644
--- a/src/mbgl/renderer/render_raster_layer.hpp
+++ b/src/mbgl/renderer/render_raster_layer.hpp
@@ -15,7 +15,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
std::unique_ptr<Bucket> createBucket(const BucketParameters&, const std::vector<const RenderLayer*>&) const override;
diff --git a/src/mbgl/renderer/render_symbol_layer.cpp b/src/mbgl/renderer/render_symbol_layer.cpp
index 0c3601aedf..30d769e032 100644
--- a/src/mbgl/renderer/render_symbol_layer.cpp
+++ b/src/mbgl/renderer/render_symbol_layer.cpp
@@ -38,7 +38,7 @@ void RenderSymbolLayer::cascade(const CascadeParameters& parameters) {
unevaluated = impl->cascading.cascade(parameters, std::move(unevaluated));
}
-bool RenderSymbolLayer::evaluate(const PropertyEvaluationParameters& parameters) {
+void RenderSymbolLayer::evaluate(const PropertyEvaluationParameters& parameters) {
evaluated = unevaluated.evaluate(parameters);
auto hasIconOpacity = evaluated.get<style::IconColor>().constantOr(Color::black()).a > 0 ||
@@ -49,11 +49,12 @@ bool RenderSymbolLayer::evaluate(const PropertyEvaluationParameters& parameters)
passes = ((evaluated.get<style::IconOpacity>().constantOr(1) > 0 && hasIconOpacity && iconSize > 0)
|| (evaluated.get<style::TextOpacity>().constantOr(1) > 0 && hasTextOpacity && textSize > 0))
? RenderPass::Translucent : RenderPass::None;
+}
+bool RenderSymbolLayer::hasTransition() const {
return unevaluated.hasTransition();
}
-
style::IconPaintProperties::Evaluated RenderSymbolLayer::iconPaintProperties() const {
return style::IconPaintProperties::Evaluated {
evaluated.get<style::IconOpacity>(),
diff --git a/src/mbgl/renderer/render_symbol_layer.hpp b/src/mbgl/renderer/render_symbol_layer.hpp
index b9c2cc3247..80ffd95a06 100644
--- a/src/mbgl/renderer/render_symbol_layer.hpp
+++ b/src/mbgl/renderer/render_symbol_layer.hpp
@@ -67,7 +67,8 @@ public:
std::unique_ptr<RenderLayer> clone() const override;
void cascade(const CascadeParameters&) override;
- bool evaluate(const PropertyEvaluationParameters&) override;
+ void evaluate(const PropertyEvaluationParameters&) override;
+ bool hasTransition() const override;
style::IconPaintProperties::Evaluated iconPaintProperties() const;
style::TextPaintProperties::Evaluated textPaintProperties() const;