]> git.tdb.fi Git - libs/demoscene.git/blob - source/fadeoverlay.h
Minor cleanups
[libs/demoscene.git] / source / fadeoverlay.h
1 #ifndef MSP_DEMOSCENE_FADEOVERLAY_H_
2 #define MSP_DEMOSCENE_FADEOVERLAY_H_
3
4 #include <msp/gl/color.h>
5 #include <msp/gl/mesh.h>
6 #include <msp/gl/postprocessor.h>
7 #include <msp/gl/program.h>
8 #include <msp/gl/programdata.h>
9 #include "colorfade.h"
10 #include "sequencer.h"
11
12 class FadeOverlay: public Msp::GL::PostProcessor
13 {
14 public:
15         class Fade: public ColorFadeAction
16         {
17         public:
18                 class Loader: public Msp::DataFile::DerivedObjectLoader<Fade, Action::Loader>
19                 {
20                 public:
21                         Loader(Fade &, Demo &);
22
23                 private:
24                         void overlay(const std::string &);
25                         void color(float, float, float, float);
26                 };
27
28         private:
29                 FadeOverlay *overlay;
30
31         public:
32                 Fade();
33                 Fade(FadeOverlay &, const Msp::GL::Color &);
34
35                 virtual void validate() const;
36
37                 virtual const Msp::GL::Color &get_color() const { return overlay->color; }
38                 virtual void set_color(const Msp::GL::Color &c) { overlay->set_color(c); }
39         };
40
41 private:
42         const Msp::GL::Mesh &mesh;
43         const Msp::GL::Program &shprog;
44         Msp::GL::ProgramData shdata;
45         Msp::GL::Color color;
46
47 public:
48         FadeOverlay(Msp::DataFile::Collection &);
49
50         void set_color(const Msp::GL::Color &);
51
52         virtual void render(Msp::GL::Renderer &, const Msp::GL::Texture2D &, const Msp::GL::Texture2D &);
53 };
54
55 #endif