QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
Index.h
Go to the documentation of this file.
1
/******************************************************************************
2
* Project: libspatialindex - A C++ library for spatial indexing
3
* Author: Marios Hadjieleftheriou,
[email protected]
4
******************************************************************************
5
* Copyright (c) 2002, Marios Hadjieleftheriou
6
*
7
* All rights reserved.
8
*
9
* Permission is hereby granted, free of charge, to any person obtaining a
10
* copy of this software and associated documentation files (the "Software"),
11
* to deal in the Software without restriction, including without limitation
12
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
13
* and/or sell copies of the Software, and to permit persons to whom the
14
* Software is furnished to do so, subject to the following conditions:
15
*
16
* The above copyright notice and this permission notice shall be included
17
* in all copies or substantial portions of the Software.
18
*
19
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
24
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25
* DEALINGS IN THE SOFTWARE.
26
******************************************************************************/
27
28
#pragma once
29
30
namespace
SpatialIndex
31
{
32
namespace
RTree
33
{
34
class
Index
:
public
Node
35
{
36
public
:
37
virtual
~Index
();
38
39
protected
:
40
Index
(
RTree
* pTree,
id_type
id
, uint32_t level);
41
42
virtual
NodePtr
chooseSubtree
(
const
Region
& mbr, uint32_t level, std::stack<id_type>& pathBuffer);
43
virtual
NodePtr
findLeaf
(
const
Region
& mbr,
id_type
id
, std::stack<id_type>& pathBuffer);
44
45
virtual
void
split
(uint32_t dataLength,
byte
* pData,
Region
& mbr,
id_type
id
,
NodePtr
& left,
NodePtr
& right);
46
47
uint32_t
findLeastEnlargement
(
const
Region
&)
const
;
48
uint32_t
findLeastOverlap
(
const
Region
&)
const
;
49
50
void
adjustTree
(
Node
*, std::stack<id_type>&);
51
void
adjustTree
(
Node
*,
Node
*, std::stack<id_type>&,
byte
* overflowTable);
52
53
class
OverlapEntry
54
{
55
public
:
56
uint32_t
m_index
;
57
double
m_enlargement
;
58
RegionPtr
m_original
;
59
RegionPtr
m_combined
;
60
double
m_oa
;
61
double
m_ca
;
62
63
static
int
compareEntries
(
const
void
* pv1,
const
void
* pv2)
64
{
65
OverlapEntry
* pe1 = * (
OverlapEntry
**) pv1;
66
OverlapEntry
* pe2 = * (
OverlapEntry
**) pv2;
67
68
if
(pe1->
m_enlargement
< pe2->
m_enlargement
)
return
-1;
69
if
(pe1->
m_enlargement
> pe2->
m_enlargement
)
return
1;
70
return
0;
71
}
72
};
// OverlapEntry
73
74
friend
class
RTree
;
75
friend
class
Node
;
76
friend
class
BulkLoader
;
77
};
// Index
78
}
79
}
SpatialIndex::RTree::BulkLoader
Definition
BulkLoader.h:106
SpatialIndex::RTree::Index::OverlapEntry
Definition
Index.h:54
SpatialIndex::RTree::Index::OverlapEntry::m_combined
RegionPtr m_combined
Definition
Index.h:59
SpatialIndex::RTree::Index::OverlapEntry::m_oa
double m_oa
Definition
Index.h:60
SpatialIndex::RTree::Index::OverlapEntry::m_original
RegionPtr m_original
Definition
Index.h:58
SpatialIndex::RTree::Index::OverlapEntry::m_index
uint32_t m_index
Definition
Index.h:56
SpatialIndex::RTree::Index::OverlapEntry::compareEntries
static int compareEntries(const void *pv1, const void *pv2)
Definition
Index.h:63
SpatialIndex::RTree::Index::OverlapEntry::m_enlargement
double m_enlargement
Definition
Index.h:57
SpatialIndex::RTree::Index::OverlapEntry::m_ca
double m_ca
Definition
Index.h:61
SpatialIndex::RTree::Index
Definition
Index.h:35
SpatialIndex::RTree::Index::findLeastOverlap
uint32_t findLeastOverlap(const Region &) const
SpatialIndex::RTree::Index::adjustTree
void adjustTree(Node *, Node *, std::stack< id_type > &, byte *overflowTable)
SpatialIndex::RTree::Index::chooseSubtree
virtual NodePtr chooseSubtree(const Region &mbr, uint32_t level, std::stack< id_type > &pathBuffer)
SpatialIndex::RTree::Index::split
virtual void split(uint32_t dataLength, byte *pData, Region &mbr, id_type id, NodePtr &left, NodePtr &right)
SpatialIndex::RTree::Index::findLeastEnlargement
uint32_t findLeastEnlargement(const Region &) const
SpatialIndex::RTree::Index::~Index
virtual ~Index()
SpatialIndex::RTree::Index::adjustTree
void adjustTree(Node *, std::stack< id_type > &)
SpatialIndex::RTree::Index::Index
Index(RTree *pTree, id_type id, uint32_t level)
SpatialIndex::RTree::Index::findLeaf
virtual NodePtr findLeaf(const Region &mbr, id_type id, std::stack< id_type > &pathBuffer)
SpatialIndex::RTree::Node
Definition
Node.h:42
SpatialIndex::RTree::RTree
Definition
RTree.h:39
SpatialIndex::Region
Definition
Region.h:33
Tools::PoolPointer< Node >
SpatialIndex
Definition
CustomStorage.h:34
SpatialIndex::id_type
int64_t id_type
Definition
SpatialIndex.h:43
src
3rdparty
legacy
spatialindexnavel
src
rtree
Index.h
Generated on Fri Jul 18 2025 09:41:50 for QCAD by
1.10.0