original 1.0.1 release
[xwelltris.git] / src / image / sublib / SDL_to_picinfo.c
blob5a2493b7e2423af94b23764417ffaf2df4fc000d
1 #define JPEG_IMAGES
2 #include "SDL.h"
3 #include "picinfo.h"
4 #include "SDL_image.h"
6 void im_sdl_surface_to_picinfo(SDL_Surface* surface, PICINFO* pic)
8 int i;
10 pic->w=surface->w;
11 pic->h=surface->h;
13 if(surface->format->BytesPerPixel==1)
15 pic->type=PIC8;
16 pic->pic=(byte*)surface->pixels;
17 surface->pixels=0;
18 for(i=0;i<256;i++)
20 pic->pal[i*3] =surface->format->palette->colors[i].r;
21 pic->pal[i*3+1]=surface->format->palette->colors[i].g;
22 pic->pal[i*3+2]=surface->format->palette->colors[i].b;
24 SDL_FreeSurface(surface);
26 else
28 pic->type=PIC24;
29 pic->pic=(byte*)surface->pixels;
30 surface->pixels=0;
31 SDL_FreeSurface(surface);
35 int im_load_image_through_loader(char* fname, PICINFO* to_pic,
36 int from_mem_size,
37 SDL_Surface* (*img_loader)(SDL_RWops*))
39 SDL_RWops *rw;
40 SDL_Surface *surface;
42 if(!from_mem_size)
43 rw=SDL_RWFromFile(fname,"rb");
44 else
45 rw=SDL_RWFromMem((void*)fname, from_mem_size);
47 surface=img_loader(rw);
49 SDL_FreeRW(rw);
51 im_sdl_surface_to_picinfo(surface,to_pic);
53 return 1;
56 /******************************************************************/
58 int im_load_gif(char* fname, PICINFO* to_pic, int from_mem_size)
61 return im_load_image_through_loader(fname,to_pic,
62 from_mem_size,IMG_LoadGIF_RW);