mirror of
https://github.com/thorvg/thorvg.git
synced 2025-07-26 08:09:14 +00:00
renderer: support duplicate effects
implement effect duplication functionality to enable proper Scene duplication with effects. issue: https://github.com/thorvg/thorvg/issues/3631 Co-Authored-By: Hermet Park <hermet@lottiefiles.com>
This commit is contained in:
parent
9369642642
commit
bdccfb2449
2 changed files with 36 additions and 3 deletions
|
@ -103,9 +103,9 @@ struct UserExample : tvgexam::Example
|
|||
//Duplicate Picture - svg
|
||||
{
|
||||
auto picture1 = tvg::Picture::gen();
|
||||
if (!tvgexam::verify(picture1->load(EXAMPLE_DIR"/svg/tiger.svg"))) return false;
|
||||
if (!tvgexam::verify(picture1->load(EXAMPLE_DIR"/svg/2684.svg"))) return false;
|
||||
picture1->translate(350, 200);
|
||||
picture1->scale(0.25);
|
||||
picture1->scale(4);
|
||||
|
||||
auto picture2 = picture1->duplicate();
|
||||
picture2->translate(550, 250);
|
||||
|
|
|
@ -272,7 +272,40 @@ struct SceneImpl : Scene
|
|||
dup->paints.push_back(cdup);
|
||||
}
|
||||
|
||||
if (effects) TVGERR("RENDERER", "TODO: Duplicate Effects?");
|
||||
if (effects) {
|
||||
dup->effects = new Array<RenderEffect*>;
|
||||
ARRAY_FOREACH(p, *effects) {
|
||||
RenderEffect* ret = nullptr;
|
||||
switch ((*p)->type) {
|
||||
case SceneEffect::GaussianBlur: {
|
||||
ret = new RenderEffectGaussianBlur(*(RenderEffectGaussianBlur*)(*p));
|
||||
break;
|
||||
}
|
||||
case SceneEffect::DropShadow: {
|
||||
ret = new RenderEffectDropShadow(*(RenderEffectDropShadow*)(*p));
|
||||
break;
|
||||
}
|
||||
case SceneEffect::Fill: {
|
||||
ret = new RenderEffectFill(*(RenderEffectFill*)(*p));
|
||||
break;
|
||||
}
|
||||
case SceneEffect::Tint: {
|
||||
ret = new RenderEffectTint(*(RenderEffectTint*)(*p));
|
||||
break;
|
||||
}
|
||||
case SceneEffect::Tritone: {
|
||||
ret = new RenderEffectTritone(*(RenderEffectTritone*)(*p));
|
||||
break;
|
||||
}
|
||||
default: break;
|
||||
}
|
||||
if (ret) {
|
||||
ret->rd = nullptr;
|
||||
ret->valid = false;
|
||||
dup->effects->push(ret);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return scene;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue