📄 mga_gif.c
字号:
/* (c) HelDoRe Gif unit ... v0.0.5 Supported formats : libungif :-)*/ #define VERGIF " unit v0.0.5"#include <stdio.h>#include <string.h>#include "../mga_view.h"#ifdef USE_LIBGIF#include <gif_lib.h>#endifvoid help_gif(){#ifdef USE_LIBGIFprintf("GIF%s\n + uses libungif\n",VERGIF);#endif}int detect_gif(){#ifdef USE_LIBGIF int form79,dane,ero,extcode; short int GIsyg; GifRecordType rectyp; GifByteType *extension; GifFileType *gplik; static int InterlacedOffset[]={0,4,2,1},InterlacedJumps[]={8,8,4,2}; unsigned char linia[4000]; fread(&GIsyg,sizeof (short int),1,plik); if (GIsyg != 18759) return 1; fseek(plik,2,SEEK_CUR); form79=fgetc(plik);form79-=48; fseek(plik,1,SEEK_CUR); image_x=fgetc16b(plik); image_y=fgetc16b(plik); dane=fgetc(plik); depth=dane & 0x07; depth++; if (check_image(image_x,image_y,depth)==3) return 3; gplik=DGifOpenFileName(mee); printf("GIF%s\n",VERGIF); printf("GIF8%ia detected : %ix%ix%i %i colors",form79,image_x,image_y,depth,gplik->SColorMap->ColorCount); for (tempi=0;tempi<gplik->SColorMap->ColorCount;tempi++) { tab2r[tempi]=gplik->SColorMap->Colors[tempi].Red; tab2g[tempi]=gplik->SColorMap->Colors[tempi].Green; tab2b[tempi]=gplik->SColorMap->Colors[tempi].Blue; } do { if (DGifGetRecordType(gplik,&rectyp) == GIF_ERROR){ } switch (rectyp) { case IMAGE_DESC_RECORD_TYPE: if (DGifGetImageDesc(gplik) == GIF_ERROR) { PrintGifError(); } image_x=gplik->Image.Width; image_y=gplik->Image.Height; if (gplik->Image.Interlace) { printf(" interlaced"); for (form79=depth=0;depth<4;depth++) for (ero=gplik->Image.Top+InterlacedOffset[depth];ero<gplik->Image.Top+gplik->Image.Height;ero+=InterlacedJumps[depth]){ DGifGetLine(gplik,linia,image_x); for (x=0;x<image_x;x++) { tempi=linia[x]; tabr[x+(ero*image_x)]=tab2r[tempi]; tabg[x+(ero*image_x)]=tab2g[tempi]; tabb[x+(ero*image_x)]=tab2b[tempi]; } } } else { for (y=0;y<image_y;y++) { DGifGetLine(gplik,linia,image_x); for (x=0;x<image_x;x++) { tempi=linia[x]; tabr[x+(y*image_x)]=tab2r[tempi]; tabg[x+(y*image_x)]=tab2g[tempi]; tabb[x+(y*image_x)]=tab2b[tempi]; } } } break; case EXTENSION_RECORD_TYPE: if (DGifGetExtension(gplik, &extcode, &extension) == GIF_ERROR) { } while (extension != NULL) { if(extcode == COMMENT_EXT_FUNC_CODE) { extension[extension[0]+1] = '\000'; strcat(linia, (char*)extension+1); printf("\nComment : "); for (x=5;x<extension[0]+6;x++){ printf("%c",linia[x]);} } if (DGifGetExtensionNext(gplik, &extension) == GIF_ERROR) { } } break; case TERMINATE_RECORD_TYPE: break; default: break; } } while (rectyp !=TERMINATE_RECORD_TYPE); printf("\n"); DGifCloseFile(gplik); return 0; #else return 1;#endif}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -