Files
MapLibreParticleLab/src/mbgl/tile/custom_geometry_tile.hpp
mwilsnd bb34568af2 Add extra observer hooks for interesting internal processes (#2694)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-09-03 17:48:03 -04:00

45 lines
1.2 KiB
C++

#pragma once
#include <mbgl/tile/geometry_tile.hpp>
#include <mbgl/style/sources/custom_geometry_source.hpp>
#include <mbgl/util/feature.hpp>
#include <mbgl/util/geojson.hpp>
#include <mbgl/actor/mailbox.hpp>
namespace mbgl {
class TileParameters;
namespace style {
class CustomTileLoader;
} // namespace style
class CustomGeometryTile : public GeometryTile {
public:
CustomGeometryTile(const OverscaledTileID&,
std::string,
const TileParameters&,
Immutable<style::CustomGeometrySource::TileOptions>,
ActorRef<style::CustomTileLoader> loader,
TileObserver* observer = nullptr);
~CustomGeometryTile() override;
void setTileData(const GeoJSON& geoJSON);
void invalidateTileData();
void setNecessity(TileNecessity) final;
void querySourceFeatures(std::vector<Feature>& result, const SourceQueryOptions&) override;
private:
bool stale = true;
std::string sourceID;
TileNecessity necessity;
Immutable<style::CustomGeometrySource::TileOptions> options;
ActorRef<style::CustomTileLoader> loader;
std::shared_ptr<Mailbox> mailbox;
ActorRef<CustomGeometryTile> actorRef;
};
} // namespace mbgl