/*
 * @(#)ZPoint.java
 *
 * Copyright 2001 by Intelligent Technology Inc. All rights reserved.
 */
package jp.co.iti.fagot.geom;

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

/**
 * geomパッケージは、Java基本データクラス(基本属性double)を利用しやすく
 * クラス使用時の名称短縮のためと、Undoable属性追加のために利用する。
 *
 * Point
 *
 * @author  福島康治
 * @version 1.01 2001/01/07
 *
 */
public class ZPoint extends Point2D {
	/**
	 * コンストラクタ
	 */
	public ZPoint() {
	}

	/**
	 * コンストラクタ
	 */
	public ZPoint(double x, double y) {
	this();
	setLocation(x,y);
	}

	/**
	 * コンストラクタ
	 */
	public ZPoint( Point pt ) {
	this();
	setLocation(pt.x,pt.y);
	}

	/**
	 * コンストラクタ
	 */
	public ZPoint( Point2D pt ) {
	this();
	setLocation(pt.getX(),pt.getY());
	}

	/**
	 * デバッグ
	 */
	public String toString() {
	return new String("jp.co.iti.fagot.geom.ZPoint:" + 
					  "x="      + getX() + "," +
					  "y="      + getY() ) ;
	}
	//## オーバライド #################################################
	/**
	 * X座標の取得
	 */
	public double getX() {
	return this.x;
	}

	/**
	 * Y座標の取得
	 */
	public double getY() {
	return this.y;
	}

	/**
	 * 座標の設定
	 */
	public void setLocation(double x, double y) {
	setX(x);
	setY(y);
	}

	//## 追加メソッド #################################################
	/**
	 * 移動
	 */
	public void translate(double x, double y) {
	setLocation(getX()+x,getY()+y) ;
	}

	/**
	 * 移動
	 */
	public void translate( ZPoint pt) {
	translate( pt.getX(), pt.getY() );
	}

	/**
	 * 加算
	 */
	public ZPoint plus( ZPoint pt ) {
	ZPoint ret = new ZPoint( this );
	ret.translate( pt.getX(), pt.getY() ) ;
	return ( ret ) ;
	}

	/**
	 * 減算
	 */
	public ZPoint minus( ZPoint pt ) {
	ZPoint ret = new ZPoint( this );
	ret.translate( -pt.getX(), -pt.getY() ) ;
	return ( ret ) ;
	}

	//## FAGOT ########################################################
	/**
	 * X座標の設定
	 */
	public void setX( double x ) {
	this.x = x;
	}

	/**
	 * Y座標の設定
	 */
	public void setY( double y ) {
	this.y = y;
	}

	//## アトリビュート ###############################################
	/**
	 * X座標
	 */
	protected double x;

	/**
	 * Y座標
	 */
	protected double y;
}
