Updating to latest rive-cpp master.
diff --git a/build/premake5.lua b/build/premake5.lua
index a0e55fa..7ed2b6c 100644
--- a/build/premake5.lua
+++ b/build/premake5.lua
@@ -51,7 +51,7 @@
defines {"DEBUG"}
symbols "On"
- configuration "with-low-level-rendering"
+ filter "options:with-low-level-rendering"
defines("LOW_LEVEL_RENDERING")
defines("CONTOUR_RECURSIVE")
diff --git a/include/rive/math/mat2d.hpp b/include/rive/math/mat2d.hpp
index bbb5092..2ab92cc 100644
--- a/include/rive/math/mat2d.hpp
+++ b/include/rive/math/mat2d.hpp
@@ -2,6 +2,7 @@
#define _RIVE_MAT2D_HPP_
#include <cstddef>
+#include <stdio.h>
namespace rive
{
diff --git a/renderer/library/include/low_level/low_level_renderer.hpp b/renderer/library/include/low_level/low_level_renderer.hpp
index 17682e9..a4a315c 100644
--- a/renderer/library/include/low_level/low_level_renderer.hpp
+++ b/renderer/library/include/low_level/low_level_renderer.hpp
@@ -59,6 +59,7 @@
virtual RenderPaint* makeRenderPaint() = 0;
virtual RenderPath* makeRenderPath() = 0;
+ virtual RenderImage* makeRenderImage() = 0;
virtual bool initialize(void* data) = 0;
bool initialize() { return initialize(nullptr); }
diff --git a/renderer/library/include/metal/metal_renderer.hpp b/renderer/library/include/metal/metal_renderer.hpp
index 4db6dc4..f35d846 100644
--- a/renderer/library/include/metal/metal_renderer.hpp
+++ b/renderer/library/include/metal/metal_renderer.hpp
@@ -14,6 +14,15 @@
namespace rive
{
+ class MetalRenderImage : public RenderImage
+ {
+ public:
+ bool decode(const uint8_t* bytes, std::size_t size) override
+ {
+ return true;
+ }
+ };
+
class MetalRenderer : public LowLevelRenderer
{
public:
@@ -24,12 +33,15 @@
void transform(const Mat2D& transform) override;
void drawPath(RenderPath* path, RenderPaint* paint) override;
void clipPath(RenderPath* path) override;
+ void
+ drawImage(RenderImage* image, BlendMode value, float opacity) override;
void startFrame() override;
void endFrame() override;
RenderPaint* makeRenderPaint() override;
RenderPath* makeRenderPath() override;
+ RenderImage* makeRenderImage() override;
bool initialize(void* data) override;
virtual id<MTLDevice> acquireDevice() = 0;
diff --git a/renderer/library/include/opengl/opengl_renderer.hpp b/renderer/library/include/opengl/opengl_renderer.hpp
index 2b779e6..02d2e68 100644
--- a/renderer/library/include/opengl/opengl_renderer.hpp
+++ b/renderer/library/include/opengl/opengl_renderer.hpp
@@ -8,6 +8,15 @@
namespace rive
{
+ class OpenGLRenderImage : public RenderImage
+ {
+ public:
+ bool decode(const uint8_t* bytes, std::size_t size) override
+ {
+ return true;
+ }
+ };
+
class OpenGLRenderer : public LowLevelRenderer
{
private:
@@ -38,12 +47,15 @@
OpenGLRenderer();
~OpenGLRenderer();
void drawPath(RenderPath* path, RenderPaint* paint) override;
+ void
+ drawImage(RenderImage* image, BlendMode value, float opacity) override;
void startFrame() override;
void endFrame() override;
RenderPaint* makeRenderPaint() override;
RenderPath* makeRenderPath() override;
+ RenderImage* makeRenderImage() override;
bool initialize(void* data) override;
diff --git a/renderer/library/src/graphics_api.cpp b/renderer/library/src/graphics_api.cpp
index 579af1f..cd73925 100644
--- a/renderer/library/src/graphics_api.cpp
+++ b/renderer/library/src/graphics_api.cpp
@@ -76,4 +76,10 @@
assert(g_GraphicsApi != nullptr);
return g_GraphicsApi->makeRenderPath();
}
+
+ RenderImage* makeRenderImage()
+ {
+ assert(g_GraphicsApi != nullptr);
+ return g_GraphicsApi->makeRenderImage();
+ }
} // namespace rive
\ No newline at end of file
diff --git a/renderer/library/src/metal/metal_renderer.mm b/renderer/library/src/metal/metal_renderer.mm
index 18651f3..e690004 100644
--- a/renderer/library/src/metal/metal_renderer.mm
+++ b/renderer/library/src/metal/metal_renderer.mm
@@ -8,6 +8,11 @@
void MetalRenderer::restore() {}
void MetalRenderer::transform(const Mat2D& transform) {}
void MetalRenderer::drawPath(RenderPath* path, RenderPaint* paint) {}
+void MetalRenderer::drawImage(RenderImage* image,
+ BlendMode value,
+ float opacity)
+{
+}
void MetalRenderer::clipPath(RenderPath* path) {}
void MetalRenderer::startFrame() {}
@@ -15,6 +20,7 @@
RenderPaint* MetalRenderer::makeRenderPaint() { return new MetalRenderPaint(); }
RenderPath* MetalRenderer::makeRenderPath() { return new MetalRenderPath(); }
+RenderImage* MetalRenderer::makeRenderImage() { return new MetalRenderImage(); }
static const char kShaderSource[] =
"#include <metal_stdlib>\n"
diff --git a/renderer/library/src/opengl/opengl_renderer.cpp b/renderer/library/src/opengl/opengl_renderer.cpp
index e7bfbda..98059f5 100644
--- a/renderer/library/src/opengl/opengl_renderer.cpp
+++ b/renderer/library/src/opengl/opengl_renderer.cpp
@@ -115,6 +115,13 @@
return true;
}
+void OpenGLRenderer::drawImage(RenderImage* image,
+ BlendMode value,
+ float opacity)
+{
+ // TODO: implement drawImage
+}
+
void OpenGLRenderer::drawPath(RenderPath* path, RenderPaint* paint)
{
auto glPaint = static_cast<OpenGLRenderPaint*>(paint);
@@ -315,6 +322,10 @@
return new OpenGLRenderPaint();
}
RenderPath* OpenGLRenderer::makeRenderPath() { return new OpenGLRenderPath(); }
+RenderImage* OpenGLRenderer::makeRenderImage()
+{
+ return new OpenGLRenderImage();
+}
void OpenGLRenderer::updateIndexBuffer(std::size_t contourLength)
{