ITK
6.0.0
Insight Toolkit
ITK
Modules
Core
Common
include
itkOctreeNode.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright NumFOCUS
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* https://www.apache.org/licenses/LICENSE-2.0.txt
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*=========================================================================*/
18
#ifndef itkOctreeNode_h
19
#define itkOctreeNode_h
20
#include "
itkMacro.h
"
21
#include "
itkCommonEnums.h
"
22
23
namespace
itk
24
{
25
26
// Forward reference because of circular dependencies
27
class
ITK_FORWARD_EXPORT
OctreeNodeBranch
;
28
class
ITK_FORWARD_EXPORT
OctreeBase
;
29
46
class
ITKCommon_EXPORT
OctreeNode
47
{
48
public
:
49
55
OctreeNode
();
56
60
virtual
~
OctreeNode
();
61
62
using
LeafIdentifierEnum
=
OctreeEnums::LeafIdentifier
;
63
#if !defined(ITK_LEGACY_REMOVE)
64
// We need to expose the enum values at the class level
65
// for backwards compatibility
66
static
constexpr
LeafIdentifierEnum
ZERO = LeafIdentifierEnum::ZERO;
67
static
constexpr
LeafIdentifierEnum
ONE = LeafIdentifierEnum::ONE;
68
static
constexpr
LeafIdentifierEnum
TWO = LeafIdentifierEnum::TWO;
69
static
constexpr
LeafIdentifierEnum
THREE = LeafIdentifierEnum::THREE;
70
static
constexpr
LeafIdentifierEnum
FOUR = LeafIdentifierEnum::FOUR;
71
static
constexpr
LeafIdentifierEnum
FIVE = LeafIdentifierEnum::FIVE;
72
static
constexpr
LeafIdentifierEnum
SIX = LeafIdentifierEnum::SIX;
73
static
constexpr
LeafIdentifierEnum
SEVEN = LeafIdentifierEnum::SEVEN;
74
#endif
75
83
OctreeNode
&
84
GetChild(
const
LeafIdentifierEnum
ChildID)
const
;
85
86
OctreeNode
&
87
GetChild(
const
LeafIdentifierEnum
ChildID);
97
long
98
GetColor()
const
;
99
106
void
107
SetColor(
int
color);
108
114
void
115
SetBranch(
OctreeNodeBranch
* NewBranch);
116
121
bool
122
IsNodeColored()
const
;
123
124
inline
void
125
SetParentOctree(
OctreeBase
* parent)
126
{
127
m_Parent = parent;
128
}
129
130
protected
:
131
private
:
136
void
137
RemoveChildren();
138
142
OctreeNodeBranch
* m_Branch{};
143
OctreeBase
* m_Parent{};
144
};
145
146
class
ITKCommon_EXPORT
OctreeNodeBranch
147
{
148
public
:
149
OctreeNodeBranch
() =
default
;
150
OctreeNodeBranch
(
OctreeBase
* parent)
151
{
152
for
(
auto
& leaf : m_Leaves)
153
{
154
leaf.SetParentOctree(parent);
155
}
156
}
157
158
inline
OctreeNode
*
159
GetLeaf
(
OctreeNode::LeafIdentifierEnum
LeafID)
160
{
161
return
&m_Leaves[static_cast<uint8_t>(LeafID)];
162
}
163
164
private
:
165
OctreeNode
m_Leaves[8];
166
};
167
168
}
// namespace itk
169
#endif
/* itkOctreeNode_h */
itk::OctreeEnums::LeafIdentifier
LeafIdentifier
Definition:
itkCommonEnums.h:226
itk::OctreeNodeBranch::OctreeNodeBranch
OctreeNodeBranch(OctreeBase *parent)
Definition:
itkOctreeNode.h:150
itk::OctreeNodeBranch::GetLeaf
OctreeNode * GetLeaf(OctreeNode::LeafIdentifierEnum LeafID)
Definition:
itkOctreeNode.h:159
itk::OctreeNodeBranch
class ITK_FORWARD_EXPORT OctreeNodeBranch
Definition:
itkOctreeNode.h:27
itk::OctreeBase
Provides non-templated access to templated instances of Octree.
Definition:
itkOctree.h:40
itk::OctreeNodeBranch
Definition:
itkOctreeNode.h:146
itkMacro.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition:
itkAnatomicalOrientation.h:29
itkCommonEnums.h
itk::OctreeNode
A data structure representing a node in an Octree.
Definition:
itkOctreeNode.h:46
Generated on
unknown
for ITK by
1.8.16