~ubuntu-branches/ubuntu/warty/xmedcon/warty

« back to all changes in this revision

Viewing changes to source/xinfo.c

  • Committer: Bazaar Package Importer
  • Author(s): Roland Marcus Rutschmann
  • Date: 2004-06-07 09:00:14 UTC
  • Revision ID: james.westby@ubuntu.com-20040607090014-t39n52qc9zjqqqkh
Tags: upstream-0.9.6
ImportĀ upstreamĀ versionĀ 0.9.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 
2
 * filename: xinfo.c                                                       *
 
3
 *                                                                         *
 
4
 * UTIL C-source: Medical Image Conversion Utility                         *
 
5
 *                                                                         *
 
6
 * purpose      : display info text routines                               *
 
7
 *                                                                         *
 
8
 * project      : (X)MedCon by Erik Nolf                                   *
 
9
 *                                                                         *
 
10
 * Functions    : XMdcImagesInfo()          - Display images info          *
 
11
 *                XMdcShowFileInfo()        - Display general file info    *
 
12
 *                                                                         *
 
13
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
 
14
/* $Id: xinfo.c,v 1.47 2004/02/18 23:48:39 enlf Exp $
 
15
 */
 
16
 
 
17
/*
 
18
   Copyright (C) 1997-2004 by Erik Nolf
 
19
 
 
20
   This program is free software; you can redistribute it and/or modify it
 
21
   under the terms of the GNU General Public License as published by the
 
22
   Free Software Foundation; either version 2, or (at your option) any later
 
23
   version.
 
24
 
 
25
   This program is distributed in the hope that it will be useful, but
 
26
   WITHOUT ANY WARRANTY; without even the implied warranty of
 
27
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General
 
28
   Public License for more details.
 
29
 
 
30
   You should have received a copy of the GNU General Public License along
 
31
   with this program; if not, write to the Free Software Foundation, Inc.,
 
32
   59 Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
33
 
 
34
/****************************************************************************
 
35
                              H E A D E R S
 
36
****************************************************************************/
 
37
 
 
38
#include "m-depend.h"
 
39
 
 
40
#include <stdio.h>
 
41
#ifdef HAVE_STRING_H
 
42
#include <string.h>
 
43
#endif
 
44
#ifdef HAVE_STRINGS_H
 
45
#ifndef _WIN32
 
46
#include <strings.h>
 
47
#endif
 
48
#endif
 
49
 
 
50
#include "xmedcon.h"
 
51
 
 
52
/****************************************************************************
 
53
                            F U N C T I O N S
 
54
****************************************************************************/
 
55
 
 
56
void XMdcImagesInfo(GtkWidget *widget, Uint32 nr)
 
57
{
 
58
  GtkWidget *window = NULL;
 
59
  GtkWidget *box1;
 
60
  GtkWidget *box2;
 
61
  GtkWidget *button;
 
62
  GtkWidget *separator;
 
63
  GtkWidget *table;
 
64
  GtkWidget *hscrollbar;
 
65
  GtkWidget *vscrollbar;
 
66
  GtkWidget *text;
 
67
 
 
68
  IMG_DATA *id;
 
69
  Uint32 i;
 
70
  float f;
 
71
 
 
72
  i  = my.realnumber[nr];
 
73
  id = &my.fi->image[i];
 
74
 
 
75
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
76
  gtk_widget_set_usize(window, 500, 500);
 
77
  gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE);
 
78
 
 
79
  gtk_signal_connect(GTK_OBJECT(window), "destroy",
 
80
                     GTK_SIGNAL_FUNC(gtk_widget_destroy), NULL);
 
81
 
 
82
  gtk_window_set_title(GTK_WINDOW(window),XMdcGetImageLabelIndex(nr));
 
83
  gtk_container_set_border_width(GTK_CONTAINER(window),0);
 
84
 
 
85
  box1 = gtk_vbox_new(FALSE,0);
 
86
  gtk_container_add(GTK_CONTAINER(window),box1);
 
87
  gtk_widget_show(box1);
 
88
 
 
89
  box2 = gtk_vbox_new(FALSE, 0);
 
90
  gtk_container_set_border_width(GTK_CONTAINER(box2), 0);
 
91
  gtk_box_pack_start(GTK_BOX(box1),box2,TRUE,TRUE,0);
 
92
  gtk_widget_show(box2);
 
93
 
 
94
  table = gtk_table_new(2, 2, FALSE);
 
95
  gtk_table_set_row_spacing(GTK_TABLE(table), 0, 2);
 
96
  gtk_table_set_col_spacing(GTK_TABLE(table), 0, 2);
 
