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