From e61807327b9a1f98f39dd5e1496254905f78e581 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Mon, 1 Oct 2012 17:16:26 +0200 Subject: [PATCH] Move the Effect class out into its own file. --- Makefile | 2 +- effect.cpp | 49 ++++++++++++++++++++++++++++++++++++++ effect.h | 31 ++++++++++++++++++++++++ main.cpp | 70 +----------------------------------------------------- 4 files changed, 82 insertions(+), 70 deletions(-) create mode 100644 effect.cpp create mode 100644 effect.h diff --git a/Makefile b/Makefile index 9cd3e94..5453fbd 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ CC=gcc CXX=g++ CXXFLAGS=-Wall LDFLAGS=-lSDL -lSDL_image -lGL -OBJS=main.o util.o widgets.o +OBJS=main.o util.o widgets.o effect.o test: $(OBJS) $(CXX) -o test $(OBJS) $(LDFLAGS) diff --git a/effect.cpp b/effect.cpp new file mode 100644 index 0000000..f89b1a9 --- /dev/null +++ b/effect.cpp @@ -0,0 +1,49 @@ +#include +#include +#include "effect.h" + +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; +} + diff --git a/effect.h b/effect.h new file mode 100644 index 0000000..deeaae4 --- /dev/null +++ b/effect.h @@ -0,0 +1,31 @@ +#ifndef _EFFECT_H +#define _EFFECT_H 1 + +#include +#include + +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; +}; + +#endif // !defined(_EFFECT_H) 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) -- 2.39.2