Die Suche ergab 112 Treffer

von bbock
13.03.2021, 16:22
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

TinySVG v0.7

Diese Version hat eine Vielzahl an Überarbeitungen erfahren. Die Transformationen, die auf mehreren Ebenen auftreten und zusätzlich noch verkettet werden können, werden jetzt korrekt berechnet, insbesondere auch in der korrekten Reihenfolge (von rechts nach links und von innen nach außen). Die zulässigen Transformationsfunktionen (translate, rotate, scale, skew_x, skew_y, matrix) werden jetzt alle unterstützt. Dadurch werden jetzt mehr SVG-Grafiken korrekt umgewandelt.

Für den ZX-Eiermaler gibt es neue Funktionen:
  • Sortierung nach verbundenen Linen, damit Linienzüge möglichst ohne Abzusetzen durchgezeichnet werden.
  • Vermeidung des Anhebens des Zeichenstifts, wenn Punkte sehr nahe beieinander liegen.
  • Das Koordinatensystem hat den Ursprung jetzt in der linken unteren Ecke; dadurch sind die Grafiken nicht mehr vertikal gespiegelt.
TinySVG.zip
TinySVG v0.7
(84.9 KiB) 71-mal heruntergeladen
von bbock
08.03.2021, 13:47
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

TinySVG v0.6

Neu in Version 0.6:
  • Line reducer feature: entfernt überflüssige Linien. Dies sind zum einen Linien, die nur einen Punkt groß und mit einer anderen Linie verbunden sind. Zum anderen werden verbundene Linien, die dieselbe Steigung haben, zu einer einzigen verschmolzen. Das reduziert die Dateigröße und steigert die Performance, ohne die Grafik zu verändern.
  • Neue Ausgabeformate: Egg Painter (für den ZX-Eiermaler), ZXCNC, HP-GL
  • Wählbare Ziel-Auflösungen: 720x256 (Schneider Joyce), 256x192 (ZX Spectrum), 240x800 (ZX-Eiermaler)
  • Kleine Korrekturen für das Scaling von Kreisen und Ellipsen
TinySVG.zip
TinySVG v0.6
(83.63 KiB) 98-mal heruntergeladen
von bbock
28.02.2021, 23:10
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

TinySVG v0.5

Viele Änderungen gibt es in Version 0.5, aber es wird weitere geben! Wenn das Programm m.E. "feature complete" ist, dann seht ihr das an der Versionsnummer 1.0. Folgende Änderungen sind in die neue Version eingeflossen:
  • Um die Hierarchien von Transformationen korrekt unterstützen zu können, war eine größere Umstellung der internen Datenstrukturen erforderlich (Baumstrukturen, wo bisher Listen ausreichten).
  • Zur Verbesserung der Genauigkeit der Abbildung werden jetzt alle Werte als double geführt (float hätte eigentlich genügt, bringt aber keine Vorteile).
  • Ein Fehler mit center und resize wurde behoben.
  • Einzelne Pixel am Rand werden nicht mehr abgeschnitten.
TinySVG.zip
TinySVG v0.5
(69.32 KiB) 86-mal heruntergeladen
von bbock
14.02.2021, 22:19
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

TinySVG v0.4

Version 0.4 behebt Fehler bei der Aktivierung von Optionen und erlaubt die Einstellung des "Bézier-Faktors": es kann eine Wert zwischen 1 und 50 eingestellt werden; kleinere Werte erzeugen glattere Kurven, aber auch mehr Linien, was wiederum die Dateigröße erhöht.

TinySVG.zip
TinySVG v0.4
(59.95 KiB) 76-mal heruntergeladen
von bbock
11.02.2021, 11:49
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

TinySVG v0.3

TinySVG speichert nun zwei Dateien im selben Verzeichnis, in der sich auch die Programmdatei TinySVG.jar befindet: eine Log-Datei (TinySVG.log) und eine Konfigurationsdatei (TinySVG.properties). Die Konfigurationsdatei wird beim Start des Programms gelesen und beim Beenden aktualisiert. So bleiben einmal gewählte Einstellungen erhalten.

