logo
TurboProlog / Документация / TOM_2

Lineto/2 Графика

Назначение Рисует линию из текущей позиции в точку (X,Y)

Обращение lineto(X,Y)

Домены (integer,integer)

Шаблоны описания (вх,вх)

аргументов

Описание lineto рисует линию из текущей позиции к точке (X,Y),

значение текущей позиции будет равно (X,Y).

Смотри getlinesetting,line,linerel,setcolor

makewindow/8

Назначение Создает новое окно на экране с указанными границами

Обращение makewindow(НомОкна,АтрЭкр,АтрРамки,СтрРамки,

Строка,Столбец,Высота,Ширина)

Домены (integer,integer,integer,string,

integer,integer,integer,integer)

Шаблоны описания (вх,вх,вх,вх,вх,вх,вх,вх) и

аргументов (вых,вых,вых,вых,вых,вых,вых,вых)

Описание (вх,вх,вх,вх,вх,вх,вх,вх)

makewindow определяет область экрана как окно.

Аргументы в makewindow следующие:

НомОкна Каждое окно определяется номером НомОкна,

который вы потом используете, выбирая

активное окно.

АтрЭкр Атрибут экрана окна.

АтрРамки Если АтрРамки не является нулем,

makewindow рисует границу вокруг

описываемой области (обрамляя окно).

СтрРамки Строка, которая будет помещаться в центре

линии верхней границы контура рамки. Если

СтрРамки = "" (пустая строка), текста не

будет в верхней линии рамки окна.

Если текст строки шире, чем граница, он

будет обрезаться.

Строка Определяет вертикальные координаты

верхнего левого угла относительно всего

экрана.

Столбец Определяет горизонтальные координаты

верхнего левого угла относительно всего

экрана.

Высота Высота экрана, измеряемая в количестве

строк.

Ширина Ширина экрана, измеряемая в количестве

колонок.

Как только окно определено, экран очищается и курсор

перемещается в верхний левый угол окна. Комбинация

параметров Строка и Высота, Столбец и Ширина

определяет окно, которое располагается полностью

внутри размеров экрана. Если какая-либо часть окна

выходит за пределы экрана, то активизируется

программа ошибок. Размер экрана может быть иэменен с

помощью стандартного предиката textmode.

(вых,вых,вых,вых,вых,вых,вых,вых)

Этот шаблон аргументов позволяет определить текущие

значения текущего окна.

Неудачное Никогда не дает.

завершение

Ошибки 1000 Аргументы в 'makewindow'неверные.

1016 Максимальный номер окна превосходит границы.

Пример

predicates

nondeterm repeat

delay(integer)

framewindow(112), delay(1000), framewindow(7),

keypressed.

clauses

repeat.

repeat :- repeat.

delay(0):-!.

delay(N):-N1=N-1,delay(N1).

makewindow/11

Назначение Создает окно с заданной пользователем рамкой

Обращение makewindow(НомОкна,АтрЭкр,АтрРамки,СтрРамки,

Строка,Столбец,Высота,Ширина,

ЧиститьОкно,ПозСтрРамки,ЗнакиГраницы)

Домены (integer,integer,integer,string,

integer,integer,integer,integer,

integer,integer,string)

Шаблоны описания (вх,вх,вх,вх,вх,вх,вх,вх,вх,вх,вх)

аргументов (вых,вых,вых,вых,вых,вых,вых,вых,вых,вых,вых)

Описание Используя эту версию makewindow вы можете задавать

символы для рамки окна, расположение заголовка окна,

необходимость чистить окно после его создания. Первые

восемь аргументов аналогичны аргументам в makewindow/

8. Дополнительные три аргумента в makewindow

следующие:

ЧиститьОкно Определяет будет ли чиститься окно

после его создания:

0 = Не чистить окно.

1 = Чистить окно.

ПозСтрРамки Определяет, где будет размещаться

заголовок окна (внутри верхней линии

рамки окна):

-1 = Заголовок в центре

N = Размещает заголовок с

указанной позиции

ЗнакиГраницы Описывают,как рисовать рамку окна;

этот аргумент состоит строго из шести

символов, которые означают следующее:

1 символ Верхний левый угол

2 символ Верхний правый угол

3 символ Нижний левый угол

4 символ Нижний правый угол

5 символ Горизонтальная линия

6 символ Вертикальная линия

Например:

"\218|191\192\217\196\179" -граница из одной линии.

"\201\187\200\188\205\186" -граница из двух линий.

"++++|-" -другой вариант описания границы.

Неудачное Никогда не дает.

завершение

Ошибки 1000 Аргументы в makewindow неверные.

1016 Максимальный номер окна превосходит границы.

Пример

goal

makewindow(1,7,7,"Окно 1",

1,1,10,40,1,0,"\176\176\176\176\176\179"),

makewindow(2,7,7,"Окно 2",6,20,10,

40,0,30,"******"),

readchar(_),

window_str(X), % Читает содержимое экрана

removewindow,

readchar(_),

write(X),readchar(_).

membyte/3

Назначение Читает или записывает байты из или в физическую

память

Обращение membyte(Сегмент,Смещение,Байт)

Домены (integer,integer,integer)

Шаблоны описания (вх,вх,вх) , (вх,вх,вых)

аргументов

Описание (вх,вх,вх)

Когда переменная Байт является связанной

(конкретизированной), membyte записывает значение

байта в адресуемую ячейку памяти, определяемую

переменными Сегмент и Смещение; адрес вычисляется как

((Сегмент * 16) + Смещение).

(вх,вх,вых)

Когда переменная Байт является свободной, membyte

читает значение байта из адресуемой ячейки памяти,

определяемой переменными Сегмент и Смещение; адрес

вычисляется как ((Сегмент * 16) + Смещение).

Неудачное Никогда не дает.

завершение

Ошибки Нет ошибок.

Пример

predicates

test_o

test_i

clauses

test_o:-

A="Добрый День",

ptr_dword(A,Seg,Off), Off1=Off+8,

membyte(Seg,Off1,CH),

writef("\nСимвол1=%c",CH).

test_i:-

str_len(S,13),

ptr_dword(S,Seg,Off), Off1=Off+8,

membyte(Seg,Off1,'Д'),

writef("\nСтрока=|%|",S).

goal

test_o, test_i.

memword/3

Назначение Читает или записывает слова из или в физическую

память

Обращение memword(Сегмент,Смещение,Слово)

Домены (integer,integer,integer)

Шаблоны описания (вх,вх,вх) , (вх,вх,вых)

аргументов

Описание (вх,вх,вх)

Когда переменная Слово является связанной

(конкретизированной), memword записывает значение

слова в адресуемую ячейку памяти, определяемую

переменными Сегмент и Смещение; адрес вычисляется как

((Сегмент * 16) + Смещение).

(вх,вх,вых)

Когда переменная Слово является свободной, memword

читает значение слова из адресуемой ячейки памяти,

определяемой переменными Сегмент и Смещение; адрес

вычисляется как ((Сегмент * 16) + Смещение).

(Значения в диапазоне от 32,768 до 65,536

представлены как отрицательные числа).

Неудачное Никогда не дает.

завершение

Ошибки Нет ошибок.

Пример

predicates

test_o test_i

clauses

test_o:-

A="Добрый день",

ptr_dword(A,Seg,Off), Off1=Off+8,

memword(Seg,Off1,Word),

bitand(Word,$ff,CH1), bitright(Word,8,CH2),

writef("\nСимвол1=%c, Символ2=%c",CH1,CH2).

test_i:-

str_len(S,13),

ptr_dword(S,Seg,Off), Off1=Off+8,

WORD='Д'+'е'*$100,

memword(Seg,Off1,Word),

writef("\nСтрока=|%|",S).

goal

test_o, test_i.