iMSTK
Interactive Medical Simulation Toolkit
imstkVTKPointSetRenderDelegate.h
1 /*
2 ** This file is part of the Interactive Medical Simulation Toolkit (iMSTK)
3 ** iMSTK is distributed under the Apache License, Version 2.0.
4 ** See accompanying NOTICE for details.
5 */
6 
7 #pragma once
8 
9 #include "imstkVTKPolyDataRenderDelegate.h"
10 
11 class vtkDataArray;
12 class vtkDoubleArray;
13 class vtkPolyData;
14 
15 namespace imstk
16 {
17 class AbstractDataArray;
18 class PointSet;
19 template<typename T, int N> class VecDataArray;
20 
27 {
28 public:
30  ~VTKPointSetRenderDelegate() override = default;
31 
35  void processEvents() override;
36 
37 // Callbacks for modifications, when an element changes the user or API must post the modified event
38 // to inform that this happened, if the actual buffer on the geometry is swapped then geometry
39 // modified would instead be called
40 protected:
41  void init() override;
42 
46  void vertexDataModified(Event* e);
47  void vertexScalarsModified(Event* e);
48 
52  void geometryModified(Event* e);
53 
54  void setVertexBuffer(std::shared_ptr<VecDataArray<double, 3>> vertices);
55  void setVertexScalarBuffer(std::shared_ptr<AbstractDataArray> scalars);
56 
57  std::shared_ptr<PointSet> m_geometry;
58  std::shared_ptr<VecDataArray<double, 3>> m_vertices;
59  std::shared_ptr<AbstractDataArray> m_vertexScalars;
60 
61  vtkSmartPointer<vtkPolyData> m_polydata;
62 
63  vtkSmartPointer<vtkDoubleArray> m_mappedVertexArray;
64  vtkSmartPointer<vtkDataArray> m_mappedVertexScalarArray;
65 };
66 } // namespace imstk
void geometryModified(Event *e)
Callback for when geometry changes.
vtkSmartPointer< vtkDoubleArray > m_mappedVertexArray
Mapped array of vertices.
Base class for events which contain a type, priority, and data priority defaults to 0 and uses a grea...
Compound Geometry.
void vertexDataModified(Event *e)
Callback for when vertex data changes.
Delegates rendering of PointSet to VTK from VisualModel.
Abstract base class for PolyData-based RenderDelegates.
void processEvents() override
Update polydata source based on the mesh geometry.
vtkSmartPointer< vtkDataArray > m_mappedVertexScalarArray
Mapped array of scalars.