NAME
Quiq::Gd::Component - Basisklasse aller Component-Klassen (abstrakt)
BASE CLASS
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:
Definition der Grafik
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.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.