1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 * filename: xdefs.h * 3 * * 4 * UTIL C-source: Medical Image Conversion Utility * 5 * * 6 * purpose : xdefs.c header file * 7 * * 8 * project : (X)MedCon by Erik Nolf * 9 * * 10 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 11 /* 12 */ 13 14 /* 15 Copyright (C) 1997-2021 by Erik Nolf 16 17 This program is free software; you can redistribute it and/or modify it 18 under the terms of the GNU General Public License as published by the 19 Free Software Foundation; either version 2, or (at your option) any later 20 version. 21 22 This program is distributed in the hope that it will be useful, but 23 WITHOUT ANY WARRANTY; without even the implied warranty of 24 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General 25 Public License for more details. 26 27 You should have received a copy of the GNU General Public License along 28 with this program; if not, write to the Free Software Foundation, Inc., 29 59 Place - Suite 330, Boston, MA 02111-1307, USA. */ 30 31 #ifndef __XDEFS_H__ 32 #define __XDEFS_H__ 33 34 /**************************************************************************** 35 D E F I N E S 36 ****************************************************************************/ 37 38 /* file types */ /* unsaved status > 128*/ 39 #define XMDC_RAW 255 40 #define XMDC_PREDEF 254 41 #define XMDC_EXTRACT 253 42 #define XMDC_RESLICE 252 43 #define XMDC_TRANSF 251 44 #define XMDC_EDITFI 250 45 46 #define XMDC_UNSAVED 128 47 /* saved status < 128 */ 48 #define XMDC_SAVED 2 49 #define XMDC_NORMAL 1 50 51 #define XMDC_FREE_BORDER 125 52 #define XMDC_COLORMAP_WIDTH 25 53 #define XMDC_COLORMAP_HEIGHT 48 54 55 #define XMDC_LABEL_RED 1 56 #define XMDC_LABEL_GREEN 2 57 #define XMDC_LABEL_BLUE 3 58 #define XMDC_LABEL_YELLOW 4 59 60 #define XMDC_LABEL_STYLE_ABS 1 61 #define XMDC_LABEL_STYLE_PAGE 2 62 #define XMDC_LABEL_STYLE_ECAT 3 63 64 #define XMDC_ZOOM_FACTOR 1 65 #define XMDC_ZOOM_IN XMDC_ZOOM_FACTOR /* incr */ 66 #define XMDC_ZOOM_OUT -(XMDC_ZOOM_FACTOR) /* decr */ 67 #define XMDC_ZOOM_NONE 0 68 69 #define XMDC_RESIZE_FOURTH -4 /* 1:4 */ 70 #define XMDC_RESIZE_THIRD -3 /* 1:3 */ 71 #define XMDC_RESIZE_HALF -2 /* 1:2 */ 72 #define XMDC_RESIZE_ORIGINAL 1 /* 1:1 */ 73 #define XMDC_RESIZE_DOUBLE 2 /* 2:1 */ 74 #define XMDC_RESIZE_TRIPLE 3 /* 3:1 */ 75 76 #define XMDC_PAGES_FRAME_BY_FRAME 0 /* frame by frame */ 77 #define XMDC_PAGES_SLICE_BY_SLICE 1 /* slice by slice */ 78 #define XMDC_PAGES_SCREEN_FULL 2 /* screen full */ 79 80 #define XMDC_DEFAULT_FRMT MDC_FRMT_RAW /* default save format (enabled!?) */ 81 82 #define XMDC_MAX_LOADABLE_LUTS 999 /* maximum external LUTs available */ 83 84 #ifdef _WIN32 85 #define MDC_USE_SIGNAL_BLOCKER 0 86 #endif 87 88 typedef struct SignalBlocker_t{ 89 guint id; 90 gboolean blocked; 91 }SignalBlocker; 92 93 typedef struct OptionsMedConStruct_t { 94 GtkWidget *PixPositives; 95 GtkWidget *PixNegatives; 96 GtkWidget *PixNoQuant; 97 GtkWidget *PixQuantify; 98 GtkWidget *PixCalibrate; 99 GtkWidget *PixTypeNONE; 100 GtkWidget *PixTypeBIT8_U; 101 GtkWidget *PixTypeBIT16_S; 102 GtkWidget *BitsUsed12; 103 GtkWidget *FileTypeLITTLE; 104 GtkWidget *FileTypeBIG; 105 GtkWidget *FlipHoriz; 106 GtkWidget *FlipVert; 107 GtkWidget *SortReverse; 108 GtkWidget *SortCine; 109 GtkWidget *SortCineApply; 110 GtkWidget *SortCineUndo; 111 GtkWidget *MakeSqrNo; 112 GtkWidget *MakeSqr1; 113 GtkWidget *MakeSqr2; 114 GtkWidget *NormOverFrames; 115 GtkWidget *NormOverAll; 116 GtkWidget *FallbackNONE; 117 GtkWidget *FallbackANLZ; 118 GtkWidget *FallbackCONC; 119 GtkWidget *FallbackECAT; 120 GtkWidget *FallbackDICM; 121 GtkWidget *SplitNone; 122 GtkWidget *SplitFrames; 123 GtkWidget *SplitSlices; 124 GtkWidget *ColorModeIndexed; 125 GtkWidget *ColorMakeGray; 126 GtkWidget *ColorDither; 127 GtkWidget *PadAround; 128 GtkWidget *PadTopLeft; 129 GtkWidget *PadBottomRight; 130 GtkWidget *NameAlias; 131 GtkWidget *NameNoPrefix; 132 GtkWidget *DicmMosaicEnabled; 133 GtkWidget *DicmMosaicForced; 134 GtkWidget *DicmMosaicWidth; 135 GtkWidget *DicmMosaicHeight; 136 GtkWidget *DicmMosaicNumber; 137 GtkWidget *DicmMosaicDoInterl; 138 GtkWidget *DicmMosaicFixVoxel; 139 GtkWidget *DicmTrueGap; 140 GtkWidget *DicmContrast; 141 GtkWidget *DicmWriteImplicit; 142 GtkWidget *DicmWriteNoMeta; 143 GtkWidget *AnlzSPM; 144 GtkWidget *IntfSkip1; 145 GtkWidget *IntfNoPath; 146 GtkWidget *IntfSingleFile; 147 GtkWidget *EcatSortAnatom; 148 GtkWidget *EcatSortByFrame; 149 }OptionsMedConStruct; 150 151 typedef struct MyMainStruct_t { 152 GtkWidget *mainwindow; 153 GtkWidget *viewwindow; 154 GtkWidget *viewbox; 155 GtkWidget *pagemenu; 156 GtkWidget *imgsbox; 157 GtkWidget *imgstable; 158 GtkWidget *cmapbox; 159 GtkWidget **image; 160 GtkWidget *cmap; 161 GdkPixbuf **im, *imcmap; 162 GdkInterpType interp; 163 GdkRgbDither dither; 164 SignalBlocker *sblkr; 165 gint cmap_w, cmap_h; 166 167 FILEINFO *fi; 168 Uint32 curpage, prevpage; 169 Uint32 number_of_pages, images_per_page; 170 Uint32 images_horizontal, images_vertical; 171 Uint32 startimage, real_images_on_page; 172 Uint32 *pagenumber, *imagenumber, *realnumber; 173 174 Int8 RESIZE; 175 float scale_width, scale_height; 176 177 }MyMainStruct; 178 179 180 typedef struct ColormapSelectionStruct_t { 181 gint Nr; 182 gint CurMap; 183 GtkWidget *Gray; 184 GtkWidget *Inverted; 185 GtkWidget *Rainbow; 186 GtkWidget *Combined; 187 GtkWidget *Hotmetal; 188 GtkWidget *Loaded; 189 }ColormapSelectionStruct; 190 191 typedef struct MapPlaceSelectionStruct_t { 192 GtkWidget *Right; 193 GtkWidget *Left; 194 }MapPlaceSelectionStruct; 195 196 typedef struct LabelSelectionStruct_t { 197 gint CurState; 198 gint CurColor; 199 gint CurStyle; 200 GtkWidget *On; 201 GtkWidget *Off; 202 GtkWidget *Red; 203 GtkWidget *Blue; 204 GtkWidget *Green; 205 GtkWidget *Yellow; 206 GtkWidget *NrAbsolute; 207 GtkWidget *NrInPage; 208 GtkWidget *NrEcat; 209 }LabelSelectionStruct; 210 211 212 typedef struct RenderSelectionStruct_t { 213 GdkRgbDither Dither; 214 GdkInterpType Interp; 215 GtkWidget *InterpNearest; 216 GtkWidget *InterpTiles; 217 GtkWidget *InterpBilinear; 218 GtkWidget *InterpHyper; 219 GtkWidget *DitherNone; 220 GtkWidget *DitherNormal; 221 GtkWidget *DitherMax; 222 }RenderSelectionStruct; 223 224 typedef struct ExtractSelectionStruct_t { 225 GtkWidget *NormStyle; 226 GtkWidget *EcatStyle; 227 GtkWidget *InputPlanes; 228 GtkWidget *InputFrames; 229 GtkWidget *InputGates; 230 GtkWidget *InputBeds; 231 MdcExtractInputStruct *input; 232 }ExtractSelectionStruct; 233 234 typedef struct RawReadSelectionStruct_t { 235 GtkWidget *HdrInfoWindow; 236 GtkWidget *NrImages; 237 GtkWidget *GenOffset; 238 GtkWidget *ImgOffset; 239 GtkWidget *AbsOffset; 240 GtkWidget *IhdrRep, *PixSwap, *ImgSame; 241 GtkWidget *ImgWidth, *ImgHeight; 242 GtkWidget *typeBIT1, *typeASCII; 243 GtkWidget *typeBIT8_S, *typeBIT8_U; 244 GtkWidget *typeBIT16_S, *typeBIT16_U; 245 GtkWidget *typeBIT32_S, *typeBIT32_U; 246 GtkWidget *typeBIT64_S, *typeBIT64_U; 247 GtkWidget *typeFLT32, *typeFLT64; 248 GtkWidget *typeCOLRGB; 249 Uint32 ImgCounter; 250 }RawReadSelectionStruct; 251 252 typedef struct ResizeSelectionStruct_t { 253 Int8 CurType; 254 GtkWidget *Original; 255 GtkWidget *Fourth; 256 GtkWidget *Third; 257 GtkWidget *Half; 258 GtkWidget *Double; 259 GtkWidget *Triple; 260 }ResizeSelectionStruct; 261 262 typedef struct PagesSelectionStruct_t{ 263 Int8 CurType; 264 GtkWidget *FrameByFrame; 265 GtkWidget *SliceBySlice; 266 GtkWidget *ScreenFull; 267 }PagesSelectionStruct; 268 269 typedef struct SliderValueStruct_t { 270 GtkObject *adj; 271 GtkWidget *range; 272 int *value; 273 }SliderValueStruct; 274 275 typedef struct ColorModifier_t{ 276 guint gamma, brightness, contrast; 277 Uint8 vgbc[256]; 278 }ColorModifier; 279 280 typedef struct ColGbcCorrectStruct_t { 281 GtkWidget *area; 282 GdkPixmap *brightness_pmap, *brightness_mask; 283 GdkPixmap *contrast_pmap, *contrast_mask; 284 GdkPixmap *gamma_pmap, *gamma_mask; 285 GdkPixbuf *im; 286 ColorModifier mod; 287 Uint32 i, nr, w, h, rw, rh; 288 Int16 t; 289 Uint8 *img8, vgbc[256]; 290 }ColGbcCorrectStruct; 291 292 typedef struct EditFileInfoStruct_t { 293 int CurModality; 294 GtkWidget *PatSliceOrient[MDC_MAX_ORIENT]; 295 GtkWidget *PixelSize; 296 GtkWidget *SliceWidth; 297 GtkWidget *SliceSpacing; 298 GtkWidget *FrameDuration; 299 GtkWidget *NrDimPlanes; 300 GtkWidget *NrDimFrames; 301 GtkWidget *NrDimGates; 302 GtkWidget *NrDimBeds; 303 GtkWidget *NrDimWindows; 304 GtkWidget *Reconstructed; 305 GtkWidget *Planar; 306 GtkWidget *ModalityNM; 307 GtkWidget *ModalityPT; 308 GtkWidget *ModalityCT; 309 GtkWidget *ModalityMR; 310 GtkWidget *ModalityCurrent; 311 GtkWidget *AcquisitionType[MDC_MAX_ACQUISITIONS]; 312 }EditFileInfoStruct; 313 314 extern Uint8 XMDC_FILE_OPEN; 315 extern Uint8 XMDC_FILE_TYPE; 316 317 extern Uint8 XMDC_IMAGE_BORDER; 318 extern Uint8 XMDC_CMAP_PLACE; 319 320 extern Uint8 XMDC_DOBAR; 321 322 extern GdkColor Red; 323 extern GdkColor Green; 324 extern GdkColor Blue; 325 extern GdkColor Yellow; 326 327 extern GdkCursor *handcursor; 328 extern GdkCursor *fleurcursor; 329 330 extern MyMainStruct my; 331 extern OptionsMedConStruct sOptionsMedCon; 332 extern ColormapSelectionStruct sColormapSelection; 333 extern MapPlaceSelectionStruct sMapPlaceSelection; 334 extern LabelSelectionStruct sLabelSelection; 335 extern RenderSelectionStruct sRenderSelection; 336 extern ExtractSelectionStruct sExtractSelection; 337 extern RawReadSelectionStruct sRawReadSelection; 338 extern ResizeSelectionStruct sResizeSelection; 339 extern PagesSelectionStruct sPagesSelection; 340 extern ColGbcCorrectStruct sGbc; 341 extern EditFileInfoStruct sEditFI; 342 343 extern char labelindex[50]; 344 extern char labeltimes[50]; 345 extern Uint32 write_counter; 346 347 extern char xmdcstr[MDC_2KB_OFFSET]; 348 extern char *XMEDCONLUT; 349 extern char *XMEDCONRPI; 350 351 #endif 352 353