Описание формата pcx и некоторых утилит pc paintbrush




НазваниеОписание формата pcx и некоторых утилит pc paintbrush
страница1/3
Дата конвертации18.12.2012
Размер32.63 Kb.
ТипРеферат
  1   2   3
ОПИСАНИЕ ФОРМАТА PCX И НЕКОТОРЫХ УТИЛИТ PC PAINTBRUSH

Перевод с английского языка и форматирование выполнены сотрудником Института прикладной математики АН СССР А.Самотохиным

От переводчика
--------------
Исходный документ был получен мною из JVDialuge 1st BBS
10.09.1991, переведен на русский язык и отформатирован.
Некоторые части документа, не относящиеся к технической информации при переводе были опущены. Там, где я считал это необходимым, я снабдил перевод своими комментариями.


Техническое описание включает информацию о следующих программах:

Publisher's Paintbrush~
PC Paintbrush~ Plus
PC Paintbrush
FRIEZE Graphics~


ZSoft Corporation
450 Franklin Rd. Suite 100
Marietta, GA 30067
(404) 428-0008
Copyright 1988 ZSoft Corporation

СОДЕРЖАНИЕ

Введение.......................................... 4
Формат файла изображения (.PCX)................... 5
Декодирование файлов в формате .PCX............... 7
Описание информации о палитре..................... 8
Формат матричного шрифта PC Paintbrush............ 9
Примеры программ на C.............................10
Техническая информация об утилите FRIEZE..........12
Спецификация FRIEZE для версий ранее 7.00.........12
Вызов функций FRIEZE для версий ранее 7.00........13
Коды ошибок FRIEZE для версий ранее 7.00..........14
Спецификация FRIEZE для версий начиная с 7.00.....14
Вызов функций FRIEZE для версий начиная с 7.00....15
Коды ошибок FRIEZE для версий начиная с 7.00......17
.PCX Programmer's Toolkit.........................18

Введение

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

ZSoft Corporation
Technical Support Department
ATTN: Technical Reference Manual 450 Franklin Rd. Suite 100
Marietta, GA 30067

Формат файла изображений (.PCX)

Информация данного раздела будет полезна для вас, если вы хотите написать программу для чтения или записи PCX файлов. Если вы хотите написать программу для изображений строго определенного формата, вы должны быть в состоянии создать нечто такое, что будет работать вдвое быстрее, чем "Load from..." в PC Paintbrush. Файлы изображений, которые используются в продуктах семейства PC Paintbrush и FRIEZE (с расширениями .PCX) начинаются с заголовка длиной 128 байт.
Обычно вы можете игнорировать этот заголовок, если все ваши изображения будут иметь одинаковое разрешение. Если же вы хотите обрабатывать изображения с различным разрешением и разным количеством цветов, вам следует корректно интерпретировать информацию, находящуюся в данном заголовке.
Оставшаяся часть файла с изображением состоит из закодированных графических данных. При кодировании используется простой алгоритм, основанный на методе длинных серий. Мы оставляем за собой право изменять этот алгоритм с целью повышения эффективности упаковки данных. Если в файле запоминается несколько цветовых слоев, каждая строка изображения запоминается по цветовым слоям (в общем случае красному-R, зеленому-G, синему-B и слою интенсивности-I) по схеме, приведенной ниже:

Строка изображения 0:
RRR...
GGG...
BBB...
III...
Строка изображения 1:
RRR...
GGG...
BBB...
III...
(и т.д.)

Замечание переводчика
---------------------
Здесь в исходном документе имеет место явная некорректность. Запоминание по слоям проводится, как правило, для 16-цветных изображений EGA. В этом случае сначала запоминается содержимое строки из нулевого слоя видео памяти, затем из первого и т.д. Нетрудно заметить, что даже при стандартной палитре EGA, которая устанавливается по умолчанию BIOS'ом, нулевой слой видео памяти содержит СИНЮЮ компоненту цвета, а не красную. Если же палитра отлична от стандартной, то говорить о том, что слои видео памяти соотносятся с компонентами цвета вообще затруднительно.

