#include "splat.h" char *Stripcpy(char *str) { char *str2,*str3; str2=str; while(*str2==' ') str2++; str3=str2+strlen(str2)-1; if(*str3=='\n') *str3--='\0'; while(*str3==' ') str3--; *(++str3)='\0'; return(str2); } int ReadViewParameterFile(ViewParameters *vpars,char *fileName) { char str[300],*key,*str1; FILE *fp; if(!(fp=fopen(fileName,"r"))) return(0); while(fgets(str,300,fp)) { key=strtok(str,":"); if(strstr(key,"VRP")) { vpars->VRP.x=atof(strtok(NULL," ")); vpars->VRP.y=atof(strtok(NULL," ")); vpars->VRP.z=atof(strtok(NULL," ")); } else if(strstr(key,"interpolation kernel class")) { strcpy(vpars->inter_class,strtok(NULL,"\n")); } else if(strstr(key,"gradient kernel class")) { strcpy(vpars->deriv_class,strtok(NULL,"\n")); } else if(strstr(key,"VPN")) { vpars->VPN.x=atof(strtok(NULL," ")); vpars->VPN.y=atof(strtok(NULL," ")); vpars->VPN.z=atof(strtok(NULL," ")); NormalizeV(&vpars->VPN); } else if(strstr(key,"VUP")) { vpars->VUP.x=atof(strtok(NULL," ")); vpars->VUP.y=atof(strtok(NULL," ")); vpars->VUP.z=atof(strtok(NULL," ")); NormalizeV(&vpars->VUP); } else if(strstr(key,"image dimensions")) { vpars->imgWidth=fabs(atof(strtok(NULL," "))); vpars->imgHeight=fabs(atof(strtok(NULL," "))); } else if(strstr(key,"image pixels")) { vpars->nxImg=atoi(strtok(NULL," ")); vpars->nyImg=atoi(strtok(NULL," ")); } else if(strstr(key,"view angle")) vpars->viewAngle=atoi(strtok(NULL," ")); else if(strstr(key,"ray step size")) vpars->rayStepSize=atof(strtok(NULL," ")); else if(strstr(key,"number of runs")) vpars->numberOfRuns=atoi(strtok(NULL," ")); else if(strstr(key,"floating splat")) vpars->floatingSplat=atoi(strtok(NULL," ")); else if(strstr(key,"strip integral")) vpars->stripIntegral=atoi(strtok(NULL," ")); else if(strstr(key,"volume file")) strcpy(vpars->volumeSetName,Stripcpy(strtok(NULL," "))); else if(strstr(key,"splat file")) strcpy(vpars->splatFileName,Stripcpy(strtok(NULL," "))); else if(strstr(key,"splat method")) strcpy(vpars->splatMethod,Stripcpy(strtok(NULL," "))); else if(strstr(key,"slice file")) strcpy(vpars->sliceFileName,Stripcpy(strtok(NULL," "))); else if(strstr(key,"first slice")) vpars->firstSlice=atoi(strtok(NULL," ")); else if(strstr(key,"last slice")) vpars->lastSlice=atoi(strtok(NULL," ")); else if(strstr(key,"derivative method")) strcpy(vpars->derivMethod,Stripcpy(strtok(NULL,"\n"))); else if(strstr(key,"interpolation kernel coefficient B")) vpars->intKernelCoeffB=atof(strtok(NULL,"\n")); else if(strstr(key,"interpolation kernel coefficient C")) vpars->intKernelCoeffC=atof(strtok(NULL,"\n")); else if(strstr(key,"interpolation kernel")) strcpy(vpars->intKernel,Stripcpy(strtok(NULL,"\n"))); else if(strstr(key,"gradient kernel coefficient B")) vpars->derivKernelCoeffB=atof(strtok(NULL,"\n")); else if(strstr(key,"gradient kernel coefficient C")) vpars->derivKernelCoeffC=atof(strtok(NULL,"\n")); else if(strstr(key,"gradient kernel")) strcpy(vpars->derivKernel,Stripcpy(strtok(NULL,"\n"))); else if(strstr(key,"normal estimation method")) strcpy(vpars->normalEstimationMethod,Stripcpy(strtok(NULL,"\n"))); else if(strstr(key,"intersection image")) strcpy(vpars->intersectionImageFlag,Stripcpy(strtok(NULL,"\n"))); else if(strstr(key,"gradient volume")) strcpy(vpars->gradientVolumeFlag,Stripcpy(strtok(NULL,"\n"))); else if(strstr(key,"isovalue")) vpars->isovalue=atof(strtok(NULL,"\n")); else if(strstr(key,"smooth interpolation filter code")) vpars->smoothIntFilterCode=atof(strtok(NULL,"\n")); else if(strstr(key,"smooth derivative filter code")) vpars->smoothDerivFilterCode=atof(strtok(NULL,"\n")); else if(strstr(key,"smooth interpolation filter coefficient")) vpars->smoothIntFilterCoeff=atof(strtok(NULL,"\n")); else if(strstr(key,"smooth derivative filter coefficient")) vpars->smoothDerivFilterCoeff=atof(strtok(NULL,"\n")); else if(strstr(key,"light source position")) { vpars->lightSource.pos.x=atof(strtok(NULL," ")); vpars->lightSource.pos.y=atof(strtok(NULL," ")); vpars->lightSource.pos.z=atof(strtok(NULL," ")); } else if(strstr(key,"light source color")) { vpars->lightSource.color.r=atof(strtok(NULL," ")); vpars->lightSource.color.g=atof(strtok(NULL," ")); vpars->lightSource.color.b=atof(strtok(NULL," ")); } else if(strstr(key,"ambient color")) { vpars->ambientColor.r=atof(strtok(NULL," ")); vpars->ambientColor.g=atof(strtok(NULL," ")); vpars->ambientColor.b=atof(strtok(NULL," ")); } else if(strstr(key,"material color")) { vpars->objProps.color.r=atof(strtok(NULL," ")); vpars->objProps.color.g=atof(strtok(NULL," ")); vpars->objProps.color.b=atof(strtok(NULL," ")); } else if(strstr(key,"diffuse coefficient")) vpars->objProps.kd=atof(strtok(NULL," ")); else if(strstr(key,"ambient coefficient")) vpars->objProps.ka=atof(strtok(NULL," ")); else if(strstr(key,"specular coefficient")) vpars->objProps.ks=atof(strtok(NULL," ")); else if(strstr(key,"specular exponent")) vpars->objProps.phongExp=atof(strtok(NULL," ")); else if(strstr(key,"end")) break; } fclose(fp); return(1); }