Class TurtleLayer

All Implemented Interfaces:
Drawable, Fillable, Strokeable, Updatable

public class TurtleLayer extends Layer implements Strokeable, Fillable
Eine Ebene, auf der eine Turtle gesteuert werden kann, die Grafiken plottet.

Die Turtle verhält sich ähnlich zu ihren Entsprechungen in Logo oder TigerJython.

  • Field Details

  • Constructor Details

    • TurtleLayer

      public TurtleLayer()
    • TurtleLayer

      public TurtleLayer(int width, int height)
  • Method Details

    • newTurtle

      public TurtleLayer.Turtle newTurtle()
    • getTurtle

      public TurtleLayer.Turtle getTurtle()
    • getTurtle

      public TurtleLayer.Turtle getTurtle(int i)
    • setSize

      public void setSize(int width, int height)
      Description copied from class: Layer
      Ändert die Größe der Ebene auf die angegebenen Maße.
      Overrides:
      setSize in class Layer
      Parameters:
      width - Die neue Breite.
      height - Die neue Höhe.
    • draw

      public void draw(Graphics2D graphics)
      Description copied from class: Layer
      Zeichnet den Puffer auf den Grafikkontext.
      Specified by:
      draw in interface Drawable
      Overrides:
      draw in class Layer
      Parameters:
      graphics - Der Grafikkontext, auf den gezeichnet wird.
    • isVisible

      public boolean isVisible()
      Description copied from interface: Drawable
      Gibt an, ob das Objekt derzeit sichtbar ist (also gezeichnet werden muss).

      Wie mit dieser Information umgegangen wird, ist nicht weiter festgelegt. In der Regel sollte eine aufrufende Instanz zunächst prüfen, ob das Objekt aktiv ist, und nur dannDrawable.draw(Graphics2D) aufrufen. Für implementierende Klassen ist es aber gegebenenfalls auch sinnvoll, bei Inaktivität den Aufruf von draw(Graphics2D) schnell abzubrechen:

      
       void draw( Graphics2D graphics ) {
           if( !isVisible() ) {
               return;
           }
      
           // Objekt zeichnen..
       }
       
      Specified by:
      isVisible in interface Drawable
      Overrides:
      isVisible in class Layer
      Returns:
      true, wenn das Objekt sichtbar ist.
    • beginPath

      public void beginPath()
    • closePath

      public void closePath()
    • fill

      public void fill()
    • fd

      public void fd(double dist)
    • forward

      public void forward(double dist)
    • bk

      public void bk(double dist)
    • back

      public void back(double dist)
    • left

      public void left()
    • lt

      public void lt(double angle)
    • left

      public void left(double angle)
    • right

      public void right()
    • rt

      public void rt(double angle)
    • right

      public void right(double angle)
    • penUp

      public void penUp()
    • penDown

      public void penDown()
    • moveTo

      public void moveTo(double x, double y)
    • setFill

      public void setFill(Paint fill)
      Description copied from interface: Fillable
      Setzt die Füllung direkt auf das angegebene Paint-Objekt.
      Specified by:
      setFill in interface Fillable
      Parameters:
      fill - Die neue Füllung.
    • getFill

      public Paint getFill()
      Description copied from interface: Fillable
      Gibt die aktuell gesetzte Füllung zurück.

      Die Art der Füllung kann anhand der Abfragen Fillable.hasFillColor() und Fillable.hasGradient() ermittelt werden.

      Specified by:
      getFill in interface Fillable
      Returns:
      Die aktuelle Füllung.
    • setFillColor

      public void setFillColor(Color color)
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf die angegebene Farbe.
      Specified by:
      setFillColor in interface Fillable
      Parameters:
      color - Die neue Füllfarbe oder null.
      See Also:
    • getFillColor

      public Color getFillColor()
      Description copied from interface: Fillable
      Gibt die aktuelle Füllfarbe der Form zurück.
      Specified by:
      getFillColor in interface Fillable
      Returns:
      Die aktuelle Füllfarbe oder null.
    • setStrokeColor

      public void setStrokeColor(Color color)
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf die angegebene Farbe.
      Specified by:
      setStrokeColor in interface Strokeable
      Parameters:
      color - Die neue Farbe der Konturlinie.
      See Also:
    • setStrokeWeight

      public void setStrokeWeight(double weight)
      Description copied from interface: Strokeable
      Setzt die Dicke der Konturlinie. Die Dicke muss größer 0 sein. Wird 0 übergeben, dann wird keine Kontur mehr angezeigt.
      Specified by:
      setStrokeWeight in interface Strokeable
      Parameters:
      weight - Die Dicke der Konturlinie.
    • getStrokeType

      public Options.StrokeType getStrokeType()
      Description copied from interface: Strokeable
      Gibt die Art der Konturlinie zurück.
      Specified by:
      getStrokeType in interface Strokeable
      Returns:
      Die aktuelle Art der Konturlinie.
      See Also:
    • getStrokeJoin

      public Options.StrokeJoin getStrokeJoin()
      Description copied from interface: Strokeable
      Gibt die Art der Konturverbindungen zurück.
      Specified by:
      getStrokeJoin in interface Strokeable
      Returns:
      Die aktuelle Art der Konturverbindungen.
      See Also:
    • setStrokeType

      public void setStrokeType(Options.StrokeType type)
      Description copied from interface: Strokeable
      Setzt den Typ der Kontur. Erlaubte Werte sind Constants.DASHED, Constants.DOTTED und Constants.SOLID.
      Specified by:
      setStrokeType in interface Strokeable
      Parameters:
      type - Eine der möglichen Konturarten.
      See Also:
    • setGradient

      public void setGradient(Color from, Color to, Options.Direction dir)
      Description copied from interface: Fillable
      Setzt die Füllung auf einen linearen Farbverlauf, der in die angegebene Richtung verläuft.
      Specified by:
      setGradient in interface Fillable
      Parameters:
      from - Farbe am Startpunkt.
      to - Farbe am Endpunkt.
      dir - Richtung des Farbverlaufs.
    • setGradient

      public void setGradient(Color from, Color to)
      Description copied from interface: Fillable
      Setzt die Füllung auf einen kreisförmigen (radialen) Farbverlauf, der im Zentrum beginnt.
      Specified by:
      setGradient in interface Fillable
      Parameters:
      from - Farbe im Zentrum.
      to - Farbe am Rand.
    • hasFill

      public boolean hasFill()
      Description copied from interface: Fillable
      Gibt an, ob aktuell eine sichtbare Füllung konfiguriert ist.

      Eine Füllung gilt als sichtbar, wenn eine nciht transparente Füllfarbe oder ein Farbverlauf eingestellt ist.

      Specified by:
      hasFill in interface Fillable
      Returns:
      true, wenn die Füllung sichtbar ist, false sonst.
    • hasFillColor

      public boolean hasFillColor()
      Description copied from interface: Fillable
      Gibt an, ob eine Füllfarbe konfiguriert ist.

      Im Gegensatz zu Fillable.hasFill() prüft die Methode nicht, ob die Füllfarbe transparent ist.

      Specified by:
      hasFillColor in interface Fillable
      Returns:
      true, wenn eine Füllfarbe gesetzt ist.
    • hasGradient

      public boolean hasGradient()
      Description copied from interface: Fillable
      Gibt an, ob ein Farbverlauf konfiguriert ist.
      Specified by:
      hasGradient in interface Fillable
      Returns:
      true, wenn ein Farbverlauf gesetzt ist.
    • setFillColor

      public void setFillColor(Color color, int alpha)
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf die angegebene Farbe und setzt die Transparenz auf den angegebenen Wert. 0 is komplett durchsichtig und 255 komplett deckend.
      Specified by:
      setFillColor in interface Fillable
      Parameters:
      color - Die neue Füllfarbe oder null.
      alpha - Ein Transparenzwert zwischen 0 und 255.
      See Also:
    • setFillColor

      public void setFillColor(int gray)
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf einen Grauwert mit der angegebenen Intensität. 0 entspricht schwarz, 255 entspricht weiß.
      Specified by:
      setFillColor in interface Fillable
      Parameters:
      gray - Ein Grauwert zwischen 0 und 255.
      See Also:
    • setFillColor

      public void setFillColor(int gray, int alpha)
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf einen Grauwert mit der angegebenen Intensität und dem angegebenen Transparenzwert. Der Grauwert 0 entspricht schwarz, 255 entspricht weiß.
      Specified by:
      setFillColor in interface Fillable
      Parameters:
      gray - Ein Grauwert zwischen 0 und 255.
      alpha - Ein Transparenzwert zwischen 0 und 255.
      See Also:
    • setFillColor

      public void setFillColor(int red, int green, int blue)
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf die Farbe mit den angegebenen Rot-, Grün- und Blauanteilen.
      Specified by:
      setFillColor in interface Fillable
      Parameters:
      red - Der Rotanteil der Farbe zwischen 0 und 255.
      green - Der Grünanteil der Farbe zwischen 0 und 255.
      blue - Der Blauanteil der Farbe zwischen 0 und 255.
      See Also:
    • setFillColor

      public void setFillColor(int red, int green, int blue, int alpha)
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf die Farbe mit den angegebenen Rot-, Grün- und Blauanteilen und dem angegebenen Transparenzwert.
      Specified by:
      setFillColor in interface Fillable
      Parameters:
      red - Der Rotanteil der Farbe zwischen 0 und 255.
      green - Der Grünanteil der Farbe zwischen 0 und 255.
      blue - Der Blauanteil der Farbe zwischen 0 und 255.
      alpha - Ein Transparenzwert zwischen 0 und 25
      See Also:
    • noFill

      public void noFill()
      Description copied from interface: Fillable
      Entfernt die Füllung der Form.
      Specified by:
      noFill in interface Fillable
    • resetFill

      public void resetFill()
      Description copied from interface: Fillable
      Setzt die Füllfarbe auf den Standardwert zurück.
      Specified by:
      resetFill in interface Fillable
      See Also:
    • getGradient

      public MultipleGradientPaint getGradient()
      Description copied from interface: Fillable
      Gibt den aktuellen Farbverlauf der Form zurück.
      Specified by:
      getGradient in interface Fillable
      Returns:
      Der aktuelle Farbverlauf oder null.
    • setGradient

      public void setGradient(double fromX, double fromY, Color from, double toX, double toY, Color to)
      Description copied from interface: Fillable
      Setzt die Füllung auf einen linearen Farbverlauf, der am Punkt (fromX, fromY) mit der Farbe from startet und am Punkt ((toX, toY) mit der Farbe to endet.
      Specified by:
      setGradient in interface Fillable
      Parameters:
      fromX - x-Koordinate des Startpunktes.
      fromY - y-Koordinate des Startpunktes.
      from - Farbe am Startpunkt.
      toX - x-Koordinate des Endpunktes.
      toY - y-Koordinate des Endpunktes.
      to - Farbe am Endpunkt.
    • setGradient

      public void setGradient(double centerX, double centerY, double radius, Color from, Color to)
      Description copied from interface: Fillable
      Setzt die Füllung auf einen kreisförmigen (radialen) Farbverlauf, mit dem Zentrum im Punkt (centerX, centerY) und dem angegebenen Radius. Der Verlauf starte im Zentrum mit der Farbe from und endet am Rand des durch den Radius beschriebenen Kreises mit der Farbe to.
      Specified by:
      setGradient in interface Fillable
      Parameters:
      centerX - x-Koordinate des Kreismittelpunktes.
      centerY - y-Koordinate des Kreismittelpunktes.
      radius - Radius des Kreises.
      from - Farbe im Zentrum des Kreises.
      to - Farbe am Rand des Kreises.
    • noGradient

      public void noGradient()
      Description copied from interface: Fillable
      Entfernt den Farbverlauf von der Form.
      Specified by:
      noGradient in interface Fillable
    • setStroke

      public void setStroke(Stroke stroke)
      Description copied from interface: Strokeable
      Setzt den Stroke für die Konturlinie direkt.
      Specified by:
      setStroke in interface Strokeable
      Parameters:
      stroke - Ein Stroke-Objekt.
    • getStroke

      public Stroke getStroke()
      Description copied from interface: Strokeable
      Gibt ein Stroke-Objekt mit den aktuell gesetzten Eigenschaften zurück.
      Specified by:
      getStroke in interface Strokeable
      Returns:
      Ein Stroke mit den passenden Kontureigenschaften.
    • hasStroke

      public boolean hasStroke()
      Description copied from interface: Strokeable
      Gibt an, ob die aktuell gesetzten Eigenschaften eine sichtbare Konturlinie erzeugen.

      Die Konturlinie gilt als sichtbar, wenn sie eine nicht transparente Farbe und eine Dicke größer 0 besitzt.

      Das bedeutet, falls die Methode false zurückgibt, dann kann Strokeable.getStroke() trotzdem ein gültiges Stroke-Objekt zurückgeben, beispielsweise wenn keine Farbe gesetzt wurde.

      Specified by:
      hasStroke in interface Strokeable
      Returns:
      true, wenn die Konturlinie sichtbar ist, false sonst.
    • getStrokeColor

      public Color getStrokeColor()
      Description copied from interface: Strokeable
      Gibt die aktuelle Farbe der Konturlinie zurück.
      Specified by:
      getStrokeColor in interface Strokeable
      Returns:
      Die Konturfarbe oder null.
    • setStrokeColor

      public void setStrokeColor(Color color, int alpha)
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf die angegebene Farbe und setzt die Transparenz auf den angegebenen Wert. 0 is komplett durchsichtig und 255 komplett deckend.
      Specified by:
      setStrokeColor in interface Strokeable
      Parameters:
      color - Die neue Farbe der Konturlinie oder null.
      alpha - Ein Transparenzwert zwischen 0 und 255.
      See Also:
    • setStrokeColor

      public void setStrokeColor(int gray)
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf einen Grauwert mit der angegebenen Intensität. 0 entspricht schwarz, 255 entspricht weiß.
      Specified by:
      setStrokeColor in interface Strokeable
      Parameters:
      gray - Ein Grauwert zwischen 0 und 255.
      See Also:
    • setStrokeColor

      public void setStrokeColor(int gray, int alpha)
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf einen Grauwert mit der angegebenen Intensität und dem angegebenen Transparenzwert. Der Grauwert 0 entspricht schwarz, 255 entspricht weiß.
      Specified by:
      setStrokeColor in interface Strokeable
      Parameters:
      gray - Ein Grauwert zwischen 0 und 255.
      alpha - Ein Transparenzwert zwischen 0 und 255.
      See Also:
    • setStrokeColor

      public void setStrokeColor(int red, int green, int blue)
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf die Farbe mit den angegebenen Rot-, Grün- und Blauanteilen.
      Specified by:
      setStrokeColor in interface Strokeable
      Parameters:
      red - Der Rotanteil der Farbe zwischen 0 und 255.
      green - Der Grünanteil der Farbe zwischen 0 und 255.
      blue - Der Blauanteil der Farbe zwischen 0 und 255.
      See Also:
    • setStrokeColor

      public void setStrokeColor(int red, int green, int blue, int alpha)
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf die Farbe mit den angegebenen Rot-, Grün- und Blauanteilen und dem angegebenen Transparenzwert.
      Specified by:
      setStrokeColor in interface Strokeable
      Parameters:
      red - Der Rotanteil der Farbe zwischen 0 und 255.
      green - Der Grünanteil der Farbe zwischen 0 und 255.
      blue - Der Blauanteil der Farbe zwischen 0 und 255.
      alpha - Ein Transparenzwert zwischen 0 und 25
      See Also:
    • noStroke

      public void noStroke()
      Description copied from interface: Strokeable
      Entfernt die Kontur der Form.
      Specified by:
      noStroke in interface Strokeable
    • resetStroke

      public void resetStroke()
      Description copied from interface: Strokeable
      Setzt die Farbe der Konturlinie auf die Standardwerte zurück.
      Specified by:
      resetStroke in interface Strokeable
      See Also:
    • getStrokeWeight

      public double getStrokeWeight()
      Description copied from interface: Strokeable
      Gibt die Dicke der Konturlinie zurück.
      Specified by:
      getStrokeWeight in interface Strokeable
      Returns:
      Die aktuelle Dicke der Linie.