[core] Merge AnnotationTileSource into AnnotationTileData
This commit is contained in:
committed by
Konstantin Käfer
parent
b45713e5e9
commit
d62baffb1b
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user