summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-18 14:31:03 +0300
committerMikhail Pozdnyakov <mikhail.pozdnyakov@mapbox.com>2019-09-18 16:21:59 +0300
commit152d4c35fc5c7f06940b820790474fa5d5767112 (patch)
tree1399dd78677c345809a4f70e1eee661c810762b4
parenta6618dc0f938598f88c9650ef099f37681abed28 (diff)
downloadqtlocation-mapboxgl-152d4c35fc5c7f06940b820790474fa5d5767112.tar.gz
[core] Add LayerTypeInfo::TileKind
-rw-r--r--include/mbgl/style/layer.hpp6
-rw-r--r--src/mbgl/style/layer.cpp5
-rw-r--r--src/mbgl/style/layers/background_layer.cpp3
-rw-r--r--src/mbgl/style/layers/circle_layer.cpp3
-rw-r--r--src/mbgl/style/layers/custom_layer.cpp3
-rw-r--r--src/mbgl/style/layers/fill_extrusion_layer.cpp3
-rw-r--r--src/mbgl/style/layers/fill_layer.cpp3
-rw-r--r--src/mbgl/style/layers/heatmap_layer.cpp3
-rw-r--r--src/mbgl/style/layers/hillshade_layer.cpp3
-rw-r--r--src/mbgl/style/layers/layer.cpp.ejs30
-rw-r--r--src/mbgl/style/layers/line_layer.cpp3
-rw-r--r--src/mbgl/style/layers/raster_layer.cpp3
-rw-r--r--src/mbgl/style/layers/symbol_layer.cpp3
13 files changed, 53 insertions, 18 deletions
diff --git a/include/mbgl/style/layer.hpp b/include/mbgl/style/layer.hpp
index ecd3f01f70..35577411eb 100644
--- a/include/mbgl/style/layer.hpp
+++ b/include/mbgl/style/layer.hpp
@@ -57,6 +57,12 @@ struct LayerTypeInfo {
* requires cross-tile indexing and placement. Contains \c CrossTileIndex::NotRequired otherwise.
*/
const enum class CrossTileIndex { Required, NotRequired } crossTileIndex;
+
+ /**
+ * @brief contains the Id of the supported tile type. Used for internal checks.
+ * The contained values correspond to \c Tile::Kind enum.
+ */
+ const enum class TileKind : uint8_t { Geometry, Raster, RasterDEM, NotRequired } tileKind;
};
/**
diff --git a/src/mbgl/style/layer.cpp b/src/mbgl/style/layer.cpp
index 328cd47555..2f4d50cd83 100644
--- a/src/mbgl/style/layer.cpp
+++ b/src/mbgl/style/layer.cpp
@@ -4,12 +4,17 @@
#include <mbgl/style/conversion/constant.hpp>
#include <mbgl/style/conversion/filter.hpp>
#include <mbgl/style/conversion_impl.hpp>
+#include <mbgl/tile/tile.hpp>
#include <mbgl/renderer/render_layer.hpp>
namespace mbgl {
namespace style {
+static_assert(mbgl::underlying_type(Tile::Kind::Geometry) == mbgl::underlying_type(LayerTypeInfo::TileKind::Geometry), "tile kind error");
+static_assert(mbgl::underlying_type(Tile::Kind::Raster) == mbgl::underlying_type(LayerTypeInfo::TileKind::Raster), "tile kind error");
+static_assert(mbgl::underlying_type(Tile::Kind::RasterDEM) == mbgl::underlying_type(LayerTypeInfo::TileKind::RasterDEM), "tile kind error");
+
static LayerObserver nullObserver;
Layer::Layer(Immutable<Impl> impl)
diff --git a/src/mbgl/style/layers/background_layer.cpp b/src/mbgl/style/layers/background_layer.cpp
index 1693c47204..f91d8f8493 100644
--- a/src/mbgl/style/layers/background_layer.cpp
+++ b/src/mbgl/style/layers/background_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* BackgroundLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::NotRequired,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::NotRequired
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/circle_layer.cpp b/src/mbgl/style/layers/circle_layer.cpp
index 2293ed222e..aba6b897b1 100644
--- a/src/mbgl/style/layers/circle_layer.cpp
+++ b/src/mbgl/style/layers/circle_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* CircleLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::NotRequired,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::Geometry
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/custom_layer.cpp b/src/mbgl/style/layers/custom_layer.cpp
index e77d6590f7..7e58b8e4e1 100644
--- a/src/mbgl/style/layers/custom_layer.cpp
+++ b/src/mbgl/style/layers/custom_layer.cpp
@@ -14,7 +14,8 @@ namespace {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::NotRequired,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired };
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::NotRequired };
} // namespace
CustomLayer::CustomLayer(const std::string& layerID,
diff --git a/src/mbgl/style/layers/fill_extrusion_layer.cpp b/src/mbgl/style/layers/fill_extrusion_layer.cpp
index 50e32cf812..5214b275fb 100644
--- a/src/mbgl/style/layers/fill_extrusion_layer.cpp
+++ b/src/mbgl/style/layers/fill_extrusion_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* FillExtrusionLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::Required,
LayerTypeInfo::Layout::Required,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::Geometry
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/fill_layer.cpp b/src/mbgl/style/layers/fill_layer.cpp
index e08c8f3962..63371b34f0 100644
--- a/src/mbgl/style/layers/fill_layer.cpp
+++ b/src/mbgl/style/layers/fill_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* FillLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::Required,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::Geometry
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/heatmap_layer.cpp b/src/mbgl/style/layers/heatmap_layer.cpp
index cb99f76a51..da4f6a35a4 100644
--- a/src/mbgl/style/layers/heatmap_layer.cpp
+++ b/src/mbgl/style/layers/heatmap_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* HeatmapLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::Required,
LayerTypeInfo::Layout::NotRequired,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::Geometry
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/hillshade_layer.cpp b/src/mbgl/style/layers/hillshade_layer.cpp
index 95a395ef25..e96e0f1839 100644
--- a/src/mbgl/style/layers/hillshade_layer.cpp
+++ b/src/mbgl/style/layers/hillshade_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* HillshadeLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::Required,
LayerTypeInfo::Layout::NotRequired,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::RasterDEM
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/layer.cpp.ejs b/src/mbgl/style/layers/layer.cpp.ejs
index da34565461..c63999ca32 100644
--- a/src/mbgl/style/layers/layer.cpp.ejs
+++ b/src/mbgl/style/layers/layer.cpp.ejs
@@ -27,13 +27,20 @@ let defaults = { caps: { 'Source': 'NotRequired',
'Pass3D': 'NotRequired',
'Layout': 'NotRequired',
'FadingTiles': 'NotRequired',
- 'CrossTileIndex': 'NotRequired'
+ 'CrossTileIndex': 'NotRequired',
+ 'TileKind' : 'NotRequired'
},
require: function(cap) {
- let copy = Object.assign({}, this);
- copy.caps = Object.assign({}, this.caps);
- copy.caps[cap] = 'Required';
- return copy;
+ let copy = Object.assign({}, this);
+ copy.caps = Object.assign({}, this.caps);
+ copy.caps[cap] = 'Required';
+ return copy;
+ },
+ set: function(cap, value) {
+ let copy = Object.assign({}, this);
+ copy.caps = Object.assign({}, this.caps);
+ copy.caps[cap] = value;
+ return copy;
},
finalize: function() {
return Object.keys(this.caps).reduce((acc, key) => {
@@ -46,23 +53,30 @@ let defaults = { caps: { 'Source': 'NotRequired',
layerCapabilities['background'] = defaults.finalize();
layerCapabilities['fill'] = defaults.require('Source')
.require('Layout')
+ .set('TileKind', 'Geometry')
.finalize();
layerCapabilities['fill-extrusion'] = defaults.require('Source')
.require('Pass3D')
.require('Layout')
+ .set('TileKind', 'Geometry')
.finalize();
layerCapabilities['hillshade'] = defaults.require('Source')
.require('Pass3D')
+ .set('TileKind', 'RasterDEM')
.finalize();
layerCapabilities['symbol'] = defaults.require('Source')
.require('Layout')
.require('FadingTiles')
.require('CrossTileIndex')
+ .set('TileKind', 'Geometry')
.finalize();
-layerCapabilities['circle'] = defaults.require('Source').finalize();
+layerCapabilities['circle'] = defaults.require('Source').set('TileKind', 'Geometry').finalize();
layerCapabilities['line'] = layerCapabilities['fill'];
-layerCapabilities['heatmap'] = layerCapabilities['hillshade'];
-layerCapabilities['raster'] = layerCapabilities['circle'];
+layerCapabilities['heatmap'] = defaults.require('Source')
+ .require('Pass3D')
+ .set('TileKind', 'Geometry')
+ .finalize();
+layerCapabilities['raster'] = defaults.require('Source').set('TileKind', 'Raster').finalize();
%>
// static
const LayerTypeInfo* <%- camelize(type) %>Layer::Impl::staticTypeInfo() noexcept {
diff --git a/src/mbgl/style/layers/line_layer.cpp b/src/mbgl/style/layers/line_layer.cpp
index deb85cad66..f376765085 100644
--- a/src/mbgl/style/layers/line_layer.cpp
+++ b/src/mbgl/style/layers/line_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* LineLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::Required,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::Geometry
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/raster_layer.cpp b/src/mbgl/style/layers/raster_layer.cpp
index ead2223ea6..a98919b24a 100644
--- a/src/mbgl/style/layers/raster_layer.cpp
+++ b/src/mbgl/style/layers/raster_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* RasterLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::NotRequired,
LayerTypeInfo::FadingTiles::NotRequired,
- LayerTypeInfo::CrossTileIndex::NotRequired
+ LayerTypeInfo::CrossTileIndex::NotRequired,
+ LayerTypeInfo::TileKind::Raster
};
return &typeInfo;
}
diff --git a/src/mbgl/style/layers/symbol_layer.cpp b/src/mbgl/style/layers/symbol_layer.cpp
index 157d8c745f..fbf7c1e958 100644
--- a/src/mbgl/style/layers/symbol_layer.cpp
+++ b/src/mbgl/style/layers/symbol_layer.cpp
@@ -25,7 +25,8 @@ const LayerTypeInfo* SymbolLayer::Impl::staticTypeInfo() noexcept {
LayerTypeInfo::Pass3D::NotRequired,
LayerTypeInfo::Layout::Required,
LayerTypeInfo::FadingTiles::Required,
- LayerTypeInfo::CrossTileIndex::Required
+ LayerTypeInfo::CrossTileIndex::Required,
+ LayerTypeInfo::TileKind::Geometry
};
return &typeInfo;
}