QGIS API Documentation  3.20.0-Odense (decaadbb31)
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 #define SIP_NO_FILE
39 
41 #include "qgsdatumtransform.h"
42 
43 class QgsCoordinateTransformContextPrivate : public QSharedData
44 {
45 
46  public:
47 
48  QgsCoordinateTransformContextPrivate() = default;
49 
50  QgsCoordinateTransformContextPrivate( const QgsCoordinateTransformContextPrivate &other )
51  : QSharedData( other )
52  {
53  other.mLock.lockForRead();
54  mSourceDestDatumTransforms = other.mSourceDestDatumTransforms;
55  other.mLock.unlock();
56  }
57 
61  class OperationDetails
62  {
63  public:
64  QString operation;
65  bool allowFallback = true;
66 
67  bool operator==( const OperationDetails &other ) const
68  {
69  return operation == other.operation && allowFallback == other.allowFallback;
70  }
71  };
72  QMap< QPair< QgsCoordinateReferenceSystem, QgsCoordinateReferenceSystem >, OperationDetails > mSourceDestDatumTransforms;
73 
75  mutable QReadWriteLock mLock{};
76 
77  private:
78  QgsCoordinateTransformContextPrivate &operator= ( const QgsCoordinateTransformContextPrivate & ) = delete;
79 };
80 
81 
83 
84 
85 #endif // QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H
86 
87 
88 
89 
bool operator==(const QgsFeatureIterator &fi1, const QgsFeatureIterator &fi2)