#pragma once #include #include #include #include namespace mbgl { class RasterBucket; class ImageSourceRenderData final : public RenderItem { public: ImageSourceRenderData(std::shared_ptr bucket_, std::vector matrices_, std::string name_) : bucket(std::move(bucket_)), matrices(std::move(matrices_)), name(std::move(name_)) {} ~ImageSourceRenderData() override; const std::shared_ptr bucket; const std::vector matrices; private: void upload(gfx::UploadPass&) const override; void render(PaintParameters&) const override; bool hasRenderPass(RenderPass) const override { return false; } const std::string& getName() const override { return name; } std::string name; }; class RenderImageSource final : public RenderSource { public: explicit RenderImageSource(Immutable); ~RenderImageSource() override; bool isLoaded() const final; std::unique_ptr createRenderItem() override; void prepare(const SourcePrepareParameters&) final; void updateFadingTiles() final {} bool hasFadingTiles() const final { return false; } void update(Immutable, const std::vector>&, bool needsRendering, bool needsRelayout, const TileParameters&) final; RenderTiles getRenderTiles() override { return {}; } const ImageSourceRenderData* getImageRenderData() const override { return renderData.get(); } std::unordered_map> queryRenderedFeatures(const ScreenLineString& geometry, const TransformState& transformState, const std::vector& layers, const RenderedQueryOptions& options, const mat4& projMatrix) const final; std::vector querySourceFeatures(const SourceQueryOptions&) const final; void reduceMemoryUse() final { } void dumpDebugLogs() const final; private: friend class RenderRasterLayer; const style::ImageSource::Impl& impl() const; std::shared_ptr bucket; std::unique_ptr renderData; std::vector tileIds; }; } // namespace mbgl