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