QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
3d
qgsraycastresult.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsraycastresult.cpp
3
---------------------
4
begin : September 2025
5
copyright : (C) 2025 by Stefanos Natsis
6
email : uclaros at gmail dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
#include "
qgsraycastresult.h
"
17
18
#include "
qgsmaplayer.h
"
19
20
QgsRayCastResult::QgsRayCastResult
()
21
{}
22
23
bool
QgsRayCastResult::isEmpty
()
const
24
{
25
return
mLayerResults.isEmpty() && mTerrainResults.isEmpty();
26
}
27
28
bool
QgsRayCastResult::hasLayerHits
()
const
29
{
30
return
!mLayerResults.isEmpty();
31
}
32
33
QList<QgsMapLayer *>
QgsRayCastResult::layers
()
const
34
{
35
QList<QgsMapLayer *> layerList { mLayerResults.keyBegin(), mLayerResults.keyEnd() };
36
37
// Remove any deleted layers, or python won't be happy
38
layerList.erase( std::remove_if( layerList.begin(), layerList.end(), [
this
](
QgsMapLayer
*l ) { return mLayerPointers[l].isNull(); } ), layerList.end() );
39
40
return
layerList;
41
}
42
43
QList<QgsRayCastHit>
QgsRayCastResult::layerHits
(
QgsMapLayer
*layer )
const
44
{
45
return
mLayerResults.value( layer );
46
}
47
48
bool
QgsRayCastResult::hasTerrainHits
()
const
49
{
50
return
!mTerrainResults.isEmpty();
51
}
52
53
QList<QgsRayCastHit>
QgsRayCastResult::terrainHits
()
const
54
{
55
return
mTerrainResults;
56
}
57
58
QList<QgsRayCastHit>
QgsRayCastResult::allHits
()
const
59
{
60
QList<QgsRayCastHit> result { mTerrainResults.constBegin(), mTerrainResults.constEnd() };
61
62
for
(
auto
it = mLayerResults.constBegin(); it != mLayerResults.constEnd(); ++it )
63
{
64
result.append( { it->constBegin(), it->constEnd() } );
65
}
66
67
return
result;
68
}
69
70
void
QgsRayCastResult::addLayerHits
(
QgsMapLayer
*layer,
const
QList<QgsRayCastHit> &hits )
71
{
72
mLayerResults[layer].append( hits );
73
if
( !mLayerPointers.contains( layer ) )
74
{
75
mLayerPointers[layer] = layer;
76
}
77
}
78
79
void
QgsRayCastResult::addTerrainHits
(
const
QList<QgsRayCastHit> &hits )
80
{
81
mTerrainResults.append( hits );
82
}
QgsMapLayer
Base class for all map layer types.
Definition
qgsmaplayer.h:83
QgsRayCastResult::terrainHits
QList< QgsRayCastHit > terrainHits() const
Returns all terrain intersection hits.
Definition
qgsraycastresult.cpp:53
QgsRayCastResult::layerHits
QList< QgsRayCastHit > layerHits(QgsMapLayer *layer) const
Returns all hits from entities of the specific layer.
Definition
qgsraycastresult.cpp:43
QgsRayCastResult::hasTerrainHits
bool hasTerrainHits() const
Returns true is the ray intersected the terrain.
Definition
qgsraycastresult.cpp:48
QgsRayCastResult::hasLayerHits
bool hasLayerHits() const
Returns true is ray hit at least one entity from a layer.
Definition
qgsraycastresult.cpp:28
QgsRayCastResult::layers
QList< QgsMapLayer * > layers() const
Returns pointers to the map layers of entities that were intersected by the ray.
Definition
qgsraycastresult.cpp:33
QgsRayCastResult::allHits
QList< QgsRayCastHit > allHits() const
Returns all the hits from both layer and terrain intersections.
Definition
qgsraycastresult.cpp:58
QgsRayCastResult::addLayerHits
void addLayerHits(QgsMapLayer *layer, const QList< QgsRayCastHit > &hits)
Adds all hits from layer to the result.
Definition
qgsraycastresult.cpp:70
QgsRayCastResult::addTerrainHits
void addTerrainHits(const QList< QgsRayCastHit > &hits)
Adds all terrain hits to the result.
Definition
qgsraycastresult.cpp:79
QgsRayCastResult::QgsRayCastResult
QgsRayCastResult()
Ctor.
Definition
qgsraycastresult.cpp:20
QgsRayCastResult::isEmpty
bool isEmpty() const
Returns true is ray did not intersect any layer or terrain entity.
Definition
qgsraycastresult.cpp:23
qgsmaplayer.h
qgsraycastresult.h
Generated on
for QGIS API Documentation by
1.17.0