RegisterBGIfont: Porovnání verzí

Z Delphi & Pascal (česká wiki)
Skočit na navigaci Skočit na vyhledávání
 
m (1 revízia: Unit Graph)
(Žádný rozdíl)

Verze z 4. 10. 2012, 17:01

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
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.