Файл BGI — это графический интерфейс (Borland Graphic Interface) фирмы Borland. Он обеспечивает взаимодействие программ с графическими устройствами. Перед работой программы в графических режимах дисплея процедура InitGraph определяет тип адаптера, представленнгого в ПЭВМ, и загружает в память соответствующий BGI-драйвер, в котором определены возможные режимы работы.
Процедура CloseGraph выгружает графический драйвер из памяти и восстанавливает текстовый режим работы видеоадаптера. В описываемом модуле присутствуют также процедуры, позволяющие выходить из графического режима без выгрузки драйвера (RestoreCRTMode) и возвращаться обратно (SetGraphMode).
Если в составе ПЭВМ есть два монитора, то при определении графических адаптеров модуль Graph автоматически включает графический режим на том устройстве, которое позволяет получить наивысшее качество изображения.
Итак, в рабочем каталоге могут находиться следующие файлы:
CGA.BGI — драйвер для IBM CGA, MCGA;
EGAVGA.BGI — драйвер для IBM EGA, VGA; {405}
HERC.BGI — драйвер для Hercules;
ATT.BGI — драйвер для АТ&Т6300 (400 строк);
PC3270.BGI — драйвер для IBM 3270PC;
IBM8514.BGI — драйвер для IBM 8514.
Такой набор файлов необходим при составлении программ, которые будут работать практически на всех ПЭВМ, совместимых с ПЭВМ фирмы IBM. Если же такая задача не стоит, то достаточно иметь один файл, соответствующий представленному в используемой ПЭВМ графическому адаптеру.
Необходимо особо сказать об адаптере и драйвере IBM8514. Это адаптер высокого разрешения, позволяющий обрабатывать изображение размером 1024x768 точек и с палитрой в 256 цветов. Этот адаптер автоматически не определяется (точнее, он определяется, как адаптер VGA), поэтому при вызове процедуры инициализации он должен задаваться явно.
Все процедуры и функции модуля Graph можно разбить на функциональные группы:
1. Управление графическими режимами и их анализ (DetectGraph, InitGraph, CloseGraph, GraphDefaults, ClearDevice, InstallUserDriver, RegisterBGIDriver, RestoreCRTMode, SetGraphMode, SetWriteMode, GetGraphMode, GetModeRange, GetMaxMode, GetModeName, GelDriverName, GraphResult, GraphErrorMsg).
2. Рисование графических примитивов и фигур:
а) управление «текущим указателем» (MoveTo, MoveRel, GetMaxX, GetMaxY, GetX, GetY);