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.

265 lines
6.7 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkTreeAreaView.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 vtkTreeAreaView
* @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 ring 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 Jason Shepherd for implementing this class
*/
#ifndef vtkTreeAreaView_h
#define vtkTreeAreaView_h
#include "vtkRenderView.h"
#include "vtkViewsInfovisModule.h" // For export macro
class vtkAreaLayoutStrategy;
class vtkGraph;
class vtkLabeledDataMapper;
class vtkPolyDataAlgorithm;
class vtkRenderedTreeAreaRepresentation;
class vtkTree;
class VTKVIEWSINFOVIS_EXPORT vtkTreeAreaView : public vtkRenderView
{
public:
static vtkTreeAreaView* New();
vtkTypeMacro(vtkTreeAreaView, vtkRenderView);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* Set the tree and graph representations to the appropriate input ports.
*/
vtkDataRepresentation* SetTreeFromInputConnection(vtkAlgorithmOutput* conn);
vtkDataRepresentation* SetTreeFromInput(vtkTree* input);
vtkDataRepresentation* SetGraphFromInputConnection(vtkAlgorithmOutput* conn);
vtkDataRepresentation* SetGraphFromInput(vtkGraph* input);
//@}
//@{
/**
* The array to use for area labeling. Default is "label".
*/
void SetAreaLabelArrayName(const char* name);
const char* GetAreaLabelArrayName();
//@}
//@{
/**
* The array to use for area sizes. Default is "size".
*/
void SetAreaSizeArrayName(const char* name);
const char* GetAreaSizeArrayName();
//@}
//@{
/**
* The array to use for area labeling priority.
* Default is "GraphVertexDegree".
*/
void SetLabelPriorityArrayName(const char* name);
const char* GetLabelPriorityArrayName();
//@}
//@{
/**
* The array to use for edge labeling. Default is "label".
*/
void SetEdgeLabelArrayName(const char* name);
const char* GetEdgeLabelArrayName();
//@}
//@{
/**
* The name of the array whose value appears when the mouse hovers
* over a rectangle in the treemap.
* This must be a string array.
*/
void SetAreaHoverArrayName(const char* name);
const char* GetAreaHoverArrayName();
//@}
//@{
/**
* Whether to show area labels. Default is off.
*/
void SetAreaLabelVisibility(bool vis);
bool GetAreaLabelVisibility();
vtkBooleanMacro(AreaLabelVisibility, bool);
//@}
//@{
/**
* Whether to show edge labels. Default is off.
*/
void SetEdgeLabelVisibility(bool vis);
bool GetEdgeLabelVisibility();
vtkBooleanMacro(EdgeLabelVisibility, bool);
//@}
//@{
/**
* The array to use for coloring vertices. Default is "color".
*/
void SetAreaColorArrayName(const char* name);
const char* GetAreaColorArrayName();
//@}
//@{
/**
* Whether to color vertices. Default is off.
*/
void SetColorAreas(bool vis);
bool GetColorAreas();
vtkBooleanMacro(ColorAreas, bool);
//@}
//@{
/**
* The array to use for coloring edges. Default is "color".
*/
void SetEdgeColorArrayName(const char* name);
const char* GetEdgeColorArrayName();
//@}
/**
* Set the color to be the spline fraction
*/
void SetEdgeColorToSplineFraction();
//@{
/**
* Set the region shrink percentage between 0.0 and 1.0.
*/
void SetShrinkPercentage(double value);
double GetShrinkPercentage();
//@}
//@{
/**
* Whether to color edges. Default is off.
*/
void SetColorEdges(bool vis);
bool GetColorEdges();
vtkBooleanMacro(ColorEdges, bool);
//@}
//@{
/**
* Set the bundling strength.
*/
void SetBundlingStrength(double strength);
double GetBundlingStrength();
//@}
//@{
/**
* The size of the font used for area labeling
*/
virtual void SetAreaLabelFontSize(const int size);
virtual int GetAreaLabelFontSize();
//@}
//@{
/**
* The size of the font used for edge labeling
*/
virtual void SetEdgeLabelFontSize(const int size);
virtual int GetEdgeLabelFontSize();
//@}
//@{
/**
* The layout strategy for producing spatial regions for the tree.
*/
virtual void SetLayoutStrategy(vtkAreaLayoutStrategy* strategy);
virtual vtkAreaLayoutStrategy* GetLayoutStrategy();
//@}
//@{
/**
* Whether the area represents radial or rectangular coordinates.
*/
virtual void SetUseRectangularCoordinates(bool rect);
virtual bool GetUseRectangularCoordinates();
vtkBooleanMacro(UseRectangularCoordinates, bool);
//@}
//@{
/**
* Visibility of scalar bar actor for edges.
*/
virtual void SetEdgeScalarBarVisibility(bool b);
virtual bool GetEdgeScalarBarVisibility();
//@}
protected:
vtkTreeAreaView();
~vtkTreeAreaView() override;
//@{
/**
* The filter for converting areas to polydata. This may e.g. be
* vtkTreeMapToPolyData or vtkTreeRingToPolyData.
* The filter must take a vtkTree as input and produce vtkPolyData.
*/
virtual void SetAreaToPolyData(vtkPolyDataAlgorithm* areaToPoly);
virtual vtkPolyDataAlgorithm* GetAreaToPolyData();
//@}
//@{
/**
* The mapper for rendering labels on areas. This may e.g. be
* vtkDynamic2DLabelMapper or vtkTreeMapLabelMapper.
*/
virtual void SetAreaLabelMapper(vtkLabeledDataMapper* mapper);
virtual vtkLabeledDataMapper* GetAreaLabelMapper();
//@}
//@{
/**
* Overrides behavior in vtkView to create a vtkRenderedGraphRepresentation
* by default.
*/
vtkDataRepresentation* CreateDefaultRepresentation(vtkAlgorithmOutput* conn) override;
virtual vtkRenderedTreeAreaRepresentation* GetTreeAreaRepresentation();
//@}
private:
vtkTreeAreaView(const vtkTreeAreaView&) = delete;
void operator=(const vtkTreeAreaView&) = delete;
};
#endif