00001 #include "gifimg.h"
00002 #include "machine.h"
00003 #include "sciprint.h"
00004
00005 void C2F(deallocategifimg)( gdImagePtr * im )
00006 {
00007 gdImageDestroy(*im);
00008 }
00009
00010 void deallocateGifImg( gdImagePtr * im ) { C2F(deallocategifimg)( im ) ; }
00011
00012 void C2F(readgifimg)( char * string, gdImagePtr * imgptr, int * m,int * n, int * ncol )
00013 {
00014 FILE *fd;
00015 gdImagePtr im;
00016
00017 fd=fopen(string,"r");
00018 if (fd == 0)
00019 {
00020 sciprint("Can't open file %s\n",string);
00021 return;
00022 }
00023 im = gdImageCreateFromGif(fd);
00024 if (im == 0) {
00025 *m = *n = -1;
00026 return;
00027 }
00028 *m = im->sy;
00029 *n = im->sx;
00030 *ncol = im->colorsTotal;
00031 *imgptr =im;
00032 }
00033
00034 void readGifImg( char * string, gdImagePtr * imgptr, int * m, int * n, int * ncol) { C2F(readgifimg)( string, imgptr, m, n, ncol ) ; }
00035
00036 void C2F(readxbmimg)( char * string, gdImagePtr * imgptr, int * m, int * n, int * ncol )
00037 {
00038 FILE *fd;
00039 gdImagePtr im;
00040
00041 fd=fopen(string,"r");
00042 if (fd == 0)
00043 {
00044 sciprint("Can't open file %s\n",string);
00045 return;
00046 }
00047 im = gdImageCreateFromXbm(fd);
00048 if (im == 0) {
00049 *m = *n = -1;
00050 return;
00051 }
00052 *m = im->sy;
00053 *n = im->sx;
00054 *ncol = im->colorsTotal;
00055 *imgptr =im;
00056 }
00057
00058 void readXbmImg( char * string, gdImagePtr * imgptr, int * m, int * n, int * ncol) { C2F(readxbmimg)( string, imgptr, m, n, ncol ) ; }
00059
00060 void C2F(getgifpixels)( gdImagePtr * imgptr, unsigned char * pixels )
00061 {
00062 int i,m,n,x,y;
00063 gdImagePtr im;
00064 im = *imgptr;
00065 m = im->sx;
00066 n = im->sy;
00067 i =0;
00068 for (x=0; (x<m); x++) {
00069 for (y=0; (y<n); y++) {
00070 pixels[i] = im->pixels[y][x];
00071 i++;
00072 }
00073 }
00074 }
00075
00076 void getGifPixels( gdImagePtr * imgptr, unsigned char * pixels ) { C2F(getgifpixels)( imgptr, pixels ) ; }
00077
00078 void C2F(getgifcmap)( gdImagePtr * imgptr, unsigned char * cmap )
00079 {
00080 int i,k, ncol;
00081 gdImagePtr im;
00082 im = *imgptr;
00083
00084 ncol = im->colorsTotal;
00085 k = 0;
00086 for (i=0; (i<ncol); i++) {
00087 cmap[k] = im->red[i];
00088 cmap[ncol+k] = im->green[i];
00089 cmap[2*ncol+k] = im->blue[i];
00090 k++;
00091 }
00092 }
00093
00094 void getGifCmap( gdImagePtr * imgptr, unsigned char * cmap ) { C2F(getgifcmap)( imgptr, cmap ) ; }