import java.awt.*;

/**
 *Clase que permite implementar distintas formas en el plano cartesiano.
 *@author Patricio A. Castillo Pizarro - Eric C. Maldonado Olguin
 *@version 2.0 - Jun 26th, 2007
 */
public abstract class Forma 
{
    /**Metodo que permite dibujar la forma en el Graphics2D dado en parametro.
     *@param grafico Graphics2D donde se dibuja la forma.
     */
    public abstract void paintComponent(Graphics2D g);
    
    /**Metodo que verifica si el punto pertenece a algun cuadrado de manipulacion de la figura.
     *@param punto Punto que es verificado.
     */
    public abstract boolean isOn(Point punto);
    
    /**Metodo que verifica si el punto pertenece a algun cuadrado de manipulacion de datos de la figura.
     *@param punto Punto que es verificado.
     */
    public abstract boolean isOnD(Point punto);
    
    /** Metodo que habilita el atributo manipulable de la forma en verdadero o falso.
     * @param b Valor booleano de manipulable.
     */
    public abstract void setManipulable(boolean b);
    
    /**Metodo que permite Trasladar la forma, es decir, cambia su ubicacion desplazandola en el plano cartesiano.
     *@param deltaX Medida horizontal de la traslacion.
     *@param deltaY Medida vertical de la traslacion.
     */
    public abstract void trasladar(double deltaX, double deltaY);
    
    /**Entrega el codigo NQC de la forma.
     *@return Programa asociado a la forma.
     */
    public abstract String getProgram();
    
    /**Entrega los Datos que definen a la forma.
     *@return Atributos de la forma.
     */
    public abstract String getData();
    
    /**Setea Parametros que definen a la forma.
     *@
     */   
    public abstract void setParametro(String a);
    public abstract void  setFrecuencia(int a);
    public abstract void  setTiempo(int a);
    public abstract void  setPower(int a);
    public abstract void  setMessage(int a);
    public abstract void  setOuts(String a);
    public abstract void setSound(String a);
    public abstract void setNqc(String a);
    
    
    
    //Variable que determina si la forma esta seleccionada.
    public boolean selected;
    //Variables que indican el centro de la forma.
    public double x,y;
    public Point centro_forma;
}
