From 8ed9edd33e4c167f9f6b51cac6588511e796130c Mon Sep 17 00:00:00 2001 From: Hermet Park Date: Wed, 29 Jul 2020 20:41:34 +0900 Subject: [PATCH] common: code refactoring keep consistency of internal functions among the paint type methods. Change-Id: I98a42ac398ddc5aaf49ac59e5cbb1790266bd612 --- src/lib/tvgCanvasImpl.h | 14 +++++++------- src/lib/tvgSceneImpl.h | 12 ++++++------ src/lib/tvgShape.cpp | 2 +- src/lib/tvgShapeImpl.h | 17 +++++++++-------- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/lib/tvgCanvasImpl.h b/src/lib/tvgCanvasImpl.h index 94737c9..5960f02 100644 --- a/src/lib/tvgCanvasImpl.h +++ b/src/lib/tvgCanvasImpl.h @@ -59,10 +59,10 @@ struct Canvas::Impl if (paint->id() == PAINT_ID_SCENE) { //We know renderer type, avoid dynamic_cast for performance. auto scene = static_cast(paint); - if (!SCENE_IMPL->clear(*renderer)) return Result::InsufficientCondition; + if (!SCENE_IMPL->dispose(*renderer)) return Result::InsufficientCondition; } else { auto shape = static_cast(paint); - if (!SHAPE_IMPL->dispose(*shape, *renderer)) return Result::InsufficientCondition; + if (!SHAPE_IMPL->dispose(*renderer)) return Result::InsufficientCondition; } delete(paint); } @@ -79,10 +79,10 @@ struct Canvas::Impl if (paint->id() == PAINT_ID_SCENE) { //We know renderer type, avoid dynamic_cast for performance. auto scene = static_cast(paint); - if (!SCENE_IMPL->update(*renderer, nullptr)) return Result::InsufficientCondition; + if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition; } else { auto shape = static_cast(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; @@ -95,10 +95,10 @@ struct Canvas::Impl if (paint->id() == PAINT_ID_SCENE) { //We know renderer type, avoid dynamic_cast for performance. auto scene = static_cast(paint); - if (!SCENE_IMPL->update(*renderer)) return Result::InsufficientCondition; + if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition; } else { auto shape = static_cast(paint); - if (!SHAPE_IMPL->update(*shape, *renderer)) return Result::InsufficientCondition; + if (!SHAPE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition; } return Result::Success; } @@ -116,7 +116,7 @@ struct Canvas::Impl if(!SCENE_IMPL->render(*renderer)) return Result::InsufficientCondition; } else { auto shape = static_cast(paint); - if(!SHAPE_IMPL->render(*shape, *renderer)) return Result::InsufficientCondition; + if(!SHAPE_IMPL->render(*renderer)) return Result::InsufficientCondition; } } diff --git a/src/lib/tvgSceneImpl.h b/src/lib/tvgSceneImpl.h index 08b42d3..b8d71f2 100644 --- a/src/lib/tvgSceneImpl.h +++ b/src/lib/tvgSceneImpl.h @@ -37,16 +37,16 @@ struct Scene::Impl if (rTransform) delete(rTransform); } - bool clear(RenderMethod& renderer) + bool dispose(RenderMethod& renderer) { for (auto paint : paints) { if (paint->id() == PAINT_ID_SCENE) { //We know renderer type, avoid dynamic_cast for performance. auto scene = static_cast(paint); - if (!SCENE_IMPL->clear(renderer)) return false; + if (!SCENE_IMPL->dispose(renderer)) return false; } else { auto shape = static_cast(paint); - if (!SHAPE_IMPL->dispose(*shape, renderer)) return false; + if (!SHAPE_IMPL->dispose(renderer)) return false; } delete(paint); } @@ -64,13 +64,13 @@ struct Scene::Impl if (!SCENE_IMPL->update(renderer, transform, flag)) return false; } else { auto shape = static_cast(paint); - if (!SHAPE_IMPL->update(*shape, renderer, transform, flag)) return false; + if (!SHAPE_IMPL->update(renderer, transform, flag)) return false; } } 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) { auto scene = loader->data(); @@ -114,7 +114,7 @@ struct Scene::Impl if(!SCENE_IMPL->render(renderer)) return false; } else { auto shape = static_cast(paint); - if(!SHAPE_IMPL->render(*shape, renderer)) return false; + if(!SHAPE_IMPL->render(renderer)) return false; } } return true; diff --git a/src/lib/tvgShape.cpp b/src/lib/tvgShape.cpp index ddd3ef0..648c0ee 100644 --- a/src/lib/tvgShape.cpp +++ b/src/lib/tvgShape.cpp @@ -29,7 +29,7 @@ constexpr auto PATH_KAPPA = 0.552284f; /* External Class Implementation */ /************************************************************************/ -Shape :: Shape() : pImpl(make_unique()) +Shape :: Shape() : pImpl(make_unique(this)) { _id = PAINT_ID_SHAPE; diff --git a/src/lib/tvgShapeImpl.h b/src/lib/tvgShapeImpl.h index c38916a..b733bd5 100644 --- a/src/lib/tvgShapeImpl.h +++ b/src/lib/tvgShapeImpl.h @@ -48,9 +48,10 @@ struct Shape::Impl uint8_t color[4] = {0, 0, 0, 0}; //r, g, b, a uint32_t flag = RenderUpdateFlag::None; 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); } - 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 (!rTransform) return false; @@ -84,10 +85,10 @@ struct Shape::Impl if (rTransform && pTransform) { RenderTransform outTransform(pTransform, rTransform); - edata = renderer.prepare(shape, edata, &outTransform, static_cast(pFlag | flag)); + edata = renderer.prepare(*shape, edata, &outTransform, static_cast(pFlag | flag)); } else { auto outTransform = pTransform ? pTransform : rTransform; - edata = renderer.prepare(shape, edata, outTransform, static_cast(pFlag | flag)); + edata = renderer.prepare(*shape, edata, outTransform, static_cast(pFlag | flag)); } flag = RenderUpdateFlag::None; -- 2.7.4