/usr/include/vtk-6.3/vtkGeoTreeNode.h is in libvtk6-dev 6.3.0+dfsg1-5.
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 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | /*=========================================================================
Program: Visualization Toolkit
Module: vtkGeoTreeNode.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.
-------------------------------------------------------------------------*/
// .NAME vtkGeoTreeNode - Stores data for a patch of the globe.
//
// .SECTION Description
// A self-referential data structure for storing geometry or imagery for
// the geospatial views. The data is organized in a quadtree. Each node
// contains a pointer to its parent and owns references to its four
// child nodes. The ID of each node is unique in its level, and encodes
// the path from the root node in its bits.
// .SECTION See Also
// vtkGeoView vtkGeoView2D vtkGeoTerrain vtkGeoAlignedImageRepresentation
#ifndef vtkGeoTreeNode_h
#define vtkGeoTreeNode_h
#include "vtkGeovisCoreModule.h" // For export macro
#include "vtkObject.h"
#include "vtkSmartPointer.h" // for SP
class vtkPolyData;
class VTKGEOVISCORE_EXPORT vtkGeoTreeNode : public vtkObject
{
public:
static vtkGeoTreeNode *New();
vtkTypeMacro(vtkGeoTreeNode, vtkObject);
void PrintSelf(ostream& os, vtkIndent indent);
// Description:
// The id uniquely specified this node.
// For this implementation I am going to store the branch path
// in the bits.
vtkSetMacro(Id,unsigned long);
vtkGetMacro(Id,unsigned long);
// Description;
// Knowing the level simplifies encoding the branch trace in the Id.
vtkSetMacro(Level, int);
vtkGetMacro(Level, int);
// Description:
// Longitude and latitude range of the terrain model.
vtkSetVector2Macro(LongitudeRange,double);
vtkGetVector2Macro(LongitudeRange,double);
vtkSetVector2Macro(LatitudeRange,double);
vtkGetVector2Macro(LatitudeRange,double);
// Description:
// Get a child of this node. If one is set, then they all should
// set. No not mix subclasses.
void SetChild(vtkGeoTreeNode* node, int idx);
// Description:
// When we merge children to a lower resolution parent, we need
// this reference. It is not referenced counted to avoid reference loops.
// A child should never exist when the parent is destructed anyway.
void SetParent(vtkGeoTreeNode* node)
{ this->Parent = node; }
// Description:
// Manage links to older and newer tree nodes.
// These are used to periodically delete unused patches.
void SetOlder(vtkGeoTreeNode* node)
{ this->Older = node; }
vtkGeoTreeNode* GetOlder()
{ return this->Older; }
void SetNewer(vtkGeoTreeNode* node)
{ this->Newer = node; }
vtkGeoTreeNode* GetNewer()
{ return this->Newer; }
// Description:
// Returns whether this node has valid data associated
// with it, or if it is an "empty" node.
virtual bool HasData()
{ return false; }
// Description:
// Deletes the data associated with the node to make this
// an "empty" node. This is performed when the node has
// been unused for a certain amount of time.
virtual void DeleteData()
{ }
// Description:
// Get this nodes child index in node's parent.
int GetWhichChildAreYou();
// Description:
// This method returns true if this node descends from the
// elder node. The decision is made from the node ids, so the nodes do
// not have to be in the same tree!
bool IsDescendantOf(vtkGeoTreeNode* elder);
// Description:
// Create children of the same type as parent.
// Id, level and Latitude-Longitude ranges are set.
// Returns VTK_ERROR if level gets too deep to create children.
int CreateChildren();
// Description:
// Get the child as a vtkGeoTreeNode.
// Subclasses also implement GetChild() which returns the child
// as the appropriate subclass type.
vtkGeoTreeNode* GetChildTreeNode(int idx)
{ return this->Children[idx]; }
// Description:
// Get the parent as a vtkGeoTreeNode.
// Subclasses also implement GetParent() which returns the parent
// as the appropriate subclass type.
vtkGeoTreeNode* GetParentTreeNode()
{ return this->Parent; }
//BTX
enum NodeStatus
{
NONE,
PROCESSING
};
NodeStatus GetStatus();
void SetStatus(NodeStatus status);
//ETX
// Description:
// Shallow and Deep copy. Deep copy performs a shallow copy
// of the Child nodes.
virtual void ShallowCopy(vtkGeoTreeNode *src);
virtual void DeepCopy(vtkGeoTreeNode *src);
protected:
vtkGeoTreeNode();
~vtkGeoTreeNode();
int Level;
unsigned long Id;
double LongitudeRange[2];
double LatitudeRange[2];
//BTX
vtkSmartPointer<vtkGeoTreeNode> Children[4];
vtkGeoTreeNode * Parent;
NodeStatus Status;
vtkGeoTreeNode* Older;
vtkGeoTreeNode* Newer;
//ETX
private:
vtkGeoTreeNode(const vtkGeoTreeNode&); // Not implemented.
void operator=(const vtkGeoTreeNode&); // Not implemented.
};
#endif
|