00001
00002
00003
00004
00005
00006 #ifndef __IMAGER_DEFS_H
00007 #define __IMAGER_DEFS_H
00008
00009
00010 #include <gtk/gtk.h>
00011 #include <gdk_imlib.h>
00012 #include <gdk/gdk.h>
00013
00014 #include <sys/types.h>
00015
00016
00017
00018
00019
00020 #define _DICOM_
00021 #define MAXPOINTSONARAY 600
00022
00023
00024
00025
00026
00027 typedef struct
00028 {
00029 unsigned char red;
00030 unsigned char green;
00031 unsigned char blue;
00032 }
00033 rgbtriplet;
00034
00035
00036
00037 typedef struct
00038 {
00039 short hue;
00040 unsigned char sat;
00041 unsigned char val;
00042 }
00043 hsvtriplet;
00044
00045
00046
00047
00048
00049 typedef struct
00050 {
00051 double H;
00052 double intcpt;
00053 double r;
00054 }
00055 fitresult;
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065 typedef enum { B_CHAR, B_SHORT, B_RGB, B_FLOAT } TYPE_SELECTOR;
00066
00067
00068
00069
00070 typedef enum { INTP_NN, INTP_BILIN, INTP_BICUB,
00071 INTP_SPLINE2, INTP_SPLINE3, INTP_SPLINE4, INTP_SPLINE5 } interpol_method;
00072
00073
00074
00075
00076
00077 typedef enum { M_BYPASS, M_PATCH, M_ERODE, M_SOFTERODE, M_RANK, M_SOFTDILATE, M_DILATE, M_BOUNDERODE } MORPHOP;
00078
00079
00080
00081
00082
00083
00084 typedef enum { U_NONE, U_MEMORY, U_DISK } UNDO_TYPE;
00085
00086
00087
00088
00089
00090 typedef enum { FTYPE_NONE, FTYPE_TIFFI, FTYPE_TIFFM, FTYPE_VSRT, FTYPE_VFLT, FTYPE_DCM, FTYPE_PGM, FTYPE_PPM } FTYPE;
00091
00092
00093
00094
00095
00096
00097 typedef struct
00098 {
00099 double Dmin;
00100 double Dmax;
00101 double Mu;
00102 char calibrated;
00103 }
00104 wedge_data;
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115 typedef struct
00116 {
00117 long xmax;
00118 long ymax;
00119 long zmax;
00120 TYPE_SELECTOR imgtype;
00121 int uid;
00122 union { int imax; float fmax; } maxval;
00123 union { int imin; float fmin; } minval;
00124 void* data;
00125 }
00126 image_type;
00127
00128
00129
00130
00131
00132
00133
00134 typedef enum { TH_BINARY, TH_SOFT, TH_HARD, TH_SOFTSYM, TH_HARDSYM } THRESHOLD_TYPE;
00135
00136
00137 typedef struct
00138 {
00139 int r;
00140 int g;
00141 int b;
00142 float t;
00143 float u;
00144 THRESHOLD_TYPE thresh_type;
00145 char success;
00146 image_type* img;
00147 }
00148 thresh_struct;
00149
00150
00151
00152 typedef struct
00153 {
00154 int size;
00155 long cog_x;
00156 long cog_y;
00157 long cog_z;
00158 int bbox_x1;
00159 int bbox_y1;
00160 int bbox_z1;
00161 int bbox_x2;
00162 int bbox_y2;
00163 int bbox_z2;
00164 int size1;
00165 int size2;
00166 int flags;
00167 float compactness;
00168 float aspect;
00169 float irreg;
00170 }
00171 cluster_type;
00172
00173
00174 typedef struct
00175 {
00176 int x;
00177 int y;
00178 }
00179 vertex;
00180
00181
00182 typedef struct
00183 {
00184 float x;
00185 float y;
00186 }
00187 vertexf;
00188
00189
00190 typedef struct
00191 {
00192 int x;
00193 int y;
00194 int z;
00195 }
00196 vertex3d;
00197
00198
00199
00200 typedef struct
00201 {
00202 long n;
00203 double Sx;
00204 double Sxx;
00205 double SxR, SxG, SxB, SxxR, SxxG, SxxB;
00206 }
00207 stat_type;
00208
00209
00210
00211 #define ROI_MAXVERTICES 1000
00212
00213
00214 typedef enum { ROI_NONE, ROI_RECT, ROI_POLY, ROI_CIRCLE } roi_enum;
00215
00216
00217 typedef struct
00218 {
00219 roi_enum roi_mode;
00220 int bbox_x1;
00221 int bbox_x2;
00222 int bbox_y1;
00223 int bbox_y2;
00224 int numvertices;
00225 int radius,xc,yc;
00226 int xi[ROI_MAXVERTICES];
00227 int yi[ROI_MAXVERTICES];
00228 int centfromspider_x;
00229 int centfromspider_y;
00230 }
00231 roi_type;
00232
00233
00234
00235
00236 typedef struct
00237 {
00238 float endpoints[2][2];
00239 int startx;
00240 int starty;
00241 int endx;
00242 int endy;
00243 int numPixels;
00244 int XPixelCoords[MAXPOINTSONARAY];
00245 int YPixelCoords[MAXPOINTSONARAY];
00246 float pixelValues[MAXPOINTSONARAY];
00247 float vtxRadialPosition;
00248 int vtxXPixelCoord;
00249 int vtxYPixelCoord;
00250 int maxXPixelCoord;
00251 int maxYPixelCoord;
00252 int vtxPixelIndex;
00253 int maxPixelIndex;
00254 float vtxPixelValue;
00255 float maxPixelValue;
00256 float vtxOutsideValue;
00257 int validVertex ;
00258 float angleinrads;
00259 float rotmatrix[2][2];
00260 float slope;
00261 float normalslope;
00262 } ray;
00263
00264
00265
00266
00267
00268
00269
00270 #ifndef TRUE
00271 struct _GdkImlibImage
00272 {
00273 gint rgb_width, rgb_height;
00274 unsigned char *rgb_data;
00275 unsigned char *alpha_data;
00276 gchar *filename;
00277
00278 gint width, height;
00279 GdkImlibColor shape_color;
00280 GdkImlibBorder border;
00281 GdkPixmap *pixmap;
00282 GdkBitmap *shape_mask;
00283 gchar cache;
00284 GdkImlibColorModifier mod, rmod, gmod, bmod;
00285 GdkImlibModifierMap *map;
00286 int ref_count;
00287 GHashTable *pixmaps;
00288 };
00289 #endif
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301 image_type mainimg;
00302 image_type backupimg;
00303 char mainimg_name[255];
00304
00305
00306
00307 image_type s_img;
00308
00309
00310
00311 #define UNDO_MAX 10
00312 image_type undo_mem;
00313 char undo_path[1024];
00314 UNDO_TYPE undo_function;
00315 int undo_level;
00316 int undo_cnt;
00317 char **undo_stack;
00318 pid_t cimage_pid;
00319
00320
00321
00322
00323 gint cur_w, cur_h;
00324
00325 gint xofs, yofs;
00326 GdkImlibImage *im;
00327 int autosize;
00328 int autoscale;
00329 int file_ok;
00330 int cur_slice;
00331 int next_uid;
00332 int debuglevel;
00333 char tiffreport;
00334 float tiffsave_dpi;
00335 int stat_window_exists;
00336 interpol_method intp_pref;
00337 int spl_cache_invalidate;
00338 GdkCursor* crosshair_cursor;
00339 GdkCursor* grab_cursor;
00340 char browspath[1024];
00341 char helppath[1024];
00342 char dsopath[1024];
00343 char imager_sv_path[1024];
00344
00345 void (*zslice_callback) (void);
00346
00347
00348
00349
00350 unsigned char redlut[256];
00351 unsigned char greenlut[256];
00352 unsigned char bluelut[256];
00353 unsigned char use_lut;
00354
00355
00356 #define CLICKSTACK_MAX 5
00357 #define MAXVERTICES 360
00358
00359 vertex3d clickstack[CLICKSTACK_MAX];
00360 int clickstack_last;
00361 int display_clickstack;
00362
00363 GtkWidget *secondaryimg;
00364 GtkWidget *secondwnd;
00365 GdkImlibImage* s_im;
00366 int secw, sech;
00367 int secondaryimage_exists;
00368 int graphwindow_exists;
00369
00370
00371
00372 ray rayforspider[MAXVERTICES];
00373 ray raystoconnectvtx[MAXVERTICES];
00374 ray rayforvertices[MAXVERTICES];
00375 int numspiderlegs;
00376 int numvertices;
00377 int spider_active;
00378 int snake_active;
00379
00380
00381
00382 int macrorun;
00383 float mac_user[100];
00384
00385
00386
00387
00388
00389
00390
00391
00392 #ifndef MIN
00393 #define MIN(X,Y) ((X)>(Y)? (Y): (X))
00394 #endif
00395
00396 #ifndef MAX
00397 #define MAX(X,Y) ((X)<(Y)? (Y): (X))
00398 #endif
00399
00400 #define SIN(X) (sin((X)*1.7453295199e-2))
00401 #define COS(X) (cos((X)*1.7453295199e-2))
00402
00403 #define SIGN(X) ((X)<0? -1 : 1)
00404
00405 #define SQR(X) ((X)*(X))
00406 #define CUB(X) ((X)*(X)*(X))
00407 #define SAFELOG10(X) ((X)<1e-50? -50: log10(X))
00408 #define SAFELOG(X) ((X)<1e-50? -115.13: log(X))
00409
00410 #define ARITHM(X,Y) ((X)*(X)+(Y)*(Y))
00411
00412 #define SDEV(SX,SXX,N) ((N)>1? sqrt(((SXX)-((SX)*(SX)/((N))))/((N)-1)): 0)
00413
00414
00415
00416
00417 #define F_ISZERO(F) ( fabs(F) < 1e-15? 1 : 0 )
00418
00419 #define DATALEN(T) ( (T)==B_SHORT? 2: (T)==B_FLOAT? 4: (T)==B_RGB? 3: 1 )
00420
00421
00422
00423
00424
00425
00426 #define REDWEIGHT 0.299
00427 #define GREENWEIGHT 0.587
00428 #define BLUEWEIGHT 0.114
00429
00430 #define PI 3.141592654
00431 #define TWOPI 6.283185307
00432 #define SQ2 1.414213562
00433
00434
00435
00436 #define MFLOAT double
00437
00438 #endif