]> git.tdb.fi Git - libs/demoscene.git/blob - source/fadeoverlay.h
Load FadeOverlay's shader from builtin resources
[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 namespace Msp {
13 namespace DemoScene {
14
15 class FadeOverlay: public Msp::GL::PostProcessor
16 {
17 public:
18         class Fade: public ColorFadeAction
19         {
20         public:
21                 class Loader: public Msp::DataFile::DerivedObjectLoader<Fade, Action::Loader>
22                 {
23                 public:
24                         Loader(Fade &, Demo &);
25
26                 private:
27                         void overlay(const std::string &);
28                         void color(float, float, float, float);
29                 };
30
31         private:
32                 FadeOverlay *overlay;
33
34         public:
35                 Fade();
36                 Fade(FadeOverlay &, const Msp::GL::Color &);
37
38                 virtual void validate() const;
39
40                 virtual const Msp::GL::Color &get_color() const { return overlay->color; }
41                 virtual void set_color(const Msp::GL::Color &c) { overlay->set_color(c); }
42         };
43
44 private:
45         const Msp::GL::Mesh &mesh;
46         const Msp::GL::Program &shprog;
47         Msp::GL::ProgramData shdata;
48         Msp::GL::Color color;
49
50 public:
51         FadeOverlay();
52
53         void set_color(const Msp::GL::Color &);
54
55         virtual void render(Msp::GL::Renderer &, const Msp::GL::Texture2D &, const Msp::GL::Texture2D &);
56 };
57
58 } // namespace DemoScene
59 } // namespace Msp
60
61 #endif