destination и размещен в этом буфере, начиная с элемента (u, v). Хотя существует множество нюансов, на которые следует обращать внимание при программировании подобной операции (например, а что произойдет, если блок выходит за границы буфера-приемника), суть ее состоит в том, что вся процедура выполняется как единая операция, которая изменяет содержимое буфера-приемника. Обратите внимание на то, что с точки зрения аппаратной реализации выполняемые при этом действия никак не связаны с характеристиками, затрагивающими обработку геометрических объектов. Следовательно, аппаратные средства для выполнения операций с битовыми блоками имеют совершенно другую архитектуру, чем аппаратные средства реализации конвейерной обработки геометрических объектов.
9.5.1. Режимы записи битовых блоков Второе отличие операций с битовыми блоками от обычных операций с ячейками памяти состоит в том, что содержимое соответствующего блока в буфере-приемнике после выполнения операции может быть изменено множеством способов, т.е. имеется множество режимов записи информации в буфер-приемник. При обычных операциях записи в память новое значение заменяет значение, хранившееся в заданной ячейке (или блоке) ранее. При выполнении в программе, написанной на языке С, оператора такого вида (оператора присваивания): у=х; значение из ячейки памяти х дублируется в ячейке памяти у.
Но это не единственно возможный вариант передачи информации в буфер-приемник. Предположим, что нам нужно поразрядно обрабатывать информацию в буферах. Рассмотрим модель, представленную на рис. 9.20. Обозначим через s выбранный бит буфера-источника, а соответствующий ему бит в буфере-приемнике - через d. Если возможно перед записью в буфер-приемник прочесть текущее значение бита d, то изменение информации в буфере-приемнике можно описать функцией преобразования:
d^-Ads).
Операции с изображением на уровне растрового представления
Существует 16 вариантов совместной обработки двух одноразрядных двоичных чисел - 16 логических функций f. Эти логические функции представлены в таблице на рис. 9.21, причем каждая колонка в правой части таблицы соответствует одному из возможных вариантов функции / Десятичный эквивалент двоичного числа, образованного содержимым ячеек таблицы в каждой из колонок, будем использовать в качестве номера режима побитовой записи (writing mode). Можно обозначать режимы и соответственно наименование логической функции, определяемой каждой колонкой таблицы (дизъюнкция, конъюнкция, импликация и т.д.). Предположим, что значение 1 соответствует цвету фона (background color) (например, черному), а значение 0 - цвету переднего плана (скажем, белому). Можно наглядно представить результат, который получится в каждом из режимов (при каждом варианте определения вида функции Д в виде соответствующего изображения. Режимы 0 и 15 задают операции очистки - независимо от значения s и прежнего значения d новое значение d будет равно либо О (в режиме 0), либо 1 (в режиме 15). Режимы 3 и 12 являются режимами обычной записи (режим 12 - записи с инвертированием). Режим 3 соответствует функции