summaryrefslogtreecommitdiff
path: root/src/pnmlcms.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pnmlcms.c')
-rw-r--r--src/pnmlcms.c44
1 files 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;
}