Оператор
Оператор PCOPY
Экранные страницы позволяют отделить рисование следующего изображения от текущего показа. Когда кадр на скрытой странице готов, его переносят на видимую оператором PCOPY: он заменяет содержимое одной графической страницы содержимым другой.
Страницы и показ кадра
Оператор SCREEN выбирает страницу для рисования и страницу для показа. Если рисовать на странице 1, а показывать страницу 0, подготовленное изображение не появится до вызова PCOPY 1, 0, который копирует его на видимую страницу.
Оператор доступен в графических режимах SCREEN 1..10. В текстовом режиме SCREEN 0 и на холсте CANVAS экранные страницы оператора PCOPY недоступны.
Синтаксис
PCOPY <исходная страница>, <страница назначения>
Оба аргумента обязательны: сначала указывается источник, затем страница назначения.
Аргументы
| Часть | Описание |
|---|---|
<исходная страница> | Передайте номер исходной страницы от 0 до 3. Оператор PCOPY читает кадр именно из этой страницы. Передаваемое значение имеет тип INTEGER. |
<страница назначения> | Передайте номер страницы назначения от 0 до 3. Оператор PCOPY записывает копию кадра именно в эту страницу. Передаваемое значение имеет тип INTEGER. |
Что переносится
Копирование заменяет кадровый буфер страницы назначения содержимым исходной страницы. Переносятся индексный слой, полноцветный слой и палитра, поэтому результаты PSET, LINE, DRAWIMAGE, DRAWSPRITE и PALETTE сохраняются вместе.
Текстовый буфер PRINT отображается общим слоем поверх видимой страницы. Оператор PCOPY не копирует текстовый буфер и не переносит текст между страницами; LOCATE только задаёт текстовый курсор.
Правила и границы
Номера обеих страниц приводятся к INTEGER и должны лежать в 0..3; выход за этот диапазон сообщает MB3007, а вызов без активного графического режима — MB3010. Копирование страницы в саму себя допустимо.
Если страница назначения видима, копия появляется в окне; иначе она сохраняется на скрытой странице до её показа. Оператор не меняет выбранные номера активной и видимой страниц.
Копирование сохраняет графическую позицию, VIEW, WINDOW, VIEW PRINT, текстовый курсор и очереди ввода.
Диагностика
MB3010: графический режимSCREENне активен.MB3007: номер исходной страницы или страницы назначения находится вне диапазона0..3.
Пример
SCREEN 1, , 1, 0
CLS
LINE (20, 40)-(180, 40), 1
PALETTE 1, 196
PCOPY 1, 0
SCREEN 1, , 0, 0
PRINT POINT(20, 40)
Пример переносит линию и палитру со страницы 1 на страницу 0. Чтение после выбора скопированной страницы возвращает индекс 1, хотя палитра изменила видимый цвет линии.
Запускаемые примеры
Дополнительные программы для проверки страниц находятся в samples/operators/pcopy/.