This is an old version from the tos.hyp. The new is on GitHub!

HomeVDIEingabefunktionenFarbtabellenfunktionen

7.8 Escapefunktionen

Diese Bibliothek enthält Funktionen, um spezielle Eigenschaften eines Grafikgerätes gezielt auszunutzen. Zu diesem Zweck stehen die folgenden Funktionsgruppen zur Verfügung:

Querverweis: Workstations des VDI   Style-Guidelines

7.8.1 Grafikspezial-Funktionen

Diese Bibliothek enthält Funktionen um Informationen auf einem Drucker auszugeben, zur Steuerung der Farbkalibration uvm. Insgesamt stehen die folgenden Routinen zur Verfügung:

v_bit_image Bildinformationen auf Drucker ausgeben.
v_clear_disp_list Druckpuffer löschen.
v_copies Anzahl der Kopien festlegen.
v_dspcur Grafikcursor versetzen.
v_form_adv Seitenvorschub auf Drucker durchführen.
v_hardcopy Hardcopy auf Drucker ausgeben.
v_orient Ausgabeformat einstellen.
v_output_window Bildschirmbereich auf Drucker ausgeben.
v_page_size Seitenformat festlegen.
v_rmcur Letzten Grafikcursor löschen.
v_tray Schacht für Papiereinzug/ausgabe wählen.
v_xbit_image Bildinformationen auf Drucker ausgeben.
vq_calibrate Farbkalibrierung testen.
vq_margins Druckerränder erfragen.
vq_page_name Name und Größe eines Seitenformats ermitteln.
vq_prn_scaling Skalierung des Druckertreibers ermitteln
vq_scan Druckerparameter ermitteln.
vq_tabstatus Verfügbarkeit eines Grafiktabletts, Maus, usw. abfragen.
vq_tray_names Namen von Papiereinzug/auswurf ermitteln.
vs_calibrate Farbkalibration setzen.
vs_document_info Dokumentangaben für Druckmonitor setzen
vs_palette Auswahl der Farbpalette.

Querverweis: Workstations des VDI   Style-Guidelines

7.8.1.1 vq_calibrate

Name: »Inquire calibration« - Farbkalibration testen.
VDI-Nummer: 5 (Escape 77)
Deklaration: int16_t vq_calibrate ( int16_t handle, int16_t *flag );
Beschreibung: Die Funktion überprüft, ob Funktionen zur Kalibrierung vorhanden sind, und ob diese eingeschaltet ist. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
flag Kalibration
0 = ausgeschaltet
1 = eingeschaltet
Ergebnis: Die Funktion liefert den Wert 1, wenn Funktionen zur Kalibrierung vorhanden sind, anderenfalls den Wert 0.
Verfügbar:
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   vs_calibrate

7.8.1.2 Bindings für vq_calibrate

C: int16_t vq_calibrate ( int16_t handle, int16_t *flag );
Umsetzung:
int16_t vq_calibrate (int16_t handle, int16_t *flag)
{
   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 1;
   contrl[5] = 77;
   contrl[6] = handle;

   vdi ();

   *flags = intout[0];
   return (  contrl[4] );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 77 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] flag


Hinweis: n gibt die Anzahl der Einträge im intout-Feld an. Falls contrl[4] den Wert 0 enthält, wird eine Kalibrierung nicht unterstützt.

7.8.1.3 vq_margins

Name: »Inquire Printer Margins« - Druckerränder erfragen.
VDI-Nummer: 5 (Escape 2100)
Deklaration: int16_t vq_margins( int16_t handle, int16_t *top_margin, int16_t *bottom_margin, int16_t *left_margin, int16_t *right_margin, int16_t *hdpi, int16_t *vdpi );
Beschreibung: Die Funktion ermittelt die Druckerränder. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
top_margin oberer Rand in Pixeln
bottom_margin unterer Rand in Pixeln
left_margin linker Rand in Pixeln
right_margin rechter Rand in Pixeln
hdpi horizontale dpi-Auflösung
vdpi vertikale dpi-Auflösung
Ergebnis: 0: Funktion existiert nicht
Verfügbar: ab NVDI 5.00
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.4 Bindings für vq_margins

C: int16_t vq_margins( int16_t handle, int16_t *top_margin, int16_t *bottom_margin, int16_t *left_margin, int16_t *right_margin, int16_t *hdpi, int16_t *vdpi );
Umsetzung:
int16_t  vq_margins( int16_t handle, int16_t *top_margin,
                  int16_t *bottom_margin, int16_t *left_margin,
                  int16_t *right_margin, int16_t *hdpi,
                  int16_t *vdpi )
{
   intout[0] = 0;

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

   vdi ();

   *top_margin    = intout[1];
   *bottom_margin = intout[2];
   *left_margin   = intout[3];
   *right_margin  = intout[4];
   *hdpi          = intout[5];
   *vdpi          = intout[6];

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 7 # Einträge in intout
contrl+10 contrl[5] 2100 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] Return-Wert
intout+2 intout[1] top_margin
intout+4 intout[2] bottom_margin
intout+6 intout[3] left_margin
intout+8 intout[4] right_margin
intout+10 intout[5] hdpi
intout+12 intout[6] vdpi

7.8.1.5 vq_page_name

Name: »Inquire Page Name« - Namen und Größe eines Seitenformats ermitteln.
VDI-Nummer: 5 (Escape 38)
Deklaration: int16_t vq_page_name ( int16_t handle, int16_t page_id, int8_t *page_name, int32_t *page_width, int32_t *page_height )
Beschreibung: Die Funktion ermittelt den Namen und die physikalische Größes eines Seitenformates. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
page_id Papierformat
page_name Zeiger auf Papiernamen oder NULL
page_width Papierbreite in 1/1000mm
page_height Papierhöhe in 1/1000mm


Hinweis: Die Angaben der Papiergröße umfassen dabei auch die nicht bedruckbaren Ränder.
Ergebnis: Die Funktion liefert das aktuelle Papierformat zurück. Ein Wert von -1 bedeutet, daß das angegebene Seitenformat dem Treiber nicht bekannt ist; in diesem Fall werden keine Werte in page_width bzw. page_height zurückgeliefert.
Verfügbar: Die Funktion ist nur vorhanden, falls contrl[4] einen Wert ungleich 0 enthält.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_opnwk   vq_extnd

7.8.1.6 Bindings für vq_page_name

C: int16_t vq_page_name ( int16_t handle, int16_t page_id, int8_t *page_name, int32_t *page_width, int32_t *page_height )
Umsetzung:
int16_t vq_page_name ( int16_t handle, int16_t page_id, int8_t *page_name,
                    int32_t *page_width, int32_t *page_height )
{
   intin[0] = page_id;
   intin[1..2] = page_name;

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

   vdi ();

   *page_width  = intout[1..2];
   *page_height = intout[3..4];

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 5 # Einträge in intout
contrl+10 contrl[5] 38 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] page_id
intin+2 intin[1..2] page_name
intout intout[0] Return-Wert
intout+2 intout[1..2] page_width
intout+6 intout[3..4] page_height


Hinweis: Falls contrl[4] den Wert 0 enthält, steht die Funktion nicht zur Verfügung.

7.8.1.7 vq_prn_scaling

Name: »Inquire Printer Scaling« - Skalierung des Druckertreibers ermitteln.
VDI-Nummer: 5 (Escape 39)
Deklaration: fixed vq_prn_scaling( int16_t handle );
Beschreibung: Diese Funktion liefert zurück, ob der Druckertreiber die in den PRN_SETTINGS übergebene Skalierung beachtet. Falls der Treiber die Funktion nicht unterstützt (also ein alter Treiber), liefert das Binding -1 für die Skalierung zurück. Falls es sich um einen neuen Treiber handelt, der die Funktion unterstützt aber nicht skaliert, so liefert dieser -1 zurück.

Falls der Treiber die Skalierung durchführt, wird die eingestellte Skalierung zurückgeliefert (0x10000L entspricht 100 %).
Parameter Bedeutung
   
handle Kennung der Workstation
Ergebnis: -1 falls alter Treiber oder es wird nicht skaliert, sonst eingestellte Skalierung (0x10000L entspricht 100%).
Verfügbar: ab NVDI 5.00
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.8 Bindings für vq_prn_scaling

C: fixed vq_prn_scaling( int16_t handle );
Umsetzung:
fixed vq_prn_scaling( int16_t handle )
{
   intin[0] = -1;
   intin[1] = -1;

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

   vdi ();

   return ( *(fixed *) intout );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intout
contrl+10 contrl[5] 39 # Escape/Sub-opcode
contrl+12 contrl[6] handle
intin intin[0] -1
intin+2 intin[1] -1
intout intout[0..1] Return-Wert


Hinweis: Falls contrl[4] den Wert 0 enthält, steht die Funktion nicht zur Verfügung.

7.8.1.9 vq_scan

Name: »Inquire Printer Scan« - Abfrage der Druckerparameter
VDI-Nummer: 5 (Escape 24)
Deklaration: void vq_scan ( int16_t handle, int16_t *g_slice, int16_t *g_page, int16_t *a_slice, int16_t *a_page, int16_t *div_fac );
Beschreibung: Die Funktion erlaubt die Abfrage verschiedener, druckerspezifischer Parameter. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
g_slice Anzahl der Scheiben, in die der Drucker eine Seite unterteilt
g_page Pixelhöhe einer Scheibe
a_slice Höhe einer Textzeile in Pixeln
a_page Textzeilen pro Seite
div_fac Faktor, durch den die anderen Werte ggfs. noch geteilt werden müssen
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all printer drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.10 Bindings für vq_scan

C: void vq_scan ( int16_t handle, int16_t *g_slice, int16_t *g_page, int16_t *a_slice, int16_t *a_page, int16_t *div_fac );
Umsetzung:
void vq_scan (int16_t handle, int16_t *g_slice,
              int16_t *g_page, int16_t *a_slice,
              int16_t *a_page, int16_t *div_fac)
{
   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 24;
   contrl[6] = handle;

   vdi ();

   *g_slice = intout[0];
   *g_page  = intout[1];
   *a_slice = intout[2];
   *a_page  = intout[3];
   *div_fac = intout[4];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 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] 5 # Einträge in intout
contrl+10 contrl[5] 24 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] g_slice
intout+2 intout[1] g_page
intout+4 intout[2] a_slice
intout+6 intout[3] a_page
intout+8 intout[4] div_fac

