X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fct.h;h=0653809af675d855e9fe4744de7b7074216d53b9;hp=c3ec83db749253da9212f8028fb08363a360bc0b;hb=bfcc769cf8019eabc8c65c07257c8dbee4b4c977;hpb=5cf6874680f80d238bf34535d711dc223813f951 diff --git a/include/ct.h b/include/ct.h index c3ec83d..0653809 100644 --- a/include/ct.h +++ b/include/ct.h @@ -9,7 +9,7 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ct.h,v 1.18 2000/06/19 17:58:20 kevin Exp $ +** $Id: ct.h,v 1.32 2000/09/02 05:10:39 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 @@ -29,6 +29,7 @@ #define CT_H #ifdef _WIN32 + extern "C" {int strcasecmp(const char*, const char*);} typedef long off_t; #define HAVE_STRING_H 1 #include @@ -41,6 +42,9 @@ #ifdef HAVE_CONFIG_H #include #endif +#ifdef HAVE_DMALLOC +#include +#endif #ifdef HAVE_PNG #include "png.h" #endif @@ -108,21 +112,13 @@ extern "C" { #ifdef HAVE_STDINT_H #include /* Standard ints on Linux */ #endif - -#ifdef HAVE_MPI -#include "mpi++.h" -#include "mpiworld.h" +#ifdef HAVE_ASSERT_H +#include #endif -#include "kstddef.h" -#include "kmath.h" -#include "keyboard.h" -#include "cio.h" -#include "byteorder.h" - -#ifdef HAVE_SGP - #include "ezplot.h" - #include "sgp.h" +#ifdef HAVE_FFTW +#include +#include #endif #include @@ -133,173 +129,37 @@ extern "C" { #include #include #include +#include +#include using namespace std; -#include "array2d.h" -#include "imagefile.h" -#include "phantom.h" -#include "projections.h" -#include "scanner.h" - -//----------------------------------------------------------------------// -// USER SYMBOLS // -//----------------------------------------------------------------------// - -// Filter types -static const char O_FILTER_ABS_BANDLIMIT_STR[]= "abs_bandlimit"; -static const char O_FILTER_ABS_SINC_STR[]= "abs_sinc"; -static const char O_FILTER_ABS_COS_STR[]= "abs_cos"; -static const char O_FILTER_ABS_HAMMING_STR[]= "abs_hamming"; -static const char O_FILTER_SHEPP_STR[]= "shepp"; -static const char O_FILTER_BANDLIMIT_STR[]= "bandlimit"; -static const char O_FILTER_SINC_STR[]= "sinc"; -static const char O_FILTER_COS_STR[]= "cos"; -static const char O_FILTER_HAMMING_STR[]= "hamming"; -static const char O_FILTER_TRIANGLE_STR[]= "triangle"; - -typedef enum { - FILTER_BANDLIMIT, - FILTER_SINC, - FILTER_G_HAMMING, - FILTER_COSINE, - FILTER_TRIANGLE, - FILTER_ABS_BANDLIMIT, // filter times |x| - FILTER_ABS_SINC, - FILTER_ABS_G_HAMMING, - FILTER_ABS_COSINE, - FILTER_SHEPP -} FilterType; - - -// Function domains -static const char D_FREQ_STR[]= "freq"; -static const char D_SPATIAL_STR[]= "spatial"; - -typedef enum { - D_FREQ = 1, - D_SPATIAL -} DomainType; - - -/* interpolation methods */ -static const char O_INTERP_NEAREST_STR[]= "nearest"; -static const char O_INTERP_LINEAR_STR[]= "linear"; -static const char O_INTERP_BSPLINE_STR[]= "bspline"; - -#undef HAVE_BSPLINE_INTERP -typedef enum { // Interpolation methods - I_NEAREST = 1, // Nearest neighbor -#if HAVE_BSPLINE_INTERP - I_BSPLINE, - I_1BSPLINE, // 1st order B-Spline - I_2BSPLINE, - I_3BSPLINE, +#ifdef HAVE_MPI +#include "mpi++.h" +#include "mpiworld.h" #endif - I_LINEAR // Linear interpolation -} InterpolationType; - - -// Trace levels -static const char O_TRACE_NONE_STR[]= "none"; -static const char O_TRACE_TEXT_STR[]= "text"; -static const char O_TRACE_PHM_STR[]= "phm"; -static const char O_TRACE_RAYS_STR[]= "rays"; -static const char O_TRACE_PLOT_STR[]= "plot"; -static const char O_TRACE_CLIPPING_STR[]= "clipping"; - -enum { - TRACE_NONE, /* No tracing */ - TRACE_TEXT, /* Minimal status */ - TRACE_PHM, /* Show phantom */ - TRACE_RAYS, /* Show all rays */ - TRACE_PLOT, /* Plot raysums */ - TRACE_CLIPPING /* Plot clipping */ -}; - -// Standard phantomsa -static const char O_PHM_HERMAN_STR[]= "herman"; -static const char O_PHM_ROWLAND_STR[]= "rowland"; -static const char O_PHM_BROWLAND_STR[]= "browland"; -static const char O_PHM_UNITPULSE_STR[]= "unitpulse"; -typedef enum { - O_PHM_HERMAN, /* Herman head phantom */ - O_PHM_ROWLAND, /* Rowland head phantom */ - O_PHM_BROWLAND, /* Bordered Rowland head phantom */ - O_PHM_UNITPULSE /* Unit pulse phantom */ -} PhantomType; - -// Backproject types -static const char O_BPROJ_TRIG_STR[]= "trig"; -static const char O_BPROJ_TABLE_STR[]= "table"; -static const char O_BPROJ_DIFF_STR[]= "diff"; -static const char O_BPROJ_DIFF2_STR[]= "diff2"; -static const char O_BPROJ_IDIFF2_STR[]= "idiff2"; - -typedef enum { - O_BPROJ_TRIG, - O_BPROJ_TABLE, - O_BPROJ_DIFF, - O_BPROJ_DIFF2, - O_BPROJ_IDIFF2 -} BackprojType; - -// Convolution symmetries -typedef enum { - FUNC_EVEN = 1, // function types, f[-n] = f[n] - FUNC_ODD, // f[-n] = -f[n] - FUNC_BOTH // function has both odd & even components -} FunctionSymmetry; +#include "ctsupport.h" +#include "fnetorderstream.h" +#ifdef HAVE_SGP + #include "ezplot.h" + #include "sgp.h" +#endif +#include "array2d.h" +#include "array2dfile.h" +#include "fnetorderstream.h" +#include "imagefile.h" +#include "phantom.h" +#include "scanner.h" #include "backprojectors.h" +#include "filter.h" +#include "procsignal.h" +#include "projections.h" +#include "reconstruct.h" +#include "trace.h" -/************************************************************************* - * FUNCTION DECLARATIONS - ************************************************************************/ - -// convolve.cpp -double convolve (const double f1[], const double f2[], const double dx, const int n, const int np, const FunctionSymmetry func_type); - -// dialogs.cpp -bool phm_add_pelem_kb (Phantom& phm); -const Phantom& phm_select (Phantom& phm); -int interpolation_select (void); -int filter_select (double *filter_param); - -// filter.cpp -double *filter_generate (const FilterType filt_type, double bw, double xmin, double xmax, int n, double param, const DomainType domain, int numint); -double filter_spatial_response_calc (int filt_type, double x, double bw, double param, int n); -double filter_spatial_response_analytic (int filt_type, double x, double bw, double param); -double filter_frequency_response (int filt_type, double u, double bw, double param); -double sinc (double x, double mult); -double integral_abscos(double u, double w); - -// options.cpp -int opt_set_trace(const char *optarg); -const char *name_of_phantom(const int phmid); -int opt_set_phantom(const char *optarg); -InterpolationType opt_set_interpolation(const char *optarg); -const char *name_of_interpolation(int interp_type); -FilterType opt_set_filter(const char *optarg); -const char *name_of_filter(const int filter); -DomainType opt_set_filter_domain(const char *optarg); -const char *name_of_filter_domain(const DomainType domain); -BackprojType opt_set_backproj(const char *optarg); -const char *name_of_backproj(const BackprojType backproj); - -// From phm2image.cpp -void phm_to_imagefile (const Phantom& phm, ImageFile& im, const int col_start, const int col_count, const int nsample, const int trace); - -// image.cpp -void image_filter_response(ImageFile& im, const DomainType domain, double bw, const FilterType filt_type, double filt_param, const int opt_trace); -int image_display (const ImageFile& im); -int image_display_scale (const ImageFile& im, const int scale, const double pmin, const double pmax); - -// From reconstr.cpp -ImageFile& proj_reconst (ImageFile& im, Projections& rs, const FilterType filt_type, double filt_param, InterpolationType interp_type, int interp_param, const BackprojType backproj_type, int const ir_trace); - #endif