-
Notifications
You must be signed in to change notification settings - Fork 309
Description
are there some kind of register class to register custom effects? The class EffectInfo would need to implement a call to a class like this: #include "EffectRegistry.h"
#include
namespace openshot {
EffectRegistry& EffectRegistry::GetInstance() {
static EffectRegistry instance;
return instance;
}
void EffectRegistry::RegisterEffect(const std::string& name, EffectCreator creator) {
creators[name] = creator;
std::cout << "Efeito '" << name << "' registrado com sucesso!" << std::endl;
}
EffectBase* EffectRegistry::CreateEffect(const std::string& name) {
if (creators.count(name)) {
return creators.at(name)();
}
return nullptr; // Retorna nulo se o efeito não for encontrado
} so EffectInfo work in this way: #include "EffectInfo.h"
#include "EffectRegistry.h" // Inclua o novo arquivo
// Remova toda a lista de if/else if
// Substitua o método CreateEffect pelo seguinte:
EffectBase* EffectInfo::CreateEffect(const std::string& effect_type) const
{
// Crie o efeito usando o EffectRegistry
return EffectRegistry::GetInstance().CreateEffect(effect_type);
}
// Para o método GetEffects(), você precisará adaptar para o novo sistema.
// Uma maneira é ter uma função estática que retorna a lista de nomes.