Branch data Line data Source code
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 : : 21 : : /// @cond PRIVATE 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 : : 40 : : #include "qgscoordinatereferencesystem.h" 41 : : #include "qgsdatumtransform.h" 42 : : 43 : 3365 : class QgsCoordinateTransformContextPrivate : public QSharedData 44 : : { 45 : : 46 : : public: 47 : : 48 : 3386 : QgsCoordinateTransformContextPrivate() = default; 49 : : 50 : 0 : QgsCoordinateTransformContextPrivate( const QgsCoordinateTransformContextPrivate &other ) 51 : 0 : : QSharedData( other ) 52 : 0 : { 53 : 0 : other.mLock.lockForRead(); 54 : 0 : mSourceDestDatumTransforms = other.mSourceDestDatumTransforms; 55 : 0 : other.mLock.unlock(); 56 : 0 : } 57 : : 58 : : /** 59 : : * Mapping for coordinate operation Proj string to use for source/destination CRS pairs. 60 : : */ 61 : 198 : class OperationDetails 62 : : { 63 : : public: 64 : : QString operation; 65 : 36 : bool allowFallback = true; 66 : : 67 : 0 : bool operator==( const OperationDetails &other ) const 68 : : { 69 : 0 : return operation == other.operation && allowFallback == other.allowFallback; 70 : : } 71 : : }; 72 : : QMap< QPair< QgsCoordinateReferenceSystem, QgsCoordinateReferenceSystem >, OperationDetails > mSourceDestDatumTransforms; 73 : : 74 : : //! Mutex for making QgsCoordinateTransformContextPrivate thread safe 75 : 3386 : mutable QReadWriteLock mLock{}; 76 : : 77 : : private: 78 : : QgsCoordinateTransformContextPrivate &operator= ( const QgsCoordinateTransformContextPrivate & ) = delete; 79 : : }; 80 : : 81 : : 82 : : /// @endcond 83 : : 84 : : 85 : : #endif // QGSCOORDINATETRANSFORMCONTEXT_PRIVATE_H 86 : : 87 : : 88 : : 89 : :