VTK  9.0.1
vtkRenderedGraphRepresentation.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkRenderedGraphRepresentation.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 =========================================================================*/
15 /*-------------------------------------------------------------------------
16  Copyright 2008 Sandia Corporation.
17  Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
18  the U.S. Government retains certain rights in this software.
19 -------------------------------------------------------------------------*/
26 #ifndef vtkRenderedGraphRepresentation_h
27 #define vtkRenderedGraphRepresentation_h
28 
30 #include "vtkSmartPointer.h" // for SP ivars
31 #include "vtkViewsInfovisModule.h" // For export macro
32 
33 class vtkActor;
34 class vtkApplyColors;
35 class vtkApplyIcons;
36 class vtkEdgeCenters;
37 class vtkEdgeLayout;
39 class vtkGraphLayout;
41 class vtkGraphToGlyphs;
42 class vtkGraphToPoints;
43 class vtkGraphToPolyData;
44 class vtkIconGlyphFilter;
45 class vtkInformation;
47 class vtkLookupTable;
50 class vtkPolyData;
51 class vtkPolyDataMapper;
54 class vtkRenderView;
55 class vtkScalarBarWidget;
56 class vtkScalarsToColors;
57 class vtkTextProperty;
58 class vtkTexturedActor2D;
60 class vtkVertexDegree;
61 class vtkView;
62 class vtkViewTheme;
63 
64 class VTKVIEWSINFOVIS_EXPORT vtkRenderedGraphRepresentation : public vtkRenderedRepresentation
65 {
66 public:
69  void PrintSelf(ostream& os, vtkIndent indent) override;
70 
71  // ------------------------------------------------------------------------
72  // Vertex labels
73 
74  virtual void SetVertexLabelArrayName(const char* name);
75  virtual const char* GetVertexLabelArrayName();
76  virtual void SetVertexLabelPriorityArrayName(const char* name);
77  virtual const char* GetVertexLabelPriorityArrayName();
78  virtual void SetVertexLabelVisibility(bool b);
79  virtual bool GetVertexLabelVisibility();
80  vtkBooleanMacro(VertexLabelVisibility, bool);
81  virtual void SetVertexLabelTextProperty(vtkTextProperty* p);
82  virtual vtkTextProperty* GetVertexLabelTextProperty();
83  vtkSetStringMacro(VertexHoverArrayName);
84  vtkGetStringMacro(VertexHoverArrayName);
86 
89  vtkSetMacro(HideVertexLabelsOnInteraction, bool);
90  vtkGetMacro(HideVertexLabelsOnInteraction, bool);
91  vtkBooleanMacro(HideVertexLabelsOnInteraction, bool);
93 
94  // ------------------------------------------------------------------------
95  // Edge labels
96 
97  virtual void SetEdgeLabelArrayName(const char* name);
98  virtual const char* GetEdgeLabelArrayName();
99  virtual void SetEdgeLabelPriorityArrayName(const char* name);
100  virtual const char* GetEdgeLabelPriorityArrayName();
101  virtual void SetEdgeLabelVisibility(bool b);
102  virtual bool GetEdgeLabelVisibility();
103  vtkBooleanMacro(EdgeLabelVisibility, bool);
104  virtual void SetEdgeLabelTextProperty(vtkTextProperty* p);
105  virtual vtkTextProperty* GetEdgeLabelTextProperty();
106  vtkSetStringMacro(EdgeHoverArrayName);
107  vtkGetStringMacro(EdgeHoverArrayName);
109 
112  vtkSetMacro(HideEdgeLabelsOnInteraction, bool);
113  vtkGetMacro(HideEdgeLabelsOnInteraction, bool);
114  vtkBooleanMacro(HideEdgeLabelsOnInteraction, bool);
116 
117  // ------------------------------------------------------------------------
118  // Vertex icons
119 
120  virtual void SetVertexIconArrayName(const char* name);
121  virtual const char* GetVertexIconArrayName();
122  virtual void SetVertexIconPriorityArrayName(const char* name);
123  virtual const char* GetVertexIconPriorityArrayName();
124  virtual void SetVertexIconVisibility(bool b);
125  virtual bool GetVertexIconVisibility();
126  vtkBooleanMacro(VertexIconVisibility, bool);
127  virtual void AddVertexIconType(const char* name, int type);
128  virtual void ClearVertexIconTypes();
129  virtual void SetUseVertexIconTypeMap(bool b);
130  virtual bool GetUseVertexIconTypeMap();
131  vtkBooleanMacro(UseVertexIconTypeMap, bool);
132  virtual void SetVertexIconAlignment(int align);
133  virtual int GetVertexIconAlignment();
134  virtual void SetVertexSelectedIcon(int icon);
135  virtual int GetVertexSelectedIcon();
136  virtual void SetVertexDefaultIcon(int icon);
137  virtual int GetVertexDefaultIcon();
138 
140 
150  virtual void SetVertexIconSelectionMode(int mode);
151  virtual int GetVertexIconSelectionMode();
152  virtual void SetVertexIconSelectionModeToSelectedIcon() { this->SetVertexIconSelectionMode(0); }
153  virtual void SetVertexIconSelectionModeToSelectedOffset() { this->SetVertexIconSelectionMode(1); }
154  virtual void SetVertexIconSelectionModeToAnnotationIcon() { this->SetVertexIconSelectionMode(2); }
156  {
157  this->SetVertexIconSelectionMode(3);
158  }
160 
161  // ------------------------------------------------------------------------
162  // Edge icons
163 
164  virtual void SetEdgeIconArrayName(const char* name);
165  virtual const char* GetEdgeIconArrayName();
166  virtual void SetEdgeIconPriorityArrayName(const char* name);
167  virtual const char* GetEdgeIconPriorityArrayName();
168  virtual void SetEdgeIconVisibility(bool b);
169  virtual bool GetEdgeIconVisibility();
170  vtkBooleanMacro(EdgeIconVisibility, bool);
171  virtual void AddEdgeIconType(const char* name, int type);
172  virtual void ClearEdgeIconTypes();
173  virtual void SetUseEdgeIconTypeMap(bool b);
174  virtual bool GetUseEdgeIconTypeMap();
175  vtkBooleanMacro(UseEdgeIconTypeMap, bool);
176  virtual void SetEdgeIconAlignment(int align);
177  virtual int GetEdgeIconAlignment();
178 
179  // ------------------------------------------------------------------------
180  // Vertex colors
181 
182  virtual void SetColorVerticesByArray(bool b);
183  virtual bool GetColorVerticesByArray();
184  vtkBooleanMacro(ColorVerticesByArray, bool);
185  virtual void SetVertexColorArrayName(const char* name);
186  virtual const char* GetVertexColorArrayName();
187 
188  // ------------------------------------------------------------------------
189  // Edge colors
190 
191  virtual void SetColorEdgesByArray(bool b);
192  virtual bool GetColorEdgesByArray();
193  vtkBooleanMacro(ColorEdgesByArray, bool);
194  virtual void SetEdgeColorArrayName(const char* name);
195  virtual const char* GetEdgeColorArrayName();
196 
197  // ------------------------------------------------------------------------
198  // Enabled vertices
199 
200  virtual void SetEnableVerticesByArray(bool b);
201  virtual bool GetEnableVerticesByArray();
202  vtkBooleanMacro(EnableVerticesByArray, bool);
203  virtual void SetEnabledVerticesArrayName(const char* name);
204  virtual const char* GetEnabledVerticesArrayName();
205 
206  // ------------------------------------------------------------------------
207  // Enabled edges
208 
209  virtual void SetEnableEdgesByArray(bool b);
210  virtual bool GetEnableEdgesByArray();
211  vtkBooleanMacro(EnableEdgesByArray, bool);
212  virtual void SetEnabledEdgesArrayName(const char* name);
213  virtual const char* GetEnabledEdgesArrayName();
214 
215  virtual void SetEdgeVisibility(bool b);
216  virtual bool GetEdgeVisibility();
217  vtkBooleanMacro(EdgeVisibility, bool);
218 
219  void SetEdgeSelection(bool b);
220  bool GetEdgeSelection();
221 
222  // ------------------------------------------------------------------------
223  // Vertex layout strategy
224 
226 
229  virtual void SetLayoutStrategy(vtkGraphLayoutStrategy* strategy);
230  virtual vtkGraphLayoutStrategy* GetLayoutStrategy();
232 
234 
237  virtual void SetLayoutStrategy(const char* name);
238  vtkGetStringMacro(LayoutStrategyName);
240 
244  void SetLayoutStrategyToRandom() { this->SetLayoutStrategy("Random"); }
245  void SetLayoutStrategyToForceDirected() { this->SetLayoutStrategy("Force Directed"); }
246  void SetLayoutStrategyToSimple2D() { this->SetLayoutStrategy("Simple 2D"); }
247  void SetLayoutStrategyToClustering2D() { this->SetLayoutStrategy("Clustering 2D"); }
248  void SetLayoutStrategyToCommunity2D() { this->SetLayoutStrategy("Community 2D"); }
249  void SetLayoutStrategyToFast2D() { this->SetLayoutStrategy("Fast 2D"); }
250  void SetLayoutStrategyToPassThrough() { this->SetLayoutStrategy("Pass Through"); }
251  void SetLayoutStrategyToCircular() { this->SetLayoutStrategy("Circular"); }
252  void SetLayoutStrategyToTree() { this->SetLayoutStrategy("Tree"); }
253  void SetLayoutStrategyToCosmicTree() { this->SetLayoutStrategy("Cosmic Tree"); }
254  void SetLayoutStrategyToCone() { this->SetLayoutStrategy("Cone"); }
255  void SetLayoutStrategyToSpanTree() { this->SetLayoutStrategy("Span Tree"); }
256 
261  virtual void SetLayoutStrategyToAssignCoordinates(
262  const char* xarr, const char* yarr = nullptr, const char* zarr = nullptr);
263 
274  virtual void SetLayoutStrategyToTree(
275  bool radial, double angle = 90, double leafSpacing = 0.9, double logSpacing = 1.0);
276 
287  virtual void SetLayoutStrategyToCosmicTree(const char* nodeSizeArrayName,
288  bool sizeLeafNodesOnly = true, int layoutDepth = 0, vtkIdType layoutRoot = -1);
289 
290  // ------------------------------------------------------------------------
291  // Edge layout strategy
292 
294 
297  virtual void SetEdgeLayoutStrategy(vtkEdgeLayoutStrategy* strategy);
298  virtual vtkEdgeLayoutStrategy* GetEdgeLayoutStrategy();
299  void SetEdgeLayoutStrategyToArcParallel() { this->SetEdgeLayoutStrategy("Arc Parallel"); }
300  void SetEdgeLayoutStrategyToPassThrough() { this->SetEdgeLayoutStrategy("Pass Through"); }
302 
307  virtual void SetEdgeLayoutStrategyToGeo(double explodeFactor = 0.2);
308 
310 
313  virtual void SetEdgeLayoutStrategy(const char* name);
314  vtkGetStringMacro(EdgeLayoutStrategyName);
316 
317  // ------------------------------------------------------------------------
318  // Miscellaneous
319 
323  void ApplyViewTheme(vtkViewTheme* theme) override;
324 
326 
329  virtual void SetGlyphType(int type);
330  virtual int GetGlyphType();
332 
334 
337  virtual void SetScaling(bool b);
338  virtual bool GetScaling();
339  vtkBooleanMacro(Scaling, bool);
341 
343 
346  virtual void SetScalingArrayName(const char* name);
347  virtual const char* GetScalingArrayName();
349 
351 
354  virtual void SetVertexScalarBarVisibility(bool b);
355  virtual bool GetVertexScalarBarVisibility();
356  virtual void SetEdgeScalarBarVisibility(bool b);
357  virtual bool GetEdgeScalarBarVisibility();
359 
361 
364  virtual vtkScalarBarWidget* GetVertexScalarBar();
365  virtual vtkScalarBarWidget* GetEdgeScalarBar();
367 
371  virtual bool IsLayoutComplete();
372 
376  virtual void UpdateLayout();
377 
381  void ComputeSelectedGraphBounds(double bounds[6]);
382 
383 protected:
385  ~vtkRenderedGraphRepresentation() override;
386 
388 
391  bool AddToView(vtkView* view) override;
392  bool RemoveFromView(vtkView* view) override;
394 
395  void PrepareForRendering(vtkRenderView* view) override;
396 
397  vtkSelection* ConvertSelection(vtkView* view, vtkSelection* sel) override;
398 
400 
404  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
405  vtkInformationVector* outputVector) override;
406 
408 
440 
443 
444  vtkSetStringMacro(VertexColorArrayNameInternal);
445  vtkGetStringMacro(VertexColorArrayNameInternal);
447 
448  vtkSetStringMacro(EdgeColorArrayNameInternal);
449  vtkGetStringMacro(EdgeColorArrayNameInternal);
451 
452  vtkSetStringMacro(ScalingArrayNameInternal);
453  vtkGetStringMacro(ScalingArrayNameInternal);
455 
456  vtkSetStringMacro(LayoutStrategyName);
457  char* LayoutStrategyName;
458  vtkSetStringMacro(EdgeLayoutStrategyName);
462 
464 
465 private:
467  void operator=(const vtkRenderedGraphRepresentation&) = delete;
468 };
469 
470 #endif
virtual void ApplyViewTheme(vtkViewTheme *vtkNotUsed(theme))
Apply a theme to this representation.
vtkSmartPointer< vtkPolyDataMapper > OutlineMapper
Internal filter classes.
vtkSmartPointer< vtkGraphToPoints > VertexIconPoints
Internal filter classes.
virtual void SetVertexIconSelectionModeToIgnoreSelection()
Set the mode to one of.
virtual vtkSelection * ConvertSelection(vtkView *view, vtkSelection *selection)
Convert the selection to a type appropriate for sharing with other representations through vtkAnnotat...
virtual void SetVertexIconSelectionModeToSelectedIcon()
Set the mode to one of.
vtkSmartPointer< vtkGraphToPolyData > GraphToPoly
Internal filter classes.
vtkSmartPointer< vtkScalarBarWidget > VertexScalarBar
Internal filter classes.
void SetEdgeLayoutStrategyToPassThrough()
Set/get the graph layout strategy.
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:45
actor that draws 2D data with texture support
vtkSmartPointer< vtkApplyIcons > ApplyVertexIcons
Internal filter classes.
vtkSmartPointer< vtkPointSetToLabelHierarchy > VertexLabelHierarchy
Internal filter classes.
Store vtkAlgorithm input/output information.
Filter that generates a polydata consisting of quads with texture coordinates referring to a set of i...
vtkSmartPointer< vtkGraphToGlyphs > VertexGlyph
Internal filter classes.
vtkSmartPointer< vtkActor > VertexActor
Internal filter classes.
map scalar values into colors via a lookup table
int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *) override
Subclasses should override this to connect inputs to the internal pipeline as necessary.
vtkSmartPointer< vtkIconGlyphFilter > VertexIconGlyph
Internal filter classes.
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:57
Adds an attribute array with the degree of each vertex.
vtkSmartPointer< vtkScalarBarWidget > EdgeScalarBar
Internal filter classes.
int vtkIdType
Definition: vtkType.h:338
virtual bool AddToView(vtkView *vtkNotUsed(view))
Adds the representation to the view.
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:84
vtkSmartPointer< vtkApplyColors > ApplyColors
Internal filter classes.
static vtkRenderedRepresentation * New()
abstract superclass for all graph layout strategies
vtkSmartPointer< vtkPolyDataMapper > EdgeMapper
Internal filter classes.
vtkSmartPointer< vtkVertexDegree > VertexDegree
Internal filter classes.
convert a vtkGraph to vtkPolyData
Superclass for mapping scalar values to colors.
vtkSmartPointer< vtkEdgeLayout > EdgeLayout
Internal filter classes.
generate points at center of edges
Sets theme colors for a graphical view.
Definition: vtkViewTheme.h:42
vtkSmartPointer< vtkTexturedActor2D > VertexIconActor
Internal filter classes.
vtkSmartPointer< vtkTransformCoordinateSystems > VertexIconTransform
Internal filter classes.
The superclass for all views.
Definition: vtkView.h:63
a simple class to control print indentation
Definition: vtkIndent.h:33
vtkSmartPointer< vtkPointSetToLabelHierarchy > EdgeLabelHierarchy
Internal filter classes.
vtkSmartPointer< vtkGraphLayout > Layout
Internal filter classes.
virtual bool RemoveFromView(vtkView *vtkNotUsed(view))
Removes the representation to the view.
layout a graph in 2 or 3 dimensions
virtual void PrepareForRendering(vtkRenderView *view)
The view will call this method before every render.
vtkSmartPointer< vtkPolyData > EmptyPolyData
Internal filter classes.
void SetLayoutStrategyToRandom()
Set predefined layout strategies.
Perturbs vertices that are coincident.
represent text properties.
transform points into different coordinate systems
build a label hierarchy for a graph or point set.
vtkSmartPointer< vtkRemoveHiddenData > RemoveHiddenGraph
Internal filter classes.
map vtkPolyData to graphics primitives
vtkSmartPointer< vtkActor > OutlineActor
Internal filter classes.
vtkSmartPointer< vtkActor > EdgeActor
Internal filter classes.
vtkSmartPointer< vtkGraphToPoints > GraphToPoints
Internal filter classes.
A view containing a renderer.
Definition: vtkRenderView.h:64
abstract superclass for all edge layout strategies
vtkSmartPointer< vtkEdgeCenters > EdgeCenters
Internal filter classes.
layout graph edges
Definition: vtkEdgeLayout.h:38
convert a vtkGraph a set of points.
Store zero or more vtkInformation instances.
apply colors to a data set.
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkPolyDataMapper > VertexMapper
Internal filter classes.
vtkSmartPointer< vtkGraphToGlyphs > OutlineGlyph
Internal filter classes.
vtkSmartPointer< vtkPolyDataMapper2D > VertexIconMapper
Internal filter classes.
virtual void SetVertexIconSelectionModeToSelectedOffset()
Set the mode to one of.
create glyphs for graph vertices
virtual vtkUnicodeString GetHoverTextInternal(vtkSelection *)
Subclasses may override this method to generate the hover text.
virtual void SetVertexIconSelectionModeToAnnotationIcon()
Set the mode to one of.
apply icons to a data set.
Definition: vtkApplyIcons.h:70
vtkSmartPointer< vtkPerturbCoincidentVertices > Coincident
Internal filter classes.
draw vtkPolyData onto the image plane
String class that stores Unicode text.
2D widget for manipulating a scalar bar
Removes the rows/edges/vertices of input data flagged by ann.
void SetEdgeLayoutStrategyToArcParallel()
Set/get the graph layout strategy.