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
102class vtkActor;
103class vtkApplyColors;
104class vtkApplyIcons;
105class vtkEdgeCenters;
106class vtkEdgeLayout;
108class vtkGraphLayout;
110class vtkGraphToGlyphs;
111class vtkGraphToPoints;
114class vtkInformation;
116class vtkLookupTable;
119class vtkPolyData;
123class vtkRenderView;
126class vtkTextProperty;
129class vtkVertexDegree;
130class vtkView;
131class vtkViewTheme;
132
134{
135public:
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);
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);
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);
195 vtkBooleanMacro(VertexIconVisibility, bool);
196 virtual void AddVertexIconType(const char* name, int type);
197 virtual void ClearVertexIconTypes();
198 virtual void SetUseVertexIconTypeMap(bool b);
200 vtkBooleanMacro(UseVertexIconTypeMap, bool);
201 virtual void SetVertexIconAlignment(int align);
203 virtual void SetVertexSelectedIcon(int icon);
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);
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);
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
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
452protected:
455
457
460 bool AddToView(vtkView* view) override;
461 bool RemoveFromView(vtkView* view) override;
463
464 void PrepareForRendering(vtkRenderView* view) override;
465
467
468 std::string GetHoverStringInternal(vtkSelection* sel) override;
469
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
534private:
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: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 const char * GetEdgeLabelArrayName()
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 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 const char * GetVertexColorArrayName()
virtual void SetScaling(bool b)
Set whether to scale vertex glyphs.
static vtkRenderedGraphRepresentation * New()
virtual void SetColorEdgesByArray(bool b)
virtual bool GetColorEdgesByArray()
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)
void ApplyViewTheme(vtkViewTheme *theme) override
Apply a theme to this representation.
virtual const char * GetVertexIconPriorityArrayName()
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 vtkScalarBarWidget * GetEdgeScalarBar()
Obtain the scalar bar widget used to draw a legend for the vertices/edges.
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 bool GetEdgeLabelVisibility()
vtkSmartPointer< vtkScalarBarWidget > EdgeScalarBar
Internal filter classes.
virtual int GetGlyphType()
Set the graph vertex glyph type.
virtual vtkEdgeLayoutStrategy * GetEdgeLayoutStrategy()
Set/get the graph layout strategy.
vtkSmartPointer< vtkGraphToPoints > VertexIconPoints
Internal filter classes.
virtual bool GetEnableEdgesByArray()
vtkSmartPointer< vtkPointSetToLabelHierarchy > EdgeLabelHierarchy
Internal filter classes.
virtual bool GetEdgeIconVisibility()
virtual const char * GetEdgeLabelPriorityArrayName()
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 vtkScalarBarWidget * GetVertexScalarBar()
Obtain the scalar bar widget used to draw a legend for the vertices/edges.
virtual void AddEdgeIconType(const char *name, int type)
virtual void SetVertexDefaultIcon(int icon)
virtual void AddVertexIconType(const char *name, int type)
vtkSmartPointer< vtkPolyData > EmptyPolyData
Internal filter classes.
vtkSmartPointer< vtkPolyDataMapper2D > VertexIconMapper
Internal filter classes.
virtual const char * GetVertexLabelPriorityArrayName()
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
vtkSmartPointer< vtkEdgeCenters > EdgeCenters
Internal filter classes.
vtkSelection * ConvertSelection(vtkView *view, vtkSelection *sel) override
Convert the selection to a type appropriate for sharing with other representations through vtkAnnotat...
virtual void UpdateLayout()
Performs another iteration on the graph layout.
vtkSmartPointer< vtkPointSetToLabelHierarchy > VertexLabelHierarchy
Internal filter classes.
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 void SetVertexIconSelectionModeToIgnoreSelection()
Set the mode to one of.
virtual bool IsLayoutComplete()
Whether the current graph layout is complete.
virtual vtkTextProperty * GetVertexLabelTextProperty()
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 * GetEdgeIconPriorityArrayName()
virtual const char * GetEdgeIconArrayName()
virtual const char * GetEnabledVerticesArrayName()
virtual void SetVertexIconSelectionModeToSelectedOffset()
Set the mode to one of.
virtual void SetEdgeColorArrayName(const char *name)
virtual void SetColorVerticesByArray(bool b)
virtual vtkGraphLayoutStrategy * GetLayoutStrategy()
Set/get the graph layout strategy.
virtual const char * GetVertexIconArrayName()
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.
virtual vtkTextProperty * GetEdgeLabelTextProperty()
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.
virtual const char * GetEdgeColorArrayName()
vtkSmartPointer< vtkGraphToPoints > GraphToPoints
Internal filter classes.
virtual void SetUseEdgeIconTypeMap(bool b)
virtual void SetVertexIconPriorityArrayName(const char *name)
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
virtual const char * GetEnabledEdgesArrayName()
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 const char * GetScalingArrayName()
Set the glyph scaling array name.
virtual const char * GetVertexLabelArrayName()
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
Hold a reference to a vtkObjectBase instance.
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:64
int vtkIdType
Definition: vtkType.h:332