Move the Effect class out into its own file.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 1 Oct 2012 15:16:26 +0000 (17:16 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Mon, 1 Oct 2012 15:16:26 +0000 (17:16 +0200)
Makefile
effect.cpp [new file with mode: 0644]
effect.h [new file with mode: 0644]
main.cpp

index 9cd3e94..5453fbd 100644 (file)
--- 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 (file)
index 0000000..f89b1a9
--- /dev/null
@@ -0,0 +1,49 @@
+#include <string.h>
+#include <assert.h>
+#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 (file)
index 0000000..deeaae4
--- /dev/null
+++ b/effect.h
@@ -0,0 +1,31 @@
+#ifndef _EFFECT_H
+#define _EFFECT_H 1
+
+#include <map>
+#include <string>
+
+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<std::string, int *> params_int;
+       std::map<std::string, float *> params_float;
+       std::map<std::string, float *> params_vec3;
+};
+
+#endif // !defined(_EFFECT_H)
index f81eaa8..8483739 100644 (file)
--- a/main.cpp
+++ b/main.cpp
@@ -21,6 +21,7 @@
 #include <GL/gl.h>
 #include <GL/glext.h>
 
+#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<std::string, int *> params_int;
-       std::map<std::string, float *> params_float;
-       std::map<std::string, float *> 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)