File: vtkCellDistanceSelector.h

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-8.1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 118,972 kB
  • sloc: cpp: 1,442,790; ansic: 113,395; python: 72,383; tcl: 46,998; xml: 8,119; yacc: 4,525; java: 4,239; perl: 3,108; lex: 1,694; sh: 1,093; asm: 154; makefile: 68; objc: 17
file content (128 lines) | stat: -rw-r--r-- 4,656 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*=========================================================================

Program:   Visualization Toolkit
Module:    $RCSfile: vtkCellDistanceSelector,v $

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.

=========================================================================*/
// .NAME vtkCellDistanceSelector - select neighbor cells up to a distance
//
// .SECTION Description
// This filter grows an input selection by iteratively selecting neighbor
// cells (a neighbor cell is a cell that shares a vertex/edge/face), up to
// a given topological distance to the selected neighborhood (number of times
// we add neighbor cells).
// This filter takes a vtkSelection and a vtkCompositeDataSet as inputs.
// It outputs a vtkSelection identifying all the selected cells.
//
// .SECTION Thanks
// This file has been initially developed in the frame of CEA's Love visualization software development <br>
// CEA/DIF - Commissariat a l'Energie Atomique, Centre DAM Ile-De-France <br>
// BP12, F-91297 Arpajon, France. <br>
// Modified and integrated into VTK, Kitware SAS 2012
// Implementation by Thierry Carrard and Philippe Pebay

#ifndef VTK_CELL_DISTANCE_SELECTOR_H
#define VTK_CELL_DISTANCE_SELECTOR_H

#include "vtkFiltersSelectionModule.h" // For export macro
#include "vtkSelectionAlgorithm.h"
#include "vtkSmartPointer.h" // For smart pointers

class vtkDataSet;
class vtkSelection;
class vtkAlgorithmOutput;
class vtkDataArray;

// Description:
// Grows a selection, selecting neighbor cells, up to a user defined topological distance
class VTKFILTERSSELECTION_EXPORT vtkCellDistanceSelector : public vtkSelectionAlgorithm
{
 public:
  vtkTypeMacro(vtkCellDistanceSelector,vtkSelectionAlgorithm);
  virtual void PrintSelf(ostream& os, vtkIndent indent);

  static vtkCellDistanceSelector* New();

  // Description:
  // enumeration values to specify input port types
  enum InputPorts
    {
    INPUT_MESH      = 0,  //!< Port 0 is for input mesh
    INPUT_SELECTION = 1   //!< Port 1 is for input selection
    };

  // Description:
  // A convenience method to set the data object input connection to the producer output
  void SetInputMeshConnection( vtkAlgorithmOutput* in )
  { this->SetInputConnection( INPUT_MESH, in ); }

  // Description:
  // A convenience method to set the input data object
  void SetInputMesh( vtkDataObject* obj )
  { this->SetInputData( INPUT_MESH, obj ); }

  // Description:
  // A convenience method to set the selection input connection to the producer output
  void SetInputSelectionConnection( vtkAlgorithmOutput* in )
  { this->SetInputConnection( INPUT_SELECTION, in ); }

  // Description:
  // A convenience method to set the input selection
  void SetInputSelection( vtkSelection* obj )
  { this->SetInputData( INPUT_SELECTION, obj ); }

  // Description:
  // Tells how far (in term of topological distance) away from seed cells to expand the selection
  vtkSetMacro(Distance,int);
  vtkGetMacro(Distance,int);

  // Description:
  // If set, seed cells passed with SetSeedCells will be included in the final selection
  vtkSetMacro(IncludeSeed,int);
  vtkGetMacro(IncludeSeed,int);
  vtkBooleanMacro(IncludeSeed,int);

  // Description:
  // If set, intermediate cells (between seed cells and the selection boundary) will be included in the final selection
  vtkSetMacro(AddIntermediate,int);
  vtkGetMacro(AddIntermediate,int);
  vtkBooleanMacro(AddIntermediate,int);

 protected:
  vtkCellDistanceSelector ();
  virtual ~vtkCellDistanceSelector ();

  void AddSelectionNode(vtkSelection* output, vtkSmartPointer<vtkDataArray> outIndices, int partNumber, int d);

  virtual int FillInputPortInformation(int port, vtkInformation *info);
  virtual int RequestData(vtkInformation*,vtkInformationVector**,vtkInformationVector*);

  // Description:
  // Tological radius from seed cells to be used to select cells
  // Default: 1
  int Distance;

  // Description:
  // Decide whether seed cells are included in selection
  // Default: 1
  int IncludeSeed;

  // Description:
  // Decide whether at distance between 1 and Distance-1 are included in selection
  // Default: 1
  int AddIntermediate;

 private:
  vtkCellDistanceSelector(const vtkCellDistanceSelector &); // Not implemented
  void operator= (const vtkCellDistanceSelector &); // Not implemented
};

#endif /* VTK_CELL_DISTANCE_SELECTOR_H */