97
  gtk_box_pack_start(GTK_BOX(box2),table,TRUE,TRUE,0);
 
98
  gtk_widget_show(table);
 
99
 
 
100
  text = gtk_text_new(NULL,NULL);
 
101
  gtk_text_set_editable(GTK_TEXT(text),FALSE);
 
102
  gtk_text_set_word_wrap (GTK_TEXT(text), TRUE);
 
103
  gtk_table_attach(GTK_TABLE(table),text, 0, 1, 0, 1,
 
104
                   GTK_EXPAND | GTK_SHRINK | GTK_FILL,
 
105
                   GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
 
106
  gtk_widget_show(text);
 
107
  hscrollbar = gtk_hscrollbar_new(GTK_TEXT(text)->hadj);
 
108
  gtk_table_attach(GTK_TABLE(table), hscrollbar, 0, 1, 1, 2,
 
109
                   GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0);
 
110
  gtk_widget_show(hscrollbar);
 
111
 
 
112
  vscrollbar = gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
 
113
  gtk_table_attach(GTK_TABLE(table), vscrollbar, 1, 2, 0, 1,
 
114
                   GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
 
115
  gtk_widget_show(vscrollbar);
 
116
 
 
117
  gtk_text_freeze(GTK_TEXT(text));
 
118
 
 
119
  gtk_widget_realize(text);
 
120
 
 
121
  /* create the info text */
 
122
  gdk_color_alloc(gtk_widget_get_colormap(window), &Blue);
 
123
 
 
124
  sprintf(xmdcstr,"IMAGE: %02u     PAGE: %02u        NR: %03u\n\n",
 
125
          nr+1, my.curpage+1, i+1);
 
126
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
127
 
 
128
  sprintf(xmdcstr,"\nPixel Dimensions\n");
 
129
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
130
  sprintf(xmdcstr,"dimension: %ux%u\npixeltype: %s\n",
 
131
          id->width, id->height, MdcGetStrPixelType(id->type));
 
132
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
133
 
 
134
  sprintf(xmdcstr,"\nReal Dimensions\n");
 
135
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
136
  sprintf(xmdcstr,"pixel xsize   : %+e mm\npixel ysize   : %+e mm\n",
 
137
          id->pixel_xsize, id->pixel_ysize);
 
138
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
139
  sprintf(xmdcstr,"slice width   : %+e mm\n", id->slice_width);
 
140
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
141
  sprintf(xmdcstr,"slice spacing : %+e mm\n", id->slice_spacing);
 
142
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
143
  sprintf(xmdcstr,"\nct zoom factor: %+e\n", id->ct_zoom_fctr);
 
144
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
145
 
 
146
  sprintf(xmdcstr,"\nRescale Factors\n");
 
147
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
148
  sprintf(xmdcstr,"rescale slope    : %+e ", id->rescale_slope);
 
149
  if (MDC_QUANTIFY == MDC_YES) {
 
150
    strcat(xmdcstr,"(= quantification)\n");
 
151
  }else if (MDC_CALIBRATE == MDC_YES) {
 
152
    strcat(xmdcstr,"(= quantification * calibration)\n");
 
153
  }else{
 
154
    strcat(xmdcstr,"(= none)\n");
 
155
  }
 
156
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
157
  sprintf(xmdcstr,"rescale intercept: %+e\n", id->rescale_intercept);
 
158
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
159
  sprintf(xmdcstr,"quantification   : %+e\n", id->quant_scale);
 
160
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
161
  sprintf(xmdcstr,"calibration      : %+e\n", id->calibr_fctr);
 
162
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
163
  sprintf(xmdcstr,"intercept        : %+e\n", id->intercept);
 
164
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
165
 
 
166
  sprintf(xmdcstr,"\nPixel Values\n");
 
167
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
168
  sprintf(xmdcstr,"image  min value: %+e\t\timage  max value: %+e\n",
 
169
          id->min, id->max);
 
170
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
171
  sprintf(xmdcstr,"frame  min value: %+e\t\tframe  max value: %+e\n",
 
172
          id->fmin, id->fmax);
 
173
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
174
 
 
175
  sprintf(xmdcstr,"\nQuantified Values\n");
 
176
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
177
  sprintf(xmdcstr,"image qmin value: %+e\t\timage qmax value: %+e\n",
 
178
           id->qmin, id->qmax);
 
179
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
180
  sprintf(xmdcstr,"frame qmin value: %+e\t\tframe qmax value: %+e\n",
 
181
           id->qfmin, id->qfmax);
 
182
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
183
 
 
184
  sprintf(xmdcstr,"\nTime Specifications\n");
 
185
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
186
  sprintf(xmdcstr,"frame number  : %u\n",id->frame_number);
 
187
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
188
  sprintf(xmdcstr,"slice start   : %+e [ms] = %s\n"
 
189
                 ,id->slice_start,MdcGetStrHHMMSS(id->slice_start));
 
190
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
191
 
 
192
  f = MdcSingleImageDuration(my.fi,id->frame_number-1);
 
193
  sprintf(xmdcstr,"slice duration: %+e [ms] = %s (auto-filled)\n"
 
194
                 ,f,MdcGetStrHHMMSS(f));
 
195
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
196
 
 
197
  sprintf(xmdcstr,"\nModality & Position\n");
 
198
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
199
 
 
200
  sprintf(xmdcstr,"image modality            : %s\n",id->image_mod);
 
201
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
202
  sprintf(xmdcstr,"image position device     : %+e\\%+e\\%+e\n",
 
203
                                                    id->image_pos_dev[0],
 
204
                                                    id->image_pos_dev[1],
 
205
                                                    id->image_pos_dev[2]);
 
206
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
207
  sprintf(xmdcstr,"image position patient    : %+e\\%+e\\%+e\n",
 
208
                                                    id->image_pos_pat[0],
 
209
                                                    id->image_pos_pat[1],
 
210
                                                    id->image_pos_pat[2]);
 
211
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
212
  sprintf(xmdcstr,"image orientation device  : %+e\\%+e\\%+e\n",
 
213
                                                    id->image_orient_dev[0],
 
214
                                                    id->image_orient_dev[1],
 
215
                                                    id->image_orient_dev[2]);
 
216
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
217
  sprintf(xmdcstr,"                            %+e\\%+e\\%+e\n",
 
218
                                                    id->image_orient_dev[3],
 
219
                                                    id->image_orient_dev[4],
 
220
                                                    id->image_orient_dev[5]);
 
221
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
222
  sprintf(xmdcstr,"image orientation patient : %+e\\%+e\\%+e\n",
 
223
                                                    id->image_orient_pat[0],
 
224
                                                    id->image_orient_pat[1],
 
225
                                                    id->image_orient_pat[2]);
 
226
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
227
  sprintf(xmdcstr,"                            %+e\\%+e\\%+e\n",
 
228
                                                    id->image_orient_pat[3],
 
229
                                                    id->image_orient_pat[4],
 
230
                                                    id->image_orient_pat[5]);
 
231
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
232
 
 
233
  if (id->sdata != NULL) {
 
234
    STATIC_DATA *sd = id->sdata;
 
235
    sprintf(xmdcstr,"\nStatic Data\n");
 
236
    gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
237
 
 
238
    sprintf(xmdcstr,"label            : %s\n",sd->label);
 
239
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
240
    sprintf(xmdcstr,"total counts     : %g\n",sd->total_counts);
 
241
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
242
    sprintf(xmdcstr,"image duration   : %e [ms] = %s\n"
 
243
                   ,sd->image_duration,MdcGetStrHHMMSS(sd->image_duration));
 
244
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
245
    sprintf(xmdcstr,"image start time : %02hd:%02hd:%02hd\n"
 
246
                                                 ,sd->start_time_hour
 
247
                                                 ,sd->start_time_minute
 
248
                                                 ,sd->start_time_second);
 
249
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1); 
 
250
  }
 
251
 
 
252
  gtk_text_thaw(GTK_TEXT(text));
 
253
 
 
254
  /* create separator and close button */
 
255
  separator = gtk_hseparator_new();
 
256
  gtk_box_pack_start(GTK_BOX(box1),separator,FALSE,TRUE,0);
 
257
  gtk_widget_show(separator);
 
258
 
 
259
  box2 = gtk_vbox_new(FALSE, 0);
 
260
  gtk_container_set_border_width(GTK_CONTAINER(box2), 0);
 
261
  gtk_box_pack_start(GTK_BOX(box1),box2, FALSE, FALSE, 0);
 
262
  gtk_widget_show(box2);
 
263
 
 
264
  button = gtk_button_new_with_label("Close");
 
265
  gtk_signal_connect_object(GTK_OBJECT(button),"clicked",
 
266
                            GTK_SIGNAL_FUNC(gtk_widget_destroy),
 
267
                            GTK_OBJECT(window));
 
268
 
 
269
  gtk_box_pack_start(GTK_BOX(box2),button,FALSE,FALSE,0);
 
270
  gtk_widget_show(button);
 
271
 
 
272
  gtk_widget_show(window);
 
273
 
 
274
}
 
