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 darf jedem Programm ohne Rcksprache kostenlos beigelegt werden. Trotzdem interessiert es mich natrlich, wo UFSL berall beiliegt. *************************************************************************** Programmierschnittstelle: ------------------------- 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. Aufruf: ------- UFSL *ufsl; ufsl=(UFSL *)get_cookie('UFSL'); ufsl->fontsel_input(vdihandle,n_fonts,0,"Bitte Font ausw„hlen",&id,&size); oder ufsl->fontsel_input(vdihandle,n_fonts,0,NULL,&id,&size); Returncodes: ------------ 1 : Alles OK, Werte gltig. 0 : Abbruch gew„hlt. -1 : Out of memory. -2 : Unzul„ssiger Mehrfachaufruf. UFSL nutzt die M”glichkeiten von "Let 'em Fly" laut Doku Version 1.17. *************************************************************************** Versionsbersicht: ------------------ 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. Alle benutzerdefinierten Variablen werden beim Verlassen zurckgesetzt. Fonteinstellung ber Editfeld mit Mausdoppelklick auf Beispieltext.(Nur Speedo). Version 0.92 vom Juni 1993 -------------------------- UFSL erkennt Aufl”sungswechsel und initialisiert sein Resourcefile neu. Version 0.93 vom Juli 1993 -------------------------- Bugfix. appl_init() entfernt. Unter MTOS gabs dabei einen Absturz. Version 0.94 - 0.95 vom August/September 1993 --------------------------------------------- Erweiterte Returncodes fr detailiertere Fehlermeldungen. *************************************************************************** MfG Michael Th„nitz Email: MICHAEL THAENITZ @BI im Mausnetz