QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgssurface.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgssurface.h
3  --------------
4  begin : September 2014
5  copyright : (C) 2014 by Marco Hugentobler
6  email : marco at sourcepole dot ch
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSSURFACEV2_H
19 #define QGSSURFACEV2_H
20 
21 #include "qgis_core.h"
22 #include "qgis.h"
23 #include "qgsabstractgeometry.h"
24 #include "qgsrectangle.h"
25 
26 class QgsPolygon;
27 
32 class CORE_EXPORT QgsSurface: public QgsAbstractGeometry
33 {
34  public:
35 
40  virtual QgsPolygon *surfaceToPolygon() const = 0 SIP_FACTORY;
41 
45  QgsRectangle boundingBox() const override
46  {
47  if ( mBoundingBox.isNull() )
48  {
49  mBoundingBox = calculateBoundingBox();
50  }
51  return mBoundingBox;
52  }
53 
54 #ifndef SIP_RUN
55 
63  inline const QgsSurface *cast( const QgsAbstractGeometry *geom ) const
64  {
65  if ( !geom )
66  return nullptr;
67 
68  QgsWkbTypes::Type flatType = QgsWkbTypes::flatType( geom->wkbType() );
69  if ( flatType == QgsWkbTypes::CurvePolygon
70  || flatType == QgsWkbTypes::Polygon
71  || flatType == QgsWkbTypes::Triangle )
72  return static_cast<const QgsSurface *>( geom );
73  return nullptr;
74  }
75 #endif
76  protected:
77 
78  void clearCache() const override { mBoundingBox = QgsRectangle(); QgsAbstractGeometry::clearCache(); }
79 
81 };
82 
83 #endif // QGSSURFACEV2_H
const QgsSurface * cast(const QgsAbstractGeometry *geom) const
Cast the geom to a QgsSurface.
Definition: qgssurface.h:63
A rectangle specified with double values.
Definition: qgsrectangle.h:40
void clearCache() const override
Clears any cached parameters associated with the geometry, e.g., bounding boxes.
Definition: qgssurface.h:78
QgsWkbTypes::Type wkbType() const
Returns the WKB type of the geometry.
virtual QgsRectangle calculateBoundingBox() const
Default calculator for the minimal bounding box for the geometry.
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:68
QgsRectangle boundingBox() const override
Returns the minimal bounding box for the geometry.
Definition: qgssurface.h:45
#define SIP_FACTORY
Definition: qgis_sip.h:69
Abstract base class for all geometries.
virtual void clearCache() const
Clears any cached parameters associated with the geometry, e.g., bounding boxes.
Polygon geometry type.
Definition: qgspolygon.h:31
static Type flatType(Type type)
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:565
QgsRectangle mBoundingBox
Definition: qgssurface.h:80