** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: ctsimtext.cpp,v 1.24 2003/01/11 21:23:38 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
// If linked to ctsimtext, but executed as another name, eg pjrec, then program will use that
// linked name as name of function.
-static const char* const g_szIdStr = "$Id: ctsimtext.cpp,v 1.24 2003/01/11 21:23:38 kevin Exp $";
+static const char* const g_szIdStr = "$Id$";
static const char* const s_szProgramName = "ctsimtext";
static const char* const s_szProgramName2 = "ctsimtext.exe";
static const char* const s_szProgramName3 = "ctsimtext-lam";
extern int pj2if_main (int argc, char* const argv[]);
extern int pjinfo_main (int argc, char* const argv[]);
extern int pjrec_main (int argc, char* const argv[]);
+extern int linogram_main (int argc, char* const argv[]);
static int processCommand (int argc, char* const argv[]);
static void convertStringToArgcv (char* szLine, int* piArgc, char*** pppArgv);
std::cout << " phm2pj Take projections of a phantom object\n";
std::cout << " phm2helix Take projections of a phantom object\n";
std::cout << " pjHinterp Interpolate helical projections of a phantom object\n";
-
+ std::cout << " linogram Print linogram sampling\n";
}
void
std::cout << " pjHinterp Interpolate helical projections of a phantom object\n";
std::cout << " pjrec Projection reconstruction\n";
std::cout << " quit Quits shell\n";
+ std::cout << " linogram Display linogram sampling\n";
std::cout << "All functions accept --help as parameter for online help\n\n";
}
ctsimtext_main (int argc, char * argv[])
{
int iReturn = 0;
-
+
if (argc > 1 && (strcmp(s_szProgramName, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName2, fileBasename (argv[0])) == 0 || strcmp(s_szProgramName3, fileBasename (argv[0])) == 0)) {
argv++;
argc--;
convertStringToArgcv (pszInputLine, &argc, &argv);
#ifdef DEBUG
- for (unsigned int i = 0; i < argc; i++)
+ for (int i = 0; i < argc; i++)
std::cout << "Token " << i << ": " << argv[i] << "\n";
#endif
iReturn = processCommand (argc, argv);
return pjinfo_main (argc, argv);
else if (strcasecmp (pszFunction, "pjrec") == 0)
return pjrec_main (argc, argv);
+ else if (strcasecmp (pszFunction, "linogram") == 0)
+ return linogram_main (argc, argv);
else {
std::cout << "Unknown function name: " << pszFunction << "\n";
if (s_bInteractive)
int
main (int argc, char* argv[])
{
- int retval = 1;
+#if defined(HAVE_FFTW) && defined(HAVE_GETENV)
+ const char* const pszHome = getenv("HOME");
+ char* pszWisdom = NULL;
+
+ if (pszHome) {
+ const char szFileBase[] = ".fftw3-wisdom";
+ int nHome = strlen(pszHome);
+ int nBase = strlen(szFileBase);
+ int len = nHome + nBase + 1;
+ pszWisdom = new char [ len + 1 ];
+ strcpy (pszWisdom, pszHome);
+ pszWisdom[nHome] = '/';
+ strcpy(pszWisdom+nHome+1,szFileBase);
+ pszWisdom[nHome+nBase+2] = 0;
+
+ FILE *wisdom = fopen(pszWisdom,"r");
+ if (wisdom) {
+ fftw_import_wisdom_from_file(wisdom);
+ fclose(wisdom);
+ }
+ }
+#endif
+
+ int retval = ctsimtext_main(argc, argv);
- retval = ctsimtext_main(argc, argv);
+#if defined(HAVE_FFTW) && defined(HAVE_GETENV)
+ if (pszWisdom) {
+ FILE* wisdom = fopen(pszWisdom,"w+");
+ if (wisdom) {
+ fftw_export_wisdom_to_file(wisdom);
+ fclose(wisdom);
+ delete [] pszWisdom;
+ }
+ }
+#endif
return retval;
}