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