Krita Source Code Documentation
Loading...
Searching...
No Matches
KoRTree< T >::LeafNode Class Reference

#include <KoRTree.h>

+ Inheritance diagram for KoRTree< T >::LeafNode:

Public Member Functions

LeafNodechooseLeaf (const QRectF &bb) override
 
NonLeafNodechooseNode (const QRectF &bb, int level) override
 
void contained (const QRectF &point, QMap< int, T > &result) const override
 
void contains (const QPointF &point, QMap< int, T > &result) const override
 
virtual const T & getData (int index) const
 
virtual int getDataId (int index) const
 
virtual void insert (const QRectF &bb, const T &data, int id)
 
void intersects (const QRectF &rect, QMap< int, T > &result) const override
 
bool isLeaf () const override
 
void keys (QList< QRectF > &result) const override
 
 LeafNode (int capacity, int level, Node *parent)
 
void move (Node *node, int index) override
 
virtual void remove (const T &data)
 
void remove (int index) override
 
void values (QMap< int, T > &result) const override
 
 ~LeafNode () override
 
- Public Member Functions inherited from KoRTree< T >::Node
virtual const QRectF & boundingBox () const
 
virtual const QRectF & childBoundingBox (int index) const
 
virtual int childCount () const
 
virtual void clear ()
 
virtual bool isRoot () const
 
virtual int level () const
 
 Node (int capacity, int level, Node *parent)
 
virtual Nodeparent () const
 
virtual int place () const
 
virtual void setChildBoundingBox (int index, const QRectF &rect)
 
virtual void setLevel (int level)
 
virtual void setParent (Node *parent)
 
virtual void setPlace (int place)
 
virtual void updateBoundingBox ()
 
virtual ~Node ()
 

Static Public Attributes

static int dataIdCounter = 0
 

Protected Attributes

QVector< T > m_data
 
QVector< int > m_dataIds
 
- Protected Attributes inherited from KoRTree< T >::Node
QRectF m_boundingBox
 
QVector< QRectF > m_childBoundingBox
 
int m_counter
 
int m_level
 
Nodem_parent
 
int m_place
 

Detailed Description

template<typename T>
class KoRTree< T >::LeafNode

Definition at line 277 of file KoRTree.h.

Constructor & Destructor Documentation

◆ LeafNode()

template<typename T >
KoRTree< T >::LeafNode::LeafNode ( int capacity,
int level,
Node * parent )

Definition at line 1001 of file KoRTree.h.

1002 : Node(capacity, level, parent)
1003 , m_data(capacity)
1004 , m_dataIds(capacity)
1005{
1006 //debugFlake << "LeafNode::LeafNode" << this;
1007}
QVector< int > m_dataIds
Definition KoRTree.h:313
QVector< T > m_data
Definition KoRTree.h:312
Node(int capacity, int level, Node *parent)
Definition KoRTree.h:776
virtual int level() const
Definition KoRTree.h:212
virtual Node * parent() const
Definition KoRTree.h:174

◆ ~LeafNode()

template<typename T >
KoRTree< T >::LeafNode::~LeafNode ( )
override

Definition at line 1010 of file KoRTree.h.

1011{
1012 //debugFlake << "LeafNode::~LeafNode" << this;
1013}

Member Function Documentation

◆ chooseLeaf()

template<typename T >
KoRTree< T >::LeafNode * KoRTree< T >::LeafNode::chooseLeaf ( const QRectF & bb)
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1064 of file KoRTree.h.

1065{
1066 Q_UNUSED(bb);
1067 return this;
1068}

◆ chooseNode()

template<typename T >
KoRTree< T >::NonLeafNode * KoRTree< T >::LeafNode::chooseNode ( const QRectF & bb,
int level )
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1071 of file KoRTree.h.

1072{
1073 Q_UNUSED(bb);
1074 Q_UNUSED(level);
1075 qFatal("LeafNode::chooseNode called. This should not happen!");
1076 return 0;
1077}

◆ contained()

template<typename T >
void KoRTree< T >::LeafNode::contained ( const QRectF & point,
QMap< int, T > & result ) const
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1100 of file KoRTree.h.

1101{
1102 for (int i = 0; i < this->m_counter; ++i) {
1103 if (rect.contains(this->m_childBoundingBox[i])) {
1104 result.insert(m_dataIds[i], m_data[i]);
1105 }
1106 }
1107}

◆ contains()

template<typename T >
void KoRTree< T >::LeafNode::contains ( const QPointF & point,
QMap< int, T > & result ) const
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1090 of file KoRTree.h.

1091{
1092 for (int i = 0; i < this->m_counter; ++i) {
1093 if (this->m_childBoundingBox[i].contains(point)) {
1094 result.insert(m_dataIds[i], m_data[i]);
1095 }
1096 }
1097}
void contains(const QPointF &point, QMap< int, T > &result) const override
Definition KoRTree.h:1090
QVector< QRectF > m_childBoundingBox
Definition KoRTree.h:235

References KoRTree< T >::contains().

◆ getData()

template<typename T >
const T & KoRTree< T >::LeafNode::getData ( int index) const
virtual

Definition at line 1126 of file KoRTree.h.

