package org.uoc.pac3.DroidEye;

import org.opencv.core.Point;
import org.opencv.core.Scalar;

/**
 * @author Jordi Anducas Aregall
 * 
 *Aquesta classe es derivada de coin, això és així perque
 *volem emmagatzemar la seva posició en la pantalla
 *En ella, si està activat el metode de reconeixement serverix
 *per buscar de quin tipus de moneda es tracta.
 *Això es fa creant una instancia de la classe monedes teòriques
 *i fent una busqueda simple per saber quina és la moneda que 
 *millor encaixa en l'esquema.
 *
 */
public class CoinResult {
	
	private Coin mCoin;
	private Point mCenter;

	
	
	CoinResult(Point Center,int Radius,Scalar Color, int RecognizeType)
	{
		mCoin=new Coin("",Radius,Color);
		mCenter=Center;
		
		//---------------------------------
		//Només tenim que buscar la moneda quan estem segurs que estem a la posició correcta.
		//Per tant l'usuari ha seleccionat que vol reconèixer
		if(RecognizeType==2)
		{
			//Busquem quin és el nom de la moneda
			CoinsTeoric mCoinsTeoric;
			mCoinsTeoric=new CoinsTeoric();
			String mName=mCoinsTeoric.CompareCoins(mCoin);
			mCoin.SetName(mName);
			//---------------------------------
		}
	}
	
	public Point getCenter()
	{
		return mCenter;
	}
	
	public int getRadius()
	{
		return mCoin.getRadius();
	}

	
	public Scalar getColor()
	{
		return mCoin.getColor();
	}

	
	public String GetTypeCoin()
	{
		return mCoin.GetName();
	}
	
	public String GetNameCoin()
	{
		String mstr=mCoin.GetName();
		if(mstr.compareTo("1c")==0)
			mstr="1 cent";
		else if(mstr.compareTo("2c")==0)
			mstr="2 cent";
		else if(mstr.compareTo("5c")==0)
			mstr="5 cent";
		else if(mstr.compareTo("10c")==0)
			mstr="10 cent";
		else if(mstr.compareTo("20c")==0)
			mstr="20 cent";
		else if(mstr.compareTo("50c")==0)
			mstr="50 cent";
		else if(mstr.compareTo("1e")==0)
			mstr="1 euro";
		else if(mstr.compareTo("2e")==0)
			mstr="2 euro";
		
		
		return mstr;
	}
	

	public String toString()
	{
		String mstr;
		Scalar mScalar= mCoin.getColor();
		mstr=mCoin.GetName() + " x=" +  mCenter.x + " y=" +  mCenter.y + " r=" +  mCoin.getRadius() + " " + (int)mScalar.val[0] + " " + (int)mScalar.val[1] + " " + (int)mScalar.val[2];
		return  mstr;
	}
}
