Графика Turbo Prolog v2.0
Имеется более 70 предикатов для работы с графикой. При работе с графикой в программе с помощью директивы компилятора include подсоединятеся текстовый файл GrapDecl.pro, в которм содержаться константы, испоьзуемые в графических предикатах (названия графических драйверов, режимы их работы, наименования цветов, стиль линий, коды возвращаемых ошибок, имена побитовых операций и другие).
Инициализация графического режима
initgraph (ГрДрайвер, ГрРежим, НовДрайвер, НовРежим, ПутьКДрайверу) (integer, integer, integer, integer, string) : (i, i, o, o, i)
Загружает драйвер сдиска или определяет уже загруженный драйвер и переводит систему в гарфический режим. Свзывает перменные Нов* с фактически загруженными драйверами гр. режимами. ПутьКДрайверу описывает каталог, в котором ищется графический драйвер (*.bgi). Если необходимый драйвер не найден, то поиск повторяется в текущем каталоге. если путь пустой, то драйвера должны быть в текущем каталоге. При выполнении предиката возможны ошибки со следующими кодами:
6001 – невозможно определить гарфическую карту
6002 – невозможно найти файлы драйвера
6003 – неправильный драйвер
6004 – не хватает памяти для загрузки драйвера.
Чаще всего initgraph применяется в паре с предикатом
detectgraph
(ГрДрайвер, ГрРежим)
(integer, integer) : (o, o)
include
"grapdecl.pro”
predicates
demo
clauses
demo:- detectgraph (GraphDriver,
GraphMode),
writef ("Определен гр. драйвер % и режим %\n”,
GraphDriver, GraphMode),
readchar (_), getmaxx(X), X2=X div 2,
getmaxy (Y), bar (0, 0, X2, Y), readchar (_),
closegraph.
goal
demo
/* Автоматическая инициализация
goal
initgraph (detect, 0, _, _, " "), … ,
closegraph.
Графические предикаты TP v2.0
arc (X, Y, НачУгол, КонУгол, Радиус) (integer, integer, integer, integer, integer)
(i, i, i, i, i) – рисует сектор круга.
bar (X1,
Y1, X2, Y2) (integer, integer, integer, integer) : (i, i, i, i) – рисует заполненную полосу с координатами
circle (X,
Y, Радиус) (integer,
integer, integer) (i, i, i) – окружность
cleardevice – очистка экрана и установление пера в (0, 0) в текущем окне.
clearviewport – чистит текущее окно
closegraph – отключает графическую ситему, при этом освобождается память, выделенная для графической системы и восстанавливается предыдущий режим экрана.
drawpoly (СписокВершин) : (integer* ) (i) – рисует контур многоугольгика. Координаты первой и последней точки должны совпадать.
ellipse (X,
Y, НачУгол, КонУгол, Храдиус, Урадиус) (integer, integer, integer, integer, integer,
integer) (i, i, i, i, i, i) – рисует
эллипс
fillellipse ( X, Y, Храдиус, Урадиус) – рисует и заполняет эллипс.
fillpoly (Список вершин) (integer *) – рисует и заполяет многоугольник
getarccoords (X, Y, Xнач, Унач, Хкон, Укон) (o, o, o, o, o, o) – получает координаты из последнего вызова arg5.
getaspectratio (Хотн, Уотн) (o, o) - определяет отношение горизонтального и вертикального масштаба графического режима.
getbkcolor (ЦветФона) (integer) (o) – возвращает текущий цвет фона.
getcolor (Цвет) (integer) : (o) – возвращает текущий основной цвет
getdefaultpalette (ПалитраУмолч) (integer) (o) – палитра, заданная по умолчанию.
getdrivername (ИмяДрайвера) (string) : (o) – возвращает имя загруженного драйвера.
getfillsettings (Шаблон, Цвет) (integer, integer) : (o, o) – информация о текущем шаблоне заполнения и цвете. Существует 11 заранее определенных шаблонов, описанных в модуел. Если шаблон = 12, то используется шаблон, определенный пользователем.
getfillpattern (Шаблон) (integer *) : (o) – возвращает шаблон заполнения, определенный пользователем с помощью setfillpattern. Шаблон имеет 8 сегментов, каждый 1 байт, отражающий на экране 8 пикселов. если бит равен 1 , то он отображается на экране.
getgraphmode (ГрРежим) (integer) : (o) – возвращает значение текущего графического режима. Когда вызывается предикат, режим уже должен быть установлен.
getimage (ЛевВерт, ПравНиз, ДвоичнМассив) (integer, integer, integer, integer, string) (i, i, i, i, o) – сохраняет битовое изображение, описанное прямоугольной областью экрана в памяти.
getmaxcolor (МаксЦвет) (integer) : (o) – максимальное значение цвета пиксела для текущего графического драйвера и режима.
getmaxx (X) (integer) : (o) – возвращает максимальную координату экрана по ОХ.
getmaxy (Y)
(integer) : (o)
getmoderange (ГрДрайвер, НизРежим, ВерхРежим) (integer, integer, integer) (i, o, o) – определить диапазон режима для указанного графического драйвера. Если в ГрДрайвер указан неправильно, то НизРежим=ВерхРежим=-1).
getpalettesize
(РазмерПалитры)
(integer) (integer *) : (o)
getpixel (X, Y, Цвет) (integer) (i, i, o) – возвращает цвет в (Х, У).
getX (X) (integer) : (o) – возвращает текущую позицию координаты Х относительно текущего окна.
getY (Y)
(integer) : (o)
graphdefaults – переключает все графические значения в значения по умолчанию.
imagesize (Лев,Верх, Прав, Низ, Размер) (integer, integer, integer, integer, integer) : (i, i, o, o, o) – определяют количество байтов для сохранения двоичного изображения прямоугольной области.
line (X1,
Y1, X2, Y2) (integer, integer, integer, integer) : (i, i, i, i) – рисует линию.
linerel (Dx, Dy) (integer, integer) : (i, i) – рисует линию на относительное расстояние из текущей позиции.
lineto (X, Y) (integer, integer) : (i, i) – рисует линию из текущей позиции в точку.
moverel (Dx, Dy) (integer, integer) : (i, i) – передвигает позицию на относительное расстояние.
moveto (X, Y) (integer, integer) : (i, i) – передвигает позицию в точку.
outtext (Строка) (string) : (i, i) – выводит на экран строку с текущей позиции.
outtextXY (X, Y, ТекстоваяСтрока) (integer, integer, string) (i, i, i) – отображает строку с заданной позиции.
putimage (X, Y, ДвоичнМассив, On) (integer, integer, string, integer) (i, i, i, i) – выводит на экран изображение, сохраненное с помощью getimage. On указывает, как вычислить цвет каждого выводимого символа. Результат этой операции зависит от пиксела, имеющегося на экране, и пиксела, который выводится.
Имя |
Значение |
Описание |
Copy_put |
0 |
копирование |
XOR_put |
1 |
исключающее ИЛИ |
OR_put |
2 |
ИЛИ |
AND_put |
3 |
И |
NOT_put |
4 |
отрицание |
putpixel
(X, Y, Цвет) (integer,
integer, integer) (i, i, i)
rectangle (Лев, Верх, Прав, Низ) (integer,
integer, integer, integer) (i, i, i, i)
restorecrtmode – переход на другой графический режим.
setpalette (СписокПалитры) (integer *) : (i) Изменяет всю палитру цветов. Размер зависит от графического драйвера.
Наиболее
употребительные цвета.
0 – черный, 1 – синий, 2 – зеленый, 63 – белый, 3 – голубой, 62 – желтый, 4 – красный, 5 – фиолетовый, 61 – малиновый, 20 – коричневый, 60 – розовый, 7 – светло-серый, 59 – ярко-голубой, 56 – темено-серый, 58 – ярко-зеленый, 57 – ярко-синий.
setaspectratio (Хотн, Уотн) (o, o) - устанавливает отношение горизонтального и вертикального масштаба графического режима.
setbkcolor (ЦветФона) (integer) (o) – устанавливает текущий цвет фона.
setcolor (Цвет) (integer) : (o) – устанавливает текущий основной цвет
setfillpattern (Шаблон) (integer *) : (o) – устанавливает шаблон заполнения, определенный пользователем с помощью setfillpattern. Шаблон имеет 8 сегментов, каждый 1 байт, отражающий на экране 8 пикселов. если бит равен 1 , то он отображается на экране.
setgraphmode (ГрРежим) (integer) : (o) – устанавливает значение текущего графического режима. Когда вызывается предикат, режим уже должен быть установлен.
getmaxcolor (МаксЦвет) (integer) : (o) – максимальное значение цвета пиксела для текущего графического драйвера и режима.
setviewport (Лев, Верх, Прав, Низ, Флаг) (integer, integer, integer, integer, integer) – (i, i, i, i, i) – устанавливает текущее графическое окно для вывода. Переменной флаг определяется возможность рисовать за границей окна (0 – нельзя).
setwritemode (РежимРис) (integer) : (i) – устанавливает режим рисования линии. Существует 2 константы:
Copy_put = 0 – цвет рисуемых линий будет накладываться на изображение на экране.
XOR_put = 1 – цвет будет смешиваться с изображением на экране.