19.1. Файлы BGI и содержимое модуля Graph
Файл BGI — это графический интерфейс (Borland Graphic Interface) фирмы Borland. Он обеспечивает взаимодействие программ с графическими устройствами. Перед работой программы в графических режимах дисплея процедура InitGraph определяет тип адаптера, представленнгого в ПЭВМ, и загружает в память соответствующий BGI-драйвер, в котором определены возможные режимы работы.
Процедура CloseGraph выгружает графический драйвер из памяти и восстанавливает текстовый режим работы видеоадаптера. В описываемом модуле присутствуют также процедуры, позволяющие выходить из графического режима без выгрузки драйвера (RestoreCRTMode) и возвращаться обратно (SetGraphMode).
Если в составе ПЭВМ есть два монитора, то при определении графических адаптеров модуль Graph автоматически включает графический режим на том устройстве, которое позволяет получить наивысшее качество изображения.
Итак, в рабочем каталоге могут находиться следующие файлы:
CGA.BGI — драйвер для IBM CGA, MCGA;
EGAVGA.BGI — драйвер для IBM EGA, VGA;
- 406 -
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);
б) собственно рисование (Line, LineTo, LineRel, Arc, GetArcCoords, Circle, Sector, Ellipse, Rectangle, DrawPoly);
в) стиль линий и коэффициент сжатия изображении (SetLineStyle, GetLineSettings, SetAspectRatio, GetAspectRatio).
3. Управление цветами и шаблонами заполнения (SetColor, GetColor, SetBkColor, GetBkColor, GetMaxColor, GetPalette, GetPaletteSize, GetDefaultPalette, SetPalette, SetAllPalette, SetRGBPaletle, SetFillStyle, SetFillPattern, GetFillPattern, GetFillSettings, SetGraphBufSize, FillPoly, FillEllipse, FloodFill, PicSlice, Bar, Bar3D).
4. Битовые операции (PutPixel, GetPixel, ImageSize, GetImage, PutImage).
5. Управление страницами (SetActivePage, SetVisualPage).
6. Графические окна ( вьюпорты ) (SetViewPort, GetViewSettings, ClearViewPort).
- 407 -
7. Управление выводом текста (RegisterBGIFont, InstallUserFont, OutText, OutTextXY, SetTextStyle, SetTextJustify, SetUserCharSize, GetTextSettings, TextHeight, TextWidth).