Experimental RenderImage
diff --git a/include/rive/renderer.hpp b/include/rive/renderer.hpp index 3b4bce5..d88b2e4 100644 --- a/include/rive/renderer.hpp +++ b/include/rive/renderer.hpp
@@ -39,18 +39,19 @@ virtual ~RenderPaint() {} }; - class RenderImage - { - protected: - int m_Width = 0; - int m_Height = 0; + class RenderImage : public RefCnt { + const int m_Width, m_Height; + public: + RenderImage(int width, int height) : m_Width(width), m_Height(height) {} - public: - virtual ~RenderImage() {} - virtual bool decode(const uint8_t* bytes, std::size_t size) = 0; - int width() const { return m_Width; } - int height() const { return m_Height; } - }; + int width() const { return m_Width; } + int height() const { return m_Height; } + + virtual rcp<RenderImage> makeSubset(int left, int top, int right, int bottom) = 0; + virtual rcp<RenderImage> makeResized(int newWidth, int newHeight) = 0; + }; + + extern rcp<RenderImage> makeImageFromEncoded(const void*, size_t); class RenderPath : public CommandPath { @@ -75,7 +76,7 @@ virtual void drawPath(RenderPath* path, RenderPaint* paint) = 0; virtual void clipPath(RenderPath* path) = 0; virtual void - drawImage(RenderImage* image, BlendMode value, float opacity) = 0; + drawImage(const RenderImage* image, BlendMode value, float opacity) = 0; void computeAlignment(Mat2D& result, Fit fit, @@ -172,4 +173,4 @@ extern RenderPaint* makeRenderPaint(); extern RenderImage* makeRenderImage(); } // namespace rive -#endif \ No newline at end of file +#endif