Метод кодирования состоит в следующем:
ДЛЯ каждого байта X, прочитанного из файла ЕСЛИ оба старших бита X равны 1, то <повторитель> = 6 младшим битам X <данные> = следующему байту за X ИНАЧЕ
<повторитель> = 1 <данные> = X

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

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

Формат заголовка PCX

Смещен. Обозначение Длина Описание/комментарий 0 Manufacturer 1 Постоянный флаг 10 = ZSoft .PCX
1 Version 1 Информация о версии:
0 = Версия 2.5
2 = Версия 2.8
с информацией о палитре 3 = Версия 2.8 без информации о палитре 5 = Версия 3.0
2 Encoding 1 1 = .PCX кодирование длинными сериями 3 Bits per pixel 1 Число бит на пиксел в слое 4 Window 8 Размеры изображения (Xmin, Ymin) - (Xmax, Ymax) в пикселах включительно 12 HRes 2 Горизонтальное разрешение создающего устройства 14 VRes 2 Вертикальное разрешение создающего устройства 16 Colormap 48 Набор цветовой палитры (см. далее текст) 64 Reserved 1
65 NPlanes 1 Число цветовых слоев 66 Bytes per Line 2 Число байт на строку в цветовом слое (для PCX-файлов всегда должно быть четным) 68 Palette Info 2 Как интерпретировать палитру:
1 = цветная/черно-белая, 2 = градации серого 70 Filler 58 Заполняется нулями до конца заголовка

Все переменные длины 2 являются целыми.

Замечание переводчика
---------------------
Во избежание недоразумений: в поле Window после- довательно располагаются 4 целых числа, которые соответствуют угловым координатам изображения Xmin, Ymin, Xmax, Ymax. Как правило, Xmin и Ymin = 0.

Декодирование файлов в формате PCX

Сначала определите размер изображения, вычислив [XSIZE = Xmax - Xmin + 1] и [YSIZE = Ymax - Ymin + 1].
Затем вычислите, сколько байтов требуется для сохранения одной несжатой строки развертки изображения:
TotalBytes = NPlanes * BytesPerLine Отметим, что поскольку всегда используется целое число байтов, возможно существование неиспользуемых данных в конце каждой строки развертки. TotalBytes показывает сколько памяти должно быть доступно для декодирования каждой строки развертки, включая неиспользуемую информацию на правом конце каждой строки.

Теперь вы можете начать декодирование первой строки развертки - прочитайте первый байт данных из файла. Если два старших бита этого байта равны 1, оставшиеся шесть битов показывают сколько раз следует повторить СЛЕДУЮЩИЙ байт из файла. Если это не так, то этот байт сам является данными с повторителем равным 1. Продолжайте декодирование до конца строки, ведя подсчет количества байтов, переданных в буфер вывода. В конце каждой строки развертки имеет место остановка алгоритма кодирования, но ее не существует при переходе от одного слоя к другому. Когда строка сформирована полностью, в конце каждого слоя внутри строки возможно наличие лишних данных. Для нахождения этого остатка используйте значения XSIZE и YSIZE. Если данные являются многослойными, то BytesPerLine показывает, где заканчивается каждый слой внутри строки развертки.

Продолжайте декодирование оставшихся строк. В файле возможно наличие лишних строк с округлением на 8 или 16 строк.

Замечание переводчика
---------------------
Как следует из приведенного описания, в конце каждой строки развертки предусматривается остановка алгоритма кодирования, т.е предполагается, что каждая строка развертки кодируется независимо. Однако мое знакомство с файлами в формате PCX показывает, что это не всегда так (файлы в этом формате пишет не только ZSoft Corpration !). Поэтому я бы советовал пользователям не рассчитывать на то, что такая остановка обязательно будет иметь место. Конец каждой строки лучше все-таки фиксировать по заполнении ее буфера. Это, безусловно, чуть усложнит программу декодирования, но сделает ее более гибкой. (Кстати говоря, графический редактор PC Paintbrush прекрасно понимает PCX файлы, записанные без остановки алгоритма кодирования в конце каждой строки, хотя при порождении собственных файлов такую остановку делает).

Описание информации о палитре

Информация о 16-цветной палитре (EGA/VGA)

