| /* |
| * Copyright 2023 Rive |
| */ |
| |
| #pragma once |
| |
| #include "rive/renderer/texture.hpp" |
| |
| namespace rive |
| { |
| class RiveRenderImage : public LITE_RTTI_OVERRIDE(RenderImage, RiveRenderImage) |
| { |
| public: |
| RiveRenderImage(rcp<gpu::Texture> texture) : |
| RiveRenderImage(texture->width(), texture->height()) |
| { |
| resetTexture(std::move(texture)); |
| } |
| |
| rcp<gpu::Texture> refTexture() const { return m_texture; } |
| gpu::Texture* getTexture() { return m_texture.get(); } |
| |
| protected: |
| RiveRenderImage(int width, int height) |
| { |
| m_Width = width; |
| m_Height = height; |
| } |
| |
| void resetTexture(rcp<gpu::Texture> texture = nullptr) |
| { |
| assert(texture == nullptr || texture->width() == m_Width); |
| assert(texture == nullptr || texture->height() == m_Height); |
| m_texture = std::move(texture); |
| } |
| |
| // Used by the android runtime to send m_texture off to the worker thread to |
| // be deleted. |
| gpu::Texture* releaseTexture() { return m_texture.release(); } |
| |
| private: |
| rcp<gpu::Texture> m_texture; |
| }; |
| } // namespace rive |