Program Listing for File ChunkIO.hpp

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

#ifndef CHUNKIO_HPP
#define CHUNKIO_HPP

#include "lvr2/geometry/BaseVector.hpp"
#include "lvr2/types/Model.hpp"

#include "lvr2/io/deprecated/hdf5/HDF5FeatureBase.hpp"
#include "lvr2/io/deprecated/hdf5/ArrayIO.hpp"
#include "lvr2/io/deprecated/hdf5/ChannelIO.hpp"
#include "lvr2/io/deprecated/hdf5/MeshIO.hpp"
#include "lvr2/io/deprecated/hdf5/VariantChannelIO.hpp"

namespace lvr2 {
using ChunkHDF5IO = lvr2::Hdf5IO<
        lvr2::hdf5features::ArrayIO,
        lvr2::hdf5features::ChannelIO,
        lvr2::hdf5features::VariantChannelIO,
        lvr2::hdf5features::MeshIO>;

class ChunkIO{

    public:
        ChunkIO();
        ChunkIO(std::string filePath);

        void writeBasicStructure(BaseVector<std::size_t> amount, float chunksize, BoundingBox<BaseVector<float>> boundingBox);

        void writeChunk(lvr2::MeshBufferPtr mesh, size_t x, size_t y, size_t z);

        lvr2::MeshBufferPtr loadChunk(std::string chunkName);

        BaseVector <size_t> loadAmount();

        BoundingBox <BaseVector<float>> loadBoundingBox();

        float loadChunkSize();
        void writeVoxelSize(float voxelSize);
        float readVoxelSize();
        boost::shared_array<bool> lsrLoadExtruded(string chunkName);
        boost::shared_array<float> lsrLoadQueryPoints(string chunkName);
        size_t lsrLoadNumCells(string chunkName);
        boost::shared_array<float> lsrLoadCenters(string chunkName);
        void writeTSDF(string cellName,
                        size_t csize,
                        boost::shared_array<float> centers,
                        boost::shared_array<bool> extruded,
                        boost::shared_array<float> queryPoints);

    private:
        // path to the hdf5 file
        std::string m_filePath;
        // hdf5Io object to save and load chunks
        ChunkHDF5IO m_hdf5IO;


        // default names for the groups
        const std::string m_chunkName = "chunks";
        const std::string m_amountName = "amount";
        const std::string m_chunkSizeName = "size";
        const std::string m_boundingBoxName = "bounding_box";


};
} // namespace lvr2

#endif //CHUNKIO_HPP