BIGLIB
  большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно
 
АСТРОЛОГИЯ
  книги по астрологии
 
КРИМИНАЛ
  книги про криминал
 
ДЕТЕКТИВЫ
  детективы известных
   писателей
 
ФАНТАСТИКА
  фентези, фантастика,   фантастические повести
 
ПРИКЛЮЧЕНИЯ
  книги про приключения,   путешествия
 
ПОЛИТИКА
  книги про политиков,   репрессии
 
ПСИХОЛОГИЯ
  разнообразная литература   по психологии
 
КЛАССИКА
  классическая литература
 
КОМПЬЮТЕРНАЯ
  ЛИТЕРАТУРА
  про компютерное железо,   документация, языки   программирования
 
РЕЛИГИЯ, АТЕИЗМ
  книги про религию
 
ФИЛОСОФИЯ
  книги, которые заставляют   задуматься над   окружающим тебя миром.
 
ЭНЦИКЛОПЕДИИ
  самые интересные   энциклопедии на
   разные темы
 
МЕДИЦИНА
  медицинские книги,   методички,
   народные лечебники
 
КУЛИНАРИЯ
  рецепты тортов,   консервирование,
  все о спиртных
  напитках.
 
СТИХИ
  стихи популярных и не   очень авторов
 
ТВОРЧЕСТВО
  народное творчество,   стихи, песни и т.д.
 
ЮМОР
  анекдоты, приколы,   смешные истории
 
ЛЮБОВНЫЙ РОМАН
  мир высоких чувств и   любовных грез
 
ЭРОТИКА
  эротические рассказы,   книги о технике секса,   кама-сутра и др.




adfun.ru
Rambler's Top100 Rambler's Top100
    НА ГЛАВНУЮ
    РЕФЕРАТЫ
    ТОСТЫ
    ТЕСТЫ
    АВТО
    ДЛЯ СТУДЕНТА
    КНИГИ
    КОНТАКТ
 
Описание формата PCX и некоторых утилит PC Paintbrush
Автор ""
Размер 33225 Байт
Страница 2 из 5
СКАЧАТЬ КНИГУ ЦЕЛИКОМ

одной несжатой строки развертки изображения:
      TotalBytes = NPlanes * BytesPerLine
Отметим,  что  поскольку  всегда  используется  целое  число
байтов, возможно существование неиспользуемых данных в конце
каждой  строки  развертки.  TotalBytes  показывает   сколько
памяти должно быть доступно для декодирования каждой  строки
развертки, включая неиспользуемую информацию на правом конце
каждой строки.

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

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

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

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

Информация о 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-цветной палитры.

Замечание переводчика
ДДДДДДДДДДДДДДДДДДДДД
     Два замечания по поводу 256-цветной палитры.
     Во-первых, между пунктами 1 и 2 приведенной  инструкции
я добавил бы следующий: "Прочитать в заголовке поле Bits per
pixel. Если оно равно 8, 256-цветная палитра должна  быть.".
Смысл очевиден.
     Во-вторых, в настоящее  время довольно широкое  распро-
странение получил пакет  программ .PCX Programmer's  Toolkit





