File 0003-Port-VTK-code-to-current-version.patch of Package molekel

From 15655794ac748dcf9d67f3b5dd20dee23997d5c2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
Date: Sun, 22 Dec 2024 20:07:07 +0100
Subject: [PATCH 3/4] Port VTK code to current version

---
 src/CMakeLists.txt                  | 20 ++++++-----
 src/MainWindow.cpp                  | 53 +++++++++++++++--------------
 src/MainWindow.h                    |  5 +--
 src/MolekelMolecule.cpp             | 20 +++++------
 src/dialogs/ImagePlaneProbeDialog.h |  2 +-
 src/utility/vtkMSMSReader.cpp       |  3 --
 src/utility/vtkMSMSReader.h         |  2 +-
 src/utility/vtkOpenGLGlyphMapper.h  |  2 +-
 src/utility/vtkSoMapper.h           |  6 ++--
 9 files changed, 58 insertions(+), 55 deletions(-)
 mode change 100755 => 100644 src/CMakeLists.txt
 mode change 100755 => 100644 src/MainWindow.cpp
 mode change 100755 => 100644 src/MainWindow.h
 mode change 100755 => 100644 src/MolekelMolecule.cpp

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
old mode 100755
new mode 100644
index 8d3a3dc..4bd41ae
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -145,7 +145,7 @@ ENDIF( WIN32 )
 ####       to get rid of the console
 
 #### VTK ####
-FIND_PACKAGE(VTK REQUIRED)
+FIND_PACKAGE(VTK REQUIRED COMPONENTS RenderingQt IOExportGL2PS)
 
 #### QT4 ####
 FIND_PACKAGE(Qt5 REQUIRED COMPONENTS Core PrintSupport)
@@ -343,14 +343,16 @@ TARGET_LINK_LIBRARIES( ${MOLEKEL_EXECUTABLE} openbabel )
 TARGET_LINK_LIBRARIES( ${MOLEKEL_EXECUTABLE} ${IV_LIB} )
 TARGET_LINK_LIBRARIES( ${MOLEKEL_EXECUTABLE} ChemKit2 )
 TARGET_LINK_LIBRARIES( ${MOLEKEL_EXECUTABLE}
-                       QVTK
-                       vtkHybrid
-                       vtkWidgets
-                       vtkImaging
-                       vtkRendering
-                       vtkGraphics
-                       vtkIO
-                       vtkCommon )
+                       VTK::FiltersSources
+                       VTK::FiltersGeneral
+                       VTK::FiltersHybrid
+                       VTK::FiltersModeling
+                       VTK::GUISupportQt
+                       VTK::IOExportGL2PS
+                       VTK::InteractionStyle
+                       VTK::RenderingOpenGL2
+                       VTK::RenderingAnnotation
+                       VTK::RenderingQt )
 IF( WIN32 )
   TARGET_LINK_LIBRARIES( ${MOLEKEL_EXECUTABLE} qwt5 )
 ELSE( WIN32 )
diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp
old mode 100755
new mode 100644
index 9057eb3..89eb3b6
--- a/src/MainWindow.cpp
+++ b/src/MainWindow.cpp
@@ -27,7 +27,7 @@
 // QT
 #include <QMainWindow>
 #include <QFileDialog>
-#include <QVTKWidget.h>
+#include <QVTKRenderWidget.h>
 #include <QFileInfo>
 #include <QMessageBox>
 #include <QStatusBar>
@@ -305,12 +305,12 @@ MainWindow::MainWindow() : fileMenu_( 0 ),
             vtkMatrix4x4& m = *m4x4;
             m.DeepCopy( cam->GetViewTransformMatrix() );
             // set translation to zero
-            m[ 0 ][ 3 ] = 0; m[ 1 ][ 3 ] = 0; m[ 2 ][ 3 ] = 0;
-            m[ 3 ][ 0 ] = 0; m[ 3 ][ 1 ] = 0; m[ 3 ][ 2 ] = 0; m[ 3 ][ 3 ] = 1;
+            m.SetElement(0, 3, 0); m.SetElement(1, 3, 0); m.SetElement(2, 3, 0);
+            m.SetElement(3, 0, 0); m.SetElement(3, 1, 0); m.SetElement(3, 2, 0); m.SetElement(3, 3, 1);
             // normalize vectors
-            Normalize( m[ 0 ] );
-            Normalize( m[ 1 ] );
-            Normalize( m[ 2 ] );
+            Normalize( m, 0 );
+            Normalize( m, 1 );
+            Normalize( m, 2 );
 
             // uncommenting the following line creates the inverse
             // transform which causes the axes to be displayed as they
@@ -322,28 +322,31 @@ MainWindow::MainWindow() : fileMenu_( 0 ),
 
         }
         /// Normalizes a 3d vector.
-        void Normalize( double v[ 3 ] )
+        void Normalize( vtkMatrix4x4& m, int row)
         {
-            double n = std::sqrt( v[ 0 ] * v[ 0 ] + v[ 1 ] * v[ 1 ] + v[ 2 ] * v[ 2 ] );
+            double& v0 = m.GetData()[row * 4 + 0];
+            double& v1 = m.GetData()[row * 4 + 1];
+            double& v2 = m.GetData()[row * 4 + 2];
+            double n = std::sqrt( v0 * v0 + v1 * v1 + v2 * v2 );
             if( n > 0. ) n = 1 / n;
-            v[ 0 ] *= n;
-            v[ 1 ] *= n;
-            v[ 2 ] *= n;
+            v0 *= n;
+            v1 *= n;
+            v2 *= n;
         }
         /// Transposes the upper 3x3 part of a 4x4 matrix.
-        void TransposeUpper3x3( vtkMatrix4x4& m )
-        {
-            std::swap( m[ 0 ][ 1 ], m[ 1 ][ 0 ] );
-            std::swap( m[ 0 ][ 2 ], m[ 2 ][ 0 ] );
-            std::swap( m[ 1 ][ 2 ], m[ 2 ][ 1 ] );
-        }
+        //void TransposeUpper3x3( vtkMatrix4x4& m )
+        //{
+        //    std::swap( m[ 0 ][ 1 ], m[ 1 ][ 0 ] );
+        //    std::swap( m[ 0 ][ 2 ], m[ 2 ][ 0 ] );
+        //    std::swap( m[ 1 ][ 2 ], m[ 2 ][ 1 ] );
+        //}
     };
     //-------------------------------------------------------------
 
-    /// QVTKWidget
+    /// QVTKRenderWidget
     // widget
-    vtkWidget_ = new QVTKWidget( this );
-    vtkWidget_->setObjectName( "QVTKWidget" );
+    vtkWidget_ = new QVTKRenderWidget( this );
+    vtkWidget_->setObjectName( "QVTKRenderWidget" );
     vtkWidget_->setAccessibleName( vtkWidget_->objectName() );
     setCentralWidget( vtkWidget_ );
     // render window    
@@ -360,7 +363,7 @@ MainWindow::MainWindow() : fileMenu_( 0 ),
     // DO NOT DO THIS:  vtkRenderWindow_ = vtkWidget_->GetRenderWindow();
     // a new vtkRenderWindow is created each time QVTKWidget::GetRenderWindow() is
     // invoked!
-    vtkWidget_->SetRenderWindow( vtkRenderWindow_ );
+    vtkWidget_->setRenderWindow( vtkRenderWindow_ );
     
     /// Toolbars
     mainToolBar_ = addToolBar( "Toolbar" );
@@ -1929,7 +1932,7 @@ void MainWindow::ExportVideoSlot()
             Refresh();
             if( d.SaveFrames() )
             {
-                writer->SetInput( GetSnapshot() );
+                writer->SetInputData( GetSnapshot() );
                 const QString num = QString( "%1" ).arg( i );
                 const int paddingIndex = std::min( num.size(), MAX_PADDING_LENGTH ); 
                 const QString fname = fileName + PADDING[ paddingIndex ] + num + ".png";
@@ -3109,14 +3112,14 @@ double MainWindow::GetDPOcclusionRatio() const
 void MainWindow::SetAAFrames( int f )
 {
 	assert( vtkRenderWindow_ != 0 );
-	vtkRenderWindow_->SetAAFrames( f );
+	vtkRenderWindow_->SetMultiSamples( f );
 }
 
 //-----------------------------------------------------------------------------
 int MainWindow::GetAAFrames() const
 {
 	assert( vtkRenderWindow_ != 0 );
-	return vtkRenderWindow_->GetAAFrames();
+	return vtkRenderWindow_->GetMultiSamples();
 }
 
 //-----------------------------------------------------------------------------
@@ -3184,4 +3187,4 @@ void MainWindow::UpdateViewMenu()
     viewToolbarAction_->setChecked( mainToolBar_->isVisible() );
     viewWorkspaceAction_->setChecked( workspaceTreeDockWidget_->isVisible() );
     viewMoleculePropAction_->setChecked( moleculePropertyDockWidget_->isVisible() );    
-}
\ No newline at end of file
+}
diff --git a/src/MainWindow.h b/src/MainWindow.h
old mode 100755
new mode 100644
index 90fa78a..6caf2c3
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -53,7 +53,8 @@
 class QMenu;
 class QTimerEvent;
 class QResizeEvent;
-class QVTKWidget;
+class QVTKOpenGLNativeWidget;
+using QVTKRenderWidget = QVTKOpenGLNativeWidget;
 class MolekelData;
 class vtkRenderer;
 class SoPickedPoint;
