#include <SDL/SDL_opengl.h>
#include <SDL/SDL_image.h>
-#include <GL/gl.h>
-#include <GL/glext.h>
-
#include "effect.h"
#include "effect_chain.h"
#include "util.h"
+#include "opengl.h"
#include "widgets.h"
+#include "flat_input.h"
+#include "lift_gamma_gain_effect.h"
+#include "saturation_effect.h"
+#include "diffusion_effect.h"
+
unsigned char result[WIDTH * HEIGHT * 4];
float lift_theta = 0.0f, lift_rad = 0.0f, lift_v = 0.0f;
RGBTriplet gamma(1.0f, 1.0f, 1.0f);
RGBTriplet gain(1.0f, 1.0f, 1.0f);
- hsv2rgb(lift_theta, lift_rad, lift_v, &lift.r, &lift.g, &lift.b);
- hsv2rgb(gamma_theta, gamma_rad, gamma_v * 2.0f, &gamma.r, &gamma.g, &gamma.b);
- hsv2rgb(gain_theta, gain_rad, gain_v * 4.0f, &gain.r, &gain.g, &gain.b);
+ hsv2rgb_normalized(lift_theta, lift_rad, lift_v, &lift.r, &lift.g, &lift.b);
+ hsv2rgb_normalized(gamma_theta, gamma_rad, gamma_v * 2.0f, &gamma.r, &gamma.g, &gamma.b);
+ hsv2rgb_normalized(gain_theta, gain_rad, gain_v * 4.0f, &gain.r, &gain.g, &gain.b);
bool ok = lift_gamma_gain_effect->set_vec3("lift", (float *)&lift);
ok = ok && lift_gamma_gain_effect->set_vec3("gamma", (float *)&gamma);
EffectChain chain(WIDTH, HEIGHT);
ImageFormat inout_format;
- inout_format.pixel_format = FORMAT_BGRA;
inout_format.color_space = COLORSPACE_sRGB;
inout_format.gamma_curve = GAMMA_sRGB;
- Input *input = chain.add_input(inout_format);
- Effect *lift_gamma_gain_effect = chain.add_effect(EFFECT_LIFT_GAMMA_GAIN);
- Effect *saturation_effect = chain.add_effect(EFFECT_SATURATION);
- Effect *diffusion_effect = chain.add_effect(EFFECT_DIFFUSION);
- //Effect *vignette_effect = chain.add_effect(EFFECT_VIGNETTE);
- //Effect *sandbox_effect = chain.add_effect(EFFECT_SANDBOX);
+ FlatInput *input = new FlatInput(inout_format, FORMAT_BGRA, img_w, img_h);
+ chain.add_input(input);
+ Effect *lift_gamma_gain_effect = chain.add_effect(new LiftGammaGainEffect());
+ Effect *saturation_effect = chain.add_effect(new SaturationEffect());
+ Effect *diffusion_effect = chain.add_effect(new DiffusionEffect());
+ //Effect *vignette_effect = chain.add_effect(new VignetteEffect());
+ //Effect *sandbox_effect = chain.add_effect(new SandboxEffect());
//sandbox_effect->set_float("parm", 42.0f);
- //chain.add_effect(EFFECT_MIRROR);
+ //chain.add_effect(new MirrorEffect());
chain.add_output(inout_format);
chain.finalize();