#ifndef Pipeline_HPP
#define Pipeline_HPP

#include <vector>
#include "PerPixelMesh.hpp"
#include "Renderable.hpp"
#include "Filters.hpp"
#include "PipelineContext.hpp"
#include "Shader.hpp"
#include "../Common.hpp"


//This class is the input to projectM's renderer
//
//Most implemenatations should implement PerPixel in order to get multi-threaded
//dynamic PerPixel equations.  If you MUST (ie Milkdrop compatability), you can use the
//setStaticPerPixel function and fill in x_mesh and y_mesh yourself.
class Pipeline
{
public:
  //static per pixel stuff
  bool staticPerPixel;
  int gx;
  int gy;

  float** x_mesh;
  float** y_mesh;
  //end static per pixel

  bool  textureWrap;
  float screenDecay;

  //variables passed to pixel shaders
  float q[NUM_Q_VARIABLES];

  //blur settings n=bias x=scale
  float blur1n;
  float blur2n;
  float blur3n;
  float blur1x;
  float blur2x;
  float blur3x;
  float blur1ed;

  Shader warpShader;
  Shader compositeShader;

  std::vector<RenderItem*> drawables;
  std::vector<RenderItem*> compositeDrawables;

  Pipeline();
  void setStaticPerPixel(int gx, int gy);
  virtual ~Pipeline();
  virtual PixelPoint PerPixel(PixelPoint p, const PerPixelContext context);
};

#endif
