OSDN Git Service

55640e7c39aa07fbc66310a79eb98897399f3ab1
[eos/optional.git] / doc / Objects / dmFile.html
1 <HR>
2 <A NAME="Information">
3 <H2>Information from source codes</H2>
4 </A>
5 <PRE>
6 </PRE>
7 <HR>
8 <A NAME="include">
9 <H2>dmFile.h</H2>
10 </A>
11 <PRE>
12 /*
13 # dmFile.h : $Revision$  
14 # $Date$ 
15 # Created by $Author$
16 # Usage : dmFile.h 
17 # Attention
18 #   $Loccker$
19 #       $State$ 
20 #
21 */
22 /* $Log$ */
23 #ifndef DMFILE_H 
24 #define DMFILE_H 
25
26 #include <stdio.h>
27 #include "mrcImage.h"
28
29 /* constant begin */
30
31
32 /* constant end */
33
34 /* struct begin */
35
36 typedef __int64_t dmFileInteger8; 
37 typedef __int32_t dmFileInteger4; 
38 typedef __int16_t dmFileInteger2; 
39 typedef __int8_t  dmFileInteger1; 
40
41 typedef enum dmFileTagDirType {
42         dmFileTagDirTypeFileEnd = 0x00,
43         dmFileTagDirTypeTagDir  = 0x14, 
44         dmFileTagDirTypeTag     = 0x15
45 } dmFileTagDirType;
46
47 static char* __dmFileTagDirTypeChar[] = {
48         "FileEnd", "", "", "", "", "", "", "", 
49         "", "", "", "", "", "", "", "",
50         "", "", "", "", "TagDir", "Tag"
51 };
52
53 typedef enum dmFileTagDataType {
54         dmFileTagDataTypeInt2   =2,
55         dmFileTagDataTypeInt4   =3,
56         dmFileTagDataTypeUInt2  =4,
57         dmFileTagDataTypeUInt4  =5,
58         dmFileTagDataTypeReal4  =6,
59         dmFileTagDataTypeReal8  =7,
60         dmFileTagDataTypeBool1  =8,
61         dmFileTagDataTypeChar1  =9,
62         dmFileTagDataTypeInt1   =0xa,
63         dmFileTagDataTypeInt8   =0xb,
64         dmFileTagDataTypeUInt8  =0xc,
65         dmFileTagDataTypeStruct =0xf,
66         dmFileTagDataTypeString =0x12,
67         dmFileTagDataTypeArray  =0x14,
68         dmFileTagDataTypeTags   =0x15,
69 } dmFileTagDataType;
70
71 typedef enum dmFileImageDataType {
72         dmFileImageDataTypeInt2     = 1, 
73         dmFileImageDataTypeReal4    = 2, 
74         dmFileImageDataTypeComplex8 = 3, 
75         dmFileImageDataTypeUnknown  = 4, 
76         dmFileImageDataTypePackedComplex  = 5, 
77         dmFileImageDataTypeUInt1    = 6, 
78         dmFileImageDataTypeInt4     = 7, 
79         dmFileImageDataTypeRGBInt4  = 8, 
80         dmFileImageDataTypeInt1     = 9, 
81         dmFileImageDataTypeUInt2    = 10, 
82         dmFileImageDataTypeUInt4    = 11, 
83         dmFileImageDataTypeReal8    = 12, 
84         dmFileImageDataTypeComplex16= 13, 
85         dmFileImageDataTypeBool1    = 14,
86         dmFileImageDataTypeIRGInt4Thumnail = 23 
87 } dmFileImageDataType;
88
89 static size_t __dmFileImageDataTypeSize[] = {
90         0, 2, 3, 8, 0,  4, 1, 4, 
91         4, 1, 2, 4, 6, 16, 1, 0,
92         0, 0, 0, 0, 0,  0, 0, 4 
93 };
94
95 static size_t __dmFileTagDataTypeSize[] = {
96  0, 0, 2, 4, 2, 4, 4, 8, 
97  1, 1, 1, 8, 8, 0, 0, 0, 
98  0, 0, 0, 0, 0, 0, 0, 0
99 }; 
100
101 /*
102 static char* __dmFileTagDataTypeFormat[] = {
103     0,    0, "%d",   "%d",   "%u", "%u", "%f", "%f", 
104  "%d", "%c", "%d", "%lld", "%llu",     0,   0,    0, 
105     0,    0,    0,      0,      0,     0,   0,    0
106 }; 
107 */
108
109 static char* __dmFileTagDataTypeFormat[] = {
110     0,    0,  "%#0x", "%#0x",   "%#0X", "%#0X", "%f", "%f", 
111  "%#0x", "%c", "%#0x", "%#0x", "%#0llX",     0,    0,    0, 
112     0,    0,      0,     0,       0,     0,    0,    0
113 }; 
114
115
116 static char* __dmFileTagDataTypeChar[] = {
117      "",      "", "Int2",   "Int4", "UInt2", "UInt4", "Real4",  "Real8", 
118 "Bool1", "Char1", "Int1",   "Int8", "UInt8",      "",      "", "Struct", 
119      "",      "", "String",     "", "Array",  "Tags",      "",       ""
120 }; 
121
122
123
124 // Header
125 typedef struct dmFile3Header {
126         dmFileInteger4 version;
127         dmFileInteger4 rootLength;
128         dmFileInteger4 byteOrder;
129 } __attribute__((__packed__)) dmFile3Header;
130
131 typedef struct dmFile4Header {
132         dmFileInteger4 version;
133         dmFileInteger8 rootLength;
134         dmFileInteger4 byteOrder;
135 } __attribute__((__packed__)) dmFile4Header;
136
137 typedef struct dmFile3TagDirectory dmFile3TagDirectory;
138 typedef struct dmFile4TagDirectory dmFile4TagDirectory; 
139
140 // Tag 
141 typedef struct dmFile3Tag {
142         dmFileInteger1 tagID;
143         dmFileInteger2 tagNameLength; // Bytes
144         char*          tagName;
145         // Tag
146         char           seperator[4];
147         dmFileInteger4 ninfo; 
148         dmFileInteger4* info; 
149         long            pValue; // Offset       
150         void*           value;  // Array or value 
151         void**          value2; // Struct
152         void**          value3; // Array of Struct
153         // TagDirectory 
154         dmFile3TagDirectory* tagDir;
155 } dmFile3Tag;
156
157 typedef struct dmFile4Tag {
158         dmFileInteger1 tagID;
159         dmFileInteger2 tagNameLength; // Bytes
160         char*          tagName;
161         dmFileInteger8 tagLength;
162         // Tag
163         char           seperator[4];
164         dmFileInteger8 ninfo; 
165         dmFileInteger8* info; 
166         long            pValue;
167         void*           value;  // Array or value 
168         void**          value2; // Struct
169         void**          value3; // Array of Struct
170         // TagDirectory
171         dmFile4TagDirectory* tagDir;
172 } dmFile4Tag;
173
174 // Root Tag Directory
175 struct dmFile3TagDirectory {
176         dmFileInteger1 sortf;
177         dmFileInteger1 closef;
178         dmFileInteger4 numberOfTags;
179         dmFile3Tag* Tags;
180 } ;  
181
182 struct dmFile4TagDirectory {
183         dmFileInteger1 sortf;
184         dmFileInteger1 closef;
185         dmFileInteger8 numberOfTags;
186         dmFile4Tag* Tags;
187 } ; 
188
189 typedef struct dmFile {
190         // Header
191         dmFileInteger4 version;
192         dmFile3Header Header3;
193         dmFile4Header Header4;
194         // Root Tag
195         dmFile3TagDirectory RootTag3;
196         dmFile4TagDirectory RootTag4;
197         // Tail
198         dmFileInteger8 Tail;
199
200         // 
201         mrcImage thumnail;
202         mrcImage image;
203 } dmFile;
204
205 /* struct end */
206
207 #ifdef __cplusplus
208 extern "C" {
209 #endif
210
211 /* prototype begin */
212
213 // in dfFileInfo.c
214 extern void dmFileInfo(FILE* fpt, dmFile dm, int mode);
215 extern void dmFileHeaderInfo(FILE* fpt, dmFile dm, int mode);
216 extern void dmFile3TagDirectoryInfo(FILE* fpt, dmFile3TagDirectory tagDir, int layer, int mode);
217 extern void dmFile3TagInfo(FILE* fpt, dmFile3Tag tagr, int layer, int mode);
218 extern void dmFile4TagDirectoryInfo(FILE* fpt, dmFile4TagDirectory tagDir, int layer, int mode);
219 extern void dmFile4TagInfo(FILE* fpt, dmFile4Tag tag, int layer, int mode);
220
221 // in dmFileRead.c
222 extern void dmFileRead(FILE* fpt, dmFile* dm, char* message, int mode);
223 // DM Header and End Read: check file format
224 extern void dmFileHeaderTailRead(FILE* fpt, dmFile* dm, char* message, int mode);
225 // DM3
226 // Header 
227 extern void dmFile3HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode);
228 //
229 extern void dmFile3TagDirectoryHeaderRead(FILE* fpt, dmFile3TagDirectory* dmRoot, char* message, int mode);
230 extern void dmFile3TagHeaderRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode);
231 extern void dmFile3TagRead(FILE* fpt, dmFile3Tag* dmTag, char* message, int mode);
232 extern void dmFile3TagDirectoryRead(FILE* fpt, dmFile3TagDirectory* dmTagDir, char* message, int mode);
233
234 // DM4
235 // Header
236 extern void dmFile4HeaderRead(FILE* fpt, dmFile* dm, char* message, int mode);
237 //  
238 extern void dmFile4TagDirectoryHeaderRead(FILE* fpt, dmFile4TagDirectory* dmRoot, char* message, int mode);
239 extern void dmFile4TagHeaderRead(FILE* fpt, dmFile4Tag* dmTag, char* message, int mode);
240 extern void dmFile4TagRead(FILE* fpt, dmFile4Tag* dmTag, char* message, int mode);
241 extern void dmFile4TagDirectoryRead(FILE* fpt, dmFile4TagDirectory* dmTagDir, char* message, int mode);
242
243 // in dmFileUtil.c
244 extern void dmFileValuePrint(FILE* fpt, void* value, dmFileTagDataType valueType, int n); 
245
246 // in dm2mrc.c 
247 extern void ldm2mrc(mrcImage* mrc, dmFile* dm, int mode);
248 extern void dmFile3TagDirectory2mrc(dmFile* fpt, dmFile3TagDirectory tagDir, int layer, int mode);
249 extern void dmFile4TagDirectory2mrc(dmFile* fpt, dmFile4TagDirectory tagDir, int layer, int mode);
250
251 // in dmFileInit.c
252 extern void dmFileInit(dmFile* dm, int mode);
253
254 /* prototype end */
255
256 #ifdef __cplusplus
257 };
258 #endif
259
260 #endif  /* DMFILE_H */ 
261 </PRE>