Ejemplo n.º 1
0
ObjParser::ObjParser(const char* baseDir, const char* objFilename) {
	m_baseDir = (char*)malloc(sizeof(char) * (strlen(baseDir) + 1));
	strcpy(m_baseDir, baseDir);
	m_objFilename = (char*)malloc(sizeof(char) * (strlen(m_baseDir) + strlen(objFilename) + 1));
	strcpy(m_objFilename, m_baseDir);
	strcat(m_objFilename, objFilename);
	
	parseObj();
	parseMtl();
}
Ejemplo n.º 2
0
void readUserObjects(void)
{
 FILE *fp;
 String atom_name, push_action, label, icon, drag_icon;
 char s[MAXAPPSTRINGLEN];
 int i, p;

 usrObjects.nr = 0;
 usrObjects.obj = NULL;

 if (!(fp = fopen(resources.usrobj_file, "r")))
 {
     if (exists(resources.usrobj_file))
	 error(topShell, "Cannot read object file", resources.usrobj_file);
     return;
 }

 for (i=0; (p = parseObj(fp, &atom_name, &push_action, &label, &icon, &drag_icon)) > 0; i++)
 {
     usrObjects.obj = (UserObjectRec *) XTREALLOC(usrObjects.obj, (i+1) * sizeof(UserObjectRec));
     usrObjects.obj[i].atom_name = XtNewString(strparse(s, atom_name, "\\:"));
     if ((usrObjects.obj[i].atom = XmInternAtom(dpy, usrObjects.obj[i].atom_name, False)) == None)
     {
	 XTFREE(usrObjects.obj[i].atom_name);
	 error(topShell, "Couldn't initialize user defined object", atom_name);
	 i--;
     }
     else
     {
	 usrObjects.obj[i].push_action = XtNewString(strparse(s, push_action, "\\:"));
	 usrObjects.obj[i].label = XtNewString(strparse(s, label, "\\:"));
	 usrObjects.obj[i].icon = XtNewString(strparse(s, icon, "\\:"));
	 usrObjects.obj[i].drag_icon = XtNewString(strparse(s, drag_icon, "\\:"));
     }
 }

 if (p == -1)
     error(topShell, "Error in objects file:", resources.usrobj_file);

 usrObjects.nr = i;

  
  if (fclose(fp))
      sysError(topShell, "Error reading objects file:");
}
Ejemplo n.º 3
0
					inline Val parseVal()
					{
						// Check value type
						switch(getC())
						{
							case '{': return parseObj();
							case '[': return parseArr();
							case '"': return parseStr();
							case 't': return parseBlnTrue();
							case 'f': return parseBlnFalse();
							case 'n': return parseNll();
						}

						// Check if value is a number
						if(isNumStart(getC())) return parseNum();

						throwError("Invalid value", std::string{"No match for values beginning with `"} + getC() + "`");

						return Val{Nll{}};
					}
Ejemplo n.º 4
0
int main(int argc,char *argv[] ){

	uint obj_index=0;
	uint coords_index=0;

	glutInit(&argc,argv);
	glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGBA | GLUT_MULTISAMPLE | GLUT_ALPHA | GLUT_STENCIL);
	glutInitWindowSize(600,600);
	glutInitWindowPosition(100,100);
	glutCreateWindow("partViewer3D");
	
	int err = glewInit();
    if (GLEW_OK != err) {
        // problem: glewInit failed, something is seriously wrong
        printf("GLEW Error: %s\n", glewGetErrorString(err));
        return 1;
    } 
	
	//////////* Command line argument processing */////////////
	for(uint i=0;i<argc;i++){
		if(strcmp(argv[i],"-obj")==0){
			obj_index=i+1;
			use_obj=true;
			break;
		}
	}
	for(uint i=0;i<argc;i++){
		if(strcmp((argv[i]+strlen(argv[i])-4),".dat")==0){
			coords_index=i;
			break;
		}
	}
	if(argc > 4){
		animation=true;
		ani_files=argc-3;
		printf("ani_files:%d\n",ani_files);
		ani_matrix=malloc(ani_files*sizeof(*ani_matrix));
		for(uint i=0;i<ani_files;i++){
			ani_matrix[i]=malloc(strlen(argv[i+3])*sizeof(ani_matrix));
			strcpy(ani_matrix[i], argv[i+coords_index]);
		}
	}
	/////////////////////////////////////////////////////////////
	
	if(!animation) parseCoords(argv[coords_index],"\t");
	else parseCoords(ani_matrix[0],"\t");
	for(uint i = 0; i < nPart; i++){
		particle[i].selected = 0;
		particle[i].hidden = 0;
		particle[i].solid = 0;
	}
	if(use_obj)parseObj(argv[obj_index]);
	init();
	glutDisplayFunc(display);
	glutIdleFunc(idle);
	glutReshapeFunc(reshape);
	
	glutKeyboardFunc(keyDown);
	glutKeyboardUpFunc(keyUp);
	glutSpecialFunc(specialDown);
	glutSpecialUpFunc(specialUp);
	glutMouseFunc(onMouse);
	glutMotionFunc(onMotion);
	
	glutMainLoop();
	
	return 1;
}