📄 mga_xpm.c
字号:
/* (c) HelDoRe Xpm unit ... v0.0.4 Supported formats : 1 , 2 bpc*/ #define VERXPM " unit v0.0.4"#include <stdio.h>#include "../mga_view.h"void help_xpm(){#ifdef USE_MAG_XPMprintf("XPM%s\n + uses ImageMagick\n",VERXPM);#elseprintf("XPM%s\n + 8 bpp\n + 16 bpp\n",VERXPM);#endif}int zmien(int cozm){ switch (cozm) { case (int)'0':return 0; case (int)'1':return 1; case (int)'2':return 2; case (int)'3':return 3; case (int)'4':return 4; case (int)'5':return 5; case (int)'6':return 6; case (int)'7':return 7; case (int)'8':return 8; case (int)'9':return 9; case (int)'A':return 10; case (int)'B':return 11; case (int)'C':return 12; case (int)'D':return 13; case (int)'E':return 14; case (int)'F':return 15; case (int)'a':return 10; case (int)'b':return 11; case (int)'c':return 12; case (int)'d':return 13; case (int)'e':return 14; case (int)'f':return 15; } return -1;}int detect_xpm(){ int bpc; char syg[10]="/* XPM */"; char buff[100]; int ii,ii2,xx; image_x=0; image_y=0; for (tempi=0;tempi<9;tempi++){ if ((char)fgetc(plik) != syg[tempi]) return 1 ;} printf("xpm%s",VERXPM);#ifdef USE_MAG_XPM printf(" (IM)");#endif printf("\n"); depth=0; do { ii=fgetc(plik); ii2=fgetc(plik); tempi=fgetc(plik); fseek(plik,-2,SEEK_CUR); if (ii == (int)'c') if (ii2 == (int)' ') if (tempi == (int)'c') depth=1; } while (depth == 0) ; fseek(plik,6,SEEK_CUR); tempi=0; while (ii !=(int)'='){ ii=fgetc(plik); buff[tempi]=(char)ii; tempi++; } buff[tempi-1]=(char)0; printf("Pixmap name : %s\n",buff); while (ii !=(int)'"'){ ii=fgetc(plik); } do { ii=fgetc(plik); }while (ii ==(int)' '); fseek(plik,-1,SEEK_CUR); tempi=0; while (ii !=(int)' '){ ii=fgetc(plik); buff[tempi]=(char)ii; tempi++; } tempi--; buff[tempi]=(char)0; xx=1; for (ii=tempi;ii>0;ii--) {image_x=image_x+((int)buff[ii-1]-48)*xx; xx=xx*10; } do { ii=fgetc(plik); }while (ii ==(int)' '); fseek(plik,-1,SEEK_CUR); tempi=0; while (ii !=(int)' '){ ii=fgetc(plik); buff[tempi]=(char)ii; tempi++; } tempi--; buff[tempi]=(char)0; xx=1; for (ii=tempi;ii>0;ii--) {image_y=image_y+((int)buff[ii-1]-48)*xx; xx=xx*10; } do { ii=fgetc(plik); }while (ii ==(int)' '); fseek(plik,-1,SEEK_CUR); tempi=0; while (ii !=(int)' '){ ii=fgetc(plik); buff[tempi]=(char)ii; tempi++; } tempi--; buff[tempi]=(char)0; xx=1; depth=0; for (ii=tempi;ii>0;ii--) {depth=depth+((int)buff[ii-1]-48)*xx; xx=xx*10; } do { ii=fgetc(plik); }while (ii ==(int)' '); fseek(plik,-1,SEEK_CUR); bpc=fgetc(plik)-48; check_image(image_x,image_y,8); printf("Pixmap format : %ix%i %i colors %i bpc\n",image_x,image_y,depth,bpc);#ifdef USE_MAG_XPM detect_mag(0);#else/* if ((bpc != 1) && (bpc != 2)) { printf("%i byte per color not supported yet",bpc); return 2; } for (xx=0;xx<depth;xx++) { do ii=fgetc(plik); while (ii !=(int)'"'); do ii=fgetc(plik); while (ii !=(int)'"'); ii=fgetc(plik); if (bpc!=1) ii2=fgetc(plik); else ii2=ii; while (tempi !=(int)'c'){ tempi=fgetc(plik); } tempi=fgetc(plik); tempi=fgetc(plik); if (tempi!=35) {tab2r[ii][ii2]=110;tab2g[ii][ii2]=110;tab2b[ii][ii2]=110;} else { tab2r[ii][ii2]=(zmien(fgetc(plik))*15+zmien(fgetc(plik))); tab2g[ii][ii2]=(zmien(fgetc(plik))*15+zmien(fgetc(plik))); tab2b[ii][ii2]=(zmien(fgetc(plik))*15+zmien(fgetc(plik))); } } while (ii !=(int)','){ ii=fgetc(plik); } while (ii !=(int)'"'){ ii=fgetc(plik); } for (y=0;y<image_y;y++) { for (x=0;x<image_x;x++) { tempi=fgetc(plik); if (bpc ==1 ) ii2=tempi; else ii2=fgetc(plik); tabr[x][y]=tab2r[tempi][ii2]; tabg[x][y]=tab2g[tempi][ii2]; tabb[x][y]=tab2b[tempi][ii2]; } while (ii !=10){ ii=fgetc(plik); } ii=fgetc(plik); if ((ii != 34) && (y !=image_y-1)) { while (ii !=34){ ii=fgetc(plik); } } }*/ #endif return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -