mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 05:33:36 +00:00
renderer: revamped engine interfaces
Introduced updated pre/post calls for proper preparation of the drawing process.
This commit is contained in:
parent
ccf5a8158f
commit
1cbc11cadd
8 changed files with 48 additions and 0 deletions
|
@ -1233,6 +1233,18 @@ bool GlRenderer::viewport(const RenderRegion& vp)
|
|||
}
|
||||
|
||||
|
||||
bool GlRenderer::preUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool GlRenderer::postUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
int GlRenderer::init(uint32_t threads)
|
||||
{
|
||||
if ((initEngineCnt++) > 0) return true;
|
||||
|
|
|
@ -63,8 +63,10 @@ public:
|
|||
RT_None,
|
||||
};
|
||||
|
||||
bool preUpdate() override;
|
||||
RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override;
|
||||
RenderData prepare(RenderSurface* surface, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) override;
|
||||
bool postUpdate() override;
|
||||
bool preRender() override;
|
||||
bool renderShape(RenderData data) override;
|
||||
bool renderImage(RenderData data) override;
|
||||
|
|
|
@ -363,6 +363,18 @@ bool SwRenderer::target(pixel_t* data, uint32_t stride, uint32_t w, uint32_t h,
|
|||
}
|
||||
|
||||
|
||||
bool SwRenderer::preUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool SwRenderer::postUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool SwRenderer::preRender()
|
||||
{
|
||||
return true;
|
||||
|
|
|
@ -36,8 +36,10 @@ namespace tvg
|
|||
class SwRenderer : public RenderMethod
|
||||
{
|
||||
public:
|
||||
bool preUpdate() override;
|
||||
RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override;
|
||||
RenderData prepare(RenderSurface* surface, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) override;
|
||||
bool postUpdate() override;
|
||||
bool preRender() override;
|
||||
bool renderShape(RenderData data) override;
|
||||
bool renderImage(RenderData data) override;
|
||||
|
|
|
@ -76,9 +76,13 @@ struct Canvas::Impl
|
|||
|
||||
auto m = Matrix{1, 0, 0, 0, 1, 0, 0, 0, 1};
|
||||
|
||||
if (!renderer->preUpdate()) return Result::InsufficientCondition;
|
||||
|
||||
if (paint) PAINT(paint)->update(renderer, m, clips, 255, flag);
|
||||
else PAINT(scene)->update(renderer, m, clips, 255, flag);
|
||||
|
||||
if (!renderer->postUpdate()) return Result::InsufficientCondition;
|
||||
|
||||
status = Status::Updating;
|
||||
return Result::Success;
|
||||
}
|
||||
|
|
|
@ -383,8 +383,10 @@ public:
|
|||
uint32_t unref();
|
||||
|
||||
virtual ~RenderMethod() {}
|
||||
virtual bool preUpdate() = 0;
|
||||
virtual RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) = 0;
|
||||
virtual RenderData prepare(RenderSurface* surface, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) = 0;
|
||||
virtual bool postUpdate() = 0;
|
||||
virtual bool preRender() = 0;
|
||||
virtual bool renderShape(RenderData data) = 0;
|
||||
virtual bool renderImage(RenderData data) = 0;
|
||||
|
|
|
@ -480,6 +480,18 @@ bool WgRenderer::effect(TVG_UNUSED RenderCompositor* cmp, TVG_UNUSED const Rende
|
|||
}
|
||||
|
||||
|
||||
bool WgRenderer::preUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool WgRenderer::postUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
WgRenderer* WgRenderer::gen()
|
||||
{
|
||||
return new WgRenderer();
|
||||
|
|
|
@ -28,8 +28,10 @@
|
|||
class WgRenderer : public RenderMethod
|
||||
{
|
||||
public:
|
||||
bool preUpdate() override;
|
||||
RenderData prepare(const RenderShape& rshape, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags, bool clipper) override;
|
||||
RenderData prepare(RenderSurface* surface, RenderData data, const Matrix& transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flags) override;
|
||||
bool postUpdate() override;
|
||||
bool preRender() override;
|
||||
bool renderShape(RenderData data) override;
|
||||
bool renderImage(RenderData data) override;
|
||||
|
|
Loading…
Add table
Reference in a new issue