|
@@ -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,16 +114,6 @@ RenderRegion Paint::Impl::bounds(RenderMethod& renderer) const
|
|
|
}
|
|
|
|
|
|
|
|
|
-bool Paint::Impl::dispose(RenderMethod& renderer)
|
|
|
-{
|
|
|
- if (compData) compData->target->pImpl->dispose(renderer);
|
|
|
-
|
|
|
- bool ret;
|
|
|
- PAINT_METHOD(ret, dispose(renderer));
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
Iterator* Paint::Impl::iterator()
|
|
|
{
|
|
|
Iterator* ret;
|
|
@@ -198,7 +188,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,27 +200,33 @@ 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 (this->renderer != renderer) {
|
|
|
+ if (this->renderer) TVGERR("RENDERER", "paint's renderer has been changed!");
|
|
|
+ renderer->ref();
|
|
|
+ this->renderer = renderer;
|
|
|
+ }
|
|
|
+
|
|
|
if (renderFlag & RenderUpdateFlag::Transform) {
|
|
|
if (!rTransform) return nullptr;
|
|
|
rTransform->update();
|
|
@@ -265,9 +261,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 +285,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;
|