ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
CVTypes.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 #ifndef CVCORELIB_CVTYPES_H
11 #define CVCORELIB_CVTYPES_H
12 
13 #include <stdint.h>
14 
16 using PointCoordinateType = float;
17 
19 #if defined CV_CORE_LIB_USES_DOUBLE
20 using ScalarType = double;
21 #elif defined CV_CORE_LIB_USES_FLOAT
22 using ScalarType = float;
23 #else
24 static_assert(false, "type for ScalarType has not been declared");
25 #endif // SCALAR_TYPE_DOUBLE
26 
29  // CC_UNUSED = 1, //DGM: not used anymore (former CC_FATHER_DEPENDENT)
31  CC_LOCKED = 4,
32 };
33 
34 // Bits for object type flags (64 bits)
35 #define CC_HIERARCH_BIT 0x00000000000001 // Hierarchical object
36 #define CC_LEAF_BIT 0x00000000000002 // Tree leaf (no children)
37 #define CC_GROUP_BIT 0x00000000000004 // Group (no data, aggregation only)
38 #define CC_PRIMITIVE_BIT \
39  0x00000000000008 // Primitive (sphere, plane, torus, cylinder, etc.)
40 #define CC_ARRAY_BIT 0x00000000000010 // Array
41 #define CC_LABEL_BIT 0x00000000000020 // 2D label
42 #define CC_VIEWPORT_BIT 0x00000000000040 // 2D viewport
43 #define CC_CUSTOM_BIT 0x00000000000080 // For custom (plugin defined) objects
44 #define CC_CLOUD_BIT 0x00000000000100 // Point Cloud
45 #define CC_MESH_BIT 0x00000000000200 // Mesh
46 #define CC_OCTREE_BIT 0x00000000000400 // Octree
47 #define CC_POLYLINE_BIT 0x00000000000800 // Polyline
48 #define CC_IMAGE_BIT 0x00000000001000 // Picture
49 #define CC_SENSOR_BIT 0x00000000002000 // Sensor def.
50 #define CC_PLANE_BIT 0x00000000004000 // Plane (primitive)
51 #define CC_SPHERE_BIT 0x00000000008000 // Sphere (primitive)
52 #define CC_TORUS_BIT 0x00000000010000 // Torus (primitive)
53 #define CC_CYLINDER_BIT 0x00000000020000 // Cylinder (primitive)
54 #define CC_CONE_BIT 0x00000000040000 // Cone (primitive)
55 #define CC_BOX_BIT 0x00000000080000 // Box (primitive)
56 #define CC_DISH_BIT 0x00000000100000 // Dish (primitive)
57 #define CC_EXTRU_BIT 0x00000000200000 // Extrusion (primitive)
58 #define CC_KDTREE_BIT 0x00000000400000 // Kd-tree
59 #define CC_FACET_BIT \
60  0x00000000800000 // Facet (composite object: cloud + 2D1/2 mesh + 2D1/2
61  // polyline)
62 #define CC_MATERIAL_BIT 0x00000001000000 // Material
63 #define CC_CLIP_BOX_BIT 0x00000002000000 // Clipping box
64 #define CC_TRANS_BUFFER_BIT 0x00000004000000 // Indexed transformation buffer
65 #define CC_GROUND_BASED_BIT 0x00000008000000 // For Ground Based Lidar Sensors
66 #define CC_RGB_COLOR_BIT 0x00000010000000 // Color (R,G,B)
67 #define CC_NORMAL_BIT 0x00000020000000 // Normal (Nx,Ny,Nz)
68 #define CC_COMPRESSED_NORMAL_BIT 0x00000040000000 // Compressed normal (index)
69 #define CC_TEX_COORDS_BIT 0x00000080000000 // Texture coordinates (u,v)
70 #define CC_CAMERA_BIT \
71  0x00000100000000 // For camera sensors (projective sensors)
72 #define CC_QUADRIC_BIT 0x00000200000000 // Quadric (primitive)
73 #define CC_RGBA_COLOR_BIT 0x00000400000000 // Color (R,G,B,A)
74 #define CC_COORDINATESYSTEM_BIT \
75  0x00000800000000 // CoordinateSystem (primitive)
76 #define CC_CIRCLE_BIT 0x00002000000000 //'3D' circle (polyline)
77 #define CC_DISC_BIT 0x00004000000000 // Disc (primitive)
78 // #define CC_FREE_BIT 0x00001000000000
79 // #define CC_FREE_BIT 0x00008000000000
80 // #define CC_FREE_BIT 0x00020000000000
81 // #define CC_FREE_BIT 0x00040000000000
82 // #define CC_FREE_BIT 0x00080000000000
83 // #define CC_FREE_BIT 0x00100000000000
84 #define CC_BBOX_BIT 0x00200000000000 // Axis BoundingBox
85 #define CC_ORIENTED_BBOX_BIT 0x00400000000000 // Oriented BoundingBox
86 #define CC_OCTREE2_BIT 0x00800000000000 // OCTREE for python
87 #define CC_VOXEL_GRID_BIT 0x01000000000000 // VOXEL GRID
88 #define CC_IMAGE2_BIT 0x02000000000000 // IMAGE for python
89 #define CC_RGBD_IMAGE_BIT 0x04000000000000 // RGBD IMAGE
90 #define CC_LINESET_BIT 0x08000000000000 // simple LINESET compared to polyline
91 #define CC_LINE3D_BIT 0x10000000000000 // LINE3D for computing
92 #define CC_MESH_BASE_BIT 0x20000000000000 // BASE MESH for python
93 #define CC_TETRA_MESH_BIT 0x40000000000000 // TETRA MESH for python
94 #define CC_HALF_EDGE_MESH_BIT 0x80000000000000 // HALF EDGE MESH for python
95 
97 using CV_CLASS_ENUM = int64_t;
98 
100 namespace CV_TYPES {
101 typedef enum : CV_CLASS_ENUM {
102  OBJECT = 0,
107  MESH_GROUP = MESH | CC_GROUP_BIT, // DEPRECATED; DEFINITION REMAINS FOR
108  // BACKWARD COMPATIBILITY ONLY
119  PRIMITIVE = MESH | CC_PRIMITIVE_BIT, // primitives are meshes
125  PRIMITIVE | CC_CYLINDER_BIT, // for backward compatibility
126  CYLINDER =
127  PRIMITIVE | CC_CYLINDER_BIT | CC_CONE_BIT, // cylinders are cones
147  // custom entity type
159 
160  // Custom types
181 } GeometryType;
182 } // namespace CV_TYPES
183 
184 #endif // CVCORELIB_CVTYPES_H
#define CC_RGBA_COLOR_BIT
Definition: CVTypes.h:73
#define CC_CONE_BIT
Definition: CVTypes.h:54
#define CC_CIRCLE_BIT
Definition: CVTypes.h:76
float PointCoordinateType
Type of the coordinates of a (N-D) point.
Definition: CVTypes.h:16
#define CC_MESH_BIT
Definition: CVTypes.h:45
#define CC_CLOUD_BIT
Definition: CVTypes.h:44
#define CC_DISH_BIT
Definition: CVTypes.h:56
#define CC_CYLINDER_BIT
Definition: CVTypes.h:53
#define CC_IMAGE_BIT
Definition: CVTypes.h:48
#define CC_DISC_BIT
Definition: CVTypes.h:77
#define CC_RGB_COLOR_BIT
Definition: CVTypes.h:66
#define CC_LINE3D_BIT
Definition: CVTypes.h:91
#define CC_IMAGE2_BIT
Definition: CVTypes.h:88
#define CC_KDTREE_BIT
Definition: CVTypes.h:58
#define CC_VIEWPORT_BIT
Definition: CVTypes.h:42
#define CC_MESH_BASE_BIT
Definition: CVTypes.h:92
#define CC_TEX_COORDS_BIT
Definition: CVTypes.h:69
#define CC_HALF_EDGE_MESH_BIT
Definition: CVTypes.h:94
#define CC_CLIP_BOX_BIT
Definition: CVTypes.h:63
#define CC_CAMERA_BIT
Definition: CVTypes.h:70
#define CC_EXTRU_BIT
Definition: CVTypes.h:57
#define CC_LABEL_BIT
Definition: CVTypes.h:41
#define CC_BOX_BIT
Definition: CVTypes.h:55
#define CC_PRIMITIVE_BIT
Definition: CVTypes.h:38
#define CC_FACET_BIT
Definition: CVTypes.h:59
#define CC_POLYLINE_BIT
Definition: CVTypes.h:47
#define CC_TORUS_BIT
Definition: CVTypes.h:52
#define CC_VOXEL_GRID_BIT
Definition: CVTypes.h:87
int64_t CV_CLASS_ENUM
Type of object type flags (64 bits)
Definition: CVTypes.h:97
#define CC_TRANS_BUFFER_BIT
Definition: CVTypes.h:64
#define CC_HIERARCH_BIT
Definition: CVTypes.h:35
CV_OBJECT_FLAG
Type of a single scalar field value.
Definition: CVTypes.h:28
@ CC_ENABLED
Definition: CVTypes.h:30
@ CC_LOCKED
Definition: CVTypes.h:31
#define CC_NORMAL_BIT
Definition: CVTypes.h:67
#define CC_ARRAY_BIT
Definition: CVTypes.h:40
#define CC_SENSOR_BIT
Definition: CVTypes.h:49
#define CC_OCTREE_BIT
Definition: CVTypes.h:46
#define CC_GROUP_BIT
Definition: CVTypes.h:37
#define CC_PLANE_BIT
Definition: CVTypes.h:50
#define CC_RGBD_IMAGE_BIT
Definition: CVTypes.h:89
#define CC_ORIENTED_BBOX_BIT
Definition: CVTypes.h:85
#define CC_COMPRESSED_NORMAL_BIT
Definition: CVTypes.h:68
#define CC_CUSTOM_BIT
Definition: CVTypes.h:43
#define CC_COORDINATESYSTEM_BIT
Definition: CVTypes.h:74
#define CC_GROUND_BASED_BIT
Definition: CVTypes.h:65
#define CC_LINESET_BIT
Definition: CVTypes.h:90
#define CC_LEAF_BIT
Definition: CVTypes.h:36
#define CC_OCTREE2_BIT
Definition: CVTypes.h:86
#define CC_BBOX_BIT
Definition: CVTypes.h:84
#define CC_TETRA_MESH_BIT
Definition: CVTypes.h:93
#define CC_MATERIAL_BIT
Definition: CVTypes.h:62
#define CC_SPHERE_BIT
Definition: CVTypes.h:51
#define CC_QUADRIC_BIT
Definition: CVTypes.h:72
cloudViewer object type flags
Definition: CVTypes.h:100
GeometryType
Definition: CVTypes.h:101
@ SENSOR
Definition: CVTypes.h:116
@ HIERARCHY_OBJECT
Definition: CVTypes.h:103
@ CUSTOM_H_OBJECT
Definition: CVTypes.h:179
@ VIEWPORT_2D_OBJECT
Definition: CVTypes.h:141
@ PRIMITIVE
Definition: CVTypes.h:119
@ HALF_EDGE_MESH
Definition: CVTypes.h:150
@ MESH
Definition: CVTypes.h:105
@ GBL_SENSOR
Definition: CVTypes.h:117
@ NORMAL_INDEXES_ARRAY
Definition: CVTypes.h:135
@ CLIPPING_BOX
Definition: CVTypes.h:143
@ CALIBRATED_IMAGE
Definition: CVTypes.h:115
@ TETRA_MESH
Definition: CVTypes.h:149
@ RGB_COLOR_ARRAY
Definition: CVTypes.h:137
@ RGBA_COLOR_ARRAY
Definition: CVTypes.h:138
@ IMAGE
Definition: CVTypes.h:114
@ COORDINATESYSTEM
Definition: CVTypes.h:145
@ TRANS_BUFFER
Definition: CVTypes.h:144
@ CONE
Definition: CVTypes.h:123
@ MESH_GROUP
Definition: CVTypes.h:107
@ POINT_CLOUD
Definition: CVTypes.h:104
@ TEX_COORDS_ARRAY
Definition: CVTypes.h:139
@ DISH
Definition: CVTypes.h:129
@ NORMALS_ARRAY
Definition: CVTypes.h:134
@ CIRCLE
Definition: CVTypes.h:113
@ MESH_BASE
Definition: CVTypes.h:148
@ VOXEL_GRID
Definition: CVTypes.h:151
@ LABEL_2D
Definition: CVTypes.h:140
@ POLY_LINE
Definition: CVTypes.h:112
@ POINT_KDTREE
Definition: CVTypes.h:111
@ FACET
Definition: CVTypes.h:109
@ SUB_MESH
Definition: CVTypes.h:106
@ LINESET
Definition: CVTypes.h:152
@ QUADRIC
Definition: CVTypes.h:131
@ RGBD_IMAGE
Definition: CVTypes.h:158
@ OLD_CYLINDER_ID
Definition: CVTypes.h:124
@ ARRAY
Definition: CVTypes.h:133
@ POINT_OCTREE
Definition: CVTypes.h:110
@ LINE3D
Definition: CVTypes.h:153
@ TORUS
Definition: CVTypes.h:122
@ EXTRU
Definition: CVTypes.h:130
@ IMAGE2
Definition: CVTypes.h:156
@ CUSTOM_LEAF_OBJECT
Definition: CVTypes.h:180
@ SPHERE
Definition: CVTypes.h:121
@ MATERIAL_SET
Definition: CVTypes.h:132
@ CAMERA_SENSOR
Definition: CVTypes.h:118
@ PLANE
Definition: CVTypes.h:120
@ POINT_OCTREE2
Definition: CVTypes.h:157
@ DISC
Definition: CVTypes.h:146
@ VIEWPORT_2D_LABEL
Definition: CVTypes.h:142
@ BBOX
Definition: CVTypes.h:154
@ CYLINDER
Definition: CVTypes.h:126
@ OBJECT
Definition: CVTypes.h:102
@ ORIENTED_BBOX
Definition: CVTypes.h:155