Программирование игр для Windows. Советы профессионала


Графический формат PCX - часть 2


При этом сохраняется

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

Такая методика неплохо работает для большинства изображений, но в некоторых случаях может не срабатывать, например, когда изображение имеет слишком мало одинаковых участков. В этом случае размер файла, напротив, увеличится, так как для записи одиночных пикселей требуется не один, а два байта.

Файл формата PCX состоит из трех секций:

§                                Первая секция PCX-файла длиной 128 байт содержит различную служеб­ную информацию;

§                                Вторая секция — это данные сжатого образа, которые могут оказаться любой длины;

§                                Третья секция размером в 768 байт содержит цветовую палитру, если она есть. В нашем случае она будет присутствовать, поскольку мы используем 256-цветный режим 13h. Эти 768 байт хранят значения RGB от 0 до 255.

Суммируя вышесказанное, можно нарисовать структуру PCX-файла (рис. 5.7).

Получение информации из заголовка несложно: достаточно прочитать первые 128 байт и отформатировать их в соответствии со структурой, представленной в Листинге 5-9.


 

Листинг 5.9. Структура заголовка PCX-файла.

typedef struct pcx_header_typ

{

char manufacturer; // всегда 10

char version;       // 0 - версия 2.5 Paintbrush

  // 2 - версия 2.8 с палитрой

  // 3 - версия 2.8 без палитры

  // 5 - версия 3.0 или старше

char encoding;      // всегда 1 - RLE кодирование

char bits_per_pixel;// количество бит на пиксель




Начало  Назад  Вперед