фирмы Genus Microprogramming. В этом пакете (по крайней мере в известных мне версиях) принят способ хранения 256-цветной палитры несколько отличный от того, что был описан выше. Отличие состоит в том, что палитре предшествует байт с десятичным значением 10 (вместо 12), а значения цветовых компонент занимают младшие 6 битов в каждом из байтов цветовой тройки (т.е. изменяются от 0 до 63, как это принято в VGA BIOS). - 9 - Информация о цветовой палитре CGA Для стандартной платы IBM CGA битовый набор для определения палитры более сложен. Используется только первый байт тройки. Первая тройка содержит только первый байт с осмысленным значением, который определяет цвет фона. Чтобы определить цвет фона, нужно значение этого байта (беззнаковое) разделить на 16. В результате будет получено значение в диапазоне 0-15, которое и определяет цвет фона. Вторая тройка содержит осмысленное значение первого байта, которое определяет значение палитры для трех оставшихся цветов. PC Paintbrush поддерживает для этих цветов 8 возможных палитр CGA, и, поскольку значение байта может быть от 0 до 255, его следует разделить на 32 (см. схему, приведенную ниже). Taблица цветов для CGA Байт #16 в заголовке Цвет фона определяется 4 старшими битами. Байт #19 в заголовке Используются только 3 старших бита, остальные 5 игнорируются. Первые три бита обозначаются как C, P, I. Их интерпретация: C: разрешение color burst - 0 = color; 1 = monochrome P: палитра - 0 = желтая; 1 = белая I: яркость - 0 = малая; 1 = повышенная. Замечание переводчика ДДДДДДДДДДДДДДДДДДДДД Как видите, исходный документ умалчивает о том, в каких случаях информацию в заголовке файла следует трактовать как палитру CGA. Не исключено, что ветвление следует вести по полю Version заголовка. Формат матричного шрифта PC Paintbrush Матричный символьный шрифт запоминается в очень простом формате. Формат этих символов следующий: Заголовок (2 байта) ширина шрифта db 0a0h + ширина символов (в точках) высота шрифта db высота символов (в точках) Ширина символов (256 байтов) ширина символов db 256 dup(ширина каждого символа + 1) Изображения символов (остаток файла) Символы запоминаются в порядке кодов ASCII и их может быть до 256. Каждый символ выравнивается слева на границу символьный блок и содержит одинаковое число байтов. Байты организованы как N цепочек, где каждая цепочка соответствует одной строке символа. Например, каждый символ в шрифте размером 5x7 требует 7 байтов. Шрифт размера 9x14 использует 28 байтов на символ (два байта на строку по 14 наборов). Допускается создание шрифтов любого размера, при условии, что размер файла не превышает 10K. - 10 - Примеры программ на C Приведенный ниже набор программ на C предназначен для чтения из PCX файла. /* Данная процедура читает из файла один блок закодированных данных из файла и запоминает повторитель count и байт данных data. Результат: 0 = данные прочитаны EOF = данных нет (вышли за пределы файла) */ encget(pbyt, pcnt, fid) int *pbyt; /* сюда писать байт данных */ int *pcnt; /* сюда писать повторитель */ FILE *fid; /* ссылка на файл изображения */ { int i; *pcnt = 1; if(EOF == (i = getc(fid))) return(EOF); if(0xc0 == (0xc0 & i)) { *pcnt = 0x3f&i; if(EOF == (i=getc(fid))) return(EOF); } *pbyt = i; return(0); }


Страницы : 1 [2] 3 4 5


adfun.ru









Форум раскрутка сайта и интернет-реклама
реклама - рекламное агентство -
Интернет PR агентство чат и форум
волчат знакомства - сайт знакомств
бесплатные компьютерные игры
фото знакомства
новые стеклопакеты -
качественное остекление балконов
портал - пластиковые окна -
закажите окна пвх в Москве

частная стоматология в Москве:
надежная стоматологическая клиника
протезирование зубов и
отбеливание зубов в стоматологии
Музыка - скачать mp3 музыка
каталог партнерские программы
ручной бесплатный обмен ссылками цифровые камеры цифровые фотоаппараты -
цифровые видеокамеры

театры - заказ билетов в театр -
магазин - продажа компьютеров
в Москве форум Испания - жилье -
недвижимость в испании

турфирма - испания туры
Переводы - бюро переводов
Законы - закон о товарных знаках,
Грузовые перевозки. АсМАП. Дальнобой закон о рекламе
Интернет казино
реклама на форуме и контекстная реклама
на Яндексе Баннерная сеть и
интернет каталог сайтов Holiday.Ru
Форумы политика, лучшие анекдоты
знакомства.