Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  
igtlImageMessage.h
Go to the documentation of this file.
1/*=========================================================================
2
3 Program: The OpenIGTLink Library
4 Language: C++
5 Web page: http://openigtlink.org/
6
7 Copyright (c) Insight Software Consortium. All rights reserved.
8
9 This software is distributed WITHOUT ANY WARRANTY; without even
10 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11 PURPOSE. See the above copyright notices for more information.
12
13=========================================================================*/
14
15#ifndef __igtlImageMessage_h
16#define __igtlImageMessage_h
17
18#include "igtlObject.h"
19#include "igtlMacro.h"
20#include "igtlMath.h"
21#include "igtlMessageBase.h"
22#include "igtl_header.h"
23
24namespace igtl
25{
26
27// A class for the GEt_IMAGE message type.
45
46// A class for the STP_IMAGE message type.
64
65
80{
81public:
86
89
90public:
91
93 enum {
94 COORDINATE_RAS=1,
95 COORDINATE_LPS=2
96 };
97
99 enum {
100 ENDIAN_BIG=1,
101 ENDIAN_LITTLE=2
102 };
103
105 enum {
106 DTYPE_SCALAR = 1,
107 DTYPE_VECTOR = 3
108 };
109
111 enum {
112 TYPE_INT8 = 2,
113 TYPE_UINT8 = 3,
114 TYPE_INT16 = 4,
115 TYPE_UINT16 = 5,
116 TYPE_INT32 = 6,
117 TYPE_UINT32 = 7,
118 TYPE_FLOAT32 = 10,
119 TYPE_FLOAT64 = 11
120 };
121
122
123public:
124
128 void SetDimensions(int s[3]);
129
133 void SetDimensions(int i, int j, int k);
134
136 void GetDimensions(int s[3]);
137
139 void GetDimensions(int &i, int &j, int &k);
140
145 int SetSubVolume(int dim[3], int off[3]);
146
152 int SetSubVolume(int dimi, int dimj, int dimk, int offi, int offj, int offk);
153
155 void GetSubVolume(int dim[3], int off[3]);
156
159 void GetSubVolume(int &dimi, int &dimj, int &dimk, int &offi, int &offj, int &offk);
160
162 void SetSpacing(float s[3]);
163
165 void SetSpacing(float si, float sj, float sk);
166
168 void GetSpacing(float s[3]);
169
171 void GetSpacing(float &si, float &sj, float &sk);
172
175 void SetOrigin(float p[3]);
176
179 void SetOrigin(float px, float py, float pz);
180
183 void GetOrigin(float p[3]);
184
187 void GetOrigin(float &px, float &py, float &pz);
188
191 void SetNormals(float o[3][3]);
192
194 void SetNormals(float t[3], float s[3], float n[3]);
195
198 void GetNormals(float o[3][3]);
199
201 void GetNormals(float t[3], float s[3], float n[3]);
202
204 void SetNumComponents(int num);
205
208
210 void SetMatrix(Matrix4x4& mat);
211
213 void GetMatrix(Matrix4x4& mat);
214
216 void SetScalarType(int t) { scalarType = t; };
217
219 void SetScalarTypeToInt8() { scalarType = TYPE_INT8; };
220
222 void SetScalarTypeToUint8() { scalarType = TYPE_UINT8; };
223
225 void SetScalarTypeToInt16() { scalarType = TYPE_INT16; };
226
228 void SetScalarTypeToUint16() { scalarType = TYPE_UINT16; };
229
231 void SetScalarTypeToInt32() { scalarType = TYPE_INT32; };
232
234 void SetScalarTypeToUint32() { scalarType = TYPE_UINT32; };
235
237 int GetScalarType() { return scalarType; };
238
241 int GetScalarSize() { return ScalarSizeTable[scalarType]; };
242
244 int GetScalarSize(int type) { return ScalarSizeTable[type]; };
245
247 void SetEndian(int e) { endian = e; };
248
250 int GetEndian() { return endian; };
251
256 {
257 return dimensions[0]*dimensions[1]*dimensions[2]*GetScalarSize()*numComponents;
258 };
259
261 int GetCoordinateSystem() { return coordinate;};
262
264 void SetCoordinateSystem(int c) {coordinate = c;};
265
266
271 {
272 return subDimensions[0]*subDimensions[1]*subDimensions[2]*GetScalarSize()*numComponents;
273 };
274
278
281
282protected:
285
286protected:
287
289 virtual int PackContent();
290 virtual int UnpackContent();
291
293 int dimensions[3];
294
296 float spacing[3];
297
299 int subDimensions[3];
300
303 int subOffset[3];
304
308
311
314
317
320
322 unsigned char* m_ImageHeader;
323
325 unsigned char* m_Image;
326
328 int ScalarSizeTable[12];
329};
330
331
332} // namespace igtl
333
334#endif // _igtlImageMessage_h
HeaderOnlyMessageBase Superclass
SmartPointer< Self > Pointer
igtlTypeMacro(igtl::GetImageMessage, igtl::HeaderOnlyMessageBase)
SmartPointer< const Self > ConstPointer
igtlNewMacro(igtl::GetImageMessage)
A class for header-only message types, which are used for querying.
void GetMatrix(Matrix4x4 &mat)
Gets the origin/orientation matrix.
void SetScalarTypeToUint16()
Sets the image scalar type to unsigned 16-bit integer.
void SetScalarTypeToInt8()
Sets the image scalar type to 8-bit integer.
int scalarType
A variable for the scalar type of the voxels.
int GetNumComponents()
Gets the number of components for each voxel.
void SetNumComponents(int num)
Sets the number of components for each voxel.
void SetCoordinateSystem(int c)
Sets coordinate system (COORDINATE_RAS or COORDINATE_LPS)
int coordinate
A variable for the scalar type of the voxels.
void * GetScalarPointer()
Gets a pointer to the scalar data.
void SetScalarTypeToUint8()
Sets the image scalar type to unsigned 8-bit integer.
void GetOrigin(float &px, float &py, float &pz)
void SetNormals(float t[3], float s[3], float n[3])
Sets the orientation of the image by the normal vectors for the i, j and k indeces.
int GetScalarType()
Gets the image scalar type.
virtual int UnpackContent()
Unpacks (deserialize) the content. Must be implemented in all child classes.
void GetDimensions(int s[3])
Gets image dimensions as an array of the numbers of pixels in i, j and k directions.
SmartPointer< Self > Pointer
void SetSpacing(float si, float sj, float sk)
Sets spacings by spacing values in i, j and k directions.
void SetScalarTypeToInt16()
Sets the image scalar type to 16-bit integer.
void SetDimensions(int s[3])
void SetNormals(float o[3][3])
void SetSpacing(float s[3])
Sets spacings by an array of spacing values in i, j and k directions.
unsigned char * m_Image
A pointer to the serialized image data.
void SetScalarTypeToInt32()
Sets the image scalar type to 32-bit integer.
int GetEndian()
Gets the Endianess of the image scalars.
void GetSpacing(float &si, float &sj, float &sk)
Gets spacings using spacing values in i, j and k directions.
void SetOrigin(float p[3])
int GetScalarSize(int type)
Gets the size of the specified scalar type. (e.g. 1 byte for 8-bit integer)
int SetSubVolume(int dim[3], int off[3])
int endian
A variable for the Endian of the scalar values in the image.
void GetNormals(float o[3][3])
int GetCoordinateSystem()
Returns coordinate system (COORDINATE_RAS or COORDINATE_LPS)
void GetDimensions(int &i, int &j, int &k)
Gets image dimensions as the numbers of pixels in i, j and k directions.
void SetScalarType(int t)
Sets the image scalar type.
void SetScalarTypeToUint32()
Sets the image scalar type to unsigned 32-bit integer.
void GetSubVolume(int &dimi, int &dimj, int &dimk, int &offi, int &offj, int &offk)
virtual int CalculateContentBufferSize()
Gets the size of the serialized content.
void GetNormals(float t[3], float s[3], float n[3])
Gets the orientation of the image using the normal vectors for the i, j and k indeces.
void GetOrigin(float p[3])
void SetMatrix(Matrix4x4 &mat)
Sets the origin/orientation matrix.
void SetOrigin(float px, float py, float pz)
void SetDimensions(int i, int j, int k)
int numComponents
A variable for the number of components.
int SetSubVolume(int dimi, int dimj, int dimk, int offi, int offj, int offk)
virtual int PackContent()
Packs (serialize) the content. Must be implemented in all child classes.
void SetEndian(int e)
Sets the Endianess of the image scalars. (default is ENDIAN_BIG)
void GetSpacing(float s[3])
Gets spacings using an array of spacing values in i, j and k directions.
SmartPointer< const Self > ConstPointer
void GetSubVolume(int dim[3], int off[3])
Gets sub-volume dimensions and offset using arrays of the dimensions and the offset.
unsigned char * m_ImageHeader
A pointer to the serialized image header.
Implements transparent reference counting.
HeaderOnlyMessageBase Superclass
igtlNewMacro(igtl::StopImageMessage)
SmartPointer< const Self > ConstPointer
igtlTypeMacro(igtl::StopImageMessage, igtl::HeaderOnlyMessageBase)
SmartPointer< Self > Pointer
#define igtlTypeMacro(thisClass, superclass)
Definition igtlMacro.h:484
#define igtlNewMacro(x)
Definition igtlMacro.h:431
#define IGTLCommon_EXPORT
The "igtl" namespace contains all OpenIGTLink classes. There are several nested namespaces within the...
float Matrix4x4[4][4]
Definition igtlMath.h:23

Generated for OpenIGTLink by Doxygen 1.9.8 written by Dimitri van Heesch, © 1997-2012