Реклама:

 

магазин ювелирных украшений предлагает купить кольцо в подарок нежным

 

Новости IT:

 

28-09-07: Выяснилось, что самая последняя версия программы Excell имеет ошибки. Они связаны с расчетами чисел в районе 65536.

 

19-09-07: Комапния Codemasters Онлайн сообщает о том, что игра MMORPG RF Online будет бесплатной. Вместо абонентсой платы вводятся платные сервисы. В мире игры ведется война тремя фракциями. Игроки присоединяются к одной из сторон и выбирают роботов, магию или разрушение.

 

Реклама:

 

Protect yourself from whatever drug testing and find out how to pass urine drug test.

 


Форматы файлов
Форматы файлов

Основным отличием файлов нового формата (DIB) - Device Independent Bitmap (аппаратно-независимый битовый образ) является то, что в них используется кодировка цветов с одной битовой плоскостью.

 

Файлы битовых образов нового формата начинаются со структуры BITMAPFILEHEADER:

 typedef struct tagBITMAPFILEHEADER {
    word  bfType;         //тип файла (для битового образа - BM)
    dword bfSize;         //размер файла в dword
    word  bfReserved1;    //не используется
    word  bfReserved2;    //не используется
    dword bfOffbits;      //смещение данных битового образа от заголовка
 }

Непосредственно за ней располагается структура BITMAPINFO, содержащая всю информацию о битовом образе. Она делится на две части: структуру BITMAPINFOHEADER, описывающей размеры и цветовой формат битового образа, и массив структур RGBQUAD, определяющей цветовую палитру:

    typedef struct tagBITMAPINFO {
    BITMAPINFOHEADER     bmiHeader;
    RGBQUAD              bmiColors[1];
    }

    typedef struct tagBITMAPINFOHEADER {
        dword   biSize;         //число байт, занимаемых структурой
        dword   biWidth;        //ширина битового образа в пикселах
        dword   biHeight;       //высота битового образа в пикселах 
        word    biPlanes;       //число битовых плоскостей устройства
        word    biBitCount;     //число битов на пиксель
        dword   biCompression;  //тип сжатия
        dword   biSizeImage;    //размер картинки в байтах
        dword   biXPelsPerMeter;//горизонтальное разрешение устр-ва
        dword   biYPelPerMeter; //вертикальное разрешение устр-ва
        dword   biClrUsed;      //число используемых цветов
        dword   biClrImportant; //число "важных" цветов
    } BITMAPINFOHEADER;

Более подробно:

biSize - обычно используется для облегчения доступа к таблице цветов.

biPlanes - определяет число битовых плоскостей; однако, поскольку цвет кодируется последовательными битами, это число всегда равно 1.

biBitCount - этим полем определяется число цветов, используемых битовым образом. В зависимости от способа кодирования, может принимать значения:

1 - битовый образ монохромный, и таблица цветов должна содержать два элемента. Каждый бит в массиве данных кодирует один пиксел. Если значение бита - 0, то пиксел становится первым цветом таблицы; если - 1, пиксел становится вторым цветом таблицы.
4 - битовый образ имеет максимум 16 цветов, и массив bmiColors (таблица цветов) имеет до 16 элементов. Цвет каждого пиксела определяется по таблице цветов при помощи четырехбитного индекса. Например, если первый байт данных имеет значение 3Ah, то при отображении битового образа цвет первого пиксела определяет четвертый элемент таблицы цветов, а цвет второго - одиннадцатый.
8 - битовый образ имеет максимум 256 цветов, и таблица цветов имеет до 256 элементов. Каждый байт массива данных определяет цвет одного пиксела.
24 - битовый образ имеет максимум 2 в 24-й степени цветов. Таблица цветов пуста, а цвет пикселов определяется пакетами из трех байтов, описывающими цветовые интенсивности красного, зеленого и голубого цветов.

biCompression - тип сжатия. Может принимать значения:
BI_RGB - сжатие отсутствует;
BI_RLE8 - сжатие для формата 8 бит на пиксел;
BI_RLE4 - сжатие для формата 4 бита на пиксел.

biXPelsPerMeter и biYPelsPerMeter - могут использоваться для выбора из списка ресурсов пиктограммы, наиболее подходящей для данного устройства.

biClrUsed - число цветов, используемых данныи битовым образом. Если 0, то используются все цвета палитры (указанные в массиве bmiColors).

biClrImportant - используется для управления алгоритмом отображения цветов.Так, если четыре различных приложения отображают на экране по одному битовому образу с 75 цветами каждый, то адаптер, выводящий 256 цветов одновременно, не сможет полностью аутентично отобразить на экране все 4 картинки. В этом случае используется механизм замены цветов - ищется битовый образ с наименьшим приоритетом и его "лишние" цвета заменяются наиболее подходящими.

    typedef struct tagRGBQUAD {
        byte    rgbRed;         //интенсивность красного
        byte    rgbGreen;       //интенсивность зеленого
        byte    rgbBlue;        //интенсивность голубого
        byte    rgbRserved;     //не используется
        } RGBQUAD;

После того, как все параметры битового образа определены, в файле идут сами скан-строки битовой плоскости, причем первой скан-строкой в формате DIB считается нижняя скан-строка (т.е. начало координат находится в левом нижнем углу изображения).

Внимание