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

📄 svg_properties.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 3 页
字号:
		switch (att->tag) {			case TAG_SVG_ATT_audio_level: 			case TAG_SVG_ATT_color: 			case TAG_SVG_ATT_color_rendering: 			case TAG_SVG_ATT_display: 			case TAG_SVG_ATT_display_align: 			case TAG_SVG_ATT_fill: 			case TAG_SVG_ATT_fill_opacity: 			case TAG_SVG_ATT_fill_rule: 			case TAG_SVG_ATT_font_family: 			case TAG_SVG_ATT_font_size: 			case TAG_SVG_ATT_font_style: 			case TAG_SVG_ATT_font_variant: 			case TAG_SVG_ATT_font_weight: 			case TAG_SVG_ATT_image_rendering: 			case TAG_SVG_ATT_line_increment: 			case TAG_SVG_ATT_opacity: 			case TAG_SVG_ATT_pointer_events: 			case TAG_SVG_ATT_shape_rendering: 			case TAG_SVG_ATT_solid_color: 			case TAG_SVG_ATT_solid_opacity: 			case TAG_SVG_ATT_stop_color: 			case TAG_SVG_ATT_stop_opacity: 			case TAG_SVG_ATT_stroke: 			case TAG_SVG_ATT_stroke_dasharray: 			case TAG_SVG_ATT_stroke_dashoffset: 			case TAG_SVG_ATT_stroke_linecap: 			case TAG_SVG_ATT_stroke_linejoin: 			case TAG_SVG_ATT_stroke_miterlimit: 			case TAG_SVG_ATT_stroke_opacity: 			case TAG_SVG_ATT_stroke_width: 			case TAG_SVG_ATT_text_align: 			case TAG_SVG_ATT_text_anchor: 			case TAG_SVG_ATT_text_rendering: 			case TAG_SVG_ATT_vector_effect: 			case TAG_SVG_ATT_viewport_fill: 			case TAG_SVG_ATT_viewport_fill_opacity: 			case TAG_SVG_ATT_visibility: 				return 1;			default:				return 0;		}	} #ifdef GPAC_ENABLE_SVG_SA	else if ((tag>=GF_NODE_RANGE_FIRST_SVG_SA) && (tag<=GF_NODE_RANGE_LAST_SVG_SA)) {		SVG_SA_Element *e = (SVG_SA_Element *)node;		if (target_attribute->far_ptr == &e->properties->audio_level) return 1;		else if (target_attribute->far_ptr == &e->properties->color) return 1;		else if (target_attribute->far_ptr == &e->properties->color_rendering) return 1;		else if (target_attribute->far_ptr == &e->properties->display) return 1;		else if (target_attribute->far_ptr == &e->properties->display_align) return 1;		else if (target_attribute->far_ptr == &e->properties->fill) return 1;		else if (target_attribute->far_ptr == &e->properties->fill_opacity) return 1;		else if (target_attribute->far_ptr == &e->properties->fill_rule) return 1;		else if (target_attribute->far_ptr == &e->properties->font_family) return 1;		else if (target_attribute->far_ptr == &e->properties->font_size) return 1;		else if (target_attribute->far_ptr == &e->properties->font_style) return 1;		else if (target_attribute->far_ptr == &e->properties->font_variant) return 1;		else if (target_attribute->far_ptr == &e->properties->font_weight) return 1;		else if (target_attribute->far_ptr == &e->properties->image_rendering) return 1;		else if (target_attribute->far_ptr == &e->properties->line_increment) return 1;		else if (target_attribute->far_ptr == &e->properties->opacity) return 1;		else if (target_attribute->far_ptr == &e->properties->pointer_events) return 1;		else if (target_attribute->far_ptr == &e->properties->shape_rendering) return 1;		else if (target_attribute->far_ptr == &e->properties->solid_color) return 1;		else if (target_attribute->far_ptr == &e->properties->solid_opacity) return 1;		else if (target_attribute->far_ptr == &e->properties->stop_color) return 1;		else if (target_attribute->far_ptr == &e->properties->stop_opacity) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_dasharray) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_dashoffset) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_linecap) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_linejoin) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_miterlimit) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_opacity) return 1;		else if (target_attribute->far_ptr == &e->properties->stroke_width) return 1;		else if (target_attribute->far_ptr == &e->properties->text_align) return 1;		else if (target_attribute->far_ptr == &e->properties->text_anchor) return 1;		else if (target_attribute->far_ptr == &e->properties->text_rendering) return 1;		else if (target_attribute->far_ptr == &e->properties->vector_effect) return 1;		else if (target_attribute->far_ptr == &e->properties->viewport_fill) return 1;		else if (target_attribute->far_ptr == &e->properties->viewport_fill_opacity) return 1;		else if (target_attribute->far_ptr == &e->properties->visibility) return 1;		else return 0;	} #endif//	else if ((tag>=GF_NODE_RANGE_FIRST_SVG_SANI) && (tag<=GF_NODE_RANGE_LAST_SVG_SANI)) {//		return 0;//	}	else {		return 0;	}}/* TODO: Check that all possibly inherited types are treated */Bool gf_svg_is_inherit(GF_FieldInfo *a){	if (!a->far_ptr) return 1;	switch (a->fieldType) {	case SVG_Color_datatype:		return (((SVG_Color *)a->far_ptr)->type == SVG_COLOR_INHERIT);		break;	case SVG_Paint_datatype:		return (((SVG_Paint *)a->far_ptr)->type == SVG_PAINT_INHERIT);		break;	case SVG_FontSize_datatype:	case SVG_Number_datatype:		return (((SVG_Number *)a->far_ptr)->type == SVG_NUMBER_INHERIT);		break;	case SVG_RenderingHint_datatype:		return (*((SVG_RenderingHint *)a->far_ptr) == SVG_RENDERINGHINT_INHERIT);		break;	case SVG_Display_datatype:		return (*((SVG_Display *)a->far_ptr) == SVG_DISPLAY_INHERIT);		break;	case SVG_DisplayAlign_datatype:		return (*((SVG_DisplayAlign *)a->far_ptr) == SVG_DISPLAYALIGN_INHERIT);		break;	case SVG_TextAlign_datatype:		return (*((SVG_TextAlign *)a->far_ptr) == SVG_TEXTALIGN_INHERIT);		break;	case SVG_FillRule_datatype:		return (*((SVG_FillRule *)a->far_ptr) == SVG_FILLRULE_INHERIT);		break;	case SVG_FontFamily_datatype:		return (((SVG_FontFamily *)a->far_ptr)->type == SVG_FONTFAMILY_INHERIT);		break;	case SVG_FontStyle_datatype:		return (*((SVG_FontStyle *)a->far_ptr) == SVG_FONTSTYLE_INHERIT);		break;	case SVG_FontWeight_datatype:		return (*((SVG_FontWeight *)a->far_ptr) == SVG_FONTWEIGHT_INHERIT);		break;	case SVG_PointerEvents_datatype:		return (*((SVG_PointerEvents *)a->far_ptr) == SVG_POINTEREVENTS_INHERIT);		break;	case SVG_StrokeDashArray_datatype:		return (((SVG_StrokeDashArray *)a->far_ptr)->type == SVG_STROKEDASHARRAY_INHERIT);		break;	case SVG_StrokeLineCap_datatype:		return (*((SVG_StrokeLineCap *)a->far_ptr) == SVG_STROKELINECAP_INHERIT);		break;	case SVG_StrokeLineJoin_datatype:		return (*((SVG_StrokeLineJoin *)a->far_ptr) == SVG_STROKELINEJOIN_INHERIT);		break;	case SVG_TextAnchor_datatype:		return (*((SVG_TextAnchor *)a->far_ptr) == SVG_TEXTANCHOR_INHERIT);		break;	case SVG_VectorEffect_datatype:		return (*((SVG_VectorEffect *)a->far_ptr) == SVG_VECTOREFFECT_INHERIT);		break;	case SVG_Visibility_datatype:		return (*((SVG_Visibility *)a->far_ptr) == SVG_VISIBILITY_INHERIT);		break;	case SVG_Overflow_datatype:		return (*((SVG_Overflow *)a->far_ptr) == SVG_OVERFLOW_INHERIT);		break;	default:		return 0;	}}#ifdef GPAC_ENABLE_SVG_SAu32 gf_svg_sa_get_rendering_flag_if_modified(SVG_SA_Element *n, GF_FieldInfo *info){	if (n->properties) {				if      (&n->properties->audio_level == info->far_ptr)			return 0;		else if (&n->properties->color == info->far_ptr)				return GF_SG_SVG_COLOR_DIRTY;		else if (&n->properties->color_rendering == info->far_ptr)		return 0;		else if (&n->properties->display == info->far_ptr)				return 0;		else if (&n->properties->display_align == info->far_ptr)		return GF_SG_SVG_DISPLAYALIGN_DIRTY;		else if (&n->properties->fill == info->far_ptr)					return GF_SG_SVG_FILL_DIRTY;		else if (&n->properties->fill_opacity == info->far_ptr)			return GF_SG_SVG_FILLOPACITY_DIRTY;		else if (&n->properties->fill_rule == info->far_ptr)			return GF_SG_SVG_FILLRULE_DIRTY;		else if (&n->properties->font_family == info->far_ptr)			return GF_SG_SVG_FONTFAMILY_DIRTY;		else if (&n->properties->font_size == info->far_ptr)			return GF_SG_SVG_FONTSIZE_DIRTY;		else if (&n->properties->font_style == info->far_ptr)			return GF_SG_SVG_FONTSTYLE_DIRTY;		else if (&n->properties->font_variant == info->far_ptr)			return GF_SG_SVG_FONTVARIANT_DIRTY;		else if (&n->properties->font_weight == info->far_ptr)			return GF_SG_SVG_FONTWEIGHT_DIRTY;				else if (&n->properties->image_rendering == info->far_ptr)		return 0;		else if (&n->properties->line_increment == info->far_ptr)		return GF_SG_SVG_LINEINCREMENT_DIRTY;		else if (&n->properties->opacity == info->far_ptr)				return GF_SG_SVG_OPACITY_DIRTY;		else if (&n->properties->pointer_events == info->far_ptr)		return 0;		else if (&n->properties->shape_rendering == info->far_ptr)		return 0;		else if (&n->properties->solid_color == info->far_ptr)			return GF_SG_SVG_SOLIDCOLOR_DIRTY;		else if (&n->properties->solid_opacity == info->far_ptr)		return GF_SG_SVG_SOLIDOPACITY_DIRTY;		else if (&n->properties->stop_color == info->far_ptr)			return GF_SG_SVG_STOPCOLOR_DIRTY;		else if (&n->properties->stop_opacity == info->far_ptr)			return GF_SG_SVG_STOPOPACITY_DIRTY;		else if (&n->properties->stroke == info->far_ptr)				return GF_SG_SVG_STROKE_DIRTY;		else if (&n->properties->stroke_dasharray == info->far_ptr)		return GF_SG_SVG_STROKEDASHARRAY_DIRTY;		else if (&n->properties->stroke_dashoffset == info->far_ptr)	return GF_SG_SVG_STROKEDASHOFFSET_DIRTY;		else if (&n->properties->stroke_linecap == info->far_ptr)		return GF_SG_SVG_STROKELINECAP_DIRTY;		else if (&n->properties->stroke_linejoin == info->far_ptr)		return GF_SG_SVG_STROKELINEJOIN_DIRTY;		else if (&n->properties->stroke_miterlimit == info->far_ptr)	return GF_SG_SVG_STROKEMITERLIMIT_DIRTY;		else if (&n->properties->stroke_opacity == info->far_ptr)		return GF_SG_SVG_STROKEOPACITY_DIRTY;		else if (&n->properties->stroke_width == info->far_ptr)			return GF_SG_SVG_STROKEWIDTH_DIRTY;		else if (&n->properties->text_align == info->far_ptr)			return GF_SG_SVG_TEXTALIGN_DIRTY;		else if (&n->properties->text_anchor == info->far_ptr)			return GF_SG_SVG_TEXTANCHOR_DIRTY;		else if (&n->properties->text_rendering == info->far_ptr)		return 0;		else if (&n->properties->vector_effect == info->far_ptr)		return GF_SG_SVG_VECTOREFFECT_DIRTY;		else if (&n->properties->viewport_fill == info->far_ptr)		return 0;		else if (&n->properties->viewport_fill_opacity == info->far_ptr)return 0;		else if (&n->properties->visibility == info->far_ptr)			return 0;	}		/* this is not a property but a regular attribute, the animatable attributes are at the moment:		focusable, focusHighlight, gradientUnits, nav-*, target, xlink:href, xlink:type, 		the following affect the geometry of the element (some affect the positioning):		cx, cy, d, height, offset, pathLength, points, r, rx, ry, width, x, x1, x2, y, y1, y2, rotate		the following affect the positioning and are computed at each frame:		transform, viewBox, preserveAspectRatio	*/	switch (info->fieldType) {		case SVG_Number_datatype:		case SVG_Length_datatype:		case SVG_Coordinate_datatype:		case SVG_Numbers_datatype:		case SVG_Points_datatype:		case SVG_Coordinates_datatype:		case SVG_PathData_datatype:		case SVG_Rotate_datatype:			return GF_SG_SVG_GEOMETRY_DIRTY;		case XMLRI_datatype:			return GF_SG_NODE_DIRTY;		//case SVG_Matrix_datatype:		//case SVG_Motion_datatype:		//case SVG_ViewBox_datatype:		default:			return 0;	}}#endifGF_EXPORTBool gf_svg_has_appearance_flag_dirty(u32 flags){#if 0	/* fill-related */	if (flags & GF_SG_SVG_FILL_DIRTY)				return 1;	if (flags & GF_SG_SVG_FILLOPACITY_DIRTY)		return 1;	if (flags & GF_SG_SVG_FILLRULE_DIRTY)			return 1;	/* stroke-related */	if (flags & GF_SG_SVG_STROKE_DIRTY)				return 1;	if (flags & GF_SG_SVG_STROKEDASHARRAY_DIRTY)	return 1;	if (flags & GF_SG_SVG_STROKEDASHOFFSET_DIRTY)	return 1;	if (flags & GF_SG_SVG_STROKELINECAP_DIRTY)		return 1;	if (flags & GF_SG_SVG_STROKELINEJOIN_DIRTY)		return 1;	if (flags & GF_SG_SVG_STROKEMITERLIMIT_DIRTY)	return 1;	if (flags & GF_SG_SVG_STROKEOPACITY_DIRTY)		return 1;	if (flags & GF_SG_SVG_STROKEWIDTH_DIRTY)		return 1;	if (flags & GF_SG_SVG_VECTOREFFECT_DIRTY)		return 1;	/* gradients stops and solidcolor do not affect appearance directly */	return 0;#else	if (flags & 		(GF_SG_SVG_FILL_DIRTY | GF_SG_SVG_FILLOPACITY_DIRTY | GF_SG_SVG_FILLRULE_DIRTY		| GF_SG_SVG_STROKE_DIRTY | GF_SG_SVG_STROKEDASHARRAY_DIRTY		| GF_SG_SVG_STROKEDASHOFFSET_DIRTY | GF_SG_SVG_STROKELINECAP_DIRTY		| GF_SG_SVG_STROKELINEJOIN_DIRTY | GF_SG_SVG_STROKEMITERLIMIT_DIRTY		| GF_SG_SVG_STROKEOPACITY_DIRTY | GF_SG_SVG_STROKEWIDTH_DIRTY		| GF_SG_SVG_VECTOREFFECT_DIRTY) )			return 1;	return 0;#endif}

⌨️ 快捷键说明

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