Рисунки, использующие палитру
Полноцветные и подготовленные с применением палитры рисунки имеют разное
назначение. В режимах 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, а в третьем обсуждаются способы
построения рисунков в обоих режимах. |