From 01b26c43a60a04cd016ccb44c09cc3fb0eaa3049 Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Mon, 1 May 2023 16:54:57 +0900 Subject: [PATCH] engine: add Renderer::colorSpace() interface This is necessary for acquiring current format size. @Issue: https://github.com/thorvg/thorvg/issues/976 --- src/lib/gl_engine/tvgGlRenderer.cpp | 6 ++++++ src/lib/gl_engine/tvgGlRenderer.h | 1 + src/lib/sw_engine/tvgSwRenderer.cpp | 7 +++++++ src/lib/sw_engine/tvgSwRenderer.h | 1 + src/lib/tvgRender.h | 1 + 5 files changed, 16 insertions(+) diff --git a/src/lib/gl_engine/tvgGlRenderer.cpp b/src/lib/gl_engine/tvgGlRenderer.cpp index 14a0ce36..b18189fe 100644 --- a/src/lib/gl_engine/tvgGlRenderer.cpp +++ b/src/lib/gl_engine/tvgGlRenderer.cpp @@ -123,6 +123,12 @@ bool GlRenderer::endComposite(TVG_UNUSED Compositor* cmp) } +ColorSpace GlRenderer::SwRenderer::colorSpace() +{ + return surface->cs; +} + + bool GlRenderer::renderImage(TVG_UNUSED void* data) { //TODO: render requested images diff --git a/src/lib/gl_engine/tvgGlRenderer.h b/src/lib/gl_engine/tvgGlRenderer.h index dbbf347d..d20b3ead 100644 --- a/src/lib/gl_engine/tvgGlRenderer.h +++ b/src/lib/gl_engine/tvgGlRenderer.h @@ -41,6 +41,7 @@ public: RenderRegion region(RenderData data) override; RenderRegion viewport() override; bool viewport(const RenderRegion& vp) override; + ColorSpace colorSpace() override; bool target(uint32_t* buffer, uint32_t stride, uint32_t w, uint32_t h); bool sync() override; diff --git a/src/lib/sw_engine/tvgSwRenderer.cpp b/src/lib/sw_engine/tvgSwRenderer.cpp index 355b2dd9..95e347b9 100644 --- a/src/lib/sw_engine/tvgSwRenderer.cpp +++ b/src/lib/sw_engine/tvgSwRenderer.cpp @@ -664,6 +664,13 @@ bool SwRenderer::endComposite(Compositor* cmp) } +ColorSpace SwRenderer::colorSpace() +{ + if (surface) return surface->cs; + else return ColorSpace::Unsupported; +} + + bool SwRenderer::dispose(RenderData data) { auto task = static_cast(data); diff --git a/src/lib/sw_engine/tvgSwRenderer.h b/src/lib/sw_engine/tvgSwRenderer.h index e8847598..0ab185bc 100644 --- a/src/lib/sw_engine/tvgSwRenderer.h +++ b/src/lib/sw_engine/tvgSwRenderer.h @@ -47,6 +47,7 @@ public: RenderRegion region(RenderData data) override; RenderRegion viewport() override; bool viewport(const RenderRegion& vp) override; + ColorSpace colorSpace() override; bool clear() override; bool sync() override; diff --git a/src/lib/tvgRender.h b/src/lib/tvgRender.h index 8f9e7ce0..2fb52e0a 100644 --- a/src/lib/tvgRender.h +++ b/src/lib/tvgRender.h @@ -221,6 +221,7 @@ public: virtual RenderRegion region(RenderData data) = 0; virtual RenderRegion viewport() = 0; virtual bool viewport(const RenderRegion& vp) = 0; + virtual ColorSpace colorSpace() = 0; virtual bool clear() = 0; virtual bool sync() = 0;