From 36607da1cfa886d6bcc39b1daf6392bf136b7c90 Mon Sep 17 00:00:00 2001
From: Mathias Paulin <mathias.paulin@irit.fr>
Date: Mon, 14 Feb 2022 14:06:28 +0100
Subject: [PATCH] [librender] begin simplification of nodes management (not yet
 finalized)

---
 src/libRender/CMakeLists.txt                  |   2 -
 .../RenderGraphEditor/EnvMapSourceModel.cpp   | 110 ------------------
 .../RenderGraphEditor/EnvMapSourceModel.hpp   |   8 --
 .../RenderGraphEditor/NodeAdapterModel.hpp    |   4 +-
 .../RenderGraphEditor/NodeAdapterModel.inl    |  10 --
 5 files changed, 2 insertions(+), 132 deletions(-)
 delete mode 100644 src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.cpp
 delete mode 100644 src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.hpp

diff --git a/src/libRender/CMakeLists.txt b/src/libRender/CMakeLists.txt
index 69f7d35..b680987 100644
--- a/src/libRender/CMakeLists.txt
+++ b/src/libRender/CMakeLists.txt
@@ -267,7 +267,6 @@ set(gui_sources
     RadiumNBR/Gui/RenderGraphEditor/SourceColorTextureModel.cpp
     RadiumNBR/Gui/RenderGraphEditor/SourceDepthTextureModel.cpp
     RadiumNBR/Gui/RenderGraphEditor/SourceNodeModel.cpp
-    RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.cpp
     RadiumNBR/VolumeVisualization/Gui/VolumeVisualizationGui.cpp
     RadiumNBR/Gui/MultiPassControllerGui.cpp
     RadiumNBR/Gui/NodeGraphControllerGui.cpp
@@ -295,7 +294,6 @@ set(gui_public_headers
     RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.hpp
 
     RadiumNBR/Gui/RenderGraphEditor/SourceNodeModel.hpp
-    RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.hpp
 
     RadiumNBR/Gui/RenderGraphEditor/ConnectionStatusData.hpp
     RadiumNBR/Gui/RenderGraphEditor/WidgetFactory.hpp
diff --git a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.cpp b/src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.cpp
deleted file mode 100644
index a8371fd..0000000
--- a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-#if 0
-#include <RadiumNBR/Gui/PowerSlider.hpp>
-#include <RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.hpp>
-#include <RadiumNBR/Gui/RendererPanel.hpp>
-
-#include <filesystem>
-
-using namespace RadiumNBR::Gui;
-
-template <>
-NodeBasedRenderer_LIBRARY_API EnvMapData EnvMapSourceModel::getDefault() {
-    return nullptr;
-}
-
-template <>
-NodeBasedRenderer_LIBRARY_API QWidget* EnvMapSourceModel::getWidget() {
-    auto controlPanel = new RendererPanel( "EnvMap", false );
-    auto envmpClbck   = [this, controlPanel]( const std::string& files ) {
-        if ( files.empty() ) { m_node->setData( nullptr ); }
-        else
-        {
-            auto t = ( files.find( ';' ) != files.npos )
-                           ? RadiumNBR::EnvMap::EnvMapType::ENVMAP_CUBE
-                           : RadiumNBR::EnvMap::EnvMapType::ENVMAP_PFM;
-            if ( t == RadiumNBR::EnvMap::EnvMapType::ENVMAP_PFM )
-            {
-                auto ext = files.substr( files.size() - 3 );
-                if ( ext != "pfm" ) { t = RadiumNBR::EnvMap::EnvMapType::ENVMAP_LATLON; }
-            }
-            // for now, only skyboxes are managed
-            m_node->setData( std::make_shared<RadiumNBR::EnvMap>( files, t, true ) );
-            auto slider = controlPanel->findChild<PowerSlider*>( "Strength" );
-            if ( slider ) { m_node->getData()->setEnvStrength( slider->value() / 100. ); }
-        }
-    };
-    controlPanel->addFileInput(
-        "Image(s)", envmpClbck, "../", "Images (*.png *.jpg *.pfm *.exr *hdr)" );
-
-    auto strengthClbk = [this]( double v ) {
-        if ( m_node )
-        {
-            auto* env = m_node->getData().get();
-            if ( env ) { env->setEnvStrength( v / 100. ); }
-        }
-    };
-    float s_init = 100.;
-    if ( m_node && m_node->getData() ) { s_init = m_node->getData()->getEnvStrength() * 100.; }
-    controlPanel->addPowerSliderInput( "Strength", strengthClbk, s_init, 0., 100 );
-    controlPanel->setVisible( true );
-    return controlPanel;
-}
-
-template <>
-NodeBasedRenderer_LIBRARY_API QJsonObject EnvMapSourceModel::save() const {
-    QJsonObject modelJson = NodeDataModel::save();
-    modelJson["files"]    = m_node->getData()->getImageName().c_str();
-    modelJson["type"]     = QString::number( int( m_node->getData()->getImageType() ) );
-    modelJson["strength"] = QString::number( float( m_node->getData()->getEnvStrength() ) * 100. );
-    return modelJson;
-}
-
-template <>
-NodeBasedRenderer_LIBRARY_API void EnvMapSourceModel::restore( QJsonObject const& p ) {
-    auto controlPanel = dynamic_cast<RendererPanel*>( m_widget );
-
-    QJsonValue n      = p["files"];
-    std::string files = n.toString().toStdString();
-    if ( files.empty() ) { m_node->setData( nullptr ); }
-    else
-    {
-        std::string type = p["type"].toString().toStdString();
-        int t            = std::stoi( type );
-        RadiumNBR::EnvMap::EnvMapType envType;
-        switch ( t )
-        {
-        case 0:
-            envType = RadiumNBR::EnvMap::EnvMapType::ENVMAP_PFM;
-            break;
-        case 1:
-            envType = RadiumNBR::EnvMap::EnvMapType::ENVMAP_CUBE;
-            break;
-        case 2:
-            envType = RadiumNBR::EnvMap::EnvMapType::ENVMAP_LATLON;
-            break;
-        }
-        // check if the file exists
-        bool envmap_exist;
-        float s = 100.;
-        if ( envType == RadiumNBR::EnvMap::EnvMapType::ENVMAP_CUBE )
-        {
-            std::string f1 = files.substr( 0, files.find( ';' ) - 1 );
-            envmap_exist   = std::filesystem::exists( f1 );
-        }
-        else
-        { envmap_exist = std::filesystem::exists( files ); }
-        if ( !envmap_exist ) { m_node->setData( nullptr ); }
-        else
-        {
-            // for now, only skyboxes are managed
-            m_node->setData( std::make_shared<RadiumNBR::EnvMap>( files, envType, true ) );
-            s = std::atof( p["strength"].toString().toStdString().c_str() );
-            m_node->getData()->setEnvStrength( s / 100. );
-        }
-        // This assume thereis only one powerslider in the control panel
-        auto slider = controlPanel->findChild<PowerSlider*>( "Strength" );
-        slider->setValue( s );
-    }
-}
-
-#endif
diff --git a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.hpp b/src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.hpp
deleted file mode 100644
index d48afe2..0000000
--- a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/EnvMapSourceModel.hpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#if 0
-#pragma once
-#include <RadiumNBR/Gui/RenderGraphEditor/SourceNodeModel.hpp>
-#include <RadiumNBR/EnvMap.hpp>
-
-using EnvMapData = std::shared_ptr<RadiumNBR::EnvMap>;
-using EnvMapSourceModel = SourceNodeModel<EnvMapData>;
-#endif
diff --git a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.hpp b/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.hpp
index 1c5ca10..22550e4 100644
--- a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.hpp
+++ b/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.hpp
@@ -202,8 +202,8 @@ class NodeAdapterModel : public QtNodes::NodeDataModel
     mutable QString m_validationError                      = QString( "" );
 
   public:
-    QJsonObject save() const override;
-    void restore(QJsonObject const & p) override;
+    QJsonObject save() const override { return QtNodes::NodeDataModel::save(); }
+    void restore(QJsonObject const & p) override { QtNodes::NodeDataModel::restore(p); }
 };
 
 #include <RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.inl>
diff --git a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.inl b/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.inl
index a13f4f4..328bd2b 100644
--- a/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.inl
+++ b/src/libRender/RadiumNBR/Gui/RenderGraphEditor/NodeAdapterModel.inl
@@ -1,14 +1,4 @@
 
-template <typename T>
-QJsonObject NodeAdapterModel<T>::save() const {
-    return QtNodes::NodeDataModel::save();
-}
-
-template <typename T>
-void NodeAdapterModel<T>::restore( const QJsonObject& p ) {
-    QtNodes::NodeDataModel::restore(p);
-}
-
 template <>
 void NodeAdapterModel<DataNode<NodeTypeRenderObject>>::init() {
     m_node = m_renderGraph->getDataNode<NodeTypeRenderObject>();
-- 
GitLab