r7061: initial property settings
[ctsim.git] / tools / if1.cpp
index dcd1dc1a3ac25eb0144d11a7ac7041610477aa86..39158f8550dbf6e5dc9a37dbfa14b8ca8b6fda20 100644 (file)
@@ -9,7 +9,7 @@
 **  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 $
+**  $Id$
 **
 **  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,7 +46,7 @@ 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 
 if1_usage (const char *program)
@@ -59,7 +59,7 @@ 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;
 }
@@ -67,8 +67,6 @@ if1_usage (const char *program)
 int 
 if1_main (int argc, char *const argv[])
 {
-  ImageFile *im_in;
-  ImageFile *im_out;
   char *in_file;
   char *out_file;
   int opt_verbose = 0;
@@ -131,61 +129,39 @@ if1_main (int argc, char *const argv[])
   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++)\r
-          if (vIn[ix][iy] < 0)\r
-            vOut[ix][iy] = 0;
-          else\r
-            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++)\r
-          if (vIn[ix][iy] < 0)
-              vOut[ix][iy] = sqrt (-vIn[ix][iy]);\r
-          else\r
-              vOut[ix][iy] = sqrt (vIn[ix][iy]);\r
+      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);