Информация о палитре запоминается в одном из двух различных форматов. В стандартном формате RGB (IBM EGA, IBM VGA) данные запоминаются в 16 тройках. Каждая тройка состоит из 3 байтов со значениями красного (Red), зеленого (Green) и синего (Blue) цветов. Значения могут находиться в диапазоне 0-255, и поэтому необходима их интерпретация в формат используемого оборудования. Например, на IBM EGA существуют 4 возможных уровня RGB для каждого цвета. Поскольку 256/4 = 64, то ниже приведен список соответствия цветовых значений и уровней:

Значение Уровень
0-63 0
64-127 1
128-192 2
193-254 3

Информация о 256-цветной палитре VGA

В настоящее время ZSoft добавил возможность хранения в файле изображения PCX палитры, превышающей 16 цветов.
256-цветная палитра форматируется и интерпретируется точно также, как 16-цветная, естественно, за исключением того, что она длиннее. Палитра (число цветов x 3 байта длины) добавляется в конец PCX файла и ей предшествует байт с десятичным значением 12. Для определения палитры VGA BIOS вам достаточно разделить прочитанные значения цветов на 4.

Для доступа к 256-цветной палитре следует:
1. Прочитать в заголовке поле Version. Если оно равно 5, палитра должна быть.
2. Прочитать конец файла и отсчитать назад 769 байт.
Найденное вами значение должно равняться 12, что указывает на присутствие 256-цветной палитры.
  1   2   3

Похожие:

Описание формата pcx и некоторых утилит pc paintbrush iconА. Тихонов показать картинку
В статье рассмотрены графический формат pcx и средства для работы с ними на Turbo Pascal версии Приводятся листинги программ, позволяющие...
Описание формата pcx и некоторых утилит pc paintbrush iconЗдесь может быть любой текст
Описание спецификации 1 10. 1 для текстового формата файла описания теста, используемого пакетом программ Test Commander (c) Great...
Описание формата pcx и некоторых утилит pc paintbrush iconЗдесь может быть любой текст
Описание спецификации 1 10. 1 для текстового формата файла описания теста, используемого пакетом программ Test Commander (c) Great...
Описание формата pcx и некоторых утилит pc paintbrush iconИнструкция по установке изложена в файле readme doc
Изменен формат квитанции межуровневого информационного обмена в аис кадры. Обработка квитанций предыдущего формата не поддерживается....
Описание формата pcx и некоторых утилит pc paintbrush iconОписание формата ролика ks2
Ролики представляют собой текстовые файлы,написанные определенным образом. В каждой строке ролика записана команда, заставляющая...
Описание формата pcx и некоторых утилит pc paintbrush iconКраткое описание программы {{workroom: razdel3: inkscape-logo png|}}
Программа позволяет рабтать с контурами, фигурами, текстом, градиентами и импортированной графикой (поддерживается импорт большинства...
Описание формата pcx и некоторых утилит pc paintbrush iconТребуется разработать навигационную gps программу с базовой функциональностью под Windows Mobile/CE
Мат он текстовый и очень простой, его описание занимает всего 5 страниц). Требуется разработать свой защищенный бинарный формат и...
Описание формата pcx и некоторых утилит pc paintbrush iconВ этой статье описание вирусов и способы борьбы с ними: Вирус Cabir
Первый сетевой червь, распространяющийся через протокол Bluetooth и заражающий мобильные телефоны, работающие под управлением os...
Описание формата pcx и некоторых утилит pc paintbrush iconВ этой статье описание вирусов и способы борьбы с ними: Вирус Cabir
Первый сетевой червь, распространяющийся через протокол Bluetooth и заражающий мобильные телефоны, работающие под управлением os...
Описание формата pcx и некоторых утилит pc paintbrush iconФотография Артека с видом на Аюдаг. 1996г artek11. pcx
Фото на Баженовском месторождении Свердловской области на летней минералогалогической школе ekatiri jpg
Разместите кнопку на своём сайте:
txt.rushkolnik.ru



База данных защищена авторским правом ©txt.rushkolnik.ru 2012
обратиться к администрации
txt.rushkolnik.ru
Главная страница