hola, he visto que esta librería no cargaba bien las imágenes en 32 bits de ninguno de los formatos que soporta, simplemente hacía una conversión de una imagen de 24 bits poniendo su componente alfa a 255.
He estado viendo cómo se usa SDL_image y he creado un nuevo mod_map basado en la r112 (actualmente, última versión del SVN) con soporte para load_image usando SDL_image. Decir que he usado mismo esquema y nomenclatura para que quede integrado de una forma natural al módulo. Dejo el código y el binario para windows por si a alguien le interesa.
Por Cierto, splinterGU, creando esta modificación al módulo mod_map he descubierto que en todo el código de bennu del SVN no hay referencia a SDL_image, es decir, bennu no usa esta dll, así que en el directorio externals sobran SDL_image y jpeg.dll ya que no son usados.
Este nuevo mod_mad si que usa estas dlls, además también necesita de una dll más para cargar tiffs.
http://www.mediafire.com/?gfiwnzjm0yzNOTA: viene prg adjunto con forma de uso.
el test que hay en mediafire tiene unos cuantos errores, pego aqui el código con ellos corregidos
program image_test;
import "mod_key"
import "mod_video"
import "mod_mouse"
import "mod_map"
import "mod_screen"
import "mod_say"
import "mod_text"
import "mod_proc"
Global
id_fondo;
id_pos_y=30;
id_images[100];
id_texts[100];
num_images;
begin
set_mode(320,420,32);
set_text_color(RGB(0,0,255));
repeat
if(key(_1))
delete_images();
set_mode(320,420,8);
set_text_color(RGB(0,0,255));
while(key(_1)) frame;end
put_images();
end
if(key(_2))
delete_images();
set_mode(320,420,16);
set_text_color(RGB(0,0,255));
while(key(_2)) frame;end
put_images();
end
if(key(_3))
delete_images();
set_mode(320,420,32);
set_text_color(RGB(0,0,255));
while(key(_3)) frame;end
put_images();
end
frame;
until(key(_esc))
unload_map(0,id_fondo);
end
process delete_images()
begin
unload_map(0,id_fondo);
for (x = 0;x<num_images;x++)
unload_map(0,id_images[x]);
delete_text(id_texts[x]);
end
num_images=0;
id_pos_y = 30;
end
process put_images()
begin
id_fondo=load_image("fondo.jpg");
put_screen(0,id_fondo);
imagen(100,id_pos_y,"hr8.bmp");
imagen(180,id_pos_y,"hr24.bmp");
imagen(250,id_pos_y,"hr32.bmp");
id_pos_y+=65;
imagen(100,id_pos_y,"hr8.pcx");
imagen(180,id_pos_y,"hr24.pcx");
id_pos_y+=65;
imagen(100,id_pos_y,"hr8.gif");
imagen(180,id_pos_y,"hr32.gif");
imagen(250,id_pos_y,"hr24.jpg");
id_pos_y+=65;
imagen(100,id_pos_y,"hr8.png");
imagen(180,id_pos_y,"hr24.png");
imagen(250,id_pos_y,"hr32.png");
id_pos_y+=65;
imagen(100,id_pos_y,"hr8.tga");
imagen(180,id_pos_y,"hr24.tga");
imagen(250,id_pos_y,"hr32.tga");
id_pos_y+=65;
imagen(100,id_pos_y,"hr8.tif");
imagen(180,id_pos_y,"hr24.tif");
imagen(250,id_pos_y,"hr32.tif");
end
process imagen( x,y,string filename)
begin
id_texts[num_images]=write(0,x,y,1,filename);
graph=load_image(filename);
id_images[num_images++] = graph;
say(filename+":"+graph);
repeat
frame;
until(key(_esc) || key(_1)|| key(_2)|| key(_3))
end