/*========================================================================= Program: Visualization Toolkit Module: vtkHierarchicalGraphView.h ------------------------------------------------------------------------- Copyright 2008 Sandia Corporation. Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains certain rights in this software. ------------------------------------------------------------------------- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen All rights reserved. See Copyright.txt or http://www.kitware.com/Copyright.htm for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notice for more information. =========================================================================*/ /** * @class vtkHierarchicalGraphView * @brief Accepts a graph and a hierarchy - currently * a tree - and provides a hierarchy-aware display. Currently, this means * displaying the hierarchy using a tree layout, then rendering the graph * vertices as leaves of the tree with curved graph edges between leaves. * * * Takes a graph and a hierarchy (currently a tree) and lays out the graph * vertices based on their categorization within the hierarchy. * * .SEE ALSO * vtkGraphLayoutView * * @par Thanks: * Thanks to the turtle with jets for feet, without you this class wouldn't * have been possible. */ #ifndef vtkHierarchicalGraphView_h #define vtkHierarchicalGraphView_h #include "vtkGraphLayoutView.h" #include "vtkViewsInfovisModule.h" // For export macro class vtkRenderedHierarchyRepresentation; class VTKVIEWSINFOVIS_EXPORT vtkHierarchicalGraphView : public vtkGraphLayoutView { public: static vtkHierarchicalGraphView* New(); vtkTypeMacro(vtkHierarchicalGraphView, vtkGraphLayoutView); void PrintSelf(ostream& os, vtkIndent indent) override; //@{ /** * Set the tree and graph representations to the appropriate input ports. */ vtkDataRepresentation* SetHierarchyFromInputConnection(vtkAlgorithmOutput* conn); vtkDataRepresentation* SetHierarchyFromInput(vtkDataObject* input); vtkDataRepresentation* SetGraphFromInputConnection(vtkAlgorithmOutput* conn); vtkDataRepresentation* SetGraphFromInput(vtkDataObject* input); //@} //@{ /** * The array to use for edge labeling. Default is "label". */ virtual void SetGraphEdgeLabelArrayName(const char* name); virtual const char* GetGraphEdgeLabelArrayName(); //@} //@{ /** * Whether to show edge labels. Default is off. */ virtual void SetGraphEdgeLabelVisibility(bool vis); virtual bool GetGraphEdgeLabelVisibility(); vtkBooleanMacro(GraphEdgeLabelVisibility, bool); //@} //@{ /** * The array to use for coloring edges. Default is "color". */ virtual void SetGraphEdgeColorArrayName(const char* name); virtual const char* GetGraphEdgeColorArrayName(); //@} /** * Set the color to be the spline fraction */ virtual void SetGraphEdgeColorToSplineFraction(); //@{ /** * Whether to color edges. Default is off. */ virtual void SetColorGraphEdgesByArray(bool vis); virtual bool GetColorGraphEdgesByArray(); vtkBooleanMacro(ColorGraphEdgesByArray, bool); //@} //@{ /** * Set the bundling strength. */ virtual void SetBundlingStrength(double strength); virtual double GetBundlingStrength(); //@} //@{ /** * Whether the graph edges are visible (default off). */ virtual void SetGraphVisibility(bool b); virtual bool GetGraphVisibility(); vtkBooleanMacro(GraphVisibility, bool); //@} //@{ /** * The size of the font used for edge labeling */ virtual void SetGraphEdgeLabelFontSize(const int size); virtual int GetGraphEdgeLabelFontSize(); //@} protected: vtkHierarchicalGraphView(); ~vtkHierarchicalGraphView() override; //@{ /** * Overrides behavior in vtkGraphLayoutView to create a * vtkRenderedHierarchyRepresentation by default. */ vtkDataRepresentation* CreateDefaultRepresentation(vtkAlgorithmOutput* conn) override; vtkRenderedGraphRepresentation* GetGraphRepresentation() override; virtual vtkRenderedHierarchyRepresentation* GetHierarchyRepresentation(); //@} private: vtkHierarchicalGraphView(const vtkHierarchicalGraphView&) = delete; void operator=(const vtkHierarchicalGraphView&) = delete; }; #endif