Files
projectm/src/libprojectM/Renderer/Waveform.hpp
2018-11-17 11:42:28 +01:00

66 lines
1.3 KiB
C++

/*
* Waveform.hpp
*
* Created on: Jun 25, 2008
* Author: pete
*/
#ifndef WAVEFORM_HPP_
#define WAVEFORM_HPP_
#include "Renderable.hpp"
#include <vector>
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 InitVertexAttrib();
void Draw(RenderContext &context);
private:
virtual ColoredPoint PerPoint(ColoredPoint p, const WaveformContext context)=0;
std::vector<ColoredPoint> points;
std::vector<float> pointContext;
};
#endif /* WAVEFORM_HPP_ */