Реферат: Просмотрщик графических файлов. Форматы PCX и BMP
После запуска программы PCX_BMP.EXE <имя графического файла> стандартная функция Fnsplit разбивает полное имя файла на 4 части. Что дает возможность передать файлы с расширениями PCX и BMP на обработку функциям вывода графических файлов на экран (show_pcx и show_bmp).
2.1. Реализация алгоритма просмотра файла PCX.
Вывод на экран картинки, хранящейся в PCX-файле, начинается с чтения заголовка файла. С помощью этого определяется является ли этой файл форматом PCX (manufacturer должен быть равен 10), размеры изображения, информации о палитре, число цветовых слоев. После чего происходит переход на 768 байт с конца файла для чтения набора цветовой палитры и с помощью функции Set_palette заполнение цветовой палитры значениями.
Теперь начинается декодирование первой строки развертки - прочитывается первый байт данных из файла. Если два старших бита этого байта равны 1, оставшиеся шесть битов показывают сколько раз следует повторить следующий байт из файла. Если это не так, то этот байт сам является данными с повторителем равным 1. Продолжайте декодирование до конца строки, ведя подсчет количества байтов, переданных в буфер вывода. В конце каждой строки развертки имеет место остановка алгоритма кодирования, но ее не существует при переходе от одного слоя к другому. Как только строка со значениями пикселов прочитана из файла, она в функции put_pixel передается в видео-буфеp для получения изображения на экране.
2.2. Реализация алгоритма просмотра файла BMP.
Вывод на экран картинки, хранящейся в BMP-файле, начинается с чтения заголовка файла и информационного заголовка. Программа таким образом проверяет является ли этот файл графически форматом BMP (сигнатура должна быть ‘BM’) а так же узнает размеры изображения и количество цветов.
Затем программа читает цветовую таблицу. После чего программа с помощью функции Set_palette заполняет цветовую палитру значениями из цветовой таблицы. Таким образом, обеспечивается правильная передача цветов картинки. Если компьютер способен отобразить тысячи или миллионы цветов одновременно, то цветовую палитру заполнять не нужно.
Следующим шагом происходит считывание растровые данные из файла. Как только строка со значениями пикселов прочитана из файла, она в функции put_pixel передается в видео-буфеp для получения изображения на экране.
2.3. Используемые переменные и функции.
2.3.1. Глобальные переменные.
typedefunsignedcharbyte
Объявление типа.
char far *video = (char far *) 0xA0000000L
Указатель на видеопамять.
intMaxX, MaxY
Максимальное разрешение экрана.
VidMode=0x13
Гафический режим 13h.
1.3.2. Основные функции и процедуры
structpcxHeaderType
Структура заголовка файла PCX.
struct bmpHeaderType
Структура заголовка файла BMP.
voidset_mode (void)
Установка графического режима 13h.
voidset_text (void)
Установкатекстовогорежимa.
void set_palette (int color, byte r, byte g, byte b)
Установление цвета в палитре.