Axiom Справочник языка

Оператор

Оператор SCREEN

Пока программа не выбрала экран, её текст идёт в консоль. Оператор SCREEN открывает отдельное окно программы и задаёт его режим: SCREEN 0 даёт текстовую сетку, SCREEN 1..10 — палитровую графику. Тот же оператор выбирает активную и видимую экранные страницы.

Окно программы вместо консоли

До вызова SCREEN операторы PRINT и INPUT используют текстовую область среды исполнения. После вызова вывод и ввод переходят в открытое экранное окно, и приглашение INPUT вместе с набираемым ответом принадлежат этому окну: консоль IDE не показывает их копию и не принимает ответ, пока ввод принадлежит экранному режиму.

Вызов создаёт поверхность, к которой обращаются экранные операторы и функции. Текстовый режим и графические режимы предоставляют разный набор возможностей, поэтому режим выбирают по задаче: вывод по текстовым ячейкам, рисование индексными цветами или подготовка изображения на экранных страницах.

Окно SCREEN заменяет ранее открытый холст CANVAS: для этих поверхностей действуют разные правила цвета, координат и показа кадра.

Синтаксис

SCREEN <режим>
SCREEN 0
SCREEN <режим>, , <активная страница>
SCREEN <режим>, , <активная страница>, <видимая страница>

Форма с одним аргументом выбирает режим. В формах с дополнительными аргументами программа одновременно выбирает активную и видимую страницы.

Режим, активная и видимая страницы

ЧастьОписание
<режим>Передайте целое число от 0 до 10. Значение 0 выбирает текстовый режим. Значения 1..10 выбирают графический режим. Передаваемое значение имеет тип INTEGER.
<активная страница>Передайте необязательный номер активной графической страницы от 0 до 3. Именно в эту страницу идут операторы рисования и чтение цвета через функцию POINT(x, y). Передаваемое значение имеет тип INTEGER.
<видимая страница>Передайте необязательный номер видимой графической страницы от 0 до 3. Именно эта страница показывается в окне программы. Передаваемое значение имеет тип INTEGER.

Параметр colorSwitch зарезервирован и не поддерживается. При выборе страниц его место оставляют пустым: SCREEN 1, , 1, 0.

Режимы экрана

ФормаРазмер в пикселяхСтолбцы текстаСтроки текстаНазначение
SCREEN 0640 x 3008025Текстовое окно без графических операторов рисования.
SCREEN 1320 x 2004016Малый графический экран.
SCREEN 2640 x 4808040Графический экран 4:3.
SCREEN 3800 x 60010050Увеличенный графический экран 4:3.
SCREEN 41024 x 76812864Крупный графический экран 4:3.
SCREEN 51280 x 72016060Широкий графический экран.
SCREEN 61366 x 76817064Широкий графический экран для распространённого размера ноутбуков.
SCREEN 71600 x 90020075Широкий графический экран.
SCREEN 81920 x 108024090Графический экран Full HD.
SCREEN 92560 x 1440320120Графический экран QHD.
SCREEN 10адаптивный 16:9SCREENWIDTH() \ 8SCREENHEIGHT() \ 12Адаптивный широкий экран по рабочей области текущего монитора.

Текстовый режим

Вызов SCREEN 0 создаёт текстовое окно с видимой сеткой 80 x 25. В нём доступны текстовый вывод и оператор INPUT; оператор LOCATE и графическое рисование требуют режима SCREEN 1..10.

Переход на новую строку из последней видимой строки прокручивает текст вверх. В Electron IDE предыдущие строки остаются доступны через вертикальную полосу прокрутки.

Графические режимы

Режимы 1..10 предоставляют графический экран. На нём работают PSET, PRESET, LINE, CIRCLE, PAINT, DRAW, а также VIEW, WINDOW, PCOPY, GET, PUT, COLOR, LOCATE и связанные функции. Текст рисуется поверх изображения: ячейка занимает 8 x 12 пикселей, а размер сетки определяется размером выбранного экрана.

Для режима 10 среда выбирает наибольшую клиентскую область с пропорцией 16:9, помещающуюся в рабочей области монитора. Функции SCREENWIDTH() и SCREENHEIGHT() сообщают полученные размеры.

В Electron IDE режимы SCREEN 1..10 используют DirectX. Если подходящее аппаратное устройство недоступно, среда выбирает программное устройство WARP; палитровые индексы, экранные страницы, текст и правила координат при этом сохраняются. Оператор PRESENT для SCREEN не требуется. Проверка страниц, переназначенной палитры, обмена пикселями и ввода: directx_pages_input.axm.

Страницы и подготовка кадра

Активная страница получает рисование, а видимая страница отображается в окне. Если их номера различаются, программа может подготовить изображение без показа промежуточных изменений, затем скопировать его оператором PCOPY. Рисование на скрытой странице становится видимым после её выбора для показа либо копирования на видимую страницу.

Повторный выбор режима

При повторном выборе того же графического режима с теми же размерами среда сохраняет пиксели страниц и их палитры, затем выбирает переданные активную и видимую страницы. Каждый вызов SCREEN сбрасывает VIEW, WINDOW, графическую позицию, цвет последующего текста и текстовый курсор; текстовый буфер очищается. Смена номера графического режима создаёт новые страницы и дополнительно сбрасывает палитру, настройки VIEW и WINDOW в состояние нового режима.

После SCREEN 0 вызов SCREEN 1..10 подключает новое окно к действующему исполнителю DirectX, поэтому рисование и последующий INPUT относятся к новой поверхности. Для SCREEN 10 IDE выбирает рабочую область монитора, на котором находится её собственное окно; перенос окна IDE учитывается при следующем выборе режима. Вычисленный размер также ограничен 16384 пикселями по каждой стороне и площадью 16 777 216 пикселей; на очень большом мониторе режим сохраняет пропорции в этих пределах.

Проверка аргументов

Режим и номера страниц приводятся к INTEGER. Допустимые номера режима — целые значения от 0 до 10 включительно, обе страницы нумеруются от 0 до 3 включительно. Если задана только активная страница, она становится и видимой.

Второй аргумент SCREEN зарезервирован: явное значение в этой позиции запрещает компиляцию с MB2003. Для страниц оставьте вторую позицию пустой, как в записи SCREEN 1, , 1, 0. SCREEN 0 открывает текстовую поверхность; COLOR, LOCATE, VIEW PRINT и пиксельные операторы требуют графический SCREEN 1..10.

Диагностика

  • MB3007: режим SCREEN, активная страница или видимая страница имеют недопустимое значение.
  • MB3005: хост не смог создать экранное окно или выбранный экранный режим недоступен.

Пример

SCREEN 1, , 1, 0
COLOR 15, 1
CLS
PSET (20, 20), 12
PCOPY 1, 0
SLEEP

Программа рисует пиксель на странице 1, сохраняя на экране страницу 0. Экранный текст составляет общий слой поверх видимой страницы и не скрывается выбором другой активной страницы. Оператор PCOPY показывает подготовленное изображение, а оператор SLEEP оставляет его доступным до нажатия клавиши.

См. также