iMSTK
Interactive Medical Simulation Toolkit
imstkVTKLineMeshRenderDelegate.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 vtkCellArray;
12 class vtkDataArray;
13 class vtkDoubleArray;
14 class vtkPolyData;
15 
16 namespace imstk
17 {
18 class LineMesh;
19 template<typename T, int N> class VecDataArray;
20 class AbstractDataArray;
21 
28 {
29 public:
31  ~VTKLineMeshRenderDelegate() override = default;
32 
36  void processEvents() override;
37 
38 // Callbacks for modifications, when an element changes the user or API must post the modified event
39 // to inform that this happened, if the actual buffer on the geometry is swapped then geometry
40 // modified would instead be called
41 protected:
42  void init() override;
43 
47  void vertexDataModified(Event* e);
48  void indexDataModified(Event* e);
49  void vertexScalarsModified(Event* e);
50  void cellScalarsModified(Event* e);
51 
55  void geometryModified(Event* e);
56 
57  void setVertexBuffer(std::shared_ptr<VecDataArray<double, 3>> vertices);
58  void setIndexBuffer(std::shared_ptr<VecDataArray<int, 2>> indices);
59  void setVertexScalarBuffer(std::shared_ptr<AbstractDataArray> scalars);
60  void setCellScalarBuffer(std::shared_ptr<AbstractDataArray> scalars);
61 
62  std::shared_ptr<LineMesh> m_geometry;
63  std::shared_ptr<VecDataArray<double, 3>> m_vertices;
64  std::shared_ptr<VecDataArray<int, 2>> m_indices;
65  std::shared_ptr<AbstractDataArray> m_vertexScalars;
66  std::shared_ptr<AbstractDataArray> m_cellScalars;
67 
68  vtkSmartPointer<vtkPolyData> m_polydata;
69 
70  vtkSmartPointer<vtkDoubleArray> m_mappedVertexArray;
71  vtkSmartPointer<vtkDataArray> m_mappedVertexScalarArray;
72  vtkSmartPointer<vtkDataArray> m_mappedCellScalarArray;
73  vtkSmartPointer<vtkCellArray> m_cellArray;
74 };
75 } // namespace imstk
Delegates rendering of LineMesh to VTK from VisualModel.
void geometryModified(Event *e)
Callback when geometry changes.
Base class for events which contain a type, priority, and data priority defaults to 0 and uses a grea...
Compound Geometry.
vtkSmartPointer< vtkDataArray > m_mappedVertexScalarArray
Mapped array of scalars.
vtkSmartPointer< vtkDataArray > m_mappedCellScalarArray
Mapped array of scalars.
vtkSmartPointer< vtkCellArray > m_cellArray
Array of cells.
Abstract base class for PolyData-based RenderDelegates.
vtkSmartPointer< vtkDoubleArray > m_mappedVertexArray
Mapped array of vertices.
void vertexDataModified(Event *e)
Callback for when vertex values are modified.