#include "core/registry.hpp" #include "effects/blur.hpp" #include "effects/grain.hpp" #include "effects/scanlines.hpp" namespace effector { // To add an effect: include its header and add one line here. const std::vector& effects() { static const std::vector registry = { std::make_shared(), std::make_shared(), std::make_shared(), }; return registry; } EffectPtr effectByName(const std::string& name) { for (const auto& effect : effects()) { if (effect->name() == name) return effect; } std::string known; for (const auto& effect : effects()) { if (!known.empty()) known += ", "; known += effect->name(); } throw EffectError("Unknown effect '" + name + "' (available: " + known + ")"); } std::string defaultEffectName() { return effects().front()->name(); } } // namespace effector