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

📄 fromswf.c

📁 Ming is a library for generating Macromedia Flash files (.swf), written in C, and includes useful ut
💻 C
📖 第 1 页 / 共 3 页
字号:
		if(verbose)			printf("w %d => %d\n", w1, w2);	} else {		if(verbose)			printf("w %d\n", w1);	}	getbits((BITS) tp, 2);	join_style = getbits((BITS) tp, 2);	has_fill = getbits((BITS) tp, 1);	getbits((BITS) tp, 11);	if (join_style == 2) {		readint2((BITS) tp);	} else {		if (has_fill) {			if (is_morph)				morphfillstyle(tp);			else				fillstyle(tp, 4);		} else {			rgba((BITS) tp);			if (is_morph)				rgba((BITS) tp);		}	}}static void defineshape(TAG tp, int lev){	unsigned short id;	id = change_id(tp);	if(verbose)		printf("shape %d\n", id);	alignbits(tp);	rect((BITS) tp);	if(lev == 4) {		alignbits(tp);		rect((BITS) tp);		alignbits(tp);		tp->readc(tp);	}	fillandlinestyles(tp, lev);	shape(tp, lev);}static void shape(TAG tp, int lev){	int nfillbits, nlinebits;	alignbits(tp);	nfillbits = getbits((BITS) tp, 4);	nlinebits = getbits((BITS) tp, 4);	shaperecord(tp, nfillbits, nlinebits,lev);}static void definemorphshape(TAG tp, int lev){	unsigned short id, fcnt, lcnt;	unsigned long loff;	unsigned char *endp;	int n;	id = change_id(tp);	if(verbose)		printf("morph %d\n", id);	rect((BITS) tp);	alignbits(tp);	rect((BITS) tp);	if (lev == 2) {		rect((BITS) tp);		rect((BITS) tp);		tp->readc(tp);	}	loff = readint4((BITS) tp);	endp = tp->datptr + loff;	fcnt = tp->readc(tp);	if(fcnt == 0xff)		fcnt = readint2((BITS) tp);	if(verbose)		printf ("%d fill styles\n", fcnt);	for(n = 0 ; n < fcnt ; n++)	{	alignbits(tp);		morphfillstyle(tp);	}	lcnt = tp->readc(tp);	if(lcnt == 0xff)		lcnt = readint2((BITS) tp);	if(verbose)		printf ("%d line styles\n", lcnt);	for(n = 0 ; n < lcnt ; n++)	{	alignbits(tp);		if (lev == 2)			morphlinestyle2(tp);		else			morphlinestyle(tp);	}/*	for(n = 0 ; tp->datptr < endp ; n++)	{	alignbits(tp);		shaperecord(tp, bits_req(fcnt), bits_req(lcnt), 3);	}	for( ; n > 0 ; --n)	{	alignbits(tp);		shaperecord(tp, bits_req(fcnt), bits_req(lcnt), 3);	}*/	shape(tp, 3);}static void definetext(TAG tp, int lev){	unsigned short textid;	int nglyphbits, nadvancebits;	int n, nglyphs, chcode, dx;	int hasfont, hascolor, hasyoffset, hasxoffset;	unsigned short font=0, height;	signed short xoffs, yoffs;				textid = change_id(tp);	if(verbose) printf("text %d\n", textid);	rect((BITS) tp);	alignbits(tp);	matrix((BITS) tp);	nglyphbits = tp->readc(tp);	nadvancebits = tp->readc(tp);	alignbits(tp);	while(1)	{	if(!getbits((BITS) tp, 1))		{	nglyphs = getbits((BITS) tp, 7);			if(!nglyphs)				break;			if(verbose) printf("%d chars:\n", nglyphs);			for(n = 0 ; n < nglyphs ; n++)			{	chcode = getbits((BITS) tp, nglyphbits);				dx = getsbits((BITS) tp, nadvancebits);				if(verbose) printf("code %d dx %d\n", chcode, dx);			}		}		else		{	getbits((BITS) tp, 3);			hasfont = getbits((BITS) tp, 1);			hascolor = getbits((BITS) tp, 1);			hasyoffset = getbits((BITS) tp, 1);			hasxoffset = getbits((BITS) tp, 1);			if(hasfont)				font = change_id(tp);			if(hascolor)			{	if(lev == 2) rgba((BITS) tp);				else rgb((BITS) tp);			}			if(hasxoffset)			{	xoffs = readint2((BITS) tp);				if(verbose) printf("dx %d\n", xoffs);			}			if(hasyoffset)			{	yoffs = readint2((BITS) tp);				if(verbose) printf("dy %d\n", yoffs);			}			if(hasfont)			{	height = readint2((BITS) tp);				if(verbose) printf("font %d size %d\n", font, height);			}		}		alignbits(tp);	}}static void placeobject(TAG tp, int lv){	int hasname, hasratio, hascxform, hasmatrix, haschar, hasmove, hasactions, hasmask;	short depth, charid;	int hasfilters, hasbitmapcaching, hasblendmode;	if (lv == 3) {		getbits((BITS)tp, 5);		hasbitmapcaching = getbits((BITS)tp, 1);		hasblendmode = getbits((BITS)tp, 1);		hasfilters = getbits((BITS)tp, 1);	}	hasactions = getbits((BITS)tp, 1);	hasmask = getbits((BITS)tp, 1);	hasname = getbits((BITS)tp, 1);	hasratio = getbits((BITS)tp, 1);	hascxform = getbits((BITS)tp, 1);	hasmatrix = getbits((BITS)tp, 1);	haschar = getbits((BITS)tp, 1);	hasmove = getbits((BITS)tp, 1);	depth = readint2((BITS) tp);	if(haschar)	{	charid = change_id(tp);		if(verbose) printf("char %d depth %d\n", charid, depth);	}}static void definebutton(TAG tp){	short butid, charid, layer;	unsigned char bstate;	butid = change_id(tp);	if(verbose)		printf("char %d:\n", butid);	while((bstate = tp->readc(tp)))	{	if(bstate & 8)			if(verbose) printf("hit test ");		if(bstate & 4)			if(verbose) printf("down ");		if(bstate & 2)			if(verbose) printf("over ");		if(bstate & 1)			if(verbose) printf("up");		if(verbose) printf("\n");		charid = change_id(tp);		layer = readint2((BITS) tp);		if(verbose) printf("char %d layer %d\n", charid, layer);		alignbits(tp);		matrix((BITS) tp);	}}static void cxform(TAG tp, int alpha){	int hasadd, hasmult, nbits;	int ra, ga, ba, aa, rm, gm, bm, am=0;	hasadd = getbits((BITS) tp, 1);	hasmult = getbits((BITS) tp, 1);	nbits = getbits((BITS) tp, 4);	if(verbose) printf("cxform ");	if(hasmult)	{	rm = getsbits((BITS) tp, nbits);		gm = getsbits((BITS) tp, nbits);		bm = getsbits((BITS) tp, nbits);		if(alpha) am  = getsbits((BITS) tp, nbits);		if(verbose) printf("mul %d %d %d ", rm, gm, bm);		if(verbose) if(alpha) printf("%d ", am);	}	if(hasadd)	{	ra = getsbits((BITS) tp, nbits);		ga = getsbits((BITS) tp, nbits);		ba = getsbits((BITS) tp, nbits);		if(alpha) aa = getsbits((BITS) tp, nbits);		if(verbose) printf("add %d %d %d", ra, ga, ba);		if(verbose) if(alpha) printf(" %d", am);	}	if(verbose) printf("\n");}static void definebutton2(TAG tp){	short id, charid, offs, layer;	unsigned char ch, bstate;	id = change_id(tp);	ch = tp->readc(tp);	offs = readint2((BITS) tp);	if(verbose)		printf("id %d %s action offset %d\n", id, ch ? "menu" : "button", offs);	while((bstate = tp->readc(tp)))	{	if(bstate & 8)			if(verbose) printf("hit test ");		if(bstate & 4)			if(verbose) printf("down ");		if(bstate & 2)			if(verbose) printf("over ");		if(bstate & 1)			if(verbose) printf("up");		if(verbose) printf("\n");		charid = change_id(tp);		layer = readint2((BITS) tp);		if(verbose) printf("char %d layer %d\n", charid, layer);		alignbits(tp);		matrix((BITS) tp);		alignbits(tp);		cxform(tp, 1);	}}static void definetextfield(TAG tp){	short textid, fontid=0;	int haslength, noedit, password, multiline, wordwrap, drawbox, noselect, html, usefont;	int hascolor, haslayout, hastext, hasfont;		textid = change_id(tp);	if(verbose) printf("textfield %d\n", textid);	rect((BITS) tp);	alignbits(tp);	hastext = getbits((BITS) tp, 1);	wordwrap = getbits((BITS) tp, 1);	multiline = getbits((BITS) tp, 1);	password = getbits((BITS) tp, 1);	noedit = getbits((BITS) tp, 1);	hascolor = getbits((BITS) tp, 1);	haslength = getbits((BITS) tp, 1);	hasfont = getbits((BITS) tp, 1);	getbits((BITS) tp, 2);	haslayout = getbits((BITS) tp, 1);	noselect = getbits((BITS) tp, 1);	drawbox = getbits((BITS) tp, 1);	getbits((BITS) tp, 1);	html = getbits((BITS) tp, 1);	usefont = getbits((BITS) tp, 1);	if(hasfont)		fontid = change_id(tp);	if(verbose)	{	if ( fontid ) printf("font %d ", fontid);		if(noedit) printf("noedit ");		if(password) printf("password ");		if(multiline) printf("multiline ");		if(wordwrap) printf("wordwrap ");		if(drawbox) printf("drawbox ");		if(noselect) printf("noselect ");		if(html) printf("html ");		if(usefont) printf("usefont ");		if(hascolor) rgba((BITS) tp);		putchar('\n');	}}static void exportassets(TAG tp){	short n, nobj, id;	char ch;	nobj = readint2((BITS) tp);	for(n = 0 ; n < nobj ; n++)	{	id = change_id(tp);		if(verbose) printf("%d ", id);		while((ch = tp->readc(tp)))			if(verbose) putchar(ch);		if(verbose)			putchar((n < nobj-1) ? ' ' : '\n');	}}static void soundinfo(TAG tp){	char flags, hasenvelope, hasloops, hasoutpoint, hasinpoint, npoints;	signed short loops, lev0, lev1;	int soundpoint, n;	flags = getbits((BITS) tp, 4);	hasenvelope = getbits((BITS) tp, 1);	hasloops = getbits((BITS) tp, 1);	hasoutpoint = getbits((BITS) tp, 1);	hasinpoint = getbits((BITS) tp, 1);	if(flags & 1)		if(verbose) printf("no multiple ");	if(flags & 2)		if(verbose) printf("stop");	if(flags & 3)		if(verbose) putchar('\n');	if(hasinpoint)	{	soundpoint = readint4((BITS) tp);		if(verbose) printf("inpoint %d\n", soundpoint);	}	if(hasoutpoint)	{	soundpoint = readint4((BITS) tp);		if(verbose) printf("outpoint %d\n", soundpoint);	}	if(hasloops)	{	loops = readint2((BITS) tp);		if(verbose) printf("%d loops\n", loops);	}	if(hasenvelope)	{	npoints = tp->readc(tp);		for(n = 0 ; n < npoints ; n++)		{	soundpoint = readint4((BITS) tp);			lev0 = readint2((BITS) tp);			lev1 = readint2((BITS) tp);			if(verbose) printf("%d: %d %d\n", soundpoint, lev0, lev1);		}	}}static void definebuttonsound(TAG tp){	int id, n, snds[4];	id = change_id(tp);	if(verbose)		printf("id %d\n", id);	for(n = 0 ; n < 4 ; n++)	{	snds[n] = change_id(tp);		if(verbose)			printf("sound %d:\n", snds[n]);		alignbits(tp);		if(snds[n]) soundinfo(tp);	}}extern int SWF_gNumCharacters;/*  * load and create a SWF File as MovieClip  */SWFPrebuiltClipnewSWFPrebuiltClip_fromInput(SWFInput input){	SWFPrebuiltClip clip;	SWFOutput display, defines, out;	SWFPrebuilt deps;	TAG tp;	struct swfile *swf;	int type = 0, todisplay;		swf = openswf(input);	if ( ! swf ) return NULL;	clip = newSWFPrebuiltClip();	clip->frames = swf->frames;	display = clip->display;	deps = newSWFPrebuilt();	SWFCharacter_addDependency((SWFCharacter)clip, (SWFCharacter)deps);	defines = deps->defines;	idoffset = SWF_gNumCharacters;	maxid = SWF_gNumCharacters;	// read the swf file here	tp = readtag_file(swf);		if(tp->type != SWF_SETBACKGROUNDCOLOR)			swfseek(swf, -(tp->hdrlen + tp->size));	if(tp->alloced)		free(tp->datbuf);	free(tp);	do	{	tp = readtag_file(swf);		type = tp->type;		if(drop_tag(tp))		{			if(tp->alloced)				free(tp->datbuf);			free(tp);			continue;		}		todisplay = handle_tag(tp);		out = todisplay ? display : defines;		SWFOutput_writeBuffer(out, tp->hdr, tp->hdrlen);		if(tp->size)			SWFOutput_writeBuffer(out, tp->datbuf, tp->size);		if(tp->alloced)			free(tp->datbuf);		free(tp);	} while(type);	if(swf->compressed)		destroySWFInput(swf->input);	SWF_gNumCharacters = maxid + 1;	CHARACTERID(clip) = SWF_gNumCharacters++;	return clip;}/*  * load SWF file which can be used as a MovieClip */SWFPrebuiltClipnewSWFPrebuiltClip_fromFile(const char *filename){	FILE *fp;	SWFPrebuiltClip clip;	SWFInput input;	if(!(fp = fopen(filename, "rb")))		return NULL;	input = newSWFInput_file(fp);	clip = newSWFPrebuiltClip_fromInput(input);	destroySWFInput(input);	fclose(fp);	return clip;}

⌨️ 快捷键说明

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