📄 mga_pi4.c
字号:
/* (c) HelDoRe PICTOR unit ... v0.0.2*/ #define VERPI4 " unit v0.0.2"#include <stdio.h>#include "../mga_view.h"void help_pi4(){printf("PIC%s\n + 8 bpp\n",VERPI4);}int detect_pi4(){ int typ,cmap,esk,rle,clip,ile,ile2; tempi=fgetc16b(plik); if (tempi!=4660) return 1; image_x=fgetc16b(plik); image_y=fgetc16b(plik); fseek(plik,4,SEEK_CUR); depth=fgetc(plik); fseek(plik,1,SEEK_CUR); typ=fgetc(plik); cmap=(fgetc(plik) & 4); fseek(plik,fgetc16b(plik),SEEK_CUR); fseek(plik,1,SEEK_CUR); if (check_image(image_x,image_y,depth)==3) return 3; printf("Pictor%s\n",VERPI4); printf("PIC detected : %ix%ix%i type %c",image_x,image_y,depth,typ); if (cmap != 4) { printf("no color map"); } printf("\n"); if (depth != 8) { printf("Only 8 bpp supported !\n"); return 2; } if (typ != 76) { printf("Only L type supported !\n"); return 2; } if (cmap==4) { for (x=0;x<256;x++) { tab2r[x]=fgetc(plik)*4; tab2g[x]=fgetc(plik)*4; tab2b[x]=fgetc(plik)*4; } } else { for (x=0;x<256;x++) { tab2r[x]=x/2; tab2g[x]=x/4; tab2b[x]=x; } } fseek(plik,4,SEEK_CUR); ile=fgetc16b(plik);ile2=ile; esk=fgetc(plik); for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { if ((tempi=fgetc(plik))==-1) return 0; if (tempi==esk) { rle=fgetc(plik); if (rle!=0) { clip=fgetc(plik); for (depth=0;depth<rle;depth++) { tabr[(image_y-1-y)*image_x+x]=tab2r[clip]; tabg[(image_y-1-y)*image_x+x]=tab2g[clip]; tabb[(image_y-1-y)*image_x+x++]=tab2b[clip]; if (x>=image_x) {x=0;y++;} } x--; } if (rle==0) { rle=fgetc16b(plik); clip=fgetc(plik); for (depth=0;depth<rle;depth++) { tabr[(image_y-1-y)*image_x+x]=tab2r[clip]; tabg[(image_y-1-y)*image_x+x]=tab2g[clip]; tabb[(image_y-1-y)*image_x+x++]=tab2b[clip]; if (x>=image_x) {x=0;y++;} } x--; } } if (tempi != esk) { tabr[(image_y-1-y)*image_x+x]=tab2r[tempi]; tabg[(image_y-1-y)*image_x+x]=tab2g[tempi]; tabb[(image_y-1-y)*image_x+x]=tab2b[tempi]; } if ((x+1)+image_x*y==ile) { fseek(plik,2,SEEK_CUR); ile2=fgetc16b(plik); ile+=ile2; esk=fgetc(plik); } } } return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -