package classes;

import java.awt.Point;
import java.awt.geom.Point2D;

/**
 * A class for saving all points of a Object with a editable state.
 * e.g HolonElement, HolonSwitch
 * @author Tom Troppmann
 *
 */
public class UnitGraphPoint {
	/** Relative position in the UnitGraphCanvas */
	public double x,y;
	/** To determine if this point has changed to only write back points that are changed.*/
	public boolean changed;
	/** The displayed Position of the UnitGraphPoint*/
	public Position displayedPosition;
	
	/** Default Constructor */
	public UnitGraphPoint(double x, double y, boolean changed){
		this.x = x;
		this.y = y;
		this.changed = changed;
	}
	/** Constructor with a Point2D.Double*/
	public UnitGraphPoint(Point2D.Double pos, boolean changed){
		this.x = pos.getX();
		this.y = pos.getY();
		this.changed = changed;
	}
	/** Constructor with a Point2D.Double
	 * when changed not specified is false;
	 * */
	public UnitGraphPoint(Point2D.Double pos){
		this.x = pos.getX();
		this.y = pos.getY();
		this.changed = false;
	}
	
	public void calcDisplayedPosition(int border, int widthWithBorder, int heightWithBorder) {
    	//Relativ to Border
    	//1-p.y because its on the Top
		displayedPosition =  new Position((int) (x * widthWithBorder) + border, (int) ((1-y) * heightWithBorder) + border);
    }
	
	public Point.Double getPoint()
	{
		 return new Point2D.Double(x, y);
	}
	@Override
	public String toString() {
		return "[" + x + ":" + y + "]";
	}
}
