Статьи по Assembler



              

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


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

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

Порядок следования данных

Рис.6. Порядок следования данных

программа обработки файла pcx

В общем случае программы должны обладать возможностью и создавать, и интерпретировать файл этого формата.

Под интерпретацией здесь понимается возможность правильно понимать данные, хранящиеся в заголовке pcx-файлов, и в соответствии с ними (данными заголовка) строить на экране изображение.

Как правило - это мощные графические редакторы или утилиты, им сопутствующие. Но есть задачи, не требующие создания файлов формата PCX. Необходимо только второе - интерпретировать. Как правило, это универсальные программы-вьюеры. Есть задачи и более простые - показать на экране рекламное изображение. Для этого надо совсем мало, так как в связи с неизменностью условий работы программы практически отпадает необходимость подробно анализировать заголовок файла PCX. Такая задача и предлагается вашему вниманию.

Наилучший способ объяснить - это привести пример. Поэтому приступим к изложению задачи, которую необходимо решить и к описанию программы, ее реализующей.

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

  • минимальный размер кода
  • минимально возможный и фиксированный размер занимаемого пространства при выполнении программы
  • быстрота вывода
  • способность "понимать", возможна ли обработка данного pcx-файла
  • разбор палитры и инициализация регистров палитры видеоадаптера
  • независимость от того, каким из графических редакторов создавался pcx-файл (полной независимости конечно, не бывает)
  • режим работы монитора с разрешением 640х350 (режим 10h для адаптеров EGA/VGA)
  • pcx-файл должен находиться отдельно от программы вывода

Первые два условия объясняются желанием не увеличивать "безгранично" размеры программы*), к которой пристыковывается этот модуль, и, во-вторых, быть независимым от размеров pcx-файла и от типа (.com или .exe) основной программы. Предваряя результат, скажем, что размер исполняемого модуля менее одного килобайта. А процедуры, относящиеся непосредственно к декодированию и выводу изображения, занимают около 600 байт.




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