+/*
+ * ColorFade.h
+ *
+ * Created on: Oct 7, 2012
+ * Author: holy
+ */
+
+#ifndef GRAPHICS_COLORFADE_H_
+#define GRAPHICS_COLORFADE_H_
+
+#include "../app/State.h"
+#include "../app/Timer.h"
+
+#include <SDL.h>
+
+namespace graphics {
+
+class ColorFade
+: public app::State {
+
+public:
+ ColorFade(app::State *slave, Uint32 color, int duration, bool in = false, bool interactive = false);
+ virtual ~ColorFade() { }
+
+public:
+ virtual void EnterState(app::Application &ctrl, SDL_Surface *screen);
+ virtual void ExitState(app::Application &ctrl, SDL_Surface *screen);
+ virtual void ResumeState(app::Application &ctrl, SDL_Surface *screen);
+ virtual void PauseState(app::Application &ctrl, SDL_Surface *screen);
+
+ virtual void Resize(int width, int height);
+
+ virtual void HandleEvents(const app::Input &);
+ virtual void UpdateWorld(float deltaT);
+ virtual void Render(SDL_Surface *);
+
+private:
+ void UpdateBlinds(int width, int height);
+ Uint8 GetAlpha() const;
+
+private:
+ app::Timer<Uint32> timer;
+ app::Application *ctrl;
+ app::State *slave;
+ SDL_Surface *blinds;
+ Uint32 color;
+ int duration;
+ bool in;
+ bool interactive;
+
+};
+
+}
+
+#endif /* GRAPHICS_COLORFADE_H_ */