•  Back 
  •  Grundlagen des VDI 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
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                                             TOS

Metadateien 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-Treiber   Metafile-Funktionen   Sub-Opcodes   XIMG-Format 
OUT-Dateiformat