#ifndef VTransferFunctionElement_h
#define VTransferFunctionElement_h

#include "GUIelement.h"
#include "VExitBox.h"
#include "VHistogram.h"
#include "VTransferFunction.h"
#include "VTexture.h"
#include <GL/glew.h>
#include <GL/glut.h>

/*! \brief VTransferFunctionElement: Klasse zur Repräsentation des Transferfunktionseditors (links oben).
*/

class VTransferFunctionElement :
	public GUIelement {

	int x;
	int y;
	VExitBox * exit;
	VHistogram * hist;
	VTexture * background;
	VTransferFunction * function;
	float * bg;
	float * fg;
	float * histcol;
	bool dragging;

public:
	/*! Konstruktor
		\param width Breite des Fensters
		\param height Höhe des Fensters
		\param fps Pointer auf fps Wert
		\param hist Histogramm
	*/
	VTransferFunctionElement(int*,int*,unsigned int*,int*);
	~VTransferFunctionElement(void);
	
	void motion(int,int);
	void pressed(int,int);
	void released(int,int);
	void drag(int,int);

	bool isInside(int,int);
	void render(void);
	void draw(void);

	/* Liefert einen Pointer auf die id der Transferfunktionstextur zurück*/
	GLuint * getTexture();
};

#endif