mirror of
https://github.com/thorvg/thorvg.git
synced 2025-07-27 00:26:51 +00:00
common: code refactoring
keep consistency of internal functions among the paint type methods. Change-Id: I98a42ac398ddc5aaf49ac59e5cbb1790266bd612
This commit is contained in:
parent
afc7bc8c2f
commit
8ed9edd33e
4 changed files with 23 additions and 22 deletions
|
@ -59,10 +59,10 @@ struct Canvas::Impl
|
||||||
if (paint->id() == PAINT_ID_SCENE) {
|
if (paint->id() == PAINT_ID_SCENE) {
|
||||||
//We know renderer type, avoid dynamic_cast for performance.
|
//We know renderer type, avoid dynamic_cast for performance.
|
||||||
auto scene = static_cast<Scene*>(paint);
|
auto scene = static_cast<Scene*>(paint);
|
||||||
if (!SCENE_IMPL->clear(*renderer)) return Result::InsufficientCondition;
|
if (!SCENE_IMPL->dispose(*renderer)) return Result::InsufficientCondition;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if (!SHAPE_IMPL->dispose(*shape, *renderer)) return Result::InsufficientCondition;
|
if (!SHAPE_IMPL->dispose(*renderer)) return Result::InsufficientCondition;
|
||||||
}
|
}
|
||||||
delete(paint);
|
delete(paint);
|
||||||
}
|
}
|
||||||
|
@ -79,10 +79,10 @@ struct Canvas::Impl
|
||||||
if (paint->id() == PAINT_ID_SCENE) {
|
if (paint->id() == PAINT_ID_SCENE) {
|
||||||
//We know renderer type, avoid dynamic_cast for performance.
|
//We know renderer type, avoid dynamic_cast for performance.
|
||||||
auto scene = static_cast<Scene*>(paint);
|
auto scene = static_cast<Scene*>(paint);
|
||||||
if (!SCENE_IMPL->update(*renderer, nullptr)) return Result::InsufficientCondition;
|
if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if (!SHAPE_IMPL->update(*shape, *renderer, nullptr)) return Result::InsufficientCondition;
|
if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Result::Success;
|
return Result::Success;
|
||||||
|
@ -95,10 +95,10 @@ struct Canvas::Impl
|
||||||
if (paint->id() == PAINT_ID_SCENE) {
|
if (paint->id() == PAINT_ID_SCENE) {
|
||||||
//We know renderer type, avoid dynamic_cast for performance.
|
//We know renderer type, avoid dynamic_cast for performance.
|
||||||
auto scene = static_cast<Scene*>(paint);
|
auto scene = static_cast<Scene*>(paint);
|
||||||
if (!SCENE_IMPL->update(*renderer)) return Result::InsufficientCondition;
|
if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if (!SHAPE_IMPL->update(*shape, *renderer)) return Result::InsufficientCondition;
|
if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
|
||||||
}
|
}
|
||||||
return Result::Success;
|
return Result::Success;
|
||||||
}
|
}
|
||||||
|
@ -116,7 +116,7 @@ struct Canvas::Impl
|
||||||
if(!SCENE_IMPL->render(*renderer)) return Result::InsufficientCondition;
|
if(!SCENE_IMPL->render(*renderer)) return Result::InsufficientCondition;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if(!SHAPE_IMPL->render(*shape, *renderer)) return Result::InsufficientCondition;
|
if(!SHAPE_IMPL->render(*renderer)) return Result::InsufficientCondition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,16 +37,16 @@ struct Scene::Impl
|
||||||
if (rTransform) delete(rTransform);
|
if (rTransform) delete(rTransform);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool clear(RenderMethod& renderer)
|
bool dispose(RenderMethod& renderer)
|
||||||
{
|
{
|
||||||
for (auto paint : paints) {
|
for (auto paint : paints) {
|
||||||
if (paint->id() == PAINT_ID_SCENE) {
|
if (paint->id() == PAINT_ID_SCENE) {
|
||||||
//We know renderer type, avoid dynamic_cast for performance.
|
//We know renderer type, avoid dynamic_cast for performance.
|
||||||
auto scene = static_cast<Scene*>(paint);
|
auto scene = static_cast<Scene*>(paint);
|
||||||
if (!SCENE_IMPL->clear(renderer)) return false;
|
if (!SCENE_IMPL->dispose(renderer)) return false;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if (!SHAPE_IMPL->dispose(*shape, renderer)) return false;
|
if (!SHAPE_IMPL->dispose(renderer)) return false;
|
||||||
}
|
}
|
||||||
delete(paint);
|
delete(paint);
|
||||||
}
|
}
|
||||||
|
@ -64,13 +64,13 @@ struct Scene::Impl
|
||||||
if (!SCENE_IMPL->update(renderer, transform, flag)) return false;
|
if (!SCENE_IMPL->update(renderer, transform, flag)) return false;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if (!SHAPE_IMPL->update(*shape, renderer, transform, flag)) return false;
|
if (!SHAPE_IMPL->update(renderer, transform, flag)) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool update(RenderMethod &renderer, const RenderTransform* pTransform = nullptr, uint32_t pFlag = 0)
|
bool update(RenderMethod &renderer, const RenderTransform* pTransform, uint32_t pFlag)
|
||||||
{
|
{
|
||||||
if (loader) {
|
if (loader) {
|
||||||
auto scene = loader->data();
|
auto scene = loader->data();
|
||||||
|
@ -114,7 +114,7 @@ struct Scene::Impl
|
||||||
if(!SCENE_IMPL->render(renderer)) return false;
|
if(!SCENE_IMPL->render(renderer)) return false;
|
||||||
} else {
|
} else {
|
||||||
auto shape = static_cast<Shape*>(paint);
|
auto shape = static_cast<Shape*>(paint);
|
||||||
if(!SHAPE_IMPL->render(*shape, renderer)) return false;
|
if(!SHAPE_IMPL->render(renderer)) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -29,7 +29,7 @@ constexpr auto PATH_KAPPA = 0.552284f;
|
||||||
/* External Class Implementation */
|
/* External Class Implementation */
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
Shape :: Shape() : pImpl(make_unique<Impl>())
|
Shape :: Shape() : pImpl(make_unique<Impl>(this))
|
||||||
{
|
{
|
||||||
_id = PAINT_ID_SHAPE;
|
_id = PAINT_ID_SHAPE;
|
||||||
|
|
||||||
|
|
|
@ -48,9 +48,10 @@ struct Shape::Impl
|
||||||
uint8_t color[4] = {0, 0, 0, 0}; //r, g, b, a
|
uint8_t color[4] = {0, 0, 0, 0}; //r, g, b, a
|
||||||
uint32_t flag = RenderUpdateFlag::None;
|
uint32_t flag = RenderUpdateFlag::None;
|
||||||
void *edata = nullptr; //engine data
|
void *edata = nullptr; //engine data
|
||||||
|
Shape *shape = nullptr;
|
||||||
|
|
||||||
|
|
||||||
Impl() : path(new ShapePath)
|
Impl(Shape* s) : path(new ShapePath), shape(s)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,17 +63,17 @@ struct Shape::Impl
|
||||||
if (rTransform) delete(rTransform);
|
if (rTransform) delete(rTransform);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dispose(Shape& shape, RenderMethod& renderer)
|
bool dispose(RenderMethod& renderer)
|
||||||
{
|
{
|
||||||
return renderer.dispose(shape, edata);
|
return renderer.dispose(*shape, edata);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool render(Shape& shape, RenderMethod& renderer)
|
bool render(RenderMethod& renderer)
|
||||||
{
|
{
|
||||||
return renderer.render(shape, edata);
|
return renderer.render(*shape, edata);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool update(Shape& shape, RenderMethod& renderer, const RenderTransform* pTransform = nullptr, uint32_t pFlag = 0)
|
bool update(RenderMethod& renderer, const RenderTransform* pTransform, uint32_t pFlag)
|
||||||
{
|
{
|
||||||
if (flag & RenderUpdateFlag::Transform) {
|
if (flag & RenderUpdateFlag::Transform) {
|
||||||
if (!rTransform) return false;
|
if (!rTransform) return false;
|
||||||
|
@ -84,10 +85,10 @@ struct Shape::Impl
|
||||||
|
|
||||||
if (rTransform && pTransform) {
|
if (rTransform && pTransform) {
|
||||||
RenderTransform outTransform(pTransform, rTransform);
|
RenderTransform outTransform(pTransform, rTransform);
|
||||||
edata = renderer.prepare(shape, edata, &outTransform, static_cast<RenderUpdateFlag>(pFlag | flag));
|
edata = renderer.prepare(*shape, edata, &outTransform, static_cast<RenderUpdateFlag>(pFlag | flag));
|
||||||
} else {
|
} else {
|
||||||
auto outTransform = pTransform ? pTransform : rTransform;
|
auto outTransform = pTransform ? pTransform : rTransform;
|
||||||
edata = renderer.prepare(shape, edata, outTransform, static_cast<RenderUpdateFlag>(pFlag | flag));
|
edata = renderer.prepare(*shape, edata, outTransform, static_cast<RenderUpdateFlag>(pFlag | flag));
|
||||||
}
|
}
|
||||||
|
|
||||||
flag = RenderUpdateFlag::None;
|
flag = RenderUpdateFlag::None;
|
||||||
|
|
Loading…
Add table
Reference in a new issue