MeshLib
 
Loading...
Searching...
No Matches
MRIOFormatsRegistry.h
Go to the documentation of this file.
1#pragma once
2#include "MRMeshFwd.h"
3#include "MRExpected.h"
4#include "MRIOFilters.h"
7
8#include <filesystem>
9
10namespace MR
11{
12
13namespace MeshLoad
14{
15
19
20using MeshLoader = Expected<MR::Mesh>( * )( const std::filesystem::path&, const MeshLoadSettings& );
21using MeshStreamLoader = Expected<MR::Mesh>( * )( std::istream&, const MeshLoadSettings& );
22
29
36
41
48#define MR_ADD_MESH_LOADER( filter, loader ) \
49MR::MeshLoad::MeshLoaderAdder __meshLoaderAdder_##loader(MR::MeshLoad::NamedMeshLoader{filter,static_cast<MR::MeshLoad::MeshLoader>(loader),static_cast<MR::MeshLoad::MeshStreamLoader>(loader)});\
50
52{
53public:
55};
56
58
59}
60
61using ObjectPtr = std::shared_ptr<Object>;
62
63namespace ObjectLoad
64{
65
66using ObjectLoader = Expected<std::vector<ObjectPtr>>( * )( const std::filesystem::path&, std::string*, ProgressCallback );
67
74
75} // namespace ObjectLoad
76
77namespace AsyncObjectLoad
78{
79
80using PostLoadCallback = std::function<void ( Expected<std::vector<ObjectPtr>> )>;
81using AsyncObjectLoader = void( * )( const std::filesystem::path&, std::string*, PostLoadCallback, ProgressCallback );
82
89
90}
91
92}
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:46
Definition MRIOFormatsRegistry.h:52
MRMESH_API MeshLoaderAdder(const NamedMeshLoader &loader)
std::function< bool(float)> ProgressCallback
Definition MRMesh/MRMeshFwd.h:589
std::vector< IOFilter > IOFilters
Definition MRIOFilters.h:23
Expected< MR::Mesh >(*)(const std::filesystem::path &, const MeshLoadSettings &) MeshLoader
Definition MRIOFormatsRegistry.h:20
MRMESH_API void setMeshLoader(IOFilter filter, MeshLoader loader)
Add or override a loader in the registry.
MRMESH_API MeshStreamLoader getMeshStreamLoader(IOFilter filter)
Finds expected loader from registry.
MRMESH_API MeshLoader getMeshLoader(IOFilter filter)
Finds expected loader from registry.
Expected< MR::Mesh >(*)(std::istream &, const MeshLoadSettings &) MeshStreamLoader
Definition MRIOFormatsRegistry.h:21
MRMESH_API void setMeshStreamLoader(IOFilter filter, MeshStreamLoader streamLoader)
Add or override a loader in the registry.
MRMESH_API IOFilters getFilters()
Gets all registered filters.
MRMESH_API void setObjectLoader(IOFilter filter, AsyncObjectLoader loader)
Add or override a loader in the registry.
void(*)(const std::filesystem::path &, std::string *, PostLoadCallback, ProgressCallback) AsyncObjectLoader
Definition MRIOFormatsRegistry.h:81
MRMESH_API IOFilters getFilters()
Get all registered filters.
std::function< void(Expected< std::vector< ObjectPtr > >)> PostLoadCallback
Definition MRIOFormatsRegistry.h:80
MRMESH_API AsyncObjectLoader getObjectLoader(IOFilter filter)
Find an appropriate loader from the registry.
MRMESH_API IOFilters getFilters()
Get all registered filters.
Expected< std::vector< ObjectPtr > >(*)(const std::filesystem::path &, std::string *, ProgressCallback) ObjectLoader
Definition MRIOFormatsRegistry.h:66
MRMESH_API void setObjectLoader(IOFilter filter, ObjectLoader loader)
Add or override a loader in the registry.
MRMESH_API ObjectLoader getObjectLoader(IOFilter filter)
Find an appropriate loader from the registry.
Definition MRCameraOrientationPlugin.h:7
tl::expected< T, E > Expected
Definition MRExpected.h:49
std::shared_ptr< Object > ObjectPtr
Definition MRIOFormatsRegistry.h:61
Definition MRIOFilters.h:15
setting for mesh loading from external format, and locations of optional output data
Definition MRMeshLoadSettings.h:10
Definition MRIOFormatsRegistry.h:24
IOFilter filter
Definition MRIOFormatsRegistry.h:25
MeshLoader loader
Definition MRIOFormatsRegistry.h:26
MeshStreamLoader streamLoader
Definition MRIOFormatsRegistry.h:27