Освой компьютер
От числа
битпланов зависит количество цветов, которые могут использоваться в
изображении: чем больше битпланов, тем больше цветов доступно. Однако есть
и обратный эффект: большое количество битпланов требует большего объема
памяти для хранения изображений. Для простоты будем использовать один
битплан: dc.w 1 ;один битплан, 2^1 = 2 цвета Это вовсе не означает, что заданное таким образом изображение может
выводится только в те окна и экраны, \"глубина\" которых равна 1. Количество
битпланов изображения может быть меньше, чем \"глубина\" окна. Далее следует указатель на данные, определяющие изображение: dc.l imgdata ;\"биты\" изображения
Следующий байт (PlanePick byte) определяет набор битпланов, в которые
должно выводится изображение. При этом каждый бит байта PlanePick
соответствует отдельному битплану: бит 0 задает нулевой битплан, бит 1 -
первый, итд. Фактически, данный байт определяет цвет выводимого
изображения. dc.b 2 ;рисуем в первый битплан (красный
;цвет, см. примеры из предыдущих
;пунктов)
Биты следующего байта (PlaneOnOff byte) определяют битпланы, которые должны
заполняться единицами или нулями независимо от того, какое значение имеют
соответствующие биты структуры imgdata. Этот байт может использоваться для
очистки битпланов, которые не заданы в байте PlanePick, и, следовательно,
не участвуют в выводе изображения. В нашем примере существует один такой
битплан - нулевой (так как \"глубина\" окна равна двум). Установим нулевой
бит байта PlaneOff, в результате чего нулевой битплан заполнится единицами: dc.b 1 ;цвет фона: белый
И, наконец, последняя запись рассматриваемого блока данных содержит
указатель на другое изображение: dc.l 0 ;больше нет изображений
Итак, мы получили следующую структуру: image:
dc.w 0,0 ;смещения по X и Y
dc.w 32,13 ;размеры изображения
dc.w 1 ;1 битплан
dc.l imgdata ;указатель на данные изображения
dc.b 2 ;рисуем в первом битплане
dc.b 1 ;заполняем нулевой битплан единицами,
dc.l 0 ;больше нет изображений
Теперь рассмотрим формат блока данных изображения (imgdata).
AMIGA: ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ.
|