| #include "rive/shapes/paint/group_effect.hpp" | |
| #include "rive/shapes/paint/target_effect.hpp" | |
| using namespace rive; | |
| void GroupEffect::updateEffect(PathProvider* pathProvider, | |
| const ShapePaintPath* source, | |
| const ShapePaint* shapePaint) | |
| { | |
| auto path = source; | |
| for (auto& effect : *effects()) | |
| { | |
| effect->updateEffect(pathProvider, path, shapePaint); | |
| auto newPath = effect->effectPath(pathProvider); | |
| if (newPath) | |
| { | |
| path = newPath; | |
| } | |
| } | |
| } | |
| void GroupEffect::invalidateEffects(StrokeEffect* invalidatingEffect) | |
| { | |
| for (auto& targetEffect : m_targetEffects) | |
| { | |
| targetEffect->invalidateEffectFromLocal(); | |
| } | |
| EffectsContainer::invalidateEffects(invalidatingEffect); | |
| } | |
| void GroupEffect::invalidateEffects() { invalidateEffects(nullptr); } | |
| void GroupEffect::addTargetEffect(TargetEffect* targetEffect) | |
| { | |
| m_targetEffects.push_back(targetEffect); | |
| } | |
| EffectsContainer* GroupEffect::parentPaint() { return nullptr; } | |
| void GroupEffect::addPathProvider(PathProvider* component) | |
| { | |
| StrokeEffect::addPathProvider(component); | |
| for (auto& effect : *effects()) | |
| { | |
| effect->addPathProvider(component); | |
| } | |
| } | |
| void GroupEffect::addStrokeEffect(StrokeEffect* effect) | |
| { | |
| EffectsContainer::addStrokeEffect(effect); | |
| for (auto& effectPath : m_effectPaths) | |
| { | |
| effect->addPathProvider(effectPath.first); | |
| } | |
| } | |
| void GroupEffect::invalidateEffect(PathProvider* component) | |
| { | |
| StrokeEffect::invalidateEffect(component); | |
| for (auto& effect : *effects()) | |
| { | |
| effect->invalidateEffect(component); | |
| } | |
| } | |
| void GroupEffect::buildDependencies() | |
| { | |
| Super::buildDependencies(); | |
| if (parent()) | |
| { | |
| parent()->addDependent(this); | |
| } | |
| } |