Skip to content

Commit c5bc778

Browse files
committed
Const correctness for QgsDistanceArea
1 parent 5194ce5 commit c5bc778

File tree

3 files changed

+46
-46
lines changed

3 files changed

+46
-46
lines changed

python/core/qgsdistancearea.sip

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,35 +56,35 @@ class QgsDistanceArea
5656
double ellipsoidInverseFlattening() const;
5757

5858
//! general measurement (line distance or polygon area)
59-
double measure( const QgsGeometry* geometry );
59+
double measure( const QgsGeometry* geometry ) const;
6060

6161
//! measures perimeter of polygon
62-
double measurePerimeter( const QgsGeometry* geometry );
62+
double measurePerimeter( const QgsGeometry* geometry ) const;
6363

6464
//! measures line
65-
double measureLine( const QList<QgsPoint>& points );
65+
double measureLine( const QList<QgsPoint>& points ) const;
6666

6767
//! measures line with one segment
68-
double measureLine( const QgsPoint& p1, const QgsPoint& p2 );
68+
double measureLine( const QgsPoint& p1, const QgsPoint& p2 ) const;
6969

7070
//! measures polygon area
71-
double measurePolygon( const QList<QgsPoint>& points );
71+
double measurePolygon( const QList<QgsPoint>& points ) const;
7272

7373
//! compute bearing - in radians
74-
double bearing( const QgsPoint& p1, const QgsPoint& p2 );
74+
double bearing( const QgsPoint& p1, const QgsPoint& p2 ) const;
7575

7676
static QString textUnit( double value, int decimals, QGis::UnitType u, bool isArea, bool keepBaseUnit = false );
7777

7878
//! Helper for conversion between physical units
79-
void convertMeasurement( double &measure /In,Out/, QGis::UnitType &measureUnits /In,Out/, QGis::UnitType displayUnits, bool isArea );
79+
void convertMeasurement( double &measure /In,Out/, QGis::UnitType &measureUnits /In,Out/, QGis::UnitType displayUnits, bool isArea ) const;
8080

8181
protected:
8282
//! measures line distance, line points are extracted from WKB
8383
// @note available in python bindings
84-
// const unsigned char* measureLine( const unsigned char* feature, double* area, bool hasZptr = false );
84+
// const unsigned char* measureLine( const unsigned char* feature, double* area, bool hasZptr = false ) const;
8585
//! measures polygon area and perimeter, vertices are extracted from WKB
8686
// @note available in python bindings
87-
// const unsigned char* measurePolygon( const unsigned char* feature, double* area, double* perimeter, bool hasZptr = false );
87+
// const unsigned char* measurePolygon( const unsigned char* feature, double* area, double* perimeter, bool hasZptr = false ) const;
8888

8989
/**
9090
calculates distance from two points on ellipsoid
@@ -97,22 +97,22 @@ class QgsDistanceArea
9797
@return distance in meters
9898
*/
9999
double computeDistanceBearing( const QgsPoint& p1, const QgsPoint& p2,
100-
double* course1 = NULL, double* course2 = NULL );
100+
double* course1 = NULL, double* course2 = NULL ) const;
101101

102102
//! uses flat / planimetric / Euclidean distance
103-
double computeDistanceFlat( const QgsPoint& p1, const QgsPoint& p2 );
103+
double computeDistanceFlat( const QgsPoint& p1, const QgsPoint& p2 ) const;
104104

105105
//! calculate distance with given coordinates (does not do a transform anymore)
106-
double computeDistance( const QList<QgsPoint>& points );
106+
double computeDistance( const QList<QgsPoint>& points ) const;
107107

108108
/**
109109
calculates area of polygon on ellipsoid
110110
algorithm has been taken from GRASS: gis/area_poly1.c
111111

112112
*/
113-
double computePolygonArea( const QList<QgsPoint>& points );
113+
double computePolygonArea( const QList<QgsPoint>& points ) const;
114114

115-
double computePolygonFlatArea( const QList<QgsPoint>& points );
115+
double computePolygonFlatArea( const QList<QgsPoint>& points ) const;
116116

117117
/**
118118
precalculates some values

src/core/qgsdistancearea.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ bool QgsDistanceArea::setEllipsoid( double semiMajor, double semiMinor )
254254
return true;
255255
}
256256

257-
double QgsDistanceArea::measure( const QgsGeometry *geometry )
257+
double QgsDistanceArea::measure( const QgsGeometry *geometry ) const
258258
{
259259
if ( !geometry )
260260
return 0.0;
@@ -329,7 +329,7 @@ double QgsDistanceArea::measure( const QgsGeometry *geometry )
329329
}
330330
}
331331

332-
double QgsDistanceArea::measurePerimeter( const QgsGeometry* geometry )
332+
double QgsDistanceArea::measurePerimeter( const QgsGeometry* geometry ) const
333333
{
334334
if ( !geometry )
335335
return 0.0;
@@ -389,7 +389,7 @@ double QgsDistanceArea::measurePerimeter( const QgsGeometry* geometry )
389389
}
390390

391391

392-
const unsigned char* QgsDistanceArea::measureLine( const unsigned char* feature, double* area, bool hasZptr )
392+
const unsigned char* QgsDistanceArea::measureLine( const unsigned char* feature, double* area, bool hasZptr ) const
393393
{
394394
QgsConstWkbPtr wkbPtr( feature + 1 + sizeof( int ) );
395395
int nPoints;
@@ -416,7 +416,7 @@ const unsigned char* QgsDistanceArea::measureLine( const unsigned char* feature,
416416
return wkbPtr;
417417
}
418418

419-
double QgsDistanceArea::measureLine( const QList<QgsPoint> &points )
419+
double QgsDistanceArea::measureLine( const QList<QgsPoint> &points ) const
420420
{
421421
if ( points.size() < 2 )
422422
return 0;
@@ -458,7 +458,7 @@ double QgsDistanceArea::measureLine( const QList<QgsPoint> &points )
458458

459459
}
460460

461-
double QgsDistanceArea::measureLine( const QgsPoint &p1, const QgsPoint &p2 )
461+
double QgsDistanceArea::measureLine( const QgsPoint &p1, const QgsPoint &p2 ) const
462462
{
463463
double result;
464464

@@ -494,7 +494,7 @@ double QgsDistanceArea::measureLine( const QgsPoint &p1, const QgsPoint &p2 )
494494
}
495495

496496

497-
const unsigned char *QgsDistanceArea::measurePolygon( const unsigned char* feature, double* area, double* perimeter, bool hasZptr )
497+
const unsigned char *QgsDistanceArea::measurePolygon( const unsigned char* feature, double* area, double* perimeter, bool hasZptr ) const
498498
{
499499
if ( !feature )
500500
{
@@ -589,7 +589,7 @@ const unsigned char *QgsDistanceArea::measurePolygon( const unsigned char* featu
589589
}
590590

591591

592-
double QgsDistanceArea::measurePolygon( const QList<QgsPoint>& points )
592+
double QgsDistanceArea::measurePolygon( const QList<QgsPoint>& points ) const
593593
{
594594
try
595595
{
@@ -616,7 +616,7 @@ double QgsDistanceArea::measurePolygon( const QList<QgsPoint>& points )
616616
}
617617

618618

619-
double QgsDistanceArea::bearing( const QgsPoint& p1, const QgsPoint& p2 )
619+
double QgsDistanceArea::bearing( const QgsPoint& p1, const QgsPoint& p2 ) const
620620
{
621621
QgsPoint pp1 = p1, pp2 = p2;
622622
double bearing;
@@ -643,7 +643,7 @@ double QgsDistanceArea::bearing( const QgsPoint& p1, const QgsPoint& p2 )
643643

644644
double QgsDistanceArea::computeDistanceBearing(
645645
const QgsPoint& p1, const QgsPoint& p2,
646-
double* course1, double* course2 )
646+
double* course1, double* course2 ) const
647647
{
648648
if ( p1.x() == p2.x() && p1.y() == p2.y() )
649649
return 0;
@@ -718,12 +718,12 @@ double QgsDistanceArea::computeDistanceBearing(
718718
return s;
719719
}
720720

721-
double QgsDistanceArea::computeDistanceFlat( const QgsPoint& p1, const QgsPoint& p2 )
721+
double QgsDistanceArea::computeDistanceFlat( const QgsPoint& p1, const QgsPoint& p2 ) const
722722
{
723723
return sqrt(( p2.x() - p1.x() ) * ( p2.x() - p1.x() ) + ( p2.y() - p1.y() ) * ( p2.y() - p1.y() ) );
724724
}
725725

726-
double QgsDistanceArea::computeDistance( const QList<QgsPoint>& points )
726+
double QgsDistanceArea::computeDistance( const QList<QgsPoint>& points ) const
727727
{
728728
if ( points.size() < 2 )
729729
return 0;
@@ -767,7 +767,7 @@ double QgsDistanceArea::computeDistance( const QList<QgsPoint>& points )
767767
// don't know how does it work, but it's working .)
768768
// see G_begin_ellipsoid_polygon_area() in area_poly1.c
769769

770-
double QgsDistanceArea::getQ( double x )
770+
double QgsDistanceArea::getQ( double x ) const
771771
{
772772
double sinx, sinx2;
773773

@@ -778,7 +778,7 @@ double QgsDistanceArea::getQ( double x )
778778
}
779779

780780

781-
double QgsDistanceArea::getQbar( double x )
781+
double QgsDistanceArea::getQbar( double x ) const
782782
{
783783
double cosx, cosx2;
784784

@@ -824,7 +824,7 @@ void QgsDistanceArea::computeAreaInit()
824824
}
825825

826826

827-
double QgsDistanceArea::computePolygonArea( const QList<QgsPoint>& points )
827+
double QgsDistanceArea::computePolygonArea( const QList<QgsPoint>& points ) const
828828
{
829829
double x1, y1, x2, y2, dx, dy;
830830
double Qbar1, Qbar2;
@@ -881,7 +881,7 @@ double QgsDistanceArea::computePolygonArea( const QList<QgsPoint>& points )
881881
return area;
882882
}
883883

884-
double QgsDistanceArea::computePolygonFlatArea( const QList<QgsPoint>& points )
884+
double QgsDistanceArea::computePolygonFlatArea( const QList<QgsPoint>& points ) const
885885
{
886886
// Normal plane area calculations.
887887
double area = 0.0;
@@ -1031,7 +1031,7 @@ QString QgsDistanceArea::textUnit( double value, int decimals, QGis::UnitType u,
10311031
return QLocale::system().toString( value, 'f', decimals ) + unitLabel;
10321032
}
10331033

1034-
void QgsDistanceArea::convertMeasurement( double &measure, QGis::UnitType &measureUnits, QGis::UnitType displayUnits, bool isArea )
1034+
void QgsDistanceArea::convertMeasurement( double &measure, QGis::UnitType &measureUnits, QGis::UnitType displayUnits, bool isArea ) const
10351035
{
10361036
// Helper for converting between meters and feet and degrees and NauticalMiles...
10371037
// The parameters measure and measureUnits are in/out

src/core/qgsdistancearea.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,35 +87,35 @@ class CORE_EXPORT QgsDistanceArea
8787
double ellipsoidInverseFlattening() const { return mInvFlattening; }
8888

8989
//! general measurement (line distance or polygon area)
90-
double measure( const QgsGeometry* geometry );
90+
double measure( const QgsGeometry* geometry ) const;
9191

9292
//! measures perimeter of polygon
93-
double measurePerimeter( const QgsGeometry *geometry );
93+
double measurePerimeter( const QgsGeometry *geometry ) const;
9494

9595
//! measures line
96-
double measureLine( const QList<QgsPoint>& points );
96+
double measureLine( const QList<QgsPoint>& points ) const;
9797

9898
//! measures line with one segment
99-
double measureLine( const QgsPoint& p1, const QgsPoint& p2 );
99+
double measureLine( const QgsPoint& p1, const QgsPoint& p2 ) const;
100100

101101
//! measures polygon area
102-
double measurePolygon( const QList<QgsPoint>& points );
102+
double measurePolygon( const QList<QgsPoint>& points ) const;
103103

104104
//! compute bearing - in radians
105-
double bearing( const QgsPoint& p1, const QgsPoint& p2 );
105+
double bearing( const QgsPoint& p1, const QgsPoint& p2 ) const;
106106

107107
static QString textUnit( double value, int decimals, QGis::UnitType u, bool isArea, bool keepBaseUnit = false );
108108

109109
//! Helper for conversion between physical units
110-
void convertMeasurement( double &measure, QGis::UnitType &measureUnits, QGis::UnitType displayUnits, bool isArea );
110+
void convertMeasurement( double &measure, QGis::UnitType &measureUnits, QGis::UnitType displayUnits, bool isArea ) const;
111111

112112
protected:
113113
//! measures line distance, line points are extracted from WKB
114114
// @note available in python bindings
115-
const unsigned char* measureLine( const unsigned char* feature, double* area, bool hasZptr = false );
115+
const unsigned char* measureLine( const unsigned char* feature, double* area, bool hasZptr = false ) const;
116116
//! measures polygon area and perimeter, vertices are extracted from WKB
117117
// @note available in python bindings
118-
const unsigned char* measurePolygon( const unsigned char* feature, double* area, double* perimeter, bool hasZptr = false );
118+
const unsigned char* measurePolygon( const unsigned char* feature, double* area, double* perimeter, bool hasZptr = false ) const;
119119

120120
/**
121121
calculates distance from two points on ellipsoid
@@ -128,22 +128,22 @@ class CORE_EXPORT QgsDistanceArea
128128
@return distance in meters
129129
*/
130130
double computeDistanceBearing( const QgsPoint& p1, const QgsPoint& p2,
131-
double* course1 = NULL, double* course2 = NULL );
131+
double* course1 = NULL, double* course2 = NULL ) const;
132132

