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
23namespace igtl
24{
25
26// A class for the GEt_IMAGE message type.
44
45
60{
61public:
66
69
70public:
71
73 enum {
74 COORDINATE_RAS=1,
75 COORDINATE_LPS=2
76 };
77
79 enum {
80 ENDIAN_BIG=1,
81 ENDIAN_LITTLE=2
82 };
83
85 enum {
86 DTYPE_SCALAR = 1,
87 DTYPE_VECTOR = 3
88 };
89
91 enum {
92 TYPE_INT8 = 2,
93 TYPE_UINT8 = 3,
94 TYPE_INT16 = 4,
95 TYPE_UINT16 = 5,
96 TYPE_INT32 = 6,
97 TYPE_UINT32 = 7,
98 TYPE_FLOAT32 = 10,
99 TYPE_FLOAT64 = 11
100 };
101
102
103public:
104
108 void SetDimensions(int s[3]);
109
113 void SetDimensions(int i, int j, int k);
114
116 void GetDimensions(int s[3]);
117
119 void GetDimensions(int &i, int &j, int &k);
120
125 int SetSubVolume(int dim[3], int off[3]);
126
132 int SetSubVolume(int dimi, int dimj, int dimk, int offi, int offj, int offk);
133
135 void GetSubVolume(int dim[3], int off[3]);
136
139 void GetSubVolume(int &dimi, int &dimj, int &dimk, int &offi, int &offj, int &offk);
140
142 void SetSpacing(float s[3]);
143
145 void SetSpacing(float si, float sj, float sk);
146
148 void GetSpacing(float s[3]);
149
151 void GetSpacing(float &si, float &sj, float &sk);
152
155 void SetOrigin(float p[3]);
156
159 void SetOrigin(float px, float py, float pz);
160
163 void GetOrigin(float p[3]);
164
167 void GetOrigin(float &px, float &py, float &pz);
168
171 void SetNormals(float o[3][3]);
172
174 void SetNormals(float t[3], float s[3], float n[3]);
175
178 void GetNormals(float o[3][3]);
179
181 void GetNormals(float t[3], float s[3], float n[3]);
182
184 void SetNumComponents(int num);
185
188
190 void SetMatrix(Matrix4x4& mat);
191
193 void GetMatrix(Matrix4x4& mat);
194
196 void SetScalarType(int t) { scalarType = t; };
197
199 void SetScalarTypeToInt8() { scalarType = TYPE_INT8; };
200
202 void SetScalarTypeToUint8() { scalarType = TYPE_UINT8; };
203
205 void SetScalarTypeToInt16() { scalarType = TYPE_INT16; };
206
208 void SetScalarTypeToUint16() { scalarType = TYPE_UINT16; };
209
211 void SetScalarTypeToInt32() { scalarType = TYPE_INT32; };
212
214 void SetScalarTypeToUint32() { scalarType = TYPE_UINT32; };
215
217 int GetScalarType() { return scalarType; };
218
221 int GetScalarSize() { return ScalarSizeTable[scalarType]; };
222
224 int GetScalarSize(int type) { return ScalarSizeTable[type]; };
225
227 void SetEndian(int e) { endian = e; };
228
230 int GetEndian() { return endian; };
231
236 {
237 return dimensions[0]*dimensions[1]*dimensions[2]*GetScalarSize()*numComponents;
238 };
239
241 int GetCoordinateSystem() { return coordinate;};
242
244 void SetCoordinateSystem(int c) {coordinate = c;};
245
246
251 {
252 return subDimensions[0]*subDimensions[1]*subDimensions[2]*GetScalarSize()*numComponents;
253 };
254
258
261
262protected:
265
266protected:
267
268 virtual int GetBodyPackSize();
269 virtual int PackBody();
270 virtual int UnpackBody();
271
273 int dimensions[3];
274
276 float spacing[3];
277
279 int subDimensions[3];
280
283 int subOffset[3];
284
288
291
294
297
300
302 unsigned char* m_ImageHeader;
303
305 unsigned char* m_Image;
306
308 int ScalarSizeTable[12];
309};
310
311
312} // namespace igtl
313
314#endif // _igtlImageMessage_h
315
316
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 quearying.
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.
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.
virtual int UnpackBody()
Unpacks (deserialize) the body. Must be implemented in a child class.
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)
virtual int GetBodyPackSize()
Gets the size of the serialized body.
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)
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)
void SetEndian(int e)
Sets the Endianess of the image scalars. (default is ENDIAN_BIG)
virtual int PackBody()
Packs (serialize) the body. Must be implemented in a child class.
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.
#define igtlTypeMacro(thisClass, superclass)
Definition igtlMacro.h:486
#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