/usr/include/vtk-7.1/vtkConeLayoutStrategy.h is in libvtk7-dev 7.1.1+dfsg1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkConeLayoutStrategy.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 vtkConeLayoutStrategy
* @brief produce a cone-tree layout for a forest
*
* vtkConeLayoutStrategy positions the nodes of a tree(forest) in 3D
* space based on the cone-tree approach first described by
* Robertson, Mackinlay and Card in Proc. CHI'91. This
* implementation incorporates refinements to the layout
* developed by Carriere and Kazman, and by Auber.
*
* The input graph must be a forest (i.e. a set of trees, or a
* single tree); in the case of a forest, the input will be
* converted to a single tree by introducing a new root node,
* and connecting each root in the input forest to the meta-root.
* The tree is then laid out, after which the meta-root is removed.
*
* The cones are positioned so that children lie in planes parallel
* to the X-Y plane, with the axis of cones parallel to Z, and
* with Z coordinate increasing with distance of nodes from the root.
*
* @par Thanks:
* Thanks to David Duke from the University of Leeds for providing this
* implementation.
*/
#ifndef vtkConeLayoutStrategy_h
#define vtkConeLayoutStrategy_h
#include "vtkInfovisLayoutModule.h" // For export macro
#include "vtkGraphLayoutStrategy.h"
class vtkPoints;
class VTKINFOVISLAYOUT_EXPORT vtkConeLayoutStrategy : public vtkGraphLayoutStrategy
{
public:
static vtkConeLayoutStrategy *New();
vtkTypeMacro(vtkConeLayoutStrategy, vtkGraphLayoutStrategy);
void PrintSelf(ostream& os, vtkIndent indent);
//@{
/**
* Determine the compactness, the ratio between the
* average width of a cone in the tree, and the
* height of the cone. The default setting is 0.75
* which (empirically) seems reasonable, but this
* will need adapting depending on the data.
*/
vtkSetMacro(Compactness, float);
vtkGetMacro(Compactness, float);
//@}
//@{
/**
* Determine if layout should be compressed, i.e. the
* layout puts children closer together, possibly allowing
* sub-trees to overlap. This is useful if the tree is
* actually the spanning tree of a graph. For "real" trees,
* non-compressed layout is best, and is the default.
*/
vtkSetMacro(Compression, int);
vtkGetMacro(Compression, int);
vtkBooleanMacro(Compression, int);
//@}
//@{
/**
* Set the spacing parameter that affects space between
* layers of the tree. If compression is on, Spacing is the
* actual distance between layers. If compression is off,
* actual distance also includes a factor of the compactness
* and maximum cone radius.
*/
vtkSetMacro(Spacing, float);
vtkGetMacro(Spacing, float);
//@}
/**
* Perform the layout.
*/
void Layout();
protected:
vtkConeLayoutStrategy();
~vtkConeLayoutStrategy();
/**
* Helper operations for tree layout. Layout is performed
* in two traversals of the tree. The first traversal finds
* the position of child nodes relative to their parent. The
* second traversal positions each node absolutely, working
* from the initial position of the root node.
*/
double LocalPlacement(vtkIdType root, vtkPoints *points);
void GlobalPlacement(
vtkIdType root,
vtkPoints *points,
double refX, // absolute x-y coordinate of
double refY, // parent node; z coordinate
double level ); // derived from level.
float Compactness; // factor used in mapping layer to Z
int Compression; // force a compact layout?
float Spacing; // Scale vertical spacing of cones.
// Values accumulated for possible statistical use
double MinRadius;
double MaxRadius;
int NrCones;
double SumOfRadii;
private:
vtkConeLayoutStrategy(const vtkConeLayoutStrategy&) VTK_DELETE_FUNCTION;
void operator=(const vtkConeLayoutStrategy&) VTK_DELETE_FUNCTION;
};
#endif
|