275
 
 
276
void XMdcShowFileInfo(GtkWidget *widget, gpointer data)
 
277
{
 
278
  GtkWidget *window = NULL;
 
279
  GtkWidget *box1;
 
280
  GtkWidget *box2;
 
281
  GtkWidget *button;
 
282
  GtkWidget *separator;
 
283
  GtkWidget *table;
 
284
  GtkWidget *hscrollbar;
 
285
  GtkWidget *vscrollbar;
 
286
  GtkWidget *text;
 
287
 
 
288
  Uint32 i;
 
289
  int v;
 
290
 
 
291
  if (XMdcNoFileOpened()) return;
 
292
 
 
293
  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 
294
  gtk_widget_set_usize(window,500,500);
 
295
  gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE); 
 
296
 
 
297
  gtk_signal_connect(GTK_OBJECT(window),"destroy",
 
298
                     GTK_SIGNAL_FUNC(gtk_widget_destroy), NULL);
 
299
 
 
300
  sprintf(mdcbufr,"FileInfo: %s",my.fi->ifname); 
 
301
  gtk_window_set_title(GTK_WINDOW(window),mdcbufr);
 
302
  gtk_container_set_border_width(GTK_CONTAINER(window),0);
 
303
 
 
304
  box1 = gtk_vbox_new(FALSE,0);
 
