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 -------------------------------------------------------------------------*/
95 #ifndef vtkRenderedGraphRepresentation_h
96 #define vtkRenderedGraphRepresentation_h
97 
99 #include "vtkSmartPointer.h" // for SP ivars
100 #include "vtkViewsInfovisModule.h" // For export macro
101 
102 class vtkActor;
103 class vtkApplyColors;
104 class vtkApplyIcons;
105 class vtkEdgeCenters;
106 class vtkEdgeLayout;
108 class vtkGraphLayout;
110 class vtkGraphToGlyphs;
111 class vtkGraphToPoints;
112 class vtkGraphToPolyData;
113 class vtkIconGlyphFilter;
114 class vtkInformation;
116 class vtkLookupTable;
119 class vtkPolyData;
120 class vtkPolyDataMapper;
121 class vtkPolyDataMapper2D;
122 class vtkRemoveHiddenData;
123 class vtkRenderView;
124 class vtkScalarBarWidget;
125 class vtkScalarsToColors;
126 class vtkTextProperty;
127 class vtkTexturedActor2D;
129 class vtkVertexDegree;
130 class vtkView;
131 class vtkViewTheme;
132 
133 class VTKVIEWSINFOVIS_EXPORT vtkRenderedGraphRepresentation : public vtkRenderedRepresentation
134 {
135 public:
138  void PrintSelf(ostream& os, vtkIndent indent) override;
139 
140  // ------------------------------------------------------------------------
141  // Vertex labels
142 
143  virtual void SetVertexLabelArrayName(const char* name);
144  virtual const char* GetVertexLabelArrayName();
145  virtual void SetVertexLabelPriorityArrayName(const char* name);
146  virtual const char* GetVertexLabelPriorityArrayName();
147  virtual void SetVertexLabelVisibility(bool b);
148  virtual bool GetVertexLabelVisibility();
149  vtkBooleanMacro(VertexLabelVisibility, bool);
152  vtkSetStringMacro(VertexHoverArrayName);
153  vtkGetStringMacro(VertexHoverArrayName);
155 
158  vtkSetMacro(HideVertexLabelsOnInteraction, bool);
159  vtkGetMacro(HideVertexLabelsOnInteraction, bool);
160  vtkBooleanMacro(HideVertexLabelsOnInteraction, bool);
162 
163  // ------------------------------------------------------------------------
164  // Edge labels
165 
166  virtual void SetEdgeLabelArrayName(const char* name);
167  virtual const char* GetEdgeLabelArrayName();
168  virtual void SetEdgeLabelPriorityArrayName(const char* name);
169  virtual const char* GetEdgeLabelPriorityArrayName();
170  virtual void SetEdgeLabelVisibility(bool b);
171  virtual bool GetEdgeLabelVisibility();
172  vtkBooleanMacro(EdgeLabelVisibility, bool);
175  vtkSetStringMacro(EdgeHoverArrayName);
176  vtkGetStringMacro(EdgeHoverArrayName);
178 
181  vtkSetMacro(HideEdgeLabelsOnInteraction, bool);
182  vtkGetMacro(HideEdgeLabelsOnInteraction, bool);
183  vtkBooleanMacro(HideEdgeLabelsOnInteraction, bool);
185 
186  // ------------------------------------------------------------------------
187  // Vertex icons
188 
189  virtual void SetVertexIconArrayName(const char* name);
190  virtual const char* GetVertexIconArrayName();
191  virtual void SetVertexIconPriorityArrayName(const char* name);
192  virtual const char* GetVertexIconPriorityArrayName();
193  virtual void SetVertexIconVisibility(bool b);
194  virtual bool GetVertexIconVisibility();
195  vtkBooleanMacro(VertexIconVisibility, bool);
196  virtual void AddVertexIconType(const char* name, int type);
197  virtual void ClearVertexIconTypes();
198  virtual void SetUseVertexIconTypeMap(bool b);
199  virtual bool GetUseVertexIconTypeMap();
200  vtkBooleanMacro(UseVertexIconTypeMap, bool);
201  virtual void SetVertexIconAlignment(int align);
202  virtual int GetVertexIconAlignment();
203  virtual void SetVertexSelectedIcon(int icon);
204  virtual int GetVertexSelectedIcon();
205  virtual void SetVertexDefaultIcon(int icon);
206  virtual int GetVertexDefaultIcon();
207 
209 
219  virtual void SetVertexIconSelectionMode(int mode);
221  virtual void SetVertexIconSelectionModeToSelectedIcon() { this->SetVertexIconSelectionMode(0); }
222  virtual void SetVertexIconSelectionModeToSelectedOffset() { this->SetVertexIconSelectionMode(1); }
223  virtual void SetVertexIconSelectionModeToAnnotationIcon() { this->SetVertexIconSelectionMode(2); }
225  {
226  this->SetVertexIconSelectionMode(3);
227  }
229 
230  // ------------------------------------------------------------------------
231  // Edge icons
232 
233  virtual void SetEdgeIconArrayName(const char* name);
234  virtual const char* GetEdgeIconArrayName();
235  virtual void SetEdgeIconPriorityArrayName(const char* name);
236  virtual const char* GetEdgeIconPriorityArrayName();
237  virtual void SetEdgeIconVisibility(bool b);
238  virtual bool GetEdgeIconVisibility();
239  vtkBooleanMacro(EdgeIconVisibility, bool);
240  virtual void AddEdgeIconType(const char* name, int type);
241  virtual void ClearEdgeIconTypes();
242  virtual void SetUseEdgeIconTypeMap(bool b);
243  virtual bool GetUseEdgeIconTypeMap();
244  vtkBooleanMacro(UseEdgeIconTypeMap, bool);
245  virtual void SetEdgeIconAlignment(int align);
246  virtual int GetEdgeIconAlignment();
247 
248  // ------------------------------------------------------------------------
249  // Vertex colors
250 
251  virtual void SetColorVerticesByArray(bool b);
252  virtual bool GetColorVerticesByArray();
253  vtkBooleanMacro(ColorVerticesByArray, bool);
254  virtual void SetVertexColorArrayName(const char* name);
255  virtual const char* GetVertexColorArrayName();
256 
257  // ------------------------------------------------------------------------
258  // Edge colors
259 
260  virtual void SetColorEdgesByArray(bool b);
261  virtual bool GetColorEdgesByArray();
262  vtkBooleanMacro(ColorEdgesByArray, bool);
263  virtual void SetEdgeColorArrayName(const char* name);
264  virtual const char* GetEdgeColorArrayName();
265 
266  // ------------------------------------------------------------------------
267  // Enabled vertices
268 
269  virtual void SetEnableVerticesByArray(bool b);
270  virtual bool GetEnableVerticesByArray();
271  vtkBooleanMacro(EnableVerticesByArray, bool);
272  virtual void SetEnabledVerticesArrayName(const char* name);
273  virtual const char* GetEnabledVerticesArrayName();
274 
275  // ------------------------------------------------------------------------
276  // Enabled edges
277 
278  virtual void SetEnableEdgesByArray(bool b);
279  virtual bool GetEnableEdgesByArray();
280  vtkBooleanMacro(EnableEdgesByArray, bool);
281  virtual void SetEnabledEdgesArrayName(const char* name);
282  virtual const char* GetEnabledEdgesArrayName();
283 
284  virtual void SetEdgeVisibility(bool b);
285  virtual bool GetEdgeVisibility();
286  vtkBooleanMacro(EdgeVisibility, bool);
287 
288  void SetEdgeSelection(bool b);
290 
291  // ------------------------------------------------------------------------
292  // Vertex layout strategy
293 
295 
298  virtual void SetLayoutStrategy(vtkGraphLayoutStrategy* strategy);
301 
303 
306  virtual void SetLayoutStrategy(const char* name);
307  vtkGetStringMacro(LayoutStrategyName);
309 
313  void SetLayoutStrategyToRandom() { this->SetLayoutStrategy("Random"); }
314  void SetLayoutStrategyToForceDirected() { this->SetLayoutStrategy("Force Directed"); }
315  void SetLayoutStrategyToSimple2D() { this->SetLayoutStrategy("Simple 2D"); }
316  void SetLayoutStrategyToClustering2D() { this->SetLayoutStrategy("Clustering 2D"); }
317  void SetLayoutStrategyToCommunity2D() { this->SetLayoutStrategy("Community 2D"); }
318  void SetLayoutStrategyToFast2D() { this->SetLayoutStrategy("Fast 2D"); }
319  void SetLayoutStrategyToPassThrough() { this->SetLayoutStrategy("Pass Through"); }
320  void SetLayoutStrategyToCircular() { this->SetLayoutStrategy("Circular"); }
321  void SetLayoutStrategyToTree() { this->SetLayoutStrategy("Tree"); }
322  void SetLayoutStrategyToCosmicTree() { this->SetLayoutStrategy("Cosmic Tree"); }
323  void SetLayoutStrategyToCone() { this->SetLayoutStrategy("Cone"); }
324  void SetLayoutStrategyToSpanTree() { this->SetLayoutStrategy("Span Tree"); }
325 
331  const char* xarr, const char* yarr = nullptr, const char* zarr = nullptr);
332 
344  bool radial, double angle = 90, double leafSpacing = 0.9, double logSpacing = 1.0);
345 
356  virtual void SetLayoutStrategyToCosmicTree(const char* nodeSizeArrayName,
357  bool sizeLeafNodesOnly = true, int layoutDepth = 0, vtkIdType layoutRoot = -1);
358 
359  // ------------------------------------------------------------------------
360  // Edge layout strategy
361 
363 
368  void SetEdgeLayoutStrategyToArcParallel() { this->SetEdgeLayoutStrategy("Arc Parallel"); }
369  void SetEdgeLayoutStrategyToPassThrough() { this->SetEdgeLayoutStrategy("Pass Through"); }
371 
376  virtual void SetEdgeLayoutStrategyToGeo(double explodeFactor = 0.2);
377 
379 
382  virtual void SetEdgeLayoutStrategy(const char* name);
383  vtkGetStringMacro(EdgeLayoutStrategyName);
385 
386  // ------------------------------------------------------------------------
387  // Miscellaneous
388 
392  void ApplyViewTheme(vtkViewTheme* theme) override;
393 
395 
398  virtual void SetGlyphType(int type);
399  virtual int GetGlyphType();
401 
403 
406  virtual void SetScaling(bool b);
407  virtual bool GetScaling();
408  vtkBooleanMacro(Scaling, bool);
410 
412 
415  virtual void SetScalingArrayName(const char* name);
416  virtual const char* GetScalingArrayName();
418 
420 
423  virtual void SetVertexScalarBarVisibility(bool b);
425  virtual void SetEdgeScalarBarVisibility(bool b);
428 
430 
436 
440  virtual bool IsLayoutComplete();
441 
445  virtual void UpdateLayout();
446 
450  void ComputeSelectedGraphBounds(double bounds[6]);
451 
452 protected:
455 
457 
460  bool AddToView(vtkView* view) override;
461  bool RemoveFromView(vtkView* view) override;
463 
464  void PrepareForRendering(vtkRenderView* view) override;
465 
467 
469 
473  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
474  vtkInformationVector* outputVector) override;
475 
477 
509 
512 
513  vtkSetStringMacro(VertexColorArrayNameInternal);
514  vtkGetStringMacro(VertexColorArrayNameInternal);
516 
517  vtkSetStringMacro(EdgeColorArrayNameInternal);
518  vtkGetStringMacro(EdgeColorArrayNameInternal);
520 
521  vtkSetStringMacro(ScalingArrayNameInternal);
522  vtkGetStringMacro(ScalingArrayNameInternal);
524 
525  vtkSetStringMacro(LayoutStrategyName);
527  vtkSetStringMacro(EdgeLayoutStrategyName);
531 
533 
534 private:
536  void operator=(const vtkRenderedGraphRepresentation&) = delete;
537 };
538 
539 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:155
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:113
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:195
Removes the rows/edges/vertices of input data flagged by ann.
A view containing a renderer.
Definition: vtkRenderView.h:78
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:163
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:132
The superclass for all views.
Definition: vtkView.h:55
@ 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