Dokumentation

This commit is contained in:
ngb 2022-06-19 22:25:25 +02:00
parent 6bc618a2df
commit dc6b7ee351
1 changed files with 26 additions and 3 deletions

View File

@ -13,17 +13,25 @@ import java.util.LinkedList;
/**
* Eine Leinwand ist die Hauptkomponente einer Zeichenmaschine. Sie besteht aus
* mehreren Ebenen, auf denen auf verschiedene Arten gezeichnet werden kann. Die
* Ebenen lassen sich beliebig übereinander aNORTHen, ausblenden oder wieder
* Ebenen lassen sich beliebig übereinander legen, ausblenden oder wieder
* löschen.
* <p>
* Jede Ebene besitzt eine Zeichenfläche, auf der ihre Zeichnung liegt. Diese
* zeichenflächen werden pro Frame einmal von "DOWN" nach "UP" auf diese
* Zeichenflächen werden pro Frame einmal von "unten" nach "oben" auf diese
* Leinwand gezeichnet.
*/
public class Zeichenleinwand extends Canvas {
/**
* Liste der hinzugefügten Ebenen.
*/
private LinkedList<Layer> layers;
/**
* Erstellt eine neue Zeichenleinwand mit einer festen Größe.
* @param width Breite der Zeichenleinwand.
* @param height Höhe der Zeichenleinwand.
*/
public Zeichenleinwand( int width, int height ) {
super.setSize(width, height);
this.setPreferredSize(this.getSize());
@ -41,7 +49,9 @@ public class Zeichenleinwand extends Canvas {
/**
* Ändert die Größe der Zeichenleinwand auf die angegebene Größe in Pixeln.
* Eine Größenänderung hat auch eine Größenänderung aller Ebenen zur Folge.
* <p>
* Bei einer Größenänderung wird auch die Größe aller bisher hinzugefügter
* {@link Layer Ebenen} angepasst, sodass sie die gesamte Leinwand füllen.
*
* @param width Neue Width der Leinwand in Pixeln.
* @param height Neue Höhe der Leinwand in Pixeln.
@ -158,10 +168,16 @@ public class Zeichenleinwand extends Canvas {
return result;
}
/**
* Erstellt eine passende {@link BufferStrategy} für diese Ebene.
*/
public void allocateBuffer() {
this.createBufferStrategy(2);
}
/**
* Löscht alle Ebenen der Zeichenebene und gibt deren Ressourcen frei.
*/
public void dispose() {
synchronized( layers ) {
for( Layer layer : layers ) {
@ -175,6 +191,10 @@ public class Zeichenleinwand extends Canvas {
render();
}
/**
* Zeichnet den Inhalt aller {@link Layer Ebenen} in den Grafik-Kontext.
* @param graphics
*/
public void draw( Graphics graphics ) {
Graphics2D g2d = (Graphics2D) graphics.create();
synchronized( layers ) {
@ -185,6 +205,9 @@ public class Zeichenleinwand extends Canvas {
g2d.dispose();
}
/**
* Zeigt den aktuellen Inhalt der Zeichenleinwand an.
*/
public void render() {
if( getBufferStrategy() == null ) {
allocateBuffer();