void SCHREIBE_TGA_8(var shadow_byte) // schreibe char
{
file_asc_write (Filehandle,shadow_byte);
}
void SCHREIBE_TGA_16(var shadow_short) // schreibe unsigned shadow_short
{
file_asc_write (Filehandle,shadow_short&255);
file_asc_write (Filehandle,(shadow_short>>8)&255);
}
void SCHREIBE_TGA_BILD(BMAP* MY_BMAP,STRING* MY_STR) // ***** SPEICHERT DAS BILD IM TGA - FORMAT ***** //
{
var format = 0;
var pixel = 0;
var pixel_alpha = 0;
Temp_vec1.x = bmap_width (MY_BMAP);
Temp_vec1.y = bmap_height (MY_BMAP);
format = bmap_lock (MY_BMAP,0);
Filehandle = file_open_write (MY_STR);
//----------------------------------------------------------------------------------------------// schreibe Header der tga Datei
SCHREIBE_TGA_8(0);
SCHREIBE_TGA_8(0);
SCHREIBE_TGA_8(2); // ild Typ: 10 = RLE komprimierte tga, 2 = unkomprimierte tga
SCHREIBE_TGA_16(0);
SCHREIBE_TGA_16(0);
SCHREIBE_TGA_8(0);
SCHREIBE_TGA_16(0);
SCHREIBE_TGA_16(0);
SCHREIBE_TGA_16(Temp_vec1.x); // Breite
SCHREIBE_TGA_16(Temp_vec1.y); // Höhe
SCHREIBE_TGA_8(32); // 24 oder 32 für Alphakanal
SCHREIBE_TGA_8(0);
//----------------------------------------------------------------------------------------------// schreibe Bilddaten der tga Datei
for (i=0; i < Temp_vec1.x * Temp_vec1.y; i++)
{
pixel = pixel_for_bmap (MY_BMAP, i%Temp_vec1.x, (Temp_vec1.y-1)-integer(i/Temp_vec1.x));
pixel_to_vec (Temp_col1,pixel_alpha,format,pixel);
pixel_alpha *= 2.55; // wandle alpha von 0 bis 100 --> 0 bis 255
SCHREIBE_TGA_8 (Temp_col1.blue); // b
SCHREIBE_TGA_8 (Temp_col1.green); // g
SCHREIBE_TGA_8 (Temp_col1.red); // r
SCHREIBE_TGA_8 (pixel_alpha); // alpha
}
file_close(Filehandle);
bmap_unlock(MY_BMAP);
}