VTK  9.1.0
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);
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);
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);
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);
221 
222  // ------------------------------------------------------------------------
223  // Vertex layout strategy
224 
226 
229  virtual void SetLayoutStrategy(vtkGraphLayoutStrategy* strategy);
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 
262  const char* xarr, const char* yarr = nullptr, const char* zarr = nullptr);
263 
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 
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);
356  virtual void SetEdgeScalarBarVisibility(bool b);
359 
361 
367 
371  virtual bool IsLayoutComplete();
372 
376  virtual void UpdateLayout();
377 
381  void ComputeSelectedGraphBounds(double bounds[6]);
382 
383 protected:
386 
388 
391  bool AddToView(vtkView* view) override;
392  bool RemoveFromView(vtkView* view) override;
394 
395  void PrepareForRendering(vtkRenderView* view) override;
396 
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);
458  vtkSetStringMacro(EdgeLayoutStrategyName);
462 
464 
465 private:
467  void operator=(const vtkRenderedGraphRepresentation&) = delete;
468 };
469 
470 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:46
apply colors to a data set.
apply icons to a data set.
Definition: vtkApplyIcons.h:71
generate points at center of edges
abstract superclass for all edge layout strategies
layout graph edges
Definition: vtkEdgeLayout.h:39
abstract superclass for all graph layout strategies
layout a graph in 2 or 3 dimensions
create glyphs for graph vertices
convert a vtkGraph a set of points.
convert a vtkGraph to vtkPolyData
Filter that generates a polydata consisting of quads with texture coordinates referring to a set of i...
a simple class to control print indentation
Definition: vtkIndent.h:34
Store zero or more vtkInformation instances.
Store vtkAlgorithm input/output information.
map scalar values into colors via a lookup table
Perturbs vertices that are coincident.
build a label hierarchy for a graph or point set.
draw vtkPolyData onto the image plane
map vtkPolyData to graphics primitives
concrete dataset represents vertices, lines, polygons, and triangle strips
Definition: vtkPolyData.h:86
Removes the rows/edges/vertices of input data flagged by ann.
A view containing a renderer.
Definition: vtkRenderView.h:65
bool AddToView(vtkView *view) override
Called by the view to add/remove this representation.
virtual void SetEdgeIconVisibility(bool b)
virtual void SetEnabledEdgesArrayName(const char *name)
virtual void SetEdgeLayoutStrategy(vtkEdgeLayoutStrategy *strategy)
Set/get the graph layout strategy.
virtual void SetLayoutStrategyToTree(bool radial, double angle=90, double leafSpacing=0.9, double logSpacing=1.0)
Set the layout strategy to a tree layout.
virtual const char * GetVertexLabelArrayName()
virtual bool GetScaling()
Set whether to scale vertex glyphs.
virtual void ClearVertexIconTypes()
vtkSmartPointer< vtkActor > OutlineActor
Internal filter classes.
void PrepareForRendering(vtkRenderView *view) override
The view will call this method before every render.
vtkSmartPointer< vtkApplyColors > ApplyColors
Internal filter classes.
virtual void SetScaling(bool b)
Set whether to scale vertex glyphs.
virtual void SetColorEdgesByArray(bool b)
virtual bool GetColorEdgesByArray()
virtual const char * GetVertexColorArrayName()
virtual void SetLayoutStrategyToCosmicTree(const char *nodeSizeArrayName, bool sizeLeafNodesOnly=true, int layoutDepth=0, vtkIdType layoutRoot=-1)
Set the layout strategy to a cosmic tree layout.
virtual void SetLayoutStrategy(const char *name)
Get/set the layout strategy by name.
virtual void SetEdgeLayoutStrategy(const char *name)
Set the edge layout strategy by name.
vtkSmartPointer< vtkActor > VertexActor
Internal filter classes.
virtual void SetVertexLabelTextProperty(vtkTextProperty *p)
virtual vtkTextProperty * GetEdgeLabelTextProperty()
void ApplyViewTheme(vtkViewTheme *theme) override
Apply a theme to this representation.
vtkSmartPointer< vtkTexturedActor2D > VertexIconActor
Internal filter classes.
virtual int GetVertexIconSelectionMode()
Set the mode to one of.
vtkSmartPointer< vtkTransformCoordinateSystems > VertexIconTransform
Internal filter classes.
virtual bool GetColorVerticesByArray()
virtual void SetEnableEdgesByArray(bool b)
virtual void SetVertexLabelArrayName(const char *name)
virtual void SetEdgeVisibility(bool b)
std::string GetHoverStringInternal(vtkSelection *sel) override
Subclasses may override this method to generate the hover text.
vtkSmartPointer< vtkGraphLayout > Layout
Internal filter classes.
virtual const char * GetEdgeIconPriorityArrayName()
virtual bool GetEdgeLabelVisibility()
virtual const char * GetEnabledEdgesArrayName()
vtkSmartPointer< vtkScalarBarWidget > EdgeScalarBar
Internal filter classes.
virtual int GetGlyphType()
Set the graph vertex glyph type.
vtkSmartPointer< vtkGraphToPoints > VertexIconPoints
Internal filter classes.
virtual bool GetEnableEdgesByArray()
vtkSmartPointer< vtkPointSetToLabelHierarchy > EdgeLabelHierarchy
Internal filter classes.
virtual bool GetEdgeIconVisibility()
virtual void SetVertexIconSelectionMode(int mode)
Set the mode to one of.
virtual bool GetEnableVerticesByArray()
virtual int GetVertexIconAlignment()
vtkSmartPointer< vtkApplyIcons > ApplyVertexIcons
Internal filter classes.
virtual void SetEnabledVerticesArrayName(const char *name)
virtual void AddEdgeIconType(const char *name, int type)
virtual void SetVertexDefaultIcon(int icon)
virtual vtkTextProperty * GetVertexLabelTextProperty()
virtual void AddVertexIconType(const char *name, int type)
vtkSmartPointer< vtkPolyData > EmptyPolyData
Internal filter classes.
vtkSmartPointer< vtkPolyDataMapper2D > VertexIconMapper
Internal filter classes.
virtual const char * GetEdgeIconArrayName()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual const char * GetEnabledVerticesArrayName()
vtkSmartPointer< vtkEdgeCenters > EdgeCenters
Internal filter classes.
virtual void UpdateLayout()
Performs another iteration on the graph layout.
vtkSmartPointer< vtkPointSetToLabelHierarchy > VertexLabelHierarchy
Internal filter classes.
virtual const char * GetEdgeLabelPriorityArrayName()
virtual vtkScalarBarWidget * GetVertexScalarBar()
Obtain the scalar bar widget used to draw a legend for the vertices/edges.
virtual void SetVertexIconSelectionModeToAnnotationIcon()
Set the mode to one of.
virtual void SetEdgeLabelTextProperty(vtkTextProperty *p)
virtual void SetScalingArrayName(const char *name)
Set the glyph scaling array name.
void SetEdgeLayoutStrategyToPassThrough()
Set/get the graph layout strategy.
virtual void SetVertexScalarBarVisibility(bool b)
Vertex/edge scalar bar visibility.
void SetLayoutStrategyToRandom()
Set predefined layout strategies.
virtual void SetLayoutStrategy(vtkGraphLayoutStrategy *strategy)
Set/get the graph layout strategy.
virtual const char * GetVertexIconArrayName()
virtual void SetVertexIconSelectionModeToIgnoreSelection()
Set the mode to one of.
virtual bool IsLayoutComplete()
Whether the current graph layout is complete.
virtual const char * GetScalingArrayName()
Set the glyph scaling array name.
virtual void SetEdgeIconAlignment(int align)
virtual void SetVertexIconVisibility(bool b)
virtual void SetVertexSelectedIcon(int icon)
vtkSmartPointer< vtkEdgeLayout > EdgeLayout
Internal filter classes.
bool RemoveFromView(vtkView *view) override
Called by the view to add/remove this representation.
virtual void SetEdgeIconArrayName(const char *name)
virtual const char * GetVertexIconPriorityArrayName()
static vtkRenderedGraphRepresentation * New()
virtual void SetVertexIconSelectionModeToSelectedOffset()
Set the mode to one of.
virtual void SetEdgeColorArrayName(const char *name)
virtual void SetColorVerticesByArray(bool b)
virtual const char * GetVertexLabelPriorityArrayName()
virtual vtkScalarBarWidget * GetEdgeScalarBar()
Obtain the scalar bar widget used to draw a legend for the vertices/edges.
vtkSmartPointer< vtkRemoveHiddenData > RemoveHiddenGraph
Internal filter classes.
virtual void SetUseVertexIconTypeMap(bool b)
virtual void SetVertexIconAlignment(int align)
virtual bool GetVertexLabelVisibility()
vtkSmartPointer< vtkPolyDataMapper > VertexMapper
Internal filter classes.
vtkSmartPointer< vtkGraphToGlyphs > VertexGlyph
Internal filter classes.
virtual bool GetUseVertexIconTypeMap()
vtkSmartPointer< vtkPolyDataMapper > EdgeMapper
Internal filter classes.
virtual void SetEdgeLayoutStrategyToGeo(double explodeFactor=0.2)
Set the edge layout strategy to a geospatial arced strategy appropriate for vtkGeoView.
vtkSmartPointer< vtkPerturbCoincidentVertices > Coincident
Internal filter classes.
virtual void SetVertexColorArrayName(const char *name)
virtual void SetEdgeLabelPriorityArrayName(const char *name)
virtual bool GetUseEdgeIconTypeMap()
virtual void SetEdgeIconPriorityArrayName(const char *name)
virtual void SetVertexIconSelectionModeToSelectedIcon()
Set the mode to one of.
virtual void SetVertexLabelVisibility(bool b)
virtual void SetEnableVerticesByArray(bool b)
int RequestData(vtkInformation *request, vtkInformationVector **inputVector, vtkInformationVector *outputVector) override
Connect inputs to internal pipeline.
vtkSmartPointer< vtkGraphToPoints > GraphToPoints
Internal filter classes.
virtual void SetUseEdgeIconTypeMap(bool b)
vtkSelection * ConvertSelection(vtkView *view, vtkSelection *sel) override
Convert the selection to a type appropriate for sharing with other representations through vtkAnnotat...
virtual const char * GetEdgeLabelArrayName()
virtual vtkGraphLayoutStrategy * GetLayoutStrategy()
Set/get the graph layout strategy.
virtual void SetVertexIconPriorityArrayName(const char *name)
virtual const char * GetEdgeColorArrayName()
virtual void SetGlyphType(int type)
Set the graph vertex glyph type.
virtual void SetVertexLabelPriorityArrayName(const char *name)
virtual void SetEdgeLabelArrayName(const char *name)
vtkSmartPointer< vtkActor > EdgeActor
Internal filter classes.
vtkSmartPointer< vtkScalarBarWidget > VertexScalarBar
Internal filter classes.
void SetEdgeLayoutStrategyToArcParallel()
Set/get the graph layout strategy.
~vtkRenderedGraphRepresentation() override
vtkSmartPointer< vtkGraphToGlyphs > OutlineGlyph
Internal filter classes.
virtual void SetLayoutStrategyToAssignCoordinates(const char *xarr, const char *yarr=nullptr, const char *zarr=nullptr)
Set the layout strategy to use coordinates from arrays.
vtkSmartPointer< vtkPolyDataMapper > OutlineMapper
Internal filter classes.
virtual void SetVertexIconArrayName(const char *name)
vtkSmartPointer< vtkVertexDegree > VertexDegree
Internal filter classes.
vtkSmartPointer< vtkGraphToPolyData > GraphToPoly
Internal filter classes.
virtual void SetEdgeScalarBarVisibility(bool b)
Vertex/edge scalar bar visibility.
virtual bool GetEdgeScalarBarVisibility()
Vertex/edge scalar bar visibility.
vtkSmartPointer< vtkIconGlyphFilter > VertexIconGlyph
Internal filter classes.
virtual vtkEdgeLayoutStrategy * GetEdgeLayoutStrategy()
Set/get the graph layout strategy.
void ComputeSelectedGraphBounds(double bounds[6])
Compute the bounding box of the selected subgraph.
virtual bool GetVertexScalarBarVisibility()
Vertex/edge scalar bar visibility.
virtual void SetEdgeLabelVisibility(bool b)
virtual bool GetVertexIconVisibility()
2D widget for manipulating a scalar bar
Superclass for mapping scalar values to colors.
data object that represents a "selection" in VTK.
Definition: vtkSelection.h:54
represent text properties.
actor that draws 2D data with texture support
transform points into different coordinate systems
Adds an attribute array with the degree of each vertex.
Sets theme colors for a graphical view.
Definition: vtkViewTheme.h:43
The superclass for all views.
Definition: vtkView.h:64
@ mode
Definition: vtkX3D.h:253
@ type
Definition: vtkX3D.h:522
@ name
Definition: vtkX3D.h:225
@ string
Definition: vtkX3D.h:496
int vtkIdType
Definition: vtkType.h:332