Program Listing for File MeshIO.hpp
↰ Return to documentation for file (include/lvr2/io/meshio/MeshIO.hpp)
#pragma once
#include "lvr2/io/baseio/BaseIO.hpp"
#include "lvr2/types/MeshBuffer.hpp"
#include "lvr2/io/meshio/MaterialIO.hpp"
#include "lvr2/io/meshio/ClusterIO.hpp"
#include "lvr2/io/meshio/FaceIO.hpp"
namespace lvr2
{
namespace meshio
{
template <typename BaseIO>
class MeshIO
{
public:
void saveMesh(
const std::string mesh_name,
const MeshBufferPtr mesh
) const;
MeshBufferPtr loadMesh(
const std::string& mesh_name
) const;
std::vector<std::string> getAvailableMeshes() const;
private:
void saveVertices(std::string mesh_name, MeshBufferPtr mesh) const;
void loadVertices(std::string mesh_name, MeshBufferPtr mesh) const;
protected:
BaseIO* m_baseIO = static_cast<BaseIO*>(this);
MaterialIO<BaseIO>* m_materialIO = static_cast<MaterialIO<BaseIO>*>(m_baseIO);
ClusterIO<BaseIO>* m_clusterIO = static_cast<ClusterIO<BaseIO>*>(m_baseIO);
FaceIO<BaseIO>* m_faceIO = static_cast<FaceIO<BaseIO>*>(m_baseIO);
};
} // namespace meshio
template <typename FB>
struct FeatureConstruct<lvr2::meshio::MeshIO, FB>
{
// Dependencies
using dep1 = typename FeatureConstruct<lvr2::meshio::MaterialIO, FB>::type;
using dep2 = typename FeatureConstruct<lvr2::meshio::ClusterIO, FB>::type;
using dep3 = typename FeatureConstruct<lvr2::meshio::FaceIO, FB>::type;
using deps = typename dep1::template Merge<dep2>::template Merge<dep3>;
// Add the feature
using type = typename deps::template add_features<lvr2::meshio::MeshIO>::type;
};
} // namespace lvr2
#include "MeshIO.tcc"