§ 6.1. Графічні бібліотеки мови Паскаль
За час, що минув після створення мови програмування Паскаль, було написано величезну кількість допоміжних підпрограм, які можна використовувати і в прикладних програмах. Такі готові підпрограми зібрані в бібліотеки і оформлені у вигляді модулів. Модуль - це спеціальним чином оформлений програмний код, який не може бути виконаний самостійно, але може бути приєднаний і використаний будь-якою програмою. Назва наявних в мові Паскаль модулів, найменування складових їх підпрограм, можна знайти в літературі.
Необхідність використовувати бібліотеки підпрограм виникає, наприклад, при малюванні на екрані. При цьому необхідно зазвичай використовувати бібліотеки Graph і С rt. Для підключення цих бібліотек на початку програми потрібно вказати їх імена в директиві uses, наприклад:
Модуль CRT містить процедури і функції, що забезпечують управління текстовим режимом роботи екрану, роботу зі звуком, процедури очищення екрана і роботи з клавіатурою. Модуль GRAPH містить великий набір типів, констант, процедур і функцій (понад 50) для управління графічним режимом роботи екрану.
Зазначені бібліотеки містять десятки процедур і функцій, нижче наведено опис деяких з них. Більш повний опис цих модулів можна знайти в літературі. У наведеному нижче описі зазначено кількість і тип параметрів і тип функцій, щоб програміст зміг зорієнтуватися, які дані можна використовувати при виклику цих підпрограм. Однак при написанні операторів виклику, типи не вказуються, як показано в прикладах в наступному параграфі.
putpixel (x. y.integer; color.word) - малює точку з координатами (х, у) і кольором color.
line (x 1, y 1, x 2, y 2: integer) - малює лінію, що починається в точці (х1, у1) і закінчується в точці (х2, у2).
rectangle (x 1, y 1, x 2, y 2: integer) - малює прямокутник, (х1, у1) - координати лівого верхнього кута, (х2, у2) - правого нижнього.
bar (x1, y1, x2, y2) - малює зафарбований прямокутник, (х1, у1) - координати лівого верхнього кута, (х2, у2) - правого нижнього. Колір і шаблон зафарбування встановлюється процедурами SetFillStyle і SetFillPattern.
circle (x. y.integer; R.word) - малює окружність з центром в точці (х, у) і радіусом R.
arc (x. y: integer; stangle. endangle. R: word); - малює дугу окружності, з кута stangle до endangle. з радіусом R. використовуючи точку з координатами (х, у), як центр окружності.
ellipse (x. y.integer; stangle. endangle. xr. xy.word) - малює дугу еліпса з центром в точці (х, у), півосями xr. yr; stangle і endangle - початковий і кінцевий кути дуги (описуються від горизонтальної осі проти годинникової стрілки).
pieslice (x. y.integer; stangle. endangle. R. word) - будує сектор кола, зафарбований поточної штрихуванням і кольором заповнення (встановлюється процедурами setfillstyle і setfillpattern). (Х, у) - координати центру сектора кола; stangle і endangle - початковий і кінцевий кути сектора, відлічувані проти годинникової стрілки від горизонтальної осі, спрямованої вправо; R - радіус сектора.
setcolor (color.word) - встановлює колір лінії, параметр color приймає значення в діапазоні від 0 до 15.
setbkcolor (color. word); -встановлює колір фону color. номера кольорів фону знаходяться в діапазоні від 0 до 15.
floodfill (x. y. integer; border. word); -закрашівает замкнуту область, використовуючи стиль і колір зафарбовування, встановлені процедурами setfillstyle і setfillpattern. Точка з координатами (х, у) - початкова точка всередині замкнутої області, з якої почнеться зафарбування. Зафарбовується область, обмежена кольором з номером border.
setfillstyle (pattern. word; color. word); - встановлює колір Сolor і стиль зафарбовування рattern (ціле число 0-12).
setfillpattern (pattern. fillpatterntype; color. word); - встановлює колір Сolor і шаблон зафарбування рattern. визначений користувачем через тип fillpatterntype наступним чином:
type fillpatterntype = array [1..8] of byte;
outtextxy (x, y: integer; textstring: string); - відображає строковий параметр textstring з позиції (x, y) графічного екрану.
Розшифровка стилів і шаблонів зафарбовування процедури setfillstyle
Параметр pattern може приймати таке значення:
0 - EmptyFill - НЕ зафарбовувати (фон), 1 - SolidFill - суцільна зафарбування, 2 - LineFill - штрихування горизонтальними лініями, 3 - LtSlashFill - штрихування косими лініями //////, 4 - SlashFill - потовщені лінії ///// //////, 5 - BkSlashFill - потовщені лінії \\\\\\\\\\\\, 6 - LtBkSlashFill - штрихування \\\\\\\\\\\, 7 - HatchFill - заповнення ++ ++++, 8 - XhatchFill - заповнення ХХХХХХХХХ, 9 - InterleaveFill - заповнення ########, 10 - WideDotFill - заполнненіе рідкісними точками, 11 - CloseDotFill - заповнення частими точками, 12 - UserFill - візерунок, який визначається користувачем . В останньому випадку, для визначення типу зафарбовування необхідно використовувати процедуру setfillpattern.
Завдання квітів в графічному режимі можна виконувати різними способами:
· Вказівка номера кольору цифрами від 0 до 15;
· Вказівка назви кольору по-англійськи (без лапок);
Таблиця 6.1. Коди і назви кольором для програмування в Pascal
Більш повний опис процедур модуля Graph дано в додатку М.
delay (ms: word); - процедура призупиняє виконання програми на ms мілісекунд.
keypressed. boolean; - процедура повертає значення TRUE. якщо була натиснута будь-яка клавіша на клавіатурі і FALSE - якщо немає.
readkey. char; - функція зчитує символ, відповідний натиснутій клавіші. Якщо натиснута функціональна клавіша, в перший раз функція приймає значення # 0, вдруге - значення коду цієї клавіші. Якщо жодна клавіша не було натиснуто, то функція призупиняє роботу програми і чекає натиснення клавіші.
Більш повний опис процедур модуля Crt дано в додатку Л.
Інші процедури даних модулів можна знайти в літературі з мови Паскаль, а також в додатках до даного посібника.