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

HomeAESErweiterte GrafikfunktionenAES-Funktionsliste

8.20 Zeichensatzauswahl

Diese Bibliothek enthält Routinen zur Handhabung eines Font-Selektors, mit dem eine Applikation Zeichensätze auswählen kann. Die Routinen wurden mit MagiC 4 eingeführt.

fnts_add Eigene Fonts zur Auswahl hinzufügen
fnts_close Auswahl schließen
fnts_create Initialisiert die Zeichensatzauswahl
fnts_delete Speicher freigeben
fnts_do Modalen Dialog anzeigen
fnts_evnt Ereignisse für Dialog im Fenster bearbeiten
fnts_get_info Informationen über einen Font ermitteln
fnts_get_name Namen eines Fonts ermitteln
fnts_get_no_styles Zahl der Stile einer Fontfamilie ermitteln
fnts_get_style ID des n-ten Stil einer Familie ermitteln
fnts_open Auswahl im Fenster öffnen
fnts_remove Eigene Fonts aus der Liste entfernen
fnts_update Zeichensatzauswahl aktualisieren

Hinweis: Die Existenz dieser Funktionen sollte am besten durch einen Aufruf von appl_getinfo (Opcode 7) festgestellt werden.

Querverweis:
Auswahl im Fenster   Auswahl als Dialog   WDIALOG   xFSL-Schnittstelle

8.20.1 fnts_add

Name: »Font Selector Add User Fonts« - fügt eigene Fonts zur Zeichensatzauswahl hinzu.
AES-Nummer: 185 (Unterfunktion 0)
Deklaration: int16_t fnts_add ( FNT_DIALOG *fnt_dialog, FNTS_ITEM *user_fonts );
Beschreibung: Die Funktion fügt eigene Zeichensätze zu den von der Fontauswahl angezeigten hinzu. Es gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur
user_fonts Zeiger auf eigene Zeichensätze


Hinweis: Die ID der eigenen Fonts muß jeweils größer als 65535 sein. Darüber hinaus muß in der Komponente display der FNTS_ITEM-Struktur ein Zeiger auf die Anzeigefunktion eingetragen werden.
Ergebnis: Die Funktion liefert bei fehlerfreier Ausführung den Wert 1 zurück. Ein Wert von 0 signalisiert hingegen einen Fehler.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_delete   fnts_remove   xFSL-Schnittstelle

8.20.1.1 Bindings für fnts_add

