mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-13 19:44:28 +00:00
common: revise canvas interfaces.
1. removed async option which doesn't work currently, rather than it, we can add async option in initiailizer class. 2. removed update() method. Instead, we can call update(paint = nullptr); which has exactly same behavior. Change-Id: I7909a50d804b97baf413a2ff6365a3cf79a3689e
This commit is contained in:
parent
8ed9edd33e
commit
80d47fd7d3
6 changed files with 21 additions and 30 deletions
|
@ -157,9 +157,8 @@ public:
|
|||
Result reserve(uint32_t n) noexcept;
|
||||
virtual Result push(std::unique_ptr<Paint> paint) noexcept;
|
||||
virtual Result clear() noexcept;
|
||||
virtual Result update() noexcept;
|
||||
virtual Result update(Paint* paint) noexcept;
|
||||
virtual Result draw(bool async = true) noexcept;
|
||||
virtual Result draw() noexcept;
|
||||
virtual Result sync() noexcept;
|
||||
|
||||
_TVG_DECLARE_ACCESSOR(Scene);
|
||||
|
|
|
@ -117,7 +117,7 @@ TVG_EXPORT Tvg_Result tvg_canvas_reserve(Tvg_Canvas* canvas, uint32_t n);
|
|||
TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas);
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas* canvas);
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas* canvas, Tvg_Paint* paint);
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas, unsigned char async);
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas);
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_sync(Tvg_Canvas* canvas);
|
||||
|
||||
|
||||
|
|
|
@ -104,7 +104,7 @@ TVG_EXPORT Tvg_Result tvg_canvas_clear(Tvg_Canvas* canvas)
|
|||
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_update(Tvg_Canvas* canvas)
|
||||
{
|
||||
return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->update();
|
||||
return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->update(nullptr);
|
||||
}
|
||||
|
||||
|
||||
|
@ -114,9 +114,9 @@ TVG_EXPORT Tvg_Result tvg_canvas_update_paint(Tvg_Canvas* canvas, Tvg_Paint* pai
|
|||
}
|
||||
|
||||
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas, unsigned char async)
|
||||
TVG_EXPORT Tvg_Result tvg_canvas_draw(Tvg_Canvas* canvas)
|
||||
{
|
||||
return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->draw(async);
|
||||
return (Tvg_Result) reinterpret_cast<Canvas*>(canvas)->draw();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -53,18 +53,12 @@ Result Canvas::clear() noexcept
|
|||
}
|
||||
|
||||
|
||||
Result Canvas::draw(bool async) noexcept
|
||||
Result Canvas::draw() noexcept
|
||||
{
|
||||
return IMPL->draw();
|
||||
}
|
||||
|
||||
|
||||
Result Canvas::update() noexcept
|
||||
{
|
||||
return IMPL->update();
|
||||
}
|
||||
|
||||
|
||||
Result Canvas::update(Paint* paint) noexcept
|
||||
{
|
||||
return IMPL->update(paint);
|
||||
|
|
|
@ -71,11 +71,12 @@ struct Canvas::Impl
|
|||
return Result::Success;
|
||||
}
|
||||
|
||||
Result update()
|
||||
Result update(Paint* paint)
|
||||
{
|
||||
if (!renderer) return Result::InsufficientCondition;
|
||||
|
||||
for(auto paint: paints) {
|
||||
//Update single paint node
|
||||
if (paint) {
|
||||
if (paint->id() == PAINT_ID_SCENE) {
|
||||
//We know renderer type, avoid dynamic_cast for performance.
|
||||
auto scene = static_cast<Scene*>(paint);
|
||||
|
@ -84,21 +85,18 @@ struct Canvas::Impl
|
|||
auto shape = static_cast<Shape*>(paint);
|
||||
if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||
}
|
||||
}
|
||||
return Result::Success;
|
||||
}
|
||||
|
||||
Result update(Paint* paint)
|
||||
{
|
||||
if (!renderer) return Result::InsufficientCondition;
|
||||
|
||||
if (paint->id() == PAINT_ID_SCENE) {
|
||||
//We know renderer type, avoid dynamic_cast for performance.
|
||||
auto scene = static_cast<Scene*>(paint);
|
||||
if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||
//Update retained all paint nodes
|
||||
} else {
|
||||
auto shape = static_cast<Shape*>(paint);
|
||||
if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||
for(auto paint: paints) {
|
||||
if (paint->id() == PAINT_ID_SCENE) {
|
||||
//We know renderer type, avoid dynamic_cast for performance.
|
||||
auto scene = static_cast<Scene*>(paint);
|
||||
if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||
} else {
|
||||
auto shape = static_cast<Shape*>(paint);
|
||||
if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||
}
|
||||
}
|
||||
}
|
||||
return Result::Success;
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ void testCapi()
|
|||
tvg_shape_fill_color(shape, 255, 255, 0, 255);
|
||||
tvg_canvas_push(canvas, shape);
|
||||
|
||||
tvg_canvas_draw(canvas, 1);
|
||||
tvg_canvas_draw(canvas);
|
||||
tvg_canvas_sync(canvas);
|
||||
|
||||
tvg_canvas_destroy(canvas);
|
||||
|
|
Loading…
Add table
Reference in a new issue