示例#1
0
GF_EXPORT
void gf_svg_properties_reset_pointers(SVGPropertiesPointers *svg_props)
{
	if (!svg_props) return;
	if(svg_props->audio_level) gf_free(svg_props->audio_level);
	gf_svg_delete_paint(NULL, svg_props->color);
	if(svg_props->color_rendering) gf_free(svg_props->color_rendering);
	if(svg_props->display) gf_free(svg_props->display);
	if(svg_props->display_align) gf_free(svg_props->display_align);
	gf_svg_delete_paint(NULL, svg_props->fill);
	if(svg_props->fill_opacity) gf_free(svg_props->fill_opacity);
	if(svg_props->fill_rule) gf_free(svg_props->fill_rule);
	if(svg_props->font_family) {
		if (svg_props->font_family->value) gf_free(svg_props->font_family->value);
		gf_free(svg_props->font_family);
	}
	if(svg_props->font_size) gf_free(svg_props->font_size);
	if(svg_props->font_style) gf_free(svg_props->font_style);
	if(svg_props->font_variant) gf_free(svg_props->font_variant);
	if(svg_props->font_weight) gf_free(svg_props->font_weight);
	if(svg_props->image_rendering) gf_free(svg_props->image_rendering);
	if(svg_props->line_increment) gf_free(svg_props->line_increment);
	if(svg_props->opacity) gf_free(svg_props->opacity);
	if(svg_props->pointer_events) gf_free(svg_props->pointer_events);
	if(svg_props->shape_rendering) gf_free(svg_props->shape_rendering);
	gf_svg_delete_paint(NULL, svg_props->solid_color);
	if(svg_props->solid_opacity) gf_free(svg_props->solid_opacity);
	gf_svg_delete_paint(NULL, svg_props->stop_color);
	if(svg_props->stop_opacity) gf_free(svg_props->stop_opacity);
	gf_svg_delete_paint(NULL, svg_props->stroke);
	if(svg_props->stroke_dasharray) {
		if (svg_props->stroke_dasharray->array.count) gf_free(svg_props->stroke_dasharray->array.vals);
		gf_free(svg_props->stroke_dasharray);
	}
	if(svg_props->stroke_dashoffset) gf_free(svg_props->stroke_dashoffset);
	if(svg_props->stroke_linecap) gf_free(svg_props->stroke_linecap);
	if(svg_props->stroke_linejoin) gf_free(svg_props->stroke_linejoin);
	if(svg_props->stroke_miterlimit) gf_free(svg_props->stroke_miterlimit);
	if(svg_props->stroke_opacity) gf_free(svg_props->stroke_opacity);
	if(svg_props->stroke_width) gf_free(svg_props->stroke_width);
	if(svg_props->text_align) gf_free(svg_props->text_align);
	if(svg_props->text_anchor) gf_free(svg_props->text_anchor);
	if(svg_props->text_rendering) gf_free(svg_props->text_rendering);
	if(svg_props->vector_effect) gf_free(svg_props->vector_effect);
	gf_svg_delete_paint(NULL, svg_props->viewport_fill);
	if(svg_props->viewport_fill_opacity) gf_free(svg_props->viewport_fill_opacity);
	if(svg_props->visibility) gf_free(svg_props->visibility);
	memset(svg_props, 0, sizeof(SVGPropertiesPointers));
}
示例#2
0
void gf_svg_delete_attribute_value(u32 type, void *value, GF_SceneGraph *sg)
{
	GF_List *l;
	switch (type) {
	case SVG_Paint_datatype:
		gf_svg_delete_paint(sg, (SVG_Paint *)value);
		break;
	case XMLRI_datatype:
	case XML_IDREF_datatype:
		gf_svg_reset_iri(sg, (XMLRI *)value);
		gf_free(value);
		break;
	case SVG_Focus_datatype:
		gf_svg_reset_iri(sg, & ((SVG_Focus*)value)->target);
		gf_free(value);
		break;
	case SVG_PathData_datatype:
#if USE_GF_PATH
		gf_path_del((GF_Path *)value);
#else
		gf_free(value);
#endif
		break;
	case SVG_ID_datatype:
	case DOM_String_datatype:
	case SVG_ContentType_datatype:
	case SVG_LanguageID_datatype:
		if (*(SVG_String *)value) gf_free(*(SVG_String *)value);
		gf_free(value);
		break;
	case SVG_StrokeDashArray_datatype:
		if (((SVG_StrokeDashArray*)value)->array.vals) gf_free(((SVG_StrokeDashArray*)value)->array.vals);
		gf_free(value);
		break;
	case SVG_Numbers_datatype:
	case SVG_Coordinates_datatype:
	case SVG_Points_datatype:
		l = *(GF_List**)value;
		while (gf_list_count(l)) {
			void *n = gf_list_last(l);
			gf_list_rem_last(l);
			gf_free(n);
		}
		gf_list_del(l);
		gf_free(value);
		break;
	case SVG_FontFamily_datatype:
		{
			SVG_FontFamily *ff = (SVG_FontFamily *)value;
			if (ff->value) gf_free(ff->value);
			gf_free(value);
		}
		break;
	case SMIL_AttributeName_datatype:
		{
			SMIL_AttributeName *an = (SMIL_AttributeName *)value;
			if (an->name) gf_free(an->name);
			gf_free(value);
		}
		break;
	case SMIL_Times_datatype:
		gf_smil_delete_times(*(SMIL_Times *)value);
		gf_free(value);
		break;
	case SMIL_AnimateValue_datatype:
		svg_delete_one_anim_value(((SMIL_AnimateValue *)value)->type, ((SMIL_AnimateValue *)value)->value, sg);
		gf_free(value);
		break;
	case SMIL_AnimateValues_datatype:
		gf_svg_reset_animate_values(*((SMIL_AnimateValues *)value), sg);
		gf_free(value);
		break;
	case DOM_StringList_datatype:
		l = *(GF_List**)value;
		while (gf_list_count(l)) {
			char *n = gf_list_last(l);
			gf_list_rem_last(l);
			gf_free(n);
		}
		gf_list_del(l);
		gf_free(value);
		break;
	case XMLRI_List_datatype:
		l = *(GF_List**)value;
		while (gf_list_count(l)) {
			XMLRI *r = gf_list_last(l);
			gf_list_rem_last(l);
			if (r->string) gf_free(r->string);
			gf_free(r);
		}
		gf_list_del(l);
		gf_free(value);
		break;
	case SMIL_KeyTimes_datatype:
	case SMIL_KeySplines_datatype:
		l = *(GF_List**)value;
		while (gf_list_count(l)) {
			Fixed *f = gf_list_last(l);
			gf_list_rem_last(l);
			gf_free(f);
		}
		gf_list_del(l);
		gf_free(value);
		break;

	case SMIL_RepeatCount_datatype:
	case SMIL_Duration_datatype:
	case SVG_Length_datatype:
	case SVG_Coordinate_datatype:
	case SVG_Visibility_datatype:
	case SVG_Display_datatype:
	default:
		gf_free(value);
	} 
}