Для будущей работы с изображениями нам потребуется палитра цветов. До сих пор мы на экран выводили просто номера цветов. Но сам номер цвета без своих основных параметров не несет в себе полезной информации. Поэтому давайте введем массив для палитры.
class CGIScreen{
...
unsigned char Palette[768];
...
};
Сегодня редко требуется цветов для графики больше 256, не считая конечно фотографии. Практически весь Web пытается обходиться 32-64 цветами. Кроме того основные распространенные палитровые форматы графических изображений, такие как GIF, BMP не могут содержать в себе больше 256 цветов. Поэтому размер палитры равен 256*3, где число три - это количество основных составляющих цвета: красный, зеленый и синий. В мире принят формат хранения цветов в формате RGB, т.е. сначала красный, потом зеленый и синий. Мы будем использовать тот же формат, потому что вероятнее всего в будущем он поможет избавиться от преобразования формата палитры.
Для установки цветов палитры создадим следующую процедуру:
void CGIScreen::SetPalette(unsigned char Color,unsigned char Red,
unsigned char Green,unsigned char Blue){
Palette[Color*3]=Red;
Palette[Color*3+1]=Green;
Palette[Color*3+2]=Blue;
};
Здесь Color - это номер цвета в палитре, а Red, Green, Blue - соответствующие составляющие цвета.
Для облегчения работы с палитрой также нужна функция, которая будет получать цвет из палитры:
void CGIScreen::GetPalette(unsigned char Color,unsigned char *Red,
unsigned char *Green,unsigned char *Blue){
*Red=Palette[Color*3];
*Green=Palette[Color*3+1];
*Blue=Palette[Color*3+2];
};
Теперь давайте договоримся всегда перед рисованием сначала инициализировать соответствующий цвет в палитре. И старайтесь, чтобы все используемые цвета шли последовательно и их использовалось как можно меньше.