keep consistency of internal functions among the paint type methods.
Change-Id: I98a42ac398ddc5aaf49ac59e5cbb1790266bd612
if (paint->id() == PAINT_ID_SCENE) {
//We know renderer type, avoid dynamic_cast for performance.
auto scene = static_cast<Scene*>(paint);
- if (!SCENE_IMPL->clear(*renderer)) return Result::InsufficientCondition;
+ if (!SCENE_IMPL->dispose(*renderer)) return Result::InsufficientCondition;
} else {
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);
}
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)) return Result::InsufficientCondition;
+ if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
} else {
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;
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)) return Result::InsufficientCondition;
+ if (!SCENE_IMPL->update(*renderer, nullptr, RenderUpdateFlag::None)) return Result::InsufficientCondition;
} else {
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;
}
if(!SCENE_IMPL->render(*renderer)) return Result::InsufficientCondition;
} else {
auto shape = static_cast<Shape*>(paint);
- if(!SHAPE_IMPL->render(*shape, *renderer)) return Result::InsufficientCondition;
+ if(!SHAPE_IMPL->render(*renderer)) return Result::InsufficientCondition;
}
}
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<Scene*>(paint);
- if (!SCENE_IMPL->clear(renderer)) return false;
+ if (!SCENE_IMPL->dispose(renderer)) return false;
} else {
auto shape = static_cast<Shape*>(paint);
- if (!SHAPE_IMPL->dispose(*shape, renderer)) return false;
+ if (!SHAPE_IMPL->dispose(renderer)) return false;
}
delete(paint);
}
if (!SCENE_IMPL->update(renderer, transform, flag)) return false;
} else {
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;
}
- 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();
if(!SCENE_IMPL->render(renderer)) return false;
} else {
auto shape = static_cast<Shape*>(paint);
- if(!SHAPE_IMPL->render(*shape, renderer)) return false;
+ if(!SHAPE_IMPL->render(renderer)) return false;
}
}
return true;
/* External Class Implementation */
/************************************************************************/
-Shape :: Shape() : pImpl(make_unique<Impl>())
+Shape :: Shape() : pImpl(make_unique<Impl>(this))
{
_id = PAINT_ID_SHAPE;
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)
{
}
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;
if (rTransform && pTransform) {
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 {
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;