diff options
| author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-10-03 20:30:41 +0200 |
|---|---|---|
| committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2007-10-03 20:30:41 +0200 |
| commit | c2e9a5e045c9bcf83ddeb6350fa5ca3197646281 (patch) | |
| tree | a5e1edd24fce2a5356948bd19fad97f1a27bb758 | |
| parent | c8c00fabcf826914d965856590e063dd214842ca (diff) | |
add code from lcms and netpbm examples
| -rw-r--r-- | .hgignore | 2 | ||||
| -rw-r--r-- | src/pnmlcms.c | 77 |
2 files changed, 78 insertions, 1 deletions
@@ -22,4 +22,4 @@ install-sh stamp-h1 missing tags -flimsel +pnmlcms 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 <pam.h> +#include <lcms.h> + +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; +} + + + |
