Principio di funzionamento generale
Questa sezione raccoglie tutte le funzioni che permettono di stampare del testo.
Easyhand usa due tipi
font face :
uno nativo cross/platform e uno legato alla
piattaforma.
Le origini
Quello nativo era nato in DOS e quindi con forti limitazioni; il DOS non prevedeva grafica vettoriali, ma solo in una modalita carattere 80 colonne x 25 righe.
Quando si operava in modalità grafica CGA/VGA, l'unico supporto era il BIOS che conteneva la mappa di caratteri a larghezza fissa (8px x 8px).
Easyhand sfruttava una serie di files che erano in windows 3.1 e contenevano i bitmap monocromatici delle lettere già renderizzati, in diverse altezze di carattere e ogni lettera aveva larghezza differente.
Probabilmente questi file, permettevano al windows dell'epoca, di stampare scritte, prima dell'attivazione del sistema vettoriale.
Ogni file conteneva il nome del font (Es. SMALL F) e diverse serie di bitmap monocromatici con diverse altezze: 5,7,12,14 pixel ad esempio.
Con questi files era difficile impostare delle funzioni che contenessero l'indicazione dell'altezza del carattere, quindi le istruzioni di stampa contengono:
- Il nome (in formato stringa) del font da usare
- NFI: (numero del font interno)
Se ad esempio il file conteneva dello stesso font 5 altezze, il numero andava da 0 a 4.
Esistono quindi un sotto insieme di funzioni (tutte quelle che contengono la lettera f) che richiedono questi due parametri.
All'avvio questi files venivano allocati in una tabella in memoria e potevano essere usati nelle funzioni di testo, indicando l'handle della memoria diretto per velocizzare la stampa.
I nomi dei fonts disponibili sono: SMALL F, SMALL E, VGASYS, VGAFIX, 8514SYS, 8514FIX, COURIER, SANS SERIF F, SANS SERIF E.
L'evoluzione
Con l'introduzione di piattaforme più elaborate cone supporto GDI, come Windows, si è creata in Easyhand una struttura per mantenere la compatibilità con le vecchie applicazioni ma che nel contempo permettesse di usare le nuove risorse.
I file che contenevano i fonts non vengono più usati, ma easyhand fa una "emulazione" dei font originali, sostituendoli con i font di sistema.
Segue struttura di conversione
EH_FONT_OLD arFontOldStyle[]={
{ "VGASYS" , "Tahoma" , "16" ,STYLE_BOLD},
{ "SMALL F" , "Tahoma" , "7,9,11,13,14" ,STYLE_NORMAL},
{ "8514FIX" , "Terminal" , "20" ,STYLE_BOLD},
{ "8514SYS" , "Arial" , "19" ,STYLE_BOLD},
{ "COURIER E" , "Courier" , "13,16,20" ,STYLE_NORMAL},
{ "COURIER F" , "Courier" , "16,20,25" ,STYLE_NORMAL},
{ "SANS SERIF E" , "Times New Roman" , "13,16,19,21,27,35" ,STYLE_NORMAL},
{ "SANS SERIF F" , "Times New Roman" , "16,20,23,27,33,43" ,STYLE_NORMAL},
{ "SMALL E" , "Tahoma" , "8,10,11,10,11" ,STYLE_NORMAL},
{ "VGAFIX" , "Fixedsys" , "15" ,STYLE_BOLD},
{NULL}};
|
La struttura contiene nell'ordine: il nome del vecchio font, il nome del font in sostituzione, le altezze disponibili per nfi, e lo stile.
Se si desidera usare un font in TrueType direttamente gestito dalla piattaforma, basterà comunque indicare il font preceduto da un cancelletto: Es. "#Arial" e seguito dalla sua altezza in pixel.
Es. Tdispf(DExt->px+1,DExt->py+1,0, -1,STYLE_BOLD, "#Arial" ,16,objCalled->text);
|
Tuttavia, è molto utile nei form di dialogo e negli oggetti (si mantiene la compatibilità multi-piattaforma), usare il metodo nativo, non preoccupandosi quindi di quale nome di font usare e di quale altezza usare.
Normalmente si usa SMALL F, 3 per i bottoni, liste, scroll, menu e VGASYS,0 per i campi di input.
Lo stile
Easyhand tende a semplificare al massimo l'uso dei font, senza però perdere le caratteristiche più importanti.
Lo stile è un parametro sempre presente all'interno delle funzioni che permette come si può intuire, di determinare lo stile di stampa.
Il valore può essere STYLE_NORMAL una o più delle seguenti macro.
- STYLE_BOLD
- STYLE_ITALIC
- STYLE_UNDERLINE
Il dbase in memoria
Per velocizzare al massimo le performance di easyhand, i font vengono memorizzati in memoria in un dbase.
Il sistema di memorizzazione è automatico, e se lo si desidera Easyhand ritorna un handle del font che può essere usato in tutte le funzione che contegono "_h".
Altri stili o caratteristiche speciali non vengono fornite dalle API di Easyhand, quindi è necessario usare quelle native della piattaforma.
Per ulteriori informazioni vedi la sezione Fonts.