/* * Waveform.hpp * * Created on: Jun 25, 2008 * Author: pete */ #ifndef WAVEFORM_HPP_ #define WAVEFORM_HPP_ #include "Renderable.hpp" #include class ColoredPoint { public: float x; float y; float r; float g; float b; float a; ColoredPoint():x(0.5),y(0.5),r(1),g(1),b(1),a(1){}; }; class WaveformContext { public: float sample; int samples; int sample_int; float left; float right; BeatDetect *music; WaveformContext(int samples, BeatDetect *music):samples(samples),music(music){}; }; class Waveform : public RenderItem { public: int samples; /* number of samples associated with this wave form. Usually powers of 2 */ bool spectrum; /* spectrum data or pcm data */ bool dots; /* draw wave as dots or lines */ bool thick; /* draw thicker lines */ bool additive; /* add color values together */ float scaling; /* scale factor of waveform */ float smoothing; /* smooth factor of waveform */ int sep; /* no idea what this is yet... */ Waveform(int samples); void Draw(RenderContext &context); private: virtual ColoredPoint PerPoint(ColoredPoint p, const WaveformContext context)=0; std::vector points; std::vector pointContext; }; #endif /* WAVEFORM_HPP_ */