gft_scene32.h
Go to the documentation of this file.
1 
2 #ifndef _GFT_SCENE32_H_
3 #define _GFT_SCENE32_H_
4 
5 #include "gft_common.h"
6 
7 extern "C" {
8 #include "nifti1_io.h"
9 }
10 
11 namespace gft{
12  namespace Scene32{
13 
19  typedef struct _scene32 {
20  int *data;
21  int ***array;
23  float dx,dy,dz;
24  int maxval, n;
25  nifti_image *nii_hdr;
26  } Scene32;
27 
31  Scene32 *Create(int xsize,int ysize,int zsize);
35  Scene32 *Create(Scene32 *scn);
39  void Destroy(Scene32 **scn);
40  void Copy(Scene32 *dest, Scene32 *src);
41  void Copy(Scene32 *dest, Scene32 *src, Voxel v);
45  Scene32 *Clone(Scene32 *scn);
46  Scene32 *SubScene(Scene32 *scn, Voxel l, Voxel h);
47  Scene32 *SubScene(Scene32 *scn,
48  int xl, int yl, int zl,
49  int xh, int yh, int zh);
50  void Fill(Scene32 *scn, int value);
51 
52  Scene32 *Read(char *filename);
53  Scene32 *ReadCompressed(char *filename);
54  Scene32 *ReadNifti1(char *filename);
55  void Write(Scene32 *scn, char *filename);
56  void WriteCompressed(Scene32 *scn, char *filename);
57  void WriteNifti1(Scene32 *scn, char *filename);
58 
59  inline int GetValue(Scene32 *scn, Voxel v);
60  inline int GetValue(Scene32 *scn, int p);
61  inline int GetValue(Scene32 *scn, int x, int y, int z);
62  float GetValue_trilinear(Scene32 *scn, float x, float y, float z);
63  int GetValue_nn(Scene32 *scn, float x, float y, float z);
64 
65  inline int GetAddressX(Scene32 *scn, int p);
66  inline int GetAddressY(Scene32 *scn, int p);
67  inline int GetAddressZ(Scene32 *scn, int p);
68  inline int GetVoxelAddress(Scene32 *scn, Voxel v);
69  inline int GetVoxelAddress(Scene32 *scn, int x, int y, int z);
70 
71  inline bool IsValidVoxel(Scene32 *scn, int x, int y, int z);
72  inline bool IsValidVoxel(Scene32 *scn, Voxel v);
73 
74  int GetMaximumValue(Scene32 *scn);
75  int GetMinimumValue(Scene32 *scn);
76 
77  Scene32 *MBB(Scene32 *scn);
78  void MBB(Scene32 *scn, Voxel *l, Voxel *h);
79 
80  Scene32 *AddFrame(Scene32 *scn, int sz, int value);
81  Scene32 *RemFrame(Scene32 *fscn, int sz);
82 
83 
84  //---------inline definitions------------------
85  inline bool IsValidVoxel(Scene32 *scn, int x, int y, int z){
86  if((x >= 0)&&(x < scn->xsize)&&
87  (y >= 0)&&(y < scn->ysize)&&
88  (z >= 0)&&(z < scn->zsize))
89  return(true);
90  else
91  return(false);
92  }
93 
94  inline bool IsValidVoxel(Scene32 *scn, Voxel v){
95  if((v.c.x >= 0)&&(v.c.x < scn->xsize)&&
96  (v.c.y >= 0)&&(v.c.y < scn->ysize)&&
97  (v.c.z >= 0)&&(v.c.z < scn->zsize))
98  return(true);
99  else
100  return(false);
101  }
102 
103  inline int GetValue(Scene32 *scn, Voxel v){
104  return (scn->array[v.c.z][v.c.y][v.c.x]);
105  }
106  inline int GetValue(Scene32 *scn, int p){
107  return (scn->data[p]);
108  }
109  inline int GetValue(Scene32 *scn, int x, int y, int z){
110  return (scn->array[z][y][x]);
111  }
112 
113  inline int GetAddressX(Scene32 *scn, int p){
114  return ((p%(scn->xsize*scn->ysize))%scn->xsize);
115  }
116  inline int GetAddressY(Scene32 *scn, int p){
117  return ((p%(scn->xsize*scn->ysize))/scn->xsize);
118  }
119  inline int GetAddressZ(Scene32 *scn, int p){
120  return (p/(scn->xsize*scn->ysize));
121  }
122  inline int GetVoxelAddress(Scene32 *scn, Voxel v){
123  return (v.c.x + v.c.y*scn->xsize +
124  v.c.z*scn->xsize*scn->ysize);
125  }
126  inline int GetVoxelAddress(Scene32 *scn, int x, int y, int z){
127  return (x + y*scn->xsize + z*scn->xsize*scn->ysize);
128  }
129 
130 
131  } //end Scene32 namespace
132 } //end gft namespace
133 
134 
135 #include "gft_scene16.h"
136 #include "gft_scene8.h"
137 
138 namespace gft{
139  namespace Scene32{
140 
143 
144  } //end Scene32 namespace
145 } //end gft namespace
146 
147 
148 #endif
void MBB(Scene32 *scn, Voxel *l, Voxel *h)
Definition: gft_scene32.cpp:736
Scene32 * Create(int xsize, int ysize, int zsize)
A constructor.
Definition: gft_scene32.cpp:13
int GetMaximumValue(Scene32 *scn)
Definition: gft_scene32.cpp:712
int GetVoxelAddress(Scene32 *scn, Voxel v)
Definition: gft_scene32.h:122
int y
Definition: gft_common.h:109
int *** array
Definition: gft_scene32.h:21
Definition: gft_common.h:106
int GetMinimumValue(Scene32 *scn)
Definition: gft_scene32.cpp:724
float dx
Definition: gft_scene32.h:23
int GetValue(Scene32 *scn, Voxel v)
Definition: gft_scene32.h:103
int * data
Definition: gft_scene32.h:20
int n
Definition: gft_scene32.h:24
Scene32 * ReadNifti1(char *filename)
Definition: gft_scene32.cpp:396
float dy
Definition: gft_scene32.h:23
struct gft::Scene8::_scene8 Scene8
struct gft::Scene32::_scene32 Scene32
void WriteNifti1(Scene32 *scn, char *filename)
Definition: gft_scene32.cpp:603
Scene32 * Clone(Scene32 *scn)
A copy constructor.
Definition: gft_scene32.cpp:88
Definition: gft_scene32.h:19
Scene8::Scene8 * ConvertTo8(Scene32 *scn)
Definition: gft_scene32.cpp:850
void WriteCompressed(Scene32 *scn, char *filename)
Definition: gft_scene32.cpp:522
Header file for common definitions and function prototypes.
int maxval
Definition: gft_scene32.h:24
nifti_image * nii_hdr
Definition: gft_scene32.h:25
int z
Definition: gft_common.h:109
int xsize
Definition: gft_scene32.h:22
Scene32 * Read(char *filename)
Definition: gft_scene32.cpp:210
int x
Definition: gft_common.h:109
void Destroy(Scene32 **scn)
A destructor.
Definition: gft_scene32.cpp:75
struct gft::_voxel::@2 c
float GetValue_trilinear(Scene32 *scn, float x, float y, float z)
Definition: gft_scene32.cpp:656
int ysize
Definition: gft_scene32.h:22
void Fill(Scene32 *scn, int value)
Definition: gft_scene32.cpp:190
int GetAddressZ(Scene32 *scn, int p)
Definition: gft_scene32.h:119
Scene16::Scene16 * ConvertTo16(Scene32 *scn)
Definition: gft_scene32.cpp:834
float dz
Definition: gft_scene32.h:23
int GetAddressY(Scene32 *scn, int p)
Definition: gft_scene32.h:116
int GetAddressX(Scene32 *scn, int p)
Definition: gft_scene32.h:113
bool IsValidVoxel(Scene32 *scn, int x, int y, int z)
Definition: gft_scene32.h:85
void Copy(Scene32 *dest, Scene32 *src)
Definition: gft_scene32.cpp:148
Scene32 * SubScene(Scene32 *scn, Voxel l, Voxel h)
Definition: gft_scene32.cpp:98
Scene32 * RemFrame(Scene32 *fscn, int sz)
Definition: gft_scene32.cpp:809
struct gft::Scene16::_scene16 Scene16
int zsize
Definition: gft_scene32.h:22
int GetValue_nn(Scene32 *scn, float x, float y, float z)
Definition: gft_scene32.cpp:698
Scene32 * ReadCompressed(char *filename)
Definition: gft_scene32.cpp:295
void Write(Scene32 *scn, char *filename)
Definition: gft_scene32.cpp:457
Scene32 * AddFrame(Scene32 *scn, int sz, int value)
Definition: gft_scene32.cpp:777