Vektorgrafik für die Joyce
TinySVG v0.23
Internationalization (gern auch als I18N abgekürzt) ist das offensichtliche neue Feature der Version 0.23; außerdem wurde intern einiges an Code umstrukturiert.
TinySVG startet nun in deutscher Sprache, wenn die Sprache des Betriebssystems auf Deutsch eingestellt ist, ansonsten in englischer Sprache. Über Optionen > Deutsch / Englisch bzw. Options > German / English kann die Sprache gewechselt werden, was dank trickreicher Programmierung ohne Neustart der Anwendung funktioniert.
TinySVG startet nun in deutscher Sprache, wenn die Sprache des Betriebssystems auf Deutsch eingestellt ist, ansonsten in englischer Sprache. Über Optionen > Deutsch / Englisch bzw. Options > German / English kann die Sprache gewechselt werden, was dank trickreicher Programmierung ohne Neustart der Anwendung funktioniert.
TinySVG v0.24
Ein Transformations-Bug ist jetzt behoben, nach dem ich lange suchen musste. Er trat beim Anwenden von Matrix-Transformationen auf, was dazu führte, dass manche Objekte in der Grafik falsch platziert (<- neue deutsche Rechtschreibung! ) wurden.
Außerdem gibt es jetzt Voreinstellungen für den Commodore 64 (auch "C64" oder "Brotkasten" genannt).
Die folgende ZIP-Datei enthält ein D64 Image mit dem C64-Programm DRAWVECTOR, mit dem VEC-Dateien auf dem C64 angezeigt werden können. Außerdem sind bereits einige VEC-Dateien zum Ausprobieren enthalten.
Außerdem gibt es jetzt Voreinstellungen für den Commodore 64 (auch "C64" oder "Brotkasten" genannt).
Die folgende ZIP-Datei enthält ein D64 Image mit dem C64-Programm DRAWVECTOR, mit dem VEC-Dateien auf dem C64 angezeigt werden können. Außerdem sind bereits einige VEC-Dateien zum Ausprobieren enthalten.
TinySVG v0.25
Version 0.25 führt ein neues Dateiformat ein: VE2 ist eine Erweiterung des VEC-Formats mit zusätzlichen Header-Informationen. Der Speicherbedarf pro Koordinate ist jetzt nicht mehr fix 2 Bytes, sondern kann je nach Zielsystem variieren. Bei der Joyce und beim C64 ist die X-Koordinate jetzt 2 Bytes groß, die Y-Koordinate aber nur 1 Byte, was zu einer Verringerung der Dateigröße um ca. 25% führt. Da weniger Daten geladen werden müssen, wird die Grafik auch schneller aufgebaut. VE2 ist jetzt das Standardformat für Schneider Joyce und C64.
Die Ausgabe des VEC-Formats wurde ebenfalls optimiert: jetzt werden i.d.R. MULTI-LINE-Befehle anstelle von LINE verwendet. Auch dadurch werden die Dateien kleiner, weil die Wiederholung des LINE-Befehls und die doppelten Koordinaten für End- und Anfangspunkt bei verbundenen Linien entfallen.
Beispiel:
Die Ausgabe des VEC-Formats wurde ebenfalls optimiert: jetzt werden i.d.R. MULTI-LINE-Befehle anstelle von LINE verwendet. Auch dadurch werden die Dateien kleiner, weil die Wiederholung des LINE-Befehls und die doppelten Koordinaten für End- und Anfangspunkt bei verbundenen Linien entfallen.
Beispiel:
Code: Alles auswählen
Bisher: Neu:
------------------------------------------------------------
LINE 0 0 100 100 MULTI_LINE 6 0 0 100 100 210 300 0 0
LINE 100 100 210 300
LINE 210 300 0 0
15 Bytes 10 Bytes
Dateiformat-Spezifikation VE2
Code: Alles auswählen
Header: 'V' 'E' '2'
uint minX minimum of all X coordinates
uint maxX maximum of all X coordinates
uint minY minimum of all Y coordinates
uint maxY maximum of all Y coordinates
uint targetResolutionX target resolution X
uint targetResolutionY target resolution Y
byte bytesXCoord number of bytes used by an x coordinate
byte bytesYCoord number of bytes used by a y coordinate
uint profileFlags bit vector where each 1 bit means the corresponding graphic object can be present in the file
00000000 00000001: Dot
00000000 00000010: Line
00000000 00000100: Box
00000000 00001000: Square
00000000 00010000: Ellipse
00000000 00100000: Circle
00000000 01000000: Multi-Dot
00000000 10000000: Multi-Line
00000001 00000000: Polygon-Fill
Example with bytesXCoord=2, bytesYCoord=2:
Byte | 0 | 1 2 | 3 4 | 5 6 | 7 8 |
-----------------------------------------------------------------------
Dot | 0 | x | y | | |
Line | 1 | x1 | y1 | x2 | y2 |
Box | 2 | xleft | ytop | xright | ybottom |
Square | 3 | xleft | ytop | width | |
Ellipse | 4 | xcenter | ycenter | xradius | yradius |
Circle | 5 | xcenter | ycenter | radius | |
Multi-Dot | 10 |#dots| x1 | y1 | x2 | ... |
Multi-Line | 11 |#dots| x1 | y1 | x2 | ... |
Polygon-Fill | 12 |#dots| x1 | y1 | x2 | ... |
End | 99 | | | | |
Space consumption:
------------------
Graphic object (Dot, Line, ...): 1 byte
Dot x: bytesXCoord bytes
y: bytesYCoord bytes
Line x1: bytesXCoord bytes
y1: bytesYCoord bytes
x2: bytesXCoord bytes
y2: bytesYCoord bytes
Box xleft: bytesXCoord bytes
ytop: bytesYCoord bytes
xright: bytesXCoord bytes
ybottom: bytesYCoord bytes
Square xleft: bytesXCoord bytes
ytop: bytesYCoord bytes
width: max(bytesXCoord, bytesYCoord) bytes
Ellipse xcenter: bytesXCoord bytes
ycenter: bytesYCoord bytes
xradius: bytesXCoord bytes
yradius: bytesYCoord bytes
Circle xcenter: bytesXCoord bytes
ycenter: bytesYCoord bytes
radius: max(bytesXCoord, bytesYCoord) bytes
Multi-Dot: #dots: 1 byte
xn: bytesXCoord bytes
yn: bytesYCoord bytes
Multi-Line: #dots: 1 byte
xn: bytesXCoord bytes
yn: bytesYCoord bytes
Polygon-Fill: #dots: 1 byte
xn: bytesXCoord bytes
yn: bytesYCoord bytes
TinySVG v0.26
Es hat lange gedauert, bis die Änderungen glattgezogen waren, aber jetzt ist die Version 0.26 fertig. Folgende Neuerungen sind enthalten:
- Der größte Brocken war die Bestimmung der min./max. Koordinaten um eine bessere Abschätzung der benötigten Liniensegmente für Kurven und Bögen zu erreichen. Die sehen jetzt viel besser aus.
- VE2-Konfigurationseinstellungen werden jetzt korrekt gespeichert.
- Die Voreinstellung "Schneider Joyce" verwendet jetzt standardmäßig das neuere (und effizientere) VE2-Format statt VEC.
- In der Konfiguration gibt es jetzt unter "Ausgabedateien" eine Schaltfläche "Profil", in dem angegeben werden kann, welche Grafikobjekte erzeugt werden sollen. Sie ersetzt die VE2-Details, die nur auf VE2-Dateien beschränkt war. Standardmäßig sind alle Grafikobjekte ausgewählt, und meist wird man das wohl auch so belassen; es ist wohl eher eine "Experten-Einstellung".
- Ein paar weitere Bugfixes, die mir gerade nicht einfallen...
VECREAD v3.1
Die Version 3.1 des Vektorgrafik-Anzeigeprogramms umfasst folgende Änderungen gegenüber der Vorversion 3.0:
- Die Pause zwischen Bildern im Diashow-Modus beträgt standardmäßig 4 Sekunden.
- Es können jetzt bis zu 100 Dateien in der Diashow angezeigt werden (wenn man so viele auf die Diskette bekommt); vorher waren es 40.
- Über die Kommandozeile kann die Pause verändert werden. Wenn man z.B. eine Pause von 10 Sekunden haben möchte, dann ruft man das Programm folgendermaßen auf: vecread3 d 10
TinySVG v0.27
In SVG-Pfaden werden horizontale und vertikale Linien mit H/V oder h/v kodiert. Normalerweise folgt ein einzelner Parameter, der den Endpunkt festlegt: die X-Koordinate bei horizontalen Linien bzw. die Y-Koordinate bei vertikalen Linien. Die Spezifikation erlaubt aber auch mehrere Koordinaten anzugeben, was eigentlich keinen Sinn macht, denn man kann mehrere aneinandergrenzende horizontale Linien auch durch eine einzige horizontale Linie darstellen - man gibt einfach gleich den letzten Endpunkt an. Entsprechendes gilt für vertikale Linien.
Trotzdem gibt es SVG-Dateien, in denen so ein Unsinn enthalten ist, und die haben die bisherigen TinySVG-Versionen nicht korrekt dargestellt. Version 0.27 behebt das.
Die Beispielgrafik zum Ausprobieren zeigt die Maske des wohl bekanntesten Pharaos: Tutanchamun.
Trotzdem gibt es SVG-Dateien, in denen so ein Unsinn enthalten ist, und die haben die bisherigen TinySVG-Versionen nicht korrekt dargestellt. Version 0.27 behebt das.
Die Beispielgrafik zum Ausprobieren zeigt die Maske des wohl bekanntesten Pharaos: Tutanchamun.
VECREAD v4.0
Die neue Version 4.0 des VEC- / VE2-Anzeigeprogramms hat dieselben Funktionen wie der Vorgänger v3.1, aber die Oberfläche ist bequemer zu bedienen, weil sie die FORM2-Bibliothek verwendet. Der Start der Diashow erfolgt über eine "Start diashow"-Schaltfläche; eine einzelne Datei wird mit der "Ok"-Schaltfläche angezeigt und es gibt eine "Cancel"-Schaltfläche zum Abbrechen.
(Dateien entfernt)
(Dateien entfernt)
VECREAD v4.1
Version 4.0 war wohl ein etwas verfrühtes Release, denn es funktionierte nicht...
Hier ist die korrigierte Version 4.1:
Hier ist die korrigierte Version 4.1: