Vektorgrafik für die Joyce

Software-Entwicklung, Compiler, Interpreter, ...
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

TinySVG v0.23

Beitrag von bbock »

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.zip
TinySVG v0.23
(121.03 KiB) 982-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

TinySVG v0.24

Beitrag von bbock »

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).

TinySVG.zip
TinySVG v0.24
(124.59 KiB) 1066-mal heruntergeladen

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.

C64-VECTORDATA1.zip
DRAWVECTOR für C64 und VEC-Dateien in D64 Image
(56.98 KiB) 1044-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

TinySVG v0.25

Beitrag von bbock »

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:

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
TinySVG.zip
TinySVG v0.25
(137.78 KiB) 955-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

Dateiformat-Spezifikation VE2

Beitrag von bbock »

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
Edit: Datentyp von profileFlags korrigiert.
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

vecread3

Beitrag von bbock »

Das Programm vecread3 unterstützt das neue Format VE2; auch das bisherige Format VEC wird weiter unterstützt.

VECREAD3_src.zip
VECREAD3 v3.0 Source
(10.45 KiB) 935-mal heruntergeladen
VECREAD3_com.zip
VECREAD3 v3.0 ausführbare COM-Datei
(10.31 KiB) 999-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

TinySVG v0.26

Beitrag von bbock »

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... :lol:
TinySVG_0.26.jar.zip
TinySVG v0.26
(140.23 KiB) 796-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

VECREAD v3.1

Beitrag von bbock »

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
VECREAD31_com.zip
VECREAD3 v3.1 ausführbare COM-Datei
(10.77 KiB) 856-mal heruntergeladen
VECREAD31_src.zip
VECREAD3 v3.1 Source
(2.31 KiB) 859-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

TinySVG v0.27

Beitrag von bbock »

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.

TinySVG_v0.27.zip
TinySVG v0.27
(140.55 KiB) 869-mal heruntergeladen
kingtut.zip
Tutanchamun
(51.37 KiB) 879-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

VECREAD v4.0

Beitrag von bbock »

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)
Benutzeravatar
bbock
Beiträge: 247
Registriert: 08.02.2015, 15:31

VECREAD v4.1

Beitrag von bbock »

Version 4.0 war wohl ein etwas verfrühtes Release, denn es funktionierte nicht...

Hier ist die korrigierte Version 4.1:

VECREAD4_src.zip
VECREAD4 v4.1 Source
(15.84 KiB) 879-mal heruntergeladen
VECREAD4_com.zip
VECREAD4 v4.1 ausführbare COM-Datei
(12.38 KiB) 871-mal heruntergeladen
Antworten