]> Creatis software - CreaPhase.git/blob - utilities_ESRF/writeheader.m
useful functions for simulations, created by ESRF people mainly (free to use)
[CreaPhase.git] / utilities_ESRF / writeheader.m
1 ## function header=writeheader(sizes,datatype,nbytes,nimage)
2 ## used by edfwrite
3 ## sizes is size(image to be written), cf. Dim_1 and Dim_2
4 ## datatype is string, cf. DataType
5 ## nbytes is number of bytes used for each written element
6 ## nimage is probably number of the image, used for writing multiple images in a single file?
7 ## origin: peter
8 ## 2011-05-18 PC
9 ## * correct error in number of blanks to add to get multiple of 512 bytes header
10 ## * avoid sprintf, use double quotes
11
12 function header = writeheader(sizes,datatype,nbytes,nimage,headstruct)
13
14   header = sprintf("%s\n","{");
15   header = [header headerstring("HeaderID","EH:000001:000000:000000","string")];
16   header = [header headerstring("Image",nimage,"integer")];
17   header = [header headerstring("ByteOrder","HighByteFirst","string")];
18   header = [header headerstring("DataType",datatype,"string")];
19   header = [header headerstring("Dim_1",sizes(1),"integer")];
20   header = [header headerstring("Dim_2",sizes(2),"integer")];
21   header = [header headerstring("Size",nbytes*sizes(1)*sizes(2),"integer")];
22   header = [header headerstring("Date",date,"string")];
23
24   if ((nargin == 5) && (isstruct(headstruct) == 1))
25     ## If the structure exists, write the fields to the file
26     if (!isempty(headstruct))
27       names = fieldnames(headstruct);
28       for ii=1:length(names),
29         header = [header sprintf("%s",headerstring(names{ii},getfield(headstruct,names{ii}),...
30                                                    class(getfield(headstruct,names{ii}))))];
31       endfor
32     endif
33   endif
34
35   ## Fill to next multiple of 512
36   lnspace = mod(length(header)+2, 512);
37   if lnspace > 0
38     lnspace = 512-lnspace;
39   endif
40   header = [header blanks(lnspace) "}\n"];
41 endfunction
42
43
44