mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
[color ramp] improve invert() for discrete gradient ramps (#3833)
This commit is contained in:
parent
e135e79770
commit
e94a352e08
@ -162,14 +162,27 @@ QColor QgsGradientColorRamp::color( double value ) const
|
||||
|
||||
void QgsGradientColorRamp::invert()
|
||||
{
|
||||
QColor tmpColor = mColor1;
|
||||
mColor1 = mColor2;
|
||||
mColor2 = tmpColor;
|
||||
|
||||
QgsGradientStopsList newStops;
|
||||
for ( int k = mStops.size() - 1; k >= 0; k-- )
|
||||
|
||||
if ( mDiscrete )
|
||||
{
|
||||
newStops << QgsGradientStop( 1 - mStops.at( k ).offset, mStops.at( k ).color );
|
||||
mColor2 = mColor1;
|
||||
mColor1 = mStops.at( mStops.size() - 1 ).color;
|
||||
for ( int k = mStops.size() - 1; k >= 1; k-- )
|
||||
{
|
||||
newStops << QgsGradientStop( 1 - mStops.at( k ).offset, mStops.at( k - 1 ).color );
|
||||
}
|
||||
newStops << QgsGradientStop( 1 - mStops.at( 0 ).offset, mColor2 );
|
||||
}
|
||||
else
|
||||
{
|
||||
QColor tmpColor = mColor2;
|
||||
mColor2 = mColor1;
|
||||
mColor1 = tmpColor;
|
||||
for ( int k = mStops.size() - 1; k >= 0; k-- )
|
||||
{
|
||||
newStops << QgsGradientStop( 1 - mStops.at( k ).offset, mStops.at( k ).color );
|
||||
}
|
||||
}
|
||||
mStops = newStops;
|
||||
}
|
||||
|
@ -161,12 +161,23 @@ class PyQgsVectorColorRamp(unittest.TestCase):
|
||||
self.assertEqual(s[3].offset, 0.8)
|
||||
self.assertEqual(s[3].color, QColor(50, 20, 10))
|
||||
|
||||
# test invert function
|
||||
# test continous invert function
|
||||
r.invert()
|
||||
self.assertEqual(r.color(0), QColor(0, 200, 0))
|
||||
self.assertEqual(r.color(1), QColor(200, 0, 0))
|
||||
self.assertEqual(r.color(0.2), QColor(50, 20, 10))
|
||||
|
||||
# test discrete invert function
|
||||
r = QgsGradientColorRamp(QColor(255, 255, 255), QColor(0, 0, 0), True, [QgsGradientStop(0.33, QColor(128, 128, 128)),
|
||||
QgsGradientStop(0.66, QColor(0, 0, 0))])
|
||||
self.assertEqual(r.color(0.2), QColor(255, 255, 255))
|
||||
self.assertEqual(r.color(0.5), QColor(128, 128, 128))
|
||||
self.assertEqual(r.color(0.8), QColor(0, 0, 0))
|
||||
r.invert()
|
||||
self.assertEqual(r.color(0.2), QColor(0, 0, 0))
|
||||
self.assertEqual(r.color(0.5), QColor(128, 128, 128))
|
||||
self.assertEqual(r.color(0.8), QColor(255, 255, 255))
|
||||
|
||||
def testQgsLimitedRandomColorRampV2(self):
|
||||
# test random color ramp
|
||||
r = QgsLimitedRandomColorRamp(5)
|
||||
|
Loading…
x
Reference in New Issue
Block a user