Branch data Line data Source code
1 : : /* ************************************************************************** 2 : : qgsrastertransparency.h - description 3 : : ------------------- 4 : : begin : Mon Nov 30 2007 5 : : copyright : (C) 2007 by Peter J. Ersts 6 : : email : ersts@amnh.org 7 : : 8 : : ****************************************************************************/ 9 : : 10 : : /* ************************************************************************** 11 : : * * 12 : : * This program is free software; you can redistribute it and/or modify * 13 : : * it under the terms of the GNU General Public License as published by * 14 : : * the Free Software Foundation; either version 2 of the License, or * 15 : : * (at your option) any later version. * 16 : : * * 17 : : ***************************************************************************/ 18 : : #ifndef QGSRASTERTRANSPARENCY_H 19 : : #define QGSRASTERTRANSPARENCY_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include "qgis_sip.h" 23 : : #include <QList> 24 : : class QDomDocument; 25 : : class QDomElement; 26 : : 27 : : /** 28 : : * \ingroup core 29 : : * \brief Defines the list of pixel values to be considered as transparent or semi 30 : : * transparent when rendering rasters. 31 : : */ 32 : 0 : class CORE_EXPORT QgsRasterTransparency 33 : : { 34 : : 35 : : public: 36 : : 37 : : /** 38 : : * Constructor for QgsRasterTransparency. 39 : : */ 40 : 0 : QgsRasterTransparency() = default; 41 : : 42 : : // 43 : : // Structs to hold transparent pixel values 44 : : // 45 : : struct TransparentThreeValuePixel 46 : : { 47 : : double red; 48 : : double green; 49 : : double blue; 50 : : double percentTransparent; 51 : : }; 52 : : 53 : : struct TransparentSingleValuePixel 54 : : { 55 : : double min; 56 : : double max; 57 : : double percentTransparent; 58 : : }; 59 : : 60 : : // 61 : : // Initializer, Accessor and mutator for transparency tables. 62 : : // 63 : : 64 : : /** 65 : : * Returns the transparent single value pixel list. 66 : : * \see setTransparentSingleValuePixelList() 67 : : */ 68 : : QList<QgsRasterTransparency::TransparentSingleValuePixel> transparentSingleValuePixelList() const; 69 : : 70 : : /** 71 : : * Returns the transparent three value pixel list. 72 : : * \see setTransparentThreeValuePixelList() 73 : : */ 74 : : QList<QgsRasterTransparency::TransparentThreeValuePixel> transparentThreeValuePixelList() const; 75 : : 76 : : /** 77 : : * Resets the transparency list to a single \a value. 78 : : */ 79 : : void initializeTransparentPixelList( double value ); 80 : : 81 : : /** 82 : : * Resets the transparency list to single red, green, and blue values. 83 : : */ 84 : : void initializeTransparentPixelList( double redValue, double greenValue, double blueValue ); 85 : : 86 : : /** 87 : : * Sets the transparent single value pixel list, replacing the whole existing list. 88 : : * \see transparentSingleValuePixelList() 89 : : */ 90 : : void setTransparentSingleValuePixelList( const QList<QgsRasterTransparency::TransparentSingleValuePixel> &newList ); 91 : : 92 : : /** 93 : : * Sets the transparent three value pixel list, replacing the whole existing list. 94 : : * \see transparentThreeValuePixelList() 95 : : */ 96 : : void setTransparentThreeValuePixelList( const QList<QgsRasterTransparency::TransparentThreeValuePixel> &newList ); 97 : : 98 : : /** 99 : : * Returns the transparency value for a single \a value pixel. 100 : : * 101 : : * Searches through the transparency list, and if a match is found, the global transparency value is scaled 102 : : * by the stored transparency value. 103 : : * 104 : : * \param value the needle to search for in the transparency hay stack 105 : : * \param globalTransparency the overall transparency level for the layer 106 : : */ 107 : : int alphaValue( double value, int globalTransparency = 255 ) const; 108 : : 109 : : //! \brief 110 : : 111 : : /** 112 : : * Returns the transparency value for a RGB pixel. 113 : : * 114 : : * Searches through the transparency list, if a match is found, the global transparency value is scaled 115 : : * by the stored transparency value. 116 : : * \param redValue the red portion of the needle to search for in the transparency hay stack 117 : : * \param greenValue the green portion of the needle to search for in the transparency hay stack 118 : : * \param blueValue the green portion of the needle to search for in the transparency hay stack 119 : : * \param globalTransparency the overall transparency level for the layer 120 : : */ 121 : : int alphaValue( double redValue, double greenValue, double blueValue, int globalTransparency = 255 ) const; 122 : : 123 : : //! True if there are no entries in the pixel lists except the nodata value 124 : : bool isEmpty() const; 125 : : 126 : : /** 127 : : * Writes the transparency information to an XML document. 128 : : */ 129 : : void writeXml( QDomDocument &doc, QDomElement &parentElem ) const; 130 : : 131 : : /** 132 : : * Reads the transparency information from an XML document. 133 : : */ 134 : : void readXml( const QDomElement &elem ); 135 : : 136 : : private: 137 : : //! \brief The list to hold transparency values for RGB layers 138 : : QList<QgsRasterTransparency::TransparentThreeValuePixel> mTransparentThreeValuePixelList; 139 : : 140 : : //! \brief The list to hold transparency values for single value pixel layers 141 : : QList<QgsRasterTransparency::TransparentSingleValuePixel> mTransparentSingleValuePixelList; 142 : : 143 : : }; 144 : : #endif