/*
 * MilkdropWaveform.hpp
 *
 *  Created on: Jun 25, 2008
 *      Author: pete
 */
#ifndef MILKDROPWAVEFORM_HPP_
#define MILKDROPWAVEFORM_HPP_

#include "Renderable.hpp"


enum MilkdropWaveformMode
{
  Circle=0,
  RadialBlob,
  Blob2,
  Blob3,
  DerivativeLine,
  Blob5,
  Line,
  DoubleLine
};


class MilkdropWaveform : public RenderItem
{
public:
  float x;
  float y;

  float r;
  float g;
  float b;
  float a;

  float mystery;

  MilkdropWaveformMode mode;

  bool  additive;
  bool  dots;
  bool  thick;
  bool  modulateAlphaByVolume;
  bool  maximizeColors;
  float scale;
  float smoothing;

  MilkdropWaveform();
  void Draw(RenderContext &context);

  float modOpacityStart;
  float modOpacityEnd;

private:
  float temp_a;
  float rot;
  float aspectScale;
  int   samples;
  bool  two_waves;
  bool  loop;
  float wavearray[2048][2];
  float wavearray2[2048][2];

  void MaximizeColors(RenderContext &context);
  void ModulateOpacityByVolume(RenderContext &context);
  void WaveformMath(RenderContext &context);

};

#endif /* MILKDROPWAVEFORM_HPP_ */
