/**
 * 
         -------- Copyright (C) [2012]  [Kristofer SCHWEIGER & Niklas FLORIAN1]---------

    This program is free software; you can redistribute it and/or modify it under the terms of the
 *  GNU General Public License as published by the Free Software Foundation; either version 2 of the License,
 *  or (at your option) any later version.
    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 *  without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *  See the GNU General Public License for more details.
 * 
    You should have received a copy of the GNU General Public License along with this program; if not, 
 *  write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA

 * 
 * For any licensing issues please contact us under following adress: Mosaik.Projekt.2012@gmail.com
 */


package dataBase.subPicture;

import java.awt.Color;
import java.io.IOException;
import java.io.Serializable;

public class PixelFloat implements Serializable {
	
	private static final long serialVersionUID = 4L;
	public float r,g,b;
	static int count = 0;
	
	/**
	 * Constructor: full
	 * @param rgb - RGB-array. Alpha ignored.
	 */
	public PixelFloat(float r, float g, float b){
		this.r = r;
		this.g = g;
		this.b = b;
		
		//if(count++ % 1000 == 0)
		//	Out.pl(" >> Pixel = "+toString());
	}
	
	/**
	 * Constructor: empty
	 */
	public PixelFloat(){
		//empty
	}
	
	/**
	 * Testing, assertion
	 * @return true if assertion (pixel values between 0 and 255)
	 */
	public boolean test(){
		return r<256 && g<256 && b<=256 &&
				r>0 && g>0 && b>0;
	}
	
	/**
	 * @return luminance within 255
	 */
	public float getLumiFull(){
		return r+g+b;
	}
	
//	/**
//	 * @return luminance within 255
//	 */
//	public short getLumi255(){
//		return (short) ((r+g+b+0.5f)/3.0f);
//	}
	
	/**
	 * Also called HSB (Hue, Saturation, Value/Brightness)
	 * @return {Hue,Saturation,Value}
	 */
	public float[] getHSV(){
		float[] hsv = new float[3];
		Color.RGBtoHSB((int)(r+0.5f), (int)(g+0.5f), (int)(b+0.5f), hsv);
		return hsv;
	}
	
	@Override
	public String toString(){
		return ""+r+"/"+g+"/"+b;
	}
	
	protected void writeObjectNew(java.io.ObjectOutputStream out) throws IOException {
		out.writeFloat(r);
		out.writeFloat(g);
		out.writeFloat(b);
	}
	protected PixelFloat readObjectNew(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
		r=in.readFloat();
		g=in.readFloat();
		b=in.readFloat();
		
		//if(count++ % 1000 == 0)
		//	Out.pl(" >> Pixel = "+toString());
		
		return this;
	}
}
