| 1845 | } |
| 1846 | |
| 1847 | void Viewer::loadStandardLibraries() |
| 1848 | { |
| 1849 | // Initialize the standard library. |
| 1850 | try |
| 1851 | { |
| 1852 | _stdLib = mx::createDocument(); |
| 1853 | _xincludeFiles = mx::loadLibraries(_libraryFolders, _searchPath, _stdLib); |
| 1854 | if (_xincludeFiles.empty()) |
| 1855 | { |
| 1856 | std::cerr << "Could not find standard data libraries on the given search path: " << _searchPath.asString() << std::endl; |
| 1857 | } |
| 1858 | } |
| 1859 | catch (std::exception& e) |
| 1860 | { |
| 1861 | std::cerr << "Failed to load standard data libraries: " << e.what() << std::endl; |
| 1862 | return; |
| 1863 | } |
| 1864 | |
| 1865 | // Initialize unit management. |
| 1866 | mx::UnitTypeDefPtr distanceTypeDef = _stdLib->getUnitTypeDef("distance"); |
| 1867 | _distanceUnitConverter = mx::LinearUnitConverter::create(distanceTypeDef); |
| 1868 | _unitRegistry->addUnitConverter(distanceTypeDef, _distanceUnitConverter); |
| 1869 | mx::UnitTypeDefPtr angleTypeDef = _stdLib->getUnitTypeDef("angle"); |
| 1870 | mx::LinearUnitConverterPtr angleConverter = mx::LinearUnitConverter::create(angleTypeDef); |
| 1871 | _unitRegistry->addUnitConverter(angleTypeDef, angleConverter); |
| 1872 | |
| 1873 | // Create the list of supported distance units. |
| 1874 | auto unitScales = _distanceUnitConverter->getUnitScale(); |
| 1875 | _distanceUnitOptions.resize(unitScales.size()); |
| 1876 | for (const auto& unitScale : unitScales) |
| 1877 | { |
| 1878 | int location = _distanceUnitConverter->getUnitAsInteger(unitScale.first); |
| 1879 | _distanceUnitOptions[location] = unitScale.first; |
| 1880 | } |
| 1881 | |
| 1882 | // Initialize the generator contexts. |
| 1883 | initContext(_genContext); |
| 1884 | #ifndef MATERIALXVIEW_METAL_BACKEND |
| 1885 | initContext(_genContextEssl); |
| 1886 | #endif |
| 1887 | #if MATERIALX_BUILD_GEN_OSL |
| 1888 | initContext(_genContextOsl); |
| 1889 | #endif |
| 1890 | #if MATERIALX_BUILD_GEN_MDL |
| 1891 | initContext(_genContextMdl); |
| 1892 | #endif |
| 1893 | } |
| 1894 | |
| 1895 | bool Viewer::keyboard_event(int key, int scancode, int action, int modifiers) |
| 1896 | { |
no test coverage detected