From c2e9a5e045c9bcf83ddeb6350fa5ca3197646281 Mon Sep 17 00:00:00 2001 From: Johannes Hofmann Date: Wed, 3 Oct 2007 20:30:41 +0200 Subject: add code from lcms and netpbm examples --- src/pnmlcms.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 src/pnmlcms.c (limited to 'src/pnmlcms.c') diff --git a/src/pnmlcms.c b/src/pnmlcms.c new file mode 100644 index 0000000..1fe231b --- /dev/null +++ b/src/pnmlcms.c @@ -0,0 +1,77 @@ +#include +#include + +static int +pam_transform(struct pam *inpam, struct pam *outpam, cmsHTRANSFORM *hTransform); + +int +main(int argc, char **argv) { + int c; + char *in_prof = NULL, *out_prof = NULL; + cmsHTRANSFORM hTransform; + cmsHPROFILE hInProfile, hOutProfile; + struct pam inpam, outpam; + + while ((c = getopt(argc, argv, "i:o:")) != EOF) { + switch (c) { + case 'i': + in_prof = optarg; + break; + case 'o': + out_prof = optarg; + break; + default: + break; + } + } + + hInProfile = cmsOpenProfileFromFile(in_prof, "r"); + hOutProfile = cmsOpenProfileFromFile(out_prof, "r"); + + hTransform = cmsCreateTransform(hInProfile, + TYPE_BGR_8, + hOutProfile, + TYPE_BGR_8, + INTENT_PERCEPTUAL, 0); + + + pm_init(argv[0], 0); + + pnm_readpaminit(stdin, &inpam, PAM_STRUCT_SIZE(tuple_type)); + + outpam = inpam; outpam.file = stdout; + + pnm_writepaminit(&outpam); + + pam_transform(&inpam, &outpam, hTransform); + +} + +static int +pam_transform(struct pam *inpam, struct pam *outpam, cmsHTRANSFORM *hTransform) +{ + tuple * tuplerow; + unsigned int row; + + + tuplerow = pnm_allocpamrow(inpam); + + 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_writepamrow(outpam, tuplerow); + } + + pnm_freepamrow(tuplerow); + + return 0; +} + + + -- cgit v1.2.3