#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);


⇐ вернуться назад | | далее ⇒