Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgspointcloudrgbrenderer.h 3 : : -------------------- 4 : : begin : October 2020 5 : : copyright : (C) 2020 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 QGSPOINTCLOUDRGBRENDERER_H 19 : : #define QGSPOINTCLOUDRGBRENDERER_H 20 : : 21 : : #include "qgspointcloudrenderer.h" 22 : : #include "qgis_core.h" 23 : : #include "qgis_sip.h" 24 : : 25 : : #include "qgscontrastenhancement.h" 26 : : 27 : : /** 28 : : * \ingroup core 29 : : * \brief An RGB renderer for 2d visualisation of point clouds using embedded red, green and blue attributes. 30 : : * 31 : : * \since QGIS 3.18 32 : : */ 33 : 0 : class CORE_EXPORT QgsPointCloudRgbRenderer : public QgsPointCloudRenderer 34 : : { 35 : : public: 36 : : 37 : : /** 38 : : * Constructor for QgsPointCloudRgbRenderer. 39 : : */ 40 : : QgsPointCloudRgbRenderer(); 41 : : 42 : : QString type() const override; 43 : : QgsPointCloudRenderer *clone() const override; 44 : : void renderBlock( const QgsPointCloudBlock *block, QgsPointCloudRenderContext &context ) override; 45 : : QDomElement save( QDomDocument &doc, const QgsReadWriteContext &context ) const override; 46 : : QSet< QString > usedAttributes( const QgsPointCloudRenderContext &context ) const override; 47 : : 48 : : /** 49 : : * Creates an RGB renderer from an XML \a element. 50 : : */ 51 : : static QgsPointCloudRenderer *create( QDomElement &element, const QgsReadWriteContext &context ) SIP_FACTORY; 52 : : 53 : : /** 54 : : * Returns the attribute to use for the red channel. 55 : : * 56 : : * \see greenAttribute() 57 : : * \see blueAttribute() 58 : : * \see setRedAttribute() 59 : : */ 60 : : QString redAttribute() const; 61 : : 62 : : /** 63 : : * Sets the \a attribute to use for the red channel. 64 : : * 65 : : * \see setGreenAttribute() 66 : : * \see setBlueAttribute() 67 : : * \see redAttribute() 68 : : */ 69 : : void setRedAttribute( const QString &attribute ); 70 : : 71 : : /** 72 : : * Returns the attribute to use for the green channel. 73 : : * 74 : : * \see redAttribute() 75 : : * \see blueAttribute() 76 : : * \see setGreenAttribute() 77 : : */ 78 : : QString greenAttribute() const; 79 : : 80 : : /** 81 : : * Sets the \a attribute to use for the green channel. 82 : : * 83 : : * \see setRedAttribute() 84 : : * \see setBlueAttribute() 85 : : * \see greenAttribute() 86 : : */ 87 : : void setGreenAttribute( const QString &attribute ); 88 : : 89 : : /** 90 : : * Returns the attribute to use for the blue channel. 91 : : * 92 : : * \see greenAttribute() 93 : : * \see redAttribute() 94 : : * \see setBlueAttribute() 95 : : */ 96 : : QString blueAttribute() const; 97 : : 98 : : /** 99 : : * Sets the \a attribute to use for the blue channel. 100 : : * 101 : : * \see setRedAttribute() 102 : : * \see setGreenAttribute() 103 : : * \see blueAttribute() 104 : : */ 105 : : void setBlueAttribute( const QString &attribute ); 106 : : 107 : : /** 108 : : * Returns the contrast enhancement to use for the red channel. 109 : : * 110 : : * \see setRedContrastEnhancement() 111 : : * \see greenContrastEnhancement() 112 : : * \see blueContrastEnhancement() 113 : : */ 114 : : const QgsContrastEnhancement *redContrastEnhancement() const; 115 : : 116 : : /** 117 : : * Sets the contrast \a enhancement to use for the red channel. 118 : : * 119 : : * Ownership of \a enhancement is transferred. 120 : : * 121 : : * \see redContrastEnhancement() 122 : : * \see setGreenContrastEnhancement() 123 : : * \see setBlueContrastEnhancement() 124 : : */ 125 : : void setRedContrastEnhancement( QgsContrastEnhancement *enhancement SIP_TRANSFER ); 126 : : 127 : : /** 128 : : * Returns the contrast enhancement to use for the green channel. 129 : : * 130 : : * \see setGreenContrastEnhancement() 131 : : * \see redContrastEnhancement() 132 : : * \see blueContrastEnhancement() 133 : : */ 134 : : const QgsContrastEnhancement *greenContrastEnhancement() const; 135 : : 136 : : /** 137 : : * Sets the contrast \a enhancement to use for the green channel. 138 : : * 139 : : * Ownership of \a enhancement is transferred. 140 : : * 141 : : * \see greenContrastEnhancement() 142 : : * \see setRedContrastEnhancement() 143 : : * \see setBlueContrastEnhancement() 144 : : */ 145 : : void setGreenContrastEnhancement( QgsContrastEnhancement *enhancement SIP_TRANSFER ); 146 : : 147 : : /** 148 : : * Returns the contrast enhancement to use for the blue channel. 149 : : * 150 : : * \see setBlueContrastEnhancement() 151 : : * \see redContrastEnhancement() 152 : : * \see greenContrastEnhancement() 153 : : */ 154 : : const QgsContrastEnhancement *blueContrastEnhancement() const; 155 : : 156 : : /** 157 : : * Sets the contrast \a enhancement to use for the blue channel. 158 : : * 159 : : * Ownership of \a enhancement is transferred. 160 : : * 161 : : * \see blueContrastEnhancement() 162 : : * \see setRedContrastEnhancement() 163 : : * \see setGreenContrastEnhancement() 164 : : */ 165 : : void setBlueContrastEnhancement( QgsContrastEnhancement *enhancement SIP_TRANSFER ); 166 : : 167 : : private: 168 : : 169 : 0 : QString mRedAttribute = QStringLiteral( "Red" ); 170 : 0 : QString mGreenAttribute = QStringLiteral( "Green" ); 171 : 0 : QString mBlueAttribute = QStringLiteral( "Blue" ); 172 : : 173 : : std::unique_ptr< QgsContrastEnhancement > mRedContrastEnhancement; 174 : : std::unique_ptr< QgsContrastEnhancement > mGreenContrastEnhancement; 175 : : std::unique_ptr< QgsContrastEnhancement > mBlueContrastEnhancement; 176 : : 177 : : }; 178 : : 179 : : #endif // QGSPOINTCLOUDRGBRENDERER_H