7.8.1.11 vq_tabstatus

Name: »Inquire Tablet Status« - ermittelt die Verfügbarkeit einer Eingabeeinheit.
VDI-Nummer: 5 (Escape 16)
Deklaration: int16_t vq_tabstatus ( int16_t handle );
Beschreibung: Die Funktion überprüft auf der Workstation mit der Kennung handle die Verfügbarkeit eines Grafik-Tabletts, einer Maus, eines Joysticks oder eines ähnlichen Gerätes.
Ergebnis: Die Funktion liefert den Wert 1, falls ein entsprechendes Gerät verfügbar ist, bzw. den Wert 0, falls dies nicht der Fall ist.
Verfügbar: Supported by all screen drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.12 Bindings für vq_tabstatus

C: int16_t vq_tabstatus ( int16_t handle );
Umsetzung:
int16_t vq_tabstatus (int16_t handle)
{
   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 16;
   contrl[6] = handle;

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 16 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] Return-Wert

7.8.1.13 vq_tray_names

Name: »Inquire Tray Names« - Namen des Papiereinzugs bzw. Auswurfs ermitteln.
VDI-Nummer: 5 (Escape 36)
Deklaration: void vq_tray_names ( int16_t handle, int8_t *input_name, int8_t *output_name, int16_t *input, int16_t *output );
Beschreibung: Die Funktion ermittelt den Namen des aktuellen Papiereinzugs bzw. -auswurfs. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
input_name Zeiger auf den Einzugs-Namen
output_name Zeiger auf den Auswurfs-Namen
input Papiereinzug
output Papierauswurf


Hinweis: Falls es sich bei den Parametern input_name oder output_name um Null-Zeiger handelt, werden die entsprechenden Werte nicht zurückgeliefert.
Ergebnis: Die Funktion liefert kein direktes Ergebnis zurück.
Verfügbar: Die Funktion ist nur vorhanden, falls contrl[4] einen Wert ungleich 0 enthält.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_tray   v_copies   v_orient

7.8.1.14 Bindings für vq_tray_names

C: void vq_tray_names ( int16_t handle, int8_t *input_name, int8_t *output_name, int16_t *input, int16_t *output );
Umsetzung:
void vq_tray_names ( int16_t handle, int8_t *input_name,
                     int8_t *output_name, int16_t *input,
                     int16_t *output )
{
   intin[0..1] = input_name;
   intin[2..3] = output_name;

   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 4;
   contrl[5] = 36;
   contrl[6] = handle;

   vdi ();

   *input  = intout[0];
   *output = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intout
contrl+10 contrl[5] 36 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..1] input_name
intin+4 intin[2..3] output_name
intout intout[0] input
intout+2 intout[1] output


Hinweis: Falls contrl[4] den Wert 0 enthält, steht die Funktion nicht zur Verfügung.

7.8.1.15 vs_calibrate

Name: »Set calibration« - Farbkalibration setzen
VDI-Nummer: 5 (Escape 76)
Deklaration: int16_t vs_calibrate ( int16_t handle, int16_t flag, int16_t *rgb );
Beschreibung: Die Funktion ermöglicht das Ein- bzw. Ausschalten der Farbkalibration oder das Übergeben einer Kalibrationstabelle. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
flag Kalibration
0 = ausschalten
1 = einschalten
rgb Zeiger auf Kalibrationstabelle oder NULL


Hinweis: Eine Kalibrationstabelle besteht aus 1001 RGB-Einträgen, die für den Wertebereich 0 bis 1000 Promille jedem Eingabewert einen korrigierten Promille-Wert zuordnet. Bevor man diese Funktion aufruft, sollte man mit vq_calibrate feststellen, ob sie überhaupt vorhanden ist.

Die Farbkalibration ist im gesamten System für den mit handle bezeichneten Treiber gültig. Daher sollte sie nicht von einzelnen Anwendungen, sondern nur durch ein CPX-Modul oder Accessory eingestellt werden.
Ergebnis: Die Funktion liefert den Wert 0, wenn die Kalibration ausgeschaltet bzw. den Wert 1, wenn diese eingeschaltet ist.
Verfügbar:
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   vq_calibrate

7.8.1.16 Bindings für vs_calibrate

C: int16_t vs_calibrate ( int16_t handle, int16_t flag, int16_t *rgb );
Umsetzung:
int16_t vs_calibrate (int16_t handle, int16_t flag,
                      int16_t *rgb)
{
   intin[0..1] = rgb;
   intin[2] = flag;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 76 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..1] rgb
intin+4 intin[2] flag
intout intout[0] Return-Wert

7.8.1.17 vs_document_info

Name: »Set Document Info« - Dokumentangaben für Druckmonitor setzen.
VDI-Nummer: 5 (Escape 2103)
Deklaration: int16_t vs_document_info( int16_t handle, int16_t type, void *s, int16_t wchar );
Beschreibung: Mit dieser Funktion übergibt ein Programm verschiedene Angaben über ein Dokument, die der Druckmonitor beim Ausdruck anzeigt.
Parameter Bedeutung
   
handle Kennung der Workstation
type
0 = Name der Applikation
1 = Name des Dokuments
2 = Name des Urhebers/Bearbeiters
3 = Kommentar
4 = Dateiname des Dokuments
s Zeiger auf den String
wchar 0: 8 Bit pro Zeichen
1: 16 Bit pro Zeichen
Ergebnis: 0: Funktion nicht vorhanden
1: alles in Ordnung
Verfügbar: ab NVDI 5.00
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.18 Bindings für vs_document_info

C: int16_t vs_document_info( int16_t handle, int16_t type, void *s, int16_t wchar );
Umsetzung:
int16_t  vs_document_info( int16_t handle, int16_t type,
                           void *s, int16_t wchar )
{
   intin[0] = type;
   intin[1..n-1] = s

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2103 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] type
intin+2 intin[1..n-1] s
intout intout[0] Return-Wert

7.8.1.19 vs_palette

Name: »Select Palette« - wählt eine Farbpalette aus.
VDI-Nummer: 5 (Escape 60)
Deklaration: int16_t vs_palette ( int16_t handle, int16_t palette );
Beschreibung: Die Funktion ermöglicht die Auswahl der Farbpalette auf einer IBM-CGA-Grafikkarte in mittlerer Auflösung. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
palette Farbpalette
0 = Rot, Grün, Blau
1 = Cyan, Magenta, Weiß
Ergebnis: Die Funktion liefert die ausgewählte Palette zurück.
Verfügbar: This call was originally designed for use on IBM CGAbased computers. Its usefulness and availability are not guaranteed under any driver so it should thus be avoided.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.20 Bindings für vs_palette

C: int16_t vs_palette ( int16_t handle, int16_t palette );
Umsetzung:
int16_t vs_palette (int16_t handle, int16_t palette)
{
   intin[0] = palette;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 60 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] palette
intout intout[0] Return-Wert

7.8.1.21 v_bit_image

Name: »Output Bit Image File« - gibt ein Bit-Imagefile auf dem Drucker aus.
VDI-Nummer: 5 (Escape 23)
Deklaration: void v_bit_image ( int16_t handle, CONST int8_t *filename, int16_t aspect, int16_t x_scale, int16_t y_scale, int16_t h_align, int16_t v_align, int16_t *xyarray );
Beschreibung: Die Funktion erlaubt die Ausgabe der in einer Bit-Image (IMG) Datei gespeicherten Bild-Information. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
filename Zeiger auf Datei-Namen
aspect Abbildungsmaßstab
0 = wird ignoriert
1 = Pixel werden berücksichtigt
x_scale Skalierung der x-Achse
y_scale Skalierung der y-Achse, dabei gilt jeweils:
0 = rational (exakter)
1 = ganzzahlig
h_align horizontale Ausrichtung
0 = linksbündig
1 = zentriert
2 = rechtsbündig
v_align vertikale Ausrichtung
0 = oben
1 = zentriert
2 = unten
xyarray[0] x-Koordinate
xyarray[1] y-Koordinate der oberen linken Ecke
xyarray[2] x-Koordinate
xyarray[3] y-Koordinate der unteren rechten Ecke des Ausgaberechteckes.


Hinweis: Wird in aspect der Abbildungsmaßstab berücksichtigt, so erscheinen Kreise als Kreise, Quadrate als Quadrate etc. Das Bild wird auf dem Ausgabegerät dann entsprechend gedehnt. Dies kann u.U. schlecht aussehen, wenn z.B. feine Punktraster gedehnt oder gestaucht werden. Wird das Verhältnis ignoriert, so können aus Kreisen auch Ellipsen werden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all printer, metafile, and memory drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_xbit_image   GDOS   XIMG-Format

7.8.1.22 Bindings für v_bit_image

