Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.

*Tile ↔ *TileData #5320

Merged
merged 11 commits into from
Jun 13, 2016
2 changes: 1 addition & 1 deletion benchmark/parse/filter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <mbgl/style/filter.hpp>
#include <mbgl/style/filter_evaluator.hpp>
#include <mbgl/style/parser.hpp>
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>

#include <rapidjson/document.h>

Expand Down
1 change: 0 additions & 1 deletion src/mbgl/algorithm/generate_clip_ids.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
#include <mbgl/algorithm/covered_by_children.hpp>

#include <mbgl/util/std.hpp>
#include <mbgl/tile/tile.hpp>

#include <list>
#include <vector>
Expand Down
34 changes: 17 additions & 17 deletions src/mbgl/algorithm/update_renderables.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@
namespace mbgl {
namespace algorithm {

template <typename GetTileDataFn,
typename CreateTileDataFn,
typename RetainTileDataFn,
template <typename GetTileFn,
typename CreateTileFn,
typename RetainTileFn,
typename RenderTileFn,
typename IdealTileIDs,
typename SourceInfo>
void updateRenderables(GetTileDataFn getTileData,
CreateTileDataFn createTileData,
RetainTileDataFn retainTileData,
void updateRenderables(GetTileFn getTile,
CreateTileFn createTile,
RetainTileFn retainTile,
RenderTileFn renderTile,
const IdealTileIDs& idealTileIDs,
const SourceInfo& info,
Expand All @@ -31,29 +31,29 @@ void updateRenderables(GetTileDataFn getTileData,
assert(dataTileZoom >= idealRenderTileID.canonical.z);

const OverscaledTileID idealDataTileID(dataTileZoom, idealRenderTileID.canonical);
auto data = getTileData(idealDataTileID);
auto data = getTile(idealDataTileID);
if (!data) {
data = createTileData(idealDataTileID);
data = createTile(idealDataTileID);
assert(data);
}

// if (source has the tile and bucket is loaded) {
if (data->isRenderable()) {
retainTileData(*data, true);
retainTile(*data, true);
renderTile(idealRenderTileID, *data);
} else {
bool triedPrevious = data->hasTriedOptional();

// The tile isn't loaded yet, but retain it anyway because it's an ideal tile.
retainTileData(*data, true);
retainTile(*data, true);
covered = true;
overscaledZ = dataTileZoom + 1;
if (overscaledZ > info.maxZoom) {
// We're looking for an overzoomed child tile.
const auto childDataTileID = idealDataTileID.scaledTo(overscaledZ);
data = getTileData(childDataTileID);
data = getTile(childDataTileID);
if (data && data->isRenderable()) {
retainTileData(*data, false);
retainTile(*data, false);
renderTile(idealRenderTileID, *data);
} else {
covered = false;
Expand All @@ -62,9 +62,9 @@ void updateRenderables(GetTileDataFn getTileData,
// Check all four actual child tiles.
for (const auto& childTileID : idealDataTileID.canonical.children()) {
const OverscaledTileID childDataTileID(overscaledZ, childTileID);
data = getTileData(childDataTileID);
data = getTile(childDataTileID);
if (data && data->isRenderable()) {
retainTileData(*data, false);
retainTile(*data, false);
renderTile(childDataTileID.unwrapTo(idealRenderTileID.wrap), *data);
} else {
// At least one child tile doesn't exist, so we are going to look for
Expand All @@ -89,14 +89,14 @@ void updateRenderables(GetTileDataFn getTileData,
checked.emplace(parentRenderTileID);
}

data = getTileData(parentDataTileID);
data = getTile(parentDataTileID);
if (!data && triedPrevious) {
data = createTileData(parentDataTileID);
data = createTile(parentDataTileID);
}

if (data) {
triedPrevious = data->hasTriedOptional();
retainTileData(*data, false);
retainTile(*data, false);

if (data->isRenderable()) {
renderTile(parentRenderTileID, *data);
Expand Down
25 changes: 12 additions & 13 deletions src/mbgl/annotation/annotation_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
#include <mbgl/annotation/fill_annotation_impl.hpp>
#include <mbgl/annotation/style_sourced_annotation_impl.hpp>
#include <mbgl/style/source.hpp>
#include <mbgl/tile/annotation_tile_data.hpp>
#include <mbgl/style/style.hpp>
#include <mbgl/style/layers/symbol_layer.hpp>
#include <mbgl/style/layers/symbol_layer_impl.hpp>
Expand Down Expand Up @@ -81,13 +80,13 @@ AnnotationIDs AnnotationManager::getPointAnnotationsInBounds(const LatLngBounds&
return result;
}

std::unique_ptr<AnnotationTile> AnnotationManager::getTile(const CanonicalTileID& tileID) {
std::unique_ptr<AnnotationTileData> AnnotationManager::getTileData(const CanonicalTileID& tileID) {
if (symbolAnnotations.empty() && shapeAnnotations.empty())
return nullptr;

auto tile = std::make_unique<AnnotationTile>();
auto tileData = std::make_unique<AnnotationTileData>();

AnnotationTileLayer& pointLayer = *tile->layers.emplace(
AnnotationTileLayer& pointLayer = *tileData->layers.emplace(
PointLayerID,
std::make_unique<AnnotationTileLayer>(PointLayerID)).first->second;

Expand All @@ -99,10 +98,10 @@ std::unique_ptr<AnnotationTile> AnnotationManager::getTile(const CanonicalTileID
}));

for (const auto& shape : shapeAnnotations) {
shape.second->updateTile(tileID, *tile);
shape.second->updateTileData(tileID, *tileData);
}

return tile;
return tileData;
}

void AnnotationManager::updateStyle(Style& style) {
Expand Down Expand Up @@ -135,18 +134,18 @@ void AnnotationManager::updateStyle(Style& style) {

obsoleteShapeAnnotationLayers.clear();

for (auto& data : monitors) {
data->setData(getTile(data->id.canonical), {}, {});
for (auto& tile : tiles) {
tile->setData(getTileData(tile->id.canonical));
}
}

void AnnotationManager::addTileData(AnnotationTileData& data) {
monitors.insert(&data);
data.setData(getTile(data.id.canonical), {}, {});
void AnnotationManager::addTile(AnnotationTile& tile) {
tiles.insert(&tile);
tile.setData(getTileData(tile.id.canonical));
}

void AnnotationManager::removeTileData(AnnotationTileData& data) {
monitors.erase(&data);
void AnnotationManager::removeTile(AnnotationTile& tile) {
tiles.erase(&tile);
}

void AnnotationManager::addIcon(const std::string& name, std::shared_ptr<const SpriteImage> sprite) {
Expand Down
8 changes: 4 additions & 4 deletions src/mbgl/annotation/annotation_manager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ class AnnotationManager : private util::noncopyable {

void updateStyle(style::Style&);

void addTileData(AnnotationTileData&);
void removeTileData(AnnotationTileData&);
void addTile(AnnotationTile&);
void removeTile(AnnotationTile&);

static const std::string SourceID;
static const std::string PointLayerID;
Expand All @@ -53,7 +53,7 @@ class AnnotationManager : private util::noncopyable {
void add(const AnnotationID&, const FillAnnotation&, const uint8_t);
void add(const AnnotationID&, const StyleSourcedAnnotation&, const uint8_t);

std::unique_ptr<AnnotationTile> getTile(const CanonicalTileID&);
std::unique_ptr<AnnotationTileData> getTileData(const CanonicalTileID&);

AnnotationID nextID = 0;

Expand All @@ -65,7 +65,7 @@ class AnnotationManager : private util::noncopyable {
SymbolAnnotationMap symbolAnnotations;
ShapeAnnotationMap shapeAnnotations;
std::vector<std::string> obsoleteShapeAnnotationLayers;
std::set<AnnotationTileData*> monitors;
std::set<AnnotationTile*> tiles;

SpriteStore spriteStore;
SpriteAtlas spriteAtlas;
Expand Down
17 changes: 16 additions & 1 deletion src/mbgl/annotation/annotation_tile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,26 @@
#include <mbgl/annotation/annotation_manager.hpp>
#include <mbgl/util/constants.hpp>
#include <mbgl/storage/file_source.hpp>
#include <mbgl/style/update_parameters.hpp>

#include <utility>

namespace mbgl {

AnnotationTile::AnnotationTile(const OverscaledTileID& overscaledTileID,
std::string sourceID,
const style::UpdateParameters& parameters)
: GeometryTile(overscaledTileID, sourceID, parameters.style, parameters.mode),
annotationManager(parameters.annotationManager) {
annotationManager.addTile(*this);
}

AnnotationTile::~AnnotationTile() {
annotationManager.removeTile(*this);
}

void AnnotationTile::setNecessity(Necessity) {}

AnnotationTileFeature::AnnotationTileFeature(FeatureType type_, GeometryCollection geometries_,
std::unordered_map<std::string, std::string> properties_)
: type(type_),
Expand All @@ -24,7 +39,7 @@ optional<Value> AnnotationTileFeature::getValue(const std::string& key) const {
AnnotationTileLayer::AnnotationTileLayer(const std::string &name_)
: name(name_) {}

util::ptr<GeometryTileLayer> AnnotationTile::getLayer(const std::string& name) const {
util::ptr<GeometryTileLayer> AnnotationTileData::getLayer(const std::string& name) const {
auto it = layers.find(name);
if (it != layers.end()) {
return it->second;
Expand Down
22 changes: 21 additions & 1 deletion src/mbgl/annotation/annotation_tile.hpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,29 @@
#pragma once

#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>

namespace mbgl {

class AnnotationManager;

namespace style {
class UpdateParameters;
}

class AnnotationTile : public GeometryTile {
public:
AnnotationTile(const OverscaledTileID&,
std::string sourceID,
const style::UpdateParameters&);
~AnnotationTile();

void setNecessity(Necessity) final;

private:
AnnotationManager& annotationManager;
};

class AnnotationTileFeature : public GeometryTileFeature {
public:
AnnotationTileFeature(FeatureType, GeometryCollection,
Expand Down Expand Up @@ -32,7 +52,7 @@ class AnnotationTileLayer : public GeometryTileLayer {
std::string name;
};

class AnnotationTile : public GeometryTile {
class AnnotationTileData : public GeometryTileData {
public:
util::ptr<GeometryTileLayer> getLayer(const std::string&) const override;

Expand Down
4 changes: 2 additions & 2 deletions src/mbgl/annotation/shape_annotation_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ struct ToGeoJSONVT {
}
};

void ShapeAnnotationImpl::updateTile(const CanonicalTileID& tileID, AnnotationTile& tile) {
void ShapeAnnotationImpl::updateTileData(const CanonicalTileID& tileID, AnnotationTileData& data) {
static const double baseTolerance = 4;

if (!shapeTiler) {
Expand All @@ -108,7 +108,7 @@ void ShapeAnnotationImpl::updateTile(const CanonicalTileID& tileID, AnnotationTi
if (!shapeTile)
return;

AnnotationTileLayer& layer = *tile.layers.emplace(layerID,
AnnotationTileLayer& layer = *data.layers.emplace(layerID,
std::make_unique<AnnotationTileLayer>(layerID)).first->second;

for (auto& shapeFeature : shapeTile.features) {
Expand Down
4 changes: 2 additions & 2 deletions src/mbgl/annotation/shape_annotation_impl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

namespace mbgl {

class AnnotationTile;
class AnnotationTileData;
class CanonicalTileID;

namespace style {
Expand All @@ -24,7 +24,7 @@ class ShapeAnnotationImpl {
virtual void updateStyle(style::Style&) const = 0;
virtual const ShapeAnnotationGeometry& geometry() const = 0;

void updateTile(const CanonicalTileID&, AnnotationTile&);
void updateTileData(const CanonicalTileID&, AnnotationTileData&);

const AnnotationID id;
const uint8_t maxZoom;
Expand Down
10 changes: 5 additions & 5 deletions src/mbgl/geometry/feature_index.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ void FeatureIndex::query(
const double tileSize,
const double scale,
const optional<std::vector<std::string>>& filterLayerIDs,
const GeometryTile& geometryTile,
const GeometryTileData& geometryTileData,
const CanonicalTileID& tileID,
const style::Style& style) const {

Expand All @@ -75,15 +75,15 @@ void FeatureIndex::query(
if (indexedFeature.sortIndex == previousSortIndex) continue;
previousSortIndex = indexedFeature.sortIndex;

addFeature(result, indexedFeature, queryGeometry, filterLayerIDs, geometryTile, tileID, style, bearing, pixelsToTileUnits);
addFeature(result, indexedFeature, queryGeometry, filterLayerIDs, geometryTileData, tileID, style, bearing, pixelsToTileUnits);
}

// query symbol features
assert(collisionTile);
std::vector<IndexedSubfeature> symbolFeatures = collisionTile->queryRenderedSymbols(box, scale);
std::sort(symbolFeatures.begin(), symbolFeatures.end(), topDownSymbols);
for (const auto& symbolFeature : symbolFeatures) {
addFeature(result, symbolFeature, queryGeometry, filterLayerIDs, geometryTile, tileID, style, bearing, pixelsToTileUnits);
addFeature(result, symbolFeature, queryGeometry, filterLayerIDs, geometryTileData, tileID, style, bearing, pixelsToTileUnits);
}
}

Expand All @@ -92,7 +92,7 @@ void FeatureIndex::addFeature(
const IndexedSubfeature& indexedFeature,
const GeometryCollection& queryGeometry,
const optional<std::vector<std::string>>& filterLayerIDs,
const GeometryTile& geometryTile,
const GeometryTileData& geometryTileData,
const CanonicalTileID& tileID,
const style::Style& style,
const float bearing,
Expand All @@ -103,7 +103,7 @@ void FeatureIndex::addFeature(
return;
}

auto sourceLayer = geometryTile.getLayer(indexedFeature.sourceLayerName);
auto sourceLayer = geometryTileData.getLayer(indexedFeature.sourceLayerName);
assert(sourceLayer);

auto geometryTileFeature = sourceLayer->getFeature(indexedFeature.index);
Expand Down
6 changes: 3 additions & 3 deletions src/mbgl/geometry/feature_index.hpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#pragma once

#include <mbgl/style/types.hpp>
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>
#include <mbgl/util/grid_index.hpp>
#include <mbgl/util/feature.hpp>

Expand Down Expand Up @@ -40,7 +40,7 @@ class FeatureIndex {
const double tileSize,
const double scale,
const optional<std::vector<std::string>>& layerIDs,
const GeometryTile&,
const GeometryTileData&,
const CanonicalTileID&,
const style::Style&) const;

Expand All @@ -61,7 +61,7 @@ class FeatureIndex {
const IndexedSubfeature&,
const GeometryCollection& queryGeometry,
const optional<std::vector<std::string>>& filterLayerIDs,
const GeometryTile&,
const GeometryTileData&,
const CanonicalTileID&,
const style::Style&,
const float bearing,
Expand Down
2 changes: 1 addition & 1 deletion src/mbgl/renderer/circle_bucket.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

#include <mbgl/renderer/bucket.hpp>
#include <mbgl/map/mode.hpp>
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>
#include <mbgl/geometry/elements_buffer.hpp>
#include <mbgl/geometry/circle_buffer.hpp>

Expand Down
Loading