** 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$
**
** 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
******************************************************************************/
/* FILE
- * pj2if.c Convert Raysum to image
+ * pj2if.c Convert Raysum to image
*
* DATE
* Apr 1999
#include "timer.h"
-enum { O_VERBOSE, O_HELP, O_VERSION };
+enum { O_VERBOSE, O_HELP, O_VERSION, O_POLAR };
static struct option my_options[] =
{
+ {"polar", 0, 0, O_POLAR},
{"verbose", 0, 0, O_VERBOSE},
{"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$";
-void
+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 imagefile\n";
+ std::cout << std::endl;
+ std::cout << " --polar Convert to polar format\n";
+ std::cout << " --verbose Verbose mode\n";
+ std::cout << " --version Print version\n";
+ std::cout << " --help Print this help message\n";
}
-
-
-int
+int
pj2if_main (const int argc, char *const argv[])
{
char *pj_name, *im_name;
{
int c = getopt_long (argc, argv, "", my_options, NULL);
if (c == -1)
- break;
-
+ break;
+
switch (c)
- {
- case O_VERBOSE:
- optVerbose = true;
- break;
+ {
+ case O_VERBOSE:
+ optVerbose = 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:
- case '?':
- pj2if_usage(argv[0]);
- return (0);
- default:
- pj2if_usage(argv[0]);
- return (1);
- }
+ return (0);
+ case O_HELP:
+ case '?':
+ pj2if_usage(argv[0]);
+ return (0);
+ default:
+ pj2if_usage(argv[0]);
+ return (1);
+ }
}
-
+
if (argc - optind != 2) {
pj2if_usage(argv[0]);
return (1);
return (1);
}
- if (optVerbose)
- pj.printScanInfo();
-
+ 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];
im.labelAdd (pj.getLabel());
im.labelAdd (Array2dFileLabel::L_HISTORY, "Conversion from .pj to .if", timerProgram.timerEnd());
im.fileWrite (im_name);
-
+
return(0);
}
#ifndef NO_MAIN
-int
+int
main (const int argc, char *const argv[])
{
int retval = 1;
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);