diff options
Diffstat (limited to 'libkdcraw/libraw/samples/multirender_test.cpp')
-rw-r--r-- | libkdcraw/libraw/samples/multirender_test.cpp | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/libkdcraw/libraw/samples/multirender_test.cpp b/libkdcraw/libraw/samples/multirender_test.cpp new file mode 100644 index 0000000..06dcec5 --- /dev/null +++ b/libkdcraw/libraw/samples/multirender_test.cpp @@ -0,0 +1,107 @@ +/* -*- C++ -*- + * File: multirender_test.cpp + * Copyright 2008-2021 LibRaw LLC ([email protected]) + * Created: Jul 10, 2011 + * + * LibRaw simple C++ API: creates 8 different renderings from 1 source file. +The 1st and 4th one should be identical + +LibRaw is free software; you can redistribute it and/or modify +it under the terms of the one of two licenses as you choose: + +1. GNU LESSER GENERAL PUBLIC LICENSE version 2.1 + (See file LICENSE.LGPL provided in LibRaw distribution archive for details). + +2. COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + (See file LICENSE.CDDL provided in LibRaw distribution archive for details). + + + */ +#include <stdio.h> +#include <string.h> +#include <math.h> +#include "libraw/libraw.h" + +#ifndef LIBRAW_WIN32_CALLS +#include <unistd.h> +#include <fcntl.h> +#include <sys/stat.h> +#include <sys/mman.h> +#endif + +#ifdef LIBRAW_WIN32_CALLS +#define snprintf _snprintf +#endif + +int process_once(LibRaw &RawProcessor, int half_mode, int camera_wb, + int auto_wb, int suffix, int user_flip, char *fname) +{ + char outfn[1024]; + RawProcessor.imgdata.params.half_size = half_mode; + RawProcessor.imgdata.params.use_camera_wb = camera_wb; + RawProcessor.imgdata.params.use_auto_wb = auto_wb; + RawProcessor.imgdata.params.user_flip = user_flip; + + int ret = RawProcessor.dcraw_process(); + + if (LIBRAW_SUCCESS != ret) + { + fprintf(stderr, "Cannot do postprocessing on %s: %s\n", fname, + libraw_strerror(ret)); + return ret; + } + snprintf(outfn, sizeof(outfn), "%s.%d.%s", fname, suffix, + (RawProcessor.imgdata.idata.colors > 1 ? "ppm" : "pgm")); + + printf("Writing file %s\n", outfn); + + if (LIBRAW_SUCCESS != (ret = RawProcessor.dcraw_ppm_tiff_writer(outfn))) + fprintf(stderr, "Cannot write %s: %s\n", outfn, libraw_strerror(ret)); + return ret; +} + +int main(int ac, char *av[]) +{ + int i, ret; + + LibRaw RawProcessor; + if (ac < 2) + { + printf("multirender_test - LibRaw %s sample. Performs 4 different " + "renderings of one file\n" + " %d cameras supported\n" + "Usage: %s raw-files....\n", + LibRaw::version(), LibRaw::cameraCount(), av[0]); + return 0; + } + + for (i = 1; i < ac; i++) + { + + printf("Processing file %s\n", av[i]); + + if ((ret = RawProcessor.open_file(av[i])) != LIBRAW_SUCCESS) + { + fprintf(stderr, "Cannot open_file %s: %s\n", av[i], libraw_strerror(ret)); + continue; // no recycle b/c open file will recycle itself + } + + if ((ret = RawProcessor.unpack()) != LIBRAW_SUCCESS) + { + fprintf(stderr, "Cannot unpack %s: %s\n", av[i], libraw_strerror(ret)); + continue; + } + process_once(RawProcessor, 0, 0, 0, 1, -1, av[i]); // default flip + process_once(RawProcessor, 1, 0, 1, 2, -1, av[i]); + process_once(RawProcessor, 1, 1, 0, 3, -1, av[i]); // default flip + process_once(RawProcessor, 1, 1, 0, 4, 1, av[i]); // flip 1 + process_once(RawProcessor, 1, 1, 0, 5, 3, av[i]); // flip 3 + process_once(RawProcessor, 1, 1, 0, 6, 1, av[i]); // 1 again same as 4 + process_once(RawProcessor, 1, 1, 0, 7, -1, + av[i]); // default again, same as 3 + process_once(RawProcessor, 0, 0, 0, 8, -1, av[i]); // same as 1 + + RawProcessor.recycle(); // just for show this call + } + return 0; +} |