133133
//! uses flat / planimetric / Euclidean distance
134-
double computeDistanceFlat( const QgsPoint& p1, const QgsPoint& p2 );
134+
double computeDistanceFlat( const QgsPoint& p1, const QgsPoint& p2 ) const;
135135

136136
//! calculate distance with given coordinates (does not do a transform anymore)
137-
double computeDistance( const QList<QgsPoint>& points );
137+
double computeDistance( const QList<QgsPoint>& points ) const;
138138

139139
/**
140140
calculates area of polygon on ellipsoid
141141
algorithm has been taken from GRASS: gis/area_poly1.c
142142
143143
*/
144-
double computePolygonArea( const QList<QgsPoint>& points );
144+
double computePolygonArea( const QList<QgsPoint>& points ) const;
145145

146-
double computePolygonFlatArea( const QList<QgsPoint>& points );
146+
double computePolygonFlatArea( const QList<QgsPoint>& points ) const;
147147

148148
/**
149149
precalculates some values
@@ -169,8 +169,8 @@ class CORE_EXPORT QgsDistanceArea
169169

170170
// utility functions for polygon area measurement
171171

172-
double getQ( double x );
173-
double getQbar( double x );
172+
double getQ( double x ) const;
173+
double getQbar( double x ) const;
174174

175175
// temporary area measurement stuff
176176

0 commit comments

Comments
 (0)