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.
112 lines
3.4 KiB
C++
112 lines
3.4 KiB
C++
/*=========================================================================
|
|
|
|
Program: Visualization Toolkit
|
|
Module: vtkRandomLayoutStrategy.h
|
|
|
|
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.
|
|
|
|
=========================================================================*/
|
|
/*-------------------------------------------------------------------------
|
|
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.
|
|
-------------------------------------------------------------------------*/
|
|
/**
|
|
* @class vtkRandomLayoutStrategy
|
|
* @brief randomly places vertices in 2 or 3 dimensions
|
|
*
|
|
*
|
|
* Assigns points to the vertices of a graph randomly within a bounded range.
|
|
*
|
|
* .SECTION Thanks
|
|
* Thanks to Brian Wylie from Sandia National Laboratories for adding incremental
|
|
* layout capabilities.
|
|
*/
|
|
|
|
#ifndef vtkRandomLayoutStrategy_h
|
|
#define vtkRandomLayoutStrategy_h
|
|
|
|
#include "vtkGraphLayoutStrategy.h"
|
|
#include "vtkInfovisLayoutModule.h" // For export macro
|
|
|
|
class VTKINFOVISLAYOUT_EXPORT vtkRandomLayoutStrategy : public vtkGraphLayoutStrategy
|
|
{
|
|
public:
|
|
static vtkRandomLayoutStrategy* New();
|
|
|
|
vtkTypeMacro(vtkRandomLayoutStrategy, vtkGraphLayoutStrategy);
|
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
|
|
|
//@{
|
|
/**
|
|
* Seed the random number generator used to compute point positions.
|
|
* This has a significant effect on their final positions when
|
|
* the layout is complete.
|
|
*/
|
|
vtkSetClampMacro(RandomSeed, int, 0, VTK_INT_MAX);
|
|
vtkGetMacro(RandomSeed, int);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Set / get the region in space in which to place the final graph.
|
|
* The GraphBounds only affects the results if AutomaticBoundsComputation
|
|
* is off.
|
|
*/
|
|
vtkSetVector6Macro(GraphBounds, double);
|
|
vtkGetVectorMacro(GraphBounds, double, 6);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Turn on/off automatic graph bounds calculation. If this
|
|
* boolean is off, then the manually specified GraphBounds is used.
|
|
* If on, then the input's bounds us used as the graph bounds.
|
|
*/
|
|
vtkSetMacro(AutomaticBoundsComputation, vtkTypeBool);
|
|
vtkGetMacro(AutomaticBoundsComputation, vtkTypeBool);
|
|
vtkBooleanMacro(AutomaticBoundsComputation, vtkTypeBool);
|
|
//@}
|
|
|
|
//@{
|
|
/**
|
|
* Turn on/off layout of graph in three dimensions. If off, graph
|
|
* layout occurs in two dimensions. By default, three dimensional
|
|
* layout is on.
|
|
*/
|
|
vtkSetMacro(ThreeDimensionalLayout, vtkTypeBool);
|
|
vtkGetMacro(ThreeDimensionalLayout, vtkTypeBool);
|
|
vtkBooleanMacro(ThreeDimensionalLayout, vtkTypeBool);
|
|
//@}
|
|
|
|
/**
|
|
* Set the graph to layout.
|
|
*/
|
|
void SetGraph(vtkGraph* graph) override;
|
|
|
|
/**
|
|
* Perform the random layout.
|
|
*/
|
|
void Layout() override;
|
|
|
|
protected:
|
|
vtkRandomLayoutStrategy();
|
|
~vtkRandomLayoutStrategy() override;
|
|
|
|
int RandomSeed;
|
|
double GraphBounds[6];
|
|
vtkTypeBool AutomaticBoundsComputation;
|
|
vtkTypeBool ThreeDimensionalLayout; // Boolean for a third dimension.
|
|
private:
|
|
vtkRandomLayoutStrategy(const vtkRandomLayoutStrategy&) = delete;
|
|
void operator=(const vtkRandomLayoutStrategy&) = delete;
|
|
};
|
|
|
|
#endif
|