X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=tools%2Fif1.cpp;h=e82325524828351bdf1fc65fcd901295bd9bf580;hp=dcd1dc1a3ac25eb0144d11a7ac7041610477aa86;hb=f13a8c004b8f182b42d9e4df2bcd7c7f030bf1ad;hpb=2a3686d3bd1f690d318b81766c261da785cf9b57 diff --git a/tools/if1.cpp b/tools/if1.cpp index dcd1dc1..e823255 100644 --- a/tools/if1.cpp +++ b/tools/if1.cpp @@ -7,9 +7,7 @@ ** Date Started: Aug 1984 ** ** This is part of the CTSim program -** Copyright (C) 1983-2000 Kevin Rosenberg -** -** $Id: if1.cpp,v 1.2 2000/12/23 18:12:35 kevin Exp $ +** Copyright (C) 1983-2009 Kevin Rosenberg ** ** This program is free software; you can redistribute it and/or modify ** it under the terms of the GNU General Public License (version 2) as @@ -46,9 +44,9 @@ static struct option my_options[] = {0, 0, 0, 0} }; -static const char* g_szIdStr = "$Id: if1.cpp,v 1.2 2000/12/23 18:12:35 kevin Exp $"; +static const char* g_szIdStr = "$Id$"; -void +void if1_usage (const char *program) { std::cout << "usage: " << fileBasename(program) << " infile outfile [OPTIONS]" << std::endl; @@ -59,16 +57,14 @@ if1_usage (const char *program) std::cout << " --exp Natural exponential of image" << std::endl; std::cout << " --sqr Square of image" << std::endl; std::cout << " --sqrt Square root of image" << std::endl; - std::cout << " --verbose Verbose modem" << std::endl; + std::cout << " --verbose Verbose mode" << std::endl; std::cout << " --version Print version" << std::endl; std::cout << " --help Print this help message" << std::endl; } -int +int if1_main (int argc, char *const argv[]) { - ImageFile *im_in; - ImageFile *im_out; char *in_file; char *out_file; int opt_verbose = 0; @@ -81,45 +77,45 @@ if1_main (int argc, char *const argv[]) while (1) { int c = getopt_long (argc, argv, "", my_options, NULL); - + if (c == -1) - break; - + break; + switch (c) - { - case O_INVERT: - opt_invert = 1; - break; - case O_LOG: - opt_log = 1; - break; - case O_SQR: - opt_sqr = 1; - break; - case O_SQRT: - opt_sqrt = 1; - break; - case O_EXP: - opt_exp = 1; - break; - case O_VERBOSE: - opt_verbose = 1; - break; + { + case O_INVERT: + opt_invert = 1; + break; + case O_LOG: + opt_log = 1; + break; + case O_SQR: + opt_sqr = 1; + break; + case O_SQRT: + opt_sqrt = 1; + break; + case O_EXP: + opt_exp = 1; + break; + case O_VERBOSE: + opt_verbose = 1; + break; case O_VERSION: #ifdef VERSION - std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; + std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl; #else std::cout << "Unknown version number" << std::endl; #endif - return (0); - case O_HELP: - case '?': - if1_usage(argv[0]); - return (0); - default: - if1_usage(argv[0]); - return (1); - } + return (0); + case O_HELP: + case '?': + if1_usage(argv[0]); + return (0); + default: + if1_usage(argv[0]); + return (1); + } } if (optind + 2 != argc) @@ -127,72 +123,50 @@ if1_main (int argc, char *const argv[]) if1_usage(argv[0]); return (1); } - + in_file = argv[optind]; out_file = argv[optind + 1]; - std::string histString; if (opt_invert || opt_log || opt_exp || opt_sqr || opt_sqrt) { - int ix, iy; - - im_in = new ImageFile (); - im_in->fileRead (in_file); - int nx = im_in->nx(); - int ny = im_in->ny(); - im_out = new ImageFile (nx, ny); - - ImageFileArray vIn = im_in->getArray(); - ImageFileArray vOut = im_out->getArray(); + ImageFile im_in; + im_in.fileRead (in_file); + int nx = im_in.nx(); + int ny = im_in.ny(); + ImageFile im_out (nx, ny); if (opt_invert) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - vOut[ix][iy] = - vIn[ix][iy]; + im_in.invertPixelValues (im_out); histString = "Invert transformation"; } if (opt_log) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - if (vIn[ix][iy] < 0) - vOut[ix][iy] = 0; - else - vOut[ix][iy] = log (vIn[ix][iy]); + im_in.log (im_out); histString = "Logrithmic transformation"; } if (opt_exp) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - vOut[ix][iy] = exp (vIn[ix][iy]); + im_in.exp (im_out); histString = "Exponential transformation"; } if (opt_sqr) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - vOut[ix][iy] = vIn[ix][iy] * vIn[ix][iy]; + im_in.square (im_out); histString = "Square transformation"; } if (opt_sqrt) { - for (ix = 0; ix < nx; ix++) - for (iy = 0; iy < ny; iy++) - if (vIn[ix][iy] < 0) - vOut[ix][iy] = sqrt (-vIn[ix][iy]); - else - vOut[ix][iy] = sqrt (vIn[ix][iy]); + im_in.sqrt (im_out); histString = "Square root transformation"; } - im_out->labelsCopy (*im_in); - im_out->labelAdd (Array2dFileLabel::L_HISTORY, histString.c_str()); - im_out->fileWrite (out_file); + im_out.labelsCopy (im_in); + im_out.labelAdd (Array2dFileLabel::L_HISTORY, histString.c_str()); + im_out.fileWrite (out_file); } return (0); } #ifndef NO_MAIN -int +int main (int argc, char *const argv[]) { int retval = 1;