Графические устройства

         

Рисунки использующие палитру



Рисунки, использующие палитру

Полноцветные и подготовленные с применением палитры рисунки имеют разное назначение. В режимах direct color графические задачи должны "уметь" работать с любыми рисунками, независимо от способа их подготовки.

Если рисунок подготовлен с использованием палитры, то коды его точек являются порядковыми номерами строк таблицы цветов (палитры), хранящейся в файле вместе с образом рисунка. При построении таких рисунков в режимах direct color требуется преобразование кода каждой точки в код ее цвета, который затем записывается в видеопамять.

Количество перечисленных в палитре цветов, как правило, меньше количества точек в рисунке и это различие тем больше, чем больше размеры рисунка. Поэтому имеет смысл преобразовать исходную палитру в форму, упрощающую перекодировку точек при построении рисунка. Это не только упростит действия, выполняемые в соответствующих подпрограммах, но и сделает их независящими от формата исходной палитры.
Употребляя выражение "формат", мы имеем в виду количество байтов в строке палитры, и порядок расположения кодов базовых цветов в этих байтах. Формат зависит от стандарта хранения графических данных, которому соответствует файл, содержащий образ рисунка.

В большинстве стандартов используется формат rgb, впервые он был применен в стандарте PCX. В формате rgb строка состоит из трех байтов, в которых хранятся коды красного (r), зеленого (g) и синего (b) базовых цветов, расположенные в указанной последовательности.

Единственный в своем роде, но широко распространенный стандарт BMP для Windows предусматривает хранение палитры в формате bgro. В этом случае строка палитры состоит из четырех байтов. В трех первых хранятся коды синего (b), зеленого (g) и красного (r) базовых цветов, расположенные в указанной последовательности, последний байт резервный, обычно он очищен.

В модифицированном стандарте BMP для OS/2 из строки палитры исключен резервный байт, а в трех оставшихся байтах базовые цвета расположены в формате bgr.

При преобразовании строки палитры в код цвета точки надо учитывать не только формат строки, но и расположение цветов в коде точки, которое зависит от используемого режима direct color. Поэтому данный раздел делится на три подраздела, в двух первых описаны подпрограммы, предназначенные для применения в режимах Hi-Color и True color, а в третьем обсуждаются способы построения рисунков в обоих режимах.


Рисунки, использующие палитру

Подпрограмма PackDrw позволяет строить рисунки, подготовленные с применением палитры цветов. Для распаковки таких рисунков в ней вызывается подпро!рамма unpack, описанная в примере 3.26, а вариант подпрограммы drawline выбирается в зависимости от установленного видеорежима.

При работе в режимах PPG для построения распакованной строки вызывается одна из подпрограмм drawline, описанных в разделе.

Если же задача работает в одном из режимов direct color, то перед построением рисунка хранящаяся в файле палитра преобразуется в таблицу цветов. В зависимости от видеорежима для этого выбирается одна из подпрограмм 7.17—7.20. Строку рисунка с перекодированием точек по таблице цветов строит подпрограмма примера 7.21.




Содержание раздела