- Port to Qt5, OpenBabel3, VTK 9.x, add: * 0001-Modernize-Fix-CMakeLists.patch * 0002-Port-to-Qt5.patch * 0003-Port-VTK-code-to-current-version.patch * 0004-Port-to-OpenBabel-3.patch - Drop vtk.diff OBS-URL: https://build.opensuse.org/request/show/1233402 OBS-URL: https://build.opensuse.org/package/show/science/molekel?expand=0&rev=10
373 lines
15 KiB
Diff
373 lines
15 KiB
Diff
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
|
|
|