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) {