#ifndef _RIVE_IMAGE_HPP_
#define _RIVE_IMAGE_HPP_

#include "rive/hit_info.hpp"
#include "rive/generated/shapes/image_base.hpp"
#include "rive/assets/file_asset_referencer.hpp"

namespace rive {
class ImageAsset;
class Mesh;
class Image : public ImageBase, public FileAssetReferencer {
private:
    ImageAsset* m_ImageAsset = nullptr;
    Mesh* m_Mesh = nullptr;

public:
    Mesh* mesh() const;
    void setMesh(Mesh* mesh);
    ImageAsset* imageAsset() const { return m_ImageAsset; }
    void draw(Renderer* renderer) override;
    Core* hitTest(HitInfo*, const Mat2D&) override;
    StatusCode import(ImportStack& importStack) override;
    void assets(const std::vector<FileAsset*>& assets) override;
    Core* clone() const override;
};
} // namespace rive

#endif
