#ifndef _IMAGE_
#define _IMAGE_
/*
Для корректной загрузки и сохранения файлов нужно отключить выравнивание либо загружать члены заголовков раздельно */
#pragma pack(push,1)
struct bmpheader//зaгoлoвoк BMP файла (54 байта) (// размер структуры 54 байта без выравнивания short bmpid; //всегда 'ВМ' для Windows ulong fsize; // размер всего файла в байтах
ulong tmpl; // пока не используется // смещение от начала файла,
// где начинаются данные изображения ulong imgdata;
// размер заголовка в байтах (обычно 0x28) ulong headersize;
// ширина и высота изображения в пикселях long width,height;
// количество плоскостей в изображении ushort planes;
// количество бит на пиксель ushort bpp;
// тип сжатия изображения ulong compression;
// размер данных изображения в байтах,
// выравненное по двойному слову или 0 ulong imgdatasize;
// разрешение изображения в пикселях на митру ulong HR,VR;
ulong color; // количество цветов в палитре // количество важных цветов (идут в начале палитры) ulong imcolor;
// остальные поля здесь не используются void init() // инициализация
{
bmpid='MB'; headersize=40; tmpl=compression=imcolor=HR=VR=0; planes=l;
}
} ;
struct tgaheader // заголовок TGA файла (18 байт)
{
// размер идентификационной строки uchar idlen;
uchar typepal; // тип палитры uchar typeimg; // тип изображения // номер первого элемента в палитре ushort colorstart;
// число используемых элементов в палитре ushort colornum;
// количество бит на пиксель элемента палитры
uchar colorbpp;
// положение изображения на экране ushort х,у;
// ширина и высота изображения ushort width, height;
// количество бит на пиксель uchar bpp;
uchar ImageDescriptor;
// инициализация void init ()
{
idlen=typepal=typeimg=colorstart= colornum=colorbpp=x=y=width=height=bpp=0;
ImageDescriptor=0;
}
};
#pragma pack(pop)
struct IMAGE (
int width, // ширина изображения height, // высота изображения bpp, // количество бит на пиксель // параметры палитры sizepal, // размер
bpppal; // количество бит на пиксель uchar* inddata; // данные изображения uchar* pal; // данные палитры
void init(int w=320,int h=200,int b=24, int sizepal=0,int bpal=32);
IMAGE()
(
width=0; height=0; bpp=0; sizepal=0; inddata=0; pal=0;
}
-IMAGE() {clear(); }
// поддержка стандартных форматов графических файлов void fload_data(uchar*,int, int, int, int, FILE*) ; void fsave_data(uchar*,int,int,int,int,FILE*); int loadbmp(char*); // загрузка bmp файла
int loadtga(char*); // загрузка tga файла
int savebmp(char*); // сохранение в bmp файл
int savetga(char*); // сохранение в tga файл
// связь с OpenGl // установить палитру
void glsetpal(int,int,int,int,int s=0,int n=256); void tocolor(); // записать в буфер цвета void tostencil(); // записать в буфер трафарета // сохранение изображения окна void fromcolor(int,int);
// загрузить из файлов несколько текстур
int load2dtexture(char*str,uint*,int,int 1=0);