Program Listing for File DataStruct.hpp

Return to documentation for file (include/lvr2/io/DataStruct.hpp)

#pragma once


#include <boost/shared_array.hpp>

#include "lvr2/display/GlTexture.hpp"

#include <map>
#include <vector>

namespace lvr2
{


template<typename CoordT>
struct coord
{
    CoordT x;
    CoordT y;
    CoordT z;
    CoordT& operator[]( const size_t i )
    {
        switch ( i )
        {
        case 0:
            return x;
            break;
        case 1:
            return y;
            break;
        case 2:
            return z;
            break;
        default:
            return z;
        }
    }
};

template<typename ColorT>
struct color
{
    ColorT r;
    ColorT g;
    ColorT b;
    ColorT& operator[] ( const size_t i )
    {
        switch ( i )
        {
        case 0:
            return r;
            break;
        case 1:
            return g;
            break;
        case 2:
            return b;
            break;
        default:
            return b;
        }
    }
};


template<typename T>
struct idxVal
{
    T value;
    T& operator[] ( const size_t i )
    {
        return value;
    }
};



struct RGBMaterial
{
    unsigned char r;
    unsigned char g;
    unsigned char b;
    int texture_index;
};

// fundamental types
typedef boost::shared_array<char> charArr;
typedef boost::shared_array<unsigned char> ucharArr;
typedef boost::shared_array<short> shortArr;
typedef boost::shared_array<unsigned short> ushortArr;
typedef boost::shared_array<int> intArr;
typedef boost::shared_array<unsigned int> uintArr;
typedef boost::shared_array<long int> lintArr;
typedef boost::shared_array<unsigned long int> ulintArr;
typedef boost::shared_array<float> floatArr;
typedef boost::shared_array<double> doubleArr;
typedef boost::shared_array<bool> boolArr;


typedef boost::shared_array<unsigned int> indexArray;
typedef boost::shared_array<uint16_t> uint16Arr;
typedef boost::shared_array< color<unsigned char> > color3bArr;

typedef boost::shared_array< coord<float> > coord3fArr;


typedef boost::shared_array< idxVal<float> > idx1fArr;


typedef boost::shared_array< coord<unsigned int> > idx3uArr;


typedef boost::shared_array< idxVal<unsigned int> > idx1uArr;


typedef boost::shared_array< RGBMaterial* > materialArr;


typedef boost::shared_array< GlTexture* > textureArr;


typedef std::pair<size_t, size_t> indexPair;


typedef std::map<std::string, std::vector<unsigned int> > labeledFacesMap;
}