RegisterBGIfont
Zaregistruje v grafickém systému font BGI, který byl zaveden uživatelem nebo přilinkován.
- Deklarace
function RegisterBGIfont(Font: pointer): Integer;
- Režim
- Reálný, Chráněný
- Poznámky
- V případě chyby vrací funkce hodnotu menší než 0. Možnými chybovými kódy jsou grError, grInvalidFont a grInvalidFontNum. Nedojde-li k žádné chybě, vrací se interní číslo fontu. Tato funkce umožňuje uživateli zavést do paměti soubor s fontem a "zaregistrovat" font předáním jeho umístění v paměti funkci RegisterBGIfont. Pokud tento font zadáte jako parametr v SetTextStyle, bude používán tento registrovaný font (a nebude zaváděn z disku jednotkou Graph). Uživatelem registrované fonty mohou být buď zaváděny z disku na haldu (heap), nebo konvertovány do souboru .OBJ (pomocí programu BINOBJ.EXE) a přilinkovány přímo do souboru .EXE.
- Pro zavedení fontů do paměti a jejich registraci mluví několik důvodů. Za prvé, jednotka Graph nemůže ve své vlastní alokované paměti uchovat více vektorových fontů najednou. Proto je střídání několika fontů spojeno s opakovanými přístupy na disk, které program zpomalují. Pokud chcete takové střídání zrychlit, můžete si potřebné fonty zavést do paměti na začátku programu, zaregistrovat je a pak střídavě používat, aniž by je jednotka Graph musela zavádět z disku při každém volání SetTextStyle.
- Za druhé, možná budete chtít zabudovat jeden či více fontových souborů přímo do souboru .EXE. Pokud tak učiníte, fontové soubory, které váš program potřebuje, budou vestavěné a k běhu programu bude potřeba jen soubor .EXE a drivery. Postup zabudování fontového souboru do souboru .EXE je jednoduchý:
- Fontový(é) soubor(y) zpracujte programem BINOBJ.
- Výsledný(é) soubor(y) .OBJ přilinkujte do vašeho programu.
- Před voláním InitGraph přilinkovaný(é) fontový(é) soubor(y) zaregistrujte.
- Podrobné vysvětlení a příklad výše uvedeného obsahuje komentář na začátku ukázkového programu Soubor:BGILINK.PAS na distribučních disketách. Informace o utilitě BINOBJ najdete v souboru Soubor:UTILS.DOC.
- Viz také
- InitGraph
Vzorový příklad
{RgBGIfnt.PAS} {Vzorový příklad pro RegisterBGIFont } uses Graph; var Driver, Mode: Integer; FontF: file; FontP: pointer; begin { Otevírá soubor fontu,čte,registruje } Assign(FontF, 'TRIP.CHR'); Reset(FontF, 1); GetMem(FontP, FileSize(FontF)); BlockRead(FontF, FontP^, FileSize(FontF)); if RegisterBGIfont(FontP) < 0 then begin WriteLn('Chyba registrace fontu: ', GraphErrorMsg(GraphResult)); Halt(1); end; { Inicializace grafiky } Driver := Detect; InitGraph(Driver, Mode, ' '); if GraphResult < 0 then Halt(1); ReadLn; { Vybere zaznamenaný font } SetTextStyle(TriplexFont, HorizDir, 4); OutText('Triplex zaveden programem'); MoveTo(0, TextHeight('a')); ReadLn; { Vybere font, který má být zaveden z disku } SetTextStyle(SansSerifFont, HorizDir, 4); OutText('Váš disk by se měl točit..'); MoveTo(0, GetY + TextHeight('a')); ReadLn; { Znovu vybere font z paměti } SetTextStyle(TriplexFont, HorizDir, 4); OutText('A znovu Triplex'); ReadLn; CloseGraph; end.