From d863b28dd3cc6f5e3d025f4fb0de80fbe82023a3 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Wed, 3 Oct 2007 21:22:20 +0200 Subject: make it work - inefficiently --- src/pnmlcms.c | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/src/pnmlcms.c b/src/pnmlcms.c index 1fe231b..5c14d44 100644 --- a/src/pnmlcms.c +++ b/src/pnmlcms.c @@ -29,9 +29,9 @@ main(int argc, char **argv) { hOutProfile = cmsOpenProfileFromFile(out_prof, "r"); hTransform = cmsCreateTransform(hInProfile, - TYPE_BGR_8, + TYPE_RGB_16, hOutProfile, - TYPE_BGR_8, + TYPE_RGB_16, INTENT_PERCEPTUAL, 0); @@ -43,32 +43,48 @@ main(int argc, char **argv) { pnm_writepaminit(&outpam); - pam_transform(&inpam, &outpam, hTransform); + pam_transform(&inpam, &outpam, &hTransform); + cmsDeleteTransform(hTransform); + cmsCloseProfile(hInProfile); + cmsCloseProfile(hOutProfile); + + return 0; } static int pam_transform(struct pam *inpam, struct pam *outpam, cmsHTRANSFORM *hTransform) { - tuple * tuplerow; - unsigned int row; + tuple *inrow, *outrow; + int row, col; - tuplerow = pnm_allocpamrow(inpam); + inrow = pnm_allocpamrow(inpam); + outrow = pnm_allocpamrow(outpam); for (row = 0; row < inpam->height; row++) { - unsigned int column; - pnm_readpamrow(inpam, tuplerow); - for (column = 0; column < inpam->width; ++column) { - unsigned int plane; - for (plane = 0; plane < inpam->depth; ++plane) { - //grand_total += tuplerow[column][plane]; + pnm_readpamrow(inpam, inrow); + for (col = 0; col < inpam->width; col++) { + int i; + unsigned short inpix[3], outpix[3]; + + for (i = 0; i < 3; i++) { + inpix[i] = (unsigned short) inrow[col][i]; + } + + cmsDoTransform(*hTransform, inpix, outpix, 1); + + for (i = 0; i < 3; i++) { + outrow[col][i] = (sample) outpix[i]; } } - pnm_writepamrow(outpam, tuplerow); + + + pnm_writepamrow(outpam, outrow); } - pnm_freepamrow(tuplerow); + pnm_freepamrow(inrow); + pnm_freepamrow(outrow); return 0; } -- cgit v1.2.3