305
  gtk_container_add(GTK_CONTAINER(window),box1);
 
306
  gtk_widget_show(box1);
 
307
 
 
308
  box2 = gtk_vbox_new(FALSE,0);
 
309
  gtk_container_set_border_width(GTK_CONTAINER(box2), 0);
 
310
  gtk_box_pack_start(GTK_BOX(box1),box2,TRUE,TRUE,0);
 
311
  gtk_widget_show(box2);
 
312
 
 
313
  table = gtk_table_new(2, 2, FALSE);
 
314
  gtk_table_set_row_spacing(GTK_TABLE(table), 0, 2);
 
315
  gtk_table_set_col_spacing(GTK_TABLE(table), 0, 2);
 
316
  gtk_box_pack_start(GTK_BOX(box2),table,TRUE,TRUE,0);
 
317
  gtk_widget_show(table);
 
318
 
 
319
  text = gtk_text_new(NULL,NULL);
 
320
  gtk_text_set_editable(GTK_TEXT(text),FALSE);
 
321
  gtk_text_set_word_wrap(GTK_TEXT(text), TRUE);
 
322
  gtk_table_attach(GTK_TABLE(table),text, 0, 1, 0, 1,
 
323
                   GTK_EXPAND | GTK_SHRINK | GTK_FILL,
 
324
                   GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
 
325
  gtk_widget_show(text);
 
326
  hscrollbar = gtk_hscrollbar_new(GTK_TEXT(text)->hadj);
 
327
  gtk_table_attach(GTK_TABLE(table), hscrollbar, 0, 1, 1, 2,
 
328
                   GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_FILL, 0, 0);
 
329
  gtk_widget_show(hscrollbar);
 
330
 
 
331
  vscrollbar = gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
 
332
  gtk_table_attach(GTK_TABLE(table), vscrollbar, 1, 2, 0, 1,
 
333
                   GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0);
 
334
  gtk_widget_show(vscrollbar);
 
335
 
 
336
  gtk_text_freeze(GTK_TEXT(text));
 
337
 
 
338
  gtk_widget_realize(text);
 
339
 
 
340
  /* create the general info text */
 
341
  gdk_color_alloc(gtk_widget_get_colormap(window), &Blue);
 
342
 
 
343
  sprintf(xmdcstr,"\nGeneral File Information\n");
 
344
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
345
  sprintf(xmdcstr,"FILE *ifp   : ");
 
346
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
347
  if (my.fi->ifp == NULL) 
 
348
    sprintf(xmdcstr,"<null>\n");
 
349
  else
 
350
    sprintf(xmdcstr,"%p\n",(void *)my.fi->ifp);
 
351
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
352
 
 
353
  sprintf(xmdcstr,"FILE *ofp   : ");
 
354
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
355
  if (my.fi->ofp == NULL)
 
356
    sprintf(xmdcstr,"<null>\n");
 
357
  else
 
358
    sprintf(xmdcstr,"%p\n",(void *)my.fi->ofp);
 
359
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
360
 
 
361
  sprintf(xmdcstr,"ipath       : %s\n",my.fi->ipath);
 
362
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
363
  sprintf(xmdcstr,"opath       : %s\n",my.fi->opath);
 
364
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
365
  if (my.fi->idir != NULL) 
 
366
    sprintf(xmdcstr,"idir        : %s\n",my.fi->idir);
 
367
  else
 
368
    sprintf(xmdcstr,"idir        : <null>\n");
 
369
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
370
  if (my.fi->odir != NULL)
 
371
    sprintf(xmdcstr,"odir        : %s\n",my.fi->odir);
 
372
  else
 
373
    sprintf(xmdcstr,"odir        : <null>\n");
 
374
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
375
  sprintf(xmdcstr,"ifname      : %s\n",my.fi->ifname);
 
376
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
377
  sprintf(xmdcstr,"ofname      : %s\n",my.fi->ofname);
 
378
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
379
  v = (int)my.fi->iformat;
 
380
  sprintf(xmdcstr,"iformat     : %d (= %s)\n",v,FrmtString[v]);
 
381
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
382
  v = (int)my.fi->rawconv;
 
383
  sprintf(xmdcstr,"rawconv     : %d (= %s)\n",v,MdcGetStrRawConv(v));
 
384
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
385
  v = (int)my.fi->endian;
 
386
  sprintf(xmdcstr,"endian      : %d (= %s)\n",v,MdcGetStrEndian(v));
 
387
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
388
  v = (int)my.fi->compression;
 
389
  sprintf(xmdcstr,"compression : %d (= %s)\n",v,MdcGetStrCompression(v));
 
390
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
391
  v = (int)my.fi->truncated;
 
392
  sprintf(xmdcstr,"truncated   : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
393
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
394
  v = (int)my.fi->diff_type;
 
395
  sprintf(xmdcstr,"diff_type   : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
396
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
397
  v = (int)my.fi->diff_size;
 
398
  sprintf(xmdcstr,"diff_size   : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
399
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
400
 
 
401
  sprintf(xmdcstr,"\nGeneral Image Information\n"); 
 
402
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
403
  sprintf(xmdcstr,"number      : %u\n",my.fi->number);
 
404
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
405
  sprintf(xmdcstr,"mwidth      : %u\n",my.fi->mwidth);
 
406
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
407
  sprintf(xmdcstr,"mheight     : %u\n",my.fi->mheight);
 
408
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
409
  sprintf(xmdcstr,"bits        : %hu\n",my.fi->bits);
 
410
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
411
  v = (int)my.fi->type;
 
412
  sprintf(xmdcstr,"type        : %hu (= %s)\n",v,MdcGetStrPixelType(v));
 
413
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
414
 
 
415
  sprintf(xmdcstr,"dim[0]      : %-5hd (= total in use)\n",my.fi->dim[0]);
 
416
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
417
  sprintf(xmdcstr,"dim[1]      : %-5hd (= pixels X-dim)\n",my.fi->dim[1]);
 
418
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
419
  sprintf(xmdcstr,"dim[2]      : %-5hd (= pixels Y-dim)\n",my.fi->dim[2]);
 
420
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
421
  sprintf(xmdcstr,"dim[3]      : %-5hd (= planes | (time) slices)\n",my.fi->dim[3]);
 
422
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
423
  sprintf(xmdcstr,"dim[4]      : %-5hd (= frames | time slots | phases)\n",my.fi->dim[4]);
 
424
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
425
  sprintf(xmdcstr,"dim[5]      : %-5hd (= gates  | R-R intervals)\n",my.fi->dim[5]);
 
426
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
427
  sprintf(xmdcstr,"dim[6]      : %-5hd (= beds   | detector heads)\n",my.fi->dim[6]);
 
428
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
429
  sprintf(xmdcstr,"dim[7]      : %-5hd (= ...    | energy windows)\n",my.fi->dim[7]);
 
430
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
431
  sprintf(xmdcstr,"pixdim[0]   : %+e\n",my.fi->pixdim[0]);
 
432
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
433
  sprintf(xmdcstr,"pixdim[1]   : %+e [mm]\n",my.fi->pixdim[1]);
 
434
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
435
  sprintf(xmdcstr,"pixdim[2]   : %+e [mm]\n",my.fi->pixdim[2]);
 
436
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
437
  sprintf(xmdcstr,"pixdim[3]   : %+e [mm]\n",my.fi->pixdim[3]);
 
438
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
439
  for (i=4; i<MDC_MAX_DIMS; i++) {
 
440
     sprintf(xmdcstr,"pixdim[%u]   : %+e\n",i,my.fi->pixdim[i]);
 
441
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
442
  }
 
443
  sprintf(xmdcstr,"glmin       : %+e\n",my.fi->glmin);
 
444
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
445
  sprintf(xmdcstr,"glmax       : %+e\n",my.fi->glmax);
 
446
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
447
  sprintf(xmdcstr,"qglmin      : %+e\n",my.fi->qglmin);
 
448
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
449
  sprintf(xmdcstr,"qglmax      : %+e\n",my.fi->qglmax);
 
450
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
451
 
 
452
  sprintf(xmdcstr,"\nOrientation Information\n");
 
453
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
454
  sprintf(xmdcstr,"slice projection          : %d (= %s)\n",
 
455
       my.fi->slice_projection,MdcGetStrSlProjection(my.fi->slice_projection));
 
456
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
457
  sprintf(xmdcstr,"patient/slice orientation : %d (= %s)\n",
 
458
       my.fi->pat_slice_orient,MdcGetStrPatSlOrient(my.fi->pat_slice_orient));
 
459
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
460
  sprintf(xmdcstr,"patient position          : %s\n",my.fi->pat_pos);
 
461
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
462
  sprintf(xmdcstr,"patient orientation       : %s\n",my.fi->pat_orient);
 
463
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
464
 
 
465
  sprintf(xmdcstr,"\nPatient Information\n");
 
466
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
467
  sprintf(xmdcstr,"patient_sex   : %s\n",my.fi->patient_sex);
 
468
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
469
  sprintf(xmdcstr,"patient_name  : %s\n",my.fi->patient_name);
 
470
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
471
  sprintf(xmdcstr,"patient_id    : %s\n",my.fi->patient_id);
 
472
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
473
  sprintf(xmdcstr,"patient_dob   : %s\n",my.fi->patient_dob);
 
474
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
475
  sprintf(xmdcstr,"patient_weight: %.2f [kg]\n",my.fi->patient_weight);
 
476
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
477
 
 
478
  sprintf(xmdcstr,"\nStudy Information\n");
 
479
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1); 
 
480
  sprintf(xmdcstr,"study_descr      : %s\n",my.fi->study_descr);
 
481
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
482
  sprintf(xmdcstr,"study_id         : %s\n",my.fi->study_id);
 
483
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
484
  sprintf(xmdcstr,"study_date_day   : %d\n",my.fi->study_date_day);
 
485
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
486
  sprintf(xmdcstr,"study_date_month : %d\n",my.fi->study_date_month);
 
487
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
488
  sprintf(xmdcstr,"study_date_year  : %d\n",my.fi->study_date_year);
 
489
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
490
  sprintf(xmdcstr,"study_time_hour  : %d\n",my.fi->study_time_hour);
 
491
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
492
  sprintf(xmdcstr,"study_time_minute: %d\n",my.fi->study_time_minute);
 
493
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
494
  sprintf(xmdcstr,"study_time_second: %d\n",my.fi->study_time_second);
 
495
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
496
  sprintf(xmdcstr,"nr_series        : %hd\n",my.fi->nr_series);
 
497
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
498
  sprintf(xmdcstr,"nr_acquisition   : %hd\n",my.fi->nr_acquisition);
 
499
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
500
  sprintf(xmdcstr,"nr_instance      : %hd\n",my.fi->nr_instance);
 
501
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
502
  v = (int)my.fi->decay_corrected;
 
503
  sprintf(xmdcstr,"decay_corrected  : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
504
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
505
  v = (int)my.fi->flood_corrected;
 
506
  sprintf(xmdcstr,"flood_corrected  : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
507
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
508
  v = (int)my.fi->acquisition_type;
 
509
  sprintf(xmdcstr,"acquisition_type : %d (= %s)\n",v,MdcGetStrAcquisition(v));
 
510
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
511
  v = (int)my.fi->planar;
 
512
  sprintf(xmdcstr,"planar           : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
513
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
514
  v = (int)my.fi->reconstructed;
 
515
  sprintf(xmdcstr,"reconstructed    : %d (= %s)\n",v,MdcGetStrYesNo(v));
 
516
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
517
  sprintf(xmdcstr,"recon_method     : %s\n",my.fi->recon_method);
 
518
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
519
  sprintf(xmdcstr,"institution      : %s\n",my.fi->institution);
 
520
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
521
  sprintf(xmdcstr,"manufacturer     : %s\n",my.fi->manufacturer);
 
522
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
523
  sprintf(xmdcstr,"series_descr     : %s\n",my.fi->series_descr);
 
524
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
525
  sprintf(xmdcstr,"radiopharma      : %s\n",my.fi->radiopharma);
 
526
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
527
  sprintf(xmdcstr,"filter_type      : %s\n",my.fi->filter_type);
 
528
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
529
  sprintf(xmdcstr,"organ_code       : %s\n",my.fi->organ_code);
 
530
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
531
  sprintf(xmdcstr,"isotope_code     : %s\n",my.fi->isotope_code);
 
532
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
533
  sprintf(xmdcstr,"isotope_halflife : %+e [sec]\n",my.fi->isotope_halflife);
 
534
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
535
  sprintf(xmdcstr,"injected_dose    : %+e [MBq]\n",my.fi->injected_dose);
 
536
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
537
  sprintf(xmdcstr,"gantry_tilt      : %+e [degrees]\n",my.fi->gantry_tilt);
 
538
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
539
 
 
540
  if ((my.fi->gatednr > 0) && (my.fi->gdata != NULL)) {
 
541
    sprintf(xmdcstr,"\nGated (SPECT) Data\n");
 
542
    gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
543
    sprintf(xmdcstr,"gatednr          : %u\n",my.fi->gatednr);
 
544
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
545
    for (i=0; i<my.fi->gatednr; i++) {
 
546
      GATED_DATA *gd = &my.fi->gdata[i];
 
547
      sprintf(xmdcstr,"------- [ %.3u ] --------\n",i+1);
 
548
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
549
      v = (int)gd->gspect_nesting;
 
550
      sprintf(xmdcstr,"gspect_nesting   : %d (= %s)\n",gd->gspect_nesting
 
551
                     ,MdcGetStrGSpectNesting(gd->gspect_nesting));
 
552
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
553
      sprintf(xmdcstr,"nr_projections   : %g\n",gd->nr_projections);
 
554
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
555
      sprintf(xmdcstr,"extent_rotation  : %g\n",gd->extent_rotation);
 
556
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
557
      sprintf(xmdcstr,"study_duration   : %+e [ms] = %s\n"
 
558
                     ,gd->study_duration,MdcGetStrHHMMSS(gd->study_duration));
 
559
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
560
      sprintf(xmdcstr,"image_duration   : %+e [ms] = %s\n"
 
561
                     ,gd->image_duration,MdcGetStrHHMMSS(gd->image_duration));
 
562
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
563
      sprintf(xmdcstr,"time_per_proj    : %+e [ms] = %s\n"
 
564
                     ,gd->time_per_proj,MdcGetStrHHMMSS(gd->time_per_proj));
 
565
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
566
      sprintf(xmdcstr,"limit window_low : %+e [ms] = %s\n"
 
567
                     ,gd->window_low,MdcGetStrHHMMSS(gd->window_low));
 
568
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
569
      sprintf(xmdcstr,"limit window_high: %+e [ms] = %s\n"
 
570
                     ,gd->window_high,MdcGetStrHHMMSS(gd->window_high));
 
571
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
572
      sprintf(xmdcstr,"cycles_observed  : %+e\n",gd->cycles_observed);
 
573
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
574
      sprintf(xmdcstr,"cycles_acquired  : %+e\n\n",gd->cycles_acquired);
 
575
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
576
      sprintf(xmdcstr,"heart rate (observed): %d [bpm] (auto-filled)\n"
 
577
                     ,(int)MdcGetHeartRate(gd,MDC_HEART_RATE_OBSERVED));
 
578
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
579
      sprintf(xmdcstr,"heart rate (acquired): %d [bpm] (auto-filled)\n"
 
580
                     ,(int)MdcGetHeartRate(gd,MDC_HEART_RATE_ACQUIRED));
 
581
      gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
582
    }
 
583
  }
 
584
  if ((my.fi->acqnr > 0) && (my.fi->acqdata != NULL)) {
 
585
    sprintf(xmdcstr,"\nAcquisition Data\n");
 
586
    gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
587
    sprintf(xmdcstr,"acqnr              : %u\n",my.fi->acqnr);
 
588
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
589
    for (i=0; i<my.fi->acqnr; i++) {
 
590
     ACQ_DATA *acq = &my.fi->acqdata[i];
 
591
     sprintf(xmdcstr,"-------- [ %.3u ] --------\n",i+1);
 
592
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
593
     v = (int)acq->rotation_direction;
 
594
     sprintf(xmdcstr,"rotation_direction : %d (= %s)\n",v,MdcGetStrRotation(v));
 
595
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
596
     v = (int)acq->detector_motion;
 
597
     sprintf(xmdcstr,"detector_motion    : %d (= %s)\n",v,MdcGetStrMotion(v));
 
598
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
599
     sprintf(xmdcstr,"rotation_offset    : %g [mm]\n",acq->rotation_offset);
 
600
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
601
     sprintf(xmdcstr,"radial_position    : %g [mm]\n",acq->radial_position);
 
602
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
603
     sprintf(xmdcstr,"angle_start        : %g [degrees]\n",acq->angle_start);
 
604
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
605
     sprintf(xmdcstr,"angle_step         : %g [degrees]\n",acq->angle_step);
 
606
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
607
     sprintf(xmdcstr,"scan_arc           : %g [degrees]\n",acq->scan_arc);
 
608
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
609
    }
 
610
  }
 
611
  if ((my.fi->dynnr > 0) && (my.fi->dyndata != NULL)) {
 
612
    sprintf(xmdcstr,"\nDynamic Data\n");
 
613
    gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
614
    sprintf(xmdcstr,"dynnr              : %u\n",my.fi->dynnr);
 
615
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
616
    for (i=0; i<my.fi->dynnr; i++) {
 
617
     DYNAMIC_DATA *dd = &my.fi->dyndata[i];
 
618
     sprintf(xmdcstr,"-------- [ %.3u ] --------\n",i+1);
 
619
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
620
     sprintf(xmdcstr,"nr_of_slices       : %u\n",dd->nr_of_slices);
 
621
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
622
     sprintf(xmdcstr,"time_frame_start   : %+e [ms] = %s\n"
 
623
            ,dd->time_frame_start,MdcGetStrHHMMSS(dd->time_frame_start));
 
624
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
625
     sprintf(xmdcstr,"time_frame_delay   : %+e [ms] = %s\n"
 
626
            ,dd->time_frame_delay,MdcGetStrHHMMSS(dd->time_frame_delay));
 
627
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
628
     sprintf(xmdcstr,"time_frame_duration: %+e [ms] = %s\n"
 
629
            ,dd->time_frame_duration,MdcGetStrHHMMSS(dd->time_frame_duration));
 
630
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
631
     sprintf(xmdcstr,"delay_slices       : %+e [ms] = %s\n"
 
632
            ,dd->delay_slices,MdcGetStrHHMMSS(dd->delay_slices));
 
633
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
634
    }
 
635
  }
 
636
  if ((my.fi->bednr > 0) && (my.fi->beddata != NULL)) {
 
637
    sprintf(xmdcstr,"\nBed Data\n");
 
638
    gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
639
    sprintf(xmdcstr,"bednr              : %u\n",my.fi->bednr);
 
640
    gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
641
    for (i=0; i<my.fi->bednr; i++) {
 
642
     BED_DATA *bd = &my.fi->beddata[i];
 
643
     sprintf(xmdcstr,"-------- [ %.3u ] --------\n",i+1);
 
644
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
645
     sprintf(xmdcstr,"bed horiz. offset  : %+e [mm]\n",bd->hoffset);
 
646
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
647
     sprintf(xmdcstr,"bed vert.  offset  : %+e [mm]\n", bd->voffset);
 
648
     gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
649
    }
 
650
  }
 
651
  sprintf(xmdcstr,"\nInternal Information\n");
 
652
  gtk_text_insert(GTK_TEXT(text),NULL,&Blue,NULL,xmdcstr,-1);
 
653
  sprintf(xmdcstr,"map         : %u (= %s)\n",my.fi->map,
 
654
                                      MdcGetStrColorMap((int)my.fi->map));
 
655
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
656
  sprintf(xmdcstr,"comm_length : %u\n",my.fi->comm_length);
 
657
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
658
  sprintf(xmdcstr,"comment     : ");
 
659
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
660
  if (my.fi->comm_length != 0 && my.fi->comment != NULL) {
 
661
    strncpy(xmdcstr,my.fi->comment,my.fi->comm_length);
 
662
    xmdcstr[my.fi->comm_length]='\0';
 
663
  }else{
 
664
    sprintf(xmdcstr,"<null>\n");
 
665
  }
 
666
  gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,xmdcstr,-1);
 
667
 
 
668
  gtk_text_thaw(GTK_TEXT(text));
 
669
 
 
670
  /* create separator and close button */
 
671
  separator = gtk_hseparator_new();
 
672
  gtk_box_pack_start(GTK_BOX(box1),separator,FALSE,TRUE,0);
 
673
  gtk_widget_show(separator);
 
674
 
 
675
  box2 = gtk_vbox_new(FALSE, 0);
 
676
  gtk_container_set_border_width(GTK_CONTAINER(box2), 0);
 
677
  gtk_box_pack_start(GTK_BOX(box1),box2, FALSE, FALSE, 0);
 
678
  gtk_widget_show(box2);
 
679
 
 
680
  button = gtk_button_new_with_label("Close");
 
681
  gtk_signal_connect_object(GTK_OBJECT(button),"clicked",
 
682
                            GTK_SIGNAL_FUNC(gtk_widget_destroy),
 
683
                            GTK_OBJECT(window));
 
684
 
 
685
  gtk_box_pack_start(GTK_BOX(box2),button,FALSE,FALSE,0);
 
686
  gtk_widget_show(button);
 
687
 
 
688
  gtk_widget_show(window);
 
689
 
 
690
}
 
691