⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mga_xpm.c

📁 linux下显示各种格式图片
💻 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 + -