/* bandnormal.c * * * Emilio 4/1/99 * Updated program. * Emilio 11/25/98 * Wrote program. Compiled without bugs. Ran well, no apparent errors. * * * COMPILE AS: gccemu bandnormal * RUN AS: bandnormal ******************************************************************************/ #include "emu.h" const char * cpszUsage = {"usage: bandnormal \n\ .\n\ "}; int main(int argc, char *argv[]) { FILE *fnorm; int v, i, undercount, overcount, nElements; int bug=0; float *oldval; BYTE *newval; float oldlow, oldhigh, oldrange, temp; float newlow, newhigh, newrange; char outfilename[FILENAMELEN]; Initialize(&argc, argv, NOMASK); newlow = P[0]; newhigh = P[1]; newrange = newhigh - newlow; for (v = 0; v < nVars; v++) { nElements = pstVars[v].nRows * pstVars[v].nCols; oldlow = pstVars[v].P[0]; oldhigh = pstVars[v].P[1]; oldrange = oldhigh - oldlow; undercount = 0; overcount = 0; oldval = alloc1d_f(0, nElements-1); newval = alloc1d_uc(0, nElements-1); ReadXY(oldval, pstVars[v], NONE, NONE); for (i = 0; i < nElements; i++) { /* temp = (oldval[i] - oldlow) / oldrange * newrange + newlow; */ temp = (oldval[i] - oldlow) * (newrange / oldrange) + newlow; if (temp > 255.0) { newval[i] = 255; overcount++; } else if (temp < 0.0) { newval[i] = 0; undercount++; } else newval[i] = (BYTE) floor(temp + 0.5); } (void) printf("New values (oldlow=%.2f) less than 0: %d\n", oldlow, undercount); (void) printf("New values (oldhigh=%.2f) greater than 255: %d\n\n", oldhigh,overcount); /* write normalized data */ strcpy(outfilename, pstVars[v].param); fnorm = OUTPUTfile(outfilename, ".n"); fwrite(newval, sizeof(BYTE), nElements, fnorm); fclose(fnorm); free1d_f(oldval,0,nElements-1); free1d_uc(newval,0,nElements-1); } /* END v FOR-LOOP (loop thru each variable) */ /* ========================================================= */ CleanUp(); return(0); } /* ================================================================= */ void ProcessCommandLineArgs(int * pArgc, char * argv[]) { } /* ================================================================= */ void LocalCleanUp(void) { }