C: void v_bit_image ( int16_t handle, CONST int8_t *filename, int16_t aspect, int16_t x_scale, int16_t y_scale, int16_t h_align, int16_t v_align, int16_t *xyarray );
Umsetzung:
void v_bit_image (int16_t handle, CONST int8_t *filename,
                  int16_t aspect, int16_t x_scale,
                  int16_t y_scale, int16_t h_align,
                  int16_t v_align, int16_t *xyarray)
{
   int16_t tmp;

   ptsin[0..3] = xyarray[0..3];
   intin[0] = aspect;
   intin[1] = x_scale;
   intin[2] = y_scale;
   intin[3] = h_align;
   intin[4] = v_align;

   tmp = 5;
   while (intin[tmp++] = *filename++)
      ;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] n+5 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 23 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] aspect
intin+2 intin[1] x_scale
intin+4 intin[2] y_scale
intin+6 intin[3] h_align
intin+8 intin[4] v_align
intin+10 intin[5..n+4] filename[0..n-1]
ptsin ptsin[0..3] xyarray[0..3]

7.8.1.23 v_clear_disp_list

Name: »Clear Display List« - löscht die Druckerpufferliste.
VDI-Nummer: 5 (Escape 22)
Deklaration: void v_clear_disp_list ( int16_t handle );
Beschreibung: Die Funktion löscht auf der Workstation mit der Kennung handle den Druckerpuffer.

Hinweis: Ein Seitenvorschub wird dabei nicht durchgeführt. Die Funktion sollte z.B. dann aufgerufen werden, wenn der Benutzer die Grafikausgaben vor dem Ausdruck abbrechen möchte.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all printer, metafile, and memory drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   GDOS   v_clrwk

7.8.1.24 Bindings für v_clear_disp_list

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 22 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.1.25 v_copies

Name: »Set Number of Copies« - Anzahl der Kopien einer Druckseite festlegen.
VDI-Nummer: 5 (Escape 28)
Deklaration: int16_t v_copies ( int16_t handle, int16_t count );
Beschreibung: Die Funktion legt die Anzahl der Kopien einer zu druckenden Seite fest. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
count Anzahl der Kopien (1 = normal) bzw. -1 um die eingestellte Anzahl der Kopien zu ermitteln


Hinweis: Es werden alle Seiten bis zum Schließen des Arbeitsgerätes in der spezifizierten Anzahl ausgegeben.
Ergebnis: Die Funktion liefert die Anzahl der eingestellten Kopien zurück.
Verfügbar: GEM/3 Release 3.1 und ansonsten nur, falls contrl[4] einen Wert ungleich 0 enthält.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_orient   v_tray

7.8.1.26 Bindings für v_copies

C: int16_t v_copies ( int16_t handle, int16_t count );
Umsetzung:
int16_t v_copies ( int16_t handle, int16_t count )
{
   intin[0] = count;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 28 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] count
intout intout[0] Return-Wert


Hinweis: Falls contrl[4] den Wert 0 enthält, steht die Funktion nicht zur Verfügung.

7.8.1.27 v_dspcur

Name: »Place Graphic Cursor at Location« - positioniert den Grafikcursor an die angegebene Position.
VDI-Nummer: 5 (Escape 18)
Deklaration: void v_dspcur ( int16_t handle, int16_t x, int16_t y );
Beschreibung: Die Funktion setzt den Grafikcursor an eine bestimmte Position. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
x neue x-Koordinate
y neue y-Koordinate


Hinweis: Die Funktion ist nur auf Geräten verfügbar, die Positionseingaben zulassen, also z.B. Maus, Joystick oder Trackball.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.28 Bindings für v_dspcur

