Aus Linux-Magazin 11/2004

Das Grafikformat SVG - Struktur und Praxis (Seite 3)

KDE 3.2 unterstützt auch einfache Skripte durch SVG-DOM (siehe Kasten “SVG und DOM”). Die Implementierung ist noch nicht vollständig, funktioniert jedoch schon ganz gut.

SVG und DOM

DOM (Document Object Model) bezeichnet eine Hierarchie von Objekten eines Dokuments. Darüber lassen sich Elemente einer Grafik eindeutig ansprechen. DOM ist nicht auf SVG oder XML beschränkt, sondern findet sich in vielen verwandten Formaten, zum Beispiel in HTML.

Das SVG-DOM ermöglicht es, die Grafik per Skript oder Programm zu verändern, aber auch die Reaktion auf Ereignisse wie zum Beispiel Mausklicks. Einige der Ereignisse, die unter SVG unterstützt werden, fasst die Tabelle 2 zusammen. Das DOM bietet außerdem Methoden und Objekte, die Elemente zur Laufzeit erzeugen.

Tabelle 2:
SVG-Ereignisse

 

Ereignis

Ursache

onclick

Mausklick

onmousedown

Maustaste gedrückt

onmouseup

Maustaste losgelassen

onfocusin

Element wird selektiert

onfocusout

Element wird deselektiert

onmouseover

Zeiger bewegt sich über dem Element

Auch die Gnome-Leute waren nicht untätig. Die Entwicklung für volle SVG-Unterstützung geht voran und ist mit Gnome 2.8 geplant. Die Librsvg[7] ist eine der führenden Implementierungen des SVG-Standards. Die Bibliothek hat die Version 2.7 erreicht und enthält versuchsweise den eigenen Viewer namens »rsvg-view« sowie ein Plugin für Mozilla. Die Zeichenprogramme Sodipodi[8] und Incscape[9] nutzen SVG sogar als bevorzugtes Speicherformat, siehe Abbildung 4. Beide Projekte verwenden die Librsvg.

Abbildung 4: Inkscape bietet viele Funktionen, die Benutzer anderer Zeichenprogramme kennen. Neben (gezippten) SVGs speichert Inkscape auch Postscript und EPS.

Abbildung 4: Inkscape bietet viele Funktionen, die Benutzer anderer Zeichenprogramme kennen. Neben (gezippten) SVGs speichert Inkscape auch Postscript und EPS.

Software-Unterstützung

SVG-Grafiken lassen sich sogar, wie in Listing 1 zu sehen ist, in einem einfachen Texteditor schreiben. Auch Skriptsprachen eignen sich gut dafür. So gibt es beispielsweise für Perl ein SVG-Modul, das die Aufgabe noch einmal vereinfacht. Grafikprogramme wie Open Office Draw und Gimp unterstützen mittlerweile ebenfalls das SVG-Format. Auch das unter Unix beliebte Grafikpaket Image Magick[10], das unter anderem die Programme »display« und »convert« enthält, hat seine SVG-Unterstützung wesentlich verbessert.

XML + XSLT = SVG

Immer mehr Datensätze werden in XML-Formaten gespeichert, die Daten besser strukturieren. Mit XSLT (extensible Stylesheet Language Transformations) lässt sich XML in andere Formate umwandeln. Damit werden auch aus XML-Daten SVG-Grafiken. Listing 2 zeigt eine XML-Datei, die Bevölkerungszahlen verschiedener Länder angibt. Über eine XSLT-Datei (»nations.xslt«, zu finden auf dem Server des Linux-Magazins[13]) wandelt ein XSLT-Prozessor die Rohdaten in ein SVG-Spaltendiagramm um. Folgender Aufruf benutzt dafür das Programm Saxon[11]:

saxon nations.xml nations_populations.xslt > populations.svg

Die erzeugte Grafik in Konqueror zeigt Abbildung 5. Unter[12] ist ein weiteres Beispiel mit SVG und XSLT mehr im Detail beschrieben.

Eine SVG-Grafik kann einen oder mehrere Pfade enthalten, die nicht direkt sichtbar sind. Sie legen stattdessen den Weg anderer Objekte wie Texte oder Animationen fest.

Listing 2:
XML-Beispieldatei

01 <?xml version="1.0" ?>
02 <!DOCTYPE nations SYSTEM "nations.dtd">
03 <nations>
04   <caption>
05     <heading>Population</heading>
06     <subheading>In millions, broken down by nation</subheading>
07   </caption>
08   <nation>
09     <name>USA</name>
10     <population>287.7</population>
11   </nation>
12   <nation>
13     <name>Indonesia</name><c>14     <population>213.6</population>
15   </nation>
16   <nation>
17     <name>Japan</name>
18     <population>127.1</population>
19   </nation>
20   <nation>
21     <name>Germany</name>
22     <population>82.5</population>
23   </nation>
24   <nation>
25     <name>United Kingdom</name>
26     <population>59.9</population>
27   </nation>
28 </nations>
Abbildung 5: Konqueror zeigt das Ergebnis der Umwandlung der XML-Daten aus Listing 2 über XSLT ins SVG-Format.

Abbildung 5: Konqueror zeigt das Ergebnis der Umwandlung der XML-Daten aus Listing 2 über XSLT ins SVG-Format.

Zeichenpfade

Ein Pfad wird durch das »path«-Tag definiert, mit den Wegkoordinaten im Attribut »d«. Die Koordinatenpaare beginnen jeweils mit einem Buchstaben. Ein M steht für Move und verschiebt den aktuellen Punkt, ohne dass dieser Weg Teil des Pfades wird. Ein L fügt in absoluten Koordinaten einen unsichtbaren Linienzug vom letzten gesetzten Punkt zum Pfad hinzu. Der Buchstabe l macht dasselbe mit relativen Koordinaten. Das folgende Element legt einen Pfad vom Ursprung zum Punkt (100, 100) und dann zu (105, 200) an:

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben