/*
Datei............: Aufg1411.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 25.11.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 14.11
Kommentare.......:

Die Hauptaufgabe, das Zeichnen des "E", wird in dieser Musterlösung
durch die Methode drawE erledigt. Sie konstruiert einen Polygonzug,
der durch Aufruf von fillPolygon in der aktuellen Zeichenfarbe
ausgegeben und gefüllt wird. Die Konstruktion des Polygons beginnt
in der linken unteren Ecke und wird dann im Uhrzeigersinn fortgesetzt.
Die Höhe eines Arms beträgt 1/5 der Gesamthöhe, die Breite 1/3 der
Gesamtbreite. 

Aufgabe der paint-Methode ist es lediglich, die Größe des nutzbaren
Bereichs des Fensters zu bestimmen und drawE zweimal hintereinander
zunächst mit schwarzer und dann mit roter Farbe auszurufen. Der
Schatteneffekt entsteht dadurch, daß das schwarze "E" um die mit
der Konstante SHADOWSIZE festgelegte Konstante verschoben wird.
*/
import java.awt.*;
import java.awt.event.*;

public class Aufg1411
extends Frame
{
  //Konstanten
  final int MARGIN = 10;
  final int SHADOWSIZE = 5;

  //Instanzmerkmale
  int arData[] = {10, 23, 44, 14, 6, 3, 9};

  public static void main(String[] args)
  {
	Aufg1411 wnd = new Aufg1411();
	wnd.setSize(300,200);
	wnd.setVisible(true);
  }

  public Aufg1411()
  {
	super("Aufg1411");
	addWindowListener(
      new WindowAdapter() {
	    public void windowClosing(WindowEvent event) {
		  System.exit(0);
		}
	  }
	);
	setBackground(Color.white);
  }

  public void paint(Graphics g)
  {
	int maxheight = getSize().height - getInsets().top - getInsets().bottom;
	int maxwidth  = getSize().width  - getInsets().left - getInsets().right;
	//Schwarzer Schatten um SHADOWSIZE Pixel versetzt
	g.setColor(Color.black);
	drawE(
      g, 
	  getInsets().left + MARGIN + SHADOWSIZE,
	  getInsets().top  + MARGIN + SHADOWSIZE,
	  maxwidth - 2 * MARGIN,
	  maxheight - 2 * MARGIN
	);
	//Rotes "E"
	g.setColor(Color.red);
	drawE(
      g, 
	  getInsets().left + MARGIN,
	  getInsets().top  + MARGIN,
	  maxwidth - 2 * MARGIN,
	  maxheight - 2 * MARGIN
	);
  }

  public void drawE(Graphics g, int left, int top, int width, int height)
  {
	//Polygon unten links beginnen und im Uhrzeigersinn konstruieren
	Polygon p = new Polygon();
	p.addPoint(left, top + height);
	p.addPoint(left, top);
	p.addPoint(left + width, top);
	p.addPoint(left + width, top + height * 1 / 5);
	p.addPoint(left + width * 1 / 3, top + height * 1 / 5);
	p.addPoint(left + width * 1 / 3, top + height * 2 / 5);
	p.addPoint(left + width * 2 / 3, top + height * 2 / 5);
	p.addPoint(left + width * 2 / 3, top + height * 3 / 5);
	p.addPoint(left + width * 1 / 3, top + height * 3 / 5);
	p.addPoint(left + width * 1 / 3, top + height * 4 / 5);
	p.addPoint(left + width, top + height * 4 / 5);
	p.addPoint(left + width, top + height);
	//Polygon ausgeben
	g.fillPolygon(p);
  }
}


