-#define I_NEAREST 1 /* Interpolation methods */
-#define I_LINEAR 2 /* Linear interpolation */
-#define I_BSPLINE 3
-#define I_1BSPLINE 3 /* 1st order B-Spline */
-#define I_2BSPLINE 4
-#define I_3BSPLINE 5
-
-/* Constants for sizing picture */
-
-#define PERCENT_PIC_SIZE_INCR 0.0 /* Fractional increase in picture */
- /* limits compared to object size */
-#define N_EXTRA_DETECTORS 4 /* Number of extra detectors */
- /* widths when calculating detlen */
-
-#define DET_PARALLEL 1
-#define DET_FAN 2
-
-#define O_TRACE_NONE_STR "none"
-#define O_TRACE_TEXT_STR "text"
-#define O_TRACE_PIC_STR "pic"
-#define O_TRACE_RAYS_STR "rays"
-#define O_TRACE_PLOT_STR "plot"
-#define O_TRACE_CLIPPING_STR "clipping"
-
-
-#define TRACE_NONE 0 /* No tracing */
-#define TRACE_TEXT 1 /* Minimal status */
-#define TRACE_PIC 2 /* Show picture */
-#define TRACE_RAYS 3 /* Show all rays */
-#define TRACE_PLOT 4 /* Plot raysums */
-#define TRACE_CLIPPING 5 /* Plot clipping */
-
-#define O_PIC_HERMAN 1 /* Herman head phantom */
-#define O_PIC_ROWLAND 2 /* Rowland head phantom */
-#define O_PIC_BROWLAND 3 /* Bordered Rowland head phantom */
-#define O_PIC_UNITPULSE 4 /* Unit pulse phantom */
-
-#define O_PIC_HERMAN_STR "herman"
-#define O_PIC_ROWLAND_STR "rowland"
-#define O_PIC_BROWLAND_STR "browland"
-#define O_PIC_UNITPULSE_STR "unitpulse"
-
-#define O_INTERP_NEAREST_STR "nearest"
-#define O_INTERP_LINEAR_STR "linear"
-#define O_INTERP_BSPLINE_STR "bspline"
-
-#define O_FILTER_ABS_BANDLIMIT_STR "abs_bandlimit"
-#define O_FILTER_ABS_SINC_STR "abs_sinc"
-#define O_FILTER_ABS_COS_STR "abs_cos"
-#define O_FILTER_ABS_HAMMING_STR "abs_hamming"
-#define O_FILTER_SHEPP_STR "shepp"
-#define O_FILTER_BANDLIMIT_STR "bandlimit"
-#define O_FILTER_SINC_STR "sinc"
-#define O_FILTER_COS_STR "cos"
-#define O_FILTER_HAMMING_STR "hamming"
-#define O_FILTER_TRIANGLE_STR "triangle"
-
-#define O_BPROJ_TRIG 1
-#define O_BPROJ_TABLE 2
-#define O_BPROJ_DIFF 3
-#define O_BPROJ_DIFF2 4
-#define O_BPROJ_IDIFF2 5
-
-#define O_BPROJ_TRIG_STR "trig"
-#define O_BPROJ_TABLE_STR "table"
-#define O_BPROJ_DIFF_STR "diff"
-#define O_BPROJ_DIFF2_STR "diff2"
-#define O_BPROJ_IDIFF2_STR "idiff2"
-
-#define RS_TRACE_ROW_TITLE 1
-#define RS_TRACE_ROW_TITLE2 2
-#define RS_TRACE_ROW_PHANT_ID 4
-#define RS_TRACE_ROW_CHROMATIC 7
-#define RS_TRACE_ROW_SCATTER 8
-#define RS_TRACE_ROW_PHOT_STAT 9
-#define RS_TRACE_ROW_NDET 12
-#define RS_TRACE_ROW_NVIEW 13
-#define RS_TRACE_ROW_SAMPLES 14
-#define RS_TRACE_ROW_CURR_VIEW 17
-#define RS_TRACE_ROW_ATTEN 18
-
-
-/*----------------------------------------------------------------------*/
-/* GRAY SCALE STRUCTURES */
-/*----------------------------------------------------------------------*/
+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;
+
+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";
+
+static const char O_INTERP_NEAREST_STR[]= "nearest";
+static const char O_INTERP_LINEAR_STR[]= "linear";
+static const char O_INTERP_BSPLINE_STR[]= "bspline";
+
+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 {
+ O_BPROJ_TRIG,
+ O_BPROJ_TABLE,
+ O_BPROJ_DIFF,
+ O_BPROJ_DIFF2,
+ O_BPROJ_IDIFF2
+} BackprojType;
+
+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";
+
+const static int RAYSUM_TRACE_ROW_TITLE=1;
+const static int RAYSUM_TRACE_ROW_TITLE2=2;
+const static int RAYSUM_TRACE_ROW_PHANT_ID=4;
+const static int RAYSUM_TRACE_ROW_CHROMATIC=7;
+const static int RAYSUM_TRACE_ROW_SCATTER=8;
+const static int RAYSUM_TRACE_ROW_PHOT_STAT=9;
+const static int RAYSUM_TRACE_ROW_NDET=12;
+const static int RAYSUM_TRACE_ROW_NVIEW=13;
+const static int RAYSUM_TRACE_ROW_SAMPLES=14;
+const static int RAYSUM_TRACE_ROW_CURR_VIEW=17;
+const static int RAYSUM_TRACE_ROW_ATTEN=18;
+
+
+/*************************************************************************
+ * FUNCTION DECLARATIONS
+ ************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */