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
265 lines
6.7 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
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
|