C: void v_dspcur ( int16_t handle, int16_t x, int16_t y );
Umsetzung:
void v_dspcur (int16_t handle, int16_t x, int16_t y)
{
   ptsin[0] = x;
   ptsin[1] = y;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 18 # Escape/Sub-Oopcode
contrl+12 contrl[6] handle
ptsin ptsin[0] x
ptsin+2 ptsin[1] y

7.8.1.29 v_form_adv

Name: »Form Advance« - erzeugt einen Seitenvorschub.
VDI-Nummer: 5 (Escape 20)
Deklaration: void v_form_adv ( int16_t handle );
Beschreibung: Die Funktion erzeugt auf der Workstation mit der Kennung handle einen Seitenvorschub.

Hinweis: Der Datenpuffer wird dabei nicht gelöscht; bei einem Metafile wird ein entsprechender Eintrag vorgenommen.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_clrwk

7.8.1.30 Bindings für v_form_adv

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 20 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.1.31 v_hardcopy

Name: »Hardcopy« - führt eine Hardcopy des Bildschirms durch.
VDI-Nummer: 5 (Escape 17)
Deklaration: void v_hardcopy ( int16_t handle );
Beschreibung: Die Funktion erstellt eine Hardcopy von der Workstation mit der Kennung handle auf einem Drucker, oder einem ähnlichen Gerät.

Hinweis: Dies ist eine Funktion des Bildschirmtreibers, der dazu auf das XBIOS zugreift.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by screen drivers running under ST compatible resolutions.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.32 Bindings für v_hardcopy

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 17 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.1.33 v_orient

Name: »Set Orientation for Output« - Ausgabeformat festlegen.
VDI-Nummer: 5 (Escape 27)
Deklaration: int16_t v_orient ( int16_t handle, int16_t orientation );
Beschreibung: Die Funktion legt das Ausgabeformat für ein Gerät fest. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
orientation Format
-1 = aktuelles Format ermitteln
0 = Hochformat (Portrait)
1 = Querformat (Landscape)


Hinweis: Die gewünschte Einstellung muss vorgenommen werden, bevor irgendwelche Ausgaben getätigt werden.

Falls nicht genügend Speicherplatz zur Verfügung steht um die Orientierung zu verändern, liefert die Funktion den Wert -1 zurück; in diesem Fall muß die Drucker-Workstation per v_clswk geschlossen werden.
Ergebnis: Die Funktion liefert das eingestellte Ausgabeformat zurück, bzw. im Fehlerfall den Wert -1.
Verfügbar: GEM/3 Release 3.1 und ansonsten nur, falls contrl[4] einen Wert ungleich 0 enthält.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_copies   v_tray

7.8.1.34 Bindings für v_orient

C: int16_t v_orient ( int16_t handle, int16_t orientation );
Umsetzung:
int16_t v_orient ( int16_t handle, int16_t orientation )
{
   intin[0] = orientation;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 27 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] orientation
intout intout[0] Return-Wert


Hinweis: Falls contrl[4] den Wert 0 enthält, steht die Funktion nicht zur Verfügung.

7.8.1.35 v_output_window

Name: »Output Window« - gibt den Fensterinhalt auf dem Drucker aus.
VDI-Nummer: 5 (Escape 21)
Deklaration: void v_output_window ( int16_t handle, int16_t *xyarray );
Beschreibung: Die Funktion erlaubt es, eine einzige Abbildung auf mehrere Blätter verteilt zu drucken. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
xyarray[0] x-Koordinate
xyarray[1] y-Koordinate einer Ecke des Ausgaberechteckes
xyarray[2] x-Koordinate
xyarray[3] y-Koordinate der diagonal gegenüber liegenden Ecke


Hinweis: Der Unterschied zu v_updwk besteht darin, daß ein Ausschnitt aus dem Koordinatensystem des Druckers gewählt werden kann.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all printer and metafile drivers under any type of GDOS.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_updwk

7.8.1.36 Bindings für v_output_window

C: void v_output_window ( int16_t handle, int16_t *xyarray );
Umsetzung:
void v_output_window (int16_t handle, int16_t *xyarray)
{
   ptsin[0..3] = xyarray[0..3];

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 21 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
ptsin ptsin[0..3] xyarray[0..3]

7.8.1.37 v_page_size

Name: »Set Page Size« - legt das Seitenformat fest.
VDI-Nummer: 5 (Escape 37)
Deklaration: int16_t v_page_size ( int16_t handle, int16_t page_id );
Beschreibung: Die Funktion ermöglicht es, daß Seitenformat für ein Ausgabegerät festzulegen. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
page_id gewünschtes Papierformat
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


Hinweis: Falls das gewünschte Format nicht existiert wird das Standard-Format benutzt.
Ergebnis: Die Funktion liefert das eingestellte Papierformat zurück. Bei einem Rückgabewert von -1 muss die Workstation geschlossen werden, da nicht genügend freier Speicher vorhanden ist.
Verfügbar: Die Funktion ist nur vorhanden, falls contrl[4] einen Wert ungleich 0 enthält.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   v_opnwk   vq_extnd

7.8.1.38 Bindings für v_page_size

C: int16_t v_page_size ( int16_t handle, int16_t page_id );
Umsetzung:
int16_t v_page_size ( int16_t handle, int16_t page_id )
{
   intin[0] = page_id;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 37 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] page_id
intout intout[0] Return-Wert


Hinweis: Falls contrl[4] den Wert 0 enthält, steht die Funktion nicht zur Verfügung.

7.8.1.39 v_rmcur

Name: »Remove last Graphic Cursor« - entfernt den Grafikcursor.
VDI-Nummer: 5 (Escape 19)
Deklaration: void v_rmcur ( int16_t handle );
Beschreibung: Die Funktion entfernt auf der Workstation mit der Kennung handle den zuletzt dargestellen Grafikcursor.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding

7.8.1.40 Bindings für v_rmcur

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 19 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.1.41 v_tray

Name: »Set Input and Output Tray« - Einzugsschacht des Druckers festlegen.
VDI-Nummer: 5 (Escape 29)
Deklaration: void v_tray ( int16_t handle, int16_t input, int16_t output, int16_t *set_input, int16_t *set_output );
Beschreibung: Die Funktion bestimmt den Druckerschacht für den Papiereinzug bzw. die Papierausgabe. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
input Papiereinzug
-1 = manueller Einzug
0 = Standardeinzug
1 = erster optionaler Schacht
n = n-ter optionaler Schacht
output Papierausgabe
0 = Standard-Auswurf
1 = zweiter optionaler Schacht
n = n-ter optionaler Schacht
set_input tatsächlich gesetzter Einzug
set_output tatsächlich gesetzter Auswurf


Hinweis: Sollte der angegebene Schacht nicht vorhanden sein, wird die Standardeinstellung benutzt. Die Namen der Einzüge und Papierauswürfe können per vq_tray_names ermittelt werden.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: GEM/3 Release 3.1 und ansonsten nur, falls contrl[4] einen Wert ungleich 0 enthält. In NVDI wird diese Funktion v_trays genannt.
Gruppe: Grafikspezial-Funktionen
Querverweis: Binding   vq_tray_names   v_copies   v_orient

7.8.1.42 Bindings für v_tray

C: void v_tray ( int16_t handle, int16_t input, int16_t output, int16_t *set_input, int16_t *set_output );
Umsetzung:
void v_tray ( int16_t handle, int16_t input, int16_t output,
               int16_t *set_input, int16_t *set_output )
{
   intin[0] = input;
   intin[1] = output;

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

   vdi ();

   *set_input  = intout[0];
   *set_output = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 2 # Einträge in intout
contrl+10 contrl[5] 29 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] input
intin+2 intin[1] output
intout intout[0] set_input
intout+2 intout[1] set_output

7.8.1.43 v_xbit_image

VDI-Nummer: 5 (Escape 101)
Deklaration: void v_xbit_image(int16_t handle, BYTE *filename, int16_t aspect, int16_t x_scale, int16_t y_scale, int16_t h_align, int16_t v_align, int16_t rotation, int16_t foreground, int16_t background, int16_t xy[])
Beschreibung: The call v_xbit_image draws an image from a disk file onto the current device - with rotation and colouring.

Passed #ptsin=2, #intin=8 + length of filename.

INTIN holds:
  • 0 to ignore aspect ratio, 1 to preserve it
  • X axis scaling: 0 = fractional, 1 = integer
  • Y axis scaling: 0 = fractional, 1 = integer
  • Horizontal alignment: 0=left 1=centre 2=right
  • Vertical alignment: 0=top 1=centre 2=bottom
  • Rotation angle, 0 - 3600 in 1/10th degrees
  • Foreground colour if drawing a monochrome image on a colour device
  • Background colour
  • Filename, one character per word
Verfügbar: GEM/3 and later
Gruppe: Grafikspezial-Funktionen

7.8.2 Grafiktablett-Funktionen

Diese Bibliothek enthält Funktionen, um ein Grafiktablett optimal ansprechen zu können. Zu diesem Zweck stehen die folgenden Routinen zur Verfügung:

vq_tdimensions Ausmaße des Grafiktabletts in 1/10-Zoll.
vt_alignment Koordinatensystem des Grafiktabletts ausrichten.
vt_axis Auflösung des Grafiktabletts einstellen.
vt_origin Koordinatenursprung für Grafiktablett setzen.
vt_resolution Auflösung des Grafiktabletts einstellen.

Querverweis: Workstations des VDI   Style-Guidelines

7.8.2.1 vq_tdimensions

Name: »return tablet x and y dimensions« - Ausmaße des Grafiktabletts in 1/10-Zoll.
VDI-Nummer: 5 (Escape 84)
Deklaration: void vq_tdimensions ( int16_t handle, int16_t *xdimension, int16_t *ydimension );
Beschreibung: Die Funktion liefert die Ausmaße eines Grafiktabletts in 1/10 Zoll. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
xdimension Breite in 1/10 Zoll
ydimension Höhe in 1/10 Zoll
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all tablet drivers.
Gruppe: Grafiktablett-Funktionen
Querverweis: Binding   GDOS   vq_tabstatus   vt_alignment   vt_resolution   vt_axis   vt_origin

7.8.2.2 Bindings für vq_tdimensions

C: void vq_tdimensions ( int16_t handle, int16_t *xdimension, int16_t *ydimension );
Umsetzung:
void vq_tdimensions (int16_t handle, int16_t *xdimension,
                     int16_t *ydimension)
{
   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 84;
   contrl[6] = handle;

   vdi ();

   *xdimension = intout[0];
   *ydimension = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intout
contrl+10 contrl[5] 84 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] xdimension
intout+2 intout[1] ydimension

7.8.2.3 vt_alignment

Name: »set tablet alignment« - Koordinatensystem des Grafiktabletts ausrichten.
VDI-Nummer: 5 (Escape 85)
Deklaration: void vt_alignment ( int16_t handle, int16_t dx, int16_t dy );
Beschreibung: Die Funktion dient der Ausrichtung des Koordinatensystems innerhalb eines Ausschnitts des Grafiktabletts. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
dx x-Offset vom Ursprung
dy y-Offset vom Ursprung
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all tablet drivers.
Gruppe: Grafiktablett-Funktionen
Querverweis: Binding   GDOS   vq_tabstatus   vq_tdimensions   vt_resolution   vt_axis   vt_origin

7.8.2.4 Bindings für vt_alignment

C: void vt_alignment ( int16_t handle, int16_t dx, int16_t dy );
Umsetzung:
void vt_alignment (int16_t handle, int16_t dx, int16_t dy)
{
   intin[0] = dx;
   intin[1] = dy;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 85 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] dx
intin+2 intin[1] dy

7.8.2.5 vt_axis

Name: »set tablet axis resolution in lines« - Auflösung des Grafiktabletts einstellen in Zeilen.
VDI-Nummer: 5 (Escape 82)
Deklaration: void vt_axis ( int16_t handle, int16_t xres, int16_t yres, int16_t *xset, int16_t *yset );
Beschreibung: Die Funktion setzt die horizontale und vertikale Auflösung des Grafiktabletts. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
xres gewünschte Auflösung
yres in Zeilen
xset tatsächliche Auflösung
yset in Zeilen
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all tablet drivers.
Gruppe: Grafiktablett-Funktionen
Querverweis: Binding   GDOS   vq_tabstatus   vt_alignment   vt_resolution   vt_origin   vq_tdimensions

7.8.2.6 Bindings für vt_axis

C: void vt_axis ( int16_t handle, int16_t xres, int16_t yres, int16_t *xset, int16_t *yset );
Umsetzung:
void vt_axis (int16_t handle, int16_t xres, int16_t yres,
              int16_t *xset, int16_t *yset)
{
   intin[0] = xres;
   intin[1] = yres;

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

   vdi ();

   *xset = intout[0];
   *yset = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 2 # Einträge in intout
contrl+10 contrl[5] 82 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] xres
intin+2 intin[1] yres
intout intout[0] xset
intout+2 intout[1] yset

7.8.2.7 vt_origin

Name: »set tablet x and y origin« - Koordinatenursprung für Grafiktablett setzen.
VDI-Nummer: 5 (Escape 83)
Deklaration: void vt_origin ( int16_t handle, int16_t xorigin, int16_t yorigin );
Beschreibung: Die Funktion setzt den Ursprung des Koordinatensystems. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
xorigin x-Koordinate
yorigin y-Koordinate der linken, oberen Ecke
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all tablet drivers.
Gruppe: Grafiktablett-Funktionen
Querverweis: Binding   GDOS   vq_tabstatus   vt_alignment   vt_resolution   vt_axis   vq_tdimensions

7.8.2.8 Bindings für vt_origin

C: void vt_origin ( int16_t handle, int16_t xorigin, int16_t yorigin );
Umsetzung:
void vt_origin (int16_t handle, int16_t xorigin,
                int16_t yorigin)
{
   intin[0] = xorigin;
   intin[1] = yorigin;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 2 # Einträge in intout
contrl+10 contrl[5] 83 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] xorigin
intin+2 intin[1] yorigin

7.8.2.9 vt_resolution

Name: »set tablet axis resolution in lines/inch« - Auflösung des Grafiktabletts einstellen in Zeilen pro Inch.
VDI-Nummer: 5 (Escape 81)
Deklaration: void vt_resolution ( int16_t handle, int16_t xres, int16_t yres, int16_t *xset, int16_t *yset );
Beschreibung: Die Funktion setzt die horizontale und vertikale Auflösung des Grafiktabletts. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
xres Auflösung in Zeilen
yres pro Zoll (lpi)
xset tatsächlich gesetzte
yset Auflösung
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all tablet drivers.
Gruppe: Grafiktablett-Funktionen
Querverweis: Binding   GDOS   vq_tabstatus   vt_alignment   vt_axis   vt_origin   vq_tdimensions

7.8.2.10 Bindings für vt_resolution

C: void vt_resolution ( int16_t handle, int16_t xres, int16_t yres, int16_t *xset, int16_t *yset );
Umsetzung:
void vt_resolution (int16_t handle, int16_t xres, int16_t yres,
                    int16_t *xset, int16_t *yset)
{
   intin[0] = xres;
   intin[1] = yres;

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

   vdi ();

   *xset = intout[0];
   *yset = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 2 # Einträge in intout
contrl+10 contrl[5] 81 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] xres
intin+2 intin[1] yres
intout intout[0] xset
intout+2 intout[1] yset

7.8.3 Metafile-Funktionen

Diese Bibliothek enthält Funktionen, die beim Erzeugen eines Metafiles unentbehrlich sind. Insgesamt stehen die folgenden Routinen zur Verfügung:

v_meta_extents Dimensionen eines Metafiles berechnen.
v_write_meta Grafik-Primitive im Metafile ablegen.
vm_coords Neues Koordinatensystem für Metafile.
vm_filename Metafile umbenennen.
vm_pagesize Physikalische Seitengröße für Metafile.

Hinweis: Der Hauptzweck eines Metafiles liegt im standardisierten Datenaustausch zwischen verschiedenen GEM-Systemen.

Querverweis:
Metafile-Format   Workstations des VDI   Style-Guidelines   Grundlagen des VDI

7.8.3.1 vm_coords

Name: »VDI meta file coordinates« - Eigenes Koordinatensystem für Metafiles.
VDI-Nummer: 5 (Escape 99, Opcode 1)
Deklaration: void vm_coords ( int16_t handle, int16_t llx, int16_t lly, int16_t urx, int16_t ury );
Beschreibung: Die Funktion setzt das benutzte Koordinatensystem für die Seite. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
llx x-Koordinaten
lly y-Koordinaten (links unten)
urx x-Koordinaten
ury y-Koordinaten (rechts oben)


Hinweis: Bei dieser Funktion muss beachtet werden, in welchem Koordinatentyp (NDC oder RC) die Metadatei geöffnet wurde, und ggfs. müssen die y-Werte angepaßt werden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all metafile drivers.
Gruppe: Metafile-Funktionen
Querverweis: Binding   v_write_meta   Metafile-Format   Sub-Opcodes

7.8.3.2 Bindings für vm_coords

C: void vm_coords ( int16_t handle, int16_t llx, int16_t lly, int16_t urx, int16_t ury );
Umsetzung:
void vm_coords (int16_t handle, int16_t llx, int16_t lly,
                int16_t urx, int16_t ury)
{
   intin[0] = 1;
   intin[1] = llx;
   intin[2] = lly;
   intin[3] = urx;
   intin[4] = ury;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 5 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 99
contrl+12 contrl[6] handle
intin intin[0] 1 # Unter-Opcode
intin+2 intin[1] llx
intin+4 intin[2] lly
intin+6 intin[3] urx
intin+8 intin[4] ury

7.8.3.3 vm_filename

Name: »Change GEM VDI File Name« - ändert den Namen eines Metafiles.
VDI-Nummer: 5 (Escape 100)
Deklaration: void vm_filename ( int16_t handle, CONST int8_t *filename );
Beschreibung: Die Funktion benennt ein Metafile von GEMFILE.GEM in einen anderen Namen unter Beibehaltung der Extension GEM um. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
filename neuer Name des Metafile


Hinweis: Der Parameter filename kann auch einen Pfadnamen mit Laufwerksbezeichnung beinhalten. Sollte die Funktion nicht sofort nach Aufruf von v_opnwk aufgerufen werden, so bleibt der Funktionsaufruf wirkungslos. Ein eventuell geöffnetes Metafile wird geschlossen.

Da ältere Metafile-Treiber (im Gegensatz zum NVDI-Treiber) das Ursprungsfile "GEMFILE.GEM", welches im aktuellen Verzeichnis angelegt wird, evtl. nicht löschen, sollte dies von der Applikation selbst übernommen werden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all metafile drivers.
Gruppe: Metafile-Funktionen
Querverweis: Binding   GDOS   v_opnwk   Metafile-Format   Sub-Opcodes

7.8.3.4 Bindings für vm_filename

C: void vm_filename ( int16_t handle, CONST int8_t *filename );
Umsetzung:
void vm_filename (int16_t handle, CONST int8_t *filename)
{
   int16_t *tmp;

   tmp = intin;
   while (*tmp++ = *filename++)
      ;

   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = ((int16_t) (tmp-intin)-1);
   contrl[5] = 100;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 0 # Einträge in intout
contrl+10 contrl[5] 100 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..n-1] filename[0..n-1]

7.8.3.5 vm_pagesize

Name: »VDI page size« - legt die physikalische Seitengröáe für Metafiles fest.
VDI-Nummer: 5 (Escape 99, Opcode 0)
Deklaration: void vm_pagesize ( int16_t handle, int16_t pgwidth, int16_t pgheight );
Beschreibung: Die Funktion setzt die Seitengröße in 1/10mm. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
pgwidth Breite in 1/10 mm
pgheight Höhe in 1/10 mm


Hinweis: Da Breite und Höhe einer Seite getrennt eingestellt werden, ist es auch möglich, Grafiken im Querformat zu erstellen (Breite größer als die Höhe).
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all metafile drivers.
Gruppe: Metafile-Funktionen
Querverweis: Binding   v_write_meta   Metafile-Format   Sub-Opcodes

7.8.3.6 Bindings für vm_pagesize

C: void vm_pagesize ( int16_t handle, int16_t pgwidth, int16_t pgheight );
Umsetzung:
void vm_pagesize (int16_t handle, int16_t pgwidth,
                  int16_t pgheight)
{
   intin[0] = 0;
   intin[1] = pgwidth;
   intin[2] = pgheight;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 99
contrl+12 contrl[6] handle
intin intin[0] 0 # Unter-Opcode
intin+2 intin[1] pgwidth
intin+4 intin[2] pgheight

7.8.3.7 v_meta_extents

Name: »Update Metafile Extents« - aktualisiert das Metafile.
VDI-Nummer: 5 (Escape 98)
Deklaration: void v_meta_extents ( int16_t handle, int16_t min_x, int16_t min_y, int16_t max_x, int16_t max_y );
Beschreibung: Die Funktion erneuert die Größen-Informationen im Kopf eines Metafile. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
min_x minimaler x-Wert
min_y minimaler y-Wert des kleinsten umgebenden Rechteckes
max_x maximaler x-Wert
max_y maximaler y-Wert des kleinsten umgebenden Rechteckes


Hinweis: Die Größen-Information kann man benutzen, um schnell die minimalen oder maximalen Ausmaße aller im Metafile abgespeicherten Primitiven zu ermitteln.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all metafile drivers.
Gruppe: Metafile-Funktionen
Querverweis: Binding   GDOS   vm_filename   v_write_meta   Metafile-Format

7.8.3.8 Bindings für v_meta_extents

C: void v_meta_extents ( int16_t handle, int16_t min_x, int16_t min_y, int16_t max_x, int16_t max_y );
Umsetzung:
void v_meta_extents (int16_t handle, int16_t min_x,
                     int16_t min_y, int16_t max_x, int16_t max_y)
{
   ptsin[0] = min_x;
   ptsin[1] = min_y;
   ptsin[2] = max_x;
   ptsin[3] = max_y;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 0 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 98 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
ptsin ptsin[0] min_x
ptsin+2 ptsin[1] min_y
ptsin+4 ptsin[2] max_x
ptsin+6 ptsin[3] max_y

7.8.3.9 v_write_meta

Name: »Write Metafile Item« - schreibt ein Objekt in ein Metafile.
VDI-Nummer: 5 (Escape 99)
Deklaration: void v_write_meta ( int16_t handle, int16_t num_intin, int16_t *a_intin, int16_t num_ptsin, int16_t *a_ptsin );
Beschreibung: Die Funktion erlaubt es, die in ein Metafile geschriebenen Parameter mit einem Opcode als benutzerdefinierte Gegenstände zu markieren. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
num_intin Anzahl der Werte im Intin-Array
num_ptsin Anzahl der Werte im Ptsin-Array
a_intin[0] Sub-Opcode (benutzerdefiniert)
a_intin[1]  
:  
:  
a_intin[num_intin-1] benutzerdefinierte Information
a_ptsin[0]  
:  
:  
a_ptsin[num_ptsin-1] benutzerdefinierte Information


Hinweis: Die Nummern 0 bis 100 sind reserviert, d.h. als Sub-Opcodes kommen Nummern ab 101 in Frage.

a_intin Bedeutung
10 Start group
11 End group
49 Set no line style
50 Set attribute shadow on
51 Set attribute shadow off
80 Start draw area type primitive
81 End draw area type primitive
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all metafile drivers.
Gruppe: Metafile-Funktionen
Querverweis: Binding   GDOS   v_meta_extents   Metafile-Format   Sub-Opcodes

7.8.3.10 Bindings für v_write_meta

C: void v_write_meta ( int16_t handle, int16_t num_intin, int16_t *a_intin, int16_t num_ptsin, int16_t *a_ptsin );
Umsetzung:
void v_write_meta (int16_t handle, int16_t num_intin,
                   int16_t *a_intin, int16_t num_ptsin,
                   int16_t *a_ptsin)
{
   intin[0..num_intin-1] = a_intin[0..num_intin-1];
   ptsin[0..num_ptsin-1] = a_ptsin[0..num_ptsin-1];

   contrl[0] = 5;
   contrl[1] = num_ptsin;
   contrl[3] = num_intin;
   contrl[5] = 99;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # Opcode der Funktion
contrl+2 contrl[1] num_ptsin # Einträge in ptsin
contrl+4 contrl[2] 0 # Einträge in ptsout
contrl+6 contrl[3] num_intin # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 99 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] benutzerdef. Sub-Opcode
intin+2 intin[1..n] benutzerdef. Information
ptsin ptsin[0..m] benutzerdef. Information

7.8.4 Polaroid-Funktionen

Diese Bibliothek enthält Funktionen um eine Polaroid-Kamera ansprechen zu können. Zu diesem Zweck stehen die folgenden Routinen zur Verfügung:

vqp_error Fehlercodes des Polaroid-Treibers abfragen.
vqp_filmname Namen aus einer Filmnummer ermitteln.
vqp_films Verfügbare Filmtypen ermitteln.
vqp_state Status des Polaroid-Treibers ermitteln.
vsc_expose Preview-Möglichkeit für Kamera ein-/ausschalten.
vsp_film Filmtyp und Belichtungszeit festlegen.
vsp_message Fehlermeldungen des Polaroid-Treibers unterdrücken oder zulassen.
vsp_save Einstellung des Polaroid-Treibers sichern.
vsp_state Polaroid-Treiber neu einstellen.

Hinweis: Treiber für die Polaroid-Palette sind zum jetzigen Zeitpunkt nicht existent. Die Funktionen vsp_film, vqp_filmname und vsc_expose wurden mit PC-GEM Version 2.0 eingeführt, und ersetzen die anderen 6 Routinen aus GEM 1.x.

Querverweis: Workstations des VDI   Style-Guidelines

7.8.4.1 vqp_error

Name: »Palette Error Inquire« - liefert die Nummer eines augetretenen Fehlers.
VDI-Nummer: 5 (Escape 96)
Deklaration: int16_t vqp_error ( int16_t handle );
Beschreibung: Die Funktion ermittelt den zuletzt aufgetretenen Fehler im Zusammenhang mit der Polaroid-Kamera für die Kennung handle.
Ergebnis: Die Funktion liefert:
Wert Bedeutung
   
0 kein Fehler
1 Verschluß offen
2 kein Port ausgewählt
3 Palette am gewählten Port nicht verfügbar
4 Verbindung unterbrochen
5 Operationssystem erlaubt keine Speicherzuteilung
6 Pufferspeicher reicht nicht aus
7 Speicher nicht frei
8 Gerätetreiber-File fehlt
9 Gerätetreiber-File hat falsches Format
10 Film zu Ende
Verfügbar: Ab PC-GEM Version 2.0 steht diese Funktion nicht mehr zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: Binding   GDOS

7.8.4.2 Bindings für vqp_error

C: int16_t vqp_error ( int16_t handle );
Umsetzung:
int16_t vqp_error ( int16_t handle );
{
   intin[0] = palette;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 96 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] Return-Wert

7.8.4.3 vqp_filmname

Name: »Inquire camera film name« - ermittelt den Namen zu einer bestimmten Filmnummer
VDI-Nummer: 5 (Escape 92)
Deklaration: int16_t vqp_filmname ( int16_t handle, int16_t index, int8_t *name );
Beschreibung: Die Funktion liefert zu einer Filmnummer den entsprechenden Namen. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
index Nummer des Filmtyps
name Name des Films (null-terminiert)


Hinweis: Bei einer falschen Filmnummer erhält man einen Nullstring als Ergebnis.
Ergebnis: Die Funktion liefert den Wert 0, wenn eine falsche Filmnummer übergeben worden ist.
Verfügbar: Die Funktion steht erst ab PC-GEM Version 2.0 zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: Binding   GDOS

7.8.4.4 Bindings für vqp_filmname

C: int16_t vqp_filmname ( int16_t handle, int16_t index, int8_t *name );
Umsetzung:
int16_t vqp_filmname (int16_t handle, int16_t index,
                      int8_t *name)
{
   int16_t tmp;

   intin[0] = index;

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

   vdi ();

   for (tmp = 0; tmp < contrl[4]; tmp++)
      name[tmp] = intout[tmp];

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] status # Einträge in intout
contrl+10 contrl[5] 92 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] index
intout intout[0..24] name[0..24]

7.8.4.5 vqp_films

Name: »Inquire Palette Film Types« - ermittelt Informationen über einen Film.
VDI-Nummer: 5 (Escape 91)
Deklaration: void vqp_films ( int16_t handle, int8_t *film_names );
Beschreibung: Die Funktion ermittelt Informationen über einen Film. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
film_names Name, Hersteller und Empfindlichkeit des Films


Hinweis: Der Parameter film_names sollte auf einen 126 Bytes großen Puffer zeigen, in welchem 5 Einträge zu je 25 Zeichen abgelegt werden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Ab PC-GEM Version 2.0 steht diese Funktion nicht mehr zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: GDOS

7.8.4.6 vqp_state

Name: »Inquire Palette Driver State« - ermittelt den Gerätezustand des Polaroidbildrecorders.
Deklaration: void vqp_state ( int16_t handle, int16_t *port, int8_t *film_name, int16_t *lightness, int16_t *interlace, int16_t *planes, int16_t *indexes );
Beschreibung: Die Funktion ermittelt den Zustand eines Polaroid-Bildrekorders. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
port Nummer des Ports (0 erster Port)
film_name Nummer des Filmnamen (0 bis 4)
lightness Helligkeit (-3 bis 3, wobei eine Stufe einer Drittel Blende entspricht)
interlace Bild wird mit (1) oder ohne (0) Zeilensprung abgetastet
planes Farbanzahl = 2^planes, wobei planes zwischen 1 und 4 liegt
indexes Festlegung der Farben der Farbpalette. Es wird ein Speicherplatz von 16 Bytes benötigt. Jede Farbe wird durch eine Zahl (für die Zeilen der Farbmatrix) und einen Buchstaben von A bis H (für die Spalten der Farbmatrix) gekennzeichnet.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Ab PC-GEM Version 2.0 steht diese Funktion nicht mehr zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: GDOS   vsp_state   vsp_save   vsp_message   vqp_films

7.8.4.7 vsc_expose

Name: »Disable or Enable Film Exposure for Frame Preview« - Ein-/Ausschalten des Previews einer Kamera.
VDI-Nummer: 5 (Escape 93)
Deklaration: void vsc_expose ( int16_t handle, int16_t state );
Beschreibung: Die Funktion erlaubt es, die Belichtung bei Kameras mit Preview-Möglichkeit abzuschalten. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
state Belichtung
state Belichtung
0 = abschalten
<> 0 = einschalten
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Diese Funktion steht erst ab PC-GEM Version 2.0 zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: Binding   GDOS   vsp_save   vqp_state   vsp_state   vqp_films   vsp_message

7.8.4.8 Bindings für vsc_expose

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

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 93 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] state

7.8.4.9 vsp_film

Name: »set camera film type and exposure time« - Filmtyp und Belichtungszeit festlegen.
VDI-Nummer: 5 (Escape 91)
Deklaration: void vsp_film ( int16_t handle, int16_t index, int16_t lightness );
Beschreibung: Die Funktion legt den Filmtyp und die Belichtungszeit fest. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
index Nummer des Filmtyps
lightness Belichtungszeit
-3 = halbe
0 = normale
3 = doppelte


Hinweis: Mit steigendem Wert des Parameters lightness wird die Blendenzahl um ein Drittel erhöht. Die gültigen Indizes für index können per vqp_filmname ermittelt werden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Die Funktion steht erst ab PC-GEM Version 2.0 zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: Binding   GDOS

7.8.4.10 Bindings für vsp_film

C: void vsp_film ( int16_t handle, int16_t index, int16_t lightness );
Umsetzung:
void vsp_film (int16_t handle, int16_t index,
               int16_t lightness)
{
   intin[0] = index;
   intin[1] = lightenss;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 91 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] index
intin+2 intin[1] lightness

7.8.4.11 vsp_message

Name: »Suppress Palette Message« - unterdrückt Fehlermeldungen des Polaroidbildrecorders.
Deklaration: void vsp_message ( int16_t handle );
Beschreibung: Die Funktion unterdrückt Fehlermeldungen des Polaroid-Bildrekorders mit der Kennung handle.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Die Funktion steht erst ab PC-GEM Version 2.0 zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: GDOS   vqp_error

7.8.4.12 vsp_save

Name: »Save Palette Driver State« - speichert den Gerätestatus des Polaroidbildrecorders.
Deklaration: void vsp_save ( int16_t handle );
Beschreibung: Die Funktion speichert den Status eines Polaroid-Bildrekorders mit der Kennung handle.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Ab PC-GEM Version 2.0 steht diese Funktion nicht mehr zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: GDOS   vqp_state   vsp_state   vsp_message   vqp_films   vsc_expose

7.8.4.13 vsp_state

Name: »Set Palette Driver State« - setzt den Ausgabezustand des Polaroidrecorders.
Deklaration: void vsp_state ( int16_t handle, int16_t port, int16_t film_num, int16_t lightness, int16_t interlace, int16_t planes, int16_t *indexes );
Beschreibung: Die Funktion setzt den Ausgabezustand eines Polaroid-Bildrekorders. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
port Nummer des Ports (0 erster Port)
film_num Nummer des Filmnamen (0 bis 4)
lightness Helligkeit (-3 bis 3, wobei eine Stufe einer Drittel Blende entspricht)
interlace Bild wird mit (1) oder ohne (0) Zeilensprung abgetastet
planes Farbanzahl = 2^planes, wobei planes zwischen 1 und 4 liegt
indexes Festlegung der Farben der Farbpalette. Es wird ein Speicherplatz von 16 Bytes benötigt. Jede Farbe wird durch eine Zahl (für die Zeilen der Farbmatrix) und einen Buchstaben von A bis H (für die Spalten der Farbmatrix) gekennzeichnet.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Ab PC-GEM Version 2.0 steht diese Funktion nicht mehr zur Verfügung.
Gruppe: Polaroid-Funktionen
Querverweis: GDOS   vsc_expose   vqp_state   vsp_save   vsp_message   vqp_films

7.8.5 Spezialfunktionen

Diese Bibliothek enthält Funktionen für sehr spezielle Zwecke, die sich nicht einer der übrigen Gruppen für Escapefunktionen zuordnen lassen. Es stehen die folgenden Routinen zur Verfüggung:

v_escape2000 Spezialfunktion für ATARI-Page-Printer.
v_fontinit Eigenen Systemzeichensatz auswählen.
v_offset Abstand zum linken Bildschirmrand festlegen.
v_sound Ton generieren.
vs_mute Ein-/Ausschalten der Tonerzeugung.

Querverweis: Workstations des VDI   Style-Guidelines

7.8.5.1 v_escape2000

Name: »Escape 2000« - Spezialfunktion für ATARI-Page-Printer.
VDI-Nummer: 5 (Escape 2000)
Deklaration: void v_escape2000 ( int16_t handle, int16_t times );
Beschreibung: Die Funktion druckt beliebig viele Kopien der laufenden Seite. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
times Anzahl der zusätzlich zu druckenden Kopien


Hinweis: Die Funktion arbeitet nur in Zusammenhang mit den Atari-SLM-Laserdruckern; deshalb sollte besser auf die Funktion v_copies zurückgegriffen werden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported only with some laser printer drivers (for instance the Atari laser printer driver) under some form of GDOS.
Gruppe: Spezialfunktionen
Querverweis: Binding   GDOS

7.8.5.2 Bindings für v_escape2000

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

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 2000 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] times

7.8.5.3 v_fontinit

Name: »Init System Font« - initialisiert einen Zeichensatz.
VDI-Nummer: 5 (Escape 102)
Deklaration: void v_fontinit ( int16_t handle, int16_t fh_high, int16_t fh_low );
Beschreibung: Die Funktion installiert einen angegebenen Zeichensatz als Systemzeichensatz. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
fh_high Adresse des Zeichensatzkopfes (high)
fh_low Adresse des Zeichensatzkopfes (low)


Hinweis: Die Funktion ist in keiner offiziellen Dokumentation beschrieben - Benutzung auf eigene Gefahr. Eigene Versuche ergaben, daß die Zeichenbreite konstant acht Pixel und der Zeichensatz im Motorola-Format vorliegen muß.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: All TOS versions; ROM-Bildschirmtreiber
Gruppe: Spezialfunktionen
Querverweis: Binding   Header bei Bitmap GDOS-Fonts

7.8.5.4 Bindings für v_fontinit

C: void v_fontinit ( int16_t handle, int16_t fh_high, int16_t fh_low );
Umsetzung:
void v_fontinit (int16_t handle, int16_t fh_high,
                 int16_t fh_low)
{
   intin[0] = fh_high;
   intin[1] = fh_low;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 102 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] fh_high
intin+2 intin[1] fh_low


Hinweis: In den Feldern intin[0..1] wird dabei der Zeiger auf den Zeichensatzkopf abgelegt.

7.8.5.5 v_offset

Name: »Set Line Offset« - setzt den linken Rand.
VDI-Nummer: 5 (Escape 101)
Deklaration: void v_offset ( int16_t handle, int16_t offset );
Beschreibung: Die Funktion setzt den Offset in Rasterzeilen zum Beginn des logischen Bildschirms. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
offset Anzahl der Rasterzeilen unterhalb der oberen Bildschirmkante, von der ab der logische Bildschirm beginnen soll


Hinweis: Diese Funktion ist in keiner offiziellen Dokumentation beschrieben - Benutzung auf eigene Gefahr.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: ROM-Bildschirmtreiber
Gruppe: Spezialfunktionen
Querverweis: Binding

7.8.5.6 Bindings für v_offset

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

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 101 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] offset

7.8.5.7 v_sound

Name: »generate specified tone« - Ton generieren.
VDI-Nummer: 5 (Escape 61)
Deklaration: void v_sound ( int16_t handle, int16_t frequency, int16_t duration );
Beschreibung: Die Funktion erzeugt einen Ton einer bestimmten Länge und Frequenz. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
frequency Tonhöhe in Hertz
duration Tonlänge in Timer-Ticks
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Die Funktion steht nur unter PC-GEM ab Version 2.0 zur Verfügung.
Gruppe: Spezialfunktionen
Querverweis: Binding   GDOS   vs_mute

7.8.5.8 Bindings für v_sound

C: void v_sound ( int16_t handle, int16_t frequency, int16_t duration );
Umsetzung:
void v_sound (int16_t handle, int16_t frequency,
              int16_t duration)
{
   intin[0] = frequency;
   intin[1] = duration;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 61 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] frequency
intin+2 intin[1] duration

7.8.5.9 vs_mute

Name: »set/clear tone muting flag« - Ein-/Ausschalten der Tonerzeugung.
VDI-Nummer: 5 (Escape 62)
Deklaration: int16_t vs_mute ( int16_t handle, int16_t action );
Beschreibung: Die Funktion setzt bzw. löscht das Tonflag, oder liefert dessen Status zurück. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
action gewünschte Aktion
-1 = Status abfragen
 0 = Tonerzeugung ein
 1 = Tonerzeugung aus


Hinweis:
Ergebnis: Die Funktion liefert den Status der Tonerzeugung.
Verfügbar: Die Funktion steht nur unter PC-GEM ab Version 2.0 zur Verfügung.
Gruppe: Spezialfunktionen
Querverweis: Binding   GDOS   v_sound

7.8.5.10 Bindings für vs_mute

C: int16_t vs_mute ( int16_t handle, int16_t action );
Umsetzung:
int16_t vs_mute (int16_t handle, int16_t action)
{
   intin[0] = action;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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+10 contrl[5] 62 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] action
intout intout[0] Return-Wert

7.8.6 Text-Funktionen

Diese Bibliothek enthält Funktionen zur Ansteuerung des alphanumerischen Bildschirms; zu diesem Zweck stehen die folgenden Routinen zur Verfügung:

v_alpha_text Ausgabe von Text im Textmodus.
v_curdown Textcursor eine Zeile nach unten bewegen.
v_curhome Textcursor in die linke obere Ecke bewegen.
v_curleft Textcursor eine Spalte nach links bewegen.
v_curright Textcursor eine Spalte nach rechts bewegen.
v_curtext Text ab Textcursorposition ausgeben.
v_curup Textcursor eine Zeile nach oben bewegen.
v_eeol Bildschirm ab Textcursor bis Zeilenende löschen.
v_eeos Bildschirm ab Textcursor bis Bildschirmende löschen.
v_enter_cur Textmodus einschalten.
v_exit_cur Textmodus verlassen.
v_rvoff Inverse Darstellung abschalten.
v_rvon Inverse Darstellung einschalten.
vq_chcells Zeilen und Spalten des Textbildschirms ermitteln.
vq_curaddress Zeile und Spalte des Textcursors ermitteln.
vs_curaddress Textcursor in Reihe und Spalte positionieren.

Querverweis: Workstations des VDI   Style-Guidelines

7.8.6.1 vq_chcells

Name: »Inquire Addressable Alpha Character Cells« - ermittelt die Anzahl der Reihen und Spalten einer Arbeitsstation.
VDI-Nummer: 5 (Escape 1)
Deklaration: void vq_chcells ( int16_t handle, int16_t *rows, int16_t *columns );
Beschreibung: Die Funktion ermittelt die Anzahl der Zeilen und Spalten, die mit dem Alpha-Cursor angesprochen werden können. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
rows Anzahl der Zeilen
columns Anzahl der Spalten


Hinweis: Ein Wert von 0 in den Parametern rows bzw. columns bedeutet, daß keine Adressierung möglich ist.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen and printer drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.2 Bindings für vq_chcells

C: void vq_chcells ( int16_t handle, int16_t *rows, int16_t *columns );
Umsetzung:
void vq_chcells (int16_t handle, int16_t *rows,
                 int16_t *columns)
{
   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 1;
   contrl[6] = handle;

   vdi ();

   *rows    = intout[0];
   *columns = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intout
contrl+10 contrl[5] 1 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] rows
intout+2 intout[1] columns

7.8.6.3 vq_curaddress

Name: »Inquire Current Alpha Cursor Address« - ermittelt die aktuelle Alphacursorposition.
VDI-Nummer: 5 (Escape 15)
Deklaration: void vq_curaddress ( int16_t handle, int16_t *row, int16_t *column );
Beschreibung: Die Funktion ermittelt die aktuelle Position des Alpha-Cursors. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
row aktuelle Zeile
column aktuelle Spalte
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.4 Bindings für vq_curaddress

C: void vq_curaddress ( int16_t handle, int16_t *row, int16_t *column );
Umsetzung:
void vq_curaddress (int16_t handle, int16_t *row,
                    int16_t *column)
{
   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 15;
   contrl[6] = handle;

   vdi ();

   *row    = intout[0];
   *column = intout[1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intout
contrl+10 contrl[5] 15 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intout intout[0] row
intout+2 intout[1] column

7.8.6.5 v_alpha_text

Name: »Output Alpha Text« - Ausgabe von Text im Textmodus
VDI-Nummer: 5 (Escape 25)
Deklaration: void v_alpha_text ( int16_t handle, int8_t *string );
Beschreibung: Die Funktion gibt einen Text an der aktuellen Position des Druckkopfes aus. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
string Adresse der Zeichenkette


Hinweis: Die Ausgabe erfolgt nicht im Grafik-Modus. Wichtige Steuerfunktionen sind für alle Druckertypen genormt:
Code Bedeutung
   
DC2 0 Fettschrift ein
DC2 1 Fettschrift aus
DC2 2 Kursiv ein
DC2 3 Kursiv aus
DC2 4 Unterstrichen ein
DC2 5 Unterstrichen aus
DC2 6 Superscript ein
DC2 7 Superscript aus
DC2 8 Subscript ein
DC2 9 Subscript aus
DC2 A Briefqualität-Modus ein
DC2 B Briefqualität-Modus aus
DC2 C Breitschrift ein
DC2 D Breitschrift aus
DC2 E helle Schrift ein
DC2 F helle Schrift aus
DC2 G  
:  
:  
DC2 V reserviert, wird ignoriert
DC2 W Pica-Schrift (10 cpi)
DC2 X Elite-Schrift (12 cpi)
DC2 Y komprimierter Druck
DC2 Z Proportionalschrift


Darüber hinaus wird auch ein Seitenvorschub (Formfeed) mit dem ASCII-Wert 12 unterstützt. Unter PC-GEM können auch Grafiken berücksichtigt werden; die Syntax lautet in diesem Fall:

(ESC)(ESC)GEM,x,y,w,h,C:\pathname\filename.img

Die Parameter x,y,w und h sind dabei in Zeicheneinheiten relativ zur aktuellen Cursorposition anzugeben.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all printer and metafile drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   OUT-Dateiformat

7.8.6.6 Bindings für v_alpha_text

C: void v_alpha_text ( int16_t handle, int8_t *string );
Umsetzung:
void v_alpha_text (int16_t handle, int8_t *string)
{
   int16_t *tmp;

   tmp = intin;
   while (*tmp++ = *string++)
      ;

   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = ((int16_t) (tmp-intin)-1);
   contrl[5] = 25;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 5 # Einträge in intout
contrl+10 contrl[5] 25 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]

7.8.6.7 v_curaddress

Name: »Direct Alpha Cursor Address« - setzt den Alphacursor an die angegebene Position.
VDI-Nummer: 5 (Escape 11)
Deklaration: void v_curaddress ( int16_t handle, int16_t row, int16_t column );
Beschreibung: Die Funktion bewegt den Alphacursor zu einer bestimmten Spalte und Zeile. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
row Zeile für Cursor (1..m)
column Spalte für Cursor (1..n)


Hinweis: Falls Adressen oberhalb der Maximalgrenze angegeben werden, nimmt die Funktion den am nächsten liegenden Wert an.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.8 Bindings für v_curaddress

C: void v_curaddress ( int16_t handle, int16_t row, int16_t column );
void vs_curaddress ( int16_t handle, int16_t row, int16_t column );
Umsetzung:
void v_curaddress  (int16_t handle, int16_t row, int16_t column)
void vs_curaddress (int16_t handle, int16_t row, int16_t column)
{
   intin[0] = row;
   intin[1] = column;

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+10 contrl[5] 11 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] row
intin+2 intin[1] column

7.8.6.9 v_curdown

Name: »Alpha Cursor down« - bewegt den Alphacursor um eine Zeile nach unten.
VDI-Nummer: 5 (Escape 5)
Deklaration: void v_curdown ( int16_t handle );
Beschreibung: Die Funktion bewegt den Alphacursor auf der Workstation mit der Kennung handle eine Zeile nach unten.

Hinweis: Befindet sich der Cursor bereits in der untersten Zeile, so hat die Funktion keine Auswirkung.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.10 Bindings für v_curdown

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 5 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.11 v_curhome

Name: »Home Alpha Cursor« - bewegt den Alphacursor in die linke obere Ecke.
VDI-Nummer: 5 (Escape 8)
Deklaration: void v_curhome ( int16_t handle );
Beschreibung: Die Funktion bewegt den Alphacursor auf der Workstation mit der Kennung handle in die 'Home' Stellung.

Hinweis: Unter der Home-Stellung versteht man normalerweise die Position oben links auf dem Bildschirm.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.12 Bindings für v_curhome

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 8 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.13 v_curleft

Name: »Alpha Cursor left« - bewegt den Alphacursor um ein Zeichen nach links.
VDI-Nummer: 5 (Escape 7)
Deklaration: void v_curleft ( int16_t handle );
Beschreibung: Die Funktion bewegt den Alphacursor auf der Workstation mit der Kennung handle eine Spalte nach links.

Hinweis: Befindet sich der Cursor bereits in der linkesten Spalte, so hat die Funktion keine Auswirkung.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.14 Bindings für v_curleft

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 7 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.15 v_curright

Name: »Alpha Cursor right« - bewegt den Alphacursor um ein Zeichen nach rechts.
VDI-Nummer: 5 (Escape 6)
Deklaration: void v_curright ( int16_t handle );
Beschreibung: Die Funktion bewegt den Alphacursor auf der Workstation mit der Kennung handle eine Spalte nach rechts.

Hinweis: Befindet sich der Cursor bereits in der rechtesten Spalte, so hat die Funktion keine Auswirkung.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.16 Bindings für v_curright

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 6 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.17 v_curtext

Name: »Output Cursor Addressable Alpha Text« - gibt einen Text ab dem Alphacursor aus.
VDI-Nummer: 5 (Escape 12)
Deklaration: void v_curtext ( int16_t handle, int8_t *string );
Beschreibung: Die Funktion gibt einen Text an der aktuellen Cursorposition aus. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
string Adresse der Zeichenkette


Der Cursor wird bei der Ausgabe für jedes Zeichen um eine Stelle weitergerückt (Alpha-Modus).

Hinweis: Textausgabe kann über diese Funktion schneller als über das GEMDOS erfolgen.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur   v_curup   v_curdown   v_curright   v_curleft   v_curhome   vs_curaddress

7.8.6.18 Bindings für v_curtext

C: void v_curtext ( int16_t handle, int8_t *string );
Umsetzung:
void v_curtext (int16_t handle, int8_t *string)
{
   int16_t *tmp;

   tmp = intin;
   while (*tmp++ = *string++)
      ;

   contrl[0] = 5;
   contrl[1] = 0;
   contrl[3] = ((int16_t) (tmp-intin)-1);
   contrl[5] = 12;
   contrl[6] = handle;

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 0 # Einträge in intout
contrl+10 contrl[5] 12 # Escape/Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]

7.8.6.19 v_curup

Name: »Alpha Cursor up« - bewegt den Alphacursor um eine Zeile nach oben.
VDI-Nummer: 5 (Escape 4)
Deklaration: void v_curup ( int16_t handle );
Beschreibung: Die Funktion bewegt den Alphacursor auf der Workstation mit der Kennung handle eine Zeile nach oben.

Hinweis: Befindet sich der Cursor bereits in der obersten Zeile, so hat die Funktion keine Auswirkung.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.20 Bindings für v_curup

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 4 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.21 v_eeol

Name: »Erase to End of Alpha Text Line« - löscht die Zeile ab dem Alphacursor.
VDI-Nummer: 5 (Escape 10)
Deklaration: void v_eeol ( int16_t handle );
Beschreibung: Die Funktion löscht auf der Workstation mit der Kennung handle die aktuelle Zeile ab der aktuellen Cursorposition.

Hinweis: Die Position des Cursors bleibt dabei unverändert.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.22 Bindings für v_eeol

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 10 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.23 v_eeos

Name: »Erase to End of Alpha Screen« - löscht den Bildschirm ab dem Alphacursor.
VDI-Nummer: 5 (Escape 9)
Deklaration: void v_eeos ( int16_t handle );
Beschreibung: Die Funktion löscht auf der Workstation mit der Kennnung handle den alphanumerischen Bildschirm ab der aktuellen Cursorposition.

Hinweis: Die Position des Cursors wird dabei nicht verändert.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.24 Bindings für v_eeos

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 9 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.25 v_enter_cur

Name: »Enter Alpha Mode« - schaltet den Textmodus ein.
VDI-Nummer: 5 (Escape 3)
Deklaration: void v_enter_cur ( int16_t handle );
Beschreibung: Die Funktion verläßt auf der Workstation mit der Kennung handle den Grafik-Modus, falls dieser nicht identisch mit dem Alpha-Modus ist.

Hinweis: Darüber hinaus wird der Alpha-Cursor in die obere linke Zeichenzelle gesetzt, und der Alpha-Bildschirm gelöscht. Bei einem Metafile wird ein entsprechender Eintrag vorgenommen.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_exit_cur

7.8.6.26 Bindings für v_enter_cur

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 3 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.27 v_exit_cur

Name: »Exit Alpha Mode« - schaltet den Textmodus ab.
VDI-Nummer: 5 (Escape 2)
Deklaration: void v_exit_cur ( int16_t handle );
Beschreibung: Die Funktion schaltet auf der Workstation mit der Kennung handle den Alphamodus aus, sofern Alpha- und Grafikmodus unterschiedlich sind.

Der Alpha-Modus ist der normale Textmodus ohne Grafik, wie er z.B. vom Desktop für die Anzeige von Dateien benutzt wird.

Hinweis: Die Funktion bewirkt außerdem, daß der Grafikbildschirm gelöscht wird; bei einem Metafile wird ein entsprechender Eintrag vorgenommen.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur

7.8.6.28 Bindings für v_exit_cur

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 2 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.29 v_rvoff

Name: »Reverse Video off« - schaltet den Invertiermodus ab.
VDI-Nummer: 5 (Escape 14)
Deklaration: void v_rvoff ( int16_t handle );
Beschreibung: Die Funktion schaltet auf der Workstation mit der Kennung handle die inverse Alpha-Textdarstellung aus.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur   v_rvon

7.8.6.30 Bindings für v_rvoff

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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] 14 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

7.8.6.31 v_rvon

Name: »Reverse Video on« - schaltet den Invertiermodus ein.
VDI-Nummer: 5 (Escape 13)
Deklaration: void v_rvon ( int16_t handle );
Beschreibung: Die Funktion aktiviert auf der Workstation mit der Kennung handle die inverse Alpha-Textdarstellung.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all screen drivers.
Gruppe: Text-Funktionen
Querverweis: Binding   v_enter_cur   v_rvoff

7.8.6.32 Bindings für v_rvon

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

   vdi ();
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 5 # 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 # Escape/Sub-Opcode
contrl+12 contrl[6] handle

HomeVDIEingabefunktionenFarbtabellenfunktionen