ParaView
vtkPlotEdges.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkPlotEdges.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
20 #ifndef vtkPlotEdges_h
21 #define vtkPlotEdges_h
22 
23 #include "vtkMultiBlockDataSetAlgorithm.h"
24 #include "vtkPVVTKExtensionsDefaultModule.h" //needed for exports
25 
26 class Node;
27 class Segment;
28 class vtkPolyData;
29 class vtkCollection;
30 class vtkMultiBlockDataSet;
31 
32 class VTKPVVTKEXTENSIONSDEFAULT_EXPORT vtkPlotEdges : public vtkMultiBlockDataSetAlgorithm
33 {
34 public:
35  vtkTypeMacro(vtkPlotEdges, vtkMultiBlockDataSetAlgorithm);
36  void PrintSelf(ostream& os, vtkIndent indent);
37 
38  static vtkPlotEdges* New();
39 
40 protected:
41  vtkPlotEdges();
42  virtual ~vtkPlotEdges();
43 
44  virtual int FillInputPortInformation(int port, vtkInformation* info);
45  // Usual data generation method
46  int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*);
47 
48  void Process(vtkPolyData* input, vtkMultiBlockDataSet* output);
49  static void ReducePolyData(vtkPolyData* polyData, vtkPolyData* output);
50 
51  void ExtractSegments(vtkPolyData* polyData, vtkCollection* segments, vtkCollection* nodes);
52  static void ExtractSegmentsFromExtremity(vtkPolyData* polyData, vtkCollection* segments,
53  vtkCollection* nodes, char* visitedCells, vtkIdType cellId, vtkIdType pointId, Node* node);
54  static void ConnectSegmentsWithNodes(vtkCollection* segments, vtkCollection* nodes);
55  static void SaveToMultiBlockDataSet(vtkCollection* segments, vtkMultiBlockDataSet* output);
56  static void MergeSegments(vtkCollection* segments, vtkCollection* nodes, Node* node,
57  Segment* segmentA, Segment* segmentB);
58  static Node* GetNodeAtPoint(vtkCollection* nodes, vtkIdType pointId);
59  static void PrintSegments(vtkCollection* segments);
60 
61 private:
62  vtkPlotEdges(const vtkPlotEdges&) VTK_DELETE_FUNCTION;
63  void operator=(const vtkPlotEdges&) VTK_DELETE_FUNCTION;
64 };
65 
66 #endif