mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-14 12:04:29 +00:00
canvas: migrate render target clear call into draw();
Obivously, we need to clear target before drawing. Thus canvas request to renderers to clear buffer. the implementation is upto backend engines. Change-Id: Ib80da7f2260b021bcfed9fa13fb91c20218f9da0
This commit is contained in:
parent
a8864390e2
commit
0be7e0cf53
4 changed files with 12 additions and 19 deletions
|
@ -92,7 +92,7 @@ public:
|
|||
|
||||
int reserve(size_t n) noexcept;
|
||||
virtual int push(std::unique_ptr<PaintNode> paint) noexcept;
|
||||
virtual int clear(bool clearPaints = true) noexcept;
|
||||
virtual int clear() noexcept;
|
||||
virtual int update() noexcept;
|
||||
virtual int draw(bool async = true) noexcept;
|
||||
virtual int sync() = 0;
|
||||
|
|
|
@ -37,6 +37,8 @@ struct GlShape
|
|||
|
||||
bool GlRenderer::clear()
|
||||
{
|
||||
//TODO: (Request) to clear target
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ struct Canvas::Impl
|
|||
|
||||
~Impl()
|
||||
{
|
||||
clearPaints();
|
||||
clear();
|
||||
renderer->unref();
|
||||
}
|
||||
|
||||
|
@ -55,13 +55,7 @@ struct Canvas::Impl
|
|||
return node->update(renderer);
|
||||
}
|
||||
|
||||
bool clearRender()
|
||||
{
|
||||
assert(renderer);
|
||||
return renderer->clear());
|
||||
}
|
||||
|
||||
int clearPaints()
|
||||
int clear()
|
||||
{
|
||||
assert(renderer);
|
||||
|
||||
|
@ -82,19 +76,20 @@ struct Canvas::Impl
|
|||
{
|
||||
assert(renderer);
|
||||
|
||||
auto ret = 0;
|
||||
|
||||
for(auto node: nodes) {
|
||||
ret |= node->update(renderer);
|
||||
if (!node->update(renderer)) return -1;
|
||||
}
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int draw()
|
||||
{
|
||||
assert(renderer);
|
||||
|
||||
//Clear render target before drawing
|
||||
if (!renderer->clear()) return -1;
|
||||
|
||||
for(auto node: nodes) {
|
||||
if (SceneNode *scene = dynamic_cast<SceneNode *>(node)) {
|
||||
cout << "TODO: " << scene << endl;
|
||||
|
@ -139,14 +134,11 @@ int Canvas::push(unique_ptr<PaintNode> paint) noexcept
|
|||
}
|
||||
|
||||
|
||||
int Canvas::clear(bool clearPaints) noexcept
|
||||
int Canvas::clear() noexcept
|
||||
{
|
||||
auto impl = pImpl.get();
|
||||
assert(impl);
|
||||
auto ret = 0;
|
||||
if (clearPaints) ret |= impl->clearPaints();
|
||||
ret |= impl->clearRender();
|
||||
return ret;
|
||||
return impl->clear();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -50,7 +50,6 @@ int SwCanvas::target(uint32_t* buffer, size_t stride, size_t w, size_t h) noexce
|
|||
assert(renderer);
|
||||
|
||||
if (!renderer->target(buffer, stride, w, h)) return -1;
|
||||
if (!renderer->clear()) return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue