Topic : TOS - das Betriebssystem
Author :
Version : tos.hyp (5. März 2013)
Subject : Programmieren/Atari
Nodes : 3001
Index Size : 93602
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default : Titel
@help :
@options : +g -i -s +x +zz -t4
@width : 70
View Ref-File7.2.6 Metafile-Format TOSMetadateien sind nichts anderes als abgespeicherte VDI-Befehle, die in
objektorientierten Programmen wie GEMDRAW oder Kandinsky benutzt
werden. Der Hauptzweck ist dabei der standardisierte Datenaustausch
zwischen verschiedenen GEM-Applikationen. Eine Metadatei beginnt mit
einem Kopf, der die Charakteristika der in ihr enthaltenen Grafik
beschreibt, und wie folgt aufgebaut ist:
typedef struct
{
int16_t id; /* besitzt stets den Wert 0xffff */
int16_t headlen; /* Länge des Kopfes */
int16_t version; /* Versionsnummer */
int16_t transform; /* NDC- oder RC-Koordinatensystem */
int16_t extents[4]; /* max. Ausmaße der Grafik (optional) */
int16_t pagesize[2]; /* Seitengröße in 1/10mm (optional) */
int16_t coords[4]; /* Koordinatensystem (optional) */
int16_t bit_image; /* Bit-Image vorhanden (1) oder nicht (0) */
int16_t reserved[9]; /* reserviert */
} META_HEADER;
Hinweis: Die Komponente bit_image des Headers gibt an, ob sich eine
Bit-Image-Datei in der Metafile-Datei befindet. Tatsächlich befindet
sich jedoch in keiner Metadatei eine Pixelgrafik; zeichnet man
beispielsweise in GEMPAINT ein Bild namens 'test', so erstellt das
Programm außer der Datei 'test.img' noch die Datei 'test.gem'. In
letzterer befindet sich genau ein VDI-Befehl (v_bit_image), und die
Komponente bit_image besitzt dann den Wert 1.
Beim Lesen von Metafiles wird keine feste Länge benutzt; vielmehr
liest eine Applikation zunächst die ersten beiden Wörter (und damit
die Länge) des Headers. Anschließend wird der Rest des Kopfes gelesen.
Es folgen dann beliebig viele Einträge der Form:
Wort Inhalt Belegung
0 contrl[0] VDI-Befehlsnummer
1 contrl[1] Anzahl der Werte in ptsin
2 contrl[3] Anzahl der Werte in intin
3 contrl[5] Unterfunktionsnummer
ab 4 ptsin[] Belegung des ptsin-Feldes
danach intin[] Belegung des intin-Feldes
Das Ende eines Metafiles wird durch den Wert -1 (für contrl[0])
angezeigt. Wichtig: Metadateien liegen immer im Intel-Format (low-
high) vor. Um auf einem 680X0er-System Metadateien zu bearbeiten, muss
daher beim Einlesen in jedem Wort das nieder- und höherwertige Byte
vertauscht werden.
Über die Komponente pagesize lassen sich Angaben zur Seitenbreite und
-höhe ermitteln. Möchte man Metadateien erstellen, so wird man diesen
beiden Werten Standardgrößen geben. Folgende Standardgrößen werden von
den meisten GEM-Programmen unterstützt:
Bezeichnung Zoll Zentimeter
Letter 8,50 * 11,00 21,59 * 27,94
Legal 8,50 * 14,00 21,59 * 35,56
Half 8,50 * 5,50 21,59 * 13,97
Ledger 11,00 * 17,00 27,94 * 43,18
DIN A3 11,69 * 16,54 29,70 * 42,00
DIN A4 8,07 * 11,69 21,00 * 29,70
DIN A5 5,85 * 8,27 14,80 * 21,00
DIN B5 7,17 * 9,84 18,20 * 25,00
Wide 14,00 * 11,00 35,56 * 27,94
Die Werte für pagesize[0] (Breite) und pagesize[1] (Höhe) ergeben sich
dabei aus den Zentimeter-Werten multipliziert mit 100.
Querverweis:
Metafile-TreiberMetafile-FunktionenSub-OpcodesXIMG-FormatOUT-Dateiformat