[core] Merge AnnotationTileSource into AnnotationTileData

This commit is contained in:
John Firebaugh
2016-06-06 17:26:56 -07:00
committed by Konstantin Käfer
parent b45713e5e9
commit d62baffb1b
6 changed files with 22 additions and 71 deletions

View File

@@ -5,7 +5,7 @@
#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_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>
@@ -135,18 +135,18 @@ void AnnotationManager::updateStyle(Style& style) {
obsoleteShapeAnnotationLayers.clear();
for (auto& monitor : monitors) {
monitor->update(getTile(monitor->tileID.canonical));
for (auto& data : monitors) {
data->setData(getTile(data->id.canonical), {}, {});
}
}
void AnnotationManager::addTileSource(AnnotationTileSource& monitor) {
monitors.insert(&monitor);
monitor.update(getTile(monitor.tileID.canonical));
void AnnotationManager::addTileData(AnnotationTileData& data) {
monitors.insert(&data);
data.setData(getTile(data.id.canonical), {}, {});
}
void AnnotationManager::removeTileSource(AnnotationTileSource& monitor) {
monitors.erase(&monitor);
void AnnotationManager::removeTileData(AnnotationTileData& data) {
monitors.erase(&data);
}
void AnnotationManager::addIcon(const std::string& name, std::shared_ptr<const SpriteImage> sprite) {

View File

@@ -15,7 +15,7 @@
namespace mbgl {
class AnnotationTile;
class AnnotationTileSource;
class AnnotationTileData;
class SymbolAnnotationImpl;
class ShapeAnnotationImpl;
@@ -41,8 +41,8 @@ public:
void updateStyle(style::Style&);
void addTileSource(AnnotationTileSource&);
void removeTileSource(AnnotationTileSource&);
void addTileData(AnnotationTileData&);
void removeTileData(AnnotationTileData&);
static const std::string SourceID;
static const std::string PointLayerID;
@@ -65,7 +65,7 @@ private:
SymbolAnnotationMap symbolAnnotations;
ShapeAnnotationMap shapeAnnotations;
std::vector<std::string> obsoleteShapeAnnotationLayers;
std::set<AnnotationTileSource*> monitors;
std::set<AnnotationTileData*> monitors;
SpriteStore spriteStore;
SpriteAtlas spriteAtlas;

View File

@@ -1,20 +1,21 @@
#include <mbgl/tile/annotation_tile_data.hpp>
#include <mbgl/tile/annotation_tile_source.hpp>
#include <mbgl/style/update_parameters.hpp>
#include <mbgl/annotation/annotation_manager.hpp>
namespace mbgl {
AnnotationTileData::AnnotationTileData(const OverscaledTileID& overscaledTileID,
std::string sourceID,
const style::UpdateParameters& parameters)
: GeometryTileData(overscaledTileID, sourceID, parameters.style, parameters.mode) {
tileSource = std::make_unique<AnnotationTileSource>(*this, overscaledTileID, parameters.annotationManager);
: GeometryTileData(overscaledTileID, sourceID, parameters.style, parameters.mode),
annotationManager(parameters.annotationManager) {
annotationManager.addTileData(*this);
}
AnnotationTileData::~AnnotationTileData() = default;
void AnnotationTileData::setNecessity(Necessity necessity) {
tileSource->setNecessity(static_cast<TileSource::Necessity>(necessity));
AnnotationTileData::~AnnotationTileData() {
annotationManager.removeTileData(*this);
}
void AnnotationTileData::setNecessity(Necessity) {}
} // namespace mbgl

View File

@@ -4,7 +4,7 @@
namespace mbgl {
class TileSource;
class AnnotationManager;
namespace style {
class UpdateParameters;
@@ -20,7 +20,7 @@ public:
void setNecessity(Necessity) final;
private:
std::unique_ptr<TileSource> tileSource;
AnnotationManager& annotationManager;
};
} // namespace mbgl

View File

@@ -1,24 +0,0 @@
#include <mbgl/tile/annotation_tile_source.hpp>
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>
#include <mbgl/annotation/annotation_manager.hpp>
#include <mbgl/util/async_request.hpp>
namespace mbgl {
AnnotationTileSource::AnnotationTileSource(GeometryTileData& tileData_,
const OverscaledTileID& tileID_,
AnnotationManager& annotationManager_)
: GeometryTileSource(tileData_), tileID(tileID_), annotationManager(annotationManager_) {
annotationManager.addTileSource(*this);
}
AnnotationTileSource::~AnnotationTileSource() {
annotationManager.removeTileSource(*this);
}
void AnnotationTileSource::update(std::unique_ptr<GeometryTile> tile) {
tileData.setData(std::move(tile), {}, {});
}
} // namespace mbgl

View File

@@ -1,26 +0,0 @@
#pragma once
#include <mbgl/tile/tile_source.hpp>
#include <mbgl/tile/tile_id.hpp>
#include <memory>
namespace mbgl {
class AnnotationManager;
class GeometryTile;
class AnnotationTileSource final : public GeometryTileSource {
public:
AnnotationTileSource(GeometryTileData&, const OverscaledTileID&, AnnotationManager&);
~AnnotationTileSource();
void update(std::unique_ptr<GeometryTile>);
OverscaledTileID tileID;
private:
AnnotationManager& annotationManager;
};
} // namespace mbgl