1 /*
2 * fader.h
3 * DIN Is Noise is copyright (c) 2006-2021 Jagannathan Sampath
4 * DIN Is Noise is released under GNU Public License 2.0
5 * For more information, please visit https://dinisnoise.org/
6 */
7 
8 
9 #ifndef __FADER__
10 #define __FADER__
11 
12 #include <string>
13 #include <fstream>
14 
15 struct fader;
16 struct fade_listener {
17 	virtual void after_fade (fader& f) = 0;
18 };
19 
20 struct fader {
21 
22   static double TIME; // default
23 
24   int on;
25 
26   float start;
27   float end;
28   float delta;
29   int reached;
30 
31   float alpha;
32 
33   int flip; // end > start? 1:0
34 
35   float amount; // output
36 
37   double start_time, delta_time;
38 
39 	fade_listener* afl;
40 
41 	fader (double dt);
42   fader (float vs = 0, float ve = 1);
43   void set (float vs, float ve, int _on = 1, double dt = TIME);
44 	void copy (fader* src);
45   int eval ();
46   void restart ();
47   void retime (double dt);
48 	void load (std::ifstream& f);
49 	void save (std::ofstream& f);
50 
51 };
52 
53 #endif
54