Home VDIVDI FarbtabellenfunktionenFarbtabellenfunktionen RasterfunktionenRasterfunktionen

7.10 Kontrollfunktionen

Diese Bibliothek enthält Funktionen, um Arbeitsgeräte zu öffnen oder zu schließen und Zeichensätze zu laden. Darüber hinaus kann über diese Funktionen die Bezier-Spline Rrzeugung manipuliert, und die Verwaltung des Vektorzeichen-Caches gesteuert werden.

Insgesamt stehen die folgenden Routinen zur Verfügung:

v_bez_on Bezier-Spline-Erzeugung einschalten.
v_bez_off Bezier-Spline-Erzeugung ausschalten.
• v_clr_cachedir z.Zt. keine Informationen bekannt.
v_clrwk Reinitialisierung einer Arbeitsstation.
v_clsbm Offscreen-Bitmap schließen.
v_clsvwk Virtuelle Arbeitstation abmelden.
v_clswk Physikalische Arbeitstation abmelden.
• v_def_cachedir z.Zt. keine Informationen bekannt.
• v_delete_cache z.Zt. keine Informationen bekannt.
• v_fgetoutline z.Zt. keine Informationen bekannt.
v_flushcache Vektorzeichen-Cache löschen.
• v_get_cachedir z.Zt. keine Informationen bekannt.
v_get_outline Outline eines Zeichens berechnen, erweiterte Version.
v_getoutline Outline eines Zeichens berechnen.
v_killoutline Speicher zur Outline-Generierung freigeben.
v_loadcache Vektorzeichen-Cache laden.
v_open_bm Moderne Variante zum öffnen von Offscreen-Bitmap
v_opnbm Offscreen-Bitmap öffnen.
v_opnprn Druckertreiber öffnen
v_opnvwk Virtuelle Arbeitstation anmelden.
v_opnwk Physikalische Arbeitstation anmelden.
v_pat_rotate  
v_resize_bm Größe einer Offscreenbitmap verändern
v_savecache Vektorzeichen-Cache speichern.
v_set_app_buff Speicher für Bezier-Spline-Erzeugung reservieren.
• v_set_cachedir z.Zt. keine Informationen bekannt.
v_updwk Gepufferte Befehle einer Workstation ausführen.
• vs_backmap z.Zt. keine Informationen bekannt.
vs_clip Clipping setzen oder aufheben.
• vs_outmode z.Zt. keine Informationen bekannt.
• vs_use_fonts z.Zt. keine Informationen bekannt.
vst_ex_load_fonts Zusätzliche Zeichensätze laden.
vst_load_fonts Zusätzliche Zeichensätze laden.
vst_unload_fonts Zeichensätze entfernen.

Querverweis: Workstations des VDI   Style-Guidelines

7.10.1 v_bez_off

Name: »Disable Bezier capabilities« - schaltet die Bezier-Spline Erzeugung aus.
 
VDI-Nummer: 11 (Unterfunktion 13)
 
Deklaration: void v_bez_off ( int16_t handle );
 
Beschreibung: Die Funktion deaktiviert die Bezier-Spline-Erzeugung des GDOS auf der Workstation mit der Kennung handle.
 
Hinweis: Obwohl mittels handle eine spezielle Workstation spezifiziert wird, gilt die Deaktivierung für alle Arbeitsstationen.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: ab GEM/3 Release 3.1, ab SpeedoGDOS 4.00 und ab NVDI 2.10
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_bez_on   v_bez   v_bez_fill   v_bez_qual   v_set_app_buff
 

7.10.2 Bindings für v_bez_off

C: void v_bez_off ( int16_t handle );
 
Umsetzung:
 
