/* @(#) GraphicsDisplay.java 1.1 99/7/11
 * Copyright (c) 1999 Lawrence Rodrigues
 */
package com.vistech.graphics;
import java.beans.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;

/** An interface that specifies methods of a graphics canvas.
  * @version 1.0 11 july 1999
  * @author Lawrence Rodrigues
  **/

public interface GraphicsDisplay {

  /** Sets the font.
      * @param font the font.
      */
   public void setFont(Font font);
   public Font getFont();

   public void setFontSize(int size);
   public int getFontSize();

   public void setFontType(int size);
   public int getFontType();

   public void setFontStyle(int style);
   public int getFontStyle();

   public void setDrawingColor(Color drawingColor);
   public Color getDrawingColor();

   public void setFillColor(Color fillColor);
   public Color getFillColor();

   public void setTextColor(Color textColor);
   public Color getTextColor();

   public void setComposite(Composite composite);
   public Composite getComposite();

   public void setPaint(Paint paint);
   public Paint getPaint();

   public void setTransform(AffineTransform transform);
   public AffineTransform getTransform();

   public void setCapStyle(int capStyle);
   public int getCapStyle();

   public void setStrokeWidth(int wid);
   public int getStrokeWidth();

   public void setStroke(Stroke stroke);
   public Stroke getStroke();

    /** Sets the clip shape on the destination image
      * @param clipshape the shape of the clipping area
      */
   public void setClip(Shape clipshape);
   public Shape getClip();

   public void setRenderingHints(RenderingHints renderingHints);
   public RenderingHints getRenderingHints();

   public BufferedImage getDisplayedImage();
   public Graphics2D getDisplayedImageGC();

   public void repaint();

   public void reset();
   /** Adds a key listener object.
      * @param kl the KeyListener.
      */
   public void addKeyListener(KeyListener kl);

   /** Removes a key listener object.
      * @param kl the KeyListener
      */
    public void removeKeyListener(KeyListener kl);

   /** Adds a mouse listener object.
      * @param ml the MouseListener.
      */
   public void addMouseListener(MouseListener ml);

    /** Adds a mouse motion listener object.
      * @param ml the MouseMotionListener.
      */
    public void addMouseMotionListener(MouseMotionListener e);

    /** Removes a mouse listener object.
      * @param ml the MouseListener.
      */
    public void removeMouseListener(MouseListener ml);

    /** Removes a mouse motion listener object.
      * @param ml the MouseMotionListener.
      */
    public void removeMouseMotionListener(MouseMotionListener ml);

    /** Adds a PropertyChangeListener object.
      * @param pc the PropertyChangeListener object.
      */
    public void addPropertyChangeListener(PropertyChangeListener pc);

    /** Adds a VetoableChangeListener object.
      * @param vl the VetoableChangeListener.
      */
    public void addVetoableChangeListener(VetoableChangeListener vl);

    /** Removes a PropertyChangeListener object.
      * @param pc the PropertyChangeListener object.
      */
    public void removePropertyChangeListener(PropertyChangeListener pc);

    /** Removes a VetoableChangeListener object.
      * @param ml the VetoableChangeListener object.
      */
    public void removeVetoableChangeListener(VetoableChangeListener vl);

    /** Sets the cursor.
      * @param cursor the Cursor object.
      */
    public void setCursor(Cursor cursor);

    /** Draws the specified shape on the destination image
      * @param shape the shape to be drawn
      */
    public void draw(Shape shape);
}
