/usr/include/openigtlink/igtl_polydata.h is in libopenigtlink-dev 1.11.0-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | /*=========================================================================
Program: The OpenIGTLink Library
Language: C
Web page: http://openigtlink.org/
Copyright (c) Insight Software Consortium. All rights reserved.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef __IGTL_POLYDATA_H
#define __IGTL_POLYDATA_H
#include "igtl_win32header.h"
#include "igtl_header.h"
#include "igtl_util.h"
#include "igtl_types.h"
#include "igtl_win32header.h"
#ifdef __cplusplus
extern "C" {
#endif
#define IGTL_POLY_MAX_ATTR_NAME_LEN 255
#define IGTL_POLY_ATTR_TYPE_SCALAR 0x00
#define IGTL_POLY_ATTR_TYPE_VECTOR 0x01
#define IGTL_POLY_ATTR_TYPE_NORMAL 0x02
#define IGTL_POLY_ATTR_TYPE_TENSOR 0x03
#define IGTL_POLY_ATTR_TYPE_RGBA 0x04
#pragma pack(1) /* For 1-byte boundary in memroy */
/** POLYDATA Header */
typedef struct {
igtl_uint32 npoints; /* Number of points */
igtl_uint32 nvertices; /* Number of vertices */
igtl_uint32 size_vertices; /* Size of vertice data (bytes) */
igtl_uint32 nlines; /* Number of lines */
igtl_uint32 size_lines; /* Size of line data (bytes) */
igtl_uint32 npolygons; /* Number of polygons */
igtl_uint32 size_polygons; /* Size of polygon data (bytes) */
igtl_uint32 ntriangle_strips; /* Number of triangle strips */
igtl_uint32 size_triangle_strips; /* Size of triangle strips data (bytes) */
igtl_uint32 nattributes; /* Number of attributes */
} igtl_polydata_header;
typedef struct {
igtl_uint8 type; /* attribute type */
/* Values for TYPE_ATTRIBUTE (16-bit)
0x00: POINT_DATA / Scalars
0x01: POINT_DATA / Vectors
0x02: POINT_DATA / Normals
0x03: POINT_DATA / Tensors
0x10: CELL_DATA / Scalars
0x11: CELL_DATA / Vectors
0x12: CELL_DATA / Normals
0x13: CELL_DATA Tensors */
igtl_uint8 ncomponents; /* number of components */
/* must be 3 for Vectors and Normal, 9 for Tensor.*/
igtl_uint32 n;
} igtl_polydata_attribute_header;
#pragma pack()
/** Attribute info */
typedef struct {
igtl_uint8 type;
igtl_uint8 ncomponents;
igtl_uint32 n;
char * name;
igtl_float32 * data;
} igtl_polydata_attribute;
/** POLYDATA info */
typedef struct {
igtl_polydata_header header; /* Header */
igtl_float32* points; /* Points */
igtl_uint32 * vertices; /* Vertices -- array of (N, i1, i2, i3 ...iN) */
igtl_uint32 * lines; /* Lines -- array of (N, i1, i2, i3 ...iN) */
igtl_uint32 * polygons; /* Polygons -- array of (N, i1, i2, i3 ...iN) */
igtl_uint32 * triangle_strips; /* Triangle strips -- array of (N, i1, i2, i3 ...iN) */
igtl_polydata_attribute * attributes; /* Array of attributes */
} igtl_polydata_info;
/** Initializes igtl_polydata_info */
void igtl_export igtl_polydata_init_info(igtl_polydata_info * info);
/** Allocates free arrays in polydata_info.
* Note that igtl_polydata_alloc_info() does not allocate memory for 'name' and 'data'
* in each igtl_polydata_attribute. Those elements have to be allocated in the developers
* responsibility.
* igtl_polydata_free_info() function assumes that igtl_polydata_info is allocated by
* igtl_polydata_alloc_info() and all memory blocks pointed from igtl_polydata_attribute
* have been allocated by malloc().
* Return 1 if the array is successfully allocated/freed. */
int igtl_export igtl_polydata_alloc_info(igtl_polydata_info * info);
int igtl_export igtl_polydata_free_info(igtl_polydata_info * info);
/** Extracts information about child messages in a byte array of POLYDATA messages and store
* it in a igtl_polydata_info structure. 'type' argument specifies a message type prefix
* (none, GET_, STT_, STP_ or RTS_) by IGTL_TYPE_PREFIX_* macro.
* Returns 1 if success, otherwise 0. */
int igtl_export igtl_polydata_unpack(int type, void * byte_array, igtl_polydata_info * info, igtl_uint64 size);
/** Converts an igtl_polydata_info structure to a byte array.
* 'byte_array' should be allocated prior to calling igtl_polydata_pack() with memory size
* calculated by igtl_polydata_get_size(). 'type' argument specifies a message type prefix
* (none, GET_, STT_, STP_ or RTS_) by IGTL_TYPE_PREFIX_* macro.
* Returns 1 if success, otherwise 0. */
int igtl_export igtl_polydata_pack(igtl_polydata_info * info, void * byte_array, int type);
/** igtl_polydata_get_size() calculates the size of polydata header, consisting of
* POLYDATA hearder section (including number of child messages) and
* name table section based on a igtl_polydata_header.
* The size returned from this function does not include size of child message data.
* 'type' argument specifies a message type prefix
* (none, GET_, STT_, STP_ or RTS_) by IGTL_TYPE_PREFIX_* macro. */
igtl_uint64 igtl_export igtl_polydata_get_size(igtl_polydata_info * info, int type);
/** Calculates CRC of POLYDATA message. Note that 'info' is used only for
* getting size of the message. */
igtl_uint64 igtl_export igtl_polydata_get_crc(igtl_polydata_info * info, int type, void* polydata_message);
#ifdef __cplusplus
}
#endif
#endif /* __IGTL_POLYDATA_H */
|