/*========================================================================= Program: Visualization Toolkit Module: vtkPolyDataMapperNode.h Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkPolyDataMapperNode * @brief vtkViewNode specialized for vtkPolyDataMappers * * State storage and graph traversal for vtkPolyDataMapper/PolyDataMapper and Property * Made a choice to merge PolyDataMapper, PolyDataMapper and property together. If there * is a compelling reason to separate them we can. */ #ifndef vtkPolyDataMapperNode_h #define vtkPolyDataMapperNode_h #include "vtkMapperNode.h" #include "vtkRenderingSceneGraphModule.h" // For export macro #include //for results class vtkActor; class vtkPolyDataMapper; class vtkPolyData; class VTKRENDERINGSCENEGRAPH_EXPORT vtkPolyDataMapperNode : public vtkMapperNode { public: static vtkPolyDataMapperNode* New(); vtkTypeMacro(vtkPolyDataMapperNode, vtkMapperNode); void PrintSelf(ostream& os, vtkIndent indent) override; typedef struct { std::vector vertex_index; std::vector vertex_reverse; std::vector line_index; std::vector line_reverse; std::vector triangle_index; std::vector triangle_reverse; std::vector strip_index; std::vector strip_reverse; } vtkPDConnectivity; protected: vtkPolyDataMapperNode(); ~vtkPolyDataMapperNode() override; // Utilities for children /** * Makes a cleaned up version of the polydata's geometry in which NaN are removed * (substituted with neighbor) and the PolyDataMapper's transformation matrix is applied. */ static void TransformPoints(vtkActor* act, vtkPolyData* poly, std::vector& vertices); /** * Homogenizes the entire polydata using internal CreateXIndexBuffer functions. * They flatten the input polydata's Points, Lines, Polys, and Strips contents into * the output arrays. The output "index" arrays contain indices into the Points. The * output "reverse" array contains indices into the original CellArray. */ static void MakeConnectivity(vtkPolyData* poly, int representation, vtkPDConnectivity& conn); private: vtkPolyDataMapperNode(const vtkPolyDataMapperNode&) = delete; void operator=(const vtkPolyDataMapperNode&) = delete; }; #endif