@@ -355,7 +356,7 @@ private:
     /// Toolbar.
     QToolBar* mainToolBar_;
     /// VTK Widget used to dsplay 3d geometry.
-    QVTKWidget* vtkWidget_;
+    QVTKRenderWidget* vtkWidget_;
     /// VTK Renderer.
     vtkSmartPointer< vtkRenderer > vtkRenderer_;
     /// VTK Render Window
diff --git a/src/MolekelMolecule.cpp b/src/MolekelMolecule.cpp
old mode 100755
new mode 100644
index 268e9ac..104f023
--- a/src/MolekelMolecule.cpp
+++ b/src/MolekelMolecule.cpp
@@ -504,7 +504,7 @@ MolekelMolecule* MolekelMolecule::New( const char* fname,
     vtkSoMapper* m = vtkSoMapper::New();
     /// @todo remove all initialization code below and put it into
     /// vtkSoMapper or create new class vtkSoActor
-    m->SetImmediateModeRendering( true ); // <- won't work properly without this
+    //m->SetImmediateModeRendering( true ); // <- won't work properly without this
     m->SetRoot( root );
 
     // release references
@@ -539,7 +539,7 @@ MolekelMolecule* MolekelMolecule::New( const char* fname,
     // create bounding box
     mol->bbox_ = vtkActor::New();
     vtkSmartPointer< vtkOutlineCornerFilter > cs( vtkOutlineCornerFilter::New() );
-    cs->SetInput( mol->boundingBox_->GetOutput() );
+    cs->SetInputData( mol->boundingBox_->GetOutput() );
     vtkSmartPointer< vtkPolyDataMapper > bbmapper( vtkPolyDataMapper::New() );
     bbmapper->SetInputConnection( cs->GetOutputPort() );
     bbmapper->Update();
@@ -550,7 +550,7 @@ MolekelMolecule* MolekelMolecule::New( const char* fname,
     // create bounding box for isosurface computation
     mol->isoBBox_ = vtkActor::New();
     vtkSmartPointer< vtkOutlineFilter > of( vtkOutlineFilter::New() );
-    of->SetInput( mol->isoBoundingBox_->GetOutput() );
+    of->SetInputData( mol->isoBoundingBox_->GetOutput() );
     vtkSmartPointer< vtkPolyDataMapper > isoBBmapper( vtkPolyDataMapper::New() );
     isoBBmapper->SetInputConnection( of->GetOutputPort() );
     isoBBmapper->Update();
@@ -926,7 +926,7 @@ namespace
     {
         assert( data );
         vtkSmartPointer< vtkMarchingCubes > mc( vtkMarchingCubes::New() );
-        mc->SetInput( data );
+        mc->SetInputData( data );
         mc->ComputeNormalsOn();
         mc->GenerateValues( 1, value, value );
         mc->Update();
@@ -943,11 +943,11 @@ namespace
         if( value < 0. )
         {
             vtkSmartPointer< vtkReverseSense > reverse( vtkReverseSense::New() );
-            reverse->SetInput( pd );
+            reverse->SetInputData( pd );
             reverse->ReverseNormalsOn();
             mapper->SetInputConnection( reverse->GetOutputPort() );
         }
-        else mapper->SetInput( pd );
+        else mapper->SetInputData( pd );
         vtkActor* actor = GLSLShadersSupported() ? vtkGLSLShaderActor::New() :  vtkActor::New();
         actor->SetMapper( mapper );
         return actor;
@@ -1397,7 +1397,7 @@ bool MolekelMolecule::GenerateGridDataSurface( const std::string& label,
 
     // 3 )use vtkMarchingCubes to generate the iso-surface
     vtkSmartPointer< vtkMarchingCubes > mc( vtkMarchingCubes::New() );
-    mc->SetInput( grid );
+    mc->SetInputData( grid );
     mc->GenerateValues( 1, value, value );
     mc->ComputeNormalsOn();
     mc->Update();
@@ -1986,7 +1986,7 @@ namespace
         t->RotateZ( 90. );
         t->Scale( length, 1, 1 );
         tf->SetTransform( t );
-        tf->SetInput( as->GetOutput() );
+        tf->SetInputData( as->GetOutput() );
         // create vtkGlyphMapper & reserve space: number of matrices = number of atoms
         vtkSmartPointer< vtkOpenGLGlyphMapper > gm( vtkOpenGLGlyphMapper::New() );
         // set input to arrow source
@@ -2027,7 +2027,7 @@ namespace
         t->RotateZ( 90. );
         t->Scale( length, 1, 1 );
         tf->SetTransform( t );
-        tf->SetInput( as->GetOutput() );
+        tf->SetInputData( as->GetOutput() );
         // create vtkGlyphMapper & reserve space: number of matrices = number of atoms
         vtkSmartPointer< vtkOpenGLGlyphMapper > gm( vtkOpenGLGlyphMapper::New() );
         // set input to arrow source
@@ -2942,7 +2942,7 @@ void MolekelMolecule::AddSESMS( double probeRadius,
     }
     if( pd->GetNumberOfCells() == 0 ) return;
     vtkSmartPointer< vtkPolyDataMapper > mapper( vtkPolyDataMapper::New() );
-    mapper->SetInput( pd );
+    mapper->SetInputData( pd );
     mapper->ScalarVisibilityOff();
     sesmsActor_ = vtkActor::New();
     if( !GLSLShadersSupported() ) sesmsActor_ = vtkActor::New();
diff --git a/src/dialogs/ImagePlaneProbeDialog.h b/src/dialogs/ImagePlaneProbeDialog.h
index 489e422..39e539f 100644
--- a/src/dialogs/ImagePlaneProbeDialog.h
+++ b/src/dialogs/ImagePlaneProbeDialog.h
@@ -429,7 +429,7 @@ private:
                 if( !pd->DataGenerationStopped() )
                 {
                     assert( data && "NULL vtkImageData" );
-                    pw_.SetInput( data );
+                    pw_.SetInputData( data );
                     const double* range = data->GetScalarRange();
                     assert( range && "NULL data range" );
                     pw_.SetProp3D( pd->GetProp3D() );
diff --git a/src/utility/vtkMSMSReader.cpp b/src/utility/vtkMSMSReader.cpp
index 0e4b1f5..6d44804 100644
--- a/src/utility/vtkMSMSReader.cpp
+++ b/src/utility/vtkMSMSReader.cpp
@@ -38,9 +38,6 @@
 
 using namespace std;
 
-//------------------------------------------------------------------------------
-vtkCxxRevisionMacro( vtkMSMSReader, " $Revision$ ");
-
 //------------------------------------------------------------------------------
 vtkStandardNewMacro( vtkMSMSReader );
 
diff --git a/src/utility/vtkMSMSReader.h b/src/utility/vtkMSMSReader.h
index 691a09c..35f2100 100644
--- a/src/utility/vtkMSMSReader.h
+++ b/src/utility/vtkMSMSReader.h
@@ -39,7 +39,7 @@ public:
     /// Factory method.
     static vtkMSMSReader *New();
     /// Version info.
-    vtkTypeRevisionMacro( vtkMSMSReader, vtkPolyDataAlgorithm );
+    vtkTypeMacro( vtkMSMSReader, vtkPolyDataAlgorithm );
     /// Overriden method for printing object information.
     void PrintSelf(ostream& os, vtkIndent indent);
     /// Returns file name.
diff --git a/src/utility/vtkOpenGLGlyphMapper.h b/src/utility/vtkOpenGLGlyphMapper.h
index 58ac57a..1889b2c 100644
--- a/src/utility/vtkOpenGLGlyphMapper.h
+++ b/src/utility/vtkOpenGLGlyphMapper.h
@@ -220,7 +220,7 @@ public:
         {
             ::glPushMatrix(); // <-- can be removed specifying starting point and deltas
             ::glMultMatrixd( i->m );
-            vtkOpenGLPolyDataMapper::Draw( ren, a );
+            vtkOpenGLPolyDataMapper::Render( ren, a );
             ::glPopMatrix(); // <-- can be removed specifying starting point and deltas
         }
 
diff --git a/src/utility/vtkSoMapper.h b/src/utility/vtkSoMapper.h
index fe71e9b..5c843d0 100644
--- a/src/utility/vtkSoMapper.h
+++ b/src/utility/vtkSoMapper.h
@@ -49,9 +49,9 @@
 inline SbRotation ComputeSbRotation( const vtkMatrix4x4& vm )
 {
     SbRotation r;
-    SbMatrix m( vm[ 0 ][ 0 ], vm[ 0 ][ 1 ], vm[ 0 ][ 2 ], 0,
-                vm[ 1 ][ 0 ], vm[ 1 ][ 1 ], vm[ 1 ][ 2 ], 0,
-                vm[ 2 ][ 0 ], vm[ 2 ][ 1 ], vm[ 2 ][ 2 ], 0,
+    SbMatrix m( vm.GetElement(0, 0), vm.GetElement(0, 1), vm.GetElement(0, 2), 0,
+                vm.GetElement(1, 0), vm.GetElement(1, 1), vm.GetElement(1, 2), 0,
+                vm.GetElement(2, 0), vm.GetElement(2, 1), vm.GetElement(2, 2), 0,
                 0, 0, 0, 1 );
 
     r.setValue( m );
-- 
2.47.1

openSUSE Build Service is sponsored by