// FilterBarrel.h: interface for the CFilterBarrel class.
//
//////////////////////////////////////////////////////////////////////

/** \file FilterBarrel.h
	\brief Rozhraní pro třídu CFilterBarrel
*/

#if !defined(_FILTERBARREL_H_)
#define _FILTERBARREL_H_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include <iostream>
using namespace std;
#include "FilterBase.h"

/** Třída reprezentující zkreslení typu \b soudkovitost
*/
class CFilterBarrel : public CFilterBase  
{
private:
	double m_paramBarrel;	///< parametr zkreslení
	int m_type;				///< ID filtru
public:
	
	/** Parametrický konstruktor
		Inicializuje filtr na základě parametů
		@param param - parametr zkreslení

		Zbylé parametry jsou předány konstruktoru základní třdíy.
		@see CFilterBase parametrický konstruktor
	*/
	CFilterBarrel(float CameraFocus = 0, float DistanceToCamera = 0, const char* name = "Untitled", double param = 0);
	virtual ~CFilterBarrel(); ///< Destruktor

	double GetParam() const { return m_paramBarrel;}
	CStructures::iPoint GetNextSize() const;
	int GetType() {return m_type;}

	void Transform(CPixelArray* pSource, CPixelArray* pTarget);

	void Show();
	

//dumping objektu
#ifdef _DEBUG
	void Dump(CDumpContext& dc) const;
#endif //_DEBUG

};

#endif // !defined(_FILTERBARREL_H_)
