HomeVDIAusgabefunktionenEingabefunktionen

7.6 Auskunftsfunktionen

Diese Bibliothek enthält Funktionen um eine Vielzahl von gesetzten Attributen abfragen zu können. Zu diesem Zweck stehen die folgenden Routinen zur Verfügung:

vq_cellarray Abfrage der Belegung einer Farbauswahltabelle.
vq_color Farbintensitäten ermitteln.
vq_devinfo Status eines Ausgabegerätes erfragen.
vq_ext_devinfo Informationen über einen Treiber ermitteln.
vq_extnd Zusätzliche Informationen über die Konfiguration einer Arbeitsstation ermitteln.
vq_ptsinsz Interne Funktion von GDOS.
vq_scrninfo Informationen über Bildschirmformat ermitteln.
vqf_attributes Füllattribute ermitteln.
vqf_bg_color Objekt Hintergrundfarbe ermitteln
vqf_fg_color Objekt Vordergrundfarbe ermitteln
vqin_mode Eingabemodus eines Eingabegeräts abfragen.
vql_attributes Linienattribute ermitteln.
vql_bg_color Linien Hintergrundfarbe ermitteln
vql_fg_color Linen Vordergrundfarbe ermitteln
vqm_attributes Markierungsattribute ermitteln.
vqm_bg_color Marker Hintergrundfarbe ermitteln
vqm_fg_color Marker Vordergrundfarbe ermitteln
vqr_bg_color Bitmap Hintergrundfarbe ermitteln
vqr_fg_color Bitmap Vordergrundfarbe ermitteln
vqt_advance Position für nächstes Vektor-Zeichen ermitteln.
vqt_advance32 Position für nächstes Vektor-Zeichen ermitteln (fix31).
vqt_attributes Textattribute ermitteln.
• vqt_cacheinfo z.Zt. keine Informationen bekannt.
vqt_cachesize Ermitteln der Größe des Vektorzeichen-Caches.
vqt_char_index Index-Konvertierung bzgl. eines Mappings.
vqt_devinfo Status eines Ausgabegerätes erfragen.
• vqt_drv_avail z.Zt. keine Informationen bekannt.
vqt_ext_name Erweiterte Funktion für das Ermitteln von Zeichensatzinformationen.
vqt_extent Dimensionen eines Textrechtecks berechnen.
vqt_f_extent Dimensionen eines Textrechtecks für Vektorfonts berechnen.
• vqt_f_extent16 z.Zt. keine Informationen bekannt.
vqt_bg_color Text Hintergrundfarbe ermitteln
vqt_fg_color Text Vordergrundfarbe ermitteln
vqt_fontheader Informationen über einen Zeichensatz ermitteln.
vqt_fontinfo Informationen über einen Zeichensatz ermitteln.
vqt_get_table Adresse der Zeichentransformationstabellen erfragen.
vqt_justified Offsets von einem Ausrichtungspunkt erfragen.
vqt_name Namen und Index eines Zeichensatzes ermitteln.
vqt_name_and_id Zeichensatz-ID und Namen suchen.
vqt_pairkern Korrekturfaktor für Abstände bei Pair-Kerning erfragen.
vqt_real_extent Ermitteln des einen Text umgebenden Rechteckes.
vqt_trackkern Korrekturfaktor für Fonts mit Track-Kerning erfragen.
vqt_width Dimensionen einer Zeichenzelle berechnen.
vqt_xfntinfo Informationen über einen Zeichensatz ermitteln.
v_create_driver_info Informationen über einen Treiber ermitteln.
v_delete_driver_info Informationen über einen Treiber löschen.
v_get_driver_info Informationen über einen Treiber ermitteln.
v_getbitmap_info Informationen über Vektorzeichen ermitteln.
v_read_default_settings Ermitteln der Default Druckereinstellungen.
v_write_default_settings Setzen der Default Druckereinstellungen.

Hinweis: Neben allgemeinen Attributen können über die hier angegebenen Funktionen vor allem sehr ausführliche Informationen zum Text-Handling ermittelt werden.

Querverweis: Workstations des VDI   Style-Guidelines

7.6.1 vqf_attributes

Name: »Inquire Current Fill Area Attributes« - ermittelt die Attribute zum Ausfüllen von Flächen.
VDI-Nummer: 37
Deklaration: void vqf_attributes ( int16_t handle, int16_t *attrib );
Beschreibung: Die Funktion ermittelt die aktuellen Füll-Attribute. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
attrib[0] Füllmuster
attrib[1] Index der Füllfarbe
attrib[2] Index des Füllmusters
attrib[3] Schreibmodus
attrib[4] Status für Umrahmung
0 = unsichtbar
<> 0 = sichtbar
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all devices.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vswr_mode   vs_color   vsf_interior   vsf_style   vsf_color   vsf_perimeter

7.6.2 Bindings für vqf_attributes

