Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/vis12/src/compiler/fields/image-info.sml
ViewVC logotype

Diff of /branches/vis12/src/compiler/fields/image-info.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/src/image-info/image-info.sml revision 106, Tue Jun 15 15:29:37 2010 UTC trunk/src/compiler/fields/image-info.sml revision 239, Fri Aug 6 00:36:04 2010 UTC
# Line 8  Line 8 
8    
9  structure ImageInfo : sig  structure ImageInfo : sig
10    
11      val getInfo : string -> {      datatype info = ImgInfo of {
12                id : OS.FileSys.file_id,            (* ID of image file *)
13              dim : int,                          (* dimension of space *)              dim : int,                          (* dimension of space *)
14              ty : RawTypes.ty,                   (* types of scalar samples *)              ty : RawTypes.ty,                   (* types of scalar samples *)
15              origin : FloatLit.float list,       (* center of first sample *)              origin : FloatLit.float list,       (* center of first sample *)
16              ??              sizes : int list                    (* number of samples along each axis *)
17            }            }
18    
19      (* are the underlying files the same? *)
20        val same : info * info -> bool
21    
22      (* hash value (based on image file ID) *)
23        val hash : info -> word
24    
25      (* get image info from a Nrrd file *)
26        val getInfo : string -> info
27    
28        val toString : info -> string
29    
30    end = struct    end = struct
31    
32        datatype info = ImgInfo of {
33                id : OS.FileSys.file_id,            (* ID of image file *)
34                dim : int,                          (* dimension of space *)
35                ty : RawTypes.ty,                   (* types of scalar samples *)
36                origin : FloatLit.float list,       (* center of first sample *)
37                sizes : int list                    (* number of samples along each axis *)
38              }
39    
40        fun same (ImgInfo{id=a, ...}, ImgInfo{id=b, ...}) = (a = b)
41    
42        fun hash (ImgInfo{id, ...}) = OS.FileSys.hash id
43    
44        fun getInfo fileName = let
45    (* FIXME: check that file exists! *)
46              val {version, header} = RunDNorm.run fileName
47              fun set (r, v) = (r := SOME v)
48              fun get (tag, r) = (case !r of NONE => raise Fail("missing "^tag) | SOME v => v)
49              val ty = ref NONE
50              val dim = ref NONE
51              fun doValue ("type", v) = set(ty, RawTypes.fromString v)
52                | doValue ("dimension", v) = ()
53                | doValue ("space dimension", v) = set (dim, valOf(Int.fromString v))
54                | doValue ("sizes", v) = ()
55                | doValue ("space directions", v) = ()
56                | doValue ("kinds", v) = ()
57                | doValue ("endian", v) = ()
58                | doValue ("encoding", v) = ()
59                | doValue ("space origin", v) = ()
60                | doValue _ = ()
61              in
62                Log.msg (concat[fileName, " file header:\n"]);
63                List.app (fn (tag, value) => Log.msg(concat["  ", tag, ": ", value, "\n"])) header;
64                List.app doValue header;
65                ImgInfo{
66                    id = OS.FileSys.fileId fileName,
67                    dim = get ("space dimension", dim),
68                    ty = get ("type", ty),
69                    origin = [],    (* FIXME *)
70                    sizes = []      (* FIXME *)
71                  }
72              end
73    
74        fun toString (ImgInfo{...}) = "IMAGE" (* FIXME *)
75    
76    end    end

Legend:
Removed from v.106  
changed lines
  Added in v.239

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0