summaryrefslogtreecommitdiff
path: root/src/pnmlcms.c
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2007-10-03 20:30:41 +0200
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2007-10-03 20:30:41 +0200
commitc2e9a5e045c9bcf83ddeb6350fa5ca3197646281 (patch)
treea5e1edd24fce2a5356948bd19fad97f1a27bb758 /src/pnmlcms.c
parentc8c00fabcf826914d965856590e063dd214842ca (diff)
add code from lcms and netpbm examples
Diffstat (limited to 'src/pnmlcms.c')
-rw-r--r--src/pnmlcms.c77
1 files changed, 77 insertions, 0 deletions
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;
+}
+
+
+