X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fir.h;h=a257bae391858262949ae611de98823ae6c80969;hp=cf8b6a09ff80573e945533e2101b6d7c1bf0b597;hb=92a7e95f339442d5d87f0febcae338306e1c6edd;hpb=8736131be5db05a5b15fe36252665a53016789e2 diff --git a/include/ir.h b/include/ir.h index cf8b6a0..a257bae 100644 --- a/include/ir.h +++ b/include/ir.h @@ -2,8 +2,23 @@ ** This is part of the CTSim program ** Copyright (C) 1983-2000 Kevin Rosenberg ** -** $Id: ir.h,v 1.16 2000/05/24 22:48:17 kevin Exp $ +** $Id: ir.h,v 1.21 2000/06/07 03:49:54 kevin Exp $ ** $Log: ir.h,v $ +** Revision 1.21 2000/06/07 03:49:54 kevin +** *** empty log message *** +** +** Revision 1.20 2000/06/07 02:30:27 kevin +** Added C++ image files +** +** Revision 1.19 2000/06/07 00:59:38 kevin +** added imagefiles +** +** Revision 1.18 2000/06/05 01:32:45 kevin +** Added C++ compatibility +** +** Revision 1.17 2000/06/03 06:29:08 kevin +** *** empty log message *** +** ** Revision 1.16 2000/05/24 22:48:17 kevin ** First functional version of SDF library for X-window ** @@ -76,27 +91,6 @@ #ifndef IR_H #define IR_H -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -#ifdef MPI_CT -#define MPI_MAX_PROCESS 128 -struct mpi_ct_st -{ - int my_rank; - int nproc; - int base_local_work_units; - int remainder_work_units; - int local_work_units[MPI_MAX_PROCESS]; - int start_work_unit[MPI_MAX_PROCESS]; - MPI_Comm comm; -}; - -extern struct mpi_ct_st mpi_ct; -void mpi_ct_calc_work_units(const unsigned int global_work_units); -#endif - struct histo_st { int *b; /* Histogram array (# of elements in each bin) */ @@ -262,24 +256,27 @@ static const char D_FREQ_STR[]= "freq"; static const char D_SPATIAL_STR[]= "spatial"; typedef enum { - D_FREQ, + D_FREQ = 1, D_SPATIAL } DomainType; typedef enum { - FUNC_EVEN, /* function types, f[-n] = f[n] */ + FUNC_EVEN = 1, /* function types, f[-n] = f[n] */ FUNC_ODD, /* f[-n] = -f[n] */ FUNC_BOTH /* function has both odd & even components */ } FunctionSymmetry; /* interpolation methods */ +#undef HAVE_BSPLINE_INTERP typedef enum { /* Interpolation methods */ - I_NEAREST, /* Nearest neighbor */ - I_LINEAR, /* Linear interpolation */ + I_NEAREST = 1, /* Nearest neighbor */ +#if HAVE_BSPLINE_INTERP I_BSPLINE, I_1BSPLINE, /* 1st order B-Spline */ I_2BSPLINE, - I_3BSPLINE + I_3BSPLINE, +#endif + I_LINEAR /* Linear interpolation */ } InterpolationType; /* Constants for sizing PHANTOM */ @@ -360,11 +357,31 @@ const static int RAYSUM_TRACE_ROW_ATTEN=18; /************************************************************************* * FUNCTION DECLARATIONS ************************************************************************/ - -void usage (const char *program); + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#ifdef MPI_CT +#define MPI_MAX_PROCESS 128 +struct mpi_ct_st +{ + int my_rank; + int nproc; + int base_local_work_units; + int remainder_work_units; + int local_work_units[MPI_MAX_PROCESS]; + int start_work_unit[MPI_MAX_PROCESS]; + MPI_Comm comm; +}; + +extern struct mpi_ct_st mpi_ct; +void mpi_ct_calc_work_units(const unsigned int global_work_units); +#endif + /* From reconstr.c */ -IMAGE *image_reconst (IMAGE *im, RAYSUM *rs, int filt_type, double filt_param, const InterpolationType interp_type, int interp_param, const BackprojType backproj_type, int const ir_trace); +IMAGE *image_reconst (IMAGE *im, RAYSUM *rs, const FilterType filt_type, double filt_param, InterpolationType interp_type, int interp_param, const BackprojType backproj_type, int const ir_trace); /* From bproj.c */ void backproj_init (const RAYSUM *rs, IMAGE *im, const BackprojType bproj_method); @@ -431,13 +448,13 @@ int image_display_scale (const IMAGE *im, const int scale, const double pmin, co int opt_set_trace(const char *optarg); const char *name_of_phantom(const int phmid); int opt_set_phantom(const char *optarg); -int opt_set_interpolation(const char *optarg); +InterpolationType opt_set_interpolation(const char *optarg); const char *name_of_interpolation(int interp_type); -int opt_set_filter(const char *optarg); +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); -int opt_set_backproj(const char *optarg); +BackprojType opt_set_backproj(const char *optarg); const char *name_of_backproj(const BackprojType backproj); /* phm.c */ @@ -462,8 +479,7 @@ void phm_draw(const PHANTOM *phm); #endif /* phm2image.c */ -void phm_to_image(const PHANTOM *phm, IMAGE *im, const int col_start, const int col_count, - const int nsample, const int trace); +void phm_to_image(const PHANTOM *phm, IMAGE *im, const int col_start, const int col_count, const int nsample, const int trace); int pelm_is_point_inside(PELM *obj, const double x, const double y, const CoordType coord_type); /* phmstd.c */ @@ -503,6 +519,10 @@ int raysum_print(const RAYSUM *rs); #ifdef __cplusplus } + +void phm_to_imagefile (const PHANTOM *phm, ImageFile& im, const int col_start, const int col_count, const int nsample, const int trace); + #endif /* __cplusplus */ + #endif