// obdelnik.cpp: implementation of the CRectan class.
//
//////////////////////////////////////////////////////////////////////
/** \file obdelnik.cpp

	\brief implementace třídy CRectang
*/
#include "stdafx.h"
#include "obdelnik.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
//#define new DEBUG_NEW
#endif


IMPLEMENT_DYNAMIC(CRectang, CPrimitiveBase)

	CRectang::CRectang(char *txt ):CPrimitiveBase(txt),rect_width(0), rect_height(0) 
        {
			TRACE("-- Entering CRectang constructor --\n");
		}

CRectang::~CRectang()
{
	

	#ifdef _DEBUG
		Dump(afxDump);
	#endif // _DEBUG
		
		TRACE("-- Leaving  CRectan destructor --\n");
}

CStructures::ARGBPixel CRectang::GetPixelValue(double Position[3]) 
{ // vstupem je průmět bodu v rovině vzoru
	
// zjistím hodnotu jasu v daném bodě 
	CStructures::ARGBPixel pixel;
	 pixel.A = -1;	 pixel.R = -1;	 pixel.G = -1;	 pixel.B = -1; 

// nejdříve se dostat do "základního" čtverce - v něm zjistit souřadnice bodu
	 double x = Position[0], y = Position[1];
	 if (x < 0) x *= -1;
	 if (y < 0) y *= -1;
	 int ix = x / (m_XPeriod/2); // musí být v první půlperiodě, protože okno je symetrické
	 ix = (ix +1)/2;
	 
	 int iy = y / (m_YPeriod/2);
	 iy = (iy +1)/2;
	 double px = x - ix *(m_XPeriod/1);
	 double py = y - iy *(m_YPeriod/1);
	 //if (Position[0] < 0) px *= -1;
	 //if (Position[1] < 0) py *= -1;
	 // zjistit "barvu" v daném bodě (px,py) základního čtverce 
	 //px = Position[0]; py = Position[1];if (px < 0) px *= -1;	 if (py < 0) py *= -1;
	 if  ((px > rect_width/2) || (px < -rect_width/2) )
		 return m_EnvColor;
	 if  ((py > rect_height/2) || (py < -rect_height/2) )
		 return m_EnvColor;


	 return m_ObjectColor;
}

//dumping objektu
#ifdef _DEBUG
void CRectang::Dump(CDumpContext& dc) const
{
	CPrimitiveBase::Dump(dc);
	dc << "Width = " << rect_width <<
		"\n Height = " << rect_height <<
		"\n\n";  
}
#endif // _DEBUG