Скачиваний:
201
Добавлен:
17.06.2016
Размер:
2.69 Mб
Скачать

Несколько слов о полях вывода (графических окнах).

В графическом режиме Турбо Пролог позволяет создавать и управлять

полями вывода на экране. Если вы не знаете, что такое поле вывода, вам

надо прочитать этот краткий обзор.

В графическом режиме BGI вы можете определить прямоугольную область

на экране компьютера для вывода на нее графической информации. Эта об-

ласть называется полем вывода. Когда графическая программа выводит ка-

кой-либо графический рисунок, поле вывода рассматривается, как виртуаль-

ный экран. Остальная часть экрана (вне поля вывода) остается незадейство-

ванной. Поле вывода определяется в терминах экранных координат с помощью

вызова предиката setviewport.

Поля вывода BGI аналогичны окнам, но они небуферизированы и опреде-

ляются в терминах графического разрешения вашего персонального компьюте-

ра.

По умолчанию полем вывода считается весь экран, что эквивалентно вы-

зову:

setviewport(0,0,639,199) в режиме с высоким разрешением для CGA

setviewport(0,0,319,199) в режиме с низким разрешением для CGA

setviewport(0,0,639,349) в режиме с высоким разрешением для EGA

setviewport(0,0,639,199) в режиме с низким разрешением для EGA

Если вы определите поле вывода, то вы можете направить весь графи-

ческий вывод в это поле.

В отличие от графики в версии 1.x Турбо Пролога, где точки растра

отображались на экран, основанный на виртуальном экране размером

32000*32000, графический дисплей и координаты внутри поля вывода не вир-

туальны. Графические координаты BGI основаны на реальном количестве точек

растра внутри поля вывода и все координаты для предикатов, работающих в

графическом режиме, за исключением setviewport, задаются по отношению к

полю вывода (позиция пиксела (x,y) внутри поля). Верхний левый угол поля

вывода в графическом режиме BGI является началом координат (0,0).

Файл grapdecl.Pro

Для большего удобства при работе с BGI мы ввели файл GRAPDECL.PRO.

Этот файл содержит описания констант, используемых BGI. Он позволяет вам

использовать символические имена наиболее употребительных констант, а не

их численные значения. Например, в GRAPDECL.PRO определяются числа PI =

3.14159265359 и red = 4. Вам нужно загрузить файл GRAPDECL.PRO в редактор

Турбо Пролога и просмотреть его перед тем, как приступать к использованию

предикатов BGI.

Как начинать

Турбо Пролог может продемонстрировать возможности BGI системы. Де-

монстрационный файл называется GRDEMO.PRO. Перед тем, как продолжать оз-

накомление с данной главой, посмотрите демострационные примеры. Перед ис-

полнением демонстрационной программы вы должны иметь одну из установочных

графических карт и проверить наличие в текущем каталоге следующих файлов:

GRAPDECL.PRO

*.BGI

*.CHR

Если в каталоге вообще нет файлов *.BGI и *.CHR, измените константу

bgi_path в заголовке программы так, чтобы система BGI знала, где ей найти

драйверы графических устройств.

Инициализация и выключение системы bgi

Чтобы графическая система начала работать, вы должны вызвать первым

делом предикат initgraph. Этот предикат загружает соответствующий графи-

ческий драйвер и переключает систему в графический режим. Графическими

драйверами являются следующие файлы:

Таблица 17.1 Константы, описанные в GRAPDECL.PRO,

как драйверы

---------------------------------------------------------------

ОбЪектный Файл Имя Значение Описание

файл

---------------------------------------------------------------

CGAF.OBJ CGA.BGI cga_driver_far 1 CGA driver

CGAF.OBJ CGA.BGI cga_driver_far 2 MCGA driver

EGAVGAF.OBJ EGAVGA.BGI egavga_driver_far 3 EGA driver

EGAVGAF.OBJ EGAVGA.BGI egavga_driver_far 4 EGA64 driver

EGAVGAF.OBJ EGAVGA.BGI egavga_driver_far 5 EGAMONO driver

IBM8514F.OBJ IBM8514.BGI ibm8514_driver_far 6 IBM-8514 driver

HERCF.OBJ HERC.BGI herc_driver_far 7 Hercules driver

ATTF.OBJ ATT.BGI att_driver_far 8 ATT driver

EGAVGA.OBJ EGAVGA.BGI egavga_driver_far 9 VGA driver

PC3270F.OBJ PC3270.BGI pc3270_driver_far 10 PC-3270 driver

---------------------------------------------------------------

Графический драйвер, соответствующий графической карте вашего компь-

ютера, должен находиться в текущем каталоге, в противном случае вы должны

указать в initgraph маршрут доступа к месту расположения драйвера.

Вы можете заказать в initgraph использование конкретных графического

драйвера и режима или автоматическое определение подсоединенного видео

адаптера во время исполнения и выбор соответствующего драйвера. Если вы

заказываете автоматическое определение в initgraph, то он вызывает

detectgraph для определения графического драйвера и режима. Замечание:

если в вашем распоряжении IBM8514, то механизм автоматического распозна-

вания не работает. Более подробно смотрите пункт этой главы "Использова-

ние BGI с графической картой RGB".

Обычно предикат initgraph загружает графический драйвер, заказывая

память под него. Соответствующие файлы .BGI загружаются с диска уже во

время выполнения программы. Вместо этой схемы динамической загрузки можно

подсоединить файл графического драйвера (или некоторые из них) прямо к

вашей исполняемой программе, добавив директиву компилятора bgidriver в ее

заголовке.

После определения используемого графического драйвера (возможно с

помощью detectgraph), initgraph проверяет, был ли загружен этот драйвер

во время трансляции с помощью директивы bgidriver. В этом случае

initgraph использует драйвер непосредственно в памяти. В противном случае

initgraph заказывает память под драйвер и загружает файлы .BGI с диска.

Замечание: Новичкам не рекомендуется использовать директиву

bgidriver. Эта директива компилятора обсуждается далее в этой

главе.

Соседние файлы в папке Документация