Wichtigste Änderungen in Version 0.3:
  • Konfigurationsdatei TinySVG.properties: Hier sind die Einstellungen aus dem Options-Menü und der aktuelle Pfad zu den SVG-Dateien hinterlegt.
  • Options > Center: zentriert die Grafik auf dem Bildschirm
  • Options > Resize: passt die Größe der Grafik so an, dass sie den Bildschirm ausfüllt. Die Anpassung ist verzerrungsfrei, d.h. das Seitenverhältnis (aspect ratio) der Grafik wird nicht verändert.
  • Options > Bézier curve approximation: Nähert die in Path-Objekten enthaltenen Bézier-Kurven durch Liniensegmente an, damit die Kurven "rund" aussehen und nicht "eckig". Die Anzahl der Liniensegmente wird automatisch abhängig von der Entfernung der jeweiligen Anfangs- und Endpunkte der Bézier-Kurven gewählt. Dadurch wird ein guter Kompromiss zwischen der Anzahl der Linien und der Darstellungsqualität erreicht. Derzeit werden nur kubische Bézier-Kurven unterstützt (Kommando "CurveTo" bzw. "C" / "c"); das sind aber die am häufigsten anzutreffenden Varianten.
TinySVG.zip
TinySVG v0.3
(57.24 KiB) 103-mal heruntergeladen
von bbock
06.02.2021, 17:51
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

TinySVG v0.2

TinySVG Version 0.2 ist eine größere interne Überarbeitung. Sie unterstützt jetzt die Funktion "scale" im transform-Attribut, so dass einige Grafiken besser dargestellt werden.

TinySVG.zip
TinySVG v0.2
(50.79 KiB) 91-mal heruntergeladen
von bbock
01.02.2021, 23:37
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

Re: Vektorgrafik für die Joyce

Ein kleines Update: VECREAD Version 1.2 löscht auch die Statuszeile, damit am unteren Bildschirmrand nicht Reste von voher gezeichneten Grafiken zurückbleiben.

VECREAD12_src.zip
VECREAD V1.2 Source
(9.04 KiB) 84-mal heruntergeladen
VECREAD12_com.zip
VECREAD V1.2 ausführbare COM-Datei
(9.67 KiB) 68-mal heruntergeladen
von bbock
31.01.2021, 22:52
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

Re: Vektorgrafik für die Joyce

Hallo Paul,

also, auf meinem MacBook Pro startet TinySVG einwandfrei; ich habe ebenfalls Mojave installiert. Da stimmt wohl etwas nicht mit deiner Java-Installation? Oder mit den Sicherheitseinstellungen?

Wie auch immer: anbei die VEC-Datei wie gewünscht.
PuffinVEC.zip
Puffin.vec
(17.81 KiB) 92-mal heruntergeladen
von bbock
31.01.2021, 19:39
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

Re: Vektorgrafik für die Joyce

TinySVG ist noch in einer frühen Entwicklungsphase und unterstützt eine Reihe von SVG-Features noch nicht, darunter (die Liste ist nicht vollständig):
  • CSS Code, inbes. Style
  • Dateien, die nicht XML-konform sind
  • Transformationen außer "translate"
  • Wiederverwendung (<use> tag)
  • Diverse Kurven in Path-Objekten (diese werden durch gerade Linien angenähert)
Dennoch lassen sich bereits eine ganze Reihe von SVG-Dateien mit brauchbaren Ergebnissen umwandeln.

Hier ein Beispiel:
Puffin.svg.zip
SVG-Datei Puffin.svg
(85.43 KiB) 119-mal heruntergeladen
PuffinJoyce.png
PuffinJoyce.png (38.86 KiB) 2081 mal betrachtet
Puffin.jpg
Puffin.jpg (35.22 KiB) 2081 mal betrachtet
von bbock
31.01.2021, 13:36
Forum: Programmierung
Thema: Vektorgrafik für die Joyce
Antworten: 44
Zugriffe: 7174

