#ifndef CUDABilateralFilterWIDGET_H__
#define CUDABilateralFilterWIDGET_H__

#include <QWidget>
#include "ui_CUDABilateralFilterWidget.h"

class CUDABilateralFilterWidget : public QWidget, public Ui_CUDABilateralFilterWidget
{
	Q_OBJECT

public:
	/// Constructor
	CUDABilateralFilterWidget(QWidget *parent = 0);
	/// Destructor
	~CUDABilateralFilterWidget();

	void Preset();

signals:
	/// Signal that is emitted if the check box for the RGB data changes
	void RGBDataCheckBoxChanged(bool value);
	/// Signal that is emitted if the check box for the range data changes
	void RangeDataCheckBoxChanged(bool value);
	/// Signal that is emitted when the spatial sigma for the range data changes
	void RangeSigmaSpatialChanged(float value);
	/// Signal that is emitted when the range sigma for the range data changes
	void RangeSigmaRangeChanged(float value);
	/// Signal that is emitted when the range kernel size changes
	void RangeKernelSizeChanged(int value);
	/// Signal that is emitted when the spatial sigma for the RGB data changes
	void RGBSigmaSpatialChanged(float value);
	/// Signal that is emitted when the range sigma for the RGB data changes
	void RGBSigmaRangeChanged(float value);
	/// Signal that is emitted when the RGB kernel size changes
	void RGBKernelSizeChanged(int value);

protected slots:
	/// Connected to the range data spatial sigma slider
	void RangeSigmaSpatialSliderChanged(int);
	/// Connected to the range data range sigma slider
	void RangeSigmaRangeSliderChanged(int);
	/// Connected to the range kernel size combo box
	void RangeKernelSizeComboboxChanged(int);
	/// Connected to the RGB data spatial sigma slider
	void RGBSigmaSpatialSliderChanged(int);
	/// Connected to the RGB data range sigma slider
	void RGBSigmaRangeSliderChanged(int);
	/// Connected to the RGB kernel size combo box
	void RGBKernelSizeComboboxChanged(int);
	

};

#endif // CUDABilateralFilterWIDGET_H__
