PolyVox  0.3.0-dev
Open source voxel management library
PolyVoxForwardDeclarations.h
Go to the documentation of this file.
1 /*******************************************************************************
2 Copyright (c) 2005-2009 David Williams
3 
4 This software is provided 'as-is', without any express or implied
5 warranty. In no event will the authors be held liable for any damages
6 arising from the use of this software.
7 
8 Permission is granted to anyone to use this software for any purpose,
9 including commercial applications, and to alter it and redistribute it
10 freely, subject to the following restrictions:
11 
12  1. The origin of this software must not be misrepresented; you must not
13  claim that you wrote the original software. If you use this software
14  in a product, an acknowledgment in the product documentation would be
15  appreciated but is not required.
16 
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19 
20  3. This notice may not be removed or altered from any source
21  distribution.
22 *******************************************************************************/
23 
24 #ifndef __PolyVox_ForwardDeclarations_H__
25 #define __PolyVox_ForwardDeclarations_H__
26 
27 #include "Impl/TypeDef.h"
28 
29 namespace PolyVox
30 {
32  // Array
34  template<uint32_t dimensions, typename ElementType> class Array;
35 
36  typedef Array<1,float> Array1DFloat;
37  typedef Array<1,double> Array1DDouble;
38  typedef Array<1,int8_t> Array1DInt8;
39  typedef Array<1,uint8_t> Array1DUint8;
40  typedef Array<1,int16_t> Array1DInt16;
41  typedef Array<1,uint16_t> Array1DUint16;
42  typedef Array<1,int32_t> Array1DInt32;
43  typedef Array<1,uint32_t> Array1DUint32;
44 
45  typedef Array<2,float> Array2DFloat;
46  typedef Array<2,double> Array2DDouble;
47  typedef Array<2,int8_t> Array2DInt8;
48  typedef Array<2,uint8_t> Array2DUint8;
49  typedef Array<2,int16_t> Array2DInt16;
50  typedef Array<2,uint16_t> Array2DUint16;
51  typedef Array<2,int32_t> Array2DInt32;
52  typedef Array<2,uint32_t> Array2DUint32;
53 
54  typedef Array<3,float> Array3DFloat;
55  typedef Array<3,double> Array3DDouble;
56  typedef Array<3,int8_t> Array3DInt8;
57  typedef Array<3,uint8_t> Array3DUint8;
58  typedef Array<3,int16_t> Array3DInt16;
59  typedef Array<3,uint16_t> Array3DUint16;
60  typedef Array<3,int32_t> Array3DInt32;
61  typedef Array<3,uint32_t> Array3DUint32;
62 
64  // Compressor
66  class Compressor;
67 
69  // CubicSurfaceExtractor
71  template<typename VoxelType> class DefaultIsQuadNeeded;
72  template<typename VolumeType, typename IsQuadNeeded = DefaultIsQuadNeeded<typename VolumeType::VoxelType> > class CubicSurfaceExtractor;
73 
75  // Density
77  template <typename Type> class Density;
78 
79  typedef Density<int8_t> DensityI8;
85 
86  typedef DensityU8 Density8; //Backwards compatibility
87  typedef DensityU16 Density16; //Backwards compatibility
88 
90  // LargeVolume
92  template <typename VoxelType> class LargeVolume;
93 
95  // Material
97  template <typename Type> class Material;
98 
102 
103  typedef MaterialU8 Material8;
104  typedef MaterialU16 Material16;
106 
108  // MaterialDensityPair
110  template <typename Type, uint8_t NoOfMaterialBits, uint8_t NoOfDensityBits> class MaterialDensityPair;
111 
114 
116  // PositionMaterial
118  class PositionMaterial;
119 
121  // PositionMaterialNormal
124 
126  // RawVolume
128  template <typename VoxelType> class RawVolume;
129 
131  // Region
133  class Region;
134 
136  // SimpleVolume
138  template <typename VoxelType> class SimpleVolume;
139 
141  // MarchingCubesSurfaceExtractor
143  template<typename VolumeType, typename Controller> class MarchingCubesSurfaceExtractor;
144 
146  // SurfaceMesh
148  template <typename VertexType> class SurfaceMesh;
149 
151  // Vector
153  template <uint32_t Size, typename StorageType, typename OperationType = StorageType> class Vector;
154 
163 
172 
181 }
182 
183 #endif