SIVIC API  0.9.26
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
svk4DImageData.h
Go to the documentation of this file.
1 /*
2  * Copyright © 2009-2014 The Regents of the University of California.
3  * All Rights Reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * • Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  * • Redistributions in binary form must reproduce the above copyright notice,
10  * this list of conditions and the following disclaimer in the documentation
11  * and/or other materials provided with the distribution.
12  * • None of the names of any campus of the University of California, the name
13  * "The Regents of the University of California," or the names of any of its
14  * contributors may be used to endorse or promote products derived from this
15  * software without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20  * IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
21  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
26  * OF SUCH DAMAGE.
27  */
28 
29 
30 
31 /*
32  * $URL$
33  * $Rev$
34  * $Author$
35  * $Date$
36  *
37  * Authors:
38  * Jason C. Crane, Ph.D.
39  * Beck Olson
40  */
41 
42 
43 #ifndef SVK_4D_IMAGE_DATA_H
44 #define SVK_4D_IMAGE_DATA_H
45 
46 
47 #include <vtkObjectFactory.h>
48 #include <vtkPolyData.h>
49 #include <vtkImageData.h>
50 #include <vtkDoubleArray.h>
51 
52 #include <svkImageData.h>
53 #include <vector>
54 
55 #define DEFAULT_SELECTION_TOLERANCE 0.50001
56 
57 namespace svk {
58 
59 
70 {
71 
72  public:
73 
75  static svk4DImageData* New();
76  static vtkObject* NewObject();
77 
79 
80  virtual void GetNumberOfVoxels(int numVoxels[3]);
81  virtual int GetIDFromIndex(int indexX, int indexY, int indexZ, int* indexArray = NULL);
82 
83  vtkDataArray* GetArray( int linearIndex );
84  vtkDataArray* GetArrayFromID( int index, int* indexArray = NULL );
85  vtkDataArray* GetArray(int x, int y, int z, int* indexArray = NULL );
86  vtkDataArray* GetArray( int* indexArray );
87  void SetArrayName(
88  vtkDataArray* array,
89  svkDcmHeader::DimensionVector* dimensionVector
90  );
91  static string GetArrayName(
92  svkDcmHeader::DimensionVector* dimensionVector
93  );
94  static bool IsIndexInExtent( int* extent, svkDcmHeader::DimensionVector* indexVector );
95 
97 
99  int tlcBrc[2],
100  double userSelection[6],
102  int slice = -1
103  );
104 
105  void GetZeroImage( svkImageData* image );
106  virtual void GetImage( svkImageData* image,
107  int point,
108  int* indexArray = NULL,
109  int component = 2,
110  int vtkDataType = VTK_VOID );
111 
112  virtual void GetImage( svkImageData* image,
113  int point,
114  svkDcmHeader::DimensionVector* indexVector = NULL,
115  int component = 2,
116  int vtkDataType = VTK_VOID );
117 
118  virtual void GetImage( svkImageData* image,
119  int point,
120  string seriesDescription,
121  int* indexArray = NULL,
122  int component = 2,
123  int vtkDataType = VTK_VOID );
124 
125  virtual void GetImage( svkImageData* image,
126  int point,
127  string seriesDescription,
128  svkDcmHeader::DimensionVector* indexVector = NULL,
129  int component = 2,
130  int vtkDataType = VTK_VOID );
131 
132 
133  void SetImage( vtkImageData* image, int point, int* indexArray = NULL );
134  void SetImage( vtkImageData* image, int point, svkDcmHeader::DimensionVector* indexVector );
135 
136  void SetImageComponent( vtkImageData* image, int point, int* indexArray = NULL, int component = 0 ); //real
137  virtual void UpdateRange(int component );
138  int GetNumberOfSlices( svkDcmHeader::Orientation sliceOrientation);
139  virtual void EstimateDataRange(
140  double range[2],
141  int minPt,
142  int maxPt,
143  int component,
144  int* tlcBrc = NULL,
145  int* indexArray = NULL );
146 
147  //void InitializeDataArrays();
148  virtual int GetVolumeIndexSize( int volumeIndex );
149  virtual int GetNumberOfVolumeDimensions( );
150  virtual void GetPolyDataGrid( vtkPolyData* grid );
151 
152 
153  protected:
154 
155  svk4DImageData();
156  ~svk4DImageData();
157 
158  private:
159 
160 
161 
162 };
163 
164 
165 } //svk
166 
167 
168 #endif //SVK_4D_IMAGE_DATA_H
169 
virtual void GetNumberOfVoxels(int numVoxels[3])
Definition: svk4DImageData.cc:88
virtual void GetPolyDataGrid(vtkPolyData *grid)
Definition: svk4DImageData.cc:936
void SetArrayName(vtkDataArray *array, svkDcmHeader::DimensionVector *dimensionVector)
Definition: svk4DImageData.cc:862
static vtkObject * NewObject()
Definition: svk4DImageData.cc:70
double range[3][2]
Range needs to be able to accomodate real, imaginary, and magnitude components.
Definition: svkImageData.h:280
vtkTypeMacro(svk4DImageData, svkImageData)
virtual void UpdateRange(int component)
Definition: svk4DImageData.cc:123
virtual void EstimateDataRange(double range[2], int minPt, int maxPt, int component, int *tlcBrc=NULL, int *indexArray=NULL)
Definition: svk4DImageData.cc:635
virtual int GetLastSlice(svkDcmHeader::Orientation sliceOrientation=svkDcmHeader::UNKNOWN_ORIENTATION)
Definition: svk4DImageData.cc:179
virtual int GetNumberOfVolumeDimensions()
Definition: svk4DImageData.cc:927
virtual void GetImage(svkImageData *image, int point, int *indexArray=NULL, int component=2, int vtkDataType=VTK_VOID)
Definition: svk4DImageData.cc:394
static bool IsIndexInExtent(int *extent, svkDcmHeader::DimensionVector *indexVector)
Definition: svk4DImageData.cc:893
virtual int GetIDFromIndex(int indexX, int indexY, int indexZ, int *indexArray=NULL)
Definition: svk4DImageData.cc:99
Definition: svk4DImageData.h:78
Orientation
Definition: svkDcmHeader.h:101
Definition: svk4DImageData.h:78
vtkDataArray * GetArrayFromID(int index, int *indexArray=NULL)
Definition: svk4DImageData.cc:848
void GetZeroImage(svkImageData *image)
Definition: svk4DImageData.cc:260
~svk4DImageData()
Definition: svk4DImageData.cc:79
void SetImage(vtkImageData *image, int point, int *indexArray=NULL)
Definition: svk4DImageData.cc:758
Definition: svk4DImageData.h:78
int GetNumberOfSlices(svkDcmHeader::Orientation sliceOrientation)
Definition: svk4DImageData.cc:613
static svk4DImageData * New()
ActorType
Definition: svk4DImageData.h:78
static string GetArrayName(svkDcmHeader::DimensionVector *dimensionVector)
Definition: svk4DImageData.cc:871
Definition: svk4DImageData.h:69
vtkDataArray * GetArray(int linearIndex)
Definition: svk4DImageData.cc:839
void GetTlcBrcInUserSelection(int tlcBrc[2], double userSelection[6], svkDcmHeader::Orientation orientation=svkDcmHeader::UNKNOWN_ORIENTATION, int slice=-1)
Definition: svk4DImageData.cc:197
Definition: svkImageData.h:107
vector< map< svkDcmHeader::DimensionIndexLabel, int > > DimensionVector
Definition: svkDcmHeader.h:131
svk4DImageData()
Definition: svk4DImageData.cc:60
void SetImageComponent(vtkImageData *image, int point, int *indexArray=NULL, int component=0)
Definition: svk4DImageData.cc:794
virtual int GetVolumeIndexSize(int volumeIndex)
Definition: svk4DImageData.cc:911
Definition: svkDcmHeader.h:102