forked from Kitware/VTK
-
Notifications
You must be signed in to change notification settings - Fork 0
/
vtkRandomLayoutStrategy.h
113 lines (94 loc) · 3.33 KB
/
vtkRandomLayoutStrategy.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*=========================================================================
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.
*
* .SECION Thanks
* Thanks to Brian Wylie from Sandia National Laboratories for adding incremental
* layout capabilities.
*/
#ifndef vtkRandomLayoutStrategy_h
#define vtkRandomLayoutStrategy_h
#include "vtkInfovisLayoutModule.h" // For export macro
#include "vtkGraphLayoutStrategy.h"
class VTKINFOVISLAYOUT_EXPORT vtkRandomLayoutStrategy : public vtkGraphLayoutStrategy
{
public:
static vtkRandomLayoutStrategy *New();
vtkTypeMacro(vtkRandomLayoutStrategy, vtkGraphLayoutStrategy);
void PrintSelf(ostream& os, vtkIndent indent);
//@{
/**
* 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, int);
vtkGetMacro(AutomaticBoundsComputation, int);
vtkBooleanMacro(AutomaticBoundsComputation, int);
//@}
//@{
/**
* 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, int);
vtkGetMacro(ThreeDimensionalLayout, int);
vtkBooleanMacro(ThreeDimensionalLayout, int);
//@}
/**
* Set the graph to layout.
*/
void SetGraph(vtkGraph *graph);
/**
* Perform the random layout.
*/
void Layout();
protected:
vtkRandomLayoutStrategy();
~vtkRandomLayoutStrategy();
int RandomSeed;
double GraphBounds[6];
int AutomaticBoundsComputation;
int ThreeDimensionalLayout; //Boolean for a third dimension.
private:
vtkRandomLayoutStrategy(const vtkRandomLayoutStrategy&) VTK_DELETE_FUNCTION;
void operator=(const vtkRandomLayoutStrategy&) VTK_DELETE_FUNCTION;
};
#endif