•  Back 
  •  Metafile-Format 
  •  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.1  Metafile Sub-Opcodes                                      TOS

Das GEM-Metafile-Format kann durch benutzerdefinierte Sub-Opcodes 
nahezu beliebig erweitert werden, ohne daß Inkompatibilitäten 
entstehen. Es sollten lediglich die folgenden zwei Punkte beachtet 
werden:

   ∙ da die Nummern von 0 bis 100 für das Betriebssystem reserviert 
     sind, kommen für Sub-Opcodes nur Nummern ab 101 in Frage.

   ∙ jeder Entwickler sollte darauf achten, daß der von ihm 
     vorgesehene Opcode nicht bereits anderweitig belegt ist, um einen 
     reibungslosen Datenaustausch zu gewährleisten.

Die folgende Liste enthält eine Beschreibung der z.Zt. definierten und 
bekannten Opcodes:

 Code Name              Beschreibung

   10 GEM_START_GROUP   Definiert den Beginn einer Gruppe, d.h. einer 
                        Menge zusammengehörender Objekte.
   11 GEM_END_GROUP     Markiert das Ende einer Gruppe, d.h. einer 
                        Menge zusammengehörender Objekte.
   32 GEM_BEZ_QUAL      siehe v_bez_qual
   34 ???               z.Zt. keine Informationen bekannt.
   49 GEM_NO_LINE_STYLE Jeglicher Linienstil soll ausgeschaltet 
                        werden.
   50 GEM_START_SHADOW  Informiert darüber, daß die bis GEM_END_SHADOW 
                        folgenden VDI-Befehle dazu benutzt werden, um 
                        für das erste Objekt nach GEM_END_SHADOW einen 
                        Schatten zu zeichnen.
   51 GEM_END_SHADOW    Markiert das Ende einer Folge von Befehlen die 
                        zum Zeichnen eines Objektschattens benutzt 
                        werden, und per GEM_START_SHADOW eingeleitet 
                        werden.
   80 GEM_START_FILL
   81 GEM_END_FILL      Alle zwischen diesen beiden Codes liegenden 
                        Befehle werden dazu benutzt, um eine 
                        ausgefüllte Fläche mit oder ohne Umrandung zu 
                        zeichnen.
                        Beispiel: Schrittweises Zeichnen einer 
                        Polygonfläche mit Schatten und Umrandung.
                           ∙ GEM_START_FILL
                           ∙ GEM_START_SHADOW
                           ∙ Füllattribute für Schatten setzen
v_fillarea versetzt um dx und dy
                           ∙ GEM_END_SHADOW
                           ∙ Füllattribute der Fläche setzen
v_fillarea
                           ∙ Linienattribute für Umrandung setzen
