X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=main.cpp;h=84837395879a43f10f4a897f772846d3e757966a;hp=f81eaa8af6c129acf20317d2d6e0a96bbd1920cb;hb=e61807327b9a1f98f39dd5e1496254905f78e581;hpb=06e169be17d6298bb443271c7defa8b1abf52b8d diff --git a/main.cpp b/main.cpp index f81eaa8..8483739 100644 --- a/main.cpp +++ b/main.cpp @@ -21,6 +21,7 @@ #include #include +#include "effect.h" #include "util.h" #include "widgets.h" #include "texture_enum.h" @@ -67,75 +68,6 @@ enum EffectId { LIFT_GAMMA_GAIN, }; -class Effect { -public: - virtual bool needs_linear_light() { return true; } - virtual bool needs_srgb_primaries() { return true; } - virtual bool needs_many_samples() { return false; } - virtual bool needs_mipmaps() { return false; } - - // Neither of these take ownership. - bool set_int(const std::string&, int value); - bool set_float(const std::string &key, float value); - bool set_vec3(const std::string &key, const float *values); - -protected: - // Neither of these take ownership. - void register_int(const std::string &key, int *value); - void register_float(const std::string &key, float *value); - void register_vec3(const std::string &key, float *values); - -private: - std::map params_int; - std::map params_float; - std::map params_vec3; -}; - -bool Effect::set_int(const std::string &key, int value) -{ - if (params_int.count(key) == 0) { - return false; - } - *params_int[key] = value; - return true; -} - -bool Effect::set_float(const std::string &key, float value) -{ - if (params_float.count(key) == 0) { - return false; - } - *params_float[key] = value; - return true; -} - -bool Effect::set_vec3(const std::string &key, const float *values) -{ - if (params_vec3.count(key) == 0) { - return false; - } - memcpy(params_vec3[key], values, sizeof(float) * 3); - return true; -} - -void Effect::register_int(const std::string &key, int *value) -{ - assert(params_int.count(key) == 0); - params_int[key] = value; -} - -void Effect::register_float(const std::string &key, float *value) -{ - assert(params_float.count(key) == 0); - params_float[key] = value; -} - -void Effect::register_vec3(const std::string &key, float *values) -{ - assert(params_vec3.count(key) == 0); - params_vec3[key] = values; -} - // Can alias on a float[3]. struct RGBTriplet { RGBTriplet(float r, float g, float b)