Main Page   Compound List   File List   Compound Members   File Members  

sadie.h

00001 /* Enable the SADIE libraries to be linked to C++ code */
00002 #ifdef __cplusplus
00003 extern "C" {
00004 #endif 
00005 
00006 
00007 #ifndef SADIE_H
00008 #define SADIE_H
00009 
00010 /*----------------------------------------------------------------------------*/
00011 
00012 #define LOCALE "tclSadie"
00013 #define SYSTEM "Solaris/Linux"
00014 
00015 /* #define MAC */                             /* System configuration */
00016 
00017 #define _NOERRORCHECK_                  /* System configuration */
00018 
00019 #define DIR     ""                      /* Location of source code */
00020 
00021 #define DBND    65535                   /* Number of bands available on the display */
00022 #define DLIN    65535                   /* Number of lines available on the display */
00023 #define DPIX    65535                   /* Number of pixels available on the display */
00024 #define DBIT    8                       /* Number of bits per band */
00025 #define DMIN    128.5                   /* Minimum color table entry on the display */
00026 #define DMAX    255.5                   /* Maximum color table entry on the display */
00027 
00028 #define SBPB    8                       /* System value for number of bits/byte */
00029 #define SBIT    sizeof(PIXEL)*SBPB      /* System default for number of bits/pixel */
00030 
00031 #define SMIN    0                       /* System default for minimum gray level */
00032 #define SMAX    255                     /* System default for maximum gray level */
00033 
00034 #define SLEN    1024                    /* System default for length of strings */
00035 
00036 #define TLEN    496                     /* Length of text string in IMAGE data structure */
00037                                         /* Adjusted, so that the overall size of an IMAGE */
00038                                         /* (without the data) equals 512 KB */
00039 
00040 /*----------------------------------------------------------------------------*/
00041 
00042 
00043 typedef unsigned char   BYTE;           /* Data type of unit size */
00044 
00045 typedef float           PIXEL;          /* Pixel data type */
00046 
00047 
00048 /* Data structure for tracking regions */
00049 /*      of interest.  Added 12/08/98   */
00050 /*      by S. Conner                  */
00051 typedef struct ROI {
00052         unsigned long           tmpSelect;
00053         unsigned long           select;
00054         char                    *name;
00055         long                    nval;
00056         long                    *zero;
00057         PIXEL                   *gmin;
00058         PIXEL                   *gmax;
00059         double                  *mean;
00060         double                  *dev;
00061         double                  *cov;
00062         double                  *cor;
00063         struct ROI              *next;
00064 } ROI, *ROIPtr;
00065 
00066 
00067 typedef struct {                        /* Image data structure */
00068     short  nbnd;                        /* Number of bands */
00069     short  nlin;                        /* Number of lines */
00070     short  npix;                        /* Number of pixels/line */
00071     short  nbit;                        /* Number of bits/pixel (for disk I/O) */
00072     PIXEL  gmin;                        /* Minimum gray level in image */
00073     PIXEL  gmax;                        /* Maximum gray level in image */
00074     char   pstr[1];                     /* Length byte for Pascal strings */
00075     char   text[TLEN-1];                /* Image/window name */
00076     ROIPtr regions;                     /* List of defined regions of interest */
00077     PIXEL  ***data;                     /* Pointer to the data itself */
00078 }                       IMAGE;
00079 
00080 extern char  *SLOG;                     /* Name of the system log-file */
00081 
00082 extern short NAMES;                     /* Switch to control amount of output to system log-file */
00083 
00084 extern short TIMES;                     /* Switch to enable/disable timing facility */
00085 
00086 extern short LINES;                     /* Switch to enable/disable progress indicator */
00087 
00088 extern short ABORT;                     /* Flag */
00089 
00090 /*----------------------------------------------------------------------------*/
00091 
00092 typedef enum {                          /* Definitions for timing function */
00093     T_EXIT,
00094     T_BILTOBSQ,
00095     T_BSQTOBIL,
00096     T_CHECKER,
00097     T_CHECKIMG,
00098     T_CHIRP,
00099     T_CLUSTER,
00100     T_COM2REAL,
00101     T_COMBINE,
00102     T_COMPARE,
00103     T_CONTNORM,
00104     T_CONTOUR,
00105     T_COVAR,
00106     T_CSPLINE,
00107     T_DECORSTR,
00108     T_DESTRIPE,
00109     T_DISK2IMG,
00110     T_DSPL2IMG,
00111     T_DUPL,
00112     T_EDGE,
00113     T_EIGEN,
00114     T_EXPAND,
00115     T_FCONVL,
00116     T_FFT1D,
00117     T_FFT2D,
00118     T_FHT1D,
00119     T_FHT2D,
00120     T_FILTER,
00121     T_FINI,
00122     T_FLTBOX,
00123     T_FLTCONE,
00124     T_FLTCYL,
00125     T_FLTEXP,
00126     T_FLTGAUSS,
00127     T_FUNCTION,
00128     T_GEOMCOEF,
00129     T_GEOMWARP,
00130     T_GETMEM,
00131     T_GRADIENT,
00132     T_GRAYSCAL,
00133     T_GRID,
00134     T_HELP,
00135     T_HISTEQ,
00136     T_HISTOGRM,
00137     T_HMOSAIC,
00138     T_HSVTORGB,
00139     T_IMG2DISK,
00140     T_IMG2DSPL,
00141     T_IMG2EPSF,
00142     T_IMG2PICT,
00143     T_IMG2TAPE,
00144     T_IMG2TEXT,
00145     T_IMG2TIFF,
00146     T_IMG2VECT,
00147     T_IMPORT,
00148     T_INFO,
00149     T_INIT,
00150     T_INSERT,
00151     T_MATRIX_INVERT,
00152     T_LABEL,
00153     T_LVLSLICE,
00154     T_MAIN,
00155     T_MATCH,
00156     T_MAXLIKE,
00157     T_MEDIAN,
00158     T_MESSAGE,
00159     T_MINDIST,
00160     T_MOSAIC,
00161     T_PACK,
00162     T_PCT,
00163     T_PICT2IMG,
00164     T_PIXLDUMP,
00165     T_PLOT,
00166     T_PROGRESS,
00167     T_PSPECT1D,
00168     T_PSPECT,
00169     T_RANDOM,
00170     T_RANGE,
00171     T_REAL2COM,
00172     T_REFINE,
00173     T_RELIEF,
00174     T_RELIMG,
00175     T_RELMEM,
00176     T_RESAMPL,
00177     T_RGBTOHSV,
00178     T_RMSDIFF,
00179     T_ROISTATS,
00180     T_ROTATE,
00181     T_ROTATECUBE,
00182     T_SCATTER,
00183     T_SCONVL,
00184     T_SEGMENT,
00185     T_SIGMAP,
00186     T_SINESTAR,
00187     T_SINEWAVE,
00188     T_STATS,
00189     T_STRETCH,
00190     T_SUBSAMPL,
00191     T_SWAP,
00192     T_TAPE2IMG,
00193     T_TEST,
00194     T_TFINVERT,
00195     T_TFLINEAR,
00196     T_TFLOG,
00197     T_TFPLT,
00198     T_TFQUANT,
00199     T_TFROOT,
00200     T_TFSAT,
00201     T_TFSCALE,
00202     T_TFSQUARE,
00203     T_TFTABLE,
00204     T_TFTHRESH,
00205     T_TIFF2IMG,
00206     T_TIMING,
00207     T_TRNSFORM,
00208     T_UNPACK,
00209     T_VECT2IMG,
00210     T_VMOSAIC,
00211     T_VSTRETCH,
00212     T_WINDOW,
00213     T_WTFCAVG,
00214     T_WTFDIVER,
00215     T_WTFMAJ,
00216     T_WTFMAX,
00217     T_WTFMIN,
00218     T_WTFVAR,
00219     T_END
00220 } T_TIME;
00221 
00222 extern char *functions[T_END][2];
00223 
00224 /*----------------------------------------------------------------------------*/
00225 
00226 #define         FALSE           0
00227 #define         TRUE            1
00228 
00229 #define         OFF             0
00230 #define         ON              1
00231 
00232 #define         BEGIN           "/*-"
00233 #define         END             "/*-"
00234 
00235 #define         CODE            3
00236 
00237 #define         BIP                             0
00238 #define         BIL             1
00239 #define         BSQ             2
00240 
00241 #define                 REIMAG                  0
00242 #define                 MAGPHA                  1
00243 
00244 #define                 ADD                             0
00245 #define                 SUBTRACT                1
00246 #define                 MULTIPLY                2
00247 #define                 DIVIDE                  3
00248 #define                 MINIMUM                 4
00249 #define                 MAXIMUM                 5
00250 
00251 #define                 LT                              0
00252 #define                 LE                              1
00253 #define                 GT                              2
00254 #define                 GE                              3
00255 #define                 EQ                              4
00256 #define                 NE                              5
00257 #define                 AND                             6
00258 #define                 OR                              7
00259 #define                 XOR                             8
00260 #define                 NOT                             9
00261 
00262 #define                 DESMNE              0
00263 #define                 DESSTD              1
00264 #define                 DESCDF              2
00265 
00266 #define                 DESSNG              0
00267 #define                 DESAVG              1
00268 
00269 #define         SOBEL           0
00270 #define         SOBEL2          1
00271 #define         SOBEL3          2
00272 #define         ROBERTS         3
00273 #define         ROBERTS2        4
00274 #define         PREWITT         5
00275 
00276 #define                 PSF                             0
00277 #define                 OTF                             1
00278 
00279 #define         FORWARD         (-1)
00280 #define         INVERSE         1
00281 
00282 #define         NOR_PSPECT      0
00283 #define         ROW_PSPECT      1
00284 #define         COL_PSPECT      2
00285 
00286 #define         CONE            0
00287 #define         NEGEXP          1
00288 #define         GAUSS           2
00289 #define         BOX             3
00290 #define         CYLINDER        4
00291 #define         HANNING         5
00292 #define         HAMMING         6
00293 #define         KAISER          7
00294 
00295 #define         MINTERMS        3
00296 #define         MAXTERMS        6
00297 
00298 #define         LSQ             0
00299 #define         CDF             1
00300 
00301 #define         CITYBLOCK       0
00302 #define         EUCLIDEAN       1
00303 #define                 MAHALANOBIS     2
00304 
00305 #define         UNIT            0
00306 #define         NORM            1
00307 #define         LOG             2
00308 
00309 #define         IGNORE          0
00310 #define         INCLUDE         1
00311 #define         EXCLUDE         2
00312 
00313 #define         UNIFORM         0
00314 #define         GAUSSIAN        1
00315 
00316 #define         FLIP0           0
00317 #define         FLIPM45         1
00318 #define         FLIPP45         2
00319 #define         FLIP90          3
00320 #define         ROTPM0          4
00321 #define         ROTP90          5
00322 #define         ROTM90          6
00323 #define         ROT180          7
00324 
00325 #define         PI              3.14159265358979323846
00326 
00327 
00328 /* TIFF Tags */
00329 
00330 #define     BTIFF           ((unsigned long)0)
00331 #define     GTIFF           ((unsigned long)1)
00332 #define     PTIFF           ((unsigned long)2)
00333 #define     RTIFF           ((unsigned long)3)
00334 
00335 #define         TBYTE                   ((unsigned long)1)
00336 #define         TASCII                  ((unsigned long)2)
00337 #define         TSHORT                  ((unsigned long)3)
00338 #define         TLONG                   ((unsigned long)4)
00339 #define         TRATIONAL               ((unsigned long)5)
00340 
00341 #define         LilEndian               ((unsigned long)0x4949)
00342 #define         BigEndian               ((unsigned long)0x4D4D)
00343 #define         MagicNumber             ((unsigned long)42)
00344 
00345 #define         NoComp                  ((unsigned long)1)
00346 #define         RLEComp                 ((unsigned long)2)
00347 #define         PackBitsComp    ((unsigned long)32773)
00348 
00349 #define         NewSubfileType                          254
00350 #define         SubfileType                                     255
00351 #define         ImageWidth                                      256
00352 #define         ImageLength                                     257
00353 #define         BitsPerSample                           258
00354 #define         Compression                                     259
00355 
00356 #define         PhotometricInterpretation       262
00357 #define         Thresholding                            263
00358 #define         CellWidth                                       264
00359 #define         CellLength                                      265
00360 #define         FillOrder                                       266
00361 
00362 #define         ImageDescription                        270
00363 #define         Make                                            271
00364 #define         Model                                           272
00365 #define         StripOffsets                            273
00366 #define         Orientation                                     274
00367 
00368 #define         SamplesPerPixel                         277
00369 #define         RowsPerStrip                            278
00370 #define         StripByteCounts                         279
00371 #define         MinSampleValue                          280
00372 #define         MaxSampleValue                          281
00373 #define         XResolution                                     282
00374 #define         YResolution                                     283
00375 #define         PlanarConfiguration                     284
00376 
00377 #define         FreeOffsets                                     288
00378 #define         FreeByteCounts                          289
00379 #define         GrayResponseUnit                        290
00380 #define         GrayResponseCurve                       291
00381 
00382 #define         ResolutionUnit                          296
00383 
00384 #define         Software                                        305
00385 #define         DateTime                                        306
00386 
00387 #define         Artist                                          315
00388 #define         HostComputer                            316
00389 
00390 #define         ColorMap                                        320
00391 
00392 #define         ExtraSamples                            338
00393 
00394 #define         Copyright                                 33432
00395 
00396 typedef struct {
00397         unsigned short tag;
00398         unsigned short type;
00399         unsigned long  count;
00400         unsigned long  value;
00401 } entry;
00402 
00403 
00404 
00405 /*----------------------------------------------------------------------------*/
00406 
00407 #define         min(x,y)        ((x) < (y)  ?  (x) : (y))
00408 #define         max(x,y)        ((x) > (y)  ?  (x) : (y))
00409 
00410 #define         rnd(x)          (short)((x) > 0.0  ?  (x)+0.5 : (x)-0.5)
00411 #define         lrnd(x)          (long)((x) > 0.0  ?  (x)+0.5 : (x)-0.5)
00412 
00413 /*----------------------------------------------------------------------------*/
00414 
00415 #include            <stdio.h>
00416 #include        <stdlib.h>
00417 #include                <string.h>
00418 #include        <math.h>
00419 #include                <time.h>
00420 
00421 /* Progress meter added for tclSadie and TREES */
00422 extern  int     ProgMeter_Create(char*);
00423 extern  int     ProgMeter_Update(int, double);
00424 extern  int     ProgMeter_Destroy(int);
00425 
00426 extern  void    BILTOBSQ (IMAGE *, IMAGE **);
00427 extern  void    BSQTOBIL (IMAGE **, short, IMAGE **);
00428 extern  void    CHECKER  (short, short, short, short, IMAGE **);
00429 extern  short   CHECKIMG (IMAGE *);
00430 extern  void    CHIRP    (short, short, double, IMAGE **);
00431 extern  void    CLUSTER  (IMAGE *, short, short, short, PIXEL, short, short, short, PIXEL, IMAGE **);
00432 extern  void    COM2REAL (IMAGE *, short, IMAGE **, IMAGE **);
00433 extern  void    COMBINE  (IMAGE *, IMAGE *, short, double, double, IMAGE **);
00434 extern  void    COMPARE  (IMAGE *, IMAGE *, short, IMAGE **);
00435 extern  void    CONTNORM (IMAGE *, PIXEL, double, short, IMAGE **);
00436 extern  void    CONTOUR  (IMAGE *, short, double, IMAGE **);
00437 extern  void    COVAR    (IMAGE *, short, double *, double *);
00438 extern  void    DECORSTR (IMAGE *, short, IMAGE **);
00439 extern  void    DESTRIPE (IMAGE *, short, short, short, short, short, IMAGE **);
00440 extern  void    DISK2IMG (char *, long, IMAGE **);
00441 extern  void    DUPL     (IMAGE *, short, short, short, short, short, short, short, short, short, IMAGE **);
00442 extern  void    EDGE     (IMAGE *, short, IMAGE **, IMAGE **);
00443 extern  void    EIGEN    (double *, short, double *);
00444 extern  void    EXPAND   (IMAGE *, double, double, double, IMAGE **);
00445 extern  void    FCONVL   (IMAGE *, IMAGE *, short, IMAGE **);
00446 extern  void    FFT2D    (IMAGE *, short, IMAGE **);
00447 extern  void    FHT2D    (IMAGE *, short, IMAGE **);
00448 extern  void    FILTER   (IMAGE *, double (*)(double, double, double, double), double, double, double, IMAGE **);
00449 extern  void    FINI     (void);
00450 extern  double  FLTBOX   (double, double, double, double);
00451 extern  double  FLTCONE  (double, double, double, double);
00452 extern  double  FLTCYL   (double, double, double, double);
00453 extern  double  FLTEXP   (double, double, double, double);
00454 extern  double  FLTGAUSS (double, double, double, double);
00455 extern  void    FUNCTION (short, short, double, double, double, short, IMAGE **);
00456 extern  void    GEOMCOEF (double *, double *, double *, double *, short, short, double *, double *);
00457 extern  void    GEOMWARP (IMAGE *, short, short, short, double *, double *, short, double, PIXEL, IMAGE **);
00458 extern  void    GETMEM   (short, short, short, IMAGE **);
00459 extern  void    GRADIENT (IMAGE *, PIXEL *, PIXEL *, short, IMAGE **, IMAGE **);
00460 extern  void    GRAYSCAL (short, short, short, PIXEL, PIXEL, IMAGE **);
00461 extern  void    HELP     (T_TIME, char *);
00462 extern  void    HISTEQ   (IMAGE *, short, short, IMAGE **);
00463 extern  void    HISTOGRM (IMAGE *, short, PIXEL, PIXEL, short, long *);
00464 extern  void    STRICTHISTOGRM (IMAGE *, short, short,PIXEL, PIXEL, short, long *);
00465 extern  void    HMOSAIC  (IMAGE *, IMAGE *, short, PIXEL, IMAGE **);
00466 extern  void    HSVTORGB (IMAGE *, IMAGE **);
00467 extern  void    IMG2DISK (IMAGE *, short, char *);
00468 extern  void    IMG2EPSF (IMAGE *, char *, short);
00469 extern  void    IMG2TEXT (IMAGE *, char *);
00470 extern  void    IMG2TIFF (IMAGE *, char *, short);
00471 extern  void    IMPORT   (char *, short, short, short, short, short, short, short, short, short, short, short, short,short, short, short, long, IMAGE **out);
00472 extern  void    INIT     (void);
00473 extern  void    INSERT   (IMAGE *, IMAGE *, short, short, IMAGE **);
00474 extern  void    MATRIX_INVERT   (double *, short, double *);
00475 extern  void    LABEL    (IMAGE *, double, PIXEL, IMAGE **);
00476 extern  void    LVLSLICE (IMAGE *, PIXEL *, short, IMAGE **);
00477 extern  void    MATCH    (IMAGE *, IMAGE *, short, short, IMAGE **);
00478 extern  void    MAXLIKE  (IMAGE *, short, double *, double *, IMAGE **);                              
00479 extern  void    MEDIAN   (IMAGE *, short, short, IMAGE **);
00480 extern  void    MESSAGE  (char, char *);
00481 extern  void    MINDIST  (IMAGE *, short, short, double *, double *, IMAGE **);                              
00482 extern  void    MOSAIC   (IMAGE **, short, short, short, short *, short *, PIXEL, IMAGE **);
00483 extern  void    PACK     (short, long, PIXEL *);
00484 extern  void    PCT      (IMAGE *, short, IMAGE **);
00485 extern  short   PLOT     (PIXEL **, short, short, char *, char *, short);
00486 extern  short   PROGRESS (double);
00487 extern  void    PSPECT   (IMAGE *, IMAGE **);
00488 extern  void    RANDOM   (short, short, short, double, IMAGE **);
00489 extern  void    RANGE    (IMAGE *);
00490 extern  void    REAL2COM (IMAGE *, IMAGE *, short, IMAGE **);
00491 extern  void    REFINE   (IMAGE *[3], IMAGE **);
00492 extern  void    RELIEF   (IMAGE *, double, double, double, IMAGE **);
00493 extern  void    RELIMG   (IMAGE **);
00494 extern  void    RELMEM   (IMAGE *);
00495 extern  void    RESAMPL  (IMAGE *, short, short, short, short, IMAGE **);
00496 extern  void    RGBTOHSV (IMAGE *, IMAGE **);
00497 extern  void    RMSDIFF  (IMAGE *, IMAGE *, double *);
00498 extern  short   ROISTATS (char *, short, long, PIXEL *, short, short, PIXEL *, PIXEL *, double *, double *, long *, double *, double *);
00499 extern  void    ROTATE   (IMAGE *, double, PIXEL, double, IMAGE **);
00500 extern  void    ROTATECUBE (IMAGE *, short, short, short, short, short, short, IMAGE **); 
00501 extern  void    SCATTER  (IMAGE *, IMAGE *, short, short, short, short, IMAGE **);
00502 extern  void    SCONVL   (IMAGE *, PIXEL *, short, short, IMAGE **);
00503 extern  void    SEGMENT  (IMAGE *, short, double, PIXEL, IMAGE **);
00504 extern  void    SIGMAP   (IMAGE *, IMAGE *, IMAGE **);
00505 extern  void    SINESTAR (short, short, double, IMAGE **);
00506 extern  void    SINEWAVE (short, short, double, double, IMAGE **);
00507 extern  short   STATS    (IMAGE *, short, short, short, PIXEL, PIXEL, double *, double *, PIXEL *, PIXEL *, PIXEL *, long *);
00508 extern  void    STRETCH  (IMAGE *, short (*)(IMAGE *, IMAGE **), IMAGE **);
00509 extern  void    SUBSAMPL (IMAGE *, short, short, short, short, short, short, short, short, short, IMAGE **);
00510 extern  short   SWAP     (unsigned char *);
00511 extern  void    TAPE2IMG (unsigned char *, short, short, long, short, short, short, short, short, short, short, short, short, short, short, short, short, IMAGE **);
00512 extern  short   TFINVERT (IMAGE *, IMAGE **);
00513 extern  short   TFLINEAR (IMAGE *, IMAGE **);
00514 extern  short   TFLOG    (IMAGE *, IMAGE **);
00515 extern  short   TFPLT    (IMAGE *, IMAGE **);
00516 extern  short   TFQUANT  (IMAGE *, IMAGE **);
00517 extern  short   TFROOT   (IMAGE *, IMAGE **);
00518 extern  short   TFSAT    (IMAGE *, IMAGE **);
00519 extern  short   TFSCALE  (IMAGE *, IMAGE **);
00520 extern  short   TFSQUARE (IMAGE *, IMAGE **);
00521 extern  short   TFTABLE  (IMAGE *, IMAGE **);
00522 extern  short   TFTHRESH (IMAGE *, IMAGE **);
00523 extern  void    TIFF2IMG (char *, IMAGE **);
00524 extern  void    TIMING   (T_TIME);
00525 extern  void    TRNSFORM (IMAGE *, short, IMAGE **);
00526 extern  void    UNPACK   (short, long, PIXEL *);
00527 extern  void    VMOSAIC  (IMAGE *, IMAGE *, short, PIXEL, IMAGE **);
00528 extern  void    VSTRETCH (IMAGE *, short, IMAGE **);
00529 extern  void    WINDOW   (IMAGE *, PIXEL (*)(PIXEL *, short, short), short, short, IMAGE **);
00530 extern  PIXEL   WTFCAVG  (PIXEL *, short, short);
00531 extern  PIXEL   WTFDIVER (PIXEL *, short, short);
00532 extern  PIXEL   WTFMAJ   (PIXEL *, short, short);
00533 extern  PIXEL   WTFMAX   (PIXEL *, short, short);
00534 extern  PIXEL   WTFMIN   (PIXEL *, short, short);
00535 extern  PIXEL   WTFVAR   (PIXEL *, short, short);
00536 
00537 extern  void    CREATE_ROI (IMAGE*, char*, int, int, int, int, short, short, short);
00538 extern  void    CLEAR_ROI  (IMAGE*);
00539 extern  void    brshnm     (int, int, int, int);
00540 
00541 extern int FILESIZE (unsigned char*);
00542 extern  double  mBesselF(double);
00543 
00544 /*----------------------------------------------------------------------------*/
00545 
00546 #endif
00547 
00548 
00549 
00550 #ifdef __cplusplus
00551 }
00552 #endif

Generated on Tue Jun 22 14:32:07 2004 for trees by doxygen1.2.18