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

📄 main.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 4 页
字号:
				//this is a POINTER to a node 				if (strstr(bf->familly, "SF")) {					fprintf(f, "\tgf_node_unregister((GF_Node *) p->%s, (GF_Node *) p);\t\n", bf->name);				} else {					//this is a POINTER to a chain					fprintf(f, "\tgf_node_unregister_children((GF_Node *) p, p->%s);\t\n", bf->name);				}			}		}		fprintf(f, "\tgf_node_free((GF_Node *) p);\n}\n\n");		//node fields		WriteNodeFields(f, n);		WriteNodeQuant(f, n);		//		//		Constructor		//		fprintf(f, "\n\nGF_Node *%s_Create()\n{\n\tM_%s *p;\n\tGF_SAFEALLOC(p, M_%s);\n", n->name, n->name, n->name);		fprintf(f, "\tif(!p) return NULL;\n");		fprintf(f, "\tgf_node_setup((GF_Node *)p, TAG_MPEG4_%s);\n", n->name);		for (i=0; i<gf_list_count(n->Fields); i++) {			bf = gf_list_get(n->Fields, i);			//setup all children node			if (!strcmp(bf->name, "children") && stricmp(n->name, "audioBuffer")) {				fprintf(f, "\tgf_sg_vrml_parent_setup((GF_Node *) p);\n");				break;			}			else if ( strstr(bf->familly, "Node") && strncmp(bf->type, "event", 5) ) {		#if 0				//this is a POINTER to a node 				if (strstr(bf->familly, "MF")) {					//this is a POINTER to a chain					fprintf(f, "\tp->%s = gf_list_new();\t\n", bf->name);				}#endif			}			/*special case for SFCommandBuffer: we also create a command list*/			if (!stricmp(bf->familly, "SFCommandBuffer")) {				fprintf(f, "\tp->%s.commandList = gf_list_new();\t\n", bf->name);			}		}		//setup pointers		fprintf(f, "\n#ifdef GF_NODE_USE_POINTERS\n");		fprintf(f, "\t((GF_Node *)p)->sgprivate->name = \"%s\";\n", n->name);		fprintf(f, "\t((GF_Node *)p)->sgprivate->node_del = %s_Del;\n", n->name);		fprintf(f, "\t((GF_Node *)p)->sgprivate->get_field_count = %s_get_field_count;\n", n->name);		fprintf(f, "\t((GF_Node *)p)->sgprivate->get_field = %s_get_field;\n", n->name);		fprintf(f, "#endif\n\n");		//check if we have a child node		for (i=0; i<gf_list_count(n->Fields); i++) {			bf = gf_list_get(n->Fields, i);			if ( !strcmp(bf->name, "children") || 					( !strstr(bf->type, "event") && strstr(bf->familly, "MF") && strstr(bf->familly, "Node")) ) {				sprintf(n->Child_NDT_Name, "NDT_SF%s", bf->familly+2);				break;			}		}		fprintf(f, "\n\t/*default field values*/\n");				for (i=0; i<gf_list_count(n->Fields); i++) {			bf = gf_list_get(n->Fields, i);			//nothing on eventIn or Out			if (!strcmp(bf->type, "eventIn")) continue;			if (!strcmp(bf->type, "eventOut")) continue;			if (!strcmp(bf->def, "")) continue;			//no default on nodes			if (strstr(bf->familly, "Node")) continue;			//extract default falue						//			//		SF Fields			//						//SFBool			if (!strcmp(bf->familly, "SFBool")) {				if (!strcmp(bf->def, "1") || !strcmp(bf->def, "TRUE")) 					fprintf(f, "\tp->%s = 1;\n", bf->name);			}			//SFFloat			else if (!strcmp(bf->familly, "SFFloat")) {				fprintf(f, "\tp->%s = %s;\n", bf->name, GetFixedPrintout(bf->def));			}			//SFTime			else if (!strcmp(bf->familly, "SFTime")) {				fprintf(f, "\tp->%s = %s;\n", bf->name, bf->def);			}			//SFInt32			else if (!strcmp(bf->familly, "SFInt32")) {				fprintf(f, "\tp->%s = %s;\n", bf->name, bf->def);			}			//SFColor			else if (!strcmp(bf->familly, "SFColor")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.red = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				fprintf(f, "\tp->%s.green = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				fprintf(f, "\tp->%s.blue = %s;\n", bf->name, GetFixedPrintout(token));			}			//SFVec2f			else if (!strcmp(bf->familly, "SFVec2f")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.x = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.y = %s;\n", bf->name, GetFixedPrintout(token));			}			//SFVec3f			else if (!strcmp(bf->familly, "SFVec3f")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.x = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.y = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.z = %s;\n", bf->name, GetFixedPrintout(token));			}			//SFVec4f & SFRotation			else if (!strcmp(bf->familly, "SFVec4f") || !strcmp(bf->familly, "SFRotation")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.x = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.y = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.z = %s;\n", bf->name, GetFixedPrintout(token));				GetNextToken(token, " ");				TranslateToken(token);				fprintf(f, "\tp->%s.q = %s;\n", bf->name, GetFixedPrintout(token));			}			//SFString			else if (!strcmp(bf->familly, "SFString")) {				fprintf(f, "\tp->%s.buffer = (char*)malloc(sizeof(char) * %d);\n", bf->name, strlen(bf->def)+1);				fprintf(f, "\tstrcpy(p->%s.buffer, \"%s\");\n", bf->name, bf->def);			}					//			//		MF Fields			//			//MFFloat			else if (!strcmp(bf->familly, "MFFloat")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, " ,")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (SFFloat*)malloc(sizeof(SFFloat)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, " ,")) go = 0;					TranslateToken(token);					fprintf(f, "\tp->%s.vals[%d] = %s;\n", bf->name, j, GetFixedPrintout(token));					j+=1;				}			}			//MFVec2f			else if (!strcmp(bf->familly, "MFVec2f")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (SFVec2f*)malloc(sizeof(SFVec2f)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].x = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].y = %s;\n", bf->name, j, GetFixedPrintout(tok));					j+=1;					CurrentLine = store;				}			}			//MFVec3f			else if (!strcmp(bf->familly, "MFVec3f")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (SFVec3f *)malloc(sizeof(SFVec3f)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].x = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].y = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].z = %s;\n", bf->name, j, GetFixedPrintout(tok));					j+=1;					CurrentLine = store;				}			}			//MFVec4f			else if (!strcmp(bf->familly, "MFVec4f") || !strcmp(bf->familly, "MFRotation")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (GF_Vec4*)malloc(sizeof(GF_Vec4)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].x = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].y = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].z = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d].q = %s;\n", bf->name, j, GetFixedPrintout(tok));					j+=1;					CurrentLine = store;				}			}			//MFInt32			else if (!strcmp(bf->familly, "MFInt32")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (SFInt32*)malloc(sizeof(SFInt32)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " ");					fprintf(f, "\tp->%s.vals[%d] = %s;\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFColor			else if (!strcmp(bf->familly, "MFColor")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (SFColor*)malloc(sizeof(SFColor)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " ");					fprintf(f, "\tp->%s.vals[%d].red = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					fprintf(f, "\tp->%s.vals[%d].green = %s;\n", bf->name, j, GetFixedPrintout(tok));					GetNextToken(tok, " ");					fprintf(f, "\tp->%s.vals[%d].blue = %s;\n", bf->name, j, GetFixedPrintout(tok));					j+=1;					CurrentLine = store;				}			}			//MFString			else if (!strcmp(bf->familly, "MFString")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (char**)malloc(sizeof(SFString)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " \"");					fprintf(f, "\tp->%s.vals[%d] = (char*)malloc(sizeof(char) * %d);\n", bf->name, j, strlen(tok)+1);					fprintf(f, "\tstrcpy(p->%s.vals[%d], \"%s\");\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFTime			else if (!strcmp(bf->familly, "MFTime")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(f, "\tp->%s.vals = (SFTime*)malloc(sizeof(SFTime)*%d);\n", bf->name, j);				fprintf(f, "\tp->%s.count = %d;\n", bf->name, j);				j = 0;				go = 1;				CurrentLine = bf->def;				while (go) {					if (!GetNextToken(token, ",")) go = 0;					store = CurrentLine;					CurrentLine = token;					GetNextToken(tok, " \"");					TranslateToken(tok);					fprintf(f, "\tp->%s.vals[%d] = %s;\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//other nodes			else if (!strcmp(bf->familly, "SFImage")) {				//we currently only have SFImage, with NO texture so do nothing			}			//unknown init (for debug)			else {				fprintf(f, "UNKNOWN FIELD (%s);\n", bf->familly);			}		}		fprintf(f, "\treturn (GF_Node *)p;\n}\n\n");	}	fprintf(f, "\n\n\n");	//creator function	fprintf(f, "GF_Node *gf_sg_mpeg4_node_new(u32 NodeTag)\n{\n\tswitch (NodeTag) {\n");	for (i=0; i<gf_list_count(BNodes); i++) {		n = gf_list_get(BNodes, i);		if (!n->skip_impl) {			fprintf(f, "\tcase TAG_MPEG4_%s:\n\t\treturn %s_Create();\n", n->name, n->name);		}	}	fprintf(f, "\tdefault:\n\t\treturn NULL;\n\t}\n}\n\n");	fprintf(f, "#ifndef GF_NODE_USE_POINTERS\n");	fprintf(f, "const char *gf_sg_mpeg4_node_get_class_name(u32 NodeTag)\n{\n\tswitch (NodeTag) {\n");	for (i=0; i<gf_list_count(BNodes); i++) {		n = gf_list_get(BNodes, i);		if (!n->skip_impl) fprintf(f, "\tcase TAG_MPEG4_%s:\n\t\treturn \"%s\";\n", n->name, n->name);	}	fprintf(f, "\tdefault:\n\t\treturn \"Unknown Node\";\n\t}\n}\n\n");	fprintf(f, "void gf_sg_mpeg4_node_del(GF_Node *node)\n{\n\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(BNodes); i++) {		n = gf_list_get(BNodes, i);		if (!n->skip_impl) {			fprintf(f, "\tcase TAG_MPEG4_%s:\n\t\t%s_Del(node); return;\n", n->name, n->name);		}	}	fprintf(f, "\tdefault:\n\t\treturn;\n\t}\n}\n\n");	fprintf(f, "u32 gf_sg_mpeg4_node_get_field_count(GF_Node *node, u8 code_mode)\n{\n\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(BNodes); i++) {		n = gf_list_get(BNodes, i);		if (!n->skip_impl) {			fprintf(f, "\tcase TAG_MPEG4_%s:return %s_get_field_count(node, code_mode);\n", n->name, n->name);		}	}	fprintf(f, "\tdefault:\n\t\treturn 0;\n\t}\n}\n\n");	fprintf(f, "GF_Err gf_sg_mpeg4_node_get_field(GF_Node *node, GF_FieldInfo *field)\n{\n\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(BNodes); i++) {		n = gf_list_get(BNodes, i);		if (!n->skip_impl) {			fprintf(f, "\tcase TAG_MPEG4_%s: return %s_get_field(node, field);\n", n->name, n->name);		}	}	fprintf(f, "\tdefault:\n\t\treturn GF_BAD_PARAM;\n\t}\n}\n\n");	fprintf(f, "\n\n#endif\n\n");	fprintf(f, "GF_Err gf_sg_mpeg4_node_get_field_index(GF_Node *node, u32 inField, u8 code_mode, u32 *fieldIndex)\n{\n\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(BNodes); i++) {		n = gf_list_get(BNodes, i);		if (!n->skip_impl) {			fprintf(f, "\tcase TAG_MPEG4_%s: return %s_get_field_index(node, inField, code_mode, fieldIndex);\n", n->name, n->name);		}	}

⌨️ 快捷键说明

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