X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.cpp;h=82e9c5d705e09b2b1ff5552baf13f1996b8e4e50;hp=31a7c8b128041c951f99a1624c95e9402bcee0c0;hb=110985baf2b42da4d5992cc7513e9f66695e4659;hpb=6c79a9e08302571667a50a219d95354e687bd841 diff --git a/effect_chain.cpp b/effect_chain.cpp index 31a7c8b..82e9c5d 100644 --- a/effect_chain.cpp +++ b/effect_chain.cpp @@ -16,16 +16,7 @@ #include "effect_chain.h" #include "gamma_expansion_effect.h" #include "gamma_compression_effect.h" -#include "lift_gamma_gain_effect.h" #include "colorspace_conversion_effect.h" -#include "sandbox_effect.h" -#include "saturation_effect.h" -#include "mirror_effect.h" -#include "vignette_effect.h" -#include "blur_effect.h" -#include "diffusion_effect.h" -#include "glow_effect.h" -#include "mix_effect.h" #include "input.h" EffectChain::EffectChain(unsigned width, unsigned height) @@ -33,16 +24,15 @@ EffectChain::EffectChain(unsigned width, unsigned height) height(height), finalized(false) {} -Input *EffectChain::add_input(const ImageFormat &format) +Input *EffectChain::add_input(Input *input) { char eff_id[256]; sprintf(eff_id, "src_image%u", (unsigned)inputs.size()); - Input *input = new Input(format, width, height); effects.push_back(input); inputs.push_back(input); - output_color_space.insert(std::make_pair(input, format.color_space)); - output_gamma_curve.insert(std::make_pair(input, format.gamma_curve)); + output_color_space.insert(std::make_pair(input, input->get_color_space())); + output_gamma_curve.insert(std::make_pair(input, input->get_gamma_curve())); effect_ids.insert(std::make_pair(input, eff_id)); incoming_links.insert(std::make_pair(input, std::vector())); return input; @@ -70,37 +60,6 @@ void EffectChain::add_effect_raw(Effect *effect, const std::vector &in output_color_space[effect] = output_color_space[last_added_effect()]; } -Effect *instantiate_effect(EffectId effect) -{ - switch (effect) { - case EFFECT_GAMMA_EXPANSION: - return new GammaExpansionEffect(); - case EFFECT_GAMMA_COMPRESSION: - return new GammaCompressionEffect(); - case EFFECT_COLOR_SPACE_CONVERSION: - return new ColorSpaceConversionEffect(); - case EFFECT_SANDBOX: - return new SandboxEffect(); - case EFFECT_LIFT_GAMMA_GAIN: - return new LiftGammaGainEffect(); - case EFFECT_SATURATION: - return new SaturationEffect(); - case EFFECT_MIRROR: - return new MirrorEffect(); - case EFFECT_VIGNETTE: - return new VignetteEffect(); - case EFFECT_BLUR: - return new BlurEffect(); - case EFFECT_DIFFUSION: - return new DiffusionEffect(); - case EFFECT_GLOW: - return new GlowEffect(); - case EFFECT_MIX: - return new MixEffect(); - } - assert(false); -} - // Set the "use_srgb_texture_format" option on all inputs that feed into this node, // and update the output_gamma_curve[] map as we go. // @@ -160,10 +119,8 @@ Effect *EffectChain::normalize_to_srgb(Effect *input) return colorspace_conversion; } -Effect *EffectChain::add_effect(EffectId effect_id, const std::vector &inputs) +Effect *EffectChain::add_effect(Effect *effect, const std::vector &inputs) { - Effect *effect = instantiate_effect(effect_id); - assert(inputs.size() == effect->num_inputs()); std::vector normalized_inputs = inputs;