4 typedef char ImagicParaTypeChar;
5 typedef int ImagicParaTypeInteger;
6 typedef float ImagicParaTypeReal;
7 #define IMAGIC_HEADER (1024)
8 #define IMAGIC_HEADER4 (256)
10 typedef struct _ImagicHeader {
11 ImagicParaTypeInteger IMN; // 1, Image Location Number (1, 2, 3 ...)
12 ImagicParaTypeInteger IFOL; // 2, Number of Images Following (0, 1, ...) only of importance in the first location
13 ImagicParaTypeInteger IERROR; // 3, Error code for this image during IMAGIC-5 run
14 ImagicParaTypeInteger NHFR; // 4, Number of Header Records per image (=1 current)
15 ImagicParaTypeInteger NMONTH; // 5, creation month
16 ImagicParaTypeInteger NDAY; // 6, creation day
17 ImagicParaTypeInteger NYEAR; // 7, creation year
18 ImagicParaTypeInteger NHOUR; // 8, creation hour
19 ImagicParaTypeInteger NMINUT; // 9, creation minute
20 ImagicParaTypeInteger NSEC; // 10, creation second
21 ImagicParaTypeInteger NPIX2; // 11, image size in BYTES as seen from the program IDAT1(13)*IDAT1(89)
22 ImagicParaTypeInteger NPIXEL; // 12, total number of image elements
23 ImagicParaTypeInteger IXLP; // 13, number of lines per image (for 1D data IYLP1=1) : x-size
24 ImagicParaTypeInteger IYLP; // 14, number of pixels per line : y-size
25 ImagicParaTypeChar TYPE[4]; // 15, 4 characters determining the image type:
26 // REAL(float),INTG(short),PACK(byte),COMP(2float),RECO(complex with 0 in imaginary)
27 ImagicParaTypeInteger IXOLD; // 16, top left X co-ordinate before CUT-IMAGE boxing
28 ImagicParaTypeInteger IYOLD; // 17, top left Y co-ordinate before CUT-IMAGE boxing
29 ImagicParaTypeReal AVDENS; // 18, average density in image
30 ImagicParaTypeReal SIGMA; // 19, standard deviation of densities
31 ImagicParaTypeReal VARIAN; // 20, variance of densities
32 ImagicParaTypeReal OLDAVD; // 21, old average density of this image
33 ImagicParaTypeReal DENSMAX; // 22, highest density in image
34 ImagicParaTypeReal DENSMIN; // 23, minimal density in image
35 ImagicParaTypeInteger COMPLEX; // 24, label indicating that data are always complex
36 ImagicParaTypeReal CXLENGTH; // 25, cell dimension in Angstr. MRC(12)
37 ImagicParaTypeReal CYLENGTH; // 26, cell dimension in Angstr. MRC(11)
38 ImagicParaTypeReal CZLENGTH; // 27, cell dimension in Angstr. MRC(13)
39 ImagicParaTypeReal CALPHA; // 28, cell angle alpha. MRC(14)
40 ImagicParaTypeReal CBETA; // 29, cell angle beta. MRC(15)
41 ImagicParaTypeChar NAME[80]; // 30-49, coded NAME/TITLE of the image
42 ImagicParaTypeReal CGAMMA; // 50, cell angle gamma. MRC(16)
43 ImagicParaTypeInteger MAPC; // 51, axis corresponding to columns. MRC(17) (1,2,3 for X, Y, Z)
44 ImagicParaTypeInteger MAPR; // 52, axis corresponding to rows. MRC(18) (1,2,3 for X, Y, Z)
45 ImagicParaTypeInteger MAPS; // 53, axis corresponding to section. MRC(19) (1,2,3 for X, Y, Z)
46 ImagicParaTypeInteger ISPG; // 54, space group MRC(23)
48 ImagicParaTypeInteger NXSTART; // 55, number of 1st column in map MRC(6)
49 ImagicParaTypeInteger NYSTART; // 56, number of 1st row in map MRC(5)
50 ImagicParaTypeInteger NZSTART; // 57, number of 1st section in map MRC(7)
52 ImagicParaTypeInteger NXINTV; // 58, number of intervals along X MRC(9)
53 ImagicParaTypeInteger NYINTV; // 59, number of intervals along Y MRC(8)
54 ImagicParaTypeInteger NZINTV; // 60, number of intervals along Z MRC(10)
61 typedef union ImagicHeader {
62 unsigned char All[IMAGIC_HEADER];
63 IDAT1 IDAT1[IMAGIC_HEADER4];
64 DAT1 DAT1[IMAGIC_HEADER4];
68 typedef struct Imagic {