1 #pragma once 2 3 #include <mbgl/renderer/render_source.hpp> 4 #include <mbgl/renderer/render_tile.hpp> 5 #include <mbgl/style/sources/image_source_impl.hpp> 6 7 namespace mbgl { 8 9 class RasterBucket; 10 11 class RenderImageSource : public RenderSource { 12 public: 13 RenderImageSource(Immutable<style::ImageSource::Impl>); 14 ~RenderImageSource() override; 15 16 bool isLoaded() const final; 17 18 void startRender(PaintParameters&) final; 19 void finishRender(PaintParameters&) final; 20 21 void update(Immutable<style::Source::Impl>, 22 const std::vector<Immutable<style::Layer::Impl>>&, 23 bool needsRendering, 24 bool needsRelayout, 25 const TileParameters&) final; 26 getRenderTiles()27 std::vector<std::reference_wrapper<RenderTile>> getRenderTiles() final { 28 return {}; 29 } 30 31 std::unordered_map<std::string, std::vector<Feature>> 32 queryRenderedFeatures(const ScreenLineString& geometry, 33 const TransformState& transformState, 34 const std::vector<const RenderLayer*>& layers, 35 const RenderedQueryOptions& options, 36 const mat4& projMatrix) const final; 37 38 std::vector<Feature> querySourceFeatures(const SourceQueryOptions&) const final; 39 reduceMemoryUse()40 void reduceMemoryUse() final { 41 } 42 void dumpDebugLogs() const final; 43 44 private: 45 friend class RenderRasterLayer; 46 47 const style::ImageSource::Impl& impl() const; 48 49 std::vector<UnwrappedTileID> tileIds; 50 std::unique_ptr<RasterBucket> bucket; 51 std::vector<mat4> matrices; 52 }; 53 54 template <> is() const55inline bool RenderSource::is<RenderImageSource>() const { 56 return baseImpl->type == style::SourceType::Image; 57 } 58 59 } // namespace mbgl 60