int main(int argc, char **argv ) { struct cmdlineInfo cmdline; FILE* ifP; struct pam pam; struct pfmHeader pfmHeader; pfmSample * pfmRowBuffer; unsigned int pfmSamplesPerRow; unsigned pfmRow; tuplen ** tuplenArray; machineEndianness = thisMachineEndianness(); pnm_init(&argc, argv); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr(cmdline.inputFilespec); readPfmHeader(ifP, &pfmHeader); if (cmdline.verbose) dumpPfmHeader(pfmHeader); initPam(&pam, pfmHeader.width, pfmHeader.height, pfmHeader.color, cmdline.maxval); tuplenArray = pnm_allocpamarrayn(&pam); pfmSamplesPerRow = pam.width * pam.depth; MALLOCARRAY_NOFAIL(pfmRowBuffer, pfmSamplesPerRow); /* PFMs are upside down like BMPs */ for (pfmRow = 0; pfmRow < pam.height; ++pfmRow) makePamRow(&pam, ifP, pfmRow, pfmSamplesPerRow, tuplenArray, pfmHeader.endian, pfmHeader.scaleFactor, pfmRowBuffer); pnm_writepamn(&pam, tuplenArray); pnm_freepamarrayn(tuplenArray, &pam); free(pfmRowBuffer); pm_close(ifP); pm_close(pam.file); return 0; }
int main(int argc, char **argv ) { struct cmdlineInfo cmdline; FILE* ifP; struct pam pam; pfmSample * pfmRowBuffer; unsigned int pfmSamplesPerRow; unsigned int pfmRow; tuplen ** tuplenArray; pnm_init(&argc, argv); machineEndianness = thisMachineEndianness(); parseCommandLine(argc, argv, &cmdline); ifP = pm_openr(cmdline.inputFilespec); tuplenArray = pnm_readpamn(ifP, &pam, PAM_STRUCT_SIZE(tuple_type)); writePfmHeader(stdout, makePfmHeader(&pam, cmdline.scale, cmdline.endian)); pfmSamplesPerRow = pam.width * pam.depth; MALLOCARRAY_NOFAIL(pfmRowBuffer, pfmSamplesPerRow); /* PFMs are upside down like BMPs */ for (pfmRow = 0; pfmRow < pam.height; ++pfmRow) writePfmRow(&pam, stdout, pfmRow, pfmSamplesPerRow, tuplenArray, cmdline.endian, cmdline.scale, pfmRowBuffer); pnm_freepamarrayn(tuplenArray, &pam); free(pfmRowBuffer); pm_close(stdout); pm_close(pam.file); return 0; }