summaryrefslogtreecommitdiff
path: root/src/map
diff options
context:
space:
mode:
authorLauren Budorick <lauren@mapbox.com>2014-08-04 17:24:22 -0700
committerLauren Budorick <lauren@mapbox.com>2014-08-11 12:12:43 -0700
commitdf925fe0e5429085f0f443f4be1326c0616f6acc (patch)
treea502590190ef6898ddbbd468cf2afb03ea55a4d3 /src/map
parent7a98ad4cf949dd1279719bf926bd08da0133210f (diff)
downloadqtlocation-mapboxgl-df925fe0e5429085f0f443f4be1326c0616f6acc.tar.gz
nonworking prerendering attempts
Diffstat (limited to 'src/map')
-rw-r--r--src/map/map.cpp20
-rw-r--r--src/map/tile_parser.cpp7
-rw-r--r--src/map/vector_tile_data.cpp3
3 files changed, 24 insertions, 6 deletions
diff --git a/src/map/map.cpp b/src/map/map.cpp
index ef7b9548bd..c5df1f96df 100644
--- a/src/map/map.cpp
+++ b/src/map/map.cpp
@@ -522,6 +522,21 @@ void Map::updateRenderState() {
}
}
+void Map::updateRenderState(const mat4 vtxMatrix) {
+ std::forward_list<Tile::ID> ids;
+
+ for (const std::shared_ptr<StyleSource> &source : getActiveSources()) {
+ ids.splice_after(ids.before_begin(), source->source->getIDs());
+ source->source->updateMatrices(vtxMatrix, state);
+ }
+
+ const std::map<Tile::ID, ClipID> clipIDs = computeClipIDs(ids);
+
+ for (const std::shared_ptr<StyleSource> &source : getActiveSources()) {
+ source->source->updateClipIDs(clipIDs);
+ }
+}
+
void Map::prepare() {
view.make_active();
@@ -634,8 +649,8 @@ void Map::renderLayers(std::shared_ptr<StyleLayerGroup> group) {
}
void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass) {
- if (layer_desc->layers) {
- // This is a layer group. We render them during our translucent render pass.
+ if (layer_desc->layers && layer_desc->type != StyleLayerType::Raster) {
+ // This is a layer group. We render them during our translucent render pass.
if (pass == Translucent) {
const CompositeProperties &properties = layer_desc->getProperties<CompositeProperties>();
if (properties.isVisible()) {
@@ -716,7 +731,6 @@ void Map::renderLayer(std::shared_ptr<StyleLayer> layer_desc, RenderPass pass) {
std::cout << std::string(indent * 4, ' ') << "- " << layer_desc->id << " ("
<< layer_desc->type << ")" << std::endl;
}
-
style_source.source->render(painter, layer_desc);
}
}
diff --git a/src/map/tile_parser.cpp b/src/map/tile_parser.cpp
index 97b071a163..e32a6068fc 100644
--- a/src/map/tile_parser.cpp
+++ b/src/map/tile_parser.cpp
@@ -66,10 +66,11 @@ void TileParser::parseStyleLayers(std::shared_ptr<StyleLayerGroup> group) {
if (layer_desc->isBackground()) {
// background is a special, fake bucket
continue;
- } else if (layer_desc->layers) {
+ } else if (layer_desc->layers && layer_desc->type != StyleLayerType::Raster) {
// This is a layer group.
parseStyleLayers(layer_desc->layers);
- } else if (layer_desc->bucket) {
+ }
+ if (layer_desc->bucket) {
// This is a singular layer. Check if this bucket already exists. If not,
// parse this bucket.
auto bucket_it = tile.buckets.find(layer_desc->bucket->name);
@@ -157,4 +158,4 @@ std::unique_ptr<Bucket> TileParser::createSymbolBucket(const VectorTileLayer& la
std::unique_ptr<SymbolBucket> bucket = std::make_unique<SymbolBucket>(symbol, collision);
bucket->addFeatures(layer, filter, tile.id, *spriteAtlas, *sprite, *glyphAtlas, *glyphStore);
return obsolete() ? nullptr : std::move(bucket);
-}
+} \ No newline at end of file
diff --git a/src/map/vector_tile_data.cpp b/src/map/vector_tile_data.cpp
index 2bf339b65f..f4a841b3f5 100644
--- a/src/map/vector_tile_data.cpp
+++ b/src/map/vector_tile_data.cpp
@@ -58,6 +58,9 @@ void VectorTileData::render(Painter &painter, std::shared_ptr<StyleLayer> layer_
if (databucket_it != buckets.end()) {
assert(databucket_it->second);
databucket_it->second->render(painter, layer_desc, id);
+ } else if (layer_desc->type == StyleLayerType::Raster && layer_desc->layers) {
+// HELP
+
}
}
}