34static QColor _interpolateRgb(
const QColor &c1,
const QColor &c2,
const double value,
const Qgis::AngularDirection )
36 if ( std::isnan( value ) )
39 const qreal red1 = c1.redF();
40 const qreal red2 = c2.redF();
41 const qreal red = ( red1 + value * ( red2 - red1 ) );
43 const qreal green1 = c1.greenF();
44 const qreal green2 = c2.greenF();
45 const qreal green = ( green1 + value * ( green2 - green1 ) );
47 const qreal blue1 = c1.blueF();
48 const qreal blue2 = c2.blueF();
49 const qreal blue = ( blue1 + value * ( blue2 - blue1 ) );
51 const qreal alpha1 = c1.alphaF();
52 const qreal alpha2 = c2.alphaF();
53 const qreal alpha = ( alpha1 + value * ( alpha2 - alpha1 ) );
55 return QColor::fromRgbF( red, green, blue, alpha );
58static QColor _interpolateHsv(
const QColor &c1,
const QColor &c2,
const double value,
const Qgis::AngularDirection direction )
60 if ( std::isnan( value ) )
63 qreal hue1 = c1.hsvHueF();
64 qreal hue2 = c2.hsvHueF();
68 else if ( hue2 == -1 )
79 hue = hue1 - value * ( hue1 - hue2 );
92 hue = hue1 + value * ( hue2 - hue1 );
102 const qreal saturation1 = c1.hsvSaturationF();
103 const qreal saturation2 = c2.hsvSaturationF();
104 const qreal saturation = ( saturation1 + value * ( saturation2 - saturation1 ) );
106 const qreal value1 = c1.valueF();
107 const qreal value2 = c2.valueF();
108 const qreal valueOut = ( value1 + value * ( value2 - value1 ) );
110 const qreal alpha1 = c1.alphaF();
111 const qreal alpha2 = c2.alphaF();
112 const qreal alpha = ( alpha1 + value * ( alpha2 - alpha1 ) );
114 return QColor::fromHsvF( hue > 1 ? hue - 1 : hue, saturation, valueOut, alpha );
117static QColor _interpolateHsl(
const QColor &c1,
const QColor &c2,
const double value,
const Qgis::AngularDirection direction )
119 if ( std::isnan( value ) )
122 qreal hue1 = c1.hslHueF();
123 qreal hue2 = c2.hslHueF();
127 else if ( hue2 == -1 )
138 hue = hue1 - value * ( hue1 - hue2 );
151 hue = hue1 + value * ( hue2 - hue1 );
161 const qreal saturation1 = c1.hslSaturationF();
162 const qreal saturation2 = c2.hslSaturationF();
163 const qreal saturation = ( saturation1 + value * ( saturation2 - saturation1 ) );
165 const qreal lightness1 = c1.lightnessF();
166 const qreal lightness2 = c2.lightnessF();
167 const qreal lightness = ( lightness1 + value * ( lightness2 - lightness1 ) );
169 const qreal alpha1 = c1.alphaF();
170 const qreal alpha2 = c2.alphaF();
171 const qreal alpha = ( alpha1 + value * ( alpha2 - alpha1 ) );
173 return QColor::fromHslF( hue > 1 ? hue - 1 : hue, saturation, lightness, alpha );
182 , mFunc( _interpolateRgb )
191 switch ( mColorSpec )
194 case QColor::Invalid:
195 case QColor::ExtendedRgb:
197 mFunc = _interpolateRgb;
200 mFunc = _interpolateHsv;
203 mFunc = _interpolateHsl;
212 , mDiscrete( discrete )
214 , mFunc( _interpolateRgb )
223 if ( props.contains( QStringLiteral(
"color1" ) ) )
225 if ( props.contains( QStringLiteral(
"color2" ) ) )
230 if ( props.contains( QStringLiteral(
"stops" ) ) )
232 const thread_local QRegularExpression rx( QStringLiteral(
"(?<!,rgb)(?<!,cmyk)(?<!,hsl)(?<!,hsv):" ) );
233 const auto constSplit = props[QStringLiteral(
"stops" )].toString().split( rx );
234 for (
const QString &stop : constSplit )
236 const QStringList parts = stop.split(
';' );
237 if ( parts.size() != 2 && parts.size() != 4 )
243 if ( parts.size() == 4 )
245 if ( parts.at( 2 ).compare( QLatin1String(
"rgb" ) ) == 0 )
246 stops.last().setColorSpec( QColor::Spec::Rgb );
247 else if ( parts.at( 2 ).compare( QLatin1String(
"hsv" ) ) == 0 )
248 stops.last().setColorSpec( QColor::Spec::Hsv );
249 else if ( parts.at( 2 ).compare( QLatin1String(
"hsl" ) ) == 0 )
250 stops.last().setColorSpec( QColor::Spec::Hsl );
252 if ( parts.at( 3 ).compare( QLatin1String(
"cw" ) ) == 0 )
254 else if ( parts.at( 3 ).compare( QLatin1String(
"ccw" ) ) == 0 )
261 bool discrete =
false;
262 if ( props.contains( QStringLiteral(
"discrete" ) ) )
264 if ( props[QStringLiteral(
"discrete" )] == QLatin1String(
"1" ) )
270 for ( QVariantMap::const_iterator it = props.constBegin();
271 it != props.constEnd(); ++it )
273 if ( it.key().startsWith( QLatin1String(
"info_" ) ) )
274 info[ it.key().mid( 5 )] = it.value().toString();
280 if ( props.contains( QStringLiteral(
"spec" ) ) )
282 const QString spec = props.value( QStringLiteral(
"spec" ) ).toString().trimmed();
283 if ( spec.compare( QLatin1String(
"rgb" ) ) == 0 )
285 else if ( spec.compare( QLatin1String(
"hsv" ) ) == 0 )
287 else if ( spec.compare( QLatin1String(
"hsl" ) ) == 0 )
291 if ( props.contains( QStringLiteral(
"direction" ) ) )
293 const QString
direction = props.value( QStringLiteral(
"direction" ) ).toString().trimmed();
294 if (
direction.compare( QLatin1String(
"ccw" ) ) == 0 )
296 else if (
direction.compare( QLatin1String(
"cw" ) ) == 0 )
309 else if ( index >=
mStops.size() + 1 )
315 return mStops[index - 1].offset;
329 else if (
mStops.isEmpty() )
338 double lower = 0, upper = 0;
340 for ( QgsGradientStopsList::const_iterator it =
mStops.begin(); it !=
mStops.end(); ++it )
342 if ( it->offset >
value )
350 return qgsDoubleNear( upper, lower ) ? c1 : it->mFunc( c1, c2, (
value - lower ) / ( upper - lower ), it->mDirection );
373 newStops.reserve(
mStops.size() );
379 for (
int k =
mStops.size() - 1; k >= 1; k-- )
390 for (
int k =
mStops.size() - 1; k >= 0; k-- )
406 for (
int i = 1, j =
mStops.size() - 1; i <
mStops.size(); ++i, --j )
408 newStops[i].setColorSpec(
mStops.at( j ).colorSpec() );
436 lst.reserve(
mStops.size() );
440 stop.colorSpec() == QColor::Rgb ? QStringLiteral(
"rgb" )
441 : stop.colorSpec() == QColor::Hsv ? QStringLiteral(
"hsv" )
442 : stop.colorSpec() == QColor::Hsl ? QStringLiteral(
"hsl" ) : QString(),
445 map[QStringLiteral(
"stops" )] = lst.join( QLatin1Char(
':' ) );
448 map[QStringLiteral(
"discrete" )] =
mDiscrete ?
"1" :
"0";
450 for ( QgsStringMap::const_iterator it =
mInfo.constBegin();
451 it !=
mInfo.constEnd(); ++it )
453 map[
"info_" + it.key()] = it.value();
459 map[QStringLiteral(
"spec" ) ] = QStringLiteral(
"rgb" );
462 map[QStringLiteral(
"spec" ) ] = QStringLiteral(
"hsv" );
465 map[QStringLiteral(
"spec" ) ] = QStringLiteral(
"hsl" );
468 case QColor::Invalid:
469 case QColor::ExtendedRgb:
476 map[QStringLiteral(
"direction" ) ] = QStringLiteral(
"cw" );
479 map[QStringLiteral(
"direction" ) ] = QStringLiteral(
"ccw" );
485 map[QStringLiteral(
"rampType" )] =
type();
499 int numStops =
mStops.count() + 2;
501 for ( QgsGradientStopsList::const_iterator it =
mStops.constBegin();
502 it !=
mStops.constEnd(); ++it )
504 newStops.append(
QgsGradientStop(
static_cast< double >( i ) / numStops, it->color ) );
505 if ( i == numStops - 1 )
515 int numStops =
mStops.count() + 2;
517 for ( QgsGradientStopsList::const_iterator it =
mStops.constBegin();
518 it !=
mStops.constEnd(); ++it )
520 newStops.append(
QgsGradientStop(
static_cast< double >( i ) / ( numStops - 2 ), it->color ) );
521 if ( i == numStops - 3 )
553 gradient->setColorAt( 0,
color1 );
554 gradient->setColorAt( 1,
color2 );
556 double lastOffset = 0;
560 QColor rampColor = stop.color;
563 rampColor.setAlpha( rampColor.alpha() * opacity );
565 gradient->setColorAt( stop.offset, rampColor );
567 if ( stop.colorSpec() != QColor::Rgb )
571 for (
double offset = lastOffset + 0.05; offset < stop.offset; offset += 0.05 )
573 QColor midColor =
color( offset );
576 midColor.setAlpha( midColor.alpha() * opacity );
578 gradient->setColorAt( offset, midColor );
581 lastOffset = stop.offset;
586 for (
double offset = lastOffset + 0.05; offset < 1; offset += 0.05 )
588 QColor midColor =
color( offset );
591 midColor.setAlpha( midColor.alpha() * opacity );
593 gradient->setColorAt( offset, midColor );
604 case QColor::Invalid:
605 case QColor::ExtendedRgb:
607 mFunc = _interpolateRgb;
610 mFunc = _interpolateHsv;
613 mFunc = _interpolateHsl;
623 int satMin,
int satMax,
int valMin,
int valMax )
625 , mHueMin( hueMin ), mHueMax( hueMax )
626 , mSatMin( satMin ), mSatMax( satMax )
627 , mValMin( valMin ), mValMax( valMax )
639 if ( props.contains( QStringLiteral(
"count" ) ) )
count = props[QStringLiteral(
"count" )].toInt();
640 if ( props.contains( QStringLiteral(
"hueMin" ) ) )
hueMin = props[QStringLiteral(
"hueMin" )].toInt();
641 if ( props.contains( QStringLiteral(
"hueMax" ) ) )
hueMax = props[QStringLiteral(
"hueMax" )].toInt();
642 if ( props.contains( QStringLiteral(
"satMin" ) ) )
satMin = props[QStringLiteral(
"satMin" )].toInt();
643 if ( props.contains( QStringLiteral(
"satMax" ) ) )
satMax = props[QStringLiteral(
"satMax" )].toInt();
644 if ( props.contains( QStringLiteral(
"valMin" ) ) )
valMin = props[QStringLiteral(
"valMin" )].toInt();
645 if ( props.contains( QStringLiteral(
"valMax" ) ) )
valMax = props[QStringLiteral(
"valMax" )].toInt();
654 return static_cast< double >( index ) / (
mColors.size() - 1 );
659 if ( value < 0 || value > 1 )
662 int colorCnt =
mColors.count();
663 int colorIdx = std::min(
static_cast< int >(
value * colorCnt ), colorCnt - 1 );
665 if ( colorIdx >= 0 && colorIdx < colorCnt )
684 map[QStringLiteral(
"count" )] = QString::number(
mCount );
685 map[QStringLiteral(
"hueMin" )] = QString::number(
mHueMin );
686 map[QStringLiteral(
"hueMax" )] = QString::number(
mHueMax );
687 map[QStringLiteral(
"satMin" )] = QString::number(
mSatMin );
688 map[QStringLiteral(
"satMax" )] = QString::number(
mSatMax );
689 map[QStringLiteral(
"valMin" )] = QString::number(
mValMin );
690 map[QStringLiteral(
"valMax" )] = QString::number(
mValMax );
691 map[QStringLiteral(
"rampType" )] =
type();
696 int hueMax,
int hueMin,
int satMax,
int satMin,
int valMax,
int valMin )
699 QList<QColor> colors;
710 double currentHueAngle = 360.0 *
static_cast< double >( std::rand() ) / RAND_MAX;
712 colors.reserve(
count );
713 for (
int i = 0; i <
count; ++i )
718 currentHueAngle += 137.50776;
720 h = std::clamp( std::round( ( std::fmod( currentHueAngle, 360.0 ) / 360.0 ) * ( safeHueMax - safeHueMin ) + safeHueMin ), 0.0, 359.0 );
721 s = std::clamp( (
static_cast<int>( std::rand() ) % ( safeSatMax - safeSatMin + 1 ) ) + safeSatMin, 0, 255 );
722 v = std::clamp( (
static_cast<int>( std::rand() ) % ( safeValMax - safeValMin + 1 ) ) + safeValMin, 0, 255 );
723 colors.append( QColor::fromHsv( h, s, v ) );
752 if ( std::isnan(
value ) )
766 int h =
static_cast< int >( 360.0 * std::rand() / ( RAND_MAX + 1.0 ) );
768 int v = ( std::rand() % ( maxVal - minVal + 1 ) ) + minVal;
769 return QColor::fromHsv( h, s, v );
782 double hueOffset = ( 360.0 * std::rand() / ( RAND_MAX + 1.0 ) );
787 double hueStep = 359.0 / colorCount;
788 double currentHue = hueOffset;
791 for (
int idx = 0; idx < colorCount; ++ idx )
793 int h =
static_cast< int >( std::round( currentHue ) ) % 360;
797 currentHue += hueStep;
801 std::random_device rd;
802 std::mt19937 g( rd() );
818 return QVariantMap();
824 : mSchemeName( schemeName )
826 , mInverted( inverted )
835 bool inverted =
false;
837 if ( props.contains( QStringLiteral(
"schemeName" ) ) )
838 schemeName = props[QStringLiteral(
"schemeName" )].toString();
839 if ( props.contains( QStringLiteral(
"colors" ) ) )
840 colors = props[QStringLiteral(
"colors" )].toInt();
841 if ( props.contains( QStringLiteral(
"inverted" ) ) )
842 inverted = props[QStringLiteral(
"inverted" )].toInt();
853 QList<QColor> tmpPalette;
855 for (
int k =
mPalette.size() - 1; k >= 0; k-- )
877 return static_cast< double >( index ) / (
mPalette.size() - 1 );
882 if (
mPalette.isEmpty() || value < 0 || value > 1 || std::isnan(
value ) )
885 int paletteEntry =
static_cast< int >(
value *
mPalette.count() );
886 if ( paletteEntry >=
mPalette.count() )
887 paletteEntry =
mPalette.count() - 1;
906 map[QStringLiteral(
"colors" )] = QString::number(
mColors );
907 map[QStringLiteral(
"inverted" )] = QString::number(
mInverted );
908 map[QStringLiteral(
"rampType" )] =
type();
917 bool inverted,
bool doLoadFile )
919 , mSchemeName( schemeName )
920 , mVariantName( variantName )
921 , mInverted( inverted )
930 const QString &variantName,
bool inverted,
bool doLoadFile )
932 , mSchemeName( schemeName )
933 , mVariantName( variantName )
934 , mVariantList( variantList )
935 , mInverted( inverted )
949 bool inverted =
false;
951 if ( props.contains( QStringLiteral(
"schemeName" ) ) )
952 schemeName = props[QStringLiteral(
"schemeName" )].toString();
953 if ( props.contains( QStringLiteral(
"variantName" ) ) )
954 variantName = props[QStringLiteral(
"variantName" )].toString();
955 if ( props.contains( QStringLiteral(
"inverted" ) ) )
956 inverted = props[QStringLiteral(
"inverted" )].toInt();
1004 info[QStringLiteral(
"cpt-city-license" )] =
"<cpt-city>" + copyingFilename;
1013 map[QStringLiteral(
"schemeName" )] =
mSchemeName;
1015 map[QStringLiteral(
"inverted" )] = QString::number(
mInverted );
1016 map[QStringLiteral(
"rampType" )] =
type();
1062 if ( filename.isNull() )
1070 QMap< double, QPair<QColor, QColor> > colorMap =
1076 QMap<double, QPair<QColor, QColor> >::const_iterator it, prev;
1082 it = prev = colorMap.constBegin();
1083 while ( it != colorMap.constEnd() )
1086 if ( it != colorMap.constBegin() && ( it.value().first != it.value().second ) )
1088 if ( it.value().first == prev.value().second )
1104 it = prev = colorMap.constBegin();
1105 while ( it != colorMap.constEnd() )
1117 ( it.key() != 0.0 && it.key() != 1.0 ) )
1127 if ( !
mStops.isEmpty() &&
mStops.at( 0 ).offset == 0.0 )
1129 if ( !
mStops.isEmpty() &&
mStops.last().offset == 1.0 )
1148 const auto constColors =
colors;
1149 for (
const QColor &
color : constColors )
1154 if ( mColors.isEmpty() )
1155 mColors << qMakePair( QColor( 250, 75, 60 ), QStringLiteral(
"#fa4b3c" ) );
1162 if ( mColors.isEmpty() )
1163 mColors << qMakePair( QColor( 250, 75, 60 ), QStringLiteral(
"#fa4b3c" ) );
1171 QString colorString =
properties.
value( QStringLiteral(
"preset_color_%1" ).arg( i ), QString() ).toString();
1172 QString colorName =
properties.value( QStringLiteral(
"preset_color_name_%1" ).arg( i ), QString() ).toString();
1173 while ( !colorString.isEmpty() )
1177 colorString =
properties.value( QStringLiteral(
"preset_color_%1" ).arg( i ), QString() ).toString();
1178 colorName =
properties.value( QStringLiteral(
"preset_color_name_%1" ).arg( i ), QString() ).toString();
1187 l.reserve( mColors.count() );
1188 for (
int i = 0; i < mColors.count(); ++i )
1190 l << mColors.at( i ).first;
1197 if ( mColors.empty() )
1199 return static_cast< double >( index ) / ( mColors.size() - 1 );
1204 if ( value < 0 || value > 1 )
1207 int colorCnt = mColors.count();
1208 int colorIdx = std::min(
static_cast< int >(
value * colorCnt ), colorCnt - 1 );
1210 if ( colorIdx >= 0 && colorIdx < colorCnt )
1211 return mColors.at( colorIdx ).first;
1225 for (
int k = mColors.size() - 1; k >= 0; k-- )
1227 tmpColors << mColors.at( k );
1229 mColors = tmpColors;
1240 for (
int i = 0; i < mColors.count(); ++i )
1243 props.insert( QStringLiteral(
"preset_color_name_%1" ).arg( i ), mColors.at( i ).second );
1245 props[QStringLiteral(
"rampType" )] =
type();
1251 return mColors.count();
AngularDirection
Angular directions.
@ NoOrientation
Unknown orientation or sentinel value.
@ CounterClockwise
Counter-clockwise direction.
@ Clockwise
Clockwise direction.
Color ramp utilising "Color Brewer" preset color schemes.
void invert() override
Inverts the ordering of the color ramp.
static QList< int > listSchemeVariants(const QString &schemeName)
Returns a list of the valid variants (numbers of colors) for a specified color brewer scheme name.
QColor color(double value) const override
Returns the color corresponding to a specified value.
QgsColorBrewerColorRamp * clone() const override
Creates a clone of the color ramp.
static QgsColorRamp * create(const QVariantMap &properties=QVariantMap())
Returns a new QgsColorBrewerColorRamp color ramp created using the properties encoded in a string map...
static QStringList listSchemeNames()
Returns a list of all valid color brewer scheme names.
QString type() const override
Returns a string representing the color ramp type.
double value(int index) const override
Returns relative value between [0,1] of color at specified index.
QString schemeName() const
Returns the name of the color brewer color scheme.
int colors() const
Returns the number of colors in the ramp.
QVariantMap properties() const override
Returns a string map containing all the color ramp's properties.
QgsColorBrewerColorRamp(const QString &schemeName=DEFAULT_COLORBREWER_SCHEMENAME, int colors=DEFAULT_COLORBREWER_COLORS, bool inverted=false)
Constructor for QgsColorBrewerColorRamp.
void loadPalette()
Generates the scheme using the current name and number of colors.
static QStringList listSchemes()
static QList< QColor > listSchemeColors(const QString &schemeName, int colors)
static QList< int > listSchemeVariants(const QString &schemeName)
Abstract base class for color ramps.
virtual double value(int index) const =0
Returns relative value between [0,1] of color at specified index.
static QColor colorFromString(const QString &string)
Decodes a string into a color value.
static QString colorToString(const QColor &color)
Encodes a color into a string value.
static QString defaultBaseDir()
static QMap< QString, QString > copyingInfo(const QString &fileName)
static QString findFileName(const QString &target, const QString &startDir, const QString &baseDir)
static QMap< double, QPair< QColor, QColor > > gradientColorMap(const QString &fileName)
QgsCptCityColorRamp * clone() const override
Creates a clone of the color ramp.
QgsStringMap copyingInfo() const
QVariantMap properties() const override
Returns a string map containing all the color ramp's properties.
QgsCptCityColorRamp(const QString &schemeName=DEFAULT_CPTCITY_SCHEMENAME, const QString &variantName=DEFAULT_CPTCITY_VARIANTNAME, bool inverted=false, bool doLoadFile=true)
Constructor for QgsCptCityColorRamp.
static QgsColorRamp * create(const QVariantMap &properties=QVariantMap())
Creates the symbol layer.
QStringList variantList() const
void copy(const QgsCptCityColorRamp *other)
static QString fileNameForVariant(const QString &schema, const QString &variant)
Returns the source file name for a CPT schema and variant.
static QString typeString()
Returns the string identifier for QgsCptCityColorRamp.
QString descFileName() const
QgsGradientColorRamp * cloneGradientRamp() const
QString copyingFileName() const
void invert() override
Inverts the ordering of the color ramp.
QString type() const override
Returns a string representing the color ramp type.
QString schemeName() const
QString variantName() const
Gradient color ramp, which smoothly interpolates between two colors and also supports optional extra ...
QgsGradientStopsList mStops
void setInfo(const QgsStringMap &info)
Sets additional info to attach to the gradient ramp (e.g., authorship notes)
bool isDiscrete() const
Returns true if the gradient is using discrete interpolation, rather than smoothly interpolating betw...
void setColorSpec(QColor::Spec spec)
Sets the color specification in which the color component interpolation will occur.
QVariantMap properties() const override
Returns a string map containing all the color ramp's properties.
static QgsColorRamp * create(const QVariantMap &properties=QVariantMap())
Creates a new QgsColorRamp from a map of properties.
QgsStringMap info() const
Returns any additional info attached to the gradient ramp (e.g., authorship notes)
void convertToDiscrete(bool discrete)
Converts a gradient with existing color stops to or from discrete interpolation.
Qgis::AngularDirection mDirection
QColor color(double value) const override
Returns the color corresponding to a specified value.
static QString typeString()
Returns the string identifier for QgsGradientColorRamp.
void setStops(const QgsGradientStopsList &stops)
Sets the list of intermediate gradient stops for the ramp.
QString type() const override
Returns a string representing the color ramp type.
QgsGradientColorRamp(const QColor &color1=DEFAULT_GRADIENT_COLOR1, const QColor &color2=DEFAULT_GRADIENT_COLOR2, bool discrete=false, const QgsGradientStopsList &stops=QgsGradientStopsList())
Constructor for QgsGradientColorRamp.
QColor color1() const
Returns the gradient start color.
void setDirection(Qgis::AngularDirection direction)
Sets the direction to traverse the color wheel using when interpolating hue-based color specification...
Qgis::AngularDirection direction() const
Returns the direction to traverse the color wheel using when interpolating hue-based color specificat...
void invert() override
Inverts the ordering of the color ramp.
void addStopsToGradient(QGradient *gradient, double opacity=1) const
Copy color ramp stops to a QGradient.
QgsGradientStopsList stops() const
Returns the list of intermediate gradient stops for the ramp.
double value(int index) const override
Returns relative value between [0,1] of color at specified index.
QgsGradientColorRamp * clone() const override
Creates a clone of the color ramp.
InterpolateColorFunc mFunc
QColor color2() const
Returns the gradient end color.
Represents a color stop within a QgsGradientColorRamp color ramp.
void setColorSpec(QColor::Spec spec)
Sets the color specification in which the color component interpolation will occur.
double offset
Relative positional offset, between 0 and 1.
QgsGradientStop(double offset, const QColor &color)
Constructor for QgsGradientStop.
Constrained random color ramp, which returns random colors based on preset parameters.
static QString typeString()
Returns the string identifier for QgsLimitedRandomColorRamp.
void updateColors()
Must be called after changing the properties of the color ramp to regenerate the list of random color...
static QList< QColor > randomColors(int count, int hueMax=DEFAULT_RANDOM_HUE_MAX, int hueMin=DEFAULT_RANDOM_HUE_MIN, int satMax=DEFAULT_RANDOM_SAT_MAX, int satMin=DEFAULT_RANDOM_SAT_MIN, int valMax=DEFAULT_RANDOM_VAL_MAX, int valMin=DEFAULT_RANDOM_VAL_MIN)
Gets a list of random colors.
int count() const override
Returns number of defined colors, or -1 if undefined.
QColor color(double value) const override
Returns the color corresponding to a specified value.
double value(int index) const override
Returns relative value between [0,1] of color at specified index.
QVariantMap properties() const override
Returns a string map containing all the color ramp's properties.
int valMax() const
Returns the maximum value for generated colors.
QString type() const override
Returns a string representing the color ramp type.
int satMax() const
Returns the maximum saturation for generated colors.
static QgsColorRamp * create(const QVariantMap &properties=QVariantMap())
Returns a new QgsLimitedRandomColorRamp color ramp created using the properties encoded in a string m...
QgsLimitedRandomColorRamp * clone() const override
Creates a clone of the color ramp.
int hueMax() const
Returns the maximum hue for generated colors.
int hueMin() const
Returns the minimum hue for generated colors.
int valMin() const
Returns the minimum value for generated colors.
QgsLimitedRandomColorRamp(int count=DEFAULT_RANDOM_COUNT, int hueMin=DEFAULT_RANDOM_HUE_MIN, int hueMax=DEFAULT_RANDOM_HUE_MAX, int satMin=DEFAULT_RANDOM_SAT_MIN, int satMax=DEFAULT_RANDOM_SAT_MAX, int valMin=DEFAULT_RANDOM_VAL_MIN, int valMax=DEFAULT_RANDOM_VAL_MAX)
Constructor for QgsLimitedRandomColorRamp.
int satMin() const
Returns the minimum saturation for generated colors.
A scheme based color ramp consisting of a list of predefined colors.
double value(int index) const override
Returns relative value between [0,1] of color at specified index.
QColor color(double value) const override
Returns the color corresponding to a specified value.
QString type() const override
Returns a string representing the color ramp type.
QList< QColor > colors() const
Returns the list of colors used by the ramp.
static QString typeString()
Returns the string identifier for QgsPresetSchemeColorRamp.
void invert() override
Inverts the ordering of the color ramp.
QVariantMap properties() const override
Returns a string map containing all the color ramp's properties.
static QgsColorRamp * create(const QVariantMap &properties=QVariantMap())
Returns a new QgsPresetSchemeColorRamp color ramp created using the properties encoded in a string ma...
int count() const override
Returns number of defined colors, or -1 if undefined.
QgsPresetSchemeColorRamp(const QList< QColor > &colors=QList< QColor >())
Constructor for QgsPresetSchemeColorRamp.
QgsNamedColorList fetchColors(const QString &context=QString(), const QColor &baseColor=QColor()) override
Gets a list of colors from the scheme.
QgsPresetSchemeColorRamp * clone() const override
Creates a clone of the color ramp.
Totally random color ramp.
double value(int index) const override
Returns relative value between [0,1] of color at specified index.
QList< QColor > mPrecalculatedColors
QgsRandomColorRamp * clone() const override
Creates a clone of the color ramp.
QgsRandomColorRamp()=default
Constructor for QgsRandomColorRamp.
static QString typeString()
Returns the string identifier for QgsRandomColorRamp.
int count() const override
Returns number of defined colors, or -1 if undefined.
QString type() const override
Returns a string representing the color ramp type.
virtual void setTotalColorCount(int colorCount)
Sets the desired total number of unique colors for the resultant ramp.
QVariantMap properties() const override
Returns a string map containing all the color ramp's properties.
QColor color(double value) const override
Returns the color corresponding to a specified value.
QList< QPair< QColor, QString > > QgsNamedColorList
List of colors paired with a friendly display name identifying the color.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
QMap< QString, QString > QgsStringMap
bool stopLessThan(const QgsGradientStop &s1, const QgsGradientStop &s2)
#define DEFAULT_COLORBREWER_COLORS
#define DEFAULT_COLORBREWER_SCHEMENAME
#define DEFAULT_RANDOM_HUE_MAX
#define DEFAULT_CPTCITY_SCHEMENAME
#define DEFAULT_RANDOM_HUE_MIN
#define DEFAULT_RANDOM_COUNT
#define DEFAULT_RANDOM_SAT_MAX
#define DEFAULT_RANDOM_SAT_MIN
#define DEFAULT_CPTCITY_VARIANTNAME
#define DEFAULT_GRADIENT_COLOR1
#define DEFAULT_RANDOM_VAL_MIN
QList< QgsGradientStop > QgsGradientStopsList
List of gradient stops.
#define DEFAULT_GRADIENT_COLOR2
#define DEFAULT_RANDOM_VAL_MAX
#define QgsDebugMsgLevel(str, level)