1127{
1128 return m_data[ index ];
1129}

◆ getDataId()

template<typename T >
int KoRTree< T >::LeafNode::getDataId ( int index) const
virtual

Definition at line 1132 of file KoRTree.h.

1133{
1134 return m_dataIds[ index ];
1135}

◆ insert()

template<typename T >
void KoRTree< T >::LeafNode::insert ( const QRectF & bb,
const T & data,
int id )
virtual

Definition at line 1016 of file KoRTree.h.

1017{
1018 m_data[this->m_counter] = data;
1019 m_dataIds[this->m_counter] = id;
1020 this->m_childBoundingBox[this->m_counter] = bb;
1021 this->m_boundingBox = this->m_boundingBox.united(bb);
1022 ++this->m_counter;
1023}
QRectF m_boundingBox
Definition KoRTree.h:234

◆ intersects()

template<typename T >
void KoRTree< T >::LeafNode::intersects ( const QRectF & rect,
QMap< int, T > & result ) const
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1080 of file KoRTree.h.

1081{
1082 for (int i = 0; i < this->m_counter; ++i) {
1083 if (this->m_childBoundingBox[i].intersects(rect)) {
1084 result.insert(m_dataIds[i], m_data[i]);
1085 }
1086 }
1087}
void intersects(const QRectF &rect, QMap< int, T > &result) const override
Definition KoRTree.h:1080

References KoRTree< T >::intersects().

◆ isLeaf()

template<typename T >
bool KoRTree< T >::LeafNode::isLeaf ( ) const
inlineoverridevirtual

Reimplemented from KoRTree< T >::Node.

Definition at line 303 of file KoRTree.h.

303 {
304 return true;
305 }

◆ keys()

template<typename T >
void KoRTree< T >::LeafNode::keys ( QList< QRectF > & result) const
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1110 of file KoRTree.h.

1111{
1112 for (int i = 0; i < this->m_counter; ++i) {
1113 result.push_back(this->m_childBoundingBox[i]);
1114 }
1115}

◆ move()

template<typename T >
void KoRTree< T >::LeafNode::move ( Node * node,
int index )
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1052 of file KoRTree.h.

1053{
1054 LeafNode * n = dynamic_cast<LeafNode*>(node);
1055 if (n) {
1056 //debugFlake << "LeafNode::move" << this << node << index
1057 // << node->nodeId() << "->" << this->nodeId() << n->childBoundingBox( index );
1058 QRectF bb = n->childBoundingBox(index);
1059 insert(bb, n->getData(index), n->getDataId(index));
1060 }
1061}
virtual void insert(const QRectF &bb, const T &data, int id)
Definition KoRTree.h:1016
LeafNode(int capacity, int level, Node *parent)
Definition KoRTree.h:1001

References KoRTree< T >::Node::childBoundingBox(), KoRTree< T >::LeafNode::getData(), KoRTree< T >::LeafNode::getDataId(), and KoRTree< T >::insert().

◆ remove() [1/2]

template<typename T >
void KoRTree< T >::LeafNode::remove ( const T & data)
virtual

Definition at line 1036 of file KoRTree.h.

1037{
1038 int old_counter = this->m_counter;
1039 for (int i = 0; i < this->m_counter; ++i) {
1040 if (m_data[i] == data) {
1041 //debugFlake << "LeafNode::remove id" << i;
1042 remove(i);
1043 break;
1044 }
1045 }
1046 if (old_counter == this->m_counter) {
1047 qWarning() << "LeafNode::remove( const T&data) data not found";
1048 }
1049}
void remove(int index) override
Definition KoRTree.h:1026

References KoRTree< T >::remove().

◆ remove() [2/2]

template<typename T >
void KoRTree< T >::LeafNode::remove ( int index)
overridevirtual

Reimplemented from KoRTree< T >::Node.

Definition at line 1026 of file KoRTree.h.

1027{
1028 for (int i = index + 1; i < this->m_counter; ++i) {
1029 m_data[i-1] = m_data[i];
1030 m_dataIds[i-1] = m_dataIds[i];
1031 }
1032 Node::remove(index);
1033}
bool remove()
remove removes this node from its parent image.
Definition Node.cpp:634

References Node::remove().

◆ values()

template<typename T >
void KoRTree< T >::LeafNode::values ( QMap< int, T > & result) const
overridevirtual

Implements KoRTree< T >::Node.

Definition at line 1118 of file KoRTree.h.

1119{
1120 for (int i = 0; i < this->m_counter; ++i) {
1121 result.insert(m_dataIds[i], m_data[i]);
1122 }
1123}

Member Data Documentation

◆ dataIdCounter

template<class T >
int KoRTree< T >::LeafNode::dataIdCounter = 0
static

Definition at line 280 of file KoRTree.h.

◆ m_data

template<typename T >
QVector<T> KoRTree< T >::LeafNode::m_data
protected

Definition at line 312 of file KoRTree.h.

◆ m_dataIds

template<typename T >
QVector<int> KoRTree< T >::LeafNode::m_dataIds
protected

Definition at line 313 of file KoRTree.h.


The documentation for this class was generated from the following file: