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

📄 mga_pi4.c

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