r279: msvc compatibility changes
[ctsim.git] / tools / pj2if.cpp
index daf4028645935582082f623c2e097a1b79ba9302..0192898df9c1800c8307cf86b78bec702950da5d 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (C) 1983-2000 Kevin Rosenberg
 **
-**  $Id: pj2if.cpp,v 1.2 2000/08/02 18:09:11 kevin Exp $
+**  $Id: pj2if.cpp,v 1.7 2000/12/17 23:30:48 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
 #include "timer.h"
 
 
-enum { O_VERBOSE, O_HELP, O_VERSION };
+enum { O_VERBOSE, O_DUMP, O_HELP, O_VERSION };
 
 static struct option my_options[] =
 {
   {"verbose", 0, 0, O_VERBOSE},
+  {"dump", 0, 0, O_DUMP},
   {"help", 0, 0, O_HELP},
   {"version", 0, 0, O_VERSION},
   {0, 0, 0, 0}
 };
 
-static const char* g_szIdStr = "$id$";
+static const char* g_szIdStr = "$Id: pj2if.cpp,v 1.7 2000/12/17 23:30:48 kevin Exp $";
 
 void 
 pj2if_usage (const char *program)
 {
-  cout << "usage: " << fileBasename(program) << " in-proj-file out-if-file [OPTIONS]" << endl;
-  cout << "Converts a projection file to a IF file" << endl;
-  cout << endl;
-  cout << "   --verbose   Verbose mode" << endl;
-  cout << "   --version   Print version" << endl;
-  cout << "   --help      Print this help message" << endl;
+  std::cout << "usage: " << fileBasename(program) << " in-proj-file out-if-file [OPTIONS]\n";
+  std::cout << "Converts a projection file to a IF file\n";
+  std::cout << std::endl;
+  std::cout << "   --verbose   Verbose mode\n";
+  std::cout << "   --dump      Dump all scan data\n";
+  std::cout << "   --version   Print version\n";
+  std::cout << "   --help      Print this help message\n";
 }
 
          
@@ -66,6 +68,7 @@ pj2if_main (const int argc, char *const argv[])
 {
   char *pj_name, *im_name;
   bool optVerbose = false;
+  bool optDump = false;
   extern int optind;
   Timer timerProgram;
 
@@ -80,11 +83,14 @@ pj2if_main (const int argc, char *const argv[])
        case O_VERBOSE:
          optVerbose = true;
          break;
+       case O_DUMP:
+         optDump = true;
+         break;
         case O_VERSION:
 #ifdef VERSION
-          cout << "Version " << VERSION << endl;
+         std::cout << "Version " << VERSION << std::endl << g_szIdStr << std::endl;
 #else
-          cout << "Unknown version number" << endl;
+          std::cout << "Unknown version number\n";
 #endif
          return (0);
        case O_HELP:
@@ -111,15 +117,20 @@ pj2if_main (const int argc, char *const argv[])
     return (1);
   }
 
-  if (optVerbose)
-      pj.printScanInfo();
+  if (optDump)
+    pj.printProjectionData();
+  else if (optVerbose) {
+    std::ostringstream os;
+    pj.printScanInfo (os);
+    std::cout << os.str();
+  }
   
   ImageFile im (pj.nDet(), pj.nView());
   
   ImageFileArray v = im.getArray();
 
   for (int iy = 0; iy < pj.nView(); iy++) {
-    const DetectorArray& detarray = pj.getDetectorArray (iy);
+    const DetectorArray& detarray = pj.getDetectorArray (pj.nView() - iy - 1);
     const DetectorValue* detval = detarray.detValues();
     for (int ix = 0; ix < pj.nDet(); ix++) {
       v[ix][iy] = detval[ix];
@@ -143,9 +154,9 @@ main (const int argc, char *const argv[])
   try {
     retval = pj2if_main(argc, argv);
   } catch (exception e) {
-    cerr << "Exception: " << e.what() << endl;
+    std::cerr << "Exception: " << e.what() << std::endl;
   } catch (...) {
-    cerr << "Unknown exception" << endl;
+    std::cerr << "Unknown exception\n";
   }
 
   return (retval);