X-Git-Url: http://git.kpe.io/?p=ctsim.git;a=blobdiff_plain;f=include%2Fir.h;h=0a04c795d74bb149107c832af9b31cbf329711a5;hp=96b21290e5b4618af1a18c95daf1cd007bff64fc;hb=07b93dbf2b66fa23c5378ab0fa42f9a7f0083380;hpb=e559ff1655d5c6103447912e345a1229fdaa4a35 diff --git a/include/ir.h b/include/ir.h index 96b2129..0a04c79 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.14 2000/05/11 14:07:00 kevin Exp $ +** $Id: ir.h,v 1.19 2000/06/07 00:59:38 kevin Exp $ ** $Log: ir.h,v $ +** 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 +** +** Revision 1.15 2000/05/16 04:33:17 kevin +** Updated documentation +** ** Revision 1.14 2000/05/11 14:07:00 kevin ** Added support for Windows NT ** @@ -70,10 +85,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 @@ -203,10 +214,10 @@ struct detector_st { typedef struct detector_st DETECTOR; struct raysum_st { - int fd; - int file_mode; - int header_size; - int geometry; + int fd; /* Disk file descriptor */ + int file_mode; /* Current file mode (read or write) */ + int header_size; /* Size of disk file header */ + int geometry; /* Geometry of scanner */ struct detarray_st **view; /* Pointer to array of detarray_st pointers */ char remark[MAXREMARK+1]; /* description of raysum data */ @@ -256,24 +267,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 */ @@ -354,11 +368,15 @@ const static int RAYSUM_TRACE_ROW_ATTEN=18; /************************************************************************* * FUNCTION DECLARATIONS ************************************************************************/ - + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + void usage (const char *program); /* 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); @@ -417,25 +435,28 @@ IMAGE *image_create(const char *fname, const int nx, const int ny); int image_clear(IMAGE *im); int image_save(IMAGE *im); IMAGE *image_load(const char *fname); -void image_filter_response(IMAGE *im, int domain, double bw, int filt_type, double filt_param, int opt_trace); +void image_filter_response(IMAGE *im, const DomainType domain, double bw, const FilterType filt_type, double filt_param, const int opt_trace); +int image_display (const IMAGE *im); +int image_display_scale (const IMAGE *im, const int scale, const double pmin, const double pmax); /* options.c */ -int opt_set_trace(const char *optarg, const char *program); +int opt_set_trace(const char *optarg); const char *name_of_phantom(const int phmid); -int opt_set_phantom(const char *optarg, const char *program); -int opt_set_interpolation(const char *optarg, const char *program); +int opt_set_phantom(const char *optarg); +int opt_set_interpolation(const char *optarg); const char *name_of_interpolation(int interp_type); -int opt_set_filter(const char *optarg, const char *program); +int opt_set_filter(const char *optarg); const char *name_of_filter(const int filter); -DomainType opt_set_filter_domain(const char *optarg, const char *program); +DomainType opt_set_filter_domain(const char *optarg); const char *name_of_filter_domain(const DomainType domain); -int opt_set_backproj(const char *optarg, const char *program); +int opt_set_backproj(const char *optarg); const char *name_of_backproj(const BackprojType backproj); /* phm.c */ PHANTOM *phm_create(const int phmid); PHANTOM *phm_create_from_file(const char *fname); PHANTOM *phm_init(void); +void phm_free (PHANTOM *phm); int phm_add_pelm_file(PHANTOM *phm, const char *fname); void phm_add_pelm (PHANTOM *phm, const char *type, const double cx, const double cy, const double u, const double v, const double rot, const double atten); @@ -447,7 +468,7 @@ void calc_arc(double x[], double y[], const int pts, const double xcent, const d void calc_ellipse(double x[], double y[], const int pts, const double u, const double v); int circle_pts(double theta); void phm_print(PHANTOM *phm); -#if HAVE_INTERACTIVE_GRAPHICS +#if HAVE_SGP void phm_show(const PHANTOM *phm); void phm_draw(const PHANTOM *phm); #endif