File: vtkGraphAnnotationLayersFilter.h

package info (click to toggle)
vtk6 6.3.0%2Bdfsg2-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 118,880 kB
  • sloc: cpp: 1,442,792; 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: 103; objc: 17
file content (123 lines) | stat: -rw-r--r-- 4,258 bytes parent folder | download | duplicates (5)
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
/*=========================================================================

 Program:   Visualization Toolkit
 Module:    vtkGraphAnnotationLayersFilter.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.

 =========================================================================*/

// .NAME vtkGraphAnnotationLayersFilter - Produce filled convex hulls around
// subsets of vertices in a vtkGraph.
//
// .SECTION Description
// Produces a vtkPolyData comprised of filled polygons of the convex hull
// of a cluster. Alternatively, you may choose to output bounding rectangles.
// Clusters with fewer than three vertices are artificially expanded to
// ensure visibility (see vtkConvexHull2D).
//
// The first input is a vtkGraph with points, possibly set by
// passing the graph through vtkGraphLayout (z-values are ignored). The second
// input is a vtkAnnotationsLayer containing vtkSelectionNodeS of vertex
// ids (the 'clusters' output of vtkTulipReader for example).
//
// Setting OutlineOn() additionally produces outlines of the clusters on
// output port 1.
//
// Three arrays are added to the cells of the output: "Hull id"; "Hull name";
// and "Hull color".
//
// Note: This filter operates in the x,y-plane and as such works best with an
// interactor style that does not allow camera rotation, such as
// vtkInteractorStyleRubberBand2D.
//
// .SECTION See also
// vtkContext2D
//
// .SECTION Thanks
// Thanks to Colin Myers, University of Leeds for providing this implementation.

#ifndef vtkGraphAnnotationLayersFilter_h
#define vtkGraphAnnotationLayersFilter_h

#include "vtkRenderingAnnotationModule.h" // For export macro
#include "vtkPolyDataAlgorithm.h"
#include "vtkSmartPointer.h" // needed for ivars

class vtkAppendPolyData;
class vtkConvexHull2D;
class vtkRenderer;


class VTKRENDERINGANNOTATION_EXPORT vtkGraphAnnotationLayersFilter: public vtkPolyDataAlgorithm
{
public:
  static vtkGraphAnnotationLayersFilter *New();
  vtkTypeMacro(vtkGraphAnnotationLayersFilter, vtkPolyDataAlgorithm);
  void PrintSelf(ostream& os, vtkIndent indent);

  // Description:
  // Produce outlines of the hulls on output port 1.
  void OutlineOn();
  void OutlineOff();
  void SetOutline(bool b);

  // Description:
  // Scale each hull by the amount specified. Defaults to 1.0.
  void SetScaleFactor(double scale);

  // Description:
  // Set the shape of the hulls to bounding rectangle.
  void SetHullShapeToBoundingRectangle();

  // Description:
  // Set the shape of the hulls to convex hull. Default.
  void SetHullShapeToConvexHull();

  // Description:
  // Set the minimum x,y-dimensions of each hull in world coordinates. Defaults
  // to 1.0. Set to 0.0 to disable.
  void SetMinHullSizeInWorld(double size);

  // Description:
  // Set the minimum x,y-dimensions of each hull in pixels. You must also set a
  // vtkRenderer. Defaults to 1. Set to 0 to disable.
  void SetMinHullSizeInDisplay(int size);

  // Description:
  // Renderer needed for MinHullSizeInDisplay calculation. Not reference counted.
  void SetRenderer(vtkRenderer* renderer);

  // Description:
  // The modified time of this filter.
  virtual unsigned long GetMTime();

protected:
  vtkGraphAnnotationLayersFilter();
  ~vtkGraphAnnotationLayersFilter();

  // Description:
  // This is called by the superclass. This is the method you should override.
  int RequestData(vtkInformation *, vtkInformationVector **,
    vtkInformationVector *);

  // Description:
  // Set the input to vtkGraph and vtkAnnotationLayers.
  int FillInputPortInformation(int port, vtkInformation* info);

private:
  vtkGraphAnnotationLayersFilter(const vtkGraphAnnotationLayersFilter&); // Not implemented.
  void operator=(const vtkGraphAnnotationLayersFilter&); // Not implemented.

  vtkSmartPointer<vtkAppendPolyData> HullAppend;
  vtkSmartPointer<vtkAppendPolyData> OutlineAppend;
  vtkSmartPointer<vtkConvexHull2D> ConvexHullFilter;
};

#endif // vtkGraphAnnotationLayersFilter_h