2
#include "qgsvectorcolorrampv2.h"
4
#include "qgssymbollayerv2utils.h"
6
#include <stdlib.h> // for random()
8
QgsVectorGradientColorRampV2::QgsVectorGradientColorRampV2( QColor color1, QColor color2 )
9
: mColor1( color1 ), mColor2( color2 )
13
QgsVectorColorRampV2* QgsVectorGradientColorRampV2::create( const QgsStringMap& props )
15
QColor color1 = DEFAULT_GRADIENT_COLOR1;
16
QColor color2 = DEFAULT_GRADIENT_COLOR2;
17
if ( props.contains( "color1" ) )
18
color1 = QgsSymbolLayerV2Utils::decodeColor( props["color1"] );
19
if ( props.contains( "color2" ) )
20
color2 = QgsSymbolLayerV2Utils::decodeColor( props["color2"] );
21
return new QgsVectorGradientColorRampV2( color1, color2 );
24
QColor QgsVectorGradientColorRampV2::color( double value ) const
26
int r = ( int )( mColor1.red() + value * ( mColor2.red() - mColor1.red() ) );
27
int g = ( int )( mColor1.green() + value * ( mColor2.green() - mColor1.green() ) );
28
int b = ( int )( mColor1.blue() + value * ( mColor2.blue() - mColor1.blue() ) );
30
return QColor::fromRgb( r, g, b );
33
QgsVectorColorRampV2* QgsVectorGradientColorRampV2::clone() const
35
return new QgsVectorGradientColorRampV2( mColor1, mColor2 );
38
QgsStringMap QgsVectorGradientColorRampV2::properties() const
41
map["color1"] = QgsSymbolLayerV2Utils::encodeColor( mColor1 );
42
map["color2"] = QgsSymbolLayerV2Utils::encodeColor( mColor2 );
49
QgsVectorRandomColorRampV2::QgsVectorRandomColorRampV2( int count, int hueMin, int hueMax,
50
int satMin, int satMax, int valMin, int valMax )
51
: mCount( count ), mHueMin( hueMin ), mHueMax( hueMax ),
52
mSatMin( satMin ), mSatMax( satMax ), mValMin( valMin ), mValMax( valMax )
57
QgsVectorColorRampV2* QgsVectorRandomColorRampV2::create( const QgsStringMap& props )
59
int count = DEFAULT_RANDOM_COUNT;
60
int hueMin = DEFAULT_RANDOM_HUE_MIN, hueMax = DEFAULT_RANDOM_HUE_MAX;
61
int satMin = DEFAULT_RANDOM_SAT_MIN, satMax = DEFAULT_RANDOM_SAT_MAX;
62
int valMin = DEFAULT_RANDOM_VAL_MIN, valMax = DEFAULT_RANDOM_VAL_MAX;
64
if ( props.contains( "count" ) ) count = props["count"].toInt();
65
if ( props.contains( "hueMin" ) ) hueMin = props["hueMin"].toInt();
66
if ( props.contains( "hueMax" ) ) hueMax = props["hueMax"].toInt();
67
if ( props.contains( "satMin" ) ) satMin = props["satMin"].toInt();
68
if ( props.contains( "satMax" ) ) satMax = props["satMax"].toInt();
69
if ( props.contains( "valMin" ) ) valMin = props["valMin"].toInt();
70
if ( props.contains( "valMax" ) ) valMax = props["valMax"].toInt();
72
return new QgsVectorRandomColorRampV2( count, hueMin, hueMax, satMin, satMax, valMin, valMax );
75
QColor QgsVectorRandomColorRampV2::color( double value ) const
77
int colorCnt = mColors.count();
78
int colorIdx = ( int )( value * colorCnt );
80
if ( colorIdx >= 0 && colorIdx < colorCnt )
81
return mColors.at( colorIdx );
86
QgsVectorColorRampV2* QgsVectorRandomColorRampV2::clone() const
88
return new QgsVectorRandomColorRampV2( mCount, mHueMin, mHueMax, mSatMin, mSatMax, mValMin, mValMax );
91
QgsStringMap QgsVectorRandomColorRampV2::properties() const
94
map["count"] = QString::number( mCount );
95
map["hueMin"] = QString::number( mHueMin );
96
map["hueMax"] = QString::number( mHueMax );
97
map["satMin"] = QString::number( mSatMin );
98
map["satMax"] = QString::number( mSatMax );
99
map["valMin"] = QString::number( mValMin );
100
map["valMax"] = QString::number( mValMax );
104
void QgsVectorRandomColorRampV2::updateColors()
109
for ( int i = 0; i < mCount; i++ )
111
h = ( rand() % ( mHueMax - mHueMin + 1 ) ) + mHueMin;
112
s = ( rand() % ( mSatMax - mSatMin + 1 ) ) + mSatMin;
113
v = ( rand() % ( mValMax - mValMin + 1 ) ) + mValMin;
114
mColors.append( QColor::fromHsv( h, s, v ) );
121
QgsVectorColorBrewerColorRampV2::QgsVectorColorBrewerColorRampV2( QString schemeName, int colors )
122
: mSchemeName( schemeName ), mColors( colors )
127
QgsVectorColorRampV2* QgsVectorColorBrewerColorRampV2::create( const QgsStringMap& props )
129
QString schemeName = DEFAULT_COLORBREWER_SCHEMENAME;
130
int colors = DEFAULT_COLORBREWER_COLORS;
132
if ( props.contains( "schemeName" ) )
133
schemeName = props["schemeName"];
134
if ( props.contains( "colors" ) )
135
colors = props["colors"].toInt();
137
return new QgsVectorColorBrewerColorRampV2( schemeName, colors );
140
#include "qgscolorbrewerpalette.h"
142
void QgsVectorColorBrewerColorRampV2::loadPalette()
144
mPalette = QgsColorBrewerPalette::listSchemeColors( mSchemeName, mColors );
147
QStringList QgsVectorColorBrewerColorRampV2::listSchemeNames()
149
return QgsColorBrewerPalette::listSchemes();
152
QList<int> QgsVectorColorBrewerColorRampV2::listSchemeVariants( QString schemeName )
154
return QgsColorBrewerPalette::listSchemeVariants( schemeName );
157
QColor QgsVectorColorBrewerColorRampV2::color( double value ) const
159
if ( mPalette.isEmpty() || value < 0 || value > 1 )
160
return QColor( 255, 0, 0 ); // red color as a warning :)
162
int paletteEntry = ( int )( value * mPalette.count() );
163
if ( paletteEntry >= mPalette.count() )
164
paletteEntry = mPalette.count() - 1;
165
return mPalette.at( paletteEntry );
168
QgsVectorColorRampV2* QgsVectorColorBrewerColorRampV2::clone() const
170
return new QgsVectorColorBrewerColorRampV2( mSchemeName, mColors );
173
QgsStringMap QgsVectorColorBrewerColorRampV2::properties() const
176
map["schemeName"] = mSchemeName;
177
map["colors"] = QString::number( mColors );