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

📄 x3d_nodes.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 5 页
字号:
		info->NDTtype = NDT_SFMetadataNode;		info->far_ptr = & ((X_AudioClip *)node)->metadata;		return GF_OK;	case 9:		info->name = "pauseTime";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((X_AudioClip *) node)->pauseTime;		return GF_OK;	case 10:		info->name = "resumeTime";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((X_AudioClip *) node)->resumeTime;		return GF_OK;	case 11:		info->name = "elapsedTime";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((X_AudioClip *) node)->elapsedTime;		return GF_OK;	case 12:		info->name = "isPaused";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_AudioClip *) node)->isPaused;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 AudioClip_get_field_index_by_name(char *name){	if (!strcmp("description", name)) return 0;	if (!strcmp("loop", name)) return 1;	if (!strcmp("pitch", name)) return 2;	if (!strcmp("startTime", name)) return 3;	if (!strcmp("stopTime", name)) return 4;	if (!strcmp("url", name)) return 5;	if (!strcmp("duration_changed", name)) return 6;	if (!strcmp("isActive", name)) return 7;	if (!strcmp("metadata", name)) return 8;	if (!strcmp("pauseTime", name)) return 9;	if (!strcmp("resumeTime", name)) return 10;	if (!strcmp("elapsedTime", name)) return 11;	if (!strcmp("isPaused", name)) return 12;	return -1;	}static GF_Node *AudioClip_Create(){	X_AudioClip *p;	GF_SAFEALLOC(p, X_AudioClip);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_X3D_AudioClip);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "AudioClip";	((GF_Node *)p)->sgprivate->node_del = AudioClip_Del;	((GF_Node *)p)->sgprivate->get_field_count = AudioClip_get_field_count;	((GF_Node *)p)->sgprivate->get_field = AudioClip_get_field;#endif	/*default field values*/	p->pitch = FLT2FIX(1.0);	p->startTime = 0;	p->stopTime = 0;	p->pauseTime = 0;	p->resumeTime = 0;	return (GF_Node *)p;}/*	Background Node deletion*/static void Background_Del(GF_Node *node){	X_Background *p = (X_Background *) node;	gf_sg_mffloat_del(p->groundAngle);	gf_sg_mfcolor_del(p->groundColor);	gf_sg_mfurl_del(p->backUrl);	gf_sg_mfurl_del(p->bottomUrl);	gf_sg_mfurl_del(p->frontUrl);	gf_sg_mfurl_del(p->leftUrl);	gf_sg_mfurl_del(p->rightUrl);	gf_sg_mfurl_del(p->topUrl);	gf_sg_mffloat_del(p->skyAngle);	gf_sg_mfcolor_del(p->skyColor);	gf_node_unregister((GF_Node *) p->metadata, node);		gf_node_free((GF_Node *)p);}static u32 Background_get_field_count(GF_Node *node, u8 dummy){	return 14;}static GF_Err Background_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "set_bind";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_Background *)node)->on_set_bind;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_Background *) node)->set_bind;		return GF_OK;	case 1:		info->name = "groundAngle";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFFLOAT;		info->far_ptr = & ((X_Background *) node)->groundAngle;		return GF_OK;	case 2:		info->name = "groundColor";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFCOLOR;		info->far_ptr = & ((X_Background *) node)->groundColor;		return GF_OK;	case 3:		info->name = "backUrl";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((X_Background *) node)->backUrl;		return GF_OK;	case 4:		info->name = "bottomUrl";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((X_Background *) node)->bottomUrl;		return GF_OK;	case 5:		info->name = "frontUrl";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((X_Background *) node)->frontUrl;		return GF_OK;	case 6:		info->name = "leftUrl";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((X_Background *) node)->leftUrl;		return GF_OK;	case 7:		info->name = "rightUrl";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((X_Background *) node)->rightUrl;		return GF_OK;	case 8:		info->name = "topUrl";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFURL;		info->far_ptr = & ((X_Background *) node)->topUrl;		return GF_OK;	case 9:		info->name = "skyAngle";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFFLOAT;		info->far_ptr = & ((X_Background *) node)->skyAngle;		return GF_OK;	case 10:		info->name = "skyColor";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFCOLOR;		info->far_ptr = & ((X_Background *) node)->skyColor;		return GF_OK;	case 11:		info->name = "isBound";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_Background *) node)->isBound;		return GF_OK;	case 12:		info->name = "metadata";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFNODE;		info->NDTtype = NDT_SFMetadataNode;		info->far_ptr = & ((X_Background *)node)->metadata;		return GF_OK;	case 13:		info->name = "bindTime";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFTIME;		info->far_ptr = & ((X_Background *) node)->bindTime;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 Background_get_field_index_by_name(char *name){	if (!strcmp("set_bind", name)) return 0;	if (!strcmp("groundAngle", name)) return 1;	if (!strcmp("groundColor", name)) return 2;	if (!strcmp("backUrl", name)) return 3;	if (!strcmp("bottomUrl", name)) return 4;	if (!strcmp("frontUrl", name)) return 5;	if (!strcmp("leftUrl", name)) return 6;	if (!strcmp("rightUrl", name)) return 7;	if (!strcmp("topUrl", name)) return 8;	if (!strcmp("skyAngle", name)) return 9;	if (!strcmp("skyColor", name)) return 10;	if (!strcmp("isBound", name)) return 11;	if (!strcmp("metadata", name)) return 12;	if (!strcmp("bindTime", name)) return 13;	return -1;	}static GF_Node *Background_Create(){	X_Background *p;	GF_SAFEALLOC(p, X_Background);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_X3D_Background);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "Background";	((GF_Node *)p)->sgprivate->node_del = Background_Del;	((GF_Node *)p)->sgprivate->get_field_count = Background_get_field_count;	((GF_Node *)p)->sgprivate->get_field = Background_get_field;#endif	/*default field values*/	p->skyColor.vals = (SFColor*)malloc(sizeof(SFColor)*1);	p->skyColor.count = 1;	p->skyColor.vals[0].red = FLT2FIX(0);	p->skyColor.vals[0].green = FLT2FIX(0);	p->skyColor.vals[0].blue = FLT2FIX(0);	return (GF_Node *)p;}/*	Billboard Node deletion*/static void Billboard_Del(GF_Node *node){	X_Billboard *p = (X_Billboard *) node;	gf_sg_vrml_parent_destroy(node);		gf_node_unregister((GF_Node *) p->metadata, node);		gf_node_free((GF_Node *)p);}static u32 Billboard_get_field_count(GF_Node *node, u8 dummy){	return 5;}static GF_Err Billboard_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "addChildren";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_Billboard *)node)->on_addChildren;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SF3DNode;		info->far_ptr = & ((X_Billboard *)node)->addChildren;		return GF_OK;	case 1:		info->name = "removeChildren";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_Billboard *)node)->on_removeChildren;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SF3DNode;		info->far_ptr = & ((X_Billboard *)node)->removeChildren;		return GF_OK;	case 2:		info->name = "children";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFNODE;		info->NDTtype = NDT_SF3DNode;		info->far_ptr = & ((X_Billboard *)node)->children;		return GF_OK;	case 3:		info->name = "axisOfRotation";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFVEC3F;		info->far_ptr = & ((X_Billboard *) node)->axisOfRotation;		return GF_OK;	case 4:		info->name = "metadata";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFNODE;		info->NDTtype = NDT_SFMetadataNode;		info->far_ptr = & ((X_Billboard *)node)->metadata;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 Billboard_get_field_index_by_name(char *name){	if (!strcmp("addChildren", name)) return 0;	if (!strcmp("removeChildren", name)) return 1;	if (!strcmp("children", name)) return 2;	if (!strcmp("axisOfRotation", name)) return 3;	if (!strcmp("metadata", name)) return 4;	return -1;	}static GF_Node *Billboard_Create(){	X_Billboard *p;	GF_SAFEALLOC(p, X_Billboard);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_X3D_Billboard);	gf_sg_vrml_parent_setup((GF_Node *) p);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "Billboard";	((GF_Node *)p)->sgprivate->node_del = Billboard_Del;	((GF_Node *)p)->sgprivate->get_field_count = Billboard_get_field_count;	((GF_Node *)p)->sgprivate->get_field = Billboard_get_field;#endif	/*default field values*/	p->axisOfRotation.x = FLT2FIX(0);	p->axisOfRotation.y = FLT2FIX(1);	p->axisOfRotation.z = FLT2FIX(0);	return (GF_Node *)p;}/*	BooleanFilter Node deletion*/static void BooleanFilter_Del(GF_Node *node){	X_BooleanFilter *p = (X_BooleanFilter *) node;	gf_node_unregister((GF_Node *) p->metadata, node);		gf_node_free((GF_Node *)p);}static u32 BooleanFilter_get_field_count(GF_Node *node, u8 dummy){	return 5;}static GF_Err BooleanFilter_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "set_boolean";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_BooleanFilter *)node)->on_set_boolean;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanFilter *) node)->set_boolean;		return GF_OK;	case 1:		info->name = "inputFalse";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanFilter *) node)->inputFalse;		return GF_OK;	case 2:		info->name = "inputNegate";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanFilter *) node)->inputNegate;		return GF_OK;	case 3:		info->name = "inputTrue";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanFilter *) node)->inputTrue;		return GF_OK;	case 4:		info->name = "metadata";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFNODE;		info->NDTtype = NDT_SFMetadataNode;		info->far_ptr = & ((X_BooleanFilter *)node)->metadata;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 BooleanFilter_get_field_index_by_name(char *name){	if (!strcmp("set_boolean", name)) return 0;	if (!strcmp("inputFalse", name)) return 1;	if (!strcmp("inputNegate", name)) return 2;	if (!strcmp("inputTrue", name)) return 3;	if (!strcmp("metadata", name)) return 4;	return -1;	}static GF_Node *BooleanFilter_Create(){	X_BooleanFilter *p;	GF_SAFEALLOC(p, X_BooleanFilter);	if(!p) return NULL;	gf_node_setup((GF_Node *)p, TAG_X3D_BooleanFilter);#ifdef GF_NODE_USE_POINTERS	((GF_Node *)p)->sgprivate->name = "BooleanFilter";	((GF_Node *)p)->sgprivate->node_del = BooleanFilter_Del;	((GF_Node *)p)->sgprivate->get_field_count = BooleanFilter_get_field_count;	((GF_Node *)p)->sgprivate->get_field = BooleanFilter_get_field;#endif	/*default field values*/	return (GF_Node *)p;}/*	BooleanSequencer Node deletion*/static void BooleanSequencer_Del(GF_Node *node){	X_BooleanSequencer *p = (X_BooleanSequencer *) node;	gf_sg_mffloat_del(p->key);	gf_sg_mfbool_del(p->keyValue);	gf_node_unregister((GF_Node *) p->metadata, node);		gf_node_free((GF_Node *)p);}static u32 BooleanSequencer_get_field_count(GF_Node *node, u8 dummy){	return 7;}static GF_Err BooleanSequencer_get_field(GF_Node *node, GF_FieldInfo *info){	switch (info->fieldIndex) {	case 0:		info->name = "next";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_BooleanSequencer *)node)->on_next;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanSequencer *) node)->next;		return GF_OK;	case 1:		info->name = "previous";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_BooleanSequencer *)node)->on_previous;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanSequencer *) node)->previous;		return GF_OK;	case 2:		info->name = "set_fraction";		info->eventType = GF_SG_EVENT_IN;		info->on_event_in = ((X_BooleanSequencer *)node)->on_set_fraction;		info->fieldType = GF_SG_VRML_SFFLOAT;		info->far_ptr = & ((X_BooleanSequencer *) node)->set_fraction;		return GF_OK;	case 3:		info->name = "key";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFFLOAT;		info->far_ptr = & ((X_BooleanSequencer *) node)->key;		return GF_OK;	case 4:		info->name = "keyValue";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_MFBOOL;		info->far_ptr = & ((X_BooleanSequencer *) node)->keyValue;		return GF_OK;	case 5:		info->name = "value_changed";		info->eventType = GF_SG_EVENT_OUT;		info->fieldType = GF_SG_VRML_SFBOOL;		info->far_ptr = & ((X_BooleanSequencer *) node)->value_changed;		return GF_OK;	case 6:		info->name = "metadata";		info->eventType = GF_SG_EVENT_EXPOSED_FIELD;		info->fieldType = GF_SG_VRML_SFNODE;		info->NDTtype = NDT_SFMetadataNode;		info->far_ptr = & ((X_BooleanSequencer *)node)->metadata;		return GF_OK;	default:		return GF_BAD_PARAM;	}}static s32 BooleanSequencer_get_field_index_by_name(char *name){	if (!strcmp("next", name)) return 0;

⌨️ 快捷键说明

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