VTK  9.2.6
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 -------------------------------------------------------------------------*/
98 #ifndef vtkRenderedGraphRepresentation_h
99 #define vtkRenderedGraphRepresentation_h
100 
102 #include "vtkSmartPointer.h" // for SP ivars
103 #include "vtkViewsInfovisModule.h" // For export macro
104 
105 class vtkActor;
106 class vtkApplyColors;
107 class vtkApplyIcons;
108 class vtkEdgeCenters;
109 class vtkEdgeLayout;
111 class vtkGraphLayout;
113 class vtkGraphToGlyphs;
114 class vtkGraphToPoints;
115 class vtkGraphToPolyData;
116 class vtkIconGlyphFilter;
117 class vtkInformation;
119 class vtkLookupTable;
122 class vtkPolyData;
123 class vtkPolyDataMapper;
124 class vtkPolyDataMapper2D;
125 class vtkRemoveHiddenData;
126 class vtkRenderView;
127 class vtkScalarBarWidget;
128 class vtkScalarsToColors;
129 class vtkTextProperty;
130 class vtkTexturedActor2D;
132 class vtkVertexDegree;
133 class vtkView;
134 class vtkViewTheme;
135 
136 class VTKVIEWSINFOVIS_EXPORT vtkRenderedGraphRepresentation : public vtkRenderedRepresentation
137 {
138 public:
141  void PrintSelf(ostream& os, vtkIndent indent) override;
142 
143  // ------------------------------------------------------------------------
144  // Vertex labels
145 
146  virtual void SetVertexLabelArrayName(const char* name);
147  virtual const char* GetVertexLabelArrayName();
148  virtual void SetVertexLabelPriorityArrayName(const char* name);
149  virtual const char* GetVertexLabelPriorityArrayName();
150  virtual void SetVertexLabelVisibility(bool b);
151  virtual bool GetVertexLabelVisibility();
152  vtkBooleanMacro(VertexLabelVisibility, bool);
155  vtkSetStringMacro(VertexHoverArrayName);
156  vtkGetStringMacro(VertexHoverArrayName);
158 
161  vtkSetMacro(HideVertexLabelsOnInteraction, bool);
162  vtkGetMacro(HideVertexLabelsOnInteraction, bool);
163  vtkBooleanMacro(HideVertexLabelsOnInteraction, bool);
165 
166  // ------------------------------------------------------------------------
167  // Edge labels
168 
169  virtual void SetEdgeLabelArrayName(const char* name);
170  virtual const char* GetEdgeLabelArrayName();
171  virtual void SetEdgeLabelPriorityArrayName(const char* name);
172  virtual const char* GetEdgeLabelPriorityArrayName();
173  virtual void SetEdgeLabelVisibility(bool b);
174  virtual bool GetEdgeLabelVisibility();
175  vtkBooleanMacro(EdgeLabelVisibility, bool);
178  vtkSetStringMacro(EdgeHoverArrayName);
179  vtkGetStringMacro(EdgeHoverArrayName);
181 
184  vtkSetMacro(HideEdgeLabelsOnInteraction, bool);
185  vtkGetMacro(HideEdgeLabelsOnInteraction, bool);
186  vtkBooleanMacro(HideEdgeLabelsOnInteraction, bool);
188 
189  // ------------------------------------------------------------------------
190  // Vertex icons
191 
192  virtual void SetVertexIconArrayName(const char* name);
193  virtual const char* GetVertexIconArrayName();
194  virtual void SetVertexIconPriorityArrayName(const char* name);
195  virtual const char* GetVertexIconPriorityArrayName();
196  virtual void SetVertexIconVisibility(bool b);
197  virtual bool GetVertexIconVisibility();
198  vtkBooleanMacro(VertexIconVisibility, bool);
199  virtual void AddVertexIconType(const char* name, int type);
200  virtual void ClearVertexIconTypes();
201  virtual void SetUseVertexIconTypeMap(bool b);
202  virtual bool GetUseVertexIconTypeMap();
203  vtkBooleanMacro(UseVertexIconTypeMap, bool);
204  virtual void SetVertexIconAlignment(int align);
205  virtual int GetVertexIconAlignment();
206  virtual void SetVertexSelectedIcon(int icon);
207  virtual int GetVertexSelectedIcon();
208  virtual void SetVertexDefaultIcon(int icon);
209  virtual int GetVertexDefaultIcon();
210 
212 
222  virtual void SetVertexIconSelectionMode(int mode);
224  virtual void SetVertexIconSelectionModeToSelectedIcon() { this->SetVertexIconSelectionMode(0); }
225  virtual void SetVertexIconSelectionModeToSelectedOffset() { this->SetVertexIconSelectionMode(1); }
226  virtual void SetVertexIconSelectionModeToAnnotationIcon() { this->SetVertexIconSelectionMode(2); }
228  {
229  this->SetVertexIconSelectionMode(3);
230  }
232 
233  // ------------------------------------------------------------------------
234  // Edge icons
235 
236  virtual void SetEdgeIconArrayName(const char* name);
237  virtual const char* GetEdgeIconArrayName();
238  virtual void SetEdgeIconPriorityArrayName(const char* name);
239  virtual const char* GetEdgeIconPriorityArrayName();
240  virtual void SetEdgeIconVisibility(bool b);
241  virtual bool GetEdgeIconVisibility();
242  vtkBooleanMacro(EdgeIconVisibility, bool);
243  virtual void AddEdgeIconType(const char* name, int type);
244  virtual void ClearEdgeIconTypes();
245  virtual void SetUseEdgeIconTypeMap(bool b);
246  virtual bool GetUseEdgeIconTypeMap();
247  vtkBooleanMacro(UseEdgeIconTypeMap, bool);
248  virtual void SetEdgeIconAlignment(int align);
249  virtual int GetEdgeIconAlignment();
250 
251  // ------------------------------------------------------------------------
252  // Vertex colors
253 
254  virtual void SetColorVerticesByArray(bool b);
255  virtual bool GetColorVerticesByArray();
256  vtkBooleanMacro(ColorVerticesByArray, bool);
257  virtual void SetVertexColorArrayName(const char* name);
258  virtual const char* GetVertexColorArrayName();
259 
260  // ------------------------------------------------------------------------
261  // Edge colors
262 
263  virtual void SetColorEdgesByArray(bool b);
264  virtual bool GetColorEdgesByArray();
265  vtkBooleanMacro(ColorEdgesByArray, bool);
266  virtual void SetEdgeColorArrayName(const char* name);
267  virtual const char* GetEdgeColorArrayName();
268 
269  // ------------------------------------------------------------------------
270  // Enabled vertices
271 
272  virtual void SetEnableVerticesByArray(bool b);
273  virtual bool GetEnableVerticesByArray();
274  vtkBooleanMacro(EnableVerticesByArray, bool);
275  virtual void SetEnabledVerticesArrayName(const char* name);
276  virtual const char* GetEnabledVerticesArrayName();
277 
278  // ------------------------------------------------------------------------
279  // Enabled edges
280 
281  virtual void SetEnableEdgesByArray(bool b);
282  virtual bool GetEnableEdgesByArray();
283  vtkBooleanMacro(EnableEdgesByArray, bool);
284  virtual void SetEnabledEdgesArrayName(const char* name);
285  virtual const char* GetEnabledEdgesArrayName();
286 
287  virtual void SetEdgeVisibility(bool b);
288  virtual bool GetEdgeVisibility();
289  vtkBooleanMacro(EdgeVisibility, bool);
290 
291  void SetEdgeSelection(bool b);
293 
294  // ------------------------------------------------------------------------
295  // Vertex layout strategy
296 
298 
301  virtual void SetLayoutStrategy(vtkGraphLayoutStrategy* strategy);
304 
306 
309  virtual void SetLayoutStrategy(const char* name);
310  vtkGetStringMacro(LayoutStrategyName);
312 
316  void SetLayoutStrategyToRandom() { this->SetLayoutStrategy("Random"); }
317  void SetLayoutStrategyToForceDirected() { this->SetLayoutStrategy("Force Directed"); }
318  void SetLayoutStrategyToSimple2D() { this->SetLayoutStrategy("Simple 2D"); }
319  void SetLayoutStrategyToClustering2D() { this->SetLayoutStrategy("Clustering 2D"); }
320  void SetLayoutStrategyToCommunity2D() { this->SetLayoutStrategy("Community 2D"); }
321  void SetLayoutStrategyToFast2D() { this->SetLayoutStrategy("Fast 2D"); }
322  void SetLayoutStrategyToPassThrough() { this->SetLayoutStrategy("Pass Through"); }
323  void SetLayoutStrategyToCircular() { this->SetLayoutStrategy("Circular"); }
324  void SetLayoutStrategyToTree() { this->SetLayoutStrategy("Tree"); }
325  void SetLayoutStrategyToCosmicTree() { this->SetLayoutStrategy("Cosmic Tree"); }
326  void SetLayoutStrategyToCone() { this->SetLayoutStrategy("Cone"); }
327  void SetLayoutStrategyToSpanTree() { this->SetLayoutStrategy("Span Tree"); }
328 
334  const char* xarr, const char* yarr = nullptr, const char* zarr = nullptr);
335 
347  bool radial, double angle = 90, double leafSpacing = 0.9, double logSpacing = 1.0);
348 
359  virtual void SetLayoutStrategyToCosmicTree(const char* nodeSizeArrayName,
360  bool sizeLeafNodesOnly = true, int layoutDepth = 0, vtkIdType layoutRoot = -1);
361 
362  // ------------------------------------------------------------------------
363  // Edge layout strategy
364 
366 
371  void SetEdgeLayoutStrategyToArcParallel() { this->SetEdgeLayoutStrategy("Arc Parallel"); }
372  void SetEdgeLayoutStrategyToPassThrough() { this->SetEdgeLayoutStrategy("Pass Through"); }
374 
379  virtual void SetEdgeLayoutStrategyToGeo(double explodeFactor = 0.2);
380 
382 
385  virtual void SetEdgeLayoutStrategy(const char* name);
386  vtkGetStringMacro(EdgeLayoutStrategyName);
388 
389  // ------------------------------------------------------------------------
390  // Miscellaneous
391 
395  void ApplyViewTheme(vtkViewTheme* theme) override;
396 
398 
401  virtual void SetGlyphType(int type);
402  virtual int GetGlyphType();
404 
406 
409  virtual void SetScaling(bool b);
410  virtual bool GetScaling();
411  vtkBooleanMacro(Scaling, bool);
413 
415 
418  virtual void SetScalingArrayName(const char* name);
419  virtual const char* GetScalingArrayName();
421 
423 
426  virtual void SetVertexScalarBarVisibility(bool b);
428  virtual void SetEdgeScalarBarVisibility(bool b);
431 
433 
439 
443  virtual bool IsLayoutComplete();
444 
448  virtual void UpdateLayout();
449 
453  void ComputeSelectedGraphBounds(double bounds[6]);
454 
455 protected:
458 
460 
463  bool AddToView(vtkView* view) override;
464  bool RemoveFromView(vtkView* view) override;
466 
467  void PrepareForRendering(vtkRenderView* view) override;
468 
470 
472 
476  int RequestData(vtkInformation* request, vtkInformationVector** inputVector,
477  vtkInformationVector* outputVector) override;
478 
480 
512 
515 
516  vtkSetStringMacro(VertexColorArrayNameInternal);
517  vtkGetStringMacro(VertexColorArrayNameInternal);
519 
520  vtkSetStringMacro(EdgeColorArrayNameInternal);
521  vtkGetStringMacro(EdgeColorArrayNameInternal);
523 
524  vtkSetStringMacro(ScalingArrayNameInternal);
525  vtkGetStringMacro(ScalingArrayNameInternal);
527 
528  vtkSetStringMacro(LayoutStrategyName);
530  vtkSetStringMacro(EdgeLayoutStrategyName);
534 
536 
537 private:
539  void operator=(const vtkRenderedGraphRepresentation&) = delete;
540 };
541 
542 #endif
represents an object (geometry & properties) in a rendered scene
Definition: vtkActor.h:161
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:42
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:119
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:200
Removes the rows/edges/vertices of input data flagged by ann.
A view containing a renderer.
Definition: vtkRenderView.h:84
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:169
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:138
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