mirror of
https://github.com/thorvg/thorvg.git
synced 2025-06-08 05:33:36 +00:00
renderer: code refactoring.
replaced references with pointers to ensure consistency. no logical changes.
This commit is contained in:
parent
d7003505f3
commit
dd48a4155e
9 changed files with 63 additions and 63 deletions
|
@ -65,7 +65,7 @@ struct Canvas::Impl
|
|||
if (free) {
|
||||
for (auto paint : paints) {
|
||||
P(paint)->unref();
|
||||
if (paint->pImpl->dispose(*renderer) && P(paint)->refCnt == 0) {
|
||||
if (paint->pImpl->dispose(renderer) && P(paint)->refCnt == 0) {
|
||||
delete(paint);
|
||||
}
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ struct Canvas::Impl
|
|||
//Optimize Me: Can we skip the searching?
|
||||
for (auto paint2 : paints) {
|
||||
if (paint2 == paint) {
|
||||
paint->pImpl->update(*renderer, nullptr, clips, 255, flag);
|
||||
paint->pImpl->update(renderer, nullptr, clips, 255, flag);
|
||||
return Result::Success;
|
||||
}
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ struct Canvas::Impl
|
|||
//Update all retained paint nodes
|
||||
} else {
|
||||
for (auto paint : paints) {
|
||||
paint->pImpl->update(*renderer, nullptr, clips, 255, flag);
|
||||
paint->pImpl->update(renderer, nullptr, clips, 255, flag);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -117,7 +117,7 @@ struct Canvas::Impl
|
|||
|
||||
bool rendered = false;
|
||||
for (auto paint : paints) {
|
||||
if (paint->pImpl->render(*renderer)) rendered = true;
|
||||
if (paint->pImpl->render(renderer)) rendered = true;
|
||||
}
|
||||
|
||||
if (!rendered || !renderer->postRender()) return Result::InsufficientCondition;
|
||||
|
|
|
@ -106,7 +106,7 @@ static bool _compFastTrack(Paint* cmpTarget, const RenderTransform* pTransform,
|
|||
}
|
||||
|
||||
|
||||
RenderRegion Paint::Impl::bounds(RenderMethod& renderer) const
|
||||
RenderRegion Paint::Impl::bounds(RenderMethod* renderer) const
|
||||
{
|
||||
RenderRegion ret;
|
||||
PAINT_METHOD(ret, bounds(renderer));
|
||||
|
@ -114,7 +114,7 @@ RenderRegion Paint::Impl::bounds(RenderMethod& renderer) const
|
|||
}
|
||||
|
||||
|
||||
bool Paint::Impl::dispose(RenderMethod& renderer)
|
||||
bool Paint::Impl::dispose(RenderMethod* renderer)
|
||||
{
|
||||
if (compData) compData->target->pImpl->dispose(renderer);
|
||||
|
||||
|
@ -198,7 +198,7 @@ bool Paint::Impl::translate(float x, float y)
|
|||
}
|
||||
|
||||
|
||||
bool Paint::Impl::render(RenderMethod& renderer)
|
||||
bool Paint::Impl::render(RenderMethod* renderer)
|
||||
{
|
||||
Compositor* cmp = nullptr;
|
||||
|
||||
|
@ -210,26 +210,26 @@ bool Paint::Impl::render(RenderMethod& renderer)
|
|||
|
||||
if (MASK_REGION_MERGING(compData->method)) region.add(P(compData->target)->bounds(renderer));
|
||||
if (region.w == 0 || region.h == 0) return true;
|
||||
cmp = renderer.target(region, COMPOSITE_TO_COLORSPACE(renderer, compData->method));
|
||||
if (renderer.beginComposite(cmp, CompositeMethod::None, 255)) {
|
||||
cmp = renderer->target(region, COMPOSITE_TO_COLORSPACE(renderer, compData->method));
|
||||
if (renderer->beginComposite(cmp, CompositeMethod::None, 255)) {
|
||||
compData->target->pImpl->render(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
if (cmp) renderer.beginComposite(cmp, compData->method, compData->target->pImpl->opacity);
|
||||
if (cmp) renderer->beginComposite(cmp, compData->method, compData->target->pImpl->opacity);
|
||||
|
||||
renderer.blend(blendMethod);
|
||||
renderer->blend(blendMethod);
|
||||
|
||||
bool ret;
|
||||
PAINT_METHOD(ret, render(renderer));
|
||||
|
||||
if (cmp) renderer.endComposite(cmp);
|
||||
if (cmp) renderer->endComposite(cmp);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
RenderData Paint::Impl::update(RenderMethod& renderer, const RenderTransform* pTransform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
RenderData Paint::Impl::update(RenderMethod* renderer, const RenderTransform* pTransform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
{
|
||||
if (renderFlag & RenderUpdateFlag::Transform) {
|
||||
if (!rTransform) return nullptr;
|
||||
|
@ -265,9 +265,9 @@ RenderData Paint::Impl::update(RenderMethod& renderer, const RenderTransform* pT
|
|||
if (tryFastTrack) {
|
||||
RenderRegion viewport2;
|
||||
if ((compFastTrack = _compFastTrack(target, pTransform, target->pImpl->rTransform, viewport2))) {
|
||||
viewport = renderer.viewport();
|
||||
viewport = renderer->viewport();
|
||||
viewport2.intersect(viewport);
|
||||
renderer.viewport(viewport2);
|
||||
renderer->viewport(viewport2);
|
||||
target->pImpl->ctxFlag |= ContextFlag::FastTrack;
|
||||
}
|
||||
}
|
||||
|
@ -289,7 +289,7 @@ RenderData Paint::Impl::update(RenderMethod& renderer, const RenderTransform* pT
|
|||
PAINT_METHOD(rd, update(renderer, &outTransform, clips, opacity, newFlag, clipper));
|
||||
|
||||
/* 3. Composition Post Processing */
|
||||
if (compFastTrack) renderer.viewport(viewport);
|
||||
if (compFastTrack) renderer->viewport(viewport);
|
||||
else if (childClipper) clips.pop();
|
||||
|
||||
return rd;
|
||||
|
|
|
@ -131,15 +131,15 @@ namespace tvg
|
|||
return true;
|
||||
}
|
||||
|
||||
RenderRegion bounds(RenderMethod& renderer) const;
|
||||
bool dispose(RenderMethod& renderer);
|
||||
RenderRegion bounds(RenderMethod* renderer) const;
|
||||
bool dispose(RenderMethod* renderer);
|
||||
Iterator* iterator();
|
||||
bool rotate(float degree);
|
||||
bool scale(float factor);
|
||||
bool translate(float x, float y);
|
||||
bool bounds(float* x, float* y, float* w, float* h, bool transformed, bool stroking);
|
||||
RenderData update(RenderMethod& renderer, const RenderTransform* pTransform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper = false);
|
||||
bool render(RenderMethod& renderer);
|
||||
RenderData update(RenderMethod* renderer, const RenderTransform* pTransform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper = false);
|
||||
bool render(RenderMethod* renderer);
|
||||
Paint* duplicate();
|
||||
};
|
||||
}
|
||||
|
|
|
@ -69,18 +69,18 @@ bool Picture::Impl::needComposition(uint8_t opacity)
|
|||
}
|
||||
|
||||
|
||||
bool Picture::Impl::render(RenderMethod &renderer)
|
||||
bool Picture::Impl::render(RenderMethod* renderer)
|
||||
{
|
||||
bool ret = false;
|
||||
if (surface) return renderer.renderImage(rd);
|
||||
if (surface) return renderer->renderImage(rd);
|
||||
else if (paint) {
|
||||
Compositor* cmp = nullptr;
|
||||
if (needComp) {
|
||||
cmp = renderer.target(bounds(renderer), renderer.colorSpace());
|
||||
renderer.beginComposite(cmp, CompositeMethod::None, 255);
|
||||
cmp = renderer->target(bounds(renderer), renderer->colorSpace());
|
||||
renderer->beginComposite(cmp, CompositeMethod::None, 255);
|
||||
}
|
||||
ret = paint->pImpl->render(renderer);
|
||||
if (cmp) renderer.endComposite(cmp);
|
||||
if (cmp) renderer->endComposite(cmp);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -95,9 +95,9 @@ bool Picture::Impl::size(float w, float h)
|
|||
}
|
||||
|
||||
|
||||
RenderRegion Picture::Impl::bounds(RenderMethod& renderer)
|
||||
RenderRegion Picture::Impl::bounds(RenderMethod* renderer)
|
||||
{
|
||||
if (rd) return renderer.region(rd);
|
||||
if (rd) return renderer->region(rd);
|
||||
if (paint) return paint->pImpl->bounds(renderer);
|
||||
return {0, 0, 0, 0};
|
||||
}
|
||||
|
|
|
@ -70,9 +70,9 @@ struct Picture::Impl
|
|||
|
||||
RenderTransform resizeTransform(const RenderTransform* pTransform);
|
||||
bool needComposition(uint8_t opacity);
|
||||
bool render(RenderMethod &renderer);
|
||||
bool render(RenderMethod* renderer);
|
||||
bool size(float w, float h);
|
||||
RenderRegion bounds(RenderMethod& renderer);
|
||||
RenderRegion bounds(RenderMethod* renderer);
|
||||
Result load(ImageLoader* ploader);
|
||||
|
||||
Impl(Picture* p) : picture(p)
|
||||
|
@ -85,21 +85,21 @@ struct Picture::Impl
|
|||
delete(paint);
|
||||
}
|
||||
|
||||
bool dispose(RenderMethod& renderer)
|
||||
bool dispose(RenderMethod* renderer)
|
||||
{
|
||||
if (paint) paint->pImpl->dispose(renderer);
|
||||
else if (surface) renderer.dispose(rd);
|
||||
else if (surface) renderer->dispose(rd);
|
||||
rd = nullptr;
|
||||
return true;
|
||||
}
|
||||
|
||||
RenderData update(RenderMethod &renderer, const RenderTransform* pTransform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
RenderData update(RenderMethod* renderer, const RenderTransform* pTransform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
{
|
||||
auto flag = load();
|
||||
|
||||
if (surface) {
|
||||
auto transform = resizeTransform(pTransform);
|
||||
rd = renderer.prepare(surface, &rm, rd, &transform, clips, opacity, static_cast<RenderUpdateFlag>(pFlag | flag));
|
||||
rd = renderer->prepare(surface, &rm, rd, &transform, clips, opacity, static_cast<RenderUpdateFlag>(pFlag | flag));
|
||||
} else if (paint) {
|
||||
if (resizing) {
|
||||
loader->resize(paint, w, h);
|
||||
|
|
|
@ -322,7 +322,7 @@ static inline uint8_t CHANNEL_SIZE(ColorSpace cs)
|
|||
}
|
||||
}
|
||||
|
||||
static inline ColorSpace COMPOSITE_TO_COLORSPACE(RenderMethod& renderer, CompositeMethod method)
|
||||
static inline ColorSpace COMPOSITE_TO_COLORSPACE(RenderMethod* renderer, CompositeMethod method)
|
||||
{
|
||||
switch(method) {
|
||||
case CompositeMethod::AlphaMask:
|
||||
|
@ -335,7 +335,7 @@ static inline ColorSpace COMPOSITE_TO_COLORSPACE(RenderMethod& renderer, Composi
|
|||
//TODO: Optimize Luma/InvLuma colorspace to Grayscale8
|
||||
case CompositeMethod::LumaMask:
|
||||
case CompositeMethod::InvLumaMask:
|
||||
return renderer.colorSpace();
|
||||
return renderer->colorSpace();
|
||||
default:
|
||||
TVGERR("RENDERER", "Unsupported Composite Size! = %d", (int)method);
|
||||
return ColorSpace::Unsupported;
|
||||
|
|
|
@ -76,13 +76,13 @@ struct Scene::Impl
|
|||
}
|
||||
}
|
||||
|
||||
bool dispose(RenderMethod& renderer)
|
||||
bool dispose(RenderMethod* renderer)
|
||||
{
|
||||
for (auto paint : paints) {
|
||||
paint->pImpl->dispose(renderer);
|
||||
}
|
||||
|
||||
renderer.dispose(rd);
|
||||
renderer->dispose(rd);
|
||||
this->renderer = nullptr;
|
||||
this->rd = nullptr;
|
||||
|
||||
|
@ -111,7 +111,7 @@ struct Scene::Impl
|
|||
return true;
|
||||
}
|
||||
|
||||
RenderData update(RenderMethod &renderer, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flag, bool clipper)
|
||||
RenderData update(RenderMethod* renderer, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag flag, bool clipper)
|
||||
{
|
||||
if ((needComp = needComposition(opacity))) {
|
||||
/* Overriding opacity value. If this scene is half-translucent,
|
||||
|
@ -120,14 +120,14 @@ struct Scene::Impl
|
|||
opacity = 255;
|
||||
}
|
||||
|
||||
this->renderer = &renderer;
|
||||
this->renderer = renderer;
|
||||
|
||||
if (clipper) {
|
||||
Array<RenderData> rds(paints.size());
|
||||
for (auto paint : paints) {
|
||||
rds.push(paint->pImpl->update(renderer, transform, clips, opacity, flag, true));
|
||||
}
|
||||
rd = renderer.prepare(rds, rd, transform, clips, opacity, flag);
|
||||
rd = renderer->prepare(rds, rd, transform, clips, opacity, flag);
|
||||
return rd;
|
||||
} else {
|
||||
for (auto paint : paints) {
|
||||
|
@ -137,13 +137,13 @@ struct Scene::Impl
|
|||
}
|
||||
}
|
||||
|
||||
bool render(RenderMethod& renderer)
|
||||
bool render(RenderMethod* renderer)
|
||||
{
|
||||
Compositor* cmp = nullptr;
|
||||
|
||||
if (needComp) {
|
||||
cmp = renderer.target(bounds(renderer), renderer.colorSpace());
|
||||
renderer.beginComposite(cmp, CompositeMethod::None, opacity);
|
||||
cmp = renderer->target(bounds(renderer), renderer->colorSpace());
|
||||
renderer->beginComposite(cmp, CompositeMethod::None, opacity);
|
||||
needComp = false;
|
||||
}
|
||||
|
||||
|
@ -151,12 +151,12 @@ struct Scene::Impl
|
|||
if (!paint->pImpl->render(renderer)) return false;
|
||||
}
|
||||
|
||||
if (cmp) renderer.endComposite(cmp);
|
||||
if (cmp) renderer->endComposite(cmp);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
RenderRegion bounds(RenderMethod& renderer) const
|
||||
RenderRegion bounds(RenderMethod* renderer) const
|
||||
{
|
||||
if (paints.empty()) return {0, 0, 0, 0};
|
||||
|
||||
|
@ -229,7 +229,7 @@ struct Scene::Impl
|
|||
auto dispose = renderer ? true : false;
|
||||
|
||||
for (auto paint : paints) {
|
||||
if (dispose) free &= P(paint)->dispose(*renderer);
|
||||
if (dispose) free &= P(paint)->dispose(renderer);
|
||||
if (P(paint)->unref() == 0 && free) delete(paint);
|
||||
}
|
||||
paints.clear();
|
||||
|
|
|
@ -41,25 +41,25 @@ struct Shape::Impl
|
|||
{
|
||||
}
|
||||
|
||||
bool dispose(RenderMethod& renderer)
|
||||
bool dispose(RenderMethod* renderer)
|
||||
{
|
||||
renderer.dispose(rd);
|
||||
renderer->dispose(rd);
|
||||
rd = nullptr;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool render(RenderMethod& renderer)
|
||||
bool render(RenderMethod* renderer)
|
||||
{
|
||||
Compositor* cmp = nullptr;
|
||||
bool ret;
|
||||
|
||||
if (needComp) {
|
||||
cmp = renderer.target(bounds(renderer), renderer.colorSpace());
|
||||
renderer.beginComposite(cmp, CompositeMethod::None, opacity);
|
||||
cmp = renderer->target(bounds(renderer), renderer->colorSpace());
|
||||
renderer->beginComposite(cmp, CompositeMethod::None, opacity);
|
||||
needComp = false;
|
||||
}
|
||||
ret = renderer.renderShape(rd);
|
||||
if (cmp) renderer.endComposite(cmp);
|
||||
ret = renderer->renderShape(rd);
|
||||
if (cmp) renderer->endComposite(cmp);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -83,7 +83,7 @@ struct Shape::Impl
|
|||
return true;
|
||||
}
|
||||
|
||||
RenderData update(RenderMethod& renderer, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
RenderData update(RenderMethod* renderer, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
{
|
||||
if ((needComp = needComposition(opacity))) {
|
||||
/* Overriding opacity value. If this scene is half-translucent,
|
||||
|
@ -92,14 +92,14 @@ struct Shape::Impl
|
|||
opacity = 255;
|
||||
}
|
||||
|
||||
rd = renderer.prepare(rs, rd, transform, clips, opacity, static_cast<RenderUpdateFlag>(pFlag | flag), clipper);
|
||||
rd = renderer->prepare(rs, rd, transform, clips, opacity, static_cast<RenderUpdateFlag>(pFlag | flag), clipper);
|
||||
flag = RenderUpdateFlag::None;
|
||||
return rd;
|
||||
}
|
||||
|
||||
RenderRegion bounds(RenderMethod& renderer)
|
||||
RenderRegion bounds(RenderMethod* renderer)
|
||||
{
|
||||
return renderer.region(rd);
|
||||
return renderer->region(rd);
|
||||
}
|
||||
|
||||
bool bounds(float* x, float* y, float* w, float* h, bool stroking)
|
||||
|
|
|
@ -92,12 +92,12 @@ struct Text::Impl
|
|||
return Result::Success;
|
||||
}
|
||||
|
||||
RenderRegion bounds(RenderMethod& renderer)
|
||||
RenderRegion bounds(RenderMethod* renderer)
|
||||
{
|
||||
return renderer.region(rd);
|
||||
return renderer->region(rd);
|
||||
}
|
||||
|
||||
bool render(RenderMethod& renderer)
|
||||
bool render(RenderMethod* renderer)
|
||||
{
|
||||
if (paint) return PP(paint)->render(renderer);
|
||||
return false;
|
||||
|
@ -120,7 +120,7 @@ struct Text::Impl
|
|||
return false;
|
||||
}
|
||||
|
||||
RenderData update(RenderMethod& renderer, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
RenderData update(RenderMethod* renderer, const RenderTransform* transform, Array<RenderData>& clips, uint8_t opacity, RenderUpdateFlag pFlag, bool clipper)
|
||||
{
|
||||
if (!load()) return nullptr;
|
||||
|
||||
|
@ -153,9 +153,9 @@ struct Text::Impl
|
|||
return true;
|
||||
}
|
||||
|
||||
bool dispose(RenderMethod& renderer)
|
||||
bool dispose(RenderMethod* renderer)
|
||||
{
|
||||
renderer.dispose(rd);
|
||||
renderer->dispose(rd);
|
||||
this->rd = nullptr;
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue