Функция RegisterBGIFont()

Модуль GRAPH

Передает графической системе указатель на шрифт.

Объявление:

Function RegisterBGIFont(Font : Pointer) : Integer;

Режим:

Protected,  Real

Замечание:

Если происходит ошибка, функция возвращает значение меньшее нуля. Возможные коды ошибок - grError, grInvalidFont и grInvalidFontNum. При отсутствии ошибок, возвращается внутренний номер шрифта. Эта функция дает возможность пользователю загрузить файл шрифта и зарегистрировать его, передавая его расположение в памяти в RegisterBGIfont. При вызове SetTextStyle, будет использоваться зарегистрированный шрифт, вместо загружанмого с диска модулем Graph. Зарегистрированный пользователем шрифт может быть загружен с диска в кучу (heap), или преобразован в *.OBJ файл (с помощью BINOBJ.EXE) и прилинкован к *.EXE Для загрузки и регистрации файла шрифта имеются несколько причин: Во-первых Graph может хранить только один штриховой шрифт в памяти в определенный момент времени. Если ваша программа должна быстро чередовать штриховые шрифты, вы можете зарегистрировать нужные вам шрифты самостоятельно в начал программы. При этом Graph уже не будет загружать и выгружать шрифты каждый раз при обращении к SetTextStyle. Во-вторых, при желании, вы можете включить файлы шрифта непосредственно в ваш *.EXE файл. Таким образом, необходимые для работы вашей программы файлы шрифта, будут встроены в нее. Встроить файл шрифта в вашу программу можно так: 1. Запустить программу binobj.exe на файле шрифта. 2. Скомпоновать полученный *.OBJ файл с вашей программой. 3. Зарегистрировать файл шрифта перед вызовом InitGraph. Для более детального объяснения и примера вышенаписанного, смотри комментарии в программе BGILINK.PAS на дистрибутивном диске. Документация по утилите BINOBJ доступна в файле UTIL.DOC (в архиве ONLINE.ZIP) на вашем дистрибутивном диске.

Пример:

Uses Graph;
 Var Driver, Mode : Integer;
            FontF : File;
            FontP : Pointer;
 Begin
  { Открываем файл шрифта, регистрируем }
  Assign(FontF, 'TRIP.CHR');
  Reset(FontF, 1);
  GetMem(FontP, FileSize(FontF));
  BlockRead(FontF, FontP^, FileSize(FontF));
  If RegisterBGIFont(FontP) < 0 Then
   Begin
    WriteLn('Ошибка регистрации шрифта: ', GraphErrorMsg(GraphResult));
    Halt(1);
  End;
  { Инициализируем графику }
  Driver:=Detect;
  InitGraph(Driver, Mode, 'C:\BP\BGI'); { Путь к BGI драйверам }
  If GraphResult < 0 Then Halt(1);
  ReadLn;
  { Выбираем установленый шрифт }
  SetTextStyle(TriplexFont, HorizDir, 4);
  OutText('Triplex loaded by user program');
  MoveTo(0, TextHeight('a'));
  ReadLn;
  { Выбираем шрифт, загружаемый с диска }
  SetTextStyle(SansSerifFont, HorizDir, 4);
  OutText('Your disk should be spinning..');
  MoveTo(0, GetY + TextHeight('a'));
  ReadLn;
  { Перевыбираем фонт, уже находящийся в памяти }
  SetTextStyle(TriplexFont, HorizDir, 4);
  OutText('Back To Triplex');
  ReadLn;
  CloseGraph;
 End.