Vektorgrafik für die Joyce

Wir haben bereits ein schönes Grafikpaket für die Joyce, mit dem man Linien, Kreise, Ellipsen usw. zeichnen kann. Ich dachte, damit könnte man doch Vektorgrafiken auf die Joyce zaubern, denn es gibt bereits eine Vielzahl von Dateien in diversen Vektorgrafik-Formaten, und die müsste man nur so umwandeln, dass sie auf einfache Weise auf der Joyce zu verarbeiten sind.

Schritt 1: Ein Vektorgrafikformat für die Joyce

Das Vektorformat ist an den Möglichkeiten unserer Grafikbibliothek ausgerichtet. Die Dateien sollen die Endung .VEC haben; jede Datei beginnt zudem mit einem Header mit den ASCII-Zeichen 'V', 'E', 'C'. Jedes Grafikobjekt wie Linie, Kreis, usw. wird mit einem Code (1 Byte) eingeleitet, dann folgen die Punktkoordinaten / Radien als Parameter. Alle Parameter sind im 2-Byte little endian Format abgelegt, d.h. das niederwertige Byte kommt zuerst. Das letzte Byte der Datei ist die 99 (alle Angaben in dezimal).

Code: Alles auswählen

Header: 'V' 'E' 'C'
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 |            |            |            |            |
Schritt 2: Ein Programm zum Anzeigen von VEC-Dateien

Das Programm VECREAD liest VEC-Dateien und zeigt sie mit Hilfe der Joyce-Grafikbibliothek an.

VECREAD11_com.zip
VECREAD V1.1 ausführbare COM-Datei
(9.59 KiB) 106-mal heruntergeladen
VECREAD11_src.zip
VECREAD V1.1 Source
(9.01 KiB) 95-mal heruntergeladen

Hier nun einige Beispiel-Dateien im VEC-Format:
vec-samples.zip
Beispiel-Dateien im VEC-Format
(16.52 KiB) 124-mal heruntergeladen

Schritt 3: Ein Programm zum Umwandeln von SVG in VEC

VEC-Dateien kann man zwar auch manuell oder per Programm selbst erstellen, aber das ist ein mühsames Unterfangen. Es gibt ja bereits viele Dateien, die in verschiedenen Vektorformaten vorliegen. Mittlerweile ist SVG (= Scalable Vector Graphics) besonders populär, weil es von allen gängigen Browsern unterstützt wird; es ist quasi das Vektorgrafikformat des Internets.
Allerdings ist es nicht gerade einfach, einen SVG->VEC Konverter zu implementieren, weil SVG ein sehr mächtiges Format ist. Außerdem gilt es sich auf die SVG-Eigenschaften zu beschränken, die auch von unserer Joyce dargestellt werden können. So sind Farben, Gradientenverläufe, Animationen und einiges mehr nicht realisierbar. Man muss also Grafikelemente extrahieren, die durch Linien, Kreise, etc. darstellbar sind. Die Grafik muss zudem auf die Joyce-Auflösung skaliert werden.
Mein Programm TinySVG ist in Java geschrieben. Es ist eine ausführbare JAR-Datei, die einfach per Doppelklick gestartet wird. Via File > Open öffnet man eine SVG-Datei, die dann analysiert und in Grafikelemente zerlegt wird. Das Ergebnis der Umwandlung erscheint als Vorschau im Programmfenster; damit die Grafik auf dem PC nicht gestaucht aussieht, ist die Auflösung hier 720x512 Pixel. Die VEC-Datei (720x256) wird automatisch im selben Verzeichnis wie die geöffnete SVG-Datei erzeugt; sie hat denselben Dateinamen, allerdings mit der Endung ".VEC" statt ".SVG".

TinySVG.zip
Java-Programm SVG -> VEC
(44.02 KiB) 97-mal heruntergeladen