fix segfault

This commit is contained in:
AndreaRigoni
2026-03-17 15:47:27 +00:00
parent e6e0bccffb
commit bc437a3913
2 changed files with 19 additions and 29 deletions

View File

@@ -1,36 +1,29 @@
#include "vtkViewport.h"
#include <vtkAxes.h>
#include <vtkAxesActor.h>
#include <vtkCamera.h>
#include <vtkCameraOrientationWidget.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkObjectFactory.h>
#include <vtkPlaneSource.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkNew.h>
#include <vtkTextProperty.h>
#include <vtkPolyDataMapper.h>
#include <vtkNamedColors.h>
#include <vtkProperty.h>
#include <vtkCallbackCommand.h>
#include <vtkMath.h>
#include <vtkActor.h>
#include <cmath>
namespace uLib {
namespace Vtk {
Viewport::Viewport()
: m_Renderer(vtkRenderer::New())
, m_Annotation(vtkCornerAnnotation::New())
, m_Marker(vtkOrientationMarkerWidget::New())
: m_Renderer(vtkSmartPointer<vtkRenderer>::New())
, m_Annotation(vtkSmartPointer<vtkCornerAnnotation>::New())
, m_Marker(vtkSmartPointer<vtkOrientationMarkerWidget>::New())
, m_CameraWidget(nullptr)
, m_Colors(vtkNamedColors::New())
, m_Colors(vtkSmartPointer<vtkNamedColors>::New())
{
}
@@ -38,14 +31,7 @@ Viewport::~Viewport()
{
if (m_Renderer) {
m_Renderer->RemoveAllViewProps();
m_Renderer->Clear();
}
if (m_Annotation) m_Annotation->Delete();
if (m_Marker) m_Marker->Delete();
if (m_CameraWidget) m_CameraWidget->Delete();
if (m_Renderer) m_Renderer->Delete();
if (m_Colors) m_Colors->Delete();
}
void Viewport::SetupPipeline(vtkRenderWindowInteractor* iren)
@@ -112,7 +98,7 @@ void Viewport::SetupPipeline(vtkRenderWindowInteractor* iren)
// Camera-orientation widget (VTK >= 9)
#if VTK_MAJOR_VERSION >= 9
m_CameraWidget = vtkCameraOrientationWidget::New();
m_CameraWidget = vtkSmartPointer<vtkCameraOrientationWidget>::New();
m_CameraWidget->SetParentRenderer(m_Renderer);
m_CameraWidget->SetInteractor(iren);
m_CameraWidget->On();

View File

@@ -7,16 +7,20 @@
#include <vtkRenderer.h>
#include <vtkSmartPointer.h>
#include <vtkVersion.h>
#include <vtkRenderer.h>
#include <vtkCornerAnnotation.h>
#include <vtkOrientationMarkerWidget.h>
#include <vtkCameraOrientationWidget.h>
#include <vtkNamedColors.h>
#include <vtkAxes.h>
#include <vtkAxesActor.h>
#include <vtkPlaneSource.h>
#include <vtkActor.h>
class vtkAxes;
class vtkProp;
class vtk3DWidget;
class vtkRenderWindow;
class vtkRenderWindowInteractor;
class vtkCameraOrientationWidget;
class vtkPlaneSource;
class vtkActor;
class vtkNamedColors;
class vtkCamera;
namespace uLib {
@@ -57,17 +61,17 @@ protected:
void UpdateGrid();
vtkRenderer* m_Renderer;
vtkCornerAnnotation* m_Annotation;
vtkOrientationMarkerWidget* m_Marker;
vtkCameraOrientationWidget* m_CameraWidget;
vtkSmartPointer<vtkRenderer> m_Renderer;
vtkSmartPointer<vtkCornerAnnotation> m_Annotation;
vtkSmartPointer<vtkOrientationMarkerWidget> m_Marker;
vtkSmartPointer<vtkCameraOrientationWidget> m_CameraWidget;
vtkSmartPointer<vtkPlaneSource> m_GridSource;
vtkSmartPointer<vtkActor> m_GridActor;
vtkSmartPointer<vtkAxes> m_OriginAxes;
vtkSmartPointer<vtkActor> m_OriginAxesActor;
vtkNamedColors* m_Colors;
vtkSmartPointer<vtkNamedColors> m_Colors;
};
} // namespace Vtk