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

📄 v1.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 2 页
字号:
		fprintf(output, "\tp->fx.value = FIX_ONE/2;\n");		fprintf(output, "\tp->fy.value = FIX_ONE/2;\n");	}	else if (!strcmp(svg_elt->svg_name, "video") || !strcmp(svg_elt->svg_name, "audio") || !strcmp(svg_elt->svg_name, "animation")) {		fprintf(output, "\tp->timing->dur.type = SMIL_DURATION_MEDIA;\n");	}	fprintf(output, "\treturn p;\n}\n\n");	/***************************************************/		/*                     Destructor                  */	/***************************************************/		fprintf(output, "static void gf_svg_sa_%s_del(GF_Node *node)\n{\n", svg_elt->implementation_name);	fprintf(output, "\tSVG_SA_%sElement *p = (SVG_SA_%sElement *)node;\n", svg_elt->implementation_name, svg_elt->implementation_name);	fprintf(output, "\tgf_svg_sa_reset_base_element((SVG_SA_Element *)p);\n");	if (!strcmp(svg_elt->implementation_name, "conditional")) {		fprintf(output, "\tgf_svg_sa_reset_lsr_conditional(&p->updates);\n");	} 	else if (!strcmp(svg_elt->implementation_name, "a")) {		fprintf(output, "\tif (p->target) free(p->target);\n");	} 	for (i = 0; i < gf_list_count(svg_elt->attributes); i++) {		SVGGenAttribute *att = gf_list_get(svg_elt->attributes, i);		if (!strcmp("SMIL_KeyPoints", att->impl_type)) {			fprintf(output, "\tgf_smil_delete_key_types(p->%s);\n", att->implementation_name);		} else if (!strcmp("SVG_Coordinates", att->impl_type)) {			fprintf(output, "\tgf_svg_delete_coordinates(p->%s);\n", att->implementation_name);		} else if (!strcmp("SVG_Points", att->impl_type)) {			fprintf(output, "\tgf_svg_delete_points(p->%s);\n", att->implementation_name);		} else if (!strcmp("SVG_PathData", att->impl_type)) {			if (!strcmp(svg_elt->svg_name, "animateMotion")) {				fprintf(output, "\tgf_svg_reset_path(p->path);\n");			} else {				fprintf(output, "\tgf_svg_reset_path(p->d);\n");			}		} else if (!strcmp("XMLRI", att->impl_type)) {			fprintf(output, "\tgf_svg_reset_iri(node->sgprivate->scenegraph, &p->%s);\n", att->implementation_name);		} else if (!strcmp("SVG_FontFamily", att->impl_type)) {			fprintf(output, "\tif (p->%s.value) free(p->%s.value);\n", att->implementation_name, att->implementation_name);		} else if (!strcmp("SVG_String", att->impl_type) || !strcmp("SVG_ContentType", att->impl_type)) {			fprintf(output, "\tfree(p->%s);\n", att->implementation_name);		}	}	if (svg_elt->has_transform) {		fprintf(output, "\tif (p->motionTransform) free(p->motionTransform);\n");	} 	fprintf(output, "\tgf_sg_parent_reset((GF_Node *) p);\n");	fprintf(output, "\tgf_node_free((GF_Node *)p);\n");	fprintf(output, "}\n\n");		/***************************************************/		/*				Attribute Access				   */	/***************************************************/		fprintf(output, "static GF_Err gf_svg_sa_%s_get_attribute(GF_Node *node, GF_FieldInfo *info)\n{\n", svg_elt->implementation_name);	fprintf(output, "\tswitch (info->fieldIndex) {\n");	svg_elt->nb_atts = 0;	svg_elt->nb_atts = generateCoreInfo(output, svg_elt, svg_elt->nb_atts);	if (svg_elt->has_media_properties) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 2, "((SVG_SA_Element *)node)->properties->", svg_elt->nb_atts);	if (svg_elt->has_properties) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 1, "((SVG_SA_Element *)node)->properties->", svg_elt->nb_atts);	if (svg_elt->has_opacity_properties) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 3, "((SVG_SA_Element *)node)->properties->", svg_elt->nb_atts);	if (svg_elt->has_focus) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 4, "((SVG_SA_Element *)node)->focus->", svg_elt->nb_atts);	if (svg_elt->has_xlink) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 5, "((SVG_SA_Element *)node)->xlink->", svg_elt->nb_atts);	if (svg_elt->has_timing) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 6, "((SVG_SA_Element *)node)->timing->", svg_elt->nb_atts);	if (svg_elt->has_sync) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 7, "((SVG_SA_Element *)node)->sync->", svg_elt->nb_atts);	if (svg_elt->has_animation) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 8, "((SVG_SA_Element *)node)->anim->", svg_elt->nb_atts);	if (svg_elt->has_conditional) 		svg_elt->nb_atts = generateGenericInfo(output, svg_elt, 9, "((SVG_SA_Element *)node)->conditional->", svg_elt->nb_atts);	if (svg_elt->has_transform) {		svg_elt->nb_atts = generateTransformInfo(output, svg_elt, svg_elt->nb_atts);		svg_elt->nb_atts = generateMotionTransformInfo(output, svg_elt, svg_elt->nb_atts);	}	if (svg_elt->has_xy) 		svg_elt->nb_atts = generateXYInfo(output, svg_elt, svg_elt->nb_atts);	for (i = 0; i < gf_list_count(svg_elt->attributes); i++) {		SVGGenAttribute *att = gf_list_get(svg_elt->attributes, i);		generateAttributeInfo(output, svg_elt->implementation_name, att, svg_elt->nb_atts++);	}	fprintf(output, "\t\tdefault: return GF_BAD_PARAM;\n\t}\n}\n\n");	/***************************************************/		/*	gf_svg_sa_%s_get_attribute_index_from_name		   */	/***************************************************/		fprintf(output, "s32 gf_svg_sa_%s_get_attribute_index_from_name(char *name)\n{\n", svg_elt->implementation_name);	{		u32 att_index = 0;		fprintf(output, "\tif(!strcmp(\"id\", name)) return %d;\n", att_index); 		att_index++;		fprintf(output, "\tif(!strcmp(\"xml:id\", name)) return %d;\n", att_index); 		att_index++;		fprintf(output, "\tif(!strcmp(\"class\", name)) return %d;\n", att_index); 		att_index++;		fprintf(output, "\tif(!strcmp(\"xml:lang\", name)) return %d;\n", att_index); 		att_index++;		fprintf(output, "\tif(!strcmp(\"xml:base\", name)) return %d;\n", att_index); 		att_index++;		fprintf(output, "\tif(!strcmp(\"xml:space\", name)) return %d;\n", att_index); 		att_index++;		fprintf(output, "\tif(!strcmp(\"externalResourcesRequired\", name)) return %d;\n", att_index); 		att_index++;		if (svg_elt->has_media_properties) 			att_index = generateIndexInfo(output, svg_elt, 2, att_index);		if (svg_elt->has_properties) 			att_index = generateIndexInfo(output, svg_elt, 1, att_index);		if (svg_elt->has_opacity_properties) 			att_index = generateIndexInfo(output, svg_elt, 3, att_index);		if (svg_elt->has_focus) 			att_index = generateIndexInfo(output, svg_elt, 4, att_index);		if (svg_elt->has_xlink) 			att_index = generateIndexInfo(output, svg_elt, 5, att_index);		if (svg_elt->has_timing) 			att_index = generateIndexInfo(output, svg_elt, 6, att_index);		if (svg_elt->has_sync) 			att_index = generateIndexInfo(output, svg_elt, 7, att_index);		if (svg_elt->has_animation) 			att_index = generateIndexInfo(output, svg_elt, 8, att_index);		if (svg_elt->has_conditional) 			att_index = generateIndexInfo(output, svg_elt, 9, att_index);		if (svg_elt->has_transform) {			fprintf(output, "\tif(!strcmp(\"transform\", name)) return %d;\n", att_index); 			att_index++;			/*motionTransform*/			fprintf(output, "\tif(!strcmp(\"motionTransform\", name)) return %d;\n", att_index); 			att_index++;		}		if (svg_elt->has_xy) {			fprintf(output, "\tif(!strcmp(\"x\", name)) return %d;\n", att_index); 			att_index++;			fprintf(output, "\tif(!strcmp(\"y\", name)) return %d;\n", att_index); 			att_index++;		}		for (i = 0; i < gf_list_count(svg_elt->attributes); i++) {			SVGGenAttribute *att = gf_list_get(svg_elt->attributes, i);			fprintf(output, "\tif(!strcmp(\"%s\", name)) return %d;\n", att->svg_name, att_index); 			att_index++;		}	}	fprintf(output, "\treturn -1;\n}\n\n");}void generateSVGCode_V1(GF_List *svg_elements) {	FILE *output;	u32 i;	/***************************************************/		/***************************************************/		/*************** Creating .h file ******************/		/***************************************************/		/***************************************************/		output = BeginFile(0);	fprintf(output, "#include <gpac/scenegraph_svg.h>\n\n\n");	fprintf(output, "/* Definition of SVG element internal tags */\n");	fprintf(output, "/* TAG names are made of \"TAG_SVG\" + SVG element name (with - replaced by _) */\n");	/* write all tags */	fprintf(output, "enum {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		if (i == 0) {			fprintf(output, "\tTAG_SVG_%s = GF_NODE_RANGE_FIRST_SVG_SA", elt->implementation_name);		} else {			fprintf(output, ",\n\tTAG_SVG_%s", elt->implementation_name);		}	}		fprintf(output, ",\n\t/*undefined elements (when parsing) use this tag*/\n\tTAG_SVG_UndefinedElement\n};\n\n");		fprintf(output, "/******************************************\n"); 	fprintf(output, "*   SVG Elements structure definitions    *\n"); 	fprintf(output, "*******************************************/\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		generateNode(output, elt);	}	fprintf(output, "/******************************************\n"); 	fprintf(output, "*  End SVG Elements structure definitions *\n"); 	fprintf(output, "*******************************************/\n");	EndFile(output, 0);	/***************************************************/		/***************************************************/		/*************** Creating .c file ******************/		/***************************************************/		/***************************************************/		output = BeginFile(1);	fprintf(output, "#include <gpac/nodes_svg_sa.h>\n\n");		fprintf(output, "#ifndef GPAC_DISABLE_SVG\n\n");	fprintf(output, "#include <gpac/internal/scenegraph_dev.h>\n\n");	fprintf(output, "#ifdef GPAC_ENABLE_SVG_SA\n\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		generateNodeImpl(output, elt);	}	/***************************************************/		/* SVG_SA_Element *gf_svg_sa_create_node(u32 ElementTag)  */	/***************************************************/		fprintf(output, "SVG_SA_Element *gf_svg_sa_create_node(u32 ElementTag)\n");	fprintf(output, "{\n");	fprintf(output, "\tswitch (ElementTag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\t\tcase TAG_SVG_%s: return (SVG_SA_Element*) gf_svg_new_%s();\n",elt->implementation_name,elt->implementation_name);	}	fprintf(output, "\t\tdefault: return NULL;\n\t}\n}\n\n");		/***************************************************/		/* void gf_svg_sa_element_del(SVG_SA_Element *elt)        */	/***************************************************/		fprintf(output, "void gf_svg_sa_element_del(SVG_SA_Element *elt)\n{\n");	fprintf(output, "\tGF_Node *node = (GF_Node *)elt;\n");	fprintf(output, "\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\t\tcase TAG_SVG_%s: gf_svg_sa_%s_del(node); return;\n", elt->implementation_name, elt->implementation_name);	}	fprintf(output, "\t\tdefault: return;\n\t}\n}\n\n");	/***************************************************/		/* u32 gf_svg_sa_get_attribute_count(SVG_SA_Element *elt) */	/***************************************************/		fprintf(output, "u32 gf_svg_sa_get_attribute_count(GF_Node *node)\n{\n");	fprintf(output, "\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\t\tcase TAG_SVG_%s: return %i;\n", elt->implementation_name, elt->nb_atts);	}	fprintf(output, "\t\tdefault: return 0;\n\t}\n}\n\n");		/***********************************************************************/		/* GF_Err gf_svg_sa_get_attribute_info(GF_Node *node, GF_FieldInfo *info) */	/***********************************************************************/		fprintf(output, "GF_Err gf_svg_sa_get_attribute_info(GF_Node *node, GF_FieldInfo *info)\n{\n");	fprintf(output, "\tswitch (node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\t\tcase TAG_SVG_%s: return gf_svg_sa_%s_get_attribute(node, info);\n", elt->implementation_name, elt->implementation_name);	}	fprintf(output, "\t\tdefault: return GF_BAD_PARAM;\n\t}\n}\n\n");	/****************************************************************/		/* u32 gf_svg_sa_node_type_by_class_name(const char *element_name) */	/****************************************************************/		fprintf(output, "u32 gf_svg_sa_node_type_by_class_name(const char *element_name)\n{\n\tif (!element_name) return TAG_UndefinedNode;\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\tif (!stricmp(element_name, \"%s\")) return TAG_SVG_%s;\n", elt->svg_name, elt->implementation_name);	}	fprintf(output, "\treturn TAG_UndefinedNode;\n}\n\n");	/***************************************************/		/* const char *gf_svg_sa_get_element_name(u32 tag) */	/***************************************************/		fprintf(output, "const char *gf_svg_sa_get_element_name(u32 tag)\n{\n\tswitch(tag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\tcase TAG_SVG_%s: return \"%s\";\n", elt->implementation_name, elt->svg_name);	}	fprintf(output, "\tdefault: return \"UndefinedNode\";\n\t}\n}\n\n");	/***************************************************/		/* const char *gf_svg_sa_get_attribute_index_by_name(u32 tag) */	/***************************************************/		fprintf(output, "s32 gf_svg_sa_get_attribute_index_by_name(GF_Node *node, char *name)\n{\n\tswitch(node->sgprivate->tag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\tcase TAG_SVG_%s: return gf_svg_sa_%s_get_attribute_index_from_name(name);\n", elt->implementation_name, elt->implementation_name);	}	fprintf(output, "\tdefault: return -1;\n\t}\n}\n\n");	/***************************************************/		/* Bool gf_svg_is_element_transformable(u32 tag) */	/***************************************************/		fprintf(output, "Bool gf_svg_is_element_transformable(u32 tag)\n{\n\tswitch(tag) {\n");	for (i=0; i<gf_list_count(svg_elements); i++) {		SVGGenElement *elt = (SVGGenElement *)gf_list_get(svg_elements, i);		fprintf(output, "\tcase TAG_SVG_%s:", elt->implementation_name);		if (elt->has_transform) fprintf(output, "return 1;\n");		else fprintf(output, "return 0;\n");	}	fprintf(output, "\tdefault: return 0;\n\t}\n}\n");	fprintf(output, "#endif /*GPAC_ENABLE_SVG_SA*/\n");	fprintf(output, "#endif /*GPAC_DISABLE_SVG*/\n\n");	EndFile(output, 1); 	generate_laser_tables(svg_elements);}

⌨️ 快捷键说明

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