Статьи по Assembler



              

О формате pcx - часть 8


Посмотрим теперь, как выглядит закодированное изображение в pcx-файле, формируемом редакторами PC Paintbrush и PMTV A4TECH (рис.8).

Логично предположить, что pcx-файл должен содержать 5·4 байтов (рис.8а) без учета размера заголовка. Линия белого цвета, и поэтому требуется инициализация 4-х слоев видео-памяти. Но практика показывает (рис.8б,в), что оба редактора поступают по-другому и размеры pcx-файла больше, чем ожидалось. За счет чего же происходит увеличение размера?

В файле, созданном редактором PMTV (A4TECH) видим (рис.8в), что для каждого слоя строка содержит (начиная с 4 колонки и до конца) дополнительную информацию, относящуюся к незанятой нашим изображением части экрана. То есть, иными словами, в файле хранится дополнительная информация о всей строке экрана независимо от размеров изображения по горизонтали.

В файле же, созданном PC Paintbrush, мы наблюдаем то же самое, за исключением того, что хранимая информация зависит от размеров изображения по горизонтали и выбирается кратной целому числу.

Казалось бы, во втором случае подход более рационален, так как размер файла меньше. К сожалению, дело омрачается тем обстоятельством, что в байте, расположенном после после байтов с изображением (рис. 8б, колонка 4, выделено жирным), оказывается "мусор", и если не принимать никаких мер, то справа от изображения появится красивая, но ненужная бахрома. "Мусор" образуется из-за того, что буфер с записываемыми данными предварительно не очищается, и неинициализированные байты могут содержать любую информацию.

С4h,FFh,07h,C3h,00H - 0-й слой

С4h,FFh,07h,C3h,00H - 1-й слой

С4h,FFh,07h,C3h,00H - 2-й слой

С4h,FFh,07h,C3h,00H - 3-й слой

а) предполагаемый результат

С4h,FFh,07h,01h,C5h,00H - 0-й слой

С4h,FFh,07h,03h,C5h,00H - 1-й слой

С4h,FFh,07h,21h,C5h,00H - 2-й слой

С4h,FFh,07h,32h,C5h,00H - 3-й слой

б) PC Paintbrush Zsoft Corp.

С4h,FFh,07h,FFh,00H ... - 0-й слой

С4h,FFh,07h,FFh,00H ... - 1-й слой

С4h,FFh,07h,FFh,00H ... - 2-й слой




Содержание  Назад  Вперед