#pragma once

#include <mbgl/gfx/renderable.hpp>
#include <mbgl/util/image.hpp>

namespace mbgl {
namespace gfx {

class Texture;

class OffscreenTexture : public gfx::Renderable {
protected:
    OffscreenTexture(const Size size_, std::unique_ptr<RenderableResource> resource_)
        : gfx::Renderable(size_, std::move(resource_)) {}

public:
    ~OffscreenTexture() override = default;

    virtual bool isRenderable() = 0;

    virtual PremultipliedImage readStillImage() = 0;
    virtual gfx::Texture& getTexture() = 0;
};

} // namespace gfx
} // namespace mbgl
