mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Add class for storing hierarchy tree of QgsTiledMeshTile
This commit is contained in:
parent
c22796d6fe
commit
08e739fea7
69
python/core/auto_generated/tiledmesh/qgstiledmeshnode.sip.in
Normal file
69
python/core/auto_generated/tiledmesh/qgstiledmeshnode.sip.in
Normal file
@ -0,0 +1,69 @@
|
||||
/************************************************************************
|
||||
* This file has been generated automatically from *
|
||||
* *
|
||||
* src/core/tiledmesh/qgstiledmeshnode.h *
|
||||
* *
|
||||
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
||||
************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class QgsTiledMeshNode
|
||||
{
|
||||
%Docstring(signature="appended")
|
||||
Allows representing :py:class:`QgsTiledMeshTiles` in a hierarchical tree.
|
||||
|
||||
.. versionadded:: 3.34
|
||||
%End
|
||||
|
||||
%TypeHeaderCode
|
||||
#include "qgstiledmeshnode.h"
|
||||
%End
|
||||
public:
|
||||
|
||||
QgsTiledMeshNode( QgsTiledMeshTile *tile /Transfer/ );
|
||||
%Docstring
|
||||
Constructor for QgsTiledMeshNode, for the specified ``tile``.
|
||||
|
||||
Ownership of ``tile`` is transferred to the node.
|
||||
%End
|
||||
|
||||
|
||||
~QgsTiledMeshNode();
|
||||
|
||||
QgsTiledMeshTile *tile();
|
||||
%Docstring
|
||||
Returns the tile associated with the node.
|
||||
%End
|
||||
|
||||
void addChild( QgsTiledMeshNode *child /Transfer/ );
|
||||
%Docstring
|
||||
Adds a ``child`` to this node.
|
||||
|
||||
Ownership of ``child`` is transferred to this node, and the parent for ``child`` will
|
||||
automatically be set to this node.
|
||||
%End
|
||||
|
||||
QgsTiledMeshNode *parentNode() const;
|
||||
%Docstring
|
||||
Returns the parent of this node.
|
||||
%End
|
||||
|
||||
QList< QgsTiledMeshNode * > children() const;
|
||||
%Docstring
|
||||
Returns this node's children.
|
||||
%End
|
||||
|
||||
private:
|
||||
QgsTiledMeshNode( const QgsTiledMeshNode &other );
|
||||
};
|
||||
|
||||
/************************************************************************
|
||||
* This file has been generated automatically from *
|
||||
* *
|
||||
* src/core/tiledmesh/qgstiledmeshnode.h *
|
||||
* *
|
||||
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
|
||||
************************************************************************/
|
@ -716,6 +716,7 @@
|
||||
%Include auto_generated/tiledmesh/qgstiledmeshboundingvolume.sip
|
||||
%Include auto_generated/tiledmesh/qgstiledmeshdataprovider.sip
|
||||
%Include auto_generated/tiledmesh/qgstiledmeshlayer.sip
|
||||
%Include auto_generated/tiledmesh/qgstiledmeshnode.sip
|
||||
%Include auto_generated/tiledmesh/qgstiledmeshrequest.sip
|
||||
%Include auto_generated/tiledmesh/qgstiledmeshtile.sip
|
||||
%Include auto_generated/sensor/qgssensormodel.sip
|
||||
|
@ -344,6 +344,7 @@ set(QGIS_CORE_SRCS
|
||||
tiledmesh/qgstiledmeshdataprovider.cpp
|
||||
tiledmesh/qgstiledmeshlayer.cpp
|
||||
tiledmesh/qgstiledmeshlayerrenderer.cpp
|
||||
tiledmesh/qgstiledmeshnode.cpp
|
||||
tiledmesh/qgstiledmeshprovidermetadata.cpp
|
||||
tiledmesh/qgstiledmeshrequest.cpp
|
||||
tiledmesh/qgstiledmeshtile.cpp
|
||||
@ -1916,6 +1917,7 @@ set(QGIS_CORE_HDRS
|
||||
tiledmesh/qgstiledmeshdataitems.h
|
||||
tiledmesh/qgstiledmeshlayer.h
|
||||
tiledmesh/qgstiledmeshlayerrenderer.h
|
||||
tiledmesh/qgstiledmeshnode.h
|
||||
tiledmesh/qgstiledmeshprovidermetadata.h
|
||||
tiledmesh/qgstiledmeshrequest.h
|
||||
tiledmesh/qgstiledmeshtile.h
|
||||
|
38
src/core/tiledmesh/qgstiledmeshnode.cpp
Normal file
38
src/core/tiledmesh/qgstiledmeshnode.cpp
Normal file
@ -0,0 +1,38 @@
|
||||
/***************************************************************************
|
||||
qgstiledmeshnode.cpp
|
||||
--------------------
|
||||
begin : June 2023
|
||||
copyright : (C) 2023 by Nyall Dawson
|
||||
email : nyall dot dawson at gmail dot com
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#include "qgstiledmeshnode.h"
|
||||
#include "qgstiledmeshtile.h"
|
||||
|
||||
QgsTiledMeshNode::QgsTiledMeshNode( QgsTiledMeshTile *tile )
|
||||
: mTile( tile )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QgsTiledMeshNode::~QgsTiledMeshNode() = default;
|
||||
|
||||
QgsTiledMeshTile *QgsTiledMeshNode::tile()
|
||||
{
|
||||
return mTile.get();
|
||||
}
|
||||
|
||||
void QgsTiledMeshNode::addChild( QgsTiledMeshNode *child )
|
||||
{
|
||||
child->mParent = this;
|
||||
mChildren.append( child );
|
||||
}
|
87
src/core/tiledmesh/qgstiledmeshnode.h
Normal file
87
src/core/tiledmesh/qgstiledmeshnode.h
Normal file
@ -0,0 +1,87 @@
|
||||
/***************************************************************************
|
||||
qgstiledmeshnode.h
|
||||
--------------------
|
||||
begin : June 2023
|
||||
copyright : (C) 2023 by Nyall Dawson
|
||||
email : nyall dot dawson at gmail dot com
|
||||
******************************************************************
|
||||
***************************************************************************/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
***************************************************************************/
|
||||
|
||||
#ifndef QGSTILEDMESHNODE_H
|
||||
#define QGSTILEDMESHNODE_H
|
||||
|
||||
#include "qgis_core.h"
|
||||
#include "qgis.h"
|
||||
|
||||
class QgsTiledMeshTile;
|
||||
|
||||
/**
|
||||
* \ingroup core
|
||||
* \brief Allows representing QgsTiledMeshTiles in a hierarchical tree.
|
||||
*
|
||||
* \since QGIS 3.34
|
||||
*/
|
||||
class CORE_EXPORT QgsTiledMeshNode
|
||||
{
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor for QgsTiledMeshNode, for the specified \a tile.
|
||||
*
|
||||
* Ownership of \a tile is transferred to the node.
|
||||
*/
|
||||
QgsTiledMeshNode( QgsTiledMeshTile *tile SIP_TRANSFER );
|
||||
|
||||
//! QgsTiledMeshNode cannot be copied
|
||||
QgsTiledMeshNode( const QgsTiledMeshNode &other ) = delete;
|
||||
//! QgsTiledMeshNode cannot be copied
|
||||
QgsTiledMeshNode &operator=( const QgsTiledMeshNode &other ) = delete;
|
||||
|
||||
~QgsTiledMeshNode();
|
||||
|
||||
/**
|
||||
* Returns the tile associated with the node.
|
||||
*/
|
||||
QgsTiledMeshTile *tile();
|
||||
|
||||
/**
|
||||
* Adds a \a child to this node.
|
||||
*
|
||||
* Ownership of \a child is transferred to this node, and the parent for \a child will
|
||||
* automatically be set to this node.
|
||||
*/
|
||||
void addChild( QgsTiledMeshNode *child SIP_TRANSFER );
|
||||
|
||||
/**
|
||||
* Returns the parent of this node.
|
||||
*/
|
||||
QgsTiledMeshNode *parentNode() const { return mParent; }
|
||||
|
||||
/**
|
||||
* Returns this node's children.
|
||||
*/
|
||||
QList< QgsTiledMeshNode * > children() const { return mChildren; }
|
||||
|
||||
private:
|
||||
|
||||
#ifdef SIP_RUN
|
||||
QgsTiledMeshNode( const QgsTiledMeshNode &other );
|
||||
#endif
|
||||
|
||||
std::unique_ptr< QgsTiledMeshTile > mTile;
|
||||
|
||||
QgsTiledMeshNode *mParent = nullptr;
|
||||
QList< QgsTiledMeshNode * > mChildren;
|
||||
|
||||
};
|
||||
|
||||
#endif // QGSTILEDMESHNODE_H
|
@ -396,6 +396,7 @@ ADD_PYTHON_TEST(PyQgsTextFragment test_qgstextfragment.py)
|
||||
ADD_PYTHON_TEST(PyQgsTextFormatWidget test_qgstextformatwidget.py)
|
||||
ADD_PYTHON_TEST(PyQgsTiledMeshBoundingVolume test_qgstiledmeshboundingvolume.py)
|
||||
ADD_PYTHON_TEST(PyQgsTiledMeshLayer test_qgstiledmeshlayer.py)
|
||||
ADD_PYTHON_TEST(PyQgsTiledMeshNode test_qgstiledmeshnode.py)
|
||||
ADD_PYTHON_TEST(PyQgsTiledMeshRequest test_qgstiledmeshrequest.py)
|
||||
ADD_PYTHON_TEST(PyQgsTiledMeshTile test_qgstiledmeshtile.py)
|
||||
ADD_PYTHON_TEST(PyQgsTiles test_qgstiles.py)
|
||||
|
50
tests/src/python/test_qgstiledmeshnode.py
Normal file
50
tests/src/python/test_qgstiledmeshnode.py
Normal file
@ -0,0 +1,50 @@
|
||||
"""QGIS Unit tests for QgsTiledMeshNode
|
||||
|
||||
From build dir, run: ctest -R QgsTiledMeshNode -V
|
||||
|
||||
.. note:: This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
"""
|
||||
__author__ = "(C) 2023 by Nyall Dawson"
|
||||
__date__ = "26/07/2023"
|
||||
__copyright__ = "Copyright 2023, The QGIS Project"
|
||||
|
||||
import unittest
|
||||
|
||||
from qgis.core import (
|
||||
QgsTiledMeshNode,
|
||||
QgsTiledMeshTile,
|
||||
)
|
||||
from qgis.testing import start_app, QgisTestCase
|
||||
|
||||
from utilities import unitTestDataPath
|
||||
|
||||
start_app()
|
||||
TEST_DATA_DIR = unitTestDataPath()
|
||||
|
||||
|
||||
class TestQgsTiledMeshNode(QgisTestCase):
|
||||
def test_basic(self):
|
||||
tile = QgsTiledMeshTile("my tile")
|
||||
node = QgsTiledMeshNode(tile)
|
||||
self.assertEqual(node.tile().id(), "my tile")
|
||||
|
||||
def test_children(self):
|
||||
node = QgsTiledMeshNode(QgsTiledMeshTile("parent"))
|
||||
self.assertFalse(node.children())
|
||||
|
||||
child_node = QgsTiledMeshNode(QgsTiledMeshTile("child"))
|
||||
node.addChild(child_node)
|
||||
self.assertEqual(node.children(), [child_node])
|
||||
self.assertEqual(child_node.parentNode(), node)
|
||||
|
||||
child_node2 = QgsTiledMeshNode(QgsTiledMeshTile("child2"))
|
||||
node.addChild(child_node2)
|
||||
self.assertEqual(node.children(), [child_node, child_node2])
|
||||
self.assertEqual(child_node2.parentNode(), node)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
Loading…
x
Reference in New Issue
Block a user