C: int16_t fnts_add ( FNT_DIALOG *fnt_dialog, FNTS_ITEM *user_fonts );
Umsetzung:
int16_t fnts_add ( FNT_DIALOG *fnt_dialog,
                   FNTS_ITEM *user_fonts )
{
   addr_in[0] = fnt_dialog;
   addr_in[1] = user_fonts;

   int_in[0] = 0;
   crys_if (185);

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

Adresse Feldelement Belegung
control control[0] 185 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
addr_in+4 addr_in[1] user_fonts
int_in int_in[0] 0 # Unterfunktion
int_out int_out[0] Return-Wert

8.20.2 fnts_close

Name: »Font Selector Close Window« - schließt die Fontauswahl.
AES-Nummer: 183
Deklaration: int16_t fnts_close ( FNT_DIALOG *fnt_dialog, int16_t *x, int16_t *y );
Beschreibung: Die Funktion schließt das Fenster der Zeichensatzauswahl. Dabei gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur
x Zeiger auf eine Varibale in der die letzte x-Koordinate des Dialogs zurückgeliefert wird.
y Zeiger auf eine Varibale in der die letzte y-Koordinate des Dialogs zurückgeliefert wird.


Hinweis: Alte WDIALOG-Versionen liefern nicht die Fensterkoordinaten zurück. In diesem Fall trägt das Binding -1 ein, so daß der Dialog beim nächsten Aufruf automatisch zentriert wird.
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_open   xFSL-Schnittstelle

8.20.2.1 Bindings für fnts_close

C: int16_t fnts_close ( FNT_DIALOG *fnt_dialog, int16_t *x, int16_t *y );
Umsetzung:
int16_t fnts_close ( FNT_DIALOG *fnt_dialog, int16_t *x,
                     int16_t *y )
{
   int_out[1] = -1;
   int_out[2] = -1;

   addr_in[0] = fnt_dialog;

   crys_if (183);

   *x = int_out[1];
   *y = int_out[2];

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

Adresse Feldelement Belegung
control control[0] 183 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 3 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_out int_out[0] Return-Wert
int_out+2 int_out[1] letzte x-Koordinate des Dialogs
int_out+4 int_out[2] letzte y-Koordinate des Dialogs

8.20.3 fnts_create

Name: »Font Selector Create« - initialisiert die Zeichensatzauswahl.
AES-Nummer: 180
Deklaration: FNT_DIALOG *fnts_create ( int16_t vdi_handle, int16_t no_fonts, int16_t font_flags, int16_t dialog_flags, int8_t *sample, int8_t *opt_button );
Beschreibung: Die Funktion initialisiert die Zeichensatzauswahl. Es gilt:
Parameter Bedeutung
   
vdi_handle Kennung der benutzten Workstation
no_fonts Anzahl der verfügbaren Fonts (oder 0)
font_flags Bitvektor der anzuzeigenden Fonts
Bit-0 = Bitmapfonts anzeigen ( FNTS_BTMP = 1)
Bit-1 = Vektorfonts anzeigen ( FNTS_OUTL = 2)
Bit-2 = äquidistante Fonts zeigen ( FNTS_MONO = 4)
Bit-3 = proportionale Fonts zeigen ( FNTS_PROP = 8)
dialog_flags Aussehen des Dialogs
FNTS_3D (1) = Auswahl im 3D-Look anzeigen
sample String für Beispieltext
opt_button Zeiger auf einen String für einen optionalen Button, oder NULL


Hinweis: Falls no_fonts den Wert 0 besitzt, wird die Funktion vst_load_fonts mit vdi_handle aufgerufen. Anderenfalls wird davon ausgegangen, daß no_fonts die Anzahl aller über vdi_handle verfügbaren Fonts ist, d.h. die Anzahl aller Systemfonts zuzüglich der Anzahl der nachgeladenen Fonts.

Da diese Funktion je nach Systemkonfiguration durchaus 1 Sekunde (oder mehr) benötigt, sollte man sie am Programmstart und nicht erst direkt vor der Anzeige der Fontauswahl aufrufen.

Achtung: Der Fontselektor verändert die Attribute der mit vdi_handle bezeichneten Workstation. Wenn man die bei fnts_create übergebene Workstation noch für andere Zwecke benutzen möchte, müssen auf jeden Fall die Attribute vorher gesetzt werden, da sie evtl. zwischenzeitlich vom Fontselektor geändert wurden.
Ergebnis: Die Funktion liefert einen Zeiger auf die Verwaltungsstruktur der Zeichensätze zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_open   fnts_close   xFSL-Schnittstelle

8.20.3.1 Bindings für fnts_create

C: FNT_DIALOG *fnts_create ( int16_t vdi_handle, int16_t no_fonts, int16_t font_flags, int16_t dialog_flags, int8_t *sample, int8_t *opt_button );
Umsetzung:
FNT_DIALOG *fnts_create ( int16_t vdi_handle, int16_t no_fonts,
                          int16_t font_flags,
                          int16_t dialog_flags, int8_t *sample,
                          int8_t *opt_button )
{
   addr_in[0] = sample;
   addr_in[1] = opt_button;

   int_in[0] = vdi_handle;
   int_in[1] = no_fonts;
   int_in[2] = font_flags;
   int_in[3] = dialog_flags;
   crys_if (180);

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

Adresse Feldelement Belegung
control control[0] 180 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 1 # Einträge in addr_out
addr_in addr_in[0] sample
addr_in+4 addr_in[1] opt_button
int_in int_in[0] vdi_handle
int_in+2 int_in[1] no_fonts
int_in+4 int_in[2] font_flags
int_in+6 int_in[3] dialog_flags
addr_out addr_out[0] Return-Wert

8.20.4 fnts_delete

Name: »Font Selector Delete« - Speicher der Zeichensatzauswahl freigeben.
AES-Nummer: 181
Deklaration: int16_t fnts_delete ( FNT_DIALOG *fnt_dialog, int16_t vdi_handle );
Beschreibung: Die Funktion gibt den Speicherplatz für die Zeichensatzauswahl wieder frei. Es gilt:
Parameter Bedeutung
   
fnt_dialog Zeiger auf Verwaltungsstruktur
vdi_handle Kennung der Workstation (oder 0)


Hinweis: Ist vdi_handle ungleich 0, so wird die Funktion vst_unload_fonts aufgerufen.
Ergebnis: Die Funktion liefert stets den Wert 1 zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_close   fnts_remove   xFSL-Schnittstelle

8.20.4.1 Bindings für fnts_delete

C: int16_t fnts_delete ( FNT_DIALOG *fnt_dialog, int16_t vdi_handle );
Umsetzung:
int16_t fnts_delete ( FNT_DIALOG *fnt_dialog,
                      int16_t vdi_handle )
{
   addr_in[0] = fnt_dialog;
   int_in[0]  = vdi_handle;
   crys_if (181);

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

Adresse Feldelement Belegung
control control[0] 181 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] vdi_handle
int_out int_out[0] Return-Wert

8.20.5 fnts_do

Name: »Font Selector Do« - Zeichensatzauswahl im modalen Dialog anzeigen.
AES-Nummer: 187
Deklaration: int16_t fnts_do ( FNT_DIALOG *fnt_dialog, int16_t button_flags, int32_t id_in, int32_t pt_in, int32_t ratio_in, int16_t *check_boxes, int32_t *id, fix31 *pt, int32_t *ratio );
Beschreibung: Die Funktion zeigt die Zeichensatzauswahl in einem modalen Dialog an. Es gilt:
Parameter Bedeutung
   
fnt_dialog Zeiger auf Verwaltungsstruktur
button_flags Flags für unterstützte Buttons
0x0001 = Checkbox für Namen selektieren
0x0002 = Checkbox für Stile selektieren
0x0004 = Checkbox für die Höhe selekt.
0x0008 = Checkbox für Breiten/Höhenverhältnis selektieren
0x0100 = Checkbox für Namen anzeigen
0x0200 = Checkbox für Stile anzeigen
0x0400 = Checkbox für Höhe anzeigen
0x0800 = Checkbox für Breiten/Höhenverhältnis anzeigen
0x1000 = Breiten/Höhen Verh. einstellbar
0x2000 = Button 'setzen' anwählbar
0x4000 = Button 'markieren' anwählbar
id_in ID des anzuzeigenden Fonts
pt_in Höhe des anzuzeigenden Fonts
ratio_in dto. jedoch Breiten/Höhen-Verhältnis
check_boxes Status der Checkboxen
id ID des ausgewählten Fonts
pt Höhe des Fonts in 1/65536 Punkten
ratio Breiten/Höhen-Verhältnis


Hinweis: Diese Funktion kann als Gegenstück zu fnts_open, fnts_evnt und fnts_close aufgefaßt werden. Sie kehrt erst dann zum Aufrufer zurück, wenn einer der EXIT-Buttons betätigt wurde.
Ergebnis: Die Funktion liefert die Nummer des ausgewählten Buttons (oder 0) zurück, dabei gilt:

1 = Abbruch-Button
2 = Ok-Button
3 = Setzen-Button
4 = markieren-Button
5 = optionaler Button
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_open   fnts_evnt   xFSL-Schnittstelle

8.20.5.1 Bindings für fnts_do

C: int16_t fnts_do ( FNT_DIALOG *fnt_dialog, int16_t button_flags, int32_t id_in, int32_t pt_in, int32_t ratio_in, int16_t *check_boxes, int32_t *id, fix31 *pt, int32_t *ratio );
Umsetzung:
int16_t fnts_do ( FNT_DIALOG *fnt_dialog, int16_t button_flags,
                  int32_t id_in, int32_t pt_in,
                  int32_t ratio_in, int16_t *check_boxes,
                  int32_t *id, fix31 *pt, int32_t *ratio )
{
   addr_in[0] = fnt_dialog;

   int_in[0]    = button_flags;
   int_in[1..2] = id_in;
   int_in[3..4] = pt_in;
   int_in[5..6] = ratio_in;
   crys_if (187);

   *check_boxes = int_out[1];
   *id          = int_out[2..3];
   *pt          = int_out[4..5];
   *ratio       = int_out[6..7];

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

Adresse Feldelement Belegung
control control[0] 187 # Opcode der Funktion
control+2 control[1] 7 # Einträge in int_in
control+4 control[2] 8 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] button_flags
int_in+2 int_in[1..2] id_in
int_in+6 int_in[3..4] pt_in
int_in+10 int_in[5..6] ratio_in
int_out int_out[0] Return-Wert
int_out+2 int_out[1] check_boxes
int_out+4 int_out[2..3] id
int_out+8 int_out[4..5] pt
int_out+12 int_out[6..7] ratio

8.20.6 fnts_evnt

Name: »Font Selector Handle Event« - Ereignisse für Zeichensatzauswahl bearbeiten.
AES-Nummer: 186
Deklaration: int16_t fnts_evnt ( FNT_DIALOG *fnt_dialog, EVNT *events, int16_t *button, int16_t *check_boxes, int32_t *id, fix31 *pt, int32_t *ratio );
Beschreibung: Die Funktion wertet die übergebene EVNT-Struktur aus. Es gilt:
Parameter Bedeutung
   
fnt_dialog Zeiger auf Verwaltungsstruktur
events Zeiger auf EVNT-Struktur
button ausgewählter Button (oder 0)
1 = Abbruch
2 = Ok
3 = Setzen
4 = markieren
5 = optional (Applikations-Eigen)
check_boxes Status der Checkboxen
Bit-0 = Box für Namen selektiert
Bit-1 = Box für Stile selektiert
Bit-2 = Box für Höhe selektiert
Bit-3 = dto. für Breiten/Höhenverhältnis
id ID des ausgewählten Fonts
pt Höhe des Fonts in 1/65536 Punkten
ratio Breiten/Höhen-Verhältnis


Hinweis: Die Funktion ruft intern wdlg_evnt auf.
Ergebnis: Die Funktion liefert den Wert 0 zurück, falls ein Exitbutton angewählt worden ist. Ein Wert von 1 hingegen zeigt an, daß nichts passiert ist.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_do   xFSL-Schnittstelle

8.20.6.1 Bindings für fnts_evnt

C: int16_t fnts_evnt ( FNT_DIALOG *fnt_dialog, EVNT *events, int16_t *button, int16_t *check_boxes, int32_t *id, fix31 *pt, int32_t *ratio );
Umsetzung:
int16_t fnts_evnt ( FNT_DIALOG *fnt_dialog, EVNT *events,
                    int16_t *button, int16_t *check_boxes,
                    int32_t *id, fix31 *pt, int32_t *ratio )
{
   addr_in[0] = fnt_dialog;
   addr_in[1] = events;
   crys_if (186);

   *button      = int_out[1];
   *check_boxes = int_out[2];
   *id          = int_out[3..4];
   *pt          = int_out[5..6];
   *ratio       = int_out[7..8];

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

Adresse Feldelement Belegung
control control[0] 186 # Opcode der Funktion
control+2 control[1] 0 # Einträge in int_in
control+4 control[2] 9 # Einträge in int_out
control+6 control[3] 2 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
addr_in+4 addr_in[1] events
int_out int_out[0] Return-Wert
int_out+2 int_out[1] button
int_out+4 int_out[2] check_boxes
int_out+6 int_out[3..4] id
int_out+10 int_out[5..6] pt
int_out+14 int_out[7..8] ratio

8.20.7 fnts_get_info

Name: »Font Selector - Get Font Info« - Informationen über einen Zeichensatz ermitteln.
AES-Nummer: 184 (Unterfunktion 3)
Deklaration: int16_t fnts_get_info ( FNT_DIALOG *fnt_dialog, int32_t id, int16_t *mono, int16_t *outline );
Beschreibung: Die Funktion ermittelt Informationen über einen Zeichensatz. Es gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur
id ID des Zeichensatzes
mono Flag für Monospaced (Äquidistanz)
outline Flag für Vektorfont


Hinweis: Die Funktion ermittelt ob der angegebene Font ein äquidistanter oder ein Vektorzeichensatz ist.
Ergebnis: Die Funktion liefert die Nummer des Zeichensatzes (oder im Fehlerfall den Wert 0) zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_get_name   fnts_get_style   xFSL-Schnittstelle

8.20.7.1 Bindings für fnts_get_info

C: int16_t fnts_get_info ( FNT_DIALOG *fnt_dialog, int32_t id, int16_t *mono, int16_t *outline );
Umsetzung:
int16_t fnts_get_info ( FNT_DIALOG *fnt_dialog, int32_t id,
                        int16_t *mono, int16_t *outline )
{
   addr_in[0] = fnt_dialog;

   int_in[0]    = 3;
   int_in[1..2] = id;
   crys_if (184);

   *mono    = int_out[1];
   *outline = int_out[2];
   return ( int_out[0] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 184 # Opcode der Funktion
control+2 control[1] 3 # Einträge in int_in
control+4 control[2] 3 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] 3 # Unterfunktion
int_in+2 int_in[1..2] id
int_out int_out[0] Return-Wert
int_out+2 int_out[1] mono
int_out+4 int_out[2] outline

8.20.8 fnts_get_name

Name: »Font Selector GetFontName« - Namen eines Zeichensatzes ermitteln.
AES-Nummer: 184 (Unterfunktion 2)
Deklaration: int16_t fnts_get_name ( FNT_DIALOG *fnt_dialog, int32_t id, int8_t *full_name, int8_t *family_name, int8_t *style_name );
Beschreibung: Die Funktion ermittelt für einen Zeichensatz dessen Namen, Familiennamen und Stilnamen. Es gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur
id ID des Zeichensatzes
full_name vollständiger Name (oder NULL)
family_name Familienname (oder NULL)
style_name Stilname (oder NULL)
Ergebnis: Die Funktion liefert bei fehlerfreier Ausführung den Wert 1 zurück. Ein Wert von 0 hingegen signalisiert einen Fehler.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_get_info   fnts_get_style   xFSL-Schnittstelle

8.20.8.1 Bindings für fnts_get_name

C: int16_t fnts_get_name ( FNT_DIALOG *fnt_dialog, int32_t id, int8_t *full_name, int8_t *family_name, int8_t *style_name );
Umsetzung:
int16_t fnts_get_name ( FNT_DIALOG *fnt_dialog, int32_t id,
                        int8_t *full_name,
                        int8_t *family_name, int8_t *style_name )
{
   addr_in[0] = fnt_dialog;
   addr_in[1] = full_name;
   addr_in[2] = family_name;
   addr_in[3] = style_name;

   int_in[0]    = 2;
   int_in[1..2] = id;
   crys_if (184);

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

Adresse Feldelement Belegung
control control[0] 184 # Opcode der Funktion
control+2 control[1] 3 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 4 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
addr_in+4 addr_in[1] full_name
addr_in+8 addr_in[2] family_name
addr_in+12 addr_in[3] style_name
int_in int_in[0] 2 # Unterfunktion
int_in+2 int_in[1..2] id
int_out int_out[0] Return-Wert

8.20.9 fnts_get_no_styles

Name: »Font Selector Get Number Of Styles« - ermittelt die Anzahl der Stile einer Fontfamilie.
AES-Nummer: 184 (Unterfunktion 0)
Deklaration: int16_t fnts_get_no_styles ( FNT_DIALOG *fnt_dialog, int32_t id );
Beschreibung: Die Funktion ermittelt die Anzahl der Stile eines Fonts. Es gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur
id ID des Zeichensatzes


Hinweis: Der Parameter id ist dabei die Font-ID des Zeichensatzes, die z.B. bei fnts_evnt zurückgeliefert worden sein kann.
Ergebnis: Die Funktion liefert die Anzahl der zum Font gehörenden Stile zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_get_info   fnts_get_name   xFSL-Schnittstelle

8.20.9.1 Bindings für fnts_get_no_styles

C: int16_t fnts_get_no_styles ( FNT_DIALOG *fnt_dialog, int32_t id );
Umsetzung:
int16_t fnts_get_no_styles ( FNT_DIALOG *fnt_dialog, int32_t id )
{
   addr_in[0] = fnt_dialog;

   int_in[0]    = 0;
   int_in[1..2] = id;
   crys_if (184);

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

Adresse Feldelement Belegung
control control[0] 184 # Opcode der Funktion
control+2 control[1] 3 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] 0 # Unterfunktion
int_in+2 int_in[1..2] id
int_out int_out[0] Return-Wert

8.20.10 fnts_get_style

Name: »Font Selector Get Style ID« - Zeichensatz ID des n-ten Stils einer Font-Familie ermitteln.
AES-Nummer: 184 (Unterfunktion 1)
Deklaration: int32_t fnts_get_style ( FNT_DIALOG *fnt_dialog, int32_t id, int16_t index );
Beschreibung: Die Funktion ermittelt die ID des n-ten Fonts einer Zeichensatzfamilie. Es gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur
id ID eines Fonts der Familie
index gewünschter Index innerhalb der Familie


Hinweis: Der Parameter index muß eine Zahl zwischen 1 und dem Ergebnis von fnts_get_no_styles sein.
Ergebnis: Die Funktion liefert die ID des n-ten Fonts der Zeichensatzfamilie zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_get_info   fnts_get_name   xFSL-Schnittstelle

8.20.10.1 Bindings für fnts_get_style

C: int32_t fnts_get_style ( FNT_DIALOG *fnt_dialog, int32_t id, int16_t index );
Umsetzung:
int32_t fnts_get_style ( FNT_DIALOG *fnt_dialog, int32_t id,
                         int16_t index )
{
   addr_in[0] = fnt_dialog;

   int_in[0]    = 1;
   int_in[1..2] = id;
   int_in[3]    = index;
   crys_if (184);

   return ( int_out[0..1] );
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 184 # Opcode der Funktion
control+2 control[1] 4 # Einträge in int_in
control+4 control[2] 2 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] 1 # Unterfunktion
int_in+2 int_in[1..2] id
int_in+6 int_in[3] index
int_out int_out[0..1] Return-Wert

8.20.11 fnts_open

Name: »Font Selector Open Window« - Zeichensatzauswahl im Fenster darstellen.
AES-Nummer: 182
Deklaration: int16_t fnts_open ( FNT_DIALOG *fnt_dialog, int16_t button_flags, int16_t x, int16_t y, int32_t id, fix31 pt, fix31 ratio );
Beschreibung: Die Funktion öffnet einen Fensterdialog mit der Zeichensatzauswahl. Es gilt:
Parameter Bedeutung
   
fnt_dialog Zeiger auf Verwaltungsstruktur
button_flags Flags für unterstützte Buttons
0x0001 = Checkbox für Namen selektieren
0x0002 = Checkbox für Stile selektieren
0x0004 = Checkbox für die Höhe selekt.
0x0008 = Checkbox für Breiten/Höhenverhältnis selektieren
0x0100 = Checkbox für Namen anzeigen
0x0200 = Checkbox für Stile anzeigen
0x0400 = Checkbox für Höhe anzeigen
0x0800 = Checkbox für Breiten/Höhenverhältnis anzeigen
0x1000 = Breiten/Höhen Verh. einstellbar
0x2000 = Button 'setzen' anwählbar
0x4000 = Button 'markieren' anwählbar
x x-Koordinate
y y-Koordinate des Fensters
id ID des Zeichensatzes
pt Höhe des Fonts in 1/65536 Punkten
ratio Breiten/Höhen-Verhältnis


Hinweis: Bei Koordinaten von (-1,-1) wird der Dialog zentriert auf dem Bildschirm dargestellt.
Ergebnis: Die Funktion liefert die AES-Fensterkennung des Fensters (oder im Fehlerfall den Wert 0) zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_close   xFSL-Schnittstelle

8.20.11.1 Bindings für fnts_open

C: int16_t fnts_open ( FNT_DIALOG *fnt_dialog, int16_t button_flags, int16_t x, int16_t y, int32_t id, fix31 pt, fix31 ratio );
Umsetzung:
int16_t fnts_open ( FNT_DIALOG *fnt_dialog, int16_t button_flags,
                    int16_t x, int16_t y, int32_t id, fix31 pt,
                    fix31 ratio )
{
   addr_in[0] = fnt_dialog;

   int_in[0]    = button_flags;
   int_in[1]    = x;
   int_in[2]    = y;
   int_in[3..4] = id;
   int_in[5..6] = pt;
   int_in[7..8] = ratio;
   crys_if (182);

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

Adresse Feldelement Belegung
control control[0] 182 # Opcode der Funktion
control+2 control[1] 9 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] button_flags
int_in+2 int_in[1] x
int_in+4 int_in[2] y
int_in+6 int_in[3..4] id
int_in+10 int_in[5..6] pt
int_in+14 int_in[7..8] ratio
int_out int_out[0] Return-Wert

8.20.12 fnts_remove

Name: »Font Selector Remove User Fonts« - eigene Fonts aus der Zeichensatzliste entfernen.
AES-Nummer: 185 (Unterfunktion 1)
Deklaration: void fnts_remove ( FNT_DIALOG *fnt_dialog );
Beschreibung: Die Funktion entfernt die mit fnts_add angemeldeten Fonts aus der Zeichensatzliste. Es gilt:

Parameter Bedeutung
fnt_dialog Zeiger auf Verwaltungsstruktur


Hinweis: Falls programmeigene Zeichensätze angemeldet sind, muß fnts_remove vor fnts_delete aufgerufen werden.
Ergebnis: Die Funktion liefert kein Ergebnis zurück.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_delete   fnts_add   xFSL-Schnittstelle

8.20.12.1 Bindings für fnts_remove

C: void fnts_remove ( FNT_DIALOG *fnt_dialog );
Umsetzung:
void fnts_remove ( FNT_DIALOG *fnt_dialog )
{
   addr_in[0] = fnt_dialog;
   int_in[0] = 1;
   crys_if (185);
}
GEM-Arrays:

Adresse Feldelement Belegung
control control[0] 185 # Opcode der Funktion
control+2 control[1] 1 # Einträge in int_in
control+4 control[2] 0 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] 1 # Unterfunktion

8.20.13 fnts_update

Name: »Font Selector Update Window« - Zeichensatzauswahl aktualsieren.
AES-Nummer: 185 (Unterfunktion 2)
Deklaration: int16_t fnts_update ( FNT_DIALOG *fnt_dialog, int16_t button_flags, int32_t id, fix31 pt, int32_t ratio );
Beschreibung: Die Funktion sorgt für ein Update der Zeichensatzauswahl. Es gilt:
Parameter Bedeutung
   
fnt_dialog Zeiger auf Verwaltungsstruktur
button_flags Flags für unterstützte Buttons
0x0001 = Checkbox für Namen selektieren
0x0002 = Checkbox für Stile selektieren
0x0004 = Checkbox für die Höhe selekt.
0x0008 = Checkbox für Breiten/Höhenverhältnis selektieren
0x0100 = Checkbox für Namen anzeigen
0x0200 = Checkbox für Stile anzeigen
0x0400 = Checkbox für Höhe anzeigen
0x0800 = Checkbox für Breiten/Höhenverhältnis anzeigen
0x1000 = Breiten/Höhen Verh. einstellbar
0x2000 = Button 'setzen' anwählbar
0x4000 = Button 'markieren' anwählbar
id ID des Zeichensatzes.
pt Höhe des Fonts in 1/65536 Punkten
ratio Breiten/Höhen-Verhältnis
Ergebnis: Die Funktion liefert einen der folgenden Werte zurück:

-1 = Funktion nicht vorhanden.
0 = Fehler (Auswahl per fnts_close schliessen).
1 = alles in Ordnung.
Verfügbar: Das Vorhandensein dieser Funktion kann per appl_getinfo (Opcode 7) festgestellt werden.

In älteren Versionen von WDIALOG war diese Funktion noch nicht vorhanden. Das Binding sorgt dafür, daß in diesem Fall der Wert -1 zurückgegeben wird.
Gruppe: Zeichensatzauswahl
Querverweis: Binding   fnts_close   xFSL-Schnittstelle

8.20.13.1 Bindings für fnts_update

C: int16_t fnts_update ( FNT_DIALOG *fnt_dialog, int16_t button_flags, int32_t id, fix31 pt, int32_t ratio );
Umsetzung:
int16_t fnts_update ( FNT_DIALOG *fnt_dialog, int16_t button_flags,
                      int32_t id, fix31 pt, int32_t ratio )
{
   addr_in[0] = fnt_dialog;

   int_in[0]    = 2;
   int_in[1]    = button_flags;
   int_in[2..3] = id;
   int_in[4..5] = pt;
   int_in[6..7] = ratio;
   crys_if (185);

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

Adresse Feldelement Belegung
control control[0] 185 # Opcode der Funktion
control+2 control[1] 8 # Einträge in int_in
control+4 control[2] 1 # Einträge in int_out
control+6 control[3] 1 # Einträge in addr_in
control+8 control[4] 0 # Einträge in addr_out
addr_in addr_in[0] fnt_dialog
int_in int_in[0] 2
int_in+2 int_in[1] button_flags
int_in+4 int_in[2..3] id
int_in+8 int_in[4..5] pt
int_in+12 int_in[6..7] ratio
int_out int_out[0] Return-Wert

8.20.14 Zeichensatzauswahl im Fenster

Programmstart: fnts_create()
.
Aufruf der Fontauswahl: fnts_open()
.
Event-Loop: fnts_evnt()
.
......evtl. fnts_get_no_styles()/fnts_get_style()/...
(je nach Status der Checkboxen)
.
Schließen der Fontauswahl: fnts_close()
.
Programmende: fnts_delete()

8.20.15 Zeichensatzauswahl als Dialog

Programmstart: fnts_create()
.
Aufruf der Fontauswahl: fnts_do()
.

......evtl. fnts_get_no_styles()/fnts_get_style()/...
(je nach Status der Checkboxen)
.
Programmende: fnts_delete()

HomeAESErweiterte GrafikfunktionenAES-Funktionsliste