| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef MATERIAL_MATERIALCONFIGLOADER_H |
| | #define MATERIAL_MATERIALCONFIGLOADER_H |
| |
|
| | #include <memory> |
| |
|
| | #include <QDir> |
| | #include <QList> |
| | #include <QMap> |
| | #include <QSettings> |
| | #include <QString> |
| | #include <QVariant> |
| |
|
| | #include "Materials.h" |
| |
|
| | namespace Materials |
| | { |
| |
|
| | class MaterialLibraryLocal; |
| |
|
| | class MaterialConfigLoader |
| | { |
| | public: |
| | MaterialConfigLoader() = default; |
| | virtual ~MaterialConfigLoader() = default; |
| |
|
| |
|
| | static bool isConfigStyle(const QString& path); |
| | static std::shared_ptr<Material> |
| | getMaterialFromPath(const std::shared_ptr<MaterialLibraryLocal>& library, const QString& path); |
| |
|
| | private: |
| | static QString value(const QMap<QString, QString>& fcmat, |
| | const std::string& name, |
| | const std::string& defaultValue) |
| | { |
| | try { |
| | return fcmat[QString::fromStdString(name)]; |
| | } |
| | catch (const std::out_of_range&) { |
| | } |
| |
|
| | return QString::fromStdString(defaultValue); |
| | } |
| |
|
| | static void setPhysicalValue(const std::shared_ptr<Material>& finalModel, |
| | const std::string& name, |
| | const QString& value) |
| | { |
| | if (!value.isEmpty()) { |
| | finalModel->setPhysicalValue(QString::fromStdString(name), value); |
| | } |
| | } |
| | static void setAppearanceValue(const std::shared_ptr<Material>& finalModel, |
| | const std::string& name, |
| | const QString& value) |
| | { |
| | if (!value.isEmpty()) { |
| | finalModel->setAppearanceValue(QString::fromStdString(name), value); |
| | } |
| | } |
| | static void setAppearanceValue(const std::shared_ptr<Material>& finalModel, |
| | const std::string& name, |
| | const std::shared_ptr<QList<QVariant>>& value) |
| | { |
| | if (!value->isEmpty()) { |
| | finalModel->setAppearanceValue(QString::fromStdString(name), value); |
| | } |
| | } |
| | static void setLegacyValue(const std::shared_ptr<Material>& finalModel, |
| | const std::string& name, |
| | const QString& value) |
| | { |
| | if (!value.isEmpty()) { |
| | finalModel->setLegacyValue(QString::fromStdString(name), value); |
| | } |
| | } |
| |
|
| | static bool isTexture(const QString& value) |
| | { |
| | return value.contains(QStringLiteral("Texture"), Qt::CaseInsensitive); |
| | } |
| |
|
| | static bool readFile(const QString& path, QMap<QString, QString>& map); |
| | static void splitTexture(const QString& value, QString* texture, QString* remain); |
| | static void |
| | splitTextureObject(const QString& value, QString* texture, QString* remain, QString* object); |
| |
|
| | static QString getAuthorAndLicense(const QString& path); |
| | static void addMechanical(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addFluid(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addThermal(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addElectromagnetic(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addArchitectural(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addCosts(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRendering(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addVectorRendering(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| |
|
| | static QString multiLineKey(QMap<QString, QString>& fcmat, const QString& prefix); |
| | static void addRenderAppleseed(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderCarpaint(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderCycles(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderDiffuse(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderDisney(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderEmission(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderGlass(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderLuxcore(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderLuxrender(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderMixed(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderOspray(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderPbrt(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderPovray(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderSubstancePBR(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderTexture(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addRenderWB(QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | static void addLegacy(const QMap<QString, QString>& fcmat, |
| | const std::shared_ptr<Material>& finalModel); |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|