NAME

Quiq::Gd::Graphic - Basisklasse aller Graphic-Klassen (abstrakt)

BASE CLASS

Quiq::Hash

DESCRIPTION

Die von dieser Klasse abgeleiteten Klassen realisieren Grafiken oder Grafik-Elemente, die mittels GD auf ein Rasterbild gezeichnet werden können. Dies geschieht in zwei Schritten:

  1. Definition der Grafik

  2. Zeichnen der Grafik

Diese Aufteilung hat gegenüber einem direkten Zeichnen den Vorteil, dass nach Schritt 1 Eigenschaften des Grafik-Objekts abgefragt werden können, die u.U. schwer zu ermitteln sind, wie z.B. die Breite und die Höhe. Grafiken mit dynamischen Eigenschaften können dann leichter zu einem resultierenden Ganzen kombiniert werden.

Beispiel: Eine Plot-Grafik, bestehend aus Graphen, Achsen, Beschriftungen, einem Gitter usw.

Systematik

Definition eines Grafik-Objekts

  $g = $class->new(@keyVal);

Abfragen von Grafik-Eingenschaften

  $width = $g->width;
  $height = $g->height;
  ...

Zeichnen der Grafik in ein Bild

  $g->render($img,$x,$y,@keyVal); # $x,$y,@keyVal sind optional

Als Eigenschaften @keyVal können hier Eigenschaften des Bildes $img, wie z.B. Farben, gesetzt werden. Diese sind u.U. zum Zeitpunkt der Instantiierung des Grafik-Objektes noch nicht verfügbar.

Unmittelbares Zeichnen

  $class->render($img,$x,$y,@keyVal);

Ein unmittelbares Zeichnen ist auch möglich, indem die Methode render() als Klassenmethode unter Angabe aller Eigenschaften @keyVal des Grafik-Objekts aufgerufen wird.

METHODS

Klassenmethoden

self() - Liefere Instanz

Synopsis

  $self = $this->self(@keyVal);

Description

Liefere die Referenz auf das Grafik-Objekt. Die Methode self() wird in den render()-Methoden der abgeleiteten Klassen genutzt. Denn diese können sowohl als Objekt- wie auch als Klassenmethode aufgerufen werden. Die Methode sorgt dafür, dass das Objekt im Falle eines Aufrufs als Klassenmethode mit den Attributen @keyVal instantiiert wird. Andernfalls werden die Attribute auf dem bestehenden Objekt gesetzt.

Das Gerüst der Methode render() in den abgeleiteten Klassen sieht unter Verwendung der Methode self() so aus:

  sub render {
      my $this = shift;
      my $img = shift;
      my $x = shift || 0;
      my $y = shift || 0;
      # @_: @keyVal
  
      my $self = $this->self(@_);
  
      # Grafik rendern
      ...
  
      return;
  }

Objektmethoden

width() - Breite der Grafik

Synopsis

  $width = $g->width;

Description

Liefere die Breite der Grafik. Diese Basisklassenmethode liefert den Wert des Attributs width.

height() - Höhe der Grafik

Synopsis

  $height = $g->height;

Description

Liefere die Höhe der Grafik. Muss die Höhe berechnet werden, überschreibt die Subklasse die Methode.

VERSION

1.163

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.