You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

150 lines
4.4 KiB
C

/*=========================================================================
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