QGIS API Documentation 3.99.0-Master (c22de0620c0)
Loading...
Searching...
No Matches
qgscoordinatetransformcontext_p.h
Go to the documentation of this file.
1/***************************************************************************
2 qgscoordinatetransformcontext_p.h
3 -------------------------------
4 begin : November 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
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 QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
19#define QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
20
22
23//
24// W A R N I N G
25// -------------
26//
27// This file is not part of the QGIS API. It exists purely as an
28// implementation detail. This header file may change from version to
29// version without notice, or even be removed.
30//
31
32/***************************************************************************
33 * This class is considered CRITICAL and any change MUST be accompanied with
34 * full unit tests in testqgsfeature.cpp.
35 * See details in QEP #17
36 ****************************************************************************/
37
38
40#include "qgsdatumtransform.h"
41
42#define SIP_NO_FILE
43
44class QgsCoordinateTransformContextPrivate : public QSharedData
45{
46
47 public:
48
49 QgsCoordinateTransformContextPrivate() = default;
50
51 QgsCoordinateTransformContextPrivate( const QgsCoordinateTransformContextPrivate &other )
52 : QSharedData( other )
53 , mLock{}
54 {
55 other.mLock.lockForRead();
56 mSourceDestDatumTransforms = other.mSourceDestDatumTransforms;
57 other.mLock.unlock();
58 }
59
63 class OperationDetails
64 {
65 public:
66 QString operation;
67 bool allowFallback = true;
68
69 // TODO c++20 - replace with = default
70 bool operator==( const OperationDetails &other ) const
71 {
72 return operation == other.operation && allowFallback == other.allowFallback;
73 }
74 };
75 QMap< QPair< QgsCoordinateReferenceSystem, QgsCoordinateReferenceSystem >, OperationDetails > mSourceDestDatumTransforms;
76
78 mutable QReadWriteLock mLock{};
79
80 private:
81 QgsCoordinateTransformContextPrivate &operator= ( const QgsCoordinateTransformContextPrivate & ) = delete;
82};
83
84
86
87
88#endif // QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
89
90
91
92
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)