Přidáno 3 520 bajtů,
4. 10. 2012, 16:32 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 [[halda|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 [[File:BGILINK.PAS]] na distribučních disketách. Informace o utilitě [[BINOBJ]] najdete v souboru [[file:UTILS.DOC]].
;Viz také
:[[InitGraph]]
:[[SetTextStyle]]
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.
[[Category:Graph]]
[[Category:Funkce Graph]]