Обновлено:

На этой странице

PCX: индексированное изображение и выравнивание строк

Источник: OpenCiv3, ReadPcx.cs. Файл прочитан целиком 26.10.2026; описывается реализация инструмента, не спецификация всех PCX.

Что делает декодер

Загрузчик рассчитан на один цветовой слой и 256 цветов. Геометрия вычисляется из левой/правой и верхней/нижней границ заголовка, с включением обеих крайних координат. Тройкам RGB отводятся последние 768 байтов файла; пиксели сохраняются как индексы, а не сразу переводятся в RGB.

Поле BytesPerLine читается со смещения 0x42. Данные RLE начинаются с 0x80: если два старших бита байта равны единице, младшие шесть задают длину повтора следующего байта; иначе байт является индексом пикселя.

При нечётной ширине строки могут содержать дополнительный байт выравнивания. Его нельзя трактовать как видимый пиксель: тогда все следующие строки сместятся.

Границы применимости

В коде прямо сказано, что это не универсальный PCX-reader. Он не устанавливает правила прозрачности конкретного игрового изображения: это следующий этап преобразования.

Наши контрольные случаи

Для собственного импортёра нужны изображения чётной и нечётной ширины, буквальный индекс с установленными старшими битами, короткий файл и повреждённая длина повтора. Ограничение размеров и проверка выхода за конец должны предшествовать выделению памяти. Проверка на реальных ресурсах Atlants ещё не выполнена.