65 lines
1.2 KiB
C++
65 lines
1.2 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 Draw(RenderContext &context);
|
||
|
|
||
|
private:
|
||
|
virtual ColoredPoint PerPoint(ColoredPoint p, const WaveformContext context)=0;
|
||
|
std::vector<ColoredPoint> points;
|
||
|
std::vector<float> pointContext;
|
||
|
|
||
|
};
|
||
|
#endif /* WAVEFORM_HPP_ */
|