Vektorgrafik für die Joyce

Software-Entwicklung, Compiler, Interpreter, ...
Benutzeravatar
bbock
Beiträge: 118
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) 29-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 118
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) 47-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) 30-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 118
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) 13-mal heruntergeladen
Benutzeravatar
bbock
Beiträge: 118
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
byte 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
Benutzeravatar
bbock
Beiträge: 118
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) 11-mal heruntergeladen
VECREAD3_com.zip
VECREAD3 v3.0 ausführbare COM-Datei
(10.31 KiB) 13-mal heruntergeladen
Antworten