АТРИБУТЫ_
INVERT, FADE, SWAP, CHANGE
С одним из операторов, работающих с атрибутами
экрана, мы уже встретились в предыдущем разделе. Это оператор CLW,
который позволяет очищать окно с заменой атрибутов. Похожие действия
выполняют и некоторые другие операторы, предусматривающие, наряду с
выполнением своей основной функции, модификацию атрибутов: SCROLL, PAN,
GET, PUT. Эти операторы будут рассмотрены в тех разделах описания, где
речь пойдет об их основном назначении. Сейчас же остановимся на
операторах MegaBasic, занимающихся исключительно обработкой атрибутов:
INVERT, FADE, CHANGE и SWAP. Сразу отметим, что действие всех
перечисленных операторов распространяется на весь экран, то есть они
игнорируют деление экрана на окна.
INVERT
инвертирует изображение на экране, заменяя цвет фона на цвет тона и наоборот. Используется без параметров.
Применение оператора
FADE_a
несколько сложнее, но зато действие его гораздо
эффектнее. Этот оператор имеет один параметр, который задает значение
байта атрибутов. Оператор просматривает значения всех атрибутов экрана71
и уменьшает на единицу те из них, которые не совпадают с а. Операция
выполняется циклически до тех пор, пока все значения атрибутов не
сравняются с а. Эта процедура вызывает появление на экране довольно
интересных цветовых эффектов.
Рабочее значение параметра а может находиться в
пределах от 0 до 255, но оператор FADE «проглатывает» и
любые другие числа, реагируя при этом только на остаток от их деления
на 256.
Операторы CHANGE_a1 ,а2 и SWAP_a2,a1
также осуществляют замену атрибутов, но используют по два параметра, каждый из которых представляет собой значение атрибута.
Оператор
SWAP_M,»2
служит для замены атрибута а2 атрибутом а1:
находит на экране знакоместа с атрибутами, равными значению.параметра
«2, и устанавливает в них новые атрибуты, соответствующие
значению параметра al. Скажем, SWAP_BIN 00000001.BIN 1000000172 включит FLASH в тех знакоместах экрана, в которых изображение состоит из синих точек на черном фоне.
Оператор
CHANGE_a1,a2
производит поиск и замену сразу нескольких
атрибутов. Работает CHANGE следующим, довольно нетривиальным, образом.
Он изменяет по всему экрану те биты атрибутов, которые не совпадают в
параметрах а1 и а2. Так, если воспользоваться теми же значениями
параметров, что и в приведенном выше примере с оператором SWAP, то есть
выполнить CHANGE_BIN 00000001.BIN 10000001, то FLASH включится по всему
экрану. Зато если потребуется, к примеру, перекрасить желтым цветом
все, что изображено синим, красным или фиолетовым, независимо от фона,
то эту задачу можно решить, введя CHANGE_BIN 00000011,BIN 00000110. Из
операторов SWAP пришлось бы в этом случае составлять длинную цепочку,
учитывающую все варианты фона.