Carna  Version 3.3.2
Carna.h
1 /*
2  * Copyright (C) 2010 - 2015 Leonid Kostrykin
3  *
4  * Chair of Medical Engineering (mediTEC)
5  * RWTH Aachen University
6  * Pauwelsstr. 20
7  * 52074 Aachen
8  * Germany
9  *
10  */
11 
12 #ifndef CARNA_GLOBAL_H_6014714286
13 #define CARNA_GLOBAL_H_6014714286
14 
15 #if defined( CARNA_EXPORT )
16 # if defined( _MSC_VER )
17 # define CARNA_LIB __declspec( dllexport )
18 # pragma warning( disable : 4251 )
19 # elif defined( _GCC )
20 # define CARNA_LIB __attribute__( ( visibility( "default" ) ) )
21 # else
22 # define CARNA_LIB
23 # endif
24 #else
25 # if defined( _MSC_VER )
26 # define CARNA_LIB __declspec( dllimport )
27 # else
28 # define CARNA_LIB
29 # endif
30 #endif
31 #if defined( NO_OVERRIDE_KEYWORD )
32 # define override
33 #endif
34 
35 #include <vector>
36 #include <cstdint>
37 
38 
39 
40 // ----------------------------------------------------------------------------------
41 // Forward Declarations
42 // ----------------------------------------------------------------------------------
43 
44 namespace Carna
45 {
46 
50  namespace base
51  {
52 
53  struct HUV;
54  class Application;
55  class AssertionFailure;
56  class BoundingBox;
57  class BoundingVolume;
58  class CameraControl;
59  class CarnaException;
60  class Log;
61  class HUVolume;
62  class BaseBuffer;
63  class BlendFunction;
64  class Camera;
65  class Color;
66  class Framebuffer;
67  class FrameRenderer;
68  class Geometry;
69  class GeometryFeature;
70  class GLContext;
71  class IndexBufferBase;
72  class MeshBase;
73  class ManagedMeshBase;
74  class ManagedMeshInterface;
75  class MeshRenderingStageBase;
76  class Node;
77  class ProjectionControl;
78  class Releasable;
79  class Renderable;
80  class RenderStage;
81  class RenderState;
82  class RenderTask;
83  class RotatingColor;
84  class Sampler;
85  class Shader;
86  class ShaderCompilationError;
87  class Material;
88  class ShaderManager;
89  class ShaderProgram;
90  class ShaderUniformBase;
91  class Spatial;
92  class SpatialMovement;
93  class ManagedTexture3D;
94  class ManagedTexture3DInterface;
95  struct PVertex;
96  struct PNVertex;
97  struct PCVertex;
98  struct VertexColor;
99  struct VertexNormal;
100  struct VertexPosition;
101  struct ColoredVertex;
102  struct VertexAttribute;
103  class VertexBufferBase;
104  class Viewport;
105  class NormalMap3D;
106  class NormalMap3DTexture;
107  class TextureBase;
108  class RenderStageSequence;
109  class RenderStageListener;
110  class NodeListener;
111 
112  template< typename AssociatedObjectType > class Aggregation;
113  template< typename AssociatedObjectType > class Association;
114  template< typename BufferedVectorComponentType, typename BufferType = std::vector< BufferedVectorComponentType > >
115  class BufferedNormalMap3D;
116  template< typename VoxelType, typename BufferType = std::vector< VoxelType > > class BufferedIntensityVolume;
117  template< typename VoxelType, typename BufferType = std::vector< VoxelType > > class BufferedHUVolume;
118  template< typename BufferedVectorFieldType > struct BufferedVectorFieldFormat;
119  template< typename BufferedVectorFieldType > class BufferedVectorFieldTexture;
120  template< typename AssociatedObjectType > class Composition;
121  template< typename RenderableCompare > class GeometryStage;
122  template< typename SegmentIntensityVolumeType, typename SegmentNormalsVolumeType > class VolumeGrid;
123  template< typename SegmentIntensityVolumeType, typename SegmentNormalsVolumeType > class VolumeSegment;
124  template< typename IndexType > class IndexBuffer;
125  template< typename VertexType, typename IndexType > class Mesh;
126  template< typename VertexType, typename IndexType > class ManagedMesh;
127  template< typename VertexType > class MeshFactory;
128  template< typename RenderableCompare > class MeshRenderingStage;
129  template< typename RenderableCompare > class RenderQueue;
130  template< typename VertexType > class VertexBuffer;
131  template< typename ValueType > class ShaderUniform;
132  template< typename ValueType > struct ShaderUniformType;
133  template< typename InstanceType > class Singleton;
134  template< unsigned int dimension > class Texture;
135 
142 
149 
156 
161 
165  namespace math
166  {
167 
168  class Ray3f;
169 
170  template< typename VectorType > class Ray;
171  template< typename ValueType > class VectorField;
172  template< typename T > class Span;
173  template< typename VectorType, typename ScalarType = typename VectorType::Scalar > class RayPlaneHitTest;
174 
175  }
176 
177  }
178 
183  namespace presets
184  {
185 
187  class CameraShowcaseControl;
188  class PerspectiveControl;
189  class OrthogonalControl;
190  class MeshColorCodingStage;
191  class VolumeRenderingStage;
192  class MIPStage;
193  class MIPLayer;
194  class DRRStage;
195  class DVRStage;
196  class MaskRenderingStage;
197  class CuttingPlanesStage;
200  class CompositionStage;
201 
202  }
203 
208  namespace helpers
209  {
210 
211  class PointMarkerHelper;
213  class VolumeGridHelperBase;
214 
215  template< typename RenderStageOrder = DefaultRenderStageOrder > class FrameRendererHelper;
216  template< typename SegmentIntensityVolumeType, typename SegmentNormalsVolumeType = void > class VolumeGridHelper;
217 
221  namespace details
222  {
223  }
224 
225  }
226 
227 } // namespace Carna
228 
229 #endif // CARNA_GLOBAL_H_6014714286
230 
Implements HUVolume generically for a particular VoxelType.
Renders digital radiograph reconstructs of volume geometries in the scene.
Definition: DRRStage.h:106
Defines default rendering stages order used by FrameRendererHelper.
Simplifies the creation and maintenance of point markers.
Defines rendering stage that combines two other renderings either by putting them next to each other ...
Implements rendering stage that renders transparent meshes.
Implements IntensityVolume generically for a particular VoxelType.
Implements a simple interface for mapping frame coordinates to base::Mesh objects.
Controls projection matrices that induce frustum-shaped visible volume.
Defines type-parameters-independent VolumeGridHelper base interface.
Implements NormalMap3D generically for a particular VoxelType.
BufferedHUVolume< uint16_t > HUVolumeUInt16
Defines 16bit unsigned integer HU volume data.
Definition: Carna.h:155
Controls orthogonal projection matrices, that induce box-shaped visible volume, and base::Camera obje...
Renders maximum intensity projections of volume geometries in the scene.
Definition: MIPStage.h:64
Renders cutting planes of volume geometries in the scene.
Defines abstract base class for rendering stages that render volume geometries in the scene...
Defines an intensity range and the way it is visualized by a maximum intensity projection.
Definition: MIPLayer.h:43
Renders geometry that is actually depth-occluded. The occluded geometry is rendered with reduced opac...
Implements base::CameraControl, rotates the camera around its parent node. The camera movement is bou...
BufferedNormalMap3D< int8_t > NormalMap3DInt8
Defines 8bit signed integer BufferedNormalMap3D.
Definition: Carna.h:160
Implements base::CameraControl, rotates the camera around itself and allows completely free camera mo...
BufferedIntensityVolume< uint8_t > IntensityVolumeUInt8
Defines 8bit intensity volume.
Definition: Carna.h:148
Represents an OpenGL texture object. This class realizes the RAII-idiom.
Definition: Texture.h:152
Computes the partitioning of volumetric data and the corresponding normal map. Also creates scene nod...
Definition: Carna.h:216
BufferedIntensityVolume< uint16_t > IntensityVolumeUInt16
Defines 16bit intensity volume.
Definition: Carna.h:134
Performs direct volume renderings of the volume geometries in the scene.
Definition: DVRStage.h:101
Adds rendering stages to a base::FrameRenderer object according to RenderStageOrder.
Definition: Carna.h:215