Muster
<< < > >> > Hauptteil > Elemente > zur Darstellung > Muster

In den nächsten drei Kapiteln werden nun die Elemente beschrieben, die - geschickt eingesetzt - sehr mächtige Layout-Instrumente sein können. Die Techniken werden denjenigen, die bereits ein wenig Erfahrung mit Grafikprogrammen gesammelt haben, sehr bekannt vorkommen.

Zuerst haben wir da die Muster. Hier wird eine Vorlage geschaffen, die dann in einem Element, z. B. einem Rechteck, als Füllung oder (eher unüblich, aber möglich) als Kontur benutzt werden kann. Die Vorlage wird dann auf die gesamte Fläche des Elements repliziert oder - wie oft auch gesagt - "gekachelt". Im Beispiel 23 besteht die Vorlage aus einem mehreren Rechtecken, die zusammen ein von oben betrachtetes Stück Schokolade ergeben. Auf ein Rechteck angwendet ergibt das Muster eine volle Tafel Schokolade.

Die Vorlage oder das pattern wird natürlich innerhalb des <defs>-Elementes definiert. Umschlossen vom <pattern>-Tag können beliebige Elemente zur Vorlage zusammengestellt werden (wie im Beispiel 23 das Rechteck und die vier Pfade). Das <pattern>-Tag gibt allerdings die Ausmaße vor: über die Attribute x, y, width und height wird das Rechteck definiert, das dann als Kachel benutzt wird, unabhängig davon, welche Ausmaße die Elemente in der pattern-Definition eigentlich haben. Werden die Attribute nicht gesetzt, wird automatisch der Wert 0 angenommen. Wenn die <pattern>-Definition also einen Sinn haben soll, sollten zumindest die Attribute width und height mit sinnvollen Werten belegt werden.

Will man das gleiche Muster wieder als Muster verwenden, dabei vielleicht mit anderen Parametern für <pattern>, kann man auch direkt mit xlink:href="#altesMuster" auf die id des zu benutzenden Musters verweisen. Das wird auch in Beispiel 24 verwendet, weiter unten wird darauf verwiesen.

Durch die zwei zusätzlichen Werte objectBoundingBox (default) und userSpaceOnUse des Attributs patternUnits wird festgelegt, wie die Werte von x, y, width und height interpretiert werden sollen.
Bei objectBoundingBox werden relative Werte (Prozentangaben) erwartet, die sich auf das Koordinatensystem des zu füllenden Elements beziehen.
Durch Verwendung von userSpaceOnUse werden die Werte als absolute Werte im Koordinatensystem des zu füllenden Elements interpretiert, der Unterschied wird in Beispiel 24 demonstriert.

Als letztes <pattern>-spezifisches Attribut wäre dann noch patternTransform zu nennen. Dieses Attribut akzeptiert dieselben Werte wie ein einfaches transform-Attribut und bewirkt, dass jene Transformation für jedes Pattern einzeln angewendet wird. Das Resultat ist aber stets ein flächendeckendes Muster, Beispiel 25 zeigt dies anhand einer komplexen Transformation des Schokoladenmusters.