| 829 | } |
| 830 | |
| 831 | Expected<Mesh> fromAnySupportedFormat( const std::filesystem::path& file, const MeshLoadSettings& settings /*= {}*/ ) |
| 832 | { |
| 833 | auto ext = utf8string( file.extension() ); |
| 834 | for ( auto & c : ext ) |
| 835 | c = (char)tolower( c ); |
| 836 | ext = "*" + ext; |
| 837 | |
| 838 | auto loader = getMeshLoader( ext ); |
| 839 | if ( !loader.fileLoad ) |
| 840 | { |
| 841 | if ( loader.streamLoad ) |
| 842 | { |
| 843 | std::ifstream in( file, std::ifstream::binary ); |
| 844 | if ( !in ) |
| 845 | return unexpected( std::string( "Cannot open file for reading " ) + utf8string( file ) ); |
| 846 | return addFileNameInError( loader.streamLoad( in, settings ), file ); |
| 847 | } |
| 848 | // the error string must start with stringUnsupportedFileExtension() |
| 849 | std::string err = fmt::format( "{} {} for mesh loading.", stringUnsupportedFileExtension(), ext ); |
| 850 | if ( SceneLoad::getSceneLoader( ext ) ) |
| 851 | return unexpected( err + "\nPlease open this format using scene loading function." ); |
| 852 | return unexpected( err ); |
| 853 | } |
| 854 | |
| 855 | auto res = loader.fileLoad( file, settings ); |
| 856 | if ( res ) |
| 857 | telemetryOpenMesh( ext, *res, settings ); |
| 858 | return res; |
| 859 | } |
| 860 | |
| 861 | Expected<Mesh> fromAnySupportedFormat( std::istream& in, const std::string& extension, const MeshLoadSettings& settings /*= {}*/ ) |
| 862 | { |
no test coverage detected