import java.awt.*;
import java.awt.event.*;

public class minipaint1Canvas extends Canvas
{

  private int iBreite;
  private int iHöhe;
  private Image imBild;
  private Graphics grGrafik;

  private int modus;
  private int xStart,yStart;


  //Konstruktor
  public minipaint1Canvas(int iBreite, int iHöhe)
  {
    this.iBreite=iBreite;
    this.iHöhe=iHöhe;
    this.setSize(iBreite,iHöhe);
    this.addMouseListener(new minipaint1MouseListener());
    this.addMouseMotionListener(new minipaint1MouseMotionListener());
  }

  public void init()
  {
    imBild=createImage(iBreite,iHöhe);
    grGrafik=imBild.getGraphics();
  }

  public void paint(Graphics g)
  {
    g.drawImage(imBild,0,0,this);
  }

  public void update(Graphics g)
  {
    paint(g);
  }

  public void Punkt()
  {
    modus=1;
  }

  public void Freihand()
  {
    modus=5;
  }

  public void Löschen()
  {
    grGrafik.setColor(Color.white);
    grGrafik.fillRect(0,0,iBreite,iHöhe);
    grGrafik.setColor(Color.black);
    repaint();
  }

  class minipaint1MouseListener extends MouseAdapter
  {

    public void mousePressed(MouseEvent event)
    {
      int x = event.getX();
      int y = event.getY();
      switch (modus)
      {
        case 1:
          grGrafik.fillOval(x-1,y-1,3,3);
          break;
        default:
          xStart=x;
          yStart=y;
      }
      repaint();
    }
  }

  class minipaint1MouseMotionListener extends MouseMotionAdapter
  {

    public void mouseDragged(MouseEvent event)
    {
      int x = event.getX();
      int y = event.getY();
      if (modus==5)
      {
        if (x!=xStart && y!=yStart)
        {
          grGrafik.drawLine(xStart,yStart,x,y);
          xStart=x;
          yStart=y;
        }
      }
      repaint();
    }

  }
}