Модуль Graph
Модуль Graph являє собою бібліотеку підпрограм, що забезпечує повне управління графічними режимами різних адаптерів дисплеїв: CGA, EGA, VGA і т.д. Бібліотека містить більше п'ятдесяти графічних процедур і функцій, як базових (Малювання точок, ліній, кіл тощо), так і розширюють можливості базових (Багатокутники, заповнення фігур, висновок тексту та ін.) p> Щоб запустити програму, яка використовує процедури модуля Graph, необхідно, щоб у робочому каталозі знаходилися соответстственно графічні драйвери (файли з розширенням. BGI), а якщо програма використовує ще й штрихові шрифти, то необхідно, щоб там же знаходилися файли шрифтів (з розширенням. CHR). p> Крім того, системі програмування (компілятору) повинен бути доступний модуль GRAPH.TPU (він не входить до складу файлу TURBO.TPL, а спочатку знаходиться в архіві BGI.ARC).
Файли BGI і вміст модуля Graph
Файл BGI - це графічний інтерфейс (Borland Graphic Interface) фірми Borland. Він забезпечує взаємодія програм з графічними пристроями. Перед роботою програми в графічних режимах дисплея процедура InitGraph визначає тип адаптера, представленого в ПК, і завантажує в пам'ять відповідний BGI-драйвер, в якому визначено можливі режими роботи.
Процедура CloseGraph вивантажує графічний драйвер з пам'яті і відновлює текстовий режим роботи відеоадаптера. У описуваному модулі присутні також процедури, що дозволяють виходити з графічного режиму без вивантаження драйвера (RestoreCRTMode) і повертатися назад (SetGraphMode). p> Отже, в робочому каталозі можуть перебувати такі файли:
CGA.BGI
- драйвер IBM CGA, MCGA;
EGAVGA.BGI
- драйвер IBM EGA, VGA;
HERC.BGI
- драйвер Hercules;
ATT.BGI
- драйвер АТ & Т6300 (400 рядків);
PC3270.BGI
- драйвер IBM 3270PC;
IBM8514.BGI
- драйвер для IBM 8514.
Такий набір файлів необхідний при складанні програм, які будуть працювати практично на всіх ПК, сумісних з ПК фірми IBM. Якщо ж таке завдання не стоїть, то досить мати один файл, відповідний представленому в використовуваному ПК графічному адаптеру.
Всі процедури і функції модуля Graph можна розбити на функціональні групи:
1) Управління графічними режимами та їх аналіз (DetectGraph, InitGraph, CloseGraph, GraphDefaults, ClearDevice, InstallUserDriver, RegisterBGIDriver, RestoreCRTMode, SetGraphMode, SetWrifeMode, GetGraphMode, GetModeRange, GetMaxMode, GetModeName, GetDriverName, GraphResuIt,, GraphErrorMsg). p> 2) Малювання графічних примітивів і фігур:
a) управління В«Поточним покажчикомВ» (MoveTo, MoveRel, GetMaxX, GetMaxY, GetX, GetY);
b) власне малювання (Line, LineTo, LineRel, Arc, GetArcCoords, Circle, Sector, Ellipse, Rectangle, DrawPoly);
c) стиль ліній і коефіцієнт стиснення зображення (SetLineStyle, GetLineSettings, SetAspeclRatio, GetAspectRatio). p> 3) Управління квітами і шаблонами заповнення (SetColor, GetColor, SetBkColor, GetBkColor, GetMaxColor, GetPalette, GetPaletteSize, GetDefaultPalette, SetPalette, SetAllPalette, SetRGBPalette, SetFillStyle, SetFillPattern, GetFillPattern, GetFillSettings, SetGraphBufSize, FillPoly, FillEIIipse, FloodFill, PicSlice, Bar, Bar3D). p> 4) Бітові операції (PutPixel, GetPixel, ImageSize, Getlmage, Putlmage). p> 5) Управління сторінками (SetActivePage, SetVisualPage). p> 6) Графічні вікна (вьюпорта) (SetViewPort, GetViewSettings, ClearViewPort). p> 7) Управління виведенням тексту (RegisterBGIFont, lnstallUserFont, OutText, OutTextXY, SetTextStyle, SetTextJustify, SetUserCharSize, GetTextSettings, GetTextHeight, TextWidth). br/>
Управління графічними режимами. Ініціалізація і закриття графічного режиму
Процедура ініціалізації InitGraph . Найпростіша програма, використовує графіку, обов'язково повинна містити блок виклику процедур ініціалізації графічного режиму і звернення до процедури його закриття. Такий блок ініціалізує режим, перевіряє правильність переключення і, якщо все операції пройшли успішно, допускає подальшу роботу програми. Процедура ініціалізації оголошена таким чином:
InitGraph ( VAR GraphDriver ; {тип адаптера}
VAR GraphMode Integer; {режим графіки }
DriverPath: String); {шлях до драйверу }
У модулі Graph визначені константи для завдання виду адаптера параметром GraphDriver перед вик...