UFSL Universal Fontselector (c) 1991-1993 by Michael Th„nitz

UFSL ist Freeware.

Wo liegt eigentlich das Problem? Nun ganz einfach, die Einstellung eines
anderen als des Systemfonts ist eigentlich recht trivial. vst_font()
stellt den Font ein, vst_point() stellt die Gr”áe ein. Woher weiá man
aber nun welche Fonts es gibt und in welchen Gr”áen sie vorliegen?
Auch das ist recht einfach. Man l„dt die Fonts, klappert alle Fonts nach
Ihren "echten" Gr”áen ab und stellt alles in einer Listbox dar.
Tja, und da liegt das Problem. Ist die Abfage der Gr”áen schon ein klein
wenig kompliziert, schmeiáen bei Listbox die meisten Gelegenheits-
programmierer das Handtuch. Entsprechend bescheiden sind dann auch die
Ergebnisse. Hier springt UFSL nun ein und bietet den gleichen einfach
zu programmierenden Komfort wie bei der Fileselectbox. Einfach die
Fontauswahlbox mit einigen einfach zu erfahrenen Parametern versorgen,
ber den Cookie aufrufen und man erh„lt FontId und die Punktgr”áe zurck.
Ein entsprechendes Beispiel liegt mit FONTTEST.C vor. Der Programmierer
entscheidet, ob es sich um einen konventionellen Dialog mit Let 'em Fly
Untersttzung oder um einen Fensterdialog handelt.


UFSL ist eine Fontauswahlbox fr den Autoordner. Sie bietet dem
Programmierer eine einfache Programmierschnittstelle ber einen Cookie.

Der Cookie lautet: 'UFSL'.
Der Cookie liefert einen Zeiger auf folgende Struktur:

typedef struct
{
   unsigned long  id;      /* UFSL ID (UFSL)       */
   unsigned int   version; /* version (BCD-Format) */
   int dialtyp;            /* 0=Dialog, 1=Fenster  */
   int cdecl (*font_selinit)(void);
   int cdecl (*font_selinput)(
               int vdihandle, /* Handle fr die VWorkstation        */
               int n_fonts,   /* Gesamtzahl der geladenen Fonts     */
               int ftype,     /* 1=nur monospaced Fonts, 0=alles    */
               char *text,    /* eigener Text, max. 34 Zeichen      */
              /* falls nicht erforderlich, NULLpointer bergeben    */
               int *fretid,   /* eingestellte FontId                */
               int *fretsize  /* eingestellte Fontgr”že             */
               );
   OBJECT *helpbutton;          /* Typ: BOXTEXT                     */
   int cdecl (*helpfunc)(void); /* Benutzerdefinierte Helpfkt.      */
   /**** ab Version 0.91 ********************************************/
   char *examplestr;            /* Beispieltext fr Fontdarstellung */
} UFSL;

Das Beispiel zeigt die M”glichkeiten. Die Funktion font_selinit() muá
nur dann aufgerufen werden, wenn man einem benutzerdefinierten Button
einrichten will. Ansonsten kann man font_selinput() auch direkt aufrufen.

UFSL nutzt die M”glichkeiten von "Let 'em Fly" laut Doku Version 1.17.


Version: 0.90 vom Mai 1993 (Dezember 1991)

Ich m”chte noch anmerken, das die Cookieinstallation noch recht drftig
ist. Es wird einfach installiert, ohne zu fragen ob Platz ist. Das Profibuch
bietet hierzu eine m.E. fehlerhafte Beschreibung. Es wird von einen Nullcookie
und seines Wertes gesprochen. Das ist m.E. ein Syntaxerror. Wer also
vernnftige Cookieroutinen in 'C' hat, m”chte mir doch bitte weiterhelfen.

Dem Fensterdialog muá noch seine Unmodalit„t abgew”hnt werden.

Version: 0.91 vom Mai 1993
Die Cookiefrage ist gekl„rt durch Assemblerroutinen von Arnd Beissner,
zur Verfgung gestellt durch Ralf Zimmermann @WI2.
Alle Benutzerdefinierten Variablen werden beim Verlassen zurckgesetzt.
Einstellung der Fontgr”áe ber Editfeld durch Doppelklick auf Beispielbox
oder Editfeld.
Beispieltextstring ber Zeiger zug„nglich.

MfG Michael Th„nitz

Email: MICHAEL THAENITZ @BI im Mausnetz