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

📄 togif.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include <u.h>#include <libc.h>#include <draw.h>#include <memdraw.h>#include <ctype.h>#include <bio.h>#include "imagefile.h"voidusage(void){	fprint(2, "usage: togif [-l loopcount] [-c 'comment'] [-d Δt (ms)] [-t transparency-index] [file ... [-d Δt] file ...]\n");	exits("usage");}#define	UNSET (-12345678)voidmain(int argc, char *argv[]){	Biobuf bout;	Memimage *i, *ni;	int fd, j, dt, trans, loop;	char buf[256];	char *err, *comment, *s;	comment = nil;	dt = -1;	trans = -1;	loop = UNSET;	ARGBEGIN{	case 'l':		s = ARGF();		if(s==nil || (!isdigit(s[0]) && s[0]!='-'))			usage();		loop = atoi(s);		break;	case 'c':		comment = ARGF();		if(comment == nil)			usage();		break;	case 'd':		s = ARGF();		if(s==nil || !isdigit(s[0]))			usage();		dt = atoi(s);		break;	case 't':		s = ARGF();		if(s==nil || !isdigit(s[0]))			usage();		trans = atoi(s);		if(trans > 255)			usage();		break;	default:		usage();	}ARGEND	if(Binit(&bout, 1, OWRITE) < 0)		sysfatal("Binit failed: %r");	memimageinit();	err = nil;	if(argc == 0){		i = readmemimage(0);		if(i == nil)			sysfatal("reading input: %r");		ni = memonechan(i);		if(ni == nil)			sysfatal("converting image to RGBV: %r");		if(i != ni){			freememimage(i);			i = ni;		}		err = memstartgif(&bout, i, -1);		if(err == nil){			if(comment)				err = memwritegif(&bout, i, comment, dt, trans);			else{				snprint(buf, sizeof buf, "Converted by Plan 9 from <stdin>");				err = memwritegif(&bout, i, buf, dt, trans);			}		}	}else{		if(loop == UNSET){			if(argc == 1)				loop = -1;	/* no loop for single image */			else				loop = 0;	/* the default case: 0 means infinite loop */		}		for(j=0; j<argc; j++){			if(argv[j][0] == '-' && argv[j][1]=='d'){				/* time change */				if(argv[j][2] == '\0'){					s = argv[++j];					if(j == argc)						usage();				}else					s = &argv[j][2];				if(!isdigit(s[0]))					usage();				dt = atoi(s);				if(j == argc-1)	/* last argument must be file */					usage();				continue;			}			fd = open(argv[j], OREAD);			if(fd < 0)				sysfatal("can't open %s: %r", argv[j]);			i = readmemimage(fd);			if(i == nil)				sysfatal("can't readimage %s: %r", argv[j]);			close(fd);			ni = memonechan(i);			if(ni == nil)				sysfatal("converting image to RGBV: %r");			if(i != ni){				freememimage(i);				i = ni;			}			if(j == 0){				err = memstartgif(&bout, i, loop);				if(err != nil)					break;			}			if(comment)				err = memwritegif(&bout, i, comment, dt, trans);			else{				snprint(buf, sizeof buf, "Converted by Plan 9 from %s", argv[j]);				err = memwritegif(&bout, i, buf, dt, trans);			}			if(err != nil)				break;			freememimage(i);			comment = nil;		}	}	memendgif(&bout);	if(err != nil)		fprint(2, "togif: %s\n", err);	exits(err);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -