r117: *** empty log message ***
[ctsim.git] / src / if-2.cpp
index 6b9532be2d5d451cfc7de3925c107a903c9ad9c7..0d35a125b57cf203cc640ea71250436fbac9ae83 100644 (file)
@@ -1,31 +1,15 @@
 /*****************************************************************************
-**  This is part of the CTSim program
-**  Copyright (C) 1983-2000 Kevin Rosenberg
-**
-**  $Id: if-2.cpp,v 1.1 2000/06/07 07:43:19 kevin Exp $
-**  $Log: if-2.cpp,v $
-**  Revision 1.1  2000/06/07 07:43:19  kevin
-**  Converted to IF data files and C++
-**
-**  Revision 1.1  2000/06/07 02:29:05  kevin
-**  Initial C++ versions
-**
-**  Revision 1.5  2000/05/24 22:50:04  kevin
-**  Added support for new SGP library
-**
-**  Revision 1.4  2000/05/16 04:33:59  kevin
-**  Improved option processing
-**
-**  Revision 1.3  2000/05/11 01:06:30  kevin
-**  Changed sprintf to snprintf
+** FILE IDENTIFICATION
 **
-**  Revision 1.2  2000/05/08 20:02:32  kevin
-**  ANSI C changes
-**
-**  Revision 1.1.1.1  2000/04/28 13:02:44  kevin
-**  Initial CVS import for first public release
+**   Name:          if-2.cpp
+**   Purpose:       Manipulate two image files
+**   Programmer:    Kevin Rosenberg
+**   Date Started:  May 2000
 **
+**  This is part of the CTSim program
+**  Copyright (C) 1983-2000 Kevin Rosenberg
 **
+**  $Id: if-2.cpp,v 1.6 2000/06/19 17:58:13 kevin Exp $
 **
 **  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
@@ -42,7 +26,7 @@
 ******************************************************************************/
 
 /* FILE
- *   sdf-2.c         Generate a SDF file from two input SDF files
+ *   if-2.c         Generate a IF file from two input IF files
  */
 
 #include "ct.h"
@@ -62,25 +46,25 @@ static struct option my_options[] =
 };
 
 void 
-sdf2_usage (const char *program)
+if2_usage (const char *program)
 {
-  fprintf(stdout, "sdf2_usage: %s infile1 infile2 outfile [OPTIONS]\n", kbasename(program));
-  fprintf(stdout, "Generate an SDF2D file from two input SDF2D files\n");
-  fprintf(stdout, "\n");
-  fprintf(stdout, "     infile1    Name of first input SDF file\n");
-  fprintf(stdout, "     infile2    Name of second input SDF file\n");
-  fprintf(stdout, "     outfile    Name of output SDF file\n");
-  fprintf(stdout, "     --add      Add images\n");
-  fprintf(stdout, "     --sub      Subtract image 2 from image 1\n");
-  fprintf(stdout, "     --mul      Multiply images\n");
-  fprintf(stdout, "     --comp     Compare images\n");
-  fprintf(stdout, "     --verbose  Verbose modem\n");
-  fprintf(stdout, "     --version  Print version\n");
-  fprintf(stdout, "     --help     Print this help message\n");
+  cout << "usage: " << fileBasename(program) << " infile1 infile2 outfile [OPTIONS]" << endl;
+  cout << "Generate an image file from two input image files files" << endl;
+  cout << endl;
+  cout << "     infile1    Name of first input IF file" << endl;
+  cout << "     infile2    Name of second input IF file" << endl;
+  cout << "     outfile    Name of output IF file" << endl;
+  cout << "     --add      Add images" << endl;
+  cout << "     --sub      Subtract image 2 from image 1" << endl;
+  cout << "     --mul      Multiply images" << endl;
+  cout << "     --comp     Compare images" << endl;
+  cout << "     --verbose  Verbose modem" << endl;
+  cout << "     --version  Print version" << endl;
+  cout << "     --help     Print this help message" << endl;
 }
 
 int 
-sdf2_main (int argc, char *const argv[])
+if2_main (int argc, char *const argv[])
 {
   ImageFile* pim_in1;
   ImageFile* pim_in2;
@@ -118,23 +102,23 @@ sdf2_main (int argc, char *const argv[])
       break;
     case O_VERSION:
 #ifdef VERSION
-      fprintf(stdout, "Version %s\n", VERSION);
+      cout << "Version " << VERSION << endl;
 #else
-      fprintf(stderr, "Unknown version number");
+      cout << "Unknown version number" << endl;
 #endif
-      exit(0);
+      return (0);
     case O_HELP:
     case '?':
-      sdf2_usage(argv[0]);
+      if2_usage(argv[0]);
       return (0);
     default:
-      sdf2_usage(argv[0]);
+      if2_usage(argv[0]);
       return (1);
     }
   }
   
   if (optind + 3 != argc) {
-    sdf2_usage(argv[0]);
+    if2_usage(argv[0]);
     return (1);
   }
   
@@ -147,24 +131,24 @@ sdf2_main (int argc, char *const argv[])
   ImageFile& im_in1 = *pim_in1;
   ImageFile& im_in2 = *pim_in2;
 
-  if (! im_in1.adf.fileRead() || ! im_in2.adf.fileRead()) {
+  if (! im_in1.fileRead() || ! im_in2.fileRead()) {
       sys_error (ERR_WARNING, "Error reading an image");
       return (1);
   }
 
   if (im_in1.nx() != im_in2.nx() || im_in1.ny() != im_in2.ny()) {
-    fprintf(stderr, "Error: Size of image 1 (%d,%d) and image 2 (%d,%d) do not match\n",
+    sys_error (ERR_SEVERE, "Error: Size of image 1 (%d,%d) and image 2 (%d,%d) do not match",
            im_in1.nx(), im_in1.ny(), im_in2.nx(), im_in2.ny());
     return(1);
   }
   if (im_in1.nx() < 0 || im_in1.ny() < 0) {
-      fprintf(stderr, "Error: Size of image < 0");
+      sys_error (ERR_SEVERE, "Error: Size of image < 0");
       return(1);
   }
 
   pim_out = new ImageFile (out_file, im_in1.nx(), im_in1.ny());
   ImageFile& im_out = *pim_out;
-  if (! im_out.adf.fileCreate()) {
+  if (! im_out.fileCreate()) {
     sys_error (ERR_WARNING, "Could not open output file %s", out_file);
     return (1);
   }
@@ -215,15 +199,15 @@ sdf2_main (int argc, char *const argv[])
       }
     }
     abs_error /= (im_in1.nx() * im_in1.ny());
-    fprintf(stdout, "Average Error = %f\n", abs_error);
+    cout << "Average Error: " << abs_error << endl;
   }
 
-  im_out.adf.arrayDataWrite();
-  im_out.adf.labelsCopy (im_in1.adf, "if-2 file 1: ");
-  im_out.adf.labelsCopy (im_in2.adf, "if-2 file 2: ");
-  im_out.adf.labelAdd (Array2dFileLabel::L_HISTORY, strOperation.c_str());
+  im_out.arrayDataWrite();
+  im_out.labelsCopy (im_in1, "if-2 file 1: ");
+  im_out.labelsCopy (im_in2, "if-2 file 2: ");
+  im_out.labelAdd (Array2dFileLabel::L_HISTORY, strOperation.c_str());
 
-  im_out.adf.fileClose();
+  im_out.fileClose();
 
   return (0);
 }
@@ -232,7 +216,17 @@ sdf2_main (int argc, char *const argv[])
 int 
 main (int argc, char *const argv[])
 {
-  return (sdf2_main(argc, argv));
+  int retval = 1;
+
+  try {
+    retval = if2_main(argc, argv);
+  } catch (exception e) {
+    cerr << "Exception: " << e.what() << endl;
+  } catch (...) {
+    cerr << "Unknown exception" << endl;
+  }
+
+  return (retval);
 }
 #endif