// Circle.h: interface for the CSieStar class.
//
//////////////////////////////////////////////////////////////////////
/** \file Circle.h
	\brief Rozhraní pro třídu CSieStar
*/

#if !defined(_CFREKVENC_H_)
#define _CFREKVENC_H_

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

#include "PrimitiveBase.h"

/** Reprezentuje vlastnosti geometrického objektu typu \b kruh
*/
class CFrekvenc
	: public CPrimitiveBase  
{
DECLARE_DYNAMIC(CFrekvenc)

private:
	double m_pairs;	///< Poloměr kruhu
	CStructures::fPoint m_circleCenter; ///< Střed v kruhu na rovině vrstvy
//MR	bool m_Overflow;						///< Příznak zda požadovaný pixel je za počtem opakování a je tak okolím
//MR	int m_type;		///< ID geometrickéo objektu 
	
	/** Vrátí vzdálenost bodu od středu kruhu
		@param[in] point - souřadnice bodu
		@return vzdálenost bodu od středu
	*/
//MR	double GetDistanceToCenter(CStructures::iPoint point);

	/** Vrátí pozici pixelu v základním umístění objektu.
		Přepočítá souřadnici aktuálního pixelu na odpovídající pixel objektu v základním umístění.
		Každý objekt je popsán analytickým popisem a umístěn na rovinu vrstvy. Poté se objekt může 
		v rovině libovolně zopakovat.

		@param[in] VirtualPosition typu CStructures::Point - souřadnice bodu v rovině vrstvy
		@return bod typu CStructures::Point v základním umístění geometrického objektu 
	*/
//MR	CStructures::iPoint GetRealPoint(CStructures::iPoint VirtualPosition); //Vrati pozici pixelu v zakladnim vzoru

public:
	CFrekvenc(char *txt=NULL); ///< Defaultni konstruktor
	
	//------- Puvodni param konstruktor --------------------
	//CSieStar(int distance, CStructures::CenterPoint circleCenter, int radius, float ObjectColor, float ObjectAlpha, float EnvColor, float EnvAlpha);
	//------------------------------------------------------

	/** Parametrický konstruktor.
		Vytvoří geometrický objekt \b kruh se zadanými parametry.
		@param circleCenter - umístění středu kruhu na rovině vzoru
		@param radius - poloměr kruhu
		
		Zbylé parametry jsou předány kostruktoru základní třdíy
		@see CPrimitiveBase parametrický konstruktor
	*/
	CFrekvenc(double distance, CStructures::fPoint circleCenter, int radius, CStructures::ARGBPixel Object, CStructures::ARGBPixel Env, const char* title = "Untitled");
	virtual ~CFrekvenc(); ///< Destruktor

	//--------- Přepsáné virtuální funkce ze základní třídy --------------//

	void SetPairs(double radius) {m_pairs = radius;}

	// vrátí jas v daném místě plochy
		virtual CStructures::ARGBPixel GetPixelValue(double Position[3]) ;
	//MRCStructures::ARGBPixel GetPixelValue(CStructures::iPoint position); //vrati hodnotu pixelu na dane pozici
//MR	int GetType(){return m_type;}
	//MR asi bude jinde ???void Translate(int dx, int dy);
	//MR asi bude jinde ???void Rotate(double gama);
/*MR v příkladu se nepoužívá	int GetRadius() const {return m_radius;} ///< Vrátí poloměr kruhu
*/
	//MR tohle by mělo být v bázi - mají to všechny třídy???void Resample(CStructures::Supersample supersample);

	//--------------------------------------------------------------------//


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


};

#endif // !defined(_CIRCLE_H_)
