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

📄 main.c

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 C
📖 第 1 页 / 共 3 页
字号:
					//this is a POINTER to a chain					//fprintf(vrml_code, "\tp->%s = gf_list_new();\t\n", bf->name);				}			}			/*special case for SFCommandBuffer: we also create a command list*/			if (!stricmp(bf->familly, "SFCommandBuffer")) {				fprintf(vrml_code, "\tp->%s.commandList = gf_list_new();\t\n", bf->name);			}		}		//setup pointers		fprintf(vrml_code, "\n#ifdef GF_NODE_USE_POINTERS\n\n");		fprintf(vrml_code, "\t((GF_Node *)p)->sgprivate->name = \"%s\";\n", n->name);		fprintf(vrml_code, "\t((GF_Node *)p)->sgprivate->node_del = %s_Del;\n", n->name);		fprintf(vrml_code, "\t((GF_Node *)p)->sgprivate->get_field_count = %s_get_field_count;\n", n->name);		fprintf(vrml_code, "\t((GF_Node *)p)->sgprivate->get_field = %s_get_field;\n", n->name);		//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(vrml_code, "\n#endif\n\n");		fprintf(vrml_code, "\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(vrml_code, "\tp->%s = 1;\n", bf->name);			}			//SFFloat			else if (!strcmp(bf->familly, "SFFloat")) {				fprintf(vrml_code, "\tp->%s = FLT2FIX(%s);\n", bf->name, bf->def);			}			//SFDouble			else if (!strcmp(bf->familly, "SFDouble")) {				fprintf(vrml_code, "\tp->%s = (SFDouble) %s;\n", bf->name, bf->def);			}			//SFTime			else if (!strcmp(bf->familly, "SFTime")) {				fprintf(vrml_code, "\tp->%s = %s;\n", bf->name, bf->def);			}			//SFInt32			else if (!strcmp(bf->familly, "SFInt32")) {				fprintf(vrml_code, "\tp->%s = %s;\n", bf->name, bf->def);			}			//SFColor			else if (!strcmp(bf->familly, "SFColor")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.red = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				fprintf(vrml_code, "\tp->%s.green = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				fprintf(vrml_code, "\tp->%s.blue = FLT2FIX(%s);\n", bf->name, token);			}			//SFVec2f			else if (!strcmp(bf->familly, "SFVec2f")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.x = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.y = FLT2FIX(%s);\n", bf->name, token);			}			//SFVec2d			else if (!strcmp(bf->familly, "SFVec2d")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.x = (SFDouble) %s;\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.y = (SFDouble) %s;\n", bf->name, token);			}			//SFVec3f			else if (!strcmp(bf->familly, "SFVec3f")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.x = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.y = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.z = FLT2FIX(%s);\n", bf->name, token);			}			//SFVec3d			else if (!strcmp(bf->familly, "SFVec3d")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.x = (SFDouble) %s;\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.y = (SFDouble) %s;\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.z = (SFDouble) %s;\n", bf->name, token);			}			//SFVec4f & SFRotation			else if (!strcmp(bf->familly, "SFVec4f") || !strcmp(bf->familly, "SFRotation")) {				CurrentLine = bf->def;				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.x = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.y = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.z = FLT2FIX(%s);\n", bf->name, token);				GetNextToken(token, " ");				TranslateToken(token);				fprintf(vrml_code, "\tp->%s.q = FLT2FIX(%s);\n", bf->name, token);			}			//SFString			else if (!strcmp(bf->familly, "SFString")) {				fprintf(vrml_code, "\tp->%s.buffer = (char*) malloc(sizeof(char) * %d);\n", bf->name, strlen(bf->def)+1);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals = (SFFloat *)malloc(sizeof(SFFloat)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d] = FLT2FIX(%s);\n", bf->name, j, token);					j+=1;				}			}			//MFDouble			else if (!strcmp(bf->familly, "MFDouble")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, " ,")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (SFFloat*)malloc(sizeof(SFFloat)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d] = (SFDouble) %s;\n", bf->name, j, token);					j+=1;				}			}			//MFVec2f			else if (!strcmp(bf->familly, "MFVec2f")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (SFVec2f*) malloc(sizeof(SFVec2f)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d].x = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].y = FLT2FIX(%s);\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFVec2d			else if (!strcmp(bf->familly, "MFVec2d")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (SFVec2f*)malloc(sizeof(SFVec2f)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d].x = (SFDouble) %s;\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].y = (SFDouble) %s;\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFVec3f			else if (!strcmp(bf->familly, "MFVec3f")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (SFVec3f*)malloc(sizeof(SFVec3f)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d].x = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].y = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].z = FLT2FIX(%s);\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFVec3d			else if (!strcmp(bf->familly, "MFVec3d")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (SFVec2f*)malloc(sizeof(SFVec3f)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d].x = (SFDouble) %s;\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].y = (SFDouble) %s;\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].z = (SFDouble) %s;\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFVec4f & MFRotation			else if (!strcmp(bf->familly, "MFVec4f") || !strcmp(bf->familly, "MFRotation")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (GF_Vec4*)malloc(sizeof(GF_Vec4)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d].x = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].y = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].z = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					TranslateToken(tok);					fprintf(vrml_code, "\tp->%s.vals[%d].q = FLT2FIX(%s);\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFInt32			else if (!strcmp(bf->familly, "MFInt32")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (SFInt32*)malloc(sizeof(SFInt32)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\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(vrml_code, "\tp->%s.vals = (SFColor*)malloc(sizeof(SFColor)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d].red = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					fprintf(vrml_code, "\tp->%s.vals[%d].green = FLT2FIX(%s);\n", bf->name, j, tok);					GetNextToken(tok, " ");					fprintf(vrml_code, "\tp->%s.vals[%d].blue = FLT2FIX(%s);\n", bf->name, j, tok);					j+=1;					CurrentLine = store;				}			}			//MFString			else if (!strcmp(bf->familly, "MFString")) {				j = 0;				CurrentLine = bf->def;				while (GetNextToken(token, ",")) j++;				j+=1;				fprintf(vrml_code, "\tp->%s.vals = (char**)malloc(sizeof(SFString)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals[%d] = (char*)malloc(sizeof(char) * %d);\n", bf->name, j, strlen(tok)+1);					fprintf(vrml_code, "\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(vrml_code, "\tp->%s.vals = (SFTime*)malloc(sizeof(SFTime)*%d);\n", bf->name, j);				fprintf(vrml_code, "\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(vrml_code, "\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(vrml_code, "UNKNOWN FIELD (%s);\n", bf->familly);			}		}		fprintf(vrml_code, "\treturn (GF_Node *)p;\n}\n\n");	}

⌨️ 快捷键说明

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