Subversion Repositories DIN Is Noise

Rev

Rev 2097 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
* fader.h
* DIN Is Noise is copyright (c) 2006-2025 Jagannathan Sampath
* DIN Is Noise is released under GNU Public License 2.0
* For more information, please visit https://dinisnoise.org/
*/



#ifndef __FADER__
#define __FADER__

#include <string>
#include <fstream>

struct fader;
struct fade_listener {
  virtual void after_fade (fader& f) = 0;
};

struct fader {

  static double TIME; // default

  int on;

  float start;
  float end;
  float delta;
  int reached;

  float alpha;

  int flip; // end > start? 1:0

  float amount; // output

  double start_time, delta_time;

  fade_listener* afl;

  fader (double dt);
  fader (float vs = 0, float ve = 1);
  void set (float vs, float ve, int _on = 1, double dt = TIME);
  void copy (fader* src);
  int eval ();
  void restart ();
  void retime (double dt);
  void load (std::ifstream& f);
  void save (std::ofstream& f);

};

#endif