C: void vqf_attributes ( int16_t handle, int16_t *attrib );
Umsetzung:
void vqf_attributes (int16_t handle, int16_t *attrib)
{
   contrl[0] = 37;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   attrib[0..4] = intout[0..4];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 37 # 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+12 contrl[6] handle
intout intout[0..4] attrib[0..4]

7.6.3 vqf_bg_color

Name: »Inquire Background Color« - Objekt Hintergrundfarbe ermitteln
VDI-Nummer: 203 (Unterfunktion 1)
Deklaration: int32_t vqf_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Beschreibung: Diese Funktionen ermittelt die Hintergrundfarbe für Objekte.
Parameter Bedeutung
   
handle Kennung der Workstation
bg_color COLOR_ENTRY der Hintergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.4 Bindings für vqf_bg_color

C: int32_t vqf_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Umsetzung:
int32_t vqf_bg_color( int16_t handle, COLOR_ENTRY *bg_color )
{
   contrl[0] = 203;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 1;
   contrl[6] = handle;

   vdi ();

   bg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 203 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 1
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] bg_color

7.6.5 vqf_fg_color

Name: »Inquire Foreground Color« - Objekt Vordergrundfarbe ermitteln
VDI-Nummer: 202 (Unterfunktion 1)
Deklaration: int32_t vqf_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Beschreibung: Diese Funktionen ermittelt die Vordergrundfarbe für Objekte.
Parameter Bedeutung
   
handle Kennung der Workstation
fg_color COLOR_ENTRY der Vordergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.6 Bindings für vqf_fg_color

C: int32_t vqf_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Umsetzung:
int32_t vqf_fg_color( int16_t handle, COLOR_ENTRY *fg_color )
{
   contrl[0] = 202;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 1;
   contrl[6] = handle;

   vdi ();

   fg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 202 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 1
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] fg_color

7.6.7 vqin_mode

Name: »Inquire Input Mode« - ermittelt den Eingabemodus.
VDI-Nummer: 115
Deklaration: void vqin_mode ( int16_t handle, int16_t dev_type, int16_t *input_mode );
Beschreibung: Die Funktion ermittelt den Eingabemodus für ein bestimmtes Gerät. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
dev_type Art des Eingabegeräts
1 = Positionseingabe (Maus)
2 = wertändernde Einheiten (Cursor)
3 = auswählende Einheiten (Funktionstasten)
4 = alphanumerische Geräte (Tastatur)
input_mode Eingabe-Modus
1 = Request
2 = Sample
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all Atari computers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vsin_mode   vrq_locator   vsm_locator   vrq_valuator   vsm_valuator   vrq_choice   vsm_choice   vrq_string   vsm_string

7.6.8 Bindings für vqin_mode

C: void vqin_mode ( int16_t handle, int16_t dev_type, int16_t *input_mode );
Umsetzung:
void vqin_mode (int16_t handle, int16_t dev_type,
                int16_t *input_mode)
{
   intin[0] = dev_type;

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

   vdi ();

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

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

7.6.9 vql_attributes

Name: »Inquire Current Polyline Attributes« - ermittelt die Attribute für das Zeichnen von Linien.
VDI-Nummer: 35
Deklaration: void vql_attributes ( int16_t handle, int16_t *attrib );
Beschreibung: Die Funktion ermittelt die aktuellen Linien-Attribute. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
attrib[0] Linientyp
attrib[1] Index der Linienfarbe
attrib[2] Schreibmodus
attrib[3] Linienbreite bzgl. der x-Achse
attrib[4] Anfangsform der Linie
attrib[5] Endform der Linie


Hinweis: Die hier gemachten Angaben (insbesondere attrib[4,5]) gelten für die NVDI-Implementation.
Ergebnis: Die Funktion liefert kein Ergebis.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vswr_mode   vs_color   vsl_type   vsl_width   vsl_color   vsl_ends

7.6.10 Bindings für vql_attributes

C: void vql_attributes ( int16_t handle, int16_t *attrib );
Umsetzung:
void vql_attributes (int16_t handle, int16_t *attrib)
{
   contrl[0] = 35;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   attrib[0..2] = intout[0..2];
   attrib[3]    = ptsout[0];
   attrib[4..5] = intout[3..4];
}
GEM-Arrays:

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

7.6.11 vql_bg_color

Name: »Inquire Background Color« - Linien Hintergrundfarbe ermitteln
VDI-Nummer: 203 (Unterfunktion 2)
Deklaration: int32_t vql_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Beschreibung: Diese Funktionen ermittelt die Hintergrundfarbe für Linien.
Parameter Bedeutung
   
handle Kennung der Workstation
bg_color COLOR_ENTRY der Hintergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.12 Bindings für vql_bg_color

C: int32_t vql_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Umsetzung:
int32_t vql_bg_color( int16_t handle, COLOR_ENTRY *bg_color )
{
   contrl[0] = 203;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 2;
   contrl[6] = handle;

   vdi ();

   bg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 203 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 2
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] bg_color

7.6.13 vql_fg_color

Name: »Inquire Foreground Color« - Linien Vordergrundfarbe ermitteln
VDI-Nummer: 202 (Unterfunktion 2)
Deklaration: int32_t vql_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Beschreibung: Diese Funktionen ermittelt die Vordergrundfarbe für Linien.
Parameter Bedeutung
   
handle Kennung der Workstation
fg_color COLOR_ENTRY der Vordergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.14 Bindings für vql_fg_color

C: int32_t vql_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Umsetzung:
int32_t vql_fg_color( int16_t handle, COLOR_ENTRY *fg_color )
{
   contrl[0] = 202;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 2;
   contrl[6] = handle;

   vdi ();

   fg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 202 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 2
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] fg_color

7.6.15 vqm_attributes

Name: »Inquire Current Polymarker Attributes« - ermittelt die Attribute für das Zeichnen von Markierungen.
VDI-Nummer: 36
Deklaration: void vqm_attributes ( int16_t handle, int16_t *attrib );
Beschreibung: Die Funktion ermittelt die aktuellen Marker-Attribute. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
attrib[0] aktueller Markertyp
attrib[1] Index der Markerfarbe
attrib[2] Schreibmodus
attrib[3] Höhe des Markers
attrib[4] Breite des Markers


Hinweis: Die hier gemachten Angaben gelten für die Implementation in NVDI.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vswr_mode   vs_color   vsm_type   vsm_height   vsm_color

7.6.16 Bindings für vqm_attributes

C: void vqm_attributes ( int16_t handle, int16_t *attrib );
Umsetzung:
void vqm_attributes (int16_t handle, int16_t *attrib)
{
   contrl[0] = 36;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   attrib[0..2] = intout[0..2];
   attrib[3]    = ptsout[1];
   attrib[4]    = ptsout[0];
}
GEM-Arrays:

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

7.6.17 vqm_bg_color

Name: »Inquire Background Color« - Marker Hintergrundfarbe ermitteln
VDI-Nummer: 203 (Unterfunktion 3)
Deklaration: int32_t vqm_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Beschreibung: Diese Funktionen ermittelt die Hintergrundfarbe für Marker.
Parameter Bedeutung
   
handle Kennung der Workstation
bg_color COLOR_ENTRY der Hintergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.18 Bindings für vqm_bg_color

C: int32_t vqm_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Umsetzung:
int32_t vqm_bg_color( int16_t handle, COLOR_ENTRY *bg_color )
{
   contrl[0] = 203;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 3;
   contrl[6] = handle;

   vdi ();

   bg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 203 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 3
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] bg_color

7.6.19 vqm_fg_color

Name: »Inquire Foreground Color« - Marker Vordergrundfarbe ermitteln
VDI-Nummer: 202 (Unterfunktion 3)
Deklaration: int32_t vqm_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Beschreibung: Diese Funktionen ermittelt die Vordergrundfarbe für Marker.
Parameter Bedeutung
   
handle Kennung der Workstation
fg_color COLOR_ENTRY der Vordergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.20 Bindings für vqm_fg_color

C: int32_t vqm_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Umsetzung:
int32_t vqm_fg_color( int16_t handle, COLOR_ENTRY *fg_color )
{
   contrl[0] = 202;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 3;
   contrl[6] = handle;

   vdi ();

   fg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 202 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 3
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] fg_color

7.6.21 vqr_bg_color

Name: »Inquire Background Color« - Bitmap Hintergrundfarbe ermitteln
VDI-Nummer: 203 (Unterfunktion 4)
Deklaration: int32_t vqr_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Beschreibung: Diese Funktionen ermittelt die Hintergrundfarbe für Bitmaps.
Parameter Bedeutung
   
handle Kennung der Workstation
bg_color COLOR_ENTRY der Hintergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.22 Bindings für vqr_bg_color

C: int32_t vqr_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Umsetzung:
int32_t vqr_bg_color( int16_t handle, COLOR_ENTRY *bg_color )
{
   contrl[0] = 203;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 4;
   contrl[6] = handle;

   vdi ();

   bg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 203 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 4
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] bg_color

7.6.23 vqr_fg_color

Name: »Inquire Foreground Color« - Bitmap Vordergrundfarbe ermitteln
VDI-Nummer: 202 (Unterfunktion 4)
Deklaration: int32_t vqr_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Beschreibung: Diese Funktionen ermittelt die Vordergrundfarbe für Bitmap.
Parameter Bedeutung
   
handle Kennung der Workstation
fg_color COLOR_ENTRY der Vordergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.24 Bindings für vqr_fg_color

C: int32_t vqr_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Umsetzung:
int32_t vqr_fg_color( int16_t handle, COLOR_ENTRY *fg_color )
{
   contrl[0] = 202;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 4;
   contrl[6] = handle;

   vdi ();

   fg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 202 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 4
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] fg_color

7.6.25 vqt_advance

Name: »Inquire Outline text advance placement vector« - Position für nächstes Vektor-Zeichen ermitteln.
VDI-Nummer: 247
Deklaration: void vqt_advance ( int16_t handle, int16_t ch, int16_t *x_advance, int16_t *y_advance, int16_t *remx, int16_t *remy );
Beschreibung: Die Funktion berechnet Offsets, um das nächste Zeichen eines Strings an die richtige Position schreiben zu können. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
ch interessierendes Zeichen
x_advance x-Abstand in Pixeln
y_advance y-Abstand in Pixeln
remx x-Nachkommarest (mod 16384)
remy y-Nachkommarest (mod 16384)


Hinweis: Die Funktion wird inbesondere dann benötigt, wenn der Winkel für Textrotationen ein anderer als 0, 90, 180 oder 270 Grad ist.

Bei den gelieferten Werten handelt es sich nur um den Abstand, der für die Positionierung des nächsten Zeichens benutzt wird, d.h. x_advance beinhaltet keine Zeichenüberhänge.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: FSMGDOS, ab SpeedoGDOS 4.00 und ab NVDI 3.00.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vqt_advance   vst_rotation   SpeedoGDOS   NVDI

7.6.26 Bindings für vqt_advance

C: void vqt_advance ( int16_t handle, int16_t ch, int16_t *x_advance, int16_t *y_advance, int16_t *remx, int16_t *remy );
Umsetzung:
void vqt_advance ( int16_t handle, int16_t ch,
                   int16_t *x_advance, int16_t *y_advance,
                   int16_t *remx, int16_t *remy );
{
   intin[0] = ch;

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

   vdi ();

   x_advance = ptsout[0];
   y_advance = ptsout[1];
   remx      = ptsout[2];
   remy      = ptsout[3];
}
GEM-Arrays:

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


Es handelt sich bei x_advance und y_advance nur um den Abstand, der für die Positionierung des nächsten Zeichens benutzt wird, d.h. x_advance beinhaltet keine Zeichenüberhänge.

7.6.27 vqt_advance32

Name: »Inquire Outline text advance placement vector« - Position für nächstes Vektor-Zeichen ermitteln.
VDI-Nummer: 247
Deklaration: void vqt_advance32 ( int16_t handle, int16_t ch, fix31 *x_advance, fix31 *y_advance );
Beschreibung: Die Funktion berechnet Offsets, um das nächste Zeichen eines Strings an die richtige Position schreiben zu können. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
ch interessierendes Zeichen
x_advance x-Abstand in 1/65536 Pixeln
y_advance y-Abstand in 1/65536 Pixeln


Hinweis: Die Funktion wird inbesondere dann benötigt, wenn der Winkel für Textrotationen ein anderer als 0, 90, 180 oder 270 Grad ist.

Bei den gelieferten Werten handelt es sich nur um den Abstand, der für die Positionierung des nächsten Zeichens benutzt wird, d.h. x_advance beinhaltet keine Zeichenüberhänge.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: ab SpeedoGDOS 4.00 und ab NVDI 3.00. In der Doku zu NVDI 3.00 wird die Funktion fälschlicherweise vqt_advance genannt.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_rotation   SpeedoGDOS   NVDI

7.6.28 Bindings für vqt_advance32

C: void vqt_advance32 ( int16_t handle, int16_t ch, fix31 *x_advance, fix31 *y_advance );
Umsetzung:
void vqt_advance32 (int16_t handle, int16_t ch,
                   fix31 *x_advance, fix31 *y_advance)
{
   intin[0] = ch;

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

   vdi ();

   *x_advance = ptsout[4..5];
   *y_advance = ptsout[6..7];
}
GEM-Arrays:

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


Es handelt sich bei x_advance und y_advance nur um den Abstand, der für die Positionierung des nächsten Zeichens benutzt wird, d.h. x_advance beinhaltet keine Zeichenüberhänge.

7.6.29 vqt_attributes

Name: »Inquire Current Graphic Text Attributes« - ermittelt die Attribute für das Schreiben von Texten.
VDI-Nummer: 38
Deklaration: void vqt_attributes ( int16_t handle, int16_t *attrib );
Beschreibung: Die Funktion ermittelt die aktuellen Text-Attribute. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
attrib[0] Zeichensatznummer
attrib[1] Textfarbe
attrib[2] Drehwinkel des Texts (in 1/10 Grad)
attrib[3] horizontale Ausrichtung
0 = linksbündig
1 = zentriert
2 = rechtsbündig
attrib[4] vertikale Ausrichtung
0 = Baseline
1 = Half line
2 = Ascent line
3 = Bottom line
4 = Descent line
5 = Top line
attrib[5] Schreibmodus
Das ATARI-VDI gibt fehlerhafterweise den Schreibmodus mit -1 zurück.
attrib[6] Breite eines Zeichens
attrib[7] Höhe eines Zeichens
attrib[8] Zeichenzellenbreite
attrib[9] Zeichenzellenhöhe
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vswr_mode   vs_color   vst_height   vst_point   vst_rotation   vst_font   vst_color   vst_effects   vst_alignment

7.6.30 Bindings für vqt_attributes

C: void vqt_attributes ( int16_t handle, int16_t *attrib );
Umsetzung:
void vqt_attributes (int16_t handle, int16_t *attrib)
{
   contrl[0] = 38;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   attrib[0..5] = intout[0..5];
   attrib[6..9] = ptsout[0..3];
}
GEM-Arrays:

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


Hinweis: Das Atari-VDI gibt fälschlicherweise in intout[5] den Schreibmodus-1 zurück; mit NVDI geschieht das nur mit eingeschalteter Fehlerkompatibilität.

7.6.31 vqt_bg_color

Name: »Inquire Background Color« - Text Hintergrundfarbe ermitteln
VDI-Nummer: 203 (Unterfunktion 0)
Deklaration: int32_t vqt_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Beschreibung: Diese Funktionen ermittelt die Hintergrundfarbe für Text.
Parameter Bedeutung
   
handle Kennung der Workstation
bg_color COLOR_ENTRY der Hintergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.32 Bindings für vqt_bg_color

C: int32_t vqt_bg_color( int16_t handle, COLOR_ENTRY *bg_color );
Umsetzung:
int32_t vqt_bg_color( int16_t handle, COLOR_ENTRY *bg_color )
{
   contrl[0] = 203;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 0;
   contrl[6] = handle;

   vdi ();

   bg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 203 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 0
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] bg_color

7.6.33 vqt_cachesize

Name: »Get Outline cache size« - Ermitteln der Größe des Vektorzeichen-Caches.
VDI-Nummer: 255
Deklaration: void vqt_cachesize ( int16_t handle, int16_t which_cache, int32_t *size );
Beschreibung: Die Funktion ermittelt die Größe des Vektorzeichen-Caches. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
which_cache Cache
0 = Bitmap-Cache
1 = Cache für Datenstruktur
size Größe des jeweiligen Caches
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: FSMGDOS, ab SpeedoGDOS 4.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   v_loadcache   v_savecache   v_flushcache

7.6.34 Bindings für vqt_cachesize

C: void vqt_cachesize ( int16_t handle, int16_t which_cache, int32_t *size );
Umsetzung:
void vqt_cachesize ( int16_t handle, int16_t which_cache,
                     int32_t *size );
{
   intin[0] = which_cache;

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

   vdi ();

   *size = intout[0..1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 255 # 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] 2 # Einträge in intout
contrl+12 contrl[6] handle
intout intout[0] Returnwert

7.6.35 vqt_char_index

Name: »Inquire Character Index« - Konvertiert einen Index bzgl. eines bestimmten Mappings.
VDI-Nummer: 190 (Opcode 0)
Deklaration: uint16_t vqt_char_index ( int16_t handle, uint16_t scr_index, int16_t src_mode, int16_t dst_mode );
Beschreibung: Die Funktion konvertiert einen übergebenen Index anhand eines gewünschen Mappings. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
src_index zu konvertierender Index
src_mode Art des Quell-Mappings
0 = scr_index als direkter Index
1 = scr_index als ASCII-Index
2 = scr_index als Unicode-Index
dst_mode Art des Ziel-Mappings
0 = direkter Index
1 = ASCII-Index
2 = Unicode-Index


Hinweis: Soll ein Index vom ASCII-Format ausgehend oder ins ASCII-Format gewandelt werden, dann wird nur der Bereich von Index 32 bis 255 beachtet. Die Steuerzeichen von 0 bis 31 werden nicht gewandelt, d.h. der Aufruf von vqt_char_index (handle, 10, 1, 0) liefert als Ergebnis den Wert 0xffff.

Um z.B. zu überprüfen, ob der eingestellte Font ein Zeichen mit Unicode 0x201e (quotedblbase, 99er Anführungszeichen unten) enthält, sollte die folgende Funktion aufgerufen werden:
int16_t is_char_available (int16_t handle, uint16_t unicode)
{
   uint16_t dindex;

   /* Unicode  in direkten Index wandeln */
   dindex = vqt_char_index (handle, unicode, 2, 0);

   if (dindex == 0xffff)
      return (FALSE);
   else
      return (TRUE);
}
Ergebnis: Die Funktion liefert den konvertierten Index zurück, bzw. den Wert 0xffff, falls eine Konvertierung nicht möglich war.
Verfügbar: ab NVDI Version 4.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_charmap

7.6.36 Bindings für vqt_char_index

C: uint16_t vqt_char_index ( int16_t handle, uint16_t scr_index, int16_t src_mode, int16_t dst_mode );
Umsetzung:
uint16_t vqt_char_index ( int16_t handle, uint16_t scr_index,
                          int16_t scr_mode, int16_t dst_mode )
{
   intin[0] = scr_index;
   intin[1] = src_mode;
   intin[2] = dst_mode;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 190 # 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] 0
contrl+12 contrl[6] handle
intin intin[0] scr_index
intin+2 intin[1] scr_mode
intin+4 intin[2] dst_mode
intout intout[0] Return-Wert

7.6.37 vqt_devinfo

Name: »Inquire device status info« - Status des Ausgabegeräts erfragen.
VDI-Nummer: 248
Deklaration: void vqt_devinfo ( int16_t handle, int16_t device, int16_t *devexits, int8_t *devname );
Beschreibung: Die Funktion überprüft, ob ein Treiber für ein bestimmtes Ausgabegerät installiert worden ist. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
device VDI-Gerätenummer (0..99)
devexits
-1 = Es ist ein Fehler aufgetreten.
 0 = Gerät nicht installiert
 1 = Gerät installiert
devname Treibername
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Nur mit FONTGDOS, FSM oder SpeedoGDOS.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vq_devinfo   vq_ext_devinfo   GDOS   SpeedoGDOS   NVDI

7.6.38 Bindings für vqt_devinfo

C: void vqt_devinfo ( int16_t handle, int16_t device, int16_t *devexits, int8_t *devname );
Umsetzung:
void vqt_devinfo ( int16_t handle, int16_t device, int16_t *devexits,
                   int8_t *devname )
{
   intin[0] = device;

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

   vdi ();

   *devexits = ptsout[0];
   p = contrl[4];
   dev_name[0..p-1]    = intout[0..p-1];
}
GEM-Arrays:

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

7.6.39 vqt_extent

Name: »Inquire Text Extent« - ermittelt die Länge eines Strings.
VDI-Nummer: 116
Deklaration: void vqt_extent ( int16_t handle, int8_t *string, int16_t *extent );
Beschreibung: Die Funktion ermittelt die Ausmaße eines minimalen Rechteckes, das einen Text unter Beachtung der Textattribute voll umgibt.

Beispiel:



Der Funktion werden folgende Parameter übergeben:
Parameter Bedeutung
   
handle Kennung der Workstation
string Adresse der Zeichenkette
extent[0] x-Koordinate
extent[1] y-Koordinate der unteren linken Ecke
extent[2] x-Koordinate
extent[3] y-Koordinate der unteren rechten Ecke
extent[4] x-Koordinate
extent[5] y-Koordinate der oberen rechten Ecke
extent[6] x-Koordinate
extent[7] y-Koordinate der oberen linken Ecke


Hinweis: Bei Vektorfonts addiert diese Funktion nur die Schrittweiten, ohne Pair- oder Track-Kerning und Zeichenüberhänge zu beachten. Aus diesem Grund sollte ggfs. auf die Funktion vqt_real_extent zurückgegriffen werden.

In alten GEM-Versionen arbeitet die Funktion übrigens nicht korrekt, falls die Zeichenkette Umlaute enthält, da alte GEM-Versionen mit diesen noch nicht umgehen konnten.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_height   vst_point   vst_rotation   vst_font   vst_effects   vqt_f_extent   vqt_real_extent

7.6.40 Bindings für vqt_extent

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

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

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

   vdi ();

   extent[0..7] = ptsout[0..7];
}
GEM-Arrays:

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

7.6.41 vqt_ext_name

Name: »Inquire Face Name and Index« - Informationen über einen Zeichensatz ermitteln.
VDI-Nummer: 130 (Unterfunktion 1)
Deklaration: int16_t vqt_ext_name ( int16_t handle, int16_t index, int8_t *name, uint16_t *font_format, uint16_t *flags );
Beschreibung: Die Funktion ermittelt Informationen über einen Zeichensatz. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
index Nummer des Zeichensatzes
name[0..31] Name des Zeichensatzes
name[32] Flag
0 = Bitmap-Font
1 = Vektorfont
font_format Format des Zeichensatzes
Bit-0 = Bitmap
Bit-1 = Speedo
Bit-2 = TrueType
Bit-3 = Type-1
flags Art des Zeichensatzes
Bit-0
= 0 (Font ist proportional)
= 1 (Font ist monospaced)
Bit-4 seit NVDI 4.1 (27.11.1996)
= 0 (Font ist kein Symbolfont)
= 1 (Font ist ein Symbolfont)


Hinweis: Ein Font wird als Symbolfont eingestuft, wenn er im Bereich 'A'-'Z' und 'a'-'z' nicht vollständig ist, oder wenn er laut der PANOSE Klassifizierung pictorial ist. Das entsprechende Flag ist daher nur als Anhaltspunkt zu betrachten (bei einem kyrillischen TrueType-Font wäre es z.B. auch gesetzt), und signalisiert, daß die Zeichenbelegung im ASCII-Mapping (vst_charmap) nicht der normalen Atari-Belegung entspricht.
Ergebnis: Die Funktion liefert den Index des Zeichensatzes zurück.
Verfügbar: ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_load_fonts   vst_font   vqt_xfntinfo

7.6.42 Bindings für vqt_ext_name

C: int16_t vqt_ext_name ( int16_t handle, int16_t index, int8_t *name, uint16_t *font_format, uint16_t *flags );
Umsetzung:
int16_t vqt_ext_name (int16_t handle, int16_t index,
                      int8_t *name, uint16_t *font_format,
                      uint16_t *flags)
{
   intin[0] = index;
   intin[1] = 0;         /* reserviert */

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

   vdi ();

   name[0..31]  = intout[1..32];
   name[32]     = intout[33];
   *flags       = (intout[34] >> 8) & 0xff;
   *font_format = intout[34] & 0xff;

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

Adresse Feldelement Belegung
contrl contrl[0] 130 # 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] 35 # Einträge in intout
contrl+10 contrl[5] 1 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] index
intin+2 intin[1] 0
intout intout[0] Return-Wert
intout+2 intout[1..16] name[0..31]
intout+64 intout[33] name[32]
intout+66 intout[34] flags/font_format


Hinweis: Im High-Byte von intout[34] wird flags zurückgeliefert; im Low-Byte von intout[34] font_format.

Um festzustellen, was für einen Font man vor sich hat, muß man die Anzahl der Einträge in intout (contrl[4]) beachten. Ist contrl[4] 33, so sind keine zusätzlichen Informationen vorhanden und demzufolge muß es sich um einen Bitmapfont handeln. Ist contrl[4] == 34, wird nur zusätzlich in intout[33] (name[32]) mitgeteilt, ob es sich um einen Vektorfont handelt. Nur wenn contrl[4] == 35 ist, kann man mit intout[34] (flags) den Fonttyp genauer feststellen und sofort erkennen, ob der Font äquidistant (monospaced) ist.

intout[34] wird nur zurückgeliefert, wenn contrl[3] > 1 und contrl[5] = 1!

7.6.43 vqt_fg_color

Name: »Inquire Foreground Color« - Text Vordergrundfarbe ermitteln
VDI-Nummer: 202 (Unterfunktion 0)
Deklaration: int32_t vqt_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Beschreibung: Diese Funktionen ermittelt die Vordergrundfarbe für Text.
Parameter Bedeutung
   
handle Kennung der Workstation
fg_color COLOR_ENTRY der Vordergrundfarbe
Ergebnis: Eingestellter Farbraum (z.Zt. nur CSPACE_RGB) oder -1 (falsche Unterfunktionsnummer).
Verfügbar: ab NVDI 5.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.44 Bindings für vqt_fg_color

C: int32_t vqt_fg_color( int16_t handle, COLOR_ENTRY *fg_color );
Umsetzung:
int32_t vqt_fg_color( int16_t handle, COLOR_ENTRY *fg_color )
{
   contrl[0] = 202;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[5] = 0;
   contrl[6] = handle;

   vdi ();

   fg_color = intout [2..5];
   return ( int32_t intout [0]  );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 202 # 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] 6 # Einträge in intout
contrl+10 contrl[5] 0 # Sub-Opcode
contrl+12 contrl[6] handle
intout intin[0..1] color_space
intout+4 intin[2..5] fg_color

7.6.45 vqt_fontheader

Name: »Inquire Speedo header information« - Informationen über einen Zeichensatz ermitteln
VDI-Nummer: 232
Deklaration: void vqt_fontheader ( int16_t handle, int8_t *buffer, int8_t *tdf_name );
Beschreibung: Die Funktion kopiert den Header des eingestellten Speedo-Fonts in einen Puffer, und liefert wenn möglich einen Zeiger auf die zugehörige TDF-Datei. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
buffer aufnehmender Puffer
tdf_name aufnehmender Zugriffspfad auf die entsprechende TDF-Datei


Hinweis: Der aufnehmende Puffer sollte eine Größe von ca. 1 Kbyte besitzen, da die Länge des Speedo-Fontheaders vom jeweiligen Zeichensatz und möglichen Formaterweiterungen abhängt.

Für andere Zeichensatzformate (Beispiel: TrueType) wird versucht, den Header nachzubilden.

Es sollte beachtet werden, daß für jeden Aufruf dieser Funktion mehrfach auf die Festplatte zugegriffen werden muß; - bei vielen installierten Zeichensätzen kann dies einige Sekunden dauern. Daher sollte man den häufigen Aufruf der Funktion vermeiden, oder wichtige Angaben selbst speichern, und beim Programmstart laden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: ab SpeedoGDOS 4.00 und ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vqt_fontinfo   Aufbau des Fontheaders

7.6.46 Bindings für vqt_fontheader

C: void vqt_fontheader ( int16_t handle, int8_t *buffer, int8_t *tdf_name );
Umsetzung:
void vqt_fontheader (int16_t handle, int8_t *buffer,
                     int8_t *tdf_name)
{
   intin[0..1] = buffer;

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

   vdi ();

   tdf_name[0..n-1] = intout[0..n-1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 232 # 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] n # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0..1] buffer
intout intout[0..n-1] tdf_name[0..n-1]

7.6.47 vqt_fontinfo

Name: »Inquire Current Face Information« - ermittelt Informationen über Zeichensätze.
VDI-Nummer: 131
Deklaration: void vqt_fontinfo ( int16_t handle, int16_t *minADE, int16_t *maxADE, int16_t *distances, int16_t *maxwidth, int16_t *effects );
Beschreibung: Die Funktion informiert über den aktuellen Zeichensatz.



Der Funktion werden folgende Parameter übergeben:
Parameter Bedeutung
   
handle Kennung der Workstation
minADE niedrigster ASCII-Wert
maxADE höchster ASCII-Wert
distances[0] Abstand der untere Kante der Zeichenzelle zur Basislinie (y-Achse)
distances[1] Abstand der unteren Zeichengrenze zur Basislinie (y-Achse)
distances[2] Abstand der Halblinie zur Basislinie
distances[3] Abstand der oberen Zeichengrenze zur Basislinie (y-Achse)
distances[4] Abstand der oberen Zeichenzelle zur Basislinie (y-Achse)
max_width maximale Zeichenzellenbreite ohne Texteffekte
effects[0] Betrag, um den die Zeichenbreite bei den aktuellen Texteffekten zunimmt
effects[1] linker Offsetwert (bzgl. x-Achse)
effects[2] rechter Offsetwert (bzgl. x-Achse)


Hinweis: Die aktuellen Text-Effekte werden beachtet. Bei kursiver Schrift wird die Neigung als rechter und linker Offset-Wert bedacht. Der rechte Offsetwert ist der horizontale Abstand der Zeichenposition (linkes Basislinienende) zum Lotfußpunkt des Lotes auf die Basislinie durch die obere rechte Ecke; analog ist der linke Offsetwert der Abstand der Zeichenposition zum Lotfußpunkt des Lotes auf die Basislinie durch die untere linke Ecke.

Die Komponenten minADE und maxADE stehen für das erste bzw. letzte Zeichen des Zeichensatzes.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_effects   ASCII-Tabelle

7.6.48 Bindings für vqt_fontinfo

C: void vqt_fontinfo ( int16_t handle, int16_t *minADE, int16_t *maxADE, int16_t *distances, int16_t *maxwidth, int16_t *effects );
Umsetzung:
void vqt_fontinfo (int16_t handle, int16_t *minADE,
                   int16_t *maxADE, int16_t *distances,
                   int16_t *maxwidth, int16_t *effects)
{
   contrl[0] = 131;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   *minADE    = intout[0];
   *maxADE    = intout[1];
   *max_width = ptsout[0];

   distances[0] = ptsout[1];
   distances[1] = ptsout[3];
   distances[2] = ptsout[5];
   distances[3] = ptsout[7];
   distances[4] = ptsout[9];

   effects[0] = ptsout[2];
   effects[1] = ptsout[4];
   effects[2] = ptsout[6];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 131 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 5 # Einträge in ptsout
contrl+6 contrl[3] 0 # Einträge in intin
contrl+8 contrl[4] 2 # Einträge in intout
contrl+12 contrl[6] handle
intout intout[0] minADE
intout+2 intout[1] maxADE
ptsout ptsout[0] maxwidth
ptsout+2 ptsout[1] distances[0]
ptsout+4 ptsout[2] effects[0]
ptsout+6 ptsout[3] distances[1]
ptsout+8 ptsout[4] effects[1]
ptsout+10 ptsout[5] distances[2]
ptsout+12 ptsout[6] effects[2]
ptsout+14 ptsout[7] distances[3]
ptsout+16 ptsout[8] 0
ptsout+18 ptsout[9] distances[4]

7.6.49 vqt_f_extent

Name: »Inquire Outline-Font Text Extent« - ermittelt die Länge eines Strings im Vektor-Zeichensatz.
VDI-Nummer: 240
Deklaration: void vqt_f_extent ( int16_t handle, int8_t *string, int16_t *extent );
Beschreibung: Die Funktion addiert die Zeichenweiten eines Strings. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
string Adresse der Zeichenkette
extent[0] x-Koordinate
extent[1] y-Koordinate der unteren linken Ecke
extent[2] x-Koordinate
extent[3] y-Koordinate der unteren rechten Ecke
extent[4] x-Koordinate
extent[5] y-Koordinate der oberen rechten Ecke
extent[6] x-Koordinate
extent[7] y-Koordinate der oberen linken Ecke


Hinweis: Im Gegensatz zu vqt_extent beachtet die Funktion auch etwaige Kerning-Werte.

Achtung: Diese Funktion liefert nicht das den Text umgebende Rechteck. Sie addiert nur die Schrittweiten und beachtet auch nicht linke oder rechte Zeichenüberhänge. Sie ist im Prinzip nur zur Cursor-Positionierung gedacht. Wer aber mit dieser Funktion die Größe eines neuzuzeichnenden Bildbereiches ermitteln möchte, muß links und rechts sicherheitshalber die Breite des größten Zeichens hinzuaddieren (und die Neigung beachten).

Vorsicht: Aus Kompatibilitätsgründen verhält sich diese Funktion bei 90, 180 und 270 Grad genauso unsinnig wie das alte vqt_extent - der Bezugspunkt wird geändert!

Ab NVDI-3 empfiehlt sich stattdessen die Verwendung von vqt_real_extent.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: ab SpeedoGDOS 4.00 und ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vqt_extent   SpeedoGDOS   NVDI

7.6.50 Bindings für vqt_f_extent

C: void vqt_f_extent ( int16_t handle, int8_t *string, int16_t *extent );
Umsetzung:
void vqt_f_extent (int16_t handle, int8_t *string,
                   int16_t *extent)
{
   intin[0..n-1] = string[0..n-1];

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

   vdi ();

   extent[0..7] = ptsout[0..7];
}
GEM-Arrays:

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

7.6.51 vqt_get_table

Name: »Get Character Mapping Table« - Adresse der Zeichentransformationstabellen erfragen.
VDI-Nummer: 254
Deklaration: void vqt_get_table ( int16_t handle, int32_t *map );
Beschreibung: Die Funktion ermittelt die Adresse der Zeichentransformationstabellen. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
map Adresse an der die Zeichenbelegungstabelle zufinden ist. Die Tabelle besteht aus sieben Feldern. Jedes hat eine Größe von 224 int16_t für die ASCII Zeichen 32-255.
Position Tabelle
1 Master mapping
2 Bitstream International Character Set
3 Bitstream International Symbol Set
4 Bitstream Dingbats Set
5 PostScript Text Set
6 PostScript Symbol Set
7 PostScript Dingbats Set


Hinweis: Diese Informationen sind nützlich, da Vektorfonts auch Zeichen enthalten können, die im normalen Atari-Zeichensatz nicht enthalten sind.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: ab SpeedoGDOS 4.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   GDOS   SpeedoGDOS   v_gtext

7.6.52 Bindings für vqt_get_table

C: void vqt_get_table ( int16_t handle, int32_t *map );
Umsetzung:
void vqt_get_table ( int16_t handle, int32_t *map )
{
   contrl[0] = 254;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   map = intout[0..1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 254 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+12 contrl[6] handle
intout intout[0..1] map

7.6.53 vqt_justified

Name: »Inquire justified graphics text« - Offsets von einem Ausrichtungspunkt erfragen.
VDI-Nummer: 132
Deklaration: void vqt_justified ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t length, int16_t word_space, int16_t char_space, int16_t *offsets );
Beschreibung: Die Funktion ermittelt für jedes Zeichen eines Strings die x- und y-Offsets von einem gegebenen Ausrichtungspunkt. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
x x-Koordinate
y y-Koordinate des Punktes für die Textausrichtung
string Zeiger auf die Zeichenkette
length Textlänge in Pixeln (bzgl. x-Achse)
word_space Wortzwischenräume
   0 = nicht dehnen
<> 0 = dehnen
char_space Zeichenzwischenräume
   0 = nicht dehnen
<> 0 = dehnen
offsets enthält für jedes Zeichen im String den x- und y-Offset
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: PC-GEM ab Version 2.0
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.54 Bindings für vqt_justified

C: void vqt_justified ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t length, int16_t word_space, int16_t char_space, int16_t *offsets );
Umsetzung:
void vqt_justified (int16_t handle, int16_t x, int16_t y,
                    int8_t *string, int16_t length,
                    int16_t word_space, int16_t char_space,
                    int16_t *offsets)
{
   int16_t i;

   intin[0] = word_space;
   intin[1] = char_space;

   ptsin[0] = x;
   ptsin[1] = y;
   ptsin[2] = length;
   ptsin[3] = 0;

   i = 0;
   while (string[i++])
      ;

   contrl[0] = 132;
   contrl[1] = 2;
   contrl[3] = i;
   contrl[6] = handle;
   pooff = offsets;

   vdi ();

   pooff = ptsout;
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 132 # Opcode der Funktion
contrl+2 contrl[1] 2 # Einträge in ptsin
contrl+4 contrl[2] n # Einträge in ptsout
contrl+6 contrl[3] 2+n # Einträge in intin
contrl+8 contrl[4] 0 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] word_space
intin+2 intin[1] char_space
intin+4 intin[2] string[0..n+1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsin+4 ptsin[2] length
ptsin+6 ptsin[3] 0
ptsout ptsout[...] offsets[...]

7.6.55 vqt_name

Name: »Inquire Face Name and Index« - ermittelt den Namen und Kurzbeschreibung eines Zeichensatzes.
VDI-Nummer: 130
Deklaration: int16_t vqt_name ( int16_t handle, int16_t element_num, int8_t *name );
Beschreibung: Die Funktion ermittelt den Namen und Index eines Zeichensatzes. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
element_num Nummer des Zeichensatzes
name Name des Zeichensatzes als maximal 32 Zeichen lange Zeichenkette


Hinweis: Das Element name[32] enthält den Wert 0, falls es sich um einen Pixelfont handelt, und den Wert 1, falls es sich um einen Vektorfont handelt. (ab SpeedoGDOS 4.0)

In GEM/5, this function returns nothing for font index 0 or 1; for other indices, the font scaler is used to return data. A good test for a GEM/5 VDI would be to do a vqt_name on font 1, and see if it returned any values - if it did not, GEM/5 is running.

Ab NVDI-3 gibt es eine erweiterte Form dieser Funktion.
Ergebnis: Die Funktion liefert den Index des Zeichensatzes zurück.
Verfügbar: in allen TOS Version, ab SpeedoGDOS 4.0 in erweiterte Version
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_load_fonts   vst_name   vst_font   vqt_xfntinfo

7.6.56 Bindings für vqt_name

C: int16_t vqt_name ( int16_t handle, int16_t element_num, int8_t *name );
Umsetzung:
int16_t vqt_name (int16_t handle, int16_t element_num,
                  int8_t *name)
{
   int16_t tmp;

   intin[0] = element_num;

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

   vdi ();

   for (tmp = 0; tmp < 32; tmp++)
      name[tmp] = intout[tmp+1];

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

Adresse Feldelement Belegung
contrl contrl[0] 130 # 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] 33 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] element_num
intout intout[0] Return-Wert
intout+2 intout[1..32] name[0..31]

7.6.57 vqt_name_and_id

Name: »Inquire face name and ID by name« - Font ID und Namen suchen
VDI-Nummer: 230 (Unterfunktion 100)
Deklaration: int16_t vqt_name_and_id ( int16_t handle, int16_t font_format, int8_t *font_name, int8_t *ret_name );
Beschreibung: Die Funktion sucht einen Zeichensatz mit einem bestimmten Namen und Format. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
font_format gewünschtes Zeichensatz-Format
1 = Bitmap-Font
2 = Speedo
4 = TrueType
8 = Type-1
font_name gewünschter Zeichensatz-Name
ret_name Name des gefundenen Zeichensatzes


Hinweis: Fehlende oder überschüssige Leerzeichen werden bei der Suche ignoriert.
Ergebnis: Die Funktion liefert die ID des Zeichensatzes, bzw. den Wert 0, wenn kein entsprechender Font auffindbar ist.
Verfügbar: ab NVDI Version 3.02
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_name

7.6.58 Bindings für vqt_name_and_id

C: int16_t vqt_name_and_id ( int16_t handle, int16_t font_format, int8_t *font_name, int8_t *ret_name );
Umsetzung:
int16_t vqt_name_and_id (int16_t handle, int16_t font_format,
                         int8_t *font_name, int8_t *ret_name)
{
   intin[0] = font_format;
   intin[1..n] = font_name[0..n-1];

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

   vdi ();

   ret_name[0..m-1] = intout[1..m];
   return ( intout[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 230 # 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] m # Einträge in intout
contrl+10 contrl[5] 100 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] font_format
intin+2 intin[1..n] font_name[0..n-1]
intout intout[0] Return-Wert
intout+2 intout[1..m] ret_name[0..m-1]

7.6.59 vqt_pairkern

Name: »Inquire pair kerning information« - Korrekturfaktor für Zeichen mit Pair-Kerning ermitteln
VDI-Nummer: 235
Deklaration: void vqt_pairkern ( int16_t handle, int16_t ch1, int16_t ch2, fix31 *x, fix31 *y );
Beschreibung: Die Funktion ermittelt den Korrekturfaktor für zwei Zeichen im Falle des Pair-Kernings. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
ch1 erstes Zeichen
ch2 zweites Zeichen
x x-Korrekturfaktor
y y-Korrekturfaktor
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: ab SpeedoGDOS 4.0 und ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vqt_trackkern   SpeedoGDOS   NVDI   Kerning   Track-Kerning   Pair-Kerning

7.6.60 Bindings für vqt_pairkern

C: void vqt_pairkern ( int16_t handle, int16_t ch1, int16_t ch2, fix31 *x, fix31 *y );
Umsetzung:
void vqt_pairkern (int16_t handle, int16_t ch1, int16_t ch2,
                   fix31 *x, fix31 *y)
{
   intin[0] = ch1;
   intin[1] = ch2;

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

   vdi ();

   *x = intout[0..1];
   *y = intout[2..3];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 235 # 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] 4 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] ch1
intin+2 intin[1] ch2
intout intout[0..1] x
intout+4 intout[2..3] y

7.6.61 vqt_real_extent

Name: »Inquire real outline font text extent« - Ermitteln des einen Text umgebenden Rechteckes.
VDI-Nummer: 240 (Unterfunktion 4200)
Deklaration: void vqt_real_extent ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t *extent );
Beschreibung: Die Funktion ermittelt ein minimales Rechteck, daß einen Text unter Beachtung der Textattribute voll umgibt.

Beispiel:



Der Funktion werden folgende Parameter übergeben:

Parameter Bedeutung
handle Kennung der Workstation
x x-Koordinate
y y-Koordinate
string gewünschte Zeichenkette
extent[0] x-Koordinate
extent[1] y-Koordinate der linken, unteren Ecke
extent[2] x-Koordinate
extent[3] y-Koordinate der rechten, unteren Ecke
extent[4] x-Koordinate
extent[5] y-Koordinate der rechten, oberen Ecke
extent[6] x-Koordinate
extent[7] y-Koordinate der linken, oberen Ecke


Hinweis: Die Funktion beachtet sämtliche Texteffekte, Rotation, Schrägstellung, Pair-Kerning, Track-Kerning, Zeichenüberhänge, horizontale und vertikale Ausrichtung.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: ab NVDI Version 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vqt_extent   vqt_f_extent

7.6.62 Bindings für vqt_real_extent

C: void vqt_real_extent ( int16_t handle, int16_t x, int16_t y, int8_t *string, int16_t *extent );
Umsetzung:
void vqt_real_extent (int16_t handle, int16_t x, int16_t y,
                      int8_t *string, int16_t *extent)
{
   intin[0..n-1] = string[0..n-1];
   ptsin[0] = x;
   ptsin[1] = y;

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

   vdi ();

   extent[0..7] = ptsout[0..7];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 240 # Opcode der Funktion
contrl+2 contrl[1] 1 # Einträge in ptsin
contrl+4 contrl[2] 4 # 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] 4200 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0..n-1] string[0..n-1]
ptsin ptsin[0] x
ptsin+2 ptsin[1] y
ptsout ptsout[0..7] extent[0..7]

7.6.63 vqt_trackkern

Name: »Inquire track kerning information« - Korrekturfaktor für Zeichensätze mit Track-Kerning ermitteln
VDI-Nummer: 234
Deklaration: void vqt_trackkern ( int16_t handle, fix31 *x, fix31 *y );
Beschreibung: Die Funktion liefert den Korrekturfaktor für Zeichensätze mit Track-Kerning. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
x x-Korrekturfaktor
y y-Korrekturfaktor
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: ab SpeedoGDOS 4.0 und ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   GDOS   SpeedoGDOS   vqt_pairkern

7.6.64 Bindings für vqt_trackkern

C: void vqt_trackkern ( int16_t handle, fix31 *x, fix31 *y );
Umsetzung:
void vqt_trackkern (int16_t handle, fix31 *x, fix31 *y)
{
   contrl[0] = 234;
   contrl[1] = 0;
   contrl[3] = 0;
   contrl[6] = handle;

   vdi ();

   *x = intout[0..1];
   *y = intout[2..3];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 234 # 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] 4 # Einträge in intout
contrl+12 contrl[6] handle
intout intout[0..1] x
intout+4 intout[2..3] y

7.6.65 vqt_width

Name: »Inquire Character Cell Width« - ermittelt die Breite einer Zeichenzelle.
VDI-Nummer: 117
Deklaration: int16_t vqt_width ( int16_t handle, int8_t character, int16_t *cell_width, int16_t *left_delta, int16_t *right_delta );
Beschreibung: Die Funktion ermittelt die horizontalen Ausmaße eines Zeichens des akuellen Zeichensatzes sowie der Zeichenzelle. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
character Zeichennummer
cell_width Zeichenzellenbreite (bzgl. x-Achse)
left_delta Abstand des linken Zeichenzellenrands zum linken Zeichenrand bzgl. der x-Achse
right_delta Abstand des rechten Zeichenzellenrands zum rechten Zeichenrand bzgl. der y-Achse


Hinweis: Texteffekte und Drehungen werden von der Funktion nicht beachtet.

Wendet man die Funktion auf einen Vektorfont an, wird für das Zeichen character die gerundete Schrittweite zurückgegeben. Diese Schrittweite kann nur im Zusammenhang mit v_gtext benutzt werden. Versucht man diese Schrittweiten auf v_ftext anzuwenden, wird man falsche Zeichenpositionen berechnen.



Um festzustellen, ob ein Font äquidistant (monospaced) oder proportional ist, sollten nicht alle Zeichenpaare über vqt_width verglichen, sondern zuerst überprüft werden, ob vqt_name() hierüber Informationen zurückgibt.

Die Werte in left_delta und right_delta entsprechen exakt den Positionen in der Horizontal-Offset-Table. Fehlt diese Angabe im Zeichensatzkopf (was bei den meisten Bitmap-Fonts der Fall ist), so erhält man als Ergebnis eine Null.
Ergebnis: Die Funktion liefert den Wert -1, falls die Ausmaße aus irgendeinem Grund nicht berechnet werden konnten.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_effects

7.6.66 Bindings für vqt_width

C: int16_t vqt_width ( int16_t handle, int8_t character, int16_t *cell_width, int16_t *left_delta, int16_t *right_delta );
Umsetzung:
int16_t vqt_width (int16_t handle, int8_t character,
                   int16_t *cell_width, int16_t *left_delta,
                   int16_t *right_delta)
{
   intin[0] = character;

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

   vdi ();

   *cell_width  = ptsout[0];
   *left_delta  = ptsout[2];
   *right_delta = ptsout[4];

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

Adresse Feldelement Belegung
contrl contrl[0] 117 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] 3 # Einträge in ptsout
contrl+6 contrl[3] 1 # Einträge in intin
contrl+8 contrl[4] 1 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] character
intout intout[0] Return-Wert
ptsout ptsout[0] cell_width
ptsout+2 ptsout[1] 0
ptsout+4 pstout[2] left_delta
ptsout+6 ptsout[3] 0
ptsout+8 ptsout[4] right_delta
ptsout+10 ptsout[5] 0

7.6.67 vqt_xfntinfo

Name: »Inquire extended font information« - Informationen über einen Zeichensatz ermitteln.
VDI-Nummer: 229 (Opcode 0)
Deklaration: int16_t vqt_xfntinfo ( int16_t handle, int16_t flags, int16_t id, int16_t index, XFNT_INFO *info );
Beschreibung: Die Funktion ermittelt bestimmte Informationen über einen Zeichensatz. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
flags gewünschte Information als Bitvektor
Bit-0 = vollständiger Zeichensatzname
Bit-1 = Name der Zeichensatzfamilie
Bit-2 = Stil des Zeichensatzes
Bit-3 = Dateiname des Zeichensates
Bit-4 = zweiter optionaler Dateiname
Bit-5 = dritter optionaler Dateiname
Bit-8 = Höhen ohne Vergrößerung in pt
Bit-9 = Höhen für doppelte Vergrößerung in pt
id ID des Zeichensatzes, oder 0 für den eingestellten Zeichensatz
index Index des Zeichensatzes oder 0, wenn die ID bereits benutzt wird
info Adresse der Informations-Struktur


Hinweis: Wenn ein von 0 verschiedener Index übergeben wird, sucht die Funktion den entsprechenden Zeichensatz, und liefert die gewünschten Informationen. Ist index = 0 wird der Zeichensatz mit der ID id gesucht; sollte id ebenfalls 0 sein, so werden Informationen über den z.Zt. eingestellten Font zurückgegeben.

Bit 8 und 9 von flags unterscheiden sich in der Funktion nur bei Bitmap-Fonts. Ist Bit 8 gesetzt, werden die Höhen geliefert, die ohne Vergrößerung vorhanden sind. Wenn Bit 9 gesetzt ist, werden die Höhen geliefert, bei denen vergrößert wird.

Damit die gewünschten Informationen abgelegt werden können, muß die Größe der aufnehmenden Struktur in der Komponente size eingetragen werden.
Ergebnis: Das Funktionsergebnis ist z.Zt. unbekannt.
Verfügbar: ab NVDI 3.02
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vqt_name

7.6.68 Bindings für vqt_xfntinfo

C: int16_t vqt_xfntinfo ( int16_t handle, int16_t flags, int16_t id, int16_t index, XFNT_INFO *info );
Umsetzung:
int16_t vqt_xfntinfo (int16_t handle, int16_t flags,
                      int16_t id, int16_t index,
                      XFNT_INFO *info)
{
   intin[0] = flags;
   intin[1] = id;
   intin[2] = index;
   intin[3..4] = info;

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

   vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 229 # 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] 3 # Einträge in intout
contrl+10 contrl[5] 0
contrl+12 contrl[6] handle
intin intin[0] flags
intin+2 intin[1] id
intin+4 intin[2] index
intin+6 intin[3..4] info
intout intout[0] font_format
intout+2 intout[1] font_id
intout+4 intout[2] index

7.6.69 vq_cellarray

Name: »Inquire Cell Array« - ermittelt Informationen über eine dargestellte Farbtabelle.
VDI-Nummer: 27
Deklaration: void vq_cellarray ( int16_t handle, int16_t *pxyarray, int16_t row_length, int16_t num_rows, int16_t *el_used, int16_t *rows_used, int16_t *status, int16_t *colarray );
Beschreibung: Die Funktion gibt Auskunft über die Definition des Cell-Arrays. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
pxyarray[0] x-Koordinate
pxyarray[1] y-Koordinate der oberen linken Ecke
pxyarray[2] x-Koordinate
pxyarray[3] y-Koordinate der unteren rechten Ecke
row_length Zeilenlänge im Farbindex-Array
num_rows Anzahl der Zeilen im Farbindex-Array
el_used Anzahl der Spalten
rows_used Anzahl der benutzten Spalten im Farbindex-Array
status
0 = keine Fehler
1 = der Farbwert konnte für einige Pixel nicht bestimmt werden
colarray Farbindex-Array, das zeilenweise die Farbinformationen enthält bzw. -1, falls der Farbindex für den angegebenen Bereich nicht ermittelt werden konnte


Hinweis: Die Funktion ist nicht auf allen Geräten verfügbar.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: Not supported by any known drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   v_cellarray

7.6.70 Bindings für vq_cellarray

C: void vq_cellarray ( int16_t handle, int16_t *pxyarray, int16_t row_length, int16_t num_rows, int16_t *el_used, int16_t *rows_used, int16_t *status, int16_t *colarray );
Umsetzung:
void vq_cellarray (int16_t handle, int16_t *pxyarray,
                   int16_t row_length, int16_t num_rows,
                   int16_t *el_used, int16_t *rows_used,
                   int16_t *status, int16_t *colarray)
{
   ptsin[0..3] = pxarray[0..3];

   contrl[0] = 27;
   contrl[1] = 2;
   contrl[3] = 0;
   contrl[6] = handle;
   contrl[7] = row_length;
   contrl[8] = num_rows;

   vdi ();

   *el_used   = contrl[9];
   *rows_used = contrl[10];
   *status    = contrl[11];

   colarray[0..n-1] = intout[0..n-1];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 27 # 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] n # Einträge in intout
contrl+12 contrl[6] handle
contrl+14 contrl[7] row_length
contrl+16 contrl[8] num_rows
contrl+18 contrl[9] el_used
contrl+20 contrl[10] rows_used
contrl+22 contrl[11] status
ptsin ptsin[0..3] pxyarray[0..3]
intout intout[0..n-1] colarray[0..n-1]

7.6.71 vq_color

Name: »Inquire Color Representation« - ermittelt die Intensität einer Farbe.
VDI-Nummer: 26
Deklaration: int16_t vq_color ( int16_t handle, int16_t color_index, int16_t set_flag, int16_t *rgb );
Beschreibung: Die Funktion ermittelt die eingestellten Farbintensitäten der Farbpalette. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
color_index zu erfragendes Farbregister
set_flag Flag für Farbintensität
0 = gesetzte Intensität
1 = tatsächliche Intensität
rgb_in[0] Rotanteil   (in Promille, 0-1000)
rgb_in[1] Grünanteil  (in Promille, 0-1000)
rgb_in[2] Blaunanteil (in Promille, 0-1000)


Hinweis: Gesetzte und tatsächliche Farbintensität können bei Systemen mit einer CLUT voneinander abweichen, wenn die Anzahl der möglichen Farbabstufungen zu klein ist.

Beispiel: Verfügt ein Monitor nur über zwei Intensitäten, so teilt sich der Bereich in die Teilbereiche 0..500 und 501..1000. Die tatsächliche Intensität kann aber nur 0 oder 1000 sein; egal welche Zahl aus dem Bereich von 501 bis 1000 gewählt wird, es wird immer die Intensität 1000 gesetzt. Daher kann z.B. die gesetzte Intensität den Wert 623 und die tatsächliche den Wert 1000 haben.

Bei Direct-RGB (keine CLUT) wird meistens die tatsächlich eingestellte Intensität auch als die vom Anwender übergebene Intensität zurückgeliefert, da die Anzahl der Abstufungen ausreichend groß ist.
Ergebnis: Die Funktion liefert -1, wenn der Farbindex außerhalb der Grenzen ist.
Verfügbar: Alle Treiber.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vs_color   vs_color2

7.6.72 Bindings für vq_color

C: int16_t vq_color ( int16_t handle, int16_t color_index, int16_t set_flag, int16_t *rgb );
Umsetzung:
int16_t vq_color (int16_t handle, int16_t color_index,
               int16_t set_flag, int16_t *rgb)
{
   intin[0] = color_index;
   intin[1] = set_flag;

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

   vdi ();

   rgb[0] = intout[1];
   rgb[1] = intout[2];
   rgb[2] = intout[3];

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

Adresse Feldelement Belegung
contrl contrl[0] 26 # 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] 4 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] color_index
intin+2 intin[1] set_flag
intout intout[0] Return-Wert
intout+2 intout[1..3] rgb[0..2]

7.6.73 vq_devinfo

Name: »Inquire device status info« - Status des Ausgabegeräts erfragen.
VDI-Nummer: 248
Deklaration: void vq_devinfo ( int16_t handle, int16_t device, int16_t *dev_open, int8_t *file_name, int8_t *device_name );
Beschreibung: Die Funktion überprüft, ob ein Treiber für ein bestimmtes Ausgabegerät installiert worden ist. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
device VDI-Gerätenummer (0..99)
dev_open Treiber
0 = noch nicht geöffnet
1 = bereits geöffnet
file_name Dateiname des Treibers
device_name Klartextname des Treibers


Hinweis: Wenn der Dateiname leer ist, ist der Treiber nicht vorhanden.
Ergebnis: Die Funktion liefert kein Ergebnis.
Verfügbar: ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vq_ext_devinfo   vqt_devinfo   GDOS   SpeedoGDOS   NVDI

7.6.74 Bindings für vq_devinfo

C: void vq_devinfo ( int16_t handle, int16_t device, int16_t *dev_open, int8_t *file_name, int8_t *device_name );
Umsetzung:
void vq_devinfo (int16_t handle, int16_t device,
                 int16_t *dev_open, int8_t *file_name,
                 int8_t *device_name)
{
   intin[0] = device;

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

   vdi ();

   *dev_open = ptsout[0];
   dev_name[0..p]    = ptsout[1..p-1];
   file_name[0..i-1] = intout[0..i-1]
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 248 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsin
contrl+4 contrl[2] p # Einträge in ptsout
contrl+6 contrl[3] 1 # Einträge in intin
contrl+8 contrl[4] i # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] device
intout intout[0..i-1] file_name[0..i-1]
ptsout ptsout[0] dev_open
ptsout+2 ptsout[1..p-1] device_name[0..p-2]

7.6.75 vq_extnd

Name: »Extended Inquire Funktion« - ermittelt Informationen über eine Arbeitsstation.
VDI-Nummer: 102
Deklaration: void vq_extnd ( int16_t handle, int16_t owflag, int16_t *work_out );
Beschreibung: Die Funktion ermittelt Angaben über die Fähigkeiten einer Workstation. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
owflag Typ der Informationen
0 = Informationen analog v_opnwk
1 = erweiterte Informationen
work_out[0] genaue Spezifikation des Bildschirms
0 = kein Bildschirm
1 = getrennte Grafik/Textbildschirme mit getrennten Kontrollern
2 = gemeinsame Grafik/Textbildschirme mit getrennten Kontrollern
3 = getrennte Grafik/Textbildschirme mit gemeinsamen Kontroller
4 = gemeinsamer Grafik/Textbildschirm mit gemeinsamen Kontroller
work_out[1] Anzahl der verfügbaren Hintergrundfarben
work_out[2] Bitvektor der verfügbaren Texteffekte
work_out[3] Vergrößerungsflag
0 = Gerät unterstützt vergrößern nicht
1 = Gerät unterstützt vergrößern
work_out[4] Anzahl der Farbebenen
work_out[5] Lookup-Table Unterstützung (0 = nicht möglich, 1 = möglich)
work_out[6] Anzahl der möglichen 16x16 Rasteroperationen pro Sekunde
work_out[7] falls Eins, so unterstützt das Gerät die v_contourfill Funktion.
work_out[8] Textrotationsflag
0 = nicht möglich
1 = in 90 Grad Schritten möglich
2 = kontinuierliche Drehung möglich
work_out[9] Anzahl der unterstützten Schreibmodi
work_out[10] welche Eingabemodi stehen zur Verfügung
0 = keine
1 = Request Modus
2 = Request und Sample Modus
work_out[11] Textausrichtung wird
0 = nicht unterstützt
1 = unterstützt
work_out[12] Farbstiftwechsel wird
0 = nicht unterstützt
1 = unterstützt
work_out[13] Wechsel des Farbbandes wird am Ausgabegerät
0 = nicht unterstützt
1 = zeilenweise unterstützt
2 = zeilen- und spaltenweise unterstützt
work_out[14] Höchstzahl von Koordinatenpaare für v_pline, v_pmarker, v_fillarea. Ein Wert von -1 steht für unbegrenzt.
work_out[15] maximale Größe des int_in Feldes (-1 unbegenzt)
work_out[16] Zahl der verfügbaren Maustasten
work_out[17] versch. Linientypen werden für breite Linien
0 = nicht unterstützt
1 = unterstützt
work_out[18] Anzahl der verfügbaren Schreibmodi für breite Linien
0 = nicht unterstützt
1 = unterstützt
work_out[19] Clipping aus (0) oder an (1). Nur auf PC-GEM ab Version 2.0 und NVDI.
work_out[20]
0 = keine genaueren Pixelgrößen in den folgenden Feldern
1 = Pixelausmaße in 1/10 Mikrometer
2 = Pixelausmaße in 1/100 Mikrometer
3 = Pixelausmaße in 1/1000 Mikrometer
work_out[21] Pixelbreite in Einheiten aus work_out[20]
work_out[22] Pixelhöhe in Einheiten aus work_out[20]
work_out[23] horizontale Auflösung in dpi
work_out[24] vertikale Auflösung in dpi
work_out[25] Flag um anzuzeigen, ob Bit-Image-Dateien auf Druckern vom Treiber gedreht werden können (nur ab PC-GEM/3):
0 = nein
1 = Drehung in 0,90,180,270 Grad möglich.
work_out[26] +
work_out[27] Adresse des Bildschirmpuffers (1/4 des Bildschirmbereichs) der bei AES-Funktionen benutzt wird (nur ab PC-GEM/3).
work_out[28] Bezier-Flag
Bit-1 = keine Beziers (0) bzw. Beziers (1)

Diese Information steht nur ab PC-GEM/3 sowie unter NVDI zur Verfügung.
work_out[30] Rasterflags
Bit-0 = 1 Bei vro_cpyfm und vrt_cpyfm können Raster skaliert werden.
Bit-1 = 1 Rasterfunktionen vorhanden, ab NVDI 5.00
Bit-2 = 1 vr_clip_rects_xxx-Clipfunktionen vorhanden, ab NVDI 5.02
work_out[32]
Bit-0 = 1 Treiber unterstützt Funktionen zur Farbverwaltungen (NVDI 5.xx)
work_out[40] nicht bedruckbarer linker Rand in Pixeln.
work_out[41] nicht bedruckbarer oberer Rand in Pixeln.
work_out[42] nicht bedruckbarer rechter Rand in Pixeln.
work_out[43] nicht bedruckbarer unterer Rand in Pixeln.
work_out[44] Papier- bzw. Seitenformat
0 = Voreinstellung benutzen
1 = DIN A3
2 = DIN A4
3 = DIN A5
4 = DIN B5
16 = Letter Size
17 = Half Size
18 = Legal Size
19 = Double Size
20 = Broad Sheet Size
work_out[45] obere, linke x-Koordinate
work_out[46] obere, linke y-Koordinate des Clip-Rechtecks
work_out[47] untere, linke x-Koordinate
work_out[48] untere, linke y-Koordinate des Clipping-Rechtecks
work_out[49]  
:  
:  
work_out[56] reserviert, enthält 0


Hinweis: Die hier angegebene Belegung des work_out Arrays gilt für den Fall, daß die erweiterten Informationen (owflag = 1) ermittelt werden sollen. Die Informationen in den Feldern 21-24 und 40-43 sind nur dann gültig, wenn work_out[20] einen Wert ungleich 0 enthält.

Die nicht bedruckbaren Ränder werden normalerweise nur bei Druckertreibern zurückgeliefert. Sie ermöglichen es einer Applikation, Dokumente zu zentrieren oder dem Benutzer ein zutreffendes Bild der ausgedruckten Seite zu liefern, indem die Ränder im Dokument angezeigt werden. (der bei v_opnwk in work_out[0/1] zurückgelieferte Bereich ist der bedruckbare Bereich).

Wenn genauere Pixelgrößen zurückgeliefert werden, sollte man diese besonders beim Drucken zur Positionsberechnung der einzelnen Grafikobjekte benutzen, denn die Benutzung der Werte von v_opnwk in work_out[3..4] kann im schlimmsten Fall auf einem DIN-A4 Blatt zu einer Ungenauigkeit von insgesamt 2 bis 3 mm führen.
Ergebnis: Die Funktion liefert kein direktes Funktionsergebnis.
Verfügbar: Supported by all drivers.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   v_contourfill   vswr_mode   v_pline   v_pmarker   v_fillarea   v_opnwk

7.6.76 Bindings für vq_extnd

C: void vq_extnd ( int16_t handle, int16_t owflag, int16_t *work_out );
Umsetzung:
void vq_extnd (int16_t handle, int16_t owflag, int16_t *work_out)
{
   intin[0] = owflag;

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

   vdi ();

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

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

7.6.77 vq_ext_devinfo

Name: »Inquire extended device status info« - Informationen über einen Treiber ermitteln.
VDI-Nummer: 248 (Unterfunktion 4242)
Deklaration: int16_t vq_ext_devinfo ( int16_t handle, int16_t device, int16_t *dev_exists, int8_t *file_path, int8_t *file_name, int8_t *name );
Beschreibung: Die Funktion ermittelt Informationen über einen GDOS-Treiber. Es gilt:
Parameter Bedeutung
   
handle Kennung der Workstation
device VDI-Gerätenummer (0..99)
dev_exists Treiber
0 = nicht vorhanden
<>0 = vorhanden
file_path Datei-Pfad
file_name Dateiname
name Klartextname des Treibers
Ergebnis: Die Funktion liefert als Ergebnis den Wert 0, wenn der Treiber noch nicht geöffnet worden ist.
Verfügbar: ab NVDI Version 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vq_devinfo   vq_devinfo   GDOS   SpeedoGDOS   NVDI

7.6.78 Bindings für vq_ext_devinfo

C: int16_t vq_ext_devinfo ( int16_t handle, int16_t device, int16_t *dev_exists, int8_t *file_path, int8_t *file_name, int8_t *name );
Umsetzung:
int16_t vq_ext_devinfo (int16_t handle, int16_t device,
                        int16_t *dev_exists, int8_t *file_path,
                        int8_t *file_name, int8_t *name)
{
   intin[0] = device;
   intin[1..2] = file_path;
   intin[3..4] = file_name;
   intin[5..6] = name;

   contrl[0] = 248;
   contrl[1] = 0;
   contrl[3] = 7;
   contrl[5] = 4242;
   contrl[6] = handle;

   vdi ();

   *dev_exists = intout[0];
   return ( intout[1] );
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 248 # 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] 7 # Einträge in intin
contrl+8 contrl[4] 2 # Einträge in intout
contrl+10 contrl[5] 4242 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] device
intin+2 intin[1..2] file_path
intin+6 intin[3..4] file_name
intin+10 intin[5..6] name
intout intout[0] dev_exists
intout+2 intout[1] Return-Wert

7.6.79 vq_ptsinsz

Name:
VDI-Nummer: 238
Deklaration: void vq_ptsinsz ( void );
Beschreibung: Einige GDOSe fragen den Treiber mit dieser Funktion wie groß dessen PTSIN Feld ist.
Ergebnis: Größe des PTSIN Feld.
Verfügbar: Verschiedene GDOS
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.80 Bindings für vq_ptsinsz

7.6.81 vq_scrninfo

Name: »Inquire Screen Information« - liefert genauere Angaben über das Bildschirmformat
VDI-Nummer: 102 (Unterfunktion 1, Opcode 2)
Deklaration: void vq_scrninfo ( int16_t handle, int16_t *work_out );
Beschreibung: Die Funktion vq_scrninfo liefert genauere Angaben über das vorhandene Bildschirmformat. Diese Informationen sind in erster Linie interessant für Programme, die
  • schnell Raster aufbauen (auch in TrueColor) und diese mit vro_cpyfm() auf den Schirm kopieren möchten.
  • Raster speichern (z.B. XIMGs).
  • Raster anzeigen.
Ergebnis: Alle Informationen werden über das work_out Array nach außen gereicht:
work_out[0]: Formatangabe:
0: Interleaved planes, wortweise
1: Standardformat (komplette Planes)
2: Packed Pixels
-1: unbekanntes Format; nicht direkt beschreibbar
work_out[1]: Verfügbarkeit einer CLUT:
0: keine CLUT (z.B. TTM 194)
1: Hardware-CLUT
2: Software-CLUT (HiColor oder TrueColor)
work_out[2]: Anzahl der Ebenen (Bits) pro Pixel
work_out[3]:  
work_out[4]: Farbanzahl oder 0L (mehr als 2*10^31 Farben)
work_out[5]: Breite einer Zeile in Bytes (ab EdDI 1.1)
work_out[6]: +
work_out[7]: Adresse der Bitmap (erst ab EdDI Version 1.1 verfügbar).
work_out[8]: Anzahl der Bits für die Rot-Intensität
work_out[9]: Anzahl der Bits für die Grün-Intensität
work_out[10]: Anzahl der Bits für die Blau-Intensität
work_out[11]: Anzahl der Bits für den Alpha-Channel oder ähnliches
work_out[12]: Anzahl der Bits für Genlock
work_out[13]: Anzahl der nicht benutzen Bits
work_out[14]: Bitorganisation (erst ab EdDI 1.1)
Bei 2-256 Farben:
Bit-0 = normale Bitreihenfolge

Bei 32768 Farben (16 Planes):
Bit-0 = normale Bitreihenfolge, d.h. 1 Overlay-Bit, 5 Rot-Bits, 5 Grün-Bits, 5 Blau-Bits
Bit-1 = Falcon-Format, d.h. 5 Rot-Bits, 5 Grün-Bits, 1 Overlay-Bit, 5 Blau-Bits
Bit-7 = Intel-Modell (Bytes vertauscht) z.B. Crazy Dots

Bei 65536 Farben (16 Planes):
Bit-0 = normale Bitreihenfolge, d.h. 5 Rot-Bits, 6 Grün-Bits und 5 Blau-Bits
Bit-7 = Intel-Modell (Bytes vertauscht) z.B. Crazy Dots 2

Bei 16,7 Mio. Farben (24 Planes):
Bit-0 = normale Bitreihenfolge, d.h. 8 Rot-Bits, 8 Grün-Bits und 8 Blau-Bits
Bit-7 = Intel-Modell (Bytes vertauscht)

Bei 16,7 Mio. Farben (32 Planes):
Bit-0 = normale Bitreihenfolge, d.h. 8 Overlay-Bits, 8 Rot-Bits, 8 Grün-Bits und 8 Blau-Bits.
Bit-7 = Intel-Modell (Bytes vertauscht)


Falls eine Hardware-CLUT (work_out[1] == 1) vorhanden ist:
work_out[16..271]: Pixelwert des zugehörigen VDI-Farbindexes


Falls HiColor, TrueColor oder ähnliches vorhanden ist:
work_out[16..31]: Zuordnung von Bitnummer im Pixel zum Bit der Rotintensität
work_out[32..47]: Zuordnung von Bitnummer im Pixel zum Bit der Grünintensität
work_out[48..63]: Zuordnung von Bitnummer im Pixel zum Bit der Blauintensität
work_out[64..79]: Zuordnung der Bitnummer für Alpha-Channel
work_out[80..95]: Zuordnung der Bitnummer für Genlock
work_out[96..127]: unbenutzte Bits
work_out[128..271]: reserviert (0)
Verfügbar: ab EdDI-Version 1.00.
Gruppe: Auskunftsfunktionen
Querverweis: Binding   Beispiel-Belegung   XIMG-Format   Rasterformate   NVDI   Bitmapformat bei Druckertreibern

7.6.82 Bindings für vq_scrninfo

C: void vq_scrninfo ( int16_t handle, int16_t *work_out );
Umsetzung:
void vq_scrninfo (int16_t handle, int16_t *work_out)
{
   intin[0] = 2;

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

   vdi ();

   work_out[0..272] = intout[0..272];
}
GEM-Arrays:

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

7.6.83 Beispiele zu vq_scrninfo

Die folgende Liste enthält Beispiele für das von vq_scrninfo belegte work_out-Array für verschiedene Bildschirmauflösungen:

In 256 Farben auf dem Falcon würden folgende Ausgaben erfolgen:

work_out Wert Bedeutung
0 0 Interleaved Planes, wortweise
1 1 Hardware-CLUT vorhanden
2 8 8 Bit pro Pixel
3/4 256 256 verschiedene Farben gleichzeitig möglich
5 xxxx Bitmapbreite in Bytes (erst ab EdDI 1.1)
6/7 xxxxL Bitmapadresse (erst ab EdDI 1.1)
8 6 6 Bits für die Rot-Intensität
9 6 6 Bits für die Grün-Intensität
10 6 6 Bits für die Blau-Intensität
11 0 kein Bit für Alpha-Channel
12 0 kein Bit für Genlock
13 0 kein unbenutzes Bit
14 1 normale Bitreihenfolge (erst ab EdDI 1.1)
     
16 0 Pixelwert für VDI-Farbindex 0
17 255 Pixelwert für VDI-Farbindex 1
18 2 Pixelwert für VDI-Farbindex 2
... ...  
271 15 Pixelwert für VDI-Farbindex 255

In HiColor auf dem Falcon würden folgende Ausgaben erfolgen:

work_out Wert Bedeutung
0 2 Packed Pixels
1 2 HiColor bzw. TrueColor
2 16 16 Bit pro Pixel
3/4 32768 32768 verschiedene Farben gleichzeitig möglich
5 xxxx Bitmapbreite in Bytes (erst ab "EdDI 1.1)
6/7 xxxxL Bitmapadresse (erst ab EdDI 1.1)
8 5 5 Bits für die Rot-Intensität
9 5 5 Bits für die Grün-Intensität
10 5 5 Bits für die Blau-Intensität
11 0 kein Bit für Alpha-Channel
12 1 ein Bit für Genlock
13 0 kein unbenutzes Bit
14 2 Falcon 15-Bit-Format mit 1 Overlay-Bit (EdDI 1.1)
     
16 11 Bit 0 der Rot-Intensität (niederwertigstes Bit)
    befindet sich in Bit 11 des Pixels
17 12 Bit 1 befindet sich in Bit 12 des Pixels
18 13 ...
19 14 ...
20 15 Bit 4 der Rot-Intensität (höchstwertigstes Bit)
    befindet sich in Bit 15 des Pixels
21..31 -1 Bits werden nicht für Rot-Intensität benutzt
     
     
32 6 Bit 0 der Grün-Intensität (niederwertigstes Bit)
befindet sich in Bit 6 des Pixels
33 7 Bit 1 befindet sich in Bit 7 des Pixels
34 8 ...
35 9 ...
36 10 Bit 4 der Grün-Intensität (höchstwertigstes Bit)
befindet sich in Bit 10 des Pixels
37..37 -1 Bits werden nicht für Grün-Intensität benutzt
     
     
48 0 Bit 0 der Blau-Intensität (niederwertigstes Bit)
    befindet sich in Bit 0 des Pixels
49 1 Bit 1 befindet sich in Bit 1 des Pixels
50 2 ...
51 3 ...
52 4 Bit 4 der Blau-Intensität (höchstwertigstes Bit)
    befindet sich in Bit 4 des Pixels
53..63 -1 Bits werden nicht für Blau-Intensität benutzt
     
     
64..79 -1 kein Alpha-Channel
     
     
80 5 Bit für Genlock
81..95 -1 nicht für Genlock benutzt
     
     
96..127 -1 keine unbenutzten Bits

In HiColor auf einer VGA-Grafikkarte würden folgende Ausgaben erfolgen:

work_out Wert Bedeutung
0 2 Packed Pixels
1 2 HiColor bzw. TrueColor
2 16 16 Bit pro Pixel
3/4 32768 32768 verschiedene Farben gleichzeitig möglich
5 xxxx Bitmapbreite in Bytes (erst ab EdDI 1.1)
6/7 xxxxL Bitmapadresse (erst ab EdDI 1.1)
8 5 5 Bits für die Rot-Intensität
9 5 5 Bits für die Grün-Intensität
10 5 5 Bits für die Blau-Intensität
11 0 kein Bit für Alpha-Channel
12 0 kein Bit für Genlock
13 1 ein unbenutzes Bit
14 129 15 Bit in Intel-Darstellung
    (gggbbbbb-xrrrrrgg;erst ab EdDI 1.1)
     
16 2 Bit 0 der Rot-Intensität (niederwertigstes Bit)
    befindet sich in Bit 2 des Pixels
17 3 Bit 1 befindet sich in Bit 3 des Pixels
18 4 ...
19 5 ...
20 6 Bit 4 der Rot-Intensität (höchstwertigstes Bit)
    befindet sich in Bit 6 des Pixels
21..31 -1 Bits werden nicht für Rot-Intensität benutzt
     
     
32 13 Bit 0 der Grün-Intensität (niederwertigstes Bit)
befindet sich in Bit 13 des Pixels
33 14 Bit 1 befindet sich in Bit 14 des Pixels
34 15 ...
35 0 ...
36 1 Bit 4 der Grün-Intensität (höchstwertigstes Bit)
    befindet sich in Bit 1 des Pixels
37..37 -1 Bits werden nicht für Grün-Intensität benutzt
     
     
48 8 Bit 0 der Blau-Intensität (niederwertigstes Bit)
befindet sich in Bit 8 des Pixels
49 9 Bit 1 befindet sich in Bit 9 des Pixels
50 10 ...
51 11 ...
52 12 Bit 4 der Blau-Intensität (höchstwertigstes Bit)
    befindet sich in Bit 12 des Pixels
53..63 -1 Bits werden nicht für Blau-Intensität benutzt
     
     
64..79 -1 kein Alpha-Channel
     
     
80..95 -1 nicht für Genlock benutzt
     
     
96 7 unbenutztes Bit
97..127 -1 keine unbenutzten Bits

Querverweis: vq_scrninfo   Rasterformate   NVDI

7.6.84 v_create_driver_info

Name: Informationen über einen Treiber ermitteln.
VDI-Nummer: 180
Deklaration: DRV_INFO *v_create_driver_info( int16_t handle, int16_t driver_id );
Beschreibung: Die Funktion liefert Informationen über Gerätetreiber.
Parameter Bedeutung
   
handle Kennung der Workstation
driver_id Nummer des Gerätetreibers
Ergebnis: Die Funktion liefert einen Zeiger auf ein DRV_INFO Struktur oder 0L.
Verfügbar: NVDI 5
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.85 Bindings für v_create_driver_info

C: DRV_INFO *v_create_driver_info( int16_t handle, int16_t driver_id );
Umsetzung:
DRV_INFO *v_create_driver_info( int16_t handle, int16_t driver_id )
{
  int16_t save_conf;

  intin[0] = driver_id;

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

  contrl[2] = 0;
  contrl[4] = 0;

  save_conf = disable_nvdi_errors();
  vdi ();
  enable_nvdi_errors( save_conf );

  if ( contrl[4] >= 2 )
    return(*(DRV_INFO **) &intout[0] );

  return( 0L );
}
GEM-Arrays:

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

7.6.86 v_delete_driver_info

Name: Informationen über einen Treiber verwerfen.
VDI-Nummer: 181
Deklaration: int16_t v_delete_driver_info( int16_t handle, DRV_INFO *drv_info );
Beschreibung:
Parameter Bedeutung
   
handle Kennung der Workstation
drv_info Zeiger auf die Struktur von v_create_driver_info.
Ergebnis: Unbekannt.
Verfügbar: NVDI 5
Gruppe: Auskunftsfunktionen
Querverweis: Binding   v_create_driver_info

7.6.87 Bindings für v_delete_driver_info

C: int16_t v_delete_driver_info( int16_t handle, DRV_INFO *drv_info );
Umsetzung:
int16_t v_delete_driver_info( int16_t handle, DRV_INFO *drv_info )
{
  *(DRV_INFO **) &intin[0] = drv_info;

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

  vdi ();

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

Adresse Feldelement Belegung
contrl contrl[0] 181 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] 1 # Einträge in intout
contrl+10 contrl[5] 0
contrl+12 contrl[6] handle
intin intin[0..1] drv_info

7.6.88 v_getbitmap_info

Name: »Get character bitmap information« - Informationen über ein Vektorzeichen ermitteln
VDI-Nummer: 239
Deklaration: void v_getbitmap_info ( int16_t handle, int16_t ch, fix31 *advx, fix31 *advy, fix31 *xoff, fix31 *yoff, int16_t *width, int16_t *height, int16_t **bitmap );
Beschreibung: Die Funktion liefert Informationen über ein Zeichen eines Vektorzeichensatzes.
Parameter Bedeutung
   
handle Kennung der Workstation
ch gewünschtes Zeichen
advx x-Position
advy y-Position für darauffolgendes Zeichen
xoff x-Offset
yoff y-Offset innerhalb der Pixel-Darstellung
width Breite
height Höhe der Pixeldarstellung
bitmap Zeiger auf die Bitmap des Zeichens


Hinweis: Um auch ohne NVDI nachvollziehbare Ausgaben zu bekommen, sollten die Texteffekte ausgeschaltet sein. Da der Zeiger auf die Bitmap in der Regel in den Zeichencache verweist, sollte man sich die Bitmap direkt nach dem Aufruf kopieren (Tip: AES-Kontextswitch durch wind_update verhindern!) - andernfalls könnte der Zeiger schon wieder ungültig sein.

Außerdem sollte man v_getbitmap_info nicht für enorm große Zeichen (z.B. 300 pt und mehr) aufrufen, da diese je nach Cache-Größe evtl. nicht mehr komplett aufgebaut werden können. Die Bitmap enthält in diesem Fall nur einen Teil des Zeichens.

Man sollte diese Funktion nicht mißbrauchen, um eine eigene Textausgabe zu bauen - es lohnt sich nicht und Pair-Kerning wäre auch nicht möglich.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: ab SpeedoGDOS 4.00 und ab NVDI 3.00
Gruppe: Auskunftsfunktionen
Querverweis: Binding   vst_effects   SpeedoGDOS   NVDI

7.6.89 Bindings für v_getbitmap_info

C: void v_getbitmap_info ( int16_t handle, int16_t ch, fix31 *advx, fix31 *advy, fix31 *xoff, fix31 *yoff, int16_t *width, int16_t *height, int16_t **bitmap );
Umsetzung:
void v_getbitmap_info (int16_t handle, int16_t ch, fix31 *advx,
                       fix31 *advy, fix31 *xoff, fix31 *yoff,
                       int16_t *width, int16_t *height,
                       int16_t **bitmap)
{
   intin[0] = ch;

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

   vdi ();

   *width  = intout[0];
   *height = intout[1];
   *advx   = intout[2..3];
   *advy   = intout[4..5];
   *xoff   = intout[6..7];
   *yoff   = intout[8..9];
   *bitmap = intout[10..11];
}
GEM-Arrays:

Adresse Feldelement Belegung
contrl contrl[0] 239 # 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] 12 # Einträge in intout
contrl+12 contrl[6] handle
intin intin[0] ch
intout intout[0] width
intout+2 intout[1] height
intout+4 intout[2..3] advx
intout+8 intout[4..5] advy
intout+12 intout[6..7] xoff
intout+16 intout[8..9] yoff
intout+20 intout[10..11] bitmap

7.6.90 v_get_driver_info

Name: »Inquire extended device status info« - Informationen über einen Treiber ermitteln.
VDI-Nummer: -1 (Unterfunktion 4)
Deklaration: void v_get_driver_info ( int16_t device_id, int16_t info_select, int8_t *info_string );
Beschreibung: Die Funktion liefert Informationen Gerätetreiber und Zeichensätze.
Parameter Bedeutung
   
device_id Nummer des Gerätetreibers
info_select Je nach wert von info_select bekommt man in info_string bestimmte Informationen.
info_select info_string
   
1 Dateiname des Treiber
2 Bezeichnung des Gerätes
3 Zusatzinformationen, falls vorhanden
4 Zeichensatzdateien des Gerätes
5 Patchadresse des Treibers (z.B. Drucker-Port-Nummer)
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: GEM/3
Gruppe: Auskunftsfunktionen
Querverweis: Binding

7.6.91 Bindings für v_get_driver_info

C: void v_get_driver_info ( int16_t device_id, int16_t info_select, int8_t *info_string );
Umsetzung:
void v_get_driver_info ( int16_t device_id, int16_t info_select,
                         int8_t *info_string )
{
   intin[0] = device_id;
   intin[1] = info_select;

   contrl[0] = -1;
   contrl[1] = 0;
   contrl[3] = 2;
   contrl[5] = 4;
   contrl[6] = 0;

   vdi ();

   if ( info_select != 5 )
   {
      bptr = (int8_t *) intout ;
      for ( ii = 0; ii < contrl[ 4 ]; ii ++ )
         *info_string++ = *bptr++ ;
      *info_string = 0 ;
   }
   else
      *(int16_t *)info_string = intout[ 0 ] ;
}
GEM-Arrays:

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

7.6.92 v_read_default_settings

Name: Ermitteln der Default Druckereinstellungen.
VDI-Nummer: 182 (Unterfunktion 0)
Deklaration: int16_t v_read_default_settings( int16_t handle, PRN_SETTINGS *settings );
Beschreibung:
Parameter Bedeutung
   
handle Kennung der Workstation
settings Zeiger auf eine Struktur vom Typ PRN_SETTINGS.
Ergebnis: Im Fehlerfall 0.
Verfügbar: NVDI 5
Gruppe: Auskunftsfunktionen
Querverweis: Binding   v_write_default_settings

7.6.93 Bindings für v_read_default_settings

C: int16_t v_read_default_settings( int16_t handle, PRN_SETTINGS *settings );
Umsetzung:
int16_t v_read_default_settings( int16_t handle, PRN_SETTINGS *settings )
{
  int16_t save_conf;

  *(PRN_SETTINGS **) &intin[0] = settings;

  contrl[0] = 182;
  contrl[1] = 0;
  contrl[3] = 2;
  contrl[5] = 0;                              /* Unterfunktion 0 */
  contrl[6] = handle;

  contrl[2] = 0;
  contrl[4] = 0;

  save_conf = disable_nvdi_errors();
  vdi ();
  enable_nvdi_errors( save_conf );

  if ( contrl[4] >= 1 )
    return( intout[0] );

  return( 0 );
}
GEM-Arrays:

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

7.6.94 v_write_default_settings

Name: Setzen der Default Druckereinstellungen.
VDI-Nummer: 182 (Unterfunktion 1)
Deklaration: int16_t v_write_default_settings( int16_t handle, PRN_SETTINGS *settings );
Beschreibung:
Parameter Bedeutung
   
handle Kennung der Workstation
settings Zeiger auf eine Struktur vom Typ PRN_SETTINGS.
Ergebnis: Im Fehlerfall 0.
Verfügbar: NVDI 5
Gruppe: Auskunftsfunktionen
Querverweis: Binding   v_read_default_settings

7.6.95 Bindings für v_write_default_settings

C: int16_t v_write_default_settings( int16_t handle, PRN_SETTINGS *settings );
Umsetzung:
int16_t v_write_default_settings( int16_t handle, PRN_SETTINGS *settings )
{
  int16_t save_conf;

  *(PRN_SETTINGS **) &intin[0] = settings;

  contrl[0] = 182;
  contrl[1] = 0;
  contrl[3] = 2;
  contrl[5] = 1;                              /* Unterfunktion 1 */
  contrl[6] = handle;

  contrl[2] = 0;
  contrl[4] = 0;

  save_conf = disable_nvdi_errors();
  vdi ();
  enable_nvdi_errors( save_conf );

  if ( contrl[4] >= 1 )
    return( intout[0] );

  return( 0 );
}
GEM-Arrays:

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

7.6.96 Aufbau des Fontheaders

Der von vqt_fontheader gelieferte Zeichensatz-Kopf ist folgendermaßen aufgebaut:

FH_FMVER    0      /* U   D4.0 CR LF NULL NULL  8 bytes            */
FH_FNTSZ    8      /* U   Font size (bytes) 4 bytes                */
FH_FBFSZ   12      /* U   Min font buffer size (bytes) 4 bytes     */
FH_CBFSZ   16      /* U   Min char buffer size (bytes) 2 bytes     */
FH_HEDSZ   18      /* U   Header size (bytes) 2 bytes              */
FH_FNTID   20      /* U   Source Font ID  2 bytes                  */
FH_SFVNR   22      /* U   Source Font Version Number  2 bytes      */
FH_FNTNM   24      /* U   Source Font Name  70 bytes               */
FH_MDATE   94      /* U   Manufacturing Date  10 bytes             */
FH_LAYNM  104      /* U   Layout Name  70 bytes                    */
FH_CPYRT  174      /* U   Copyright Notice  78 bytes               */
FH_NCHRL  252      /* U   Number of Chars in Layout  2 bytes       */
FH_NCHRF  254      /* U   Total Number of Chars in Font  2 bytes   */
FH_FCHRF  256      /* U   Index of first char in Font  2 bytes     */
FH_NKTKS  258      /* U   Number of kerning tracks in font 2 bytes */
FH_NKPRS  260      /* U   Number of kerning pairs in font 2 bytes  */
FH_FLAGS  262      /* U   Font flags 1 byte:                       */
                   /*       Bit 0: Extended font                   */
                   /*       Bit 1: not used                        */
                   /*       Bit 2: not used                        */
                   /*       Bit 3: not used                        */
                   /*       Bit 4: not used                        */
                   /*       Bit 5: not used                        */
                   /*       Bit 6: not used                        */
                   /*       Bit 7: not used                        */

FH_CLFGS  263      /* U   Classification flags 1 byte:             */
                   /*       Bit 0: Italic                          */
                   /*       Bit 1: Monospace                       */
                   /*       Bit 2: Serif                           */
                   /*       Bit 3: Display                         */
                   /*       Bit 4: not used                        */
                   /*       Bit 5: not used                        */
                   /*       Bit 6: not used                        */
                   /*       Bit 7: not used                        */

FH_FAMCL  264      /* U   Family Classification 1 byte:            */
                   /*       0:  Don't care                         */
                   /*       1:  Serif                              */
                   /*       2:  Sans serif                         */
                   /*       3:  Monospace                          */
                   /*       4:  Script or calligraphic             */
                   /*       5:  Decorative                         */
                   /*       6-255: not used                        */

FH_FRMCL  265      /* U   Font form Classification 1 byte:         */
                   /*       Bits 0-3 (width type):                 */
                   /*         0-3:   not used                      */
                   /*         4:     Condensed                     */
                   /*         5:     not used                      */
                   /*         6:     Semi-condensed                */
                   /*         7:     not used                      */
                   /*         8:     Normal                        */
                   /*         9:     not used                      */
                   /*        10:     Semi-expanded                 */
                   /*        11:     not used                      */
                   /*        12:     Expanded                      */
                   /*        13-15:  not used                      */
                   /*       Bits 4-7 (Weight):                     */
                   /*         0:   not used                        */
                   /*         1:   Thin                            */
                   /*         2:   Ultralight                      */
                   /*         3:   Extralight                      */
                   /*         4:   Light                           */
                   /*         5:   Book                            */
                   /*         6:   Normal                          */
                   /*         7:   Medium                          */
                   /*         8:   Semibold                        */
                   /*         9:   Demibold                        */
                   /*         10:  Bold                            */
                   /*         11:  Extrabold                       */
                   /*         12:  Ultrabold                       */
                   /*         13:  Heavy                           */
                   /*         14:  Black                           */
                   /*         15-16: not used                      */

FH_SFNTN  266      /* U   Short Font Name  32 bytes                */
FH_SFACN  298      /* U   Short Face Name  16 bytes                */
FH_FNTFM  314      /* U   Font form 14 bytes                       */
FH_ITANG  328      /* U   Italic angle 2 bytes (1/256th deg)       */
FH_ORUPM  330      /* U   Number of ORUs per em  2 bytes           */
FH_WDWTH  332      /* U   Width of Wordspace  2 bytes              */
FH_EMWTH  334      /* U   Width of Emspace  2 bytes                */
FH_ENWTH  336      /* U   Width of Enspace  2 bytes                */
FH_TNWTH  338      /* U   Width of Thinspace  2 bytes              */
FH_FGWTH  340      /* U   Width of Figspace  2 bytes               */
FH_FXMIN  342      /* U   Font-wide min X value  2 bytes           */
FH_FYMIN  344      /* U   Font-wide min Y value  2 bytes           */
FH_FXMAX  346      /* U   Font-wide max X value  2 bytes           */
FH_FYMAX  348      /* U   Font-wide max Y value  2 bytes           */
FH_ULPOS  350      /* U   Underline position 2 bytes               */
FH_ULTHK  352      /* U   Underline thickness 2 bytes              */
FH_SMCTR  354      /* U   Small caps transformation 6 bytes        */
FH_DPSTR  360      /* U   Display sups transformation 6 bytes      */
FH_FNSTR  366      /* U   Footnote sups transformation 6 bytes     */
FH_ALSTR  372      /* U   Alpha sups transformation 6 bytes        */
FH_CMITR  378      /* U   Chemical infs transformation 6 bytes     */
FH_SNMTR  384      /* U   Small nums transformation 6 bytes        */
FH_SDNTR  390      /* U   Small denoms transformation 6 bytes      */
FH_MNMTR  396      /* U   Medium nums transformation 6 bytes       */
FH_MDNTR  402      /* U   Medium denoms transformation 6 bytes     */
FH_LNMTR  408      /* U   Large nums transformation 6 bytes        */
FH_LDNTR  414      /* U   Large denoms transformation 6 bytes      */
                   /*     Transformation data format:              */
                   /*       Y position 2 bytes                     */
                   /*       X scale 2 bytes (1/4096ths)            */
                   /*       Y scale 2 bytes (1/4096ths)            */

SIZE_FW FH_LDNTR + 6   /* size of nominal font header              */
EXP_FH_METRES SIZE_FW  /* offset to expansion field metric
                         resolution (optional)                     */

Querverweis: vqt_fontheader   Header bei Bitmap GDOS-Fonts   Vektorfonts

7.6.97 disable_nvdi_errors

int16_t disable_nvdi_errors ( void )
{
  int16_t save_conf;
  NVDI_STRUC *p;

  if ( get_cookie( 'NVDI', p ) )
  {
    save_conf = p->nvdi_config;
    p->nvdi_config |= 2;
    p->nvdi_config &= 0xFFBF;

    return save_conf;
  }

  return 0;
}

7.6.98 enable_nvdi_errors

void enable_nvdi_errors ( int16_t save_conf )
{
  NVDI_STRUC *p;

  if ( get_cookie( 'NVDI', p ) )
    p->nvdi_config = save_conf;

  return;
}

HomeVDIAusgabefunktionenEingabefunktionen