v_pline
                           ∙ GEM_END_FILL
  101 VM_VER_APP        Gibt Auskunft über den Namen und die 
                        Versionsnummer der Applikation, die eine 
                        Metadatei erstellt hat. Es gilt:
                         intin[0] = VM_VER_APP
                         intin[1] = Versionsnummer
                         intin[2] = Name der Applikation, welche
                         : die Metadatei erstellt hat.
                         :
                         intin[n]
                        Hinweis: Der Name der Applikation sollte immer 
                        ohne Suffix angegeben werden, da dieses auf 
                        verschiedenen GEM-Systemen unterschiedlich 
                        sein kann.
  102 GEM_COLOR         z.Zt. keine Informationen bekannt.
  103 ???               z.Zt. keine Informationen bekannt.
  107 ???               z.Zt. keine Informationen bekannt.
  111 ???               z.Zt. keine Informationen bekannt.
  170 GEM_START_BGIF    Leitet eine Textausgabe per BGI- 
                        Vektorzeichensatz ein. Es gilt:
                         intin[0] =   GEM_START_BGIF
                         intin[1] =   nicht-proportional (Wert 0)
                         intin[2] =   Name, z.B. EURO
                         :            ==> intin[2] = 69
                         :
                         intin[10]
                         intin[11] =  Text mit abschliessender Null
                         :
                         :
                         ptsin[0] =   x-Koordinate
                         ptsin[1] =   y-Koordinate des Textes in 
                                      1/10mm
                         ptsin[2] =   Buchstabenbreite
                         ptsin[3] =   Buchstabenhöhe in 1/10mm
                         ptsin[4] =   Rotation in 1/10 Grad
                        Bis GEM_END_BGIF folgen die v_pline Befehle, 
                        die zur Darstellung des Textes notwendig sind, 
                        falls ein Programm diese Sub-Opcodes nicht 
                        interpretieren kann.
  171 GEM_END_BGIF      kennzeichnet das Ende einer Textausgabe per 
                        BGI-Vektorschrift.
  190 GEM_WIND          Legt Position, Zoomstufe und Format eines 
                        Fensters fest; es gilt:
                         intin[0] = GEM_WIND
                         intin[1] = x-Position
                         intin[2] = y-Position
                         intin[3] = Breite
                         intin[4] = Höhe des Fensters in Pixeln
                         intin[5] = x-Position
                         intin[6] = y-Position des Sliders (Pixel)
                         intin[7] = Zoomstufe in Prozent
                         intin[8] = Format (0 = Hoch, 1 = Quer)
  191 GEM_GRID          Ermöglicht das dauerhafte Sichern der 
                        Rastereinstellungen eines Fensters; es gilt:
                         intin[0] = GEM_GRID
                         intin[1] = Raster inaktiv (bei Wert 0)
                         intin[2] = Raster nicht zeichnen (bei 0)
                         intin[3] = Rasterbreite in 1/10mm
                         intin[4] = Rasterhöhe in 1/10mm
                         intin[5] = Hilfslinien-Abstand (horiz.)
                         intin[6] = Hilfslinien-Abstand (vertikal) in 
                           1/10mm
                         intin[7] = Hilfslinien (0) bzw. Punkte
  192 GEM_ALIGN         Beschreibt das Bezugs-Objekt; es gilt:
                         intin[0] = GEM_ALIGN
                         intin[1] = Bezugsobjekt nicht zeichnen (0)
                         intin[2] = x-Koordinate
                         intin[3] = y-Koordinate des Bezugsobjektes in 
                           1/10mm
                         intin[4] = Breite
                         intin[5] = Höhe des Objektes in 1/10mm
  193 GEM_START_GREY    Legt einen Grauton als Füllfläche fest; dabei 
                        sind Abstufungen im Bereich von 0..255 
                        (weiß..schwarz) möglich. Es gilt:
                         intin[0] = GEM_START_GREY
                         intin[1] = Graustufe (0..255)
                        Die bis GEM_END_GREY folgenden Befehle setzen 
                        ein benutzerdefiniertes Muster mit dem 
                        entsprechenden Grauton; sie dienen nur für 
                        Programme, die mit diesen Opcodes nichts 
                        anfangen können.
  194 GEM_END_GREY      Kennzeichnet das Ende eines 
                        benutzerdefinierten Grauton-Musters.
  195 GEM_START_BEZIER  Definiert einen Bezier-Zug. Es gilt:
                         intin[0] = GEM_START_BEZIER
                         intin[1] = Rekursionstiefe (< 5)
                         intin[2] = Attribute der Ankerpunkte als 
                           Bitvektor; gesetzte Bits bedeuten dabei:
                         : Bit-0 = Ecke
                         : Bit-1 = verschiebt
                         : Bit-2 = sichtbar
                         : Bit-3 = Linie statt Bezier
                         :
                         intin[2n+1]
                         ptsin[0] = Koordinaten der n Beziersegmente 
                           (jedes besteht aus vier Punkten)
                         ptsin[4n-1]
                        Bis GEM_END_BEZIER folgen dann v_pline 
                        Aufrufe, die für Programme, die den Sub-Opcode 
                        nicht verstehen, einen äquivalenten Polygonzug 
                        zeichnen.
  196 GEM_END_BEZIER    Kennzeichnet das Ende eines Bezier-Zugs.
  197 GEM_START_JOIN    Erlaubt es, mehr Koordinaten abzuspeichern, 
                        als der Metafile-Treiber erlaubt. Findet eine 
                        Applikation diesen Sub-Opcode so werden die 
                        ptsin-Felder der bis GEM_END_JOIN folgenden 
                        VDI-Blöcke zu einem grossen Feld 
                        zusammengefasst. Es gilt:
                         intin[0] = GEM_START_JOIN
                         intin[1] = Anzahl der Koordinatenpaare
  198 GEM_END_JOIN      Kennzeichnet das Ende eines per GEM_START_JOIN 
                        definierten Abschnitts.
  199 ???               z.Zt. keine Informationen bekannt.
  201 ???               z.Zt. keine Informationen bekannt.
  203 ???               z.Zt. keine Informationen bekannt.
  230 ???               z.Zt. keine Informationen bekannt.

Hinweis: Beim Lesen eines Metafiles sollte ein Programm unbekannte 
Anweisungen unbedingt ignorieren.

Querverweis: v_write_meta   Beispiel-Binding 
Analysieren eines Metafiles