void v_bez_off (int16_t handle)
{
   contrl[0] = 11;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 13;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 11 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 13 # Unterfunktion
contrl+12 contrl[6] handle

7.10.3 v_bez_on

Name: »Enable Bezier capabilities« - schaltet die Bezier-Spline Erzeugung ein.
 
VDI-Nummer: 11 (Unterfunktion 13)
 
Deklaration: int16_t v_bez_on ( int16_t handle );
 
Beschreibung: Die Funktion aktiviert die Bezier-Spline-Erzeugung des GDOS auf der Workstation mit der Kennung handle.
 
Hinweis: Obwohl mittels handle eine spezielle Workstation spezifiziert wird, gilt die Aktivierung für alle Arbeitsstationen.
 
Diese Funktion ist aus Kompatibilitätsgründen vorhanden. Sie sorgt dafür, daß Aufrufe von v_pline ohne die Unterfunktionsnummer 13 als Aufrufe von v_bez und Aufrufe von v_fillarea ohne die Unterfunktionsnummer als Aufrufe von v_bez_fill aufgefaßt werden. Die Funktion wird normalerweise nur verwendet, um festzustellen, ob Beziers vorhanden sind.
 
Ergebnis: Die Funktion liefert einen Wert von 0 (keine Beziers) bis 7 (maximale Qualität), der ein ungefähres Maß für die Kurvenqualität darstellt. Normalerweise kann man von diesem Wert nur ableiten, ob Beziers vorhanden sind.
 
Verfügbar: ab GEM/3 Release 3.1, ab SpeedoGDOS 4.00 und ab NVDI 2.10
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_bez_off   v_bez   v_bez_fill   v_bez_qual   v_set_app_buff
 

7.10.4 Bindings für v_bez_on

C: int16_t v_bez_on ( int16_t handle );
 
Umsetzung:
 
int16_t v_bez_on (int16_t handle)
{
   contrl[0] = 11;
   contrl[1] = 1;
   contrl[3] = 0;
   contrl[5] = 13;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 11 # Opcode der Funktion
contrl+2 contrl[1] 1 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 13 # Unterfunktion
contrl+12 contrl[6] handle
intout intout[0] Return-Wert

7.10.5 v_clrwk

Name: »Clear Workstation« - löscht das Arbeitsgerät
 
VDI-Nummer: 3
 
Deklaration: void v_clrwk ( int16_t handle );
 
Beschreibung: Die Funktion versetzt das Arbeitsgerät mit der Kennung handle in einen genau definierten Anfangszustand. Es gilt:
 
Gerät Wirkung des Aufrufs
   
Bildschirm Der Bildschirm wird gelöscht, und auf die ausgewählte Hintergrundfarbe gesetzt.
Plotter Löscht den Puffer des Plotters.
Drucker Löscht den Puffer des Druckers, und führt zusätzlich einen Seitenvorschub aus.
Metafile Speichert den Opcode.
Kamera Löscht die Ausgabe, und setzt die Hintergrundfarbe.

Hinweis: Durch einen v_opnwk-Aufruf wird das jeweilige Gerät (z.B. der Bildschirm) automatisch gelöscht.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: Supported by all drivers.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_form_adv
 

7.10.6 Bindings für v_clrwk

C: void v_clrwk ( int16_t handle );
 
Umsetzung:
 
void v_clrwk (int16_t handle)
{
   contrl[0] = 3;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 3 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle

7.10.7 v_clsbm

Name: »Close Bitmap« - schließt eine Offscreen Bitmap
 
VDI-Nummer: 101 (Unterfunktion 1)
 
Deklaration: void v_clsbm ( int16_t handle );
 
Beschreibung: Die Funktion v_clsbm() schließt die mit handle bezeichnete Bitmap. Wenn Speicher beim v_opnbm vom VDI alloziert wurde, gibt sie diesen Speicher wieder frei.
 
Ergebnis: Die Funktion hat kein direktes Funktionsergebnis.
 
Verfügbar: ab EdDI-Version 1.00
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   NVDI   Off-Screen-Bitmaps   v_opnbm
 

7.10.8 Bindings für v_clsbm

C: void v_clsbm ( int16_t handle );
 
Umsetzung:
 
void v_clsbm (int16_t handle)
{
   contrl[0] = 101;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 1;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 101 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 1 # Unterfunktion
contrl+12 contrl[6] handle

7.10.9 v_clsvwk

Name: »Close virtual Screen Workstation« - schließt eine Bildschirm-Workstation.
 
VDI-Nummer: 101
 
Deklaration: void v_clsvwk ( int16_t handle );
 
Beschreibung: Die Funktion schließt die Workstation mit der Kennung handle, die vorher per v_opnvwk geöffnet worden ist.
 
Hinweis: Diese Funktion darf nicht benutzt werden, wenn beim Öffnen der Workstation ein Fehler aufgetreten ist.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: Supported by all drivers.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_opnvwk   v_clswk
 

7.10.10 Bindings für v_clsvwk

C: void v_clsvwk ( int16_t handle );
 
Umsetzung:
 
void v_clsvwk (int16_t handle)
{
   contrl[0] = 101;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 101 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle

7.10.11 v_clswk

Name: »Close Workstation« - schließt ein geöffnetes Ein-/Ausgabegerät
 
VDI-Nummer: 2
 
Deklaration: void v_clswk ( int16_t handle );
 
Beschreibung: Die Funktion schließt das Gerät mit der Kennung handle, welches zuvor durch einen v_opnwk Aufruf geöffnet worden ist.
 
Folgende Auswirkungen hat der Funktionsaufruf auf die verschiedenen Gerätetypen:
 
Gerät Wirkung des Aufrufs
   
Bildschirm Umschaltung in den Alpha-Modus
Plotter Update
Drucker Update, falls nicht geschehen
Metafile Datei wird geschlossen
Kamera Update

Hinweis: Vor dem Aufruf dieser Funktion sollte darauf geachtet werden, daß alle virtuellen Workstations auf dem entsprechenden Gerät geschlossen sind.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: Available only with some form of GDOS.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   GDOS   v_opnwk   v_opnvwk   v_clsvwk
 

7.10.12 Bindings für v_clswk

C: void v_clswk ( int16_t handle );
 
Umsetzung:
 
void v_clswk (int16_t handle)
{
   contrl[0] = 2;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 2 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle

7.10.13 v_flushcache

Name:»Flush Outline cache« - Vektorzeichen Cache löschen.
 
VDI-Nummer: 251
 
Deklaration: int16_t v_flushcache ( int16_t handle );
 
Beschreibung: Die Funktion löscht den Inhalt des Vektorzeichen-Caches, der Bitmaps von Vektorzeichen enthält.
 
Der Parameter handle bezeichnet die Kennung der entsprechenden Workstation.
 
Ergebnis: Die Funktion liefert im Fehlerfall den Wert -1, anderenfalls den Wert 0.
 
Verfügbar: FSMGDOS, ab SpeedoGDOS 4.00 und ab NVDI 3.00, ein Binding wird allerdings bei NVDI nicht angegeben.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_loadcache   v_savecache   vqt_cachesize
 

7.10.14 Bindings für v_flushcache

C: int16_t v_flushcache ( int16_t handle );
 
Umsetzung:
 
int16_t v_flushcache ( int16_t handle );
{
   contrl[0] = 251;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 251 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+12 contrl[6] handle
intout intout[0] Returnwert

7.10.15 v_getoutline

Name: »Get character outline« - Outline eines Zeichens berechnen.
 
VDI-Nummer: 243
 
Deklaration: void v_getoutline ( int16_t handle, int16_t ch, int16_t *xyarray, int8_t *bezarray, int16_t maxpts, int16_t *count );
 
Beschreibung: Die Funktion erzeugt das Outline, welches zu einem bestimmten Zeichen gehört. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
ch Zeichen, dessen Outline berechnet werden soll
xyarray Puffer für die Koordinaten
bezarray Puffer für Punktinformationen
maxpts maximal auszugebende Punktzahl
count Anzahl der auszugebenden Punkte

Hinweis: Die gelieferten Werte können direkt an die Ausgabefunktion für Bezier-Splines (v_bez, v_bez_fill) weitergereicht werden.
 
Wenn man die Informationen dieser Funktion z.B. als Vektorgrafik benutzen möchte, so empfiehlt es sich, vor dem Aufruf eine große Texthöhe einzustellen. Andernfalls ist die Qualität des zurückgelieferten Beziers recht mager, da von der internen Darstellung in 1/65536 Pixeln auf Pixel gerundet wird, d.h. 16 Bit fallen weg. Die Texthöhe sollte sich an der Rasterauflösung des Fonts orientieren, die auch von der Funktion vqt_fontheader zurückgeliefert wird.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: ab SpeedoGDOS 4.00 und an NVDI 3.00
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_get_outline   v_killoutline   SpeedoGDOS   NVDI   fix31
 

7.10.16 Bindings für v_getoutline

C: void v_getoutline ( int16_t handle, int16_t ch, int16_t *xyarray, int8_t *bezarray, int16_t maxpts, int16_t *count );
 
Umsetzung:
 
void v_getoutline (int16_t handle, int16_t ch,
                   int16_t *xyarray, int8_t *bezarray,
                   int16_t maxpts, int16_t *count)
{
   intin[0] = ch;
   intin[1] = maxpts;
   intin[2..3] = xyarray;
   intin[4..5] = bezarray;

   contrl[0] = 243;
   contrl[1] = 0;
   contrl[3] = 6;
   contrl[6] = handle;

   vdi ();

   *count = intout[0];
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 243 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 6 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] ch
intin+2 intin[1] maxpts
intin+4 intin[2..3] xyarray
intin+8 intin[4..5] bezarray
intout intout[0] count

7.10.17 v_get_outline

Name: »Get character outline« - Outline eines Zeichens berechnen.
 
VDI-Nummer: 243 (Unterfunktion 1)
 
Deklaration: int16_t v_get_outline ( int16_t handle, uint16_t index, uint16_t x_offset, uint16_t y_offset, int16_t *xyarray, uint8_t *bezarray, int16_t max_pts );
 
Beschreibung: Die Funktion erzeugt das Outline, welches zu einem bestimmten Zeichen gehört.
 
Die Funktion
 
  • funktioniert für jedes Fontformat gleich
  • akzepziert Offsets für x- und y-Koordinaten
  • funktioniert auch bei Rotation
  • beachtet die vertikale Ausrichtung
  • beachtet die horizontale Ausrichtung
Parameter Bedeutung
   
handle Kennung der Workstation
index Zeichen-Index
x_offset wird zu allen x-Koordinaten im xyarray addiert
y_offset wird zu allen y-Koordinaten im xyarray addiert
xyarray Puffer für die Koordinaten
bezarray Puffer für Punktinformationen
max_pts Maximale auszugebende Punktanzahl

Hinweis: Die gelieferten Werte können direkt an die Ausgabefunktion für Bezier-Splines (v_bez, v_bez_fill) weitergereicht werden.
 
Hinweis: Bisher sah es bei v_getoutline (alte Speedo-Funktion) so aus, daß die Funktion bei Rotation überhaupt nicht funktionerte. Die Ausrichtung wurde ebenfalls nicht beachtet. Bei Speedo-Fonts entsprach die y-Koordinate 0 der obersten im Buchstaben benutzten Koordinate (befand sich also abhängig vom Buchstaben irgendwo innerhalb der Zeichenzelle), während bei Postscript und TrueType die y-Koordinate 0 immer der Zeichenzellenoberkante entsprach.
 
Ergebnis: Die Funktion liefert als Ergebnis die Anzahl der ausgegebenen Punkte zurück.
 
Verfügbar: ab NVDI 5.00
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_getoutline   v_killoutline   SpeedoGDOS   NVDI   fix31
 

7.10.18 Bindings für v_get_outline

C: int16_t v_get_outline ( int16_t handle, uint16_t index, uint16_t x_offset, uint16_t y_offset, int16_t *xyarray, uint8_t *bezarray, int16_t max_pts );
 
Umsetzung:
 
int16_t v_get_outline ( int16_t handle, uint16_t index,
                        uint16_t x_offset, uint16_t y_offset,
                        int16_t *xyarray, uint8_t *bezarayr,
                        int16_t max_pts )
{
   intin[0] = index;
   intin[1] = max_pts;
   intin[2..3] = xyarray;
   intin[4..5] = bezarray;
   intin[6] = x_offset;
   intin[7] = y_offset;

   contrl[0] = 243;
   contrl[1] = 0;
   contrl[3] = 8;
   contrl[5] = 1;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 243 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 8 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 1 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] ch
intin+2 intin[1] maxpts
intin+4 intin[2..3] xyarray
intin+8 intin[4..5] bezarray
intin+12 intin[6] x_offset
intin+14 intin[7] y_offset
intout intout[0] Return-Wert

7.10.19 v_killoutline

Name: »Kill FSM outline« - Speicher zur Outline-Generierung freigeben.
 
VDI-Nummer: 242
 
Deklaration: void v_killoutline ( int16_t handle, fsm_component_t *component );
 
Beschreibung: Die Funktion gibt den Speicher zur Erzeugung von Outlines frei. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
component Adresse eines per v_getoutline generierten Outlines

Hinweis: Die Funktion sollte stets aufgerufen werden, sobald ein Outline nicht mehr benötigt wird. Anderenfalls läuft man Gefahr, keinen freien Speicher mehr zu besitzen.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: in FSMGDOS , ab SpeedoGDOS 4.00 nicht mehr notwendig.
 
Gruppe: Kontrollfunktionen
 
Querverweis: GDOS   SpeedoGDOS   v_getoutline
 

7.10.20 v_loadcache

Name: »Load Outline cache« - Vektorzeichen-Cache laden.
 
VDI-Nummer: 250
 
Deklaration: int16_t v_loadcache ( int16_t handle, int8_t *filename, int16_t mode );
 
Beschreibung: Die Funktion füllt den Vektorzeichen-Cache mit dem Inhalt einer Datei. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
filename Name der Datei
mode Füll-Modus
0 = Datei an aktuellen Cache hängen
1 = aktuellen Cache löschen, und Datei komplett in den Cache laden
Ergebnis: Die Funktion liefert im Fehlerfall den Wert -1, anderenfalls den Wert 0.
 
Verfügbar: FSMGDOS, ab SpeedoGDOS 4.00
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_flushcache   v_savecache   vqt_cachesize
 

7.10.21 Bindings für v_loadcache

C: int16_t v_loadcache ( int16_t handle, int8_t *filename, int16_t mode );
 
Umsetzung:
 
int16_t v_loadcache ( int16_t handle, int8_t *filename,
                      int16_t mode )
{
   intin[0] = mode;
   intin[1..n] = filename;

   contrl[0] = 250;
   contrl[1] = 0;
   contrl[3] = 1+n;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 250 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 1+n # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] mode
intin+2 intin[1..n] filename
intout intout[0] Rückgabewert

7.10.22 v_load_cache

Name: »Load Outline cache« - Vektorzeichen-Cache laden.
 
VDI-Nummer: 226 (Subcode 7)
 
Deklaration: int16_t v_load_cache ( int16_t handle, int8_t *filename, int16_t mode );
 
Beschreibung: Die Funktion füllt den Vektorzeichen-Cache mit dem Inhalt einer Datei. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
filename Name der Datei
mode Füll-Modus
0 = Datei an aktuellen Cache hängen
1 = aktuellen Cache löschen, und Datei komplett in den Cache laden
Ergebnis: Die Funktion liefert im Fehlerfall den Wert -1, anderenfalls den Wert 0.
 
Verfügbar: Ab SpeedoGDOS 5.1
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_flushcache   v_savecache   v_loadcache   vqt_cachesize
 

7.10.23 Bindings für v_load_cache

C: int16_t v_load_cache ( int16_t handle, int8_t *filename, int16_t mode );
 
Umsetzung:
 
int16_t v_load_cache ( int16_t handle, int8_t *filename,
                      int16_t mode )
{
   intin[0] = mode;
   intin[1..n] = filename;

   contrl[0] = 226;
   contrl[1] = 0;
   contrl[3] = 1+n;
   contrl[5] = 7;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 226 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 1+n # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+10 contrl[5] 7 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] mode
intin+2 intin[1..n] filename
intout intout[0] Rückgabewert

7.10.24 v_open_bm

Name: »Open Bitmap« - öffnet eine Offscreen Bitmap
 
VDI-Nummer: 100 (Unterfunktion 3)
 
Deklaration: int16_t v_open_bm ( int16_t base_handle, GCBITMAP *bitmap, int16_t color_flags, int16_t unit_flags, int16_t pixel_width, int16_t pixel_height );
 
Beschreibung: Die Funktion v_open_bm dient zur Erzeugung von Offscreen-Bitmaps. Man kann ihr entweder die Größe eines Bitmap angeben, die Sie allozieren soll, oder ihr eine Bitmap übergeben. Die Bitmap wird im gleichen Format wie die des Bildschirms verwaltet, wodurch schnelles Kopieren zwischen beiden möglich ist.
 
v_open_bm ist die moderne Variante von v_opnbm und arbeitet mit derselben Bitmap- und Pixelformatbeschreibung wie vr_transfer_bits.
 
Parameter Bedeutung
   
base_handle graf_handle()
bitmap Zeiger auf GCBITMAP oder 0.
Wenn GCBITMAP 0 ist, wird die GCBITMAP des Handles base_handle benutzt. Die Einträge in der Bitmap werden wie folgt ausgewertet:
Eintrag Funktion
addr Adresse der Bitmap oder 0 (VDI fordert den Speicher an und trägt die Adresse nachher hier ein)
width Breite einer Zeile in Bytes, wenn addr gültig ist
bits Bittiefe, korrespondiert mit px_format
px_format Pixelformat oder 0 (Pixelformat wird von base_handle übernommen) wenn alle folgenden Koordinaten auf 0 gesetzt sind und das VDI den Speicher anfordert [<addr> ist 0], werden die Ausmaße von base_handle übernommen
xmin minimale diskrete x-Koordinate der Bitmap (in der Regel 0)
ymin minimale diskrete y-Koordinate der Bitmap (in der Regel 0)
xmax maximale diskrete x-Koordinate der Bitmap + 1 (in der Regel die Breite)
ymax maximale diskrete y-Koordinate der Bitmap + 1 (in der Regel die Höhe)
ctab wird ignoriert
itab wird ignoriert
reserved0 muß 0 sein!
reserved1 muß 0 sein!
color_flags Behandlung der Farbtabellen
Wenn das unterste Bit von color_flags gesetzt ist, benutzt die Bitmap die gleiche Farbtabelle wie base_handle. Ist das Bit gelöscht, wird für die Bitmap eine eigene Farbtabelle und eine eigene inverse Farbtabelle angelegt (wodurch für manche Programme die Behandlung von Bildschirm-Caches oder Hintergrundpuffern deutlich einfacher werden sollte). Farbveränderungen auf dem Bildschirm ändern dann nicht die Farbeinträge der Bitmap. Von color_flags wird z.Zt. nur das unterste Bit benutzt. Alle anderen Bits müssen 0 sein.
Hinweise: Wenn Bitmap und Bildschirm die gleiche Farbtabelle benutzen, dürfen die Farben nur über das Handle des Bildschirms (also base_handle) verändert werden, da andernfalls die Farben nicht in der Hardware (CLUT) eingetragen werden.
unit_flags Maßeinheit der Pixelausmaße
pixel_width Pixelbreite oder 0
pixel_height Pixelhöhe oder 0

Zusätzlich wird in pixel_width und pixel_height die Pixelgröße übergeben, damit die Fonts richtig skaliert werden können. Falls einer der beiden Einträge 0 ist, werden sie von base_handle übernommen. Die Größenangaben werden abhängig von unit_flags interpretiert:
 
-1: Angaben in dpi
 0: Angaben in Mikrometern
 1: Angaben in 1/10 Mikrometern
 2: Angaben in 1/100 Mikrometern
 3: Angaben in 1/1000 Mikrometern
 
Da <ctab> ignoriert wird, wird für die Bitmap die der Bittiefe entsprechende Systemfarbtabelle im Farbraum CSPACE_RGB (RGB) angelegt. Für mögliche spätere Erweiterungen in diesem Bereich ist die Variable <zero>, die daher jetzt auf 0 gesetzt werden muß.
 
Ergebnis: Wenn die Funktion erfolgreich ist, wird ein von 0 verschiedenes Handle zurückgeliefert. Wenn das VDI den Speicher für die Bitmap angefordert hat und beim Aufruf eine leere (oder nur teilweise gefüllte) GCBITMAP-Struktur übergeben wurde, ist die Struktur nach dem Aufruf vollständig initialisiert. Programme dürfen weder die Farbtabelle noch die inverse Farbtabelle der Struktur durch direkten Zugriff ändern. Alle Veränderungen müssen durch die Farbfunktionen unter dem zurückgelieferten Handle erfolgen.
 
Verfügbar: ab EdDi-Version 1.20
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   NVDI   Off-Screen-Bitmaps   v_clsbm
 

7.10.25 Bindings für v_open_bm

C: int16_t v_open_bm ( int16_t base_handle, GCBITMAP *bitmap, int16_t color_flags, int16_t unit_flags, int16_t pixel_width, int16_t pixel_height );
 
Umsetzung:
 
int16_t v_open_bm ( int16_t base_handle, GCBITMAP *bitmap,
                    int16_t color_flags, int16_t unit_flags,
                    int16_t pixel_width, int16_t pixel_height )
{
   intin[0] = color_flags;
   intin[1] = unit_flags;
   intin[2] = pixel_width;
   intin[3] = pixel_height;

   contrl[0] = 100;
   contrl[1] = 0;
   contrl[3] = 4;
   contrl[5] = 3;
   contrl[6] = base_handle;
   contrl[7..8] = bitmap;

   vdi ();

   return ( contrl[6] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 100 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 4 # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+10 contrl[5] 3 # Unterfunktion
contrl+12 contrl[6] base_handle
contrl+14 contrl[7..8] bitmap
intin intin[0] color_flags
intin+2 intin[1] unit_flags
intin+4 intin[2] pixel_width
intin+6 intin[3] pixel_height
intout intout[0] 1

7.10.26 v_opnbm

Name: »Open Bitmap« - öffnet eine Offscreen Bitmap
 
VDI-Nummer: 100 (Unterfunktion 1)
 
Deklaration: void v_opnbm ( int16_t *work_in, MFDB *bitmap, int16_t *handle, int16_t *work_out );
 
Beschreibung: Die Funktion v_opnbm dient zur Erzeugung von Offscreen-Bitmaps. Man kann ihr entweder die Größe eines Bitmap angeben, die Sie allozieren soll, oder ihr eine Bitmap übergeben. Die Bitmap wird im gleichen Format wie die des Bildschirms verwaltet, wodurch schnelles Kopieren zwischen beiden möglich ist.
 
Parameter Bedeutung
   
handle graf_handle
work_in[0..10] Wie bei v_opnwk/v_opnvwk definiert
work_in[11] Breite -1 (z.B. 1279)
work_in[12] Höhe -1 (z.B. 959)
work_in[13] Breite eines Pixels in Mikrometern
work_in[14] Höhe eines Pixels in Mikrometern
work_in[15..19] Reserviert, sollte 0 enthalten

Die Funktion steht ab EdDI-Version 1.00 zur Verfügung. Ab EdDI 1.1 kann v_opnbm mit zusätzlichen Parametern in work_in[15..19] aufgerufen werden. Es wird dann versucht, eine Bitmap in dem durch diese Parameter beschriebenen Format zu öffnen. Sollte für das angegebene Format kein Treiber vorhanden sein, kann die Bitmap nicht erzeugt werden. Es gilt:
 
work_in[15..16] Anzahl der darstellbaren Farben
work_in[17] Anzahl der Planes
work_in[18] Pixelformat
work_in[19] Bitreihenfolge

Pixelformat und Bitreihenfolge werden bei vq_scrninfo genauer beschrieben. Mit den folgenden Parametern kann z.B. eine Offscreen-Bitmap mit 256 Farben und Interleaved Planes erzeugt werden:
 
work_in[15..16] = 256;  /* 256 Farben             */
work_in[17] = 8;        /* 8 Farbebenen           */
work_in[18] = 0;        /* Interleaved Planes     */
work_in[19] = 1;        /* normale Bitreihenfolge */

Achtung: Der Eintrag work_in[11] sollte bei Addition von 1 ohne Rest durch 16 teilbar sein. Andernfalls rundet der VDI Treiber auf den nächsthöheren ohne Rest teilbaren Wert.
 
Wird für Pixelbreite und -Höhe 0 angegeben, so werden die Werte des Bildschirms benutzt. Nach erfolgreichem Aufruf enthält der Parameter handle die Kennung der erzeugten Bitmap.
 
Hinweis: Die Benutzung von Offscreen-Bitmaps bietet sich auch dann an, wenn man Effekte wie starkes Flackern vermeiden möchte. In diesem Fall baut man Teile der Grafik in der Bitmap auf und überträgt die Bitmap mit vrt_cpyfm oder vro_cpyfm auf den Bildschirm.
 
Ergebnis: Informationen werden über das work_out Array bzw. den Memory-Form-Definiton-Block (MFDB) nach außen gereicht:
 
Parameter Bedeutung
   
work_out[0..1] wie bei v_opnwk/v_opnvwk definiert
work_out[2] 0
work_out[3..38] wie bei v_opnwk/v_opnvwk definiert
work_out[39] 0 (keine Hardw.-Palette vorh., da Bitmap)
work_out[39..56] wie bei v_opnwk/v_opnvwk definiert
bitmap Zeiger auf einen MFDB

Falls bitmap->fd_addr gleich NULL ist, so wird anhand der Größenangaben in work_in Speicher für die Bitmap angefordert (die Bitmap wird im Gegensatz zu v_opnvwk gelöscht).
 
Um eine Bitmap im gerätespezifischen Format zu öffnen, muß bitmap->fd_nplanes eine Null oder die Ebenenanzahl des Schirms enthalten (work_out[4] bei vq_extnd). Ist bitmap->fd_nplanes 1, wird eine monochrome Bitmap angelegt.
 
Die Einträge des MFDB (fd_addr, fd_w, fd_h, fd_wdwidth, fd_stand, fd_nplanes) werden vom VDI-Treiber gesetzt und an die aufrufende Applikation zurückgegeben. Wenn nicht genügend Speicher vorhanden ist, wird der Inhalt des MFDBs nicht verändert; ein Null-Handle wird zurückgegeben.
 
Wenn bitmap->fd_addr ungleich NULL ist, wird dieser Eintrag als Zeiger auf eine Bitmap interpretiert. Wenn die Bitmap im Standardformat vorliegt, wird sie ins gerätespezifische Format umgewandelt. Liegt sie schon im gerätespezifischen Format vor, so wird sie nicht umgewandelt. Falls die Auflösung der Bitmap (d.h. die Anzahl der Farben und Planes) nicht unterstützt wird, gibt v_opnbm ein Null-Handle zurück.
 
Verfügbar: Die Funktion steht ab EdDI-Version 1.00 zur Verfügung. Ab EdDI 1.1 kann v_opnbm mit zusätzlichen Parametern aufgerufen werden.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   NVDI   Off-Screen-Bitmaps   v_clsbm
 

7.10.27 Bindings für v_opnbm

C: void v_opnbm ( int16_t *work_in, MFDB *bitmap, int16_t *handle, int16_t *work_out );
 
Umsetzung:
 
void v_opnbm (int16_t *work_in, MFDB *bitmap, int16_t *handle,
              int16_t *work_out)
{
   intin[0..19] = work_in[0..19];

   contrl[0] = 100;
   contrl[1] = 0;
   contrl[3] = 20;
   contrl[5] = 1;
   contrl[6] = handle;
   contrl[7..8] = bitmap;

   vdi ();

   *handle = contrl[6];
   work_out[0..44]  = intout[0..44];
   work_out[45..56] = ptsout[0..11];
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 100 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 6 # Einträge in ptsout
contrl+6 contrl[3] 20 # Einträge in intin
contrl+8 contrl[4] 45 # Einträge in intout
contrl+10 contrl[5] 1 # Unterfunktion
contrl+12 contrl[6] handle
contrl+14 contrl[7..8] bitmap
intin intin[0..19] work_in[0..19]
intout intout[0..44] work_out[0..44]
ptsout ptsout[0..11] work_out[45..56]

7.10.28 v_opnprn

Name: »Open printer driver«
 
VDI-Nummer: 1
 
Deklaration: int16_t v_opnprn( int16_t base_handle, PRN_SETTINGS *settings, int16_t *work_out );
 
Beschreibung: Die Funktion öffnet einen Druckertreiber.
 
Parameter Bedeutung
   
base_handle graf_handle
settings Zeiger auf eine Struktur vom Typ PRN_SETTINGS.
work_out Zeiger auf ein int16_t work_out[57].
Ergebnis: VDI-Handle oder 0 (Fehler)
 
Verfügbar: Die Übergabe von PRN_SETTINGS ist ab NVDI 4.1x (27.11.96) möglich. Das Binding taucht erstmal in NVDI 5.00 auf.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding
 

7.10.29 Bindings für v_opnprn

C: int16_t v_opnprn( int16_t base_handle, PRN_SETTINGS *settings, int16_t *work_out );
 
Umsetzung:
 
int16_t v_opnprn( int16_t base_handle, PRN_SETTINGS *settings,
                  int16_t *work_out )
{
  int16   work_in[16];
  int16   i;

  vdi_pb.intin = (int *) work_in;
  vdi_pb.intout = (int *) work_out;
  vdi_pb.ptsout = (int *) work_out + 45;

  /* Treibernummer */
  work_in[0] = settings->driver_id;
  for ( i = 1; i < 10; i++ )
    work_in[i] = 1;
  /* Rasterkoordinaten benutzen */
  work_in[10] = 2;
  /* Seitenformat aus settings benutzen */
  work_in[11] = (int16) settings->size_id;
  /* Ausgabekanal aus settings benutzen */
  *(int8 **) &work_in[12] = settings->device;
  /* Druckereinstellung */
  *(PRN_SETTINGS **) &work_in[14] = settings;

  contrl[0] = 1;                   /* Funktionsnummer */
  contrl[1] = 0;
  contrl[3] = 16;              /* erweiterte Parameteranzahl */
  contrl[6] = base_handle;

  vdi( &vdi_pb );                  /* Treiber öffnen */

  vdi_pb.intin = (int *) intin;    /* Zeiger zurücksetzen */
  vdi_pb.intout = (int *) intout;
  vdi_pb.ptsout = (int *) ptsout;

  return( contrl[6] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 1 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 6 # Einträge in ptsout
contrl+6 contrl[3] 16 # Einträge in intin
contrl+8 contrl[4] 45 # Einträge in intout
contrl+10 contrl[5] 1 # Unterfunktion
contrl+12 contrl[6] base_handle
intin intin[0..19] work_in[0..15]
intout intout[0..44] work_out[0..44]
ptsout ptsout[0..11] work_out[45..56]

7.10.30 v_opnvwk

Name: »Open virtual Screen Workstation« - öffnet eine Bildschirm-Workstation
 
VDI-Nummer: 100
 
Deklaration: void v_opnvwk ( int16_t *work_in, int16_t *handle, int16_t *work_out );
 
Beschreibung: Die Funktion öffnet ein virtuelles Arbeitsgerät, auf einem bereits geöffneten physikalischen Gerät. Nach dem Aufruf enthält der Parameter handle die Kennung des virtuellen Gerätes bzw. den Wert Null im Fehlerfall. Es gilt:
 
Parameter Bedeutung
   
work_in Zeiger auf ein Integerfeld mit den genaueren Spezifikationen des zu ladenden Gerätetreibers
work_in[0] Nummer des Gerätetreibers wie im ASSIGN.SYS File angegeben. Für den Bildschirm gilt:
1 = aktuelle Auflösung
x = 2 + Getrez()  
work_in[1] Linientyp
work_in[2] Linienfarbe
work_in[3] Markertyp
work_in[4] Markerfarbe
work_in[5] Zeichensatznummer
work_in[6] Textfarbe
work_in[7] Fülltyp
work_in[8] Füllmuster-Index
work_in[9] Füllmusterfarbe
work_in[10] welche Koordinaten sollen benutzt werden:
0 = NDC-Koordinaten
2 = RC-Koordinaten
work_in[11] Seitenformat
0 = Voreinstellung benutzen
1 = DIN A3
2 = DIN A4
3 = DIN A5
4 = DIN B5
16 = Letter Size
17 = Half Size
18 = Legal Size
19 = Double Size
20 = Broad Sheet Size
work_in[12]  
+  
work_in[13] Zeiger auf einen GEMDOS-Dateinamen in C-Konvention (null-terminiert), oder NULL
work_in[14] reserviert, sollte 0 sein
work_in[15] reserviert, sollte 0 sein
work_out Zeiger auf ein Integerfeld, das genauere Informationen über den geladenen Gerätetreiber enthält
work_out[0] Anzahl der maximal ansprechbaren Rastereinheiten in der Horizontalen
work_out[1] Anzahl der maximal ansprechbaren Rastereinheiten in der Vertikalen
work_out[2] Skalierungsflag:
0 = Gerät kann exakt skalieren
1 = Gerät kann nicht exakt skalieren
work_out[3] Breite einer Rastereinheit in Mikrometern
work_out[4] Höhe einer Rastereinheit in Mikrometern
work_out[5] Anzahl der Zeichensatzhöhen oder Null, falls die Höhe kontinuierlich verändert werden kann
work_out[6] Anzahl der Linientypen
work_out[7] Anzahl der Linienbreiten oder Null, falls die Strichstärke kontinuierlich verändert werden kann
work_out[8] Anzahl der Markertypen
work_out[9] Anzahl der Markergrößen oder Null, falls die Größe kontinuierlich verändert werden kann
work_out[10] Anzahl der Zeichensätze
work_out[11] Anzahl der Füllmuster
work_out[12] Anzahl der Schraffurarten
work_out[13] Anzahl der vordefinierten Farben
work_out[14] Anzahl der verfügbaren Grafikgrundfunktionen (GENERAL DRAWING PRIMITIV, GDP)
work_out[15] Liste der auf dem Gerät verfügbaren GDP's. Sind es weniger als zehn wird die Liste durch -1 beendet. Das VDI unterstützt folgende GDP's:
1 = v_bar
2 = v_arc
3 = v_pieslice
4 = v_circle
5 = v_ellipse
6 = v_ellarc
7 = v_ellpie
8 = v_rbox
9 = v_rfbox
10 = v_justified
:  
work_out[24]  
work_out[25] Liste aller Attribute der GDP's:
0 = Linie
1 = Marker
2 = Text
3 = Füllbereich
4 = kein Attribut
:  
work_out[34]  
work_out[35] das Gerät ist farbtüchtig (1) oder nicht (0)
work_out[36] das Gerät kann Text rotieren (1) oder nicht (0)
work_out[37] das Gerät kann eine Fülloperation ausführen (1) oder nicht (0)
work_out[38] das Gerät unterstützt CELL ARRAY (1) oder nicht (0)
work_out[39] Anzahl der verfügbaren Farben oder
0 = mehr als 32767 Farben verfügbar
2 = monochrom
work_out[40] Grafik-Cursor-Kontrolle
0 = keine
1 = nur die Tastatur
2 = Tastatur und andere Geräte
work_out[41] Eingabegerät für variierende Eingaben
0 = keine
1 = nur die Tastatur
2 = anderes Gerät
work_out[42] Auswahltasten
0 = keine
1 = Funktionstasten auf der Tastatur
2 = zusätzliches Tastenfeld
work_out[43] alphanumerische Eingabe
0 = keine
1 = Tastatur
work_out[44] Gerätetyp:
0 = reines Ausgabegerät
1 = reines Eingabegerät
2 = Ein/Ausgabegerät
3 = reserviert
4 = Metafile Ausgabe
work_out[45] kleinste Buchstabenbreite
work_out[46] kleinste Buchstabenhöhe
work_out[47] größte Buchstabenbreite
work_out[48] größte Buchstabenhöhe
work_out[49] kleinste darstellbare Linienbreite
work_out[50] immer Null
work_out[51] größte Linienbreite
work_out[52] immer Null
work_out[53] kleinste darstellbare Markerbreite
work_out[54] kleinste darstellbare Markerhöhe
work_out[55] größte Markerbreite
work_out[56] größte Markerhöhe

Hinweis: Das VDI besitzt leider keinen Mechanismus, um bei mehreren virtuellen Workstations die Eingabegeräte zu verwalten. Dies muß deshalb von der Applikation übernommen werden, die die physikalische Workstation des Bildschirms geöffnet hat.
 
Wichtig: Die Kennung der aktuellen physikalischen Bildschirm-Workstation muß beim AES per graf_handle erfragt werden.
 
Achtung: In den TOS-Versionen 1.00, 1.04, 1.06, 1.62 und 2.05 gibt es einen Fehler bei der Verwaltung der virtuellen Workstations. Dies kann sich darin äußern daß Kennungen mehrfach vergeben werden, und deshalb u.U. Workstation-Attribute verstellt werden. Dieser Fehler tritt genau dann auf, wenn in der internen Workstationliste des Bildschirmtreibers Lücken entstehen. Abhilfe: das Patch-Programm VDIFIX in den AUTO-Ordner legen.
Der Fehler tritt auch bei TOS 2.06 und vor dem dem 31.05.1990 erstellten TOS 3.00 auf. Leider ist für diese TOS-Versionen kein Patch verfügbar.
 
Ergebnis: Die Funktion liefert kein direktes Funktionsergebnis.
 
Verfügbar: Supported by all drivers.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_opnwk   v_clsvwk   graf_handle
 

7.10.31 Bindings für v_opnvwk

C: void v_opnvwk ( int16_t *work_in, int16_t *handle, int16_t *work_out );
 
Umsetzung:
 
void v_opnvwk (int16_t *work_in, int16_t *handle,
               int16_t *work_out)
{
   intin[0..10] = work_in[0..10]

   contrl[0] = 100;
   contrl[1] = 0;
   contrl[3] = 11;
   contrl[6] = *handle;

   vdi ();

   *handle = contrl[6];
   work_out[0..44]  = intout[0..44];
   work_out[45..56] = ptsout[0..11];
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 100 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 6 # Einträge in ptsout
contrl+6 contrl[3] 11 # Einträge in intin
contrl+8 contrl[4] 45 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0..10] work_in[0..10]
intout intout[0..44] work_out[0..44]
ptsout ptsout[0..11] work_out[45..56]

7.10.32 v_opnwk

Name: »Open Workstation« - initialisiert einen Gerätetreiber für ein bestimmtes Ein/Ausgabegerät
 
VDI-Nummer: 1
 
Deklaration: void v_opnwk ( int16_t *work_in, int16_t *handle, int16_t *work_out );
 
Beschreibung: Die Funktion lädt einen Gerätetreiber. Dazu muß sich jedoch das GDOS im Speicher befinden und der Gerätetreiber muß im ASSIGN.SYS File aufgezählt sein. Falls alles geklappt hat, erhält man in handle eine positive Gerätekennung und Null im Fehlerfall.
 
Parameter Bedeutung
   
work_in Zeiger auf ein Integerfeld mit den genaueren Spezifikationen des zu ladenden Gerätetreibers
work_in[0] Nummer des Gerätetreibers wie im ASSIGN.SYS File angegeben. Für den Bildschirm gilt:
1 = aktuelle Auflösung
x = 2 + Getrez()  
work_in[1] Linientyp
work_in[2] Linienfarbe
work_in[3] Markertyp
work_in[4] Markerfarbe
work_in[5] Zeichensatznummer
work_in[6] Textfarbe
work_in[7] Fülltyp
work_in[8] Füllmuster-Index
work_in[9] Füllmusterfarbe
work_in[10] welche Koordinaten sollen benutzt werden:
0 = NDC-Koordinaten
2 = RC-Koordinaten
work_in[11] Seitenformat
0 = Voreinstellung benutzen
1 = DIN A3
2 = DIN A4
3 = DIN A5
4 = DIN B5
16 = Letter Size
17 = Half Size
18 = Legal Size
19 = Double Size
20 = Broad Sheet Size
work_in[12]  
+  
work_in[13] Zeiger auf einen GEMDOS-Dateinamen in C-Konvention (null-terminiert), oder NULL
work_in[14] reserviert, sollte 0 sein
work_in[15] reserviert, sollte 0 sein
work_out Zeiger auf ein Integerfeld, das genauere Informationen über den geladenen Gerätetreiber enthält
work_out[0] Anzahl der maximal ansprechbaren Rastereinheiten in der Horizontalen
work_out[1] Anzahl der maximal ansprechbaren Rastereinheiten in der Vertikalen
work_out[2] Skalierungsflag:
0 = Gerät kann exakt skalieren
1 = Gerät kann nicht exakt skalieren
work_out[3] Breite einer Rastereinheit in Mikrometern
work_out[4] Höhe einer Rastereinheit in Mikrometern
work_out[5] Anzahl der Zeichensatzhöhen oder Null, falls die Höhe kontinuierlich verändert werden kann
work_out[6] Anzahl der Linientypen
work_out[7] Anzahl der Linienbreiten oder Null, falls die Strichstärke kontinuierlich verändert werden kann
work_out[8] Anzahl der Markertypen
work_out[9] Anzahl der Markergrößen oder Null, falls die Größe kontinuierlich verändert werden kann
work_out[10] Anzahl der Zeichensätze
work_out[11] Anzahl der Füllmuster
work_out[12] Anzahl der Schraffurarten
work_out[13] Anzahl der vordefinierten Farben
work_out[14] Anzahl der verfügbaren Grafikgrundfunktionen (GENERAL DRAWING PRIMITIV, GDP). Besitzt den Wert 11, wenn 'Escapement Text' (erst ab PC-GEM/3) verfügbar ist.
work_out[15] Liste der auf dem Gerät verfügbaren GDP's. Sind es weniger als zehn wird die Liste durch -1 beendet. Das VDI unterstützt folgende GDP's:
1 = v_bar
2 = v_arc
3 = v_pieslice
4 = v_circle
5 = v_ellipse
6 = v_ellarc
7 = v_ellpie
8 = v_rbox
9 = v_rfbox
10 = v_justified
11 = v_etext
work_out[24] Besitzt den Wert 11, wenn 'Escapement Text' verfügbar ist, und ansonsten den Wert 10. (ab PC-GEM/3).
work_out[25] Liste aller Attribute der GDP's:
0 = Linie
1 = Marker
2 = Text
3 = Füllbereich
4 = kein Attribut
work_out[34]  
work_out[35] das Gerät ist farbtüchtig (1) oder nicht (0)
work_out[36] das Gerät kann Text rotieren (1) oder nicht (0)
work_out[37] das Gerät kann eine Fülloperation ausführen (1) oder nicht (0)
work_out[38] das Gerät unterstützt CELL ARRAY (1) oder nicht (0)
work_out[39] Anzahl der verfügbaren Farben oder
0 = mehr als 32767 Farben verfügbar
2 = monochrom
work_out[40] Grafik-Cursor-Kontrolle
0 = keine
1 = nur die Tastatur
2 = Tastatur und andere Geräte
work_out[41] Eingabegerät für variierende Eingaben
0 = keine
1 = nur die Tastatur
2 = anderes Gerät
work_out[42] Auswahltasten
0 = keine
1 = Funktionstasten auf der Tastatur
2 = zusätzliches Tastenfeld
work_out[43] alphanumerische Eingabe
0 = keine
1 = Tastatur
work_out[44] Gerätetyp:
-1 = Ausgabegerät kann im Querformat ausgeben (ab PC-GEM/3)
0 = reines Ausgabegerät
1 = reines Eingabegerät
2 = Ein/Ausgabegerät
3 = reserviert
4 = Metafile Ausgabe
work_out[45] kleinste Buchstabenbreite
work_out[46] kleinste Buchstabenhöhe
work_out[47] größte Buchstabenbreite
work_out[48] größte Buchstabenhöhe
work_out[49] kleinste darstellbare Linienbreite
work_out[50] immer Null
work_out[51] größte Linienbreite
work_out[52] immer Null
work_out[53] kleinste darstellbare Markerbreite
work_out[54] kleinste darstellbare Markerhöhe
work_out[55] größte Markerbreite
work_out[56] größte Markerhöhe

Hinweis: Die Komponenten work_in[11] bis work_in[15] sind nur unter NVDI sinnvoll, und erlauben es, das Seitenformat für Drucker- und Bit-Image Treiber, sowie den Ausgabekanal zu setzen. Bei einem Metafile-Treiber wirkt sich die Einstellung des Seitenformates nicht aus; hier wird lediglich der Dateiname übernommen. Um zu überprüfen, ob das Seiten- bzw. Papierformat tatsächlich eingestellt werden konnte, sollte auf die Funktion vq_extnd zurückgegriffen werden.
 
Die in den Elementen work_out[0,1] zurückgelieferten Werte beschreiben den tatsächlich bedruckbaren Bereich; die nicht bedruckbaren Bereiche können per vq_extnd ermittelt werden.
 
Die hier angegebene Belegung der work_in und work_out Arrays ist übrigens nicht mehr vollständig kompatibel zum PC-GEM, da ab GEM/3 teilweise erhebliche Änderungen bzw. Erweiterungen vorgenommen wurden, die auf dem Atari nicht (oder in anderer Weise) übernommen wurden.
 
Achtung: Bei Druckertreibern, und speziell bei den Atari Seitendruckern gibt es einige Besonderheiten zu beachten.
 
Ergebnis: Die Funktion liefert kein direktes Funktionsergebnis.
 
Verfügbar: Available only with some form of GDOS.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   GDOS   v_clswk   v_opnvwk
 

7.10.33 Bindings für v_opnwk

C: void v_opnwk ( int16_t *work_in, int16_t *handle, int16_t *work_out );
 
Umsetzung:
 
void v_opnwk (int16_t *work_in, int16_t *handle,
              int16_t *work_out)
{
   intin[0..15] = work_in[0..15];

   contrl[0] = 1;
   contrl[1] = 0;
   contrl[3] = 16;
   contrl[6] = 0;

   vdi ();

   *handle = contrl[6];
   work_out[0..44]  = intout[0..44];
   work_out[45..56] = ptsout[0..11];
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 1 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 6 # Einträge in ptsout
contrl+6 contrl[3] 16 # Einträge in intin
contrl+8 contrl[4] 45 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0..15] work_in[0..15]
intout intout[0..44] work_out[0..44]
ptsout ptsout[0..11] work_out[45..56]

Hinweis: Das angegebene Binding gilt für den Einsatz unter NVDI. Bei Druckertreibern gilt es einige Besonderheiten zu beachten; zunächst kann bei Matrix-Druckern die maximale Auflösung angegeben werden. Dies geht wie folgt:
 
ptsin[0] = maximale Auflösung in x-Richtung
ptsin[1] = maximale Auflösung in y-Richtung
contrl[1] = 1

Darüber hinaus kann für die Atari-Seitendrucker die Adresse des internen Puffers ermittelt werden:
 
contrl[0] = High-Word
contrl[1] = Low-Word der Pufferadresse
Querverweis: v_opnwk   GDOS   GDOS-Treiber
 

7.10.34 Änderungen in PC-GEM

Ab PC-GEM/3 wurde das work_in-Feld bei v_opnwk erweitert, um noch zur Laufzeit einige Einstellungen für den Treiber vornehmen zu können. Die folgenden Informationen sind jedoch nicht kompatibel zum Atari-GEM bzw. zu NVDI. Es gilt:

Element Bedeutung
   
work_in[11] Im niederwertigen Byte wird die Ausgabe genauer spezifiziert. Es gilt:
0 = Datei
1 = serieller Port
2 = paralleler Port
3 = gerätespezifisch (direkt)
255 = Default-Schnittstelle

Im höherwertigen Byte wird die Seitengröße angegeben. Es gilt:
0 = Letter Size ( 8.50 * 11.00 Zoll)
5 = Half Size ( 8.50 * 5.50 Zoll)
10 = B5 Size (18.20 * 25.00 cm)
20 = Letter Size ( 8.50 * 11.00 Zoll)
30 = A4 Size (21.00 * 29.70 cm)
40 = Legal Size ( 8.50 * 14.00 Zoll)
50 = Double Size (11.00 * 17.00 Zoll)
55 = Broad Sheet (14.00 * 11.00 Zoll)
255 = Benutzerspezifiziert (work_in[101,102])
work_in[12] Ausgabeport bzw. Dateiname
...  
...  
work_in[100]  
work_in[101] Seitenbreite in 1/100 Zoll
work_in[102] Seitenhöhe in 1/100 Zoll
work_out[14] Hat den Wert 11, wenn Escapement-Text verfügbar ist.
work_out[24] Hat den Wert 11, wenn Escapement-Text der einzig verfügbare Text auf dem Ausgabegerät ist, und anderenfalls den Wert 10.
work_out[44] Ein Wert von -1 bedeutet, daß das Ausgabegerät im Querformat ausgeben kann, ohne daß die Applikation selbst die Grafik drehen muss. Das OUTPUT-Programm von PC-GEM übernimmt das Drehen allerdings selbst, da diese Möglichkeit in älteren GEM-Versionen noch nicht zur Verfügung stand.

Hinweis: Besitzt work_in[11] den Wert 1 oder 2, so muß work_in[12] auf die Port-Nummer gestellt werden (LPT1 = 0, LPT2 = 1, COM1 = 0, etc.). Besitzt work_in[11] hingegen den Wert 0, so muß sich ab work_in[12] der Name der Datei befinden, in die geschrieben werden soll; dieser wird Zeichen für Zeichen (16-Bit-Worte !) geschrieben, und muss mit dem Wert Null enden.

Querverweis: Kontrollfunktionen   v_opnwk

7.10.35 v_pat_rotate

Name: »Pattern rotation«
 
VDI-Nummer: 134
 
Deklaration: void v_pat_rotate( int16_t handle, int16_t angle)
 
Beschreibung: This call specifies pattern rotation angle. It is implemented only in printer drivers and is restricted to multiples of 90 degree.
 
Parameter Bedeutung
   
handle Kennung der Workstation.
angle Angle in tenths of a degree
Ergebnis: Die Funktionliefert keine Ergebnis.
 
Verfügbar: GEM/3 Releas 3.1
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding
 

7.10.36 Bindings für v_pat_rotate

C: void v_pat_rotate( int16_t handle, int16_t angle );
 
Umsetzung:
 
void v_pat_rotate( int16_t handle, int16_t angle )
{
   intin[0] = angle;

   contrl[0] = 134;
   contrl[1] = 0;
   contrl[3] = 1;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 134 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 1 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] angle

7.10.37 v_resize_bm

Name: »Resize Bitmap« - Größe einer Offscreenbitmap verändern
 
VDI-Nummer: 100 (Unterfunktion 2)
 
Deklaration: int16_t v_resize_bm( int16_t handle, int16_t width, int16_t height, int32_t byte_width, uint16_t *addr );
 
Beschreibung: Mit dieser Funktion kann die Größe einer Offscreenbitmap verändert werden. RESIZE BITMAP kann auch ein eigener Speicherbereich übergeben werden, für den dann folgende Punkte eingehalten werden müssen:
 
Der Speicherbereich muß auf einer 16-Byte-Grenze beginnen
 
Vor und hinter dem Speicherbereich müssen mindestens 16 Bytes frei sein, die dem Aufrufer gehören, da einige Grafikfunktionen abhängig vom Ausgabebereich einige Bytes vor oder der hinter der Bitmap lesen und evtl. sogar beschreiben (dabei ändert sich dann allerdings nicht der Inhalt dieser Speicherbereiche; es werden dann nur maskierte Daten unverändert zurückgeschrieben).
 
Wer das nicht beachtet, wird u.U. mit Speicherschießern gesegnet. Wir empfehlen daher die Speicheranforderung NVDI zu überlassen!
 
Parameter Bedeutung
   
handle Handle von v_opnbm oder v_open_bm.
width neue Breite in Pixeln
height neue Höhe in Pixeln
byte_width Breite einer Zeile in Bytes (nur wenn addr gültig ist)
addr Zeiger auf eigenen Speicherbereich oder 0L
Ergebnis: Wenn das Funktionsresultat 0 ist, konnte die neue Bitmap nicht aufgebaut werden. Da die alte Bitmap in diesem Fall bereits freigegeben worden ist, kann versucht werden, eine kleinere Bitmap anzulegen, oder die Bitmap muß; mit v_clsbm geschlossen werden.
 
Verfügbar: ab EdDI-Version 1.20
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   NVDI   Off-Screen-Bitmaps
 

7.10.38 Bindings für v_resize_bm

C: int16_t v_resize_bm( int16_t handle, int16_t width, int16_t height, int32_t byte_width, uint16_t *addr );
 
Umsetzung:
 
int16_t v_resize_bm( int16_t handle, int16_t width,
                     int16_t height, int32_t byte_width,
                     uint16_t *addr )
{
   intin[0] = width;
   intin[1] = height;
   intin[2..3] = byte_width;
   intin[4..5] = addr;

   contrl[0] = 100;
   contrl[1] = 0;
   contrl[3] = 6;
   contrl[5] = 2;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 100 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 6 # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+10 contrl[5] 2 # Unterfunktion
contrl+12 contrl[6] handle
intin intin[0] width
intin+2 intin[1] height
intin+4 intin[2..3] byte_width
intin+8 intin[4..5] addr
intout intout[0] Return-Wert

7.10.39 v_savecache

Name: »Save Outline cache to disk« - speichert den Inhalt des Vektorzeichen-Caches.
 
VDI-Nummer: 249
 
Deklaration: int16_t v_savecache ( int16_t handle, int8_t *filename );
 
Beschreibung: Die Funktion speichert den Inhalt des Vektorzeichen-Caches in einer Datei ab. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
filename Name der Datei

Hinweis: Die Datei wird im aktuellen Verzeichnis abgelegt.
 
Ergebnis: Die Funktion liefert im Fehlerfall den Wert -1, anderenfalls den Wert 0.
 
Verfügbar: FSMGDOS, ab SpeedoGDOS 4.00
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_flushcache   v_loadcache   vqt_cachesize
 

7.10.40 Bindings für v_savecache

C: int16_t v_savecache ( int16_t handle, int8_t *filename );
 
Umsetzung:
 
int16_t v_savecache ( int16_t handle, int8_t *filename )
{
   intin[0..n] = filename;      /* In 16-Bit Worte */

   contrl[0] = 249;
   contrl[1] = 0;
   contrl[3] = n;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 249 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] n # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0..n] filename
intout intout[0] Return-Wert

7.10.41 v_save_cache

Name: »Save Outline cache to disk« - speichert den Inhalt des Vektorzeichen-Caches.
 
VDI-Nummer: 226 (Subcode 6)
 
Deklaration: int16_t v_save_cache ( int16_t handle, int8_t *filename );
 
Beschreibung: Die Funktion speichert den Inhalt des Vektorzeichen-Caches in einer Datei ab. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
filename Name der Datei

Hinweis: Die Datei wird im aktuellen Verzeichnis abgelegt.
 
Ergebnis: Die Funktion liefert im Fehlerfall den Wert -1, anderenfalls den Wert 0.
 
Verfügbar: Ab SpeedoGDOS 5.1
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_flushcache   v_loadcache   v_savecache   vqt_cachesize
 

7.10.42 Bindings für v_save_cache

C: int16_t v_save_cache ( int16_t handle, int8_t *filename );
 
Umsetzung:
 
int16_t v_save_cache ( int16_t handle, int8_t *filename )
{
   intin[0..n] = filename;      /* In 16-Bit Worte */

   contrl[0] = 226;
   contrl[1] = 0;
   contrl[3] = n;
   contrl[5] = 6;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 226 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] n # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+10 contrl[5] 6 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..n] filename
intout intout[0] Return-Wert

7.10.43 v_set_app_buff

Name: »Reserve Bezier workspace« - Speicher für Bezier-Spline-Erzeugung reservieren.
 
VDI-Nummer: -1
 
Deklaration: void v_set_app_buff ( int16_t handle, int16_t **address, int16_t nparagraphs );
 
Beschreibung: Die Funktion legt den Puffer für die Bezier-Spline Erzeugung fest. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
adress Adresse des Puffers
nparagraphs Größe des Puffers in 16-Byte Blöcken

Hinweis: Werden Bezier-Funktionen aufgerufen, so werden in diesem Puffer die Spline-Daten abgelegt. Vor Programmende sollte man mit dieser Funktion einen Null-Zeiger als Puffer mit Größe 0 setzen.
 
Wenn diese Funktion von der Applikation nicht aufgerufen wird, legt GDOS einen eigenen Puffer von ca. 8 Kbyte an.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: FONTGDOS, FSMGDOS, ab GEM/3 Release 3.1, ab SpeedoGDOS 4.00 und ab NVDI 2.10. Die Funktion taucht in der Doku (Papierform) zu NVDI 2.10 auf. Bei allen restlichen Beschreibungen nicht mehr.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_bez_on   v_bez_off   v_bez   v_bez_fill   v_bez_qual   GDOS   SpeedoGDOS
 

7.10.44 Bindings für v_set_app_buff

C: void v_set_app_buff ( int16_t handle, int16_t **address, int16_t nparagraphs );
 
Umsetzung:
 
void v_set_app_buff ( int16_t handle, int16_t **address,
                      int16_t nparagraphs )
{
   intin[0..1] = address;
   intin[2] = nparagraphs;

   contrl[0] = -1;
   contrl[1] = 0;
   contrl[3] = 3;
   contrl[5] = 6;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] -1 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 3 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 6 # Unterfunktion
contrl+12 contrl[6] handle
intin intin[0..1] address
intin+4 intin[2] nparagraphs

7.10.45 v_updwk

Name: »Update Workstation« - gepufferte Ausgabekommandos ausführen
 
VDI-Nummer: 4
 
Deklaration: void v_updwk ( int16_t handle );
 
Beschreibung: Die Funktion veranlaßt das Ausgabegerät mit der Kennung handle, alle gepufferten Kommandos auszuführen.
 
Hinweis: Auf dem Bildschirm oder bei Offscreen-Bitmaps wird diese Funktion nicht benötigt, da hier alle Grafikkommandos sofort ausgeführt werden. Bei einem Drucker wird kein Seitenvorschub ausgeführt, bei einem Metafile wird nur der Opcode in den Puffer geschrieben.
 
Vor der Druckausgabe sollte die Funktion übrigens einmalig aufgerufen werden, um den Drucker zu initialisieren. Einige Besonderheiten gibt es bei Druckertreibern und speziell den Atari-SLM-Laserdruckern zu beachten.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: Supported by all printer, metafile, plotter, and camera devices when using any form of GDOS.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   v_opnwk   v_output_window
 

7.10.46 Bindings für v_updwk

C: void v_updwk ( int16_t handle );
 
Umsetzung:
 
void v_updwk (int16_t handle)
{
   contrl[0] = 4;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 4 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle

Hinweis: Bei Druckertreibern kann statt der aktuellen Seite auch ein eigener Puffer ausgegeben werden. Dies geht wie folgt:
 
intin[0]  = High-Word
intin[1]  = Low-Word der Pufferadresse
contrl[0] = 4;
contrl[1] = 1; /* Puffer nicht löschen */
contrl[3] = 2;
contrl[6] = handle;
vdi ();

Bei Laserdruckern der Atari-SLM-Reihe läßt sich darüber hinaus der Status des Ausgabegerätes ermitteln. Es gilt:
 
intout[0] Bedeutung
   
0 kein Fehler.
2 Drucker nicht bereit.
3 Toner leer.
5 kein Papier vorhanden.
Querverweis: v_updwk   Kontrollfunktionen   GDOS   GDOS-Treiber
 

7.10.47 vs_clip

Name: »Set clipping Rectangle« - setzt Begrenzungsrechteck.
 
VDI-Nummer: 129
 
Deklaration: void vs_clip ( int16_t handle, int16_t clip_flag, int16_t *pxyarray );
 
Beschreibung: Die Funktion begrenzt alle grafischen Ausgaben auf einen bestimmten Bereich. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
clip_flag
0 = Clipping ausschalten
1 = Clipping einschalten
pxyarray[0] x-Koordinate
pxyarray[1] y-Koordinate des Eckpunktes
pxyarray[2] x-Koordinate
pxyarray[3] y-Koordinate der diagonal gegenüberliegenden Ecke

Hinweis: Das Clipping sollte aus Sicherheitsgründen immer eingeschaltet werden, da die Ausgaberoutinen beim Überschreiten der Bildschirmgrenzen sehr schnell große Speicherbereiche überschreiben, was zu unerfreulichen Abtürzen und Datenmüll führen kann.
 
Wenn der Arbeitsbereich den ganzen Bildschirm einbeziehen soll, ist es ratsam, bei vs_clip() die bei v_opnvwk() erhaltenen Bildschirmausmaße einzustellen.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: Supported by all drivers.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   Clipping
 

7.10.48 Bindings für vs_clip

C: void vs_clip ( int16_t handle, int16_t clip_flag, int16_t *pxyarray );
 
Umsetzung:
 
void vs_clip (int16_t handle, int16_t clip_flag,
              int16_t *pxyarray)
{
   intin[0] = clip_flag;
   ptsin[0..3] = pxyarray[0..3];

   contrl[0] = 129;
   contrl[1] = 2;
   contrl[3] = 1;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 129 # Opcode der Funktion
contrl+2 contrl[1] 2 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 1 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] clip_flag
ptsin ptsin[0..3] pxyarray[0..3]

7.10.49 vst_ex_load_fonts

Name: »Load Fonts« - Zeichensätze laden
 
VDI-Nummer: 119
 
Deklaration: int16_t vst_ex_load_fonts ( int16_t handle, int16_t select, int16_t font_max, int16_t font_free );
 
Beschreibung: This function is an extension of the existing vst_load_fonts call, with two additional input arguments to provide control over font paging memory. The current defaults in units of paragraphs are:
 
                  font_max     font_free
for screens:     5120 (80K)         0
for printers:      32767       640 (10K)

The GDOS attempts to allocate font_max paragraphs or all of available menory (whichever is smaller) less font_free paragraphs, and use this amount for font paging.
 
Depending on your needs, you can use either version of this call. Note that both version use the same opcode.
 
Parameter Bedeutung
   
handle Kennung der Workstation
select reserviert, sollte 0 sein
font_max Maximum number of paragraphs to allocate
font_free Minimum number of paragraphs to leave free
Ergebnis: Als Ergebnis erhält man die Anzahl der geladenen Zeichensätze.
 
Verfügbar: GEM/3 Release 3.1
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   vst_unload_fonts   vst_font   vqt_name   ASSIGN.SYS-Datei   GDOS
 

7.10.50 Bindings für vst_ex_load_fonts

C: int16_t vst_ex_load_fonts ( int16_t handle, int16_t select, int16_t font_max, int16_t font_free );
 
Umsetzung:
 
int16_t vst_ex_load_fonts ( int16_t handle, int16_t select,
                            int16_t font_max,
                            int16_t font_free )
{
   intin[0] = select;
   intin[1] = font_max;
   intin[2] = font_free;

   contrl[0] = 119;
   contrl[1] = 0;
   contrl[3] = 3;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 119 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 3 # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] select
intin+2 intin[1] font_max
intin+4 intin[2] font_free
intout intout[0] Return-Wert

7.10.51 vst_load_fonts

Name: »Load Fonts« - Zeichensätze laden
 
VDI-Nummer: 119
 
Deklaration: int16_t vst_load_fonts ( int16_t handle, int16_t select );
 
Beschreibung: Die Funktion lädt eine Reihe weiterer Zeichensätze für die Workstation mit der Kennung handle, die in der ASSIGN.SYS Datei angegeben sein muss. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
select reserviert, sollte 0 sein

Hinweis: Diese Funktion darf nur aufgerufen werden, falls ein GDOS installiert ist.
 
Ergebnis: Als Ergebnis erhält man die Anzahl der geladenen Zeichensätze.
 
Verfügbar: Available with any form of GDOS.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   vst_unload_fonts   vst_font   vqt_name   ASSIGN.SYS-Datei   GDOS
 

7.10.52 Bindings für vst_load_fonts

C: int16_t vst_load_fonts ( int16_t handle, int16_t select );
 
Umsetzung:
 
int16_t vst_load_fonts (int16_t handle, int16_t select)
{
   intin[0] = select;

   contrl[0] = 119;
   contrl[1] = 0;
   contrl[3] = 1;
   contrl[6] = handle;

   vdi ();

   return ( intout[0] );
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 119 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 1 # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] select
intout intout[0] Return-Wert

7.10.53 vst_unload_fonts

Name: »Unload Fonts« - löscht geladene Zeichensätze
 
VDI-Nummer: 120
 
Deklaration: void vst_unload_fonts ( int16_t handle, int16_t select );
 
Beschreibung: Die Funktion entfernt alle Zeichensätze, die vorher durch einen vst_load_fonts Aufruf geladen worden sind. Es gilt:
 
Parameter Bedeutung
   
handle Kennung der Workstation
select reserviert, sollte 0 sein

Hinweis: System- und Vektorzeichensätze bleiben von dieser Funktion unberührt.
 
Ergebnis: Die Funktion liefert kein Ergebnis.
 
Verfügbar: Available with any form of GDOS.
 
Gruppe: Kontrollfunktionen
 
Querverweis: Binding   GDOS   vst_load_fonts
 

7.10.54 Bindings für vst_unload_fonts

C: void vst_unload_fonts ( int16_t handle, int16_t select );
 
Umsetzung:
 
void vst_unload_fonts (int16_t handle, int16_t select)
{
   intin[0] = select;

   contrl[0] = 120;
   contrl[1] = 0;
   contrl[3] = 1;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:
 

Adresse Feldelement Belegung
contrl contrl[0] 120 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] 1 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] select

Home VDIVDI FarbtabellenfunktionenFarbtabellenfunktionen RasterfunktionenRasterfunktionen