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