summaryrefslogtreecommitdiff
path: root/src/mbgl/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/renderer')
-rw-r--r--src/mbgl/renderer/buckets/fill_bucket.cpp4
-rw-r--r--src/mbgl/renderer/buckets/fill_bucket.hpp2
-rw-r--r--src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp6
-rw-r--r--src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp4
-rw-r--r--src/mbgl/renderer/buckets/line_bucket.cpp4
-rw-r--r--src/mbgl/renderer/buckets/line_bucket.hpp2
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.cpp8
-rw-r--r--src/mbgl/renderer/buckets/symbol_bucket.hpp2
-rw-r--r--src/mbgl/renderer/render_layer.hpp7
-rw-r--r--src/mbgl/renderer/render_source.hpp4
-rw-r--r--src/mbgl/renderer/renderer_impl.cpp4
-rw-r--r--src/mbgl/renderer/sources/render_custom_geometry_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_custom_geometry_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_geojson_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_image_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_image_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_dem_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_raster_source.hpp2
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.cpp2
-rw-r--r--src/mbgl/renderer/sources/render_vector_source.hpp2
-rw-r--r--src/mbgl/renderer/tile_pyramid.cpp2
-rw-r--r--src/mbgl/renderer/tile_pyramid.hpp4
25 files changed, 44 insertions, 33 deletions
diff --git a/src/mbgl/renderer/buckets/fill_bucket.cpp b/src/mbgl/renderer/buckets/fill_bucket.cpp
index 2dffc555e2..c69b60327d 100644
--- a/src/mbgl/renderer/buckets/fill_bucket.cpp
+++ b/src/mbgl/renderer/buckets/fill_bucket.cpp
@@ -28,7 +28,7 @@ using namespace style;
struct GeometryTooLongException : std::exception {};
FillBucket::FillBucket(const FillBucket::PossiblyEvaluatedLayoutProperties,
- std::map<std::string, FillBucket::PossiblyEvaluatedPaintProperties> layerPaintProperties,
+ const std::map<std::string, Immutable<style::LayerProperties>>& layerPaintProperties,
const float zoom,
const uint32_t) {
@@ -37,7 +37,7 @@ FillBucket::FillBucket(const FillBucket::PossiblyEvaluatedLayoutProperties,
std::piecewise_construct,
std::forward_as_tuple(pair.first),
std::forward_as_tuple(
- pair.second,
+ getEvaluated<FillLayerProperties>(pair.second),
zoom));
}
}
diff --git a/src/mbgl/renderer/buckets/fill_bucket.hpp b/src/mbgl/renderer/buckets/fill_bucket.hpp
index 5844625d2a..217524c945 100644
--- a/src/mbgl/renderer/buckets/fill_bucket.hpp
+++ b/src/mbgl/renderer/buckets/fill_bucket.hpp
@@ -22,7 +22,7 @@ public:
using PossiblyEvaluatedLayoutProperties = style::Properties<>::PossiblyEvaluated;
FillBucket(const PossiblyEvaluatedLayoutProperties layout,
- std::map<std::string, PossiblyEvaluatedPaintProperties> layerPaintProperties,
+ const std::map<std::string, Immutable<style::LayerProperties>>& layerPaintProperties,
const float zoom,
const uint32_t overscaling);
diff --git a/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp b/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
index 61fc6a1444..7fa7293f33 100644
--- a/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
+++ b/src/mbgl/renderer/buckets/fill_extrusion_bucket.cpp
@@ -34,8 +34,8 @@ using namespace style;
struct GeometryTooLongException : std::exception {};
-FillExtrusionBucket::FillExtrusionBucket(const FillExtrusionBucket::PossiblyEvaluatedLayoutProperties,
- std::map<std::string, FillExtrusionBucket::PossiblyEvaluatedPaintProperties> layerPaintProperties,
+FillExtrusionBucket::FillExtrusionBucket(const FillExtrusionBucket::PossiblyEvaluatedLayoutProperties&,
+ const std::map<std::string, Immutable<style::LayerProperties>>& layerPaintProperties,
const float zoom,
const uint32_t) {
for (const auto& pair : layerPaintProperties) {
@@ -43,7 +43,7 @@ FillExtrusionBucket::FillExtrusionBucket(const FillExtrusionBucket::PossiblyEval
std::piecewise_construct,
std::forward_as_tuple(pair.first),
std::forward_as_tuple(
- pair.second,
+ getEvaluated<FillExtrusionLayerProperties>(pair.second),
zoom));
}
}
diff --git a/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp b/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
index 9dc2681bac..85867031a7 100644
--- a/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
+++ b/src/mbgl/renderer/buckets/fill_extrusion_bucket.hpp
@@ -19,8 +19,8 @@ public:
using PossiblyEvaluatedPaintProperties = style::FillExtrusionPaintProperties::PossiblyEvaluated;
using PossiblyEvaluatedLayoutProperties = style::Properties<>::PossiblyEvaluated;
- FillExtrusionBucket(const PossiblyEvaluatedLayoutProperties,
- std::map<std::string, PossiblyEvaluatedPaintProperties>,
+ FillExtrusionBucket(const PossiblyEvaluatedLayoutProperties&,
+ const std::map<std::string, Immutable<style::LayerProperties>>&,
const float,
const uint32_t);
diff --git a/src/mbgl/renderer/buckets/line_bucket.cpp b/src/mbgl/renderer/buckets/line_bucket.cpp
index 9a5ed9e628..c2cce632b3 100644
--- a/src/mbgl/renderer/buckets/line_bucket.cpp
+++ b/src/mbgl/renderer/buckets/line_bucket.cpp
@@ -11,7 +11,7 @@ namespace mbgl {
using namespace style;
LineBucket::LineBucket(const style::LineLayoutProperties::PossiblyEvaluated layout_,
- const std::map<std::string, style::LinePaintProperties::PossiblyEvaluated>& layerPaintProperties,
+ const std::map<std::string, Immutable<style::LayerProperties>>& layerPaintProperties,
const float zoom_,
const uint32_t overscaling_)
: layout(std::move(layout_)),
@@ -23,7 +23,7 @@ LineBucket::LineBucket(const style::LineLayoutProperties::PossiblyEvaluated layo
std::piecewise_construct,
std::forward_as_tuple(pair.first),
std::forward_as_tuple(
- pair.second,
+ getEvaluated<LineLayerProperties>(pair.second),
zoom));
}
}
diff --git a/src/mbgl/renderer/buckets/line_bucket.hpp b/src/mbgl/renderer/buckets/line_bucket.hpp
index 6717ee7446..9afe7fecee 100644
--- a/src/mbgl/renderer/buckets/line_bucket.hpp
+++ b/src/mbgl/renderer/buckets/line_bucket.hpp
@@ -21,7 +21,7 @@ public:
using PossiblyEvaluatedLayoutProperties = style::LineLayoutProperties::PossiblyEvaluated;
LineBucket(const PossiblyEvaluatedLayoutProperties layout,
- const std::map<std::string, PossiblyEvaluatedPaintProperties>& layerPaintProperties,
+ const std::map<std::string, Immutable<style::LayerProperties>>& layerPaintProperties,
const float zoom,
const uint32_t overscaling);
~LineBucket() override;
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.cpp b/src/mbgl/renderer/buckets/symbol_bucket.cpp
index a0ebab20be..4b5207da39 100644
--- a/src/mbgl/renderer/buckets/symbol_bucket.cpp
+++ b/src/mbgl/renderer/buckets/symbol_bucket.cpp
@@ -8,8 +8,12 @@ namespace mbgl {
using namespace style;
+const SymbolLayerProperties& toSymbolLayerProperties(const Immutable<LayerProperties>& layer) {
+ return static_cast<const SymbolLayerProperties&>(*layer);
+}
+
SymbolBucket::SymbolBucket(style::SymbolLayoutProperties::PossiblyEvaluated layout_,
- const std::map<std::string, style::SymbolPaintProperties::PossiblyEvaluated>& paintProperties_,
+ const std::map<std::string, Immutable<style::LayerProperties>>& paintProperties_,
const style::PropertyValue<float>& textSize,
const style::PropertyValue<float>& iconSize,
float zoom,
@@ -30,7 +34,7 @@ SymbolBucket::SymbolBucket(style::SymbolLayoutProperties::PossiblyEvaluated layo
tilePixelRatio(tilePixelRatio_) {
for (const auto& pair : paintProperties_) {
- auto layerPaintProperties = pair.second;
+ auto layerPaintProperties = toSymbolLayerProperties(pair.second).evaluated;
if (hasFormatSectionOverrides()) {
setPaintPropertyOverrides(layerPaintProperties);
}
diff --git a/src/mbgl/renderer/buckets/symbol_bucket.hpp b/src/mbgl/renderer/buckets/symbol_bucket.hpp
index f8ffc1a8eb..ca740c5488 100644
--- a/src/mbgl/renderer/buckets/symbol_bucket.hpp
+++ b/src/mbgl/renderer/buckets/symbol_bucket.hpp
@@ -42,7 +42,7 @@ public:
class SymbolBucket final : public Bucket {
public:
SymbolBucket(style::SymbolLayoutProperties::PossiblyEvaluated,
- const std::map<std::string, style::SymbolPaintProperties::PossiblyEvaluated>&,
+ const std::map<std::string, Immutable<style::LayerProperties>>&,
const style::PropertyValue<float>& textSize,
const style::PropertyValue<float>& iconSize,
float zoom,
diff --git a/src/mbgl/renderer/render_layer.hpp b/src/mbgl/renderer/render_layer.hpp
index 9654b9213f..3a762947db 100644
--- a/src/mbgl/renderer/render_layer.hpp
+++ b/src/mbgl/renderer/render_layer.hpp
@@ -19,6 +19,12 @@ class RenderLayerSymbolInterface;
class RenderTile;
class TransformState;
+class LayerRenderData {
+public:
+ std::shared_ptr<Bucket> bucket;
+ Immutable<style::LayerProperties> layerProperties;
+};
+
class RenderLayer {
protected:
RenderLayer(Immutable<style::LayerProperties>);
@@ -90,6 +96,7 @@ protected:
// the cached paint properties) can be still in use while the tile is loading new buckets (which will
// correpond to the current paint properties of the layer).
virtual void updateBucketPaintProperties(Bucket*) const;
+
using FilterFunctionPtr = bool (*)(RenderTile&);
RenderTiles filterRenderTiles(RenderTiles, FilterFunctionPtr) const;
diff --git a/src/mbgl/renderer/render_source.hpp b/src/mbgl/renderer/render_source.hpp
index fe8ac364bc..89e7f095fa 100644
--- a/src/mbgl/renderer/render_source.hpp
+++ b/src/mbgl/renderer/render_source.hpp
@@ -7,7 +7,7 @@
#include <mbgl/util/geojson.hpp>
#include <mbgl/util/feature.hpp>
#include <mbgl/style/source_impl.hpp>
-#include <mbgl/style/layer_impl.hpp>
+#include <mbgl/style/layer_properties.hpp>
#include <unordered_map>
#include <vector>
@@ -50,7 +50,7 @@ public:
virtual bool isLoaded() const = 0;
virtual void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) = 0;
diff --git a/src/mbgl/renderer/renderer_impl.cpp b/src/mbgl/renderer/renderer_impl.cpp
index 5078e01edb..4a618919d4 100644
--- a/src/mbgl/renderer/renderer_impl.cpp
+++ b/src/mbgl/renderer/renderer_impl.cpp
@@ -242,7 +242,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
staticData->has3D = false;
for (const auto& sourceImpl : *sourceImpls) {
RenderSource* source = renderSources.at(sourceImpl->id).get();
- std::vector<Immutable<Layer::Impl>> filteredLayersForSource;
+ std::vector<Immutable<LayerProperties>> filteredLayersForSource;
filteredLayersForSource.reserve(layerImpls->size());
bool sourceNeedsRendering = false;
bool sourceNeedsRelayout = false;
@@ -262,7 +262,7 @@ void Renderer::Impl::render(const UpdateParameters& updateParameters) {
sourceNeedsRelayout = (sourceNeedsRelayout || hasImageDiff || hasLayoutDifference(layerDiff, layerImpl->id));
if (layerNeedsRendering) {
sourceNeedsRendering = true;
- filteredLayersForSource.push_back(layerImpl);
+ filteredLayersForSource.push_back(layer->evaluatedProperties);
renderItemsEmplaceHint = renderItems.emplace_hint(renderItemsEmplaceHint, *layer, source, index);
}
}
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
index 2d28b8dd84..30b6e65f24 100644
--- a/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
+++ b/src/mbgl/renderer/sources/render_custom_geometry_source.cpp
@@ -24,7 +24,7 @@ bool RenderCustomGeometrySource::isLoaded() const {
}
void RenderCustomGeometrySource::update(Immutable<style::Source::Impl> baseImpl_,
- const std::vector<Immutable<Layer::Impl>>& layers,
+ const std::vector<Immutable<style::LayerProperties>>& layers,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) {
diff --git a/src/mbgl/renderer/sources/render_custom_geometry_source.hpp b/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
index 5533fe2b83..be9e022eb9 100644
--- a/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
+++ b/src/mbgl/renderer/sources/render_custom_geometry_source.hpp
@@ -13,7 +13,7 @@ public:
bool isLoaded() const final;
void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) final;
diff --git a/src/mbgl/renderer/sources/render_geojson_source.cpp b/src/mbgl/renderer/sources/render_geojson_source.cpp
index 3cfcfc7392..332ea4d170 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.cpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.cpp
@@ -84,7 +84,7 @@ bool RenderGeoJSONSource::isLoaded() const {
}
void RenderGeoJSONSource::update(Immutable<style::Source::Impl> baseImpl_,
- const std::vector<Immutable<Layer::Impl>>& layers,
+ const std::vector<Immutable<LayerProperties>>& layers,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) {
diff --git a/src/mbgl/renderer/sources/render_geojson_source.hpp b/src/mbgl/renderer/sources/render_geojson_source.hpp
index c23559c09a..c8e98f96ee 100644
--- a/src/mbgl/renderer/sources/render_geojson_source.hpp
+++ b/src/mbgl/renderer/sources/render_geojson_source.hpp
@@ -18,7 +18,7 @@ public:
bool isLoaded() const final;
void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) final;
diff --git a/src/mbgl/renderer/sources/render_image_source.cpp b/src/mbgl/renderer/sources/render_image_source.cpp
index 7190f25bc7..b6a75acacc 100644
--- a/src/mbgl/renderer/sources/render_image_source.cpp
+++ b/src/mbgl/renderer/sources/render_image_source.cpp
@@ -106,7 +106,7 @@ std::vector<Feature> RenderImageSource::querySourceFeatures(const SourceQueryOpt
}
void RenderImageSource::update(Immutable<style::Source::Impl> baseImpl_,
- const std::vector<Immutable<Layer::Impl>>&,
+ const std::vector<Immutable<LayerProperties>>&,
const bool needsRendering,
const bool,
const TileParameters& parameters) {
diff --git a/src/mbgl/renderer/sources/render_image_source.hpp b/src/mbgl/renderer/sources/render_image_source.hpp
index cf14e180fd..e5cdcd4d81 100644
--- a/src/mbgl/renderer/sources/render_image_source.hpp
+++ b/src/mbgl/renderer/sources/render_image_source.hpp
@@ -19,7 +19,7 @@ public:
void finishRender(PaintParameters&) final;
void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) final;
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.cpp b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
index 63ab3ca370..c942432e64 100644
--- a/src/mbgl/renderer/sources/render_raster_dem_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_dem_source.cpp
@@ -23,7 +23,7 @@ bool RenderRasterDEMSource::isLoaded() const {
}
void RenderRasterDEMSource::update(Immutable<style::Source::Impl> baseImpl_,
- const std::vector<Immutable<Layer::Impl>>& layers,
+ const std::vector<Immutable<LayerProperties>>& layers,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) {
diff --git a/src/mbgl/renderer/sources/render_raster_dem_source.hpp b/src/mbgl/renderer/sources/render_raster_dem_source.hpp
index 48c7803e92..af76e22da7 100644
--- a/src/mbgl/renderer/sources/render_raster_dem_source.hpp
+++ b/src/mbgl/renderer/sources/render_raster_dem_source.hpp
@@ -13,7 +13,7 @@ public:
bool isLoaded() const final;
void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) final;
diff --git a/src/mbgl/renderer/sources/render_raster_source.cpp b/src/mbgl/renderer/sources/render_raster_source.cpp
index 017763b96a..96e793f9b2 100644
--- a/src/mbgl/renderer/sources/render_raster_source.cpp
+++ b/src/mbgl/renderer/sources/render_raster_source.cpp
@@ -21,7 +21,7 @@ bool RenderRasterSource::isLoaded() const {
}
void RenderRasterSource::update(Immutable<style::Source::Impl> baseImpl_,
- const std::vector<Immutable<Layer::Impl>>& layers,
+ const std::vector<Immutable<LayerProperties>>& layers,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) {
diff --git a/src/mbgl/renderer/sources/render_raster_source.hpp b/src/mbgl/renderer/sources/render_raster_source.hpp
index 32539a046d..24242949bb 100644
--- a/src/mbgl/renderer/sources/render_raster_source.hpp
+++ b/src/mbgl/renderer/sources/render_raster_source.hpp
@@ -13,7 +13,7 @@ public:
bool isLoaded() const final;
void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) final;
diff --git a/src/mbgl/renderer/sources/render_vector_source.cpp b/src/mbgl/renderer/sources/render_vector_source.cpp
index 61954a68e6..efcd11094c 100644
--- a/src/mbgl/renderer/sources/render_vector_source.cpp
+++ b/src/mbgl/renderer/sources/render_vector_source.cpp
@@ -24,7 +24,7 @@ bool RenderVectorSource::isLoaded() const {
}
void RenderVectorSource::update(Immutable<style::Source::Impl> baseImpl_,
- const std::vector<Immutable<Layer::Impl>>& layers,
+ const std::vector<Immutable<style::LayerProperties>>& layers,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters) {
diff --git a/src/mbgl/renderer/sources/render_vector_source.hpp b/src/mbgl/renderer/sources/render_vector_source.hpp
index 6fd2425aa3..fe7147fc25 100644
--- a/src/mbgl/renderer/sources/render_vector_source.hpp
+++ b/src/mbgl/renderer/sources/render_vector_source.hpp
@@ -13,7 +13,7 @@ public:
bool isLoaded() const final;
void update(Immutable<style::Source::Impl>,
- const std::vector<Immutable<style::Layer::Impl>>&,
+ const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&) final;
diff --git a/src/mbgl/renderer/tile_pyramid.cpp b/src/mbgl/renderer/tile_pyramid.cpp
index b169fddf9c..6e1bddec0a 100644
--- a/src/mbgl/renderer/tile_pyramid.cpp
+++ b/src/mbgl/renderer/tile_pyramid.cpp
@@ -61,7 +61,7 @@ Tile* TilePyramid::getTile(const OverscaledTileID& tileID){
return it == tiles.end() ? cache.get(tileID) : it->second.get();
}
-void TilePyramid::update(const std::vector<Immutable<style::Layer::Impl>>& layers,
+void TilePyramid::update(const std::vector<Immutable<style::LayerProperties>>& layers,
const bool needsRendering,
const bool needsRelayout,
const TileParameters& parameters,
diff --git a/src/mbgl/renderer/tile_pyramid.hpp b/src/mbgl/renderer/tile_pyramid.hpp
index bc2c370780..594330e0c9 100644
--- a/src/mbgl/renderer/tile_pyramid.hpp
+++ b/src/mbgl/renderer/tile_pyramid.hpp
@@ -5,7 +5,7 @@
#include <mbgl/tile/tile.hpp>
#include <mbgl/tile/tile_cache.hpp>
#include <mbgl/style/types.hpp>
-#include <mbgl/style/layer_impl.hpp>
+#include <mbgl/style/layer_properties.hpp>
#include <mbgl/util/mat4.hpp>
#include <mbgl/util/feature.hpp>
@@ -33,7 +33,7 @@ public:
bool isLoaded() const;
- void update(const std::vector<Immutable<style::Layer::Impl>>&,
+ void update(const std::vector<Immutable<style::LayerProperties>>&,
bool needsRendering,
bool needsRelayout,
const TileParameters&,