Skip to content

Commit ab4a37f

Browse files
committed
[color ramp] save/restore invert state for cpt-city ramps
1 parent c8266a2 commit ab4a37f

File tree

4 files changed

+73
-11
lines changed

4 files changed

+73
-11
lines changed

doc/api_break.dox

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -647,6 +647,10 @@ QgsCoordinateTransformCache {#qgis_api_break_3_0_QgsCoordinateTransformCa
647647
- transform() now returns a QgsCoordinateTransform object, not a pointer. An invalid QgsCoordinateTransform will
648648
be returned in place of a null pointer.
649649

650+
QgsCptCityColorRamp {#qgis_api_break_3_0_QgsCptCityColorRamp}
651+
-------------------
652+
653+
- The constructor's doLoadFile parameter order has changed due to the addition of an inverted parameter
650654

651655
QgsCptCityColorRampDialog {#qgis_api_break_3_0_QgsCptCityColorRampDialog}
652656
-------------------------

python/core/qgscolorramp.sip

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,11 +401,25 @@ class QgsCptCityColorRamp : QgsGradientColorRamp
401401
#include <qgscolorramp.h>
402402
%End
403403
public:
404+
/** Constructor for QgsCptCityColorRamp
405+
* @param schemeName cpt-city scheme name
406+
* @param variantName cpt-city variant name
407+
* @param inverted invert ramp ordering
408+
* @param doLoadFile load cpt-city ramp from file
409+
*/
404410
QgsCptCityColorRamp( const QString& schemeName = DEFAULT_CPTCITY_SCHEMENAME,
405411
const QString& variantName = DEFAULT_CPTCITY_VARIANTNAME,
406-
bool doLoadFile = true );
412+
bool inverted = false, bool doLoadFile = true );
413+
/** Constructor for QgsCptCityColorRamp
414+
* @param schemeName cpt-city scheme name
415+
* @param variantList cpt-city variant list
416+
* @param variantName cpt-city variant name
417+
* @param inverted invert ramp ordering
418+
* @param doLoadFile load cpt-city ramp from file
419+
*/
407420
QgsCptCityColorRamp( const QString& schemeName, const QStringList& variantList,
408-
const QString& variantName = QString(), bool doLoadFile = true );
421+
const QString& variantName = QString(), bool inverted = false,
422+
bool doLoadFile = true );
409423

410424
static QgsColorRamp* create( const QgsStringMap& properties = QgsStringMap() ) /Factory/;
411425

src/core/qgscolorramp.cpp

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -595,10 +595,14 @@ QgsStringMap QgsColorBrewerColorRamp::properties() const
595595

596596

597597
QgsCptCityColorRamp::QgsCptCityColorRamp( const QString& schemeName, const QString& variantName,
598-
bool doLoadFile )
598+
bool inverted, bool doLoadFile )
599599
: QgsGradientColorRamp()
600-
, mSchemeName( schemeName ), mVariantName( variantName )
601-
, mVariantList( QStringList() ), mFileLoaded( false ), mMultiStops( false )
600+
, mSchemeName( schemeName )
601+
, mVariantName( variantName )
602+
, mVariantList( QStringList() )
603+
, mFileLoaded( false )
604+
, mMultiStops( false )
605+
, mInverted( inverted )
602606
{
603607
// TODO replace this with hard-coded data in the default case
604608
// don't load file if variant is missing
@@ -607,10 +611,14 @@ QgsCptCityColorRamp::QgsCptCityColorRamp( const QString& schemeName, const QStri
607611
}
608612

609613
QgsCptCityColorRamp::QgsCptCityColorRamp( const QString& schemeName, const QStringList& variantList,
610-
const QString& variantName, bool doLoadFile )
614+
const QString& variantName, bool inverted, bool doLoadFile )
611615
: QgsGradientColorRamp()
612-
, mSchemeName( schemeName ), mVariantName( variantName )
613-
, mVariantList( variantList ), mFileLoaded( false ), mMultiStops( false )
616+
, mSchemeName( schemeName )
617+
, mVariantName( variantName )
618+
, mVariantList( variantList )
619+
, mFileLoaded( false )
620+
, mMultiStops( false )
621+
, mInverted( inverted )
614622
{
615623
mVariantList = variantList;
616624

@@ -624,18 +632,27 @@ QgsColorRamp* QgsCptCityColorRamp::create( const QgsStringMap& props )
624632
{
625633
QString schemeName = DEFAULT_CPTCITY_SCHEMENAME;
626634
QString variantName = DEFAULT_CPTCITY_VARIANTNAME;
635+
bool inverted = false;
627636

628637
if ( props.contains( QStringLiteral( "schemeName" ) ) )
629638
schemeName = props[QStringLiteral( "schemeName" )];
630639
if ( props.contains( QStringLiteral( "variantName" ) ) )
631640
variantName = props[QStringLiteral( "variantName" )];
641+
if ( props.contains( QStringLiteral( "inverted" ) ) )
642+
inverted = props[QStringLiteral( "inverted" )].toInt();
643+
644+
return new QgsCptCityColorRamp( schemeName, variantName, inverted );
645+
}
632646

633-
return new QgsCptCityColorRamp( schemeName, variantName );
647+
void QgsCptCityColorRamp::invert()
648+
{
649+
mInverted = !mInverted;
650+
QgsGradientColorRamp::invert();
634651
}
635652

636653
QgsCptCityColorRamp* QgsCptCityColorRamp::clone() const
637654
{
638-
QgsCptCityColorRamp* ramp = new QgsCptCityColorRamp( QLatin1String( "" ), QLatin1String( "" ), false );
655+
QgsCptCityColorRamp* ramp = new QgsCptCityColorRamp( QLatin1String( "" ), QLatin1String( "" ), mInverted, false );
639656
ramp->copy( this );
640657
return ramp;
641658
}
@@ -652,6 +669,7 @@ void QgsCptCityColorRamp::copy( const QgsCptCityColorRamp* other )
652669
mVariantName = other->mVariantName;
653670
mVariantList = other->mVariantList;
654671
mFileLoaded = other->mFileLoaded;
672+
mInverted = other->mInverted;
655673
}
656674

657675
QgsGradientColorRamp* QgsCptCityColorRamp::cloneGradientRamp() const
@@ -675,6 +693,7 @@ QgsStringMap QgsCptCityColorRamp::properties() const
675693
QgsStringMap map;
676694
map[QStringLiteral( "schemeName" )] = mSchemeName;
677695
map[QStringLiteral( "variantName" )] = mVariantName;
696+
map[QStringLiteral( "inverted" )] = QString::number( mInverted );
678697
map[QStringLiteral( "rampType" )] = type();
679698
return map;
680699
}
@@ -788,6 +807,11 @@ bool QgsCptCityColorRamp::loadFile()
788807
if ( ! mStops.isEmpty() && mStops.last().offset == 1.0 )
789808
mColor2 = mStops.takeLast().color;
790809

810+
if ( mInverted )
811+
{
812+
QgsGradientColorRamp::invert();
813+
}
814+
791815
mFileLoaded = true;
792816
return true;
793817
}

src/core/qgscolorramp.h

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -540,16 +540,35 @@ class CORE_EXPORT QgsColorBrewerColorRamp : public QgsColorRamp
540540
class CORE_EXPORT QgsCptCityColorRamp : public QgsGradientColorRamp
541541
{
542542
public:
543+
544+
/** Constructor for QgsCptCityColorRamp
545+
* @param schemeName cpt-city scheme name
546+
* @param variantName cpt-city variant name
547+
* @param inverted invert ramp ordering
548+
* @param doLoadFile load cpt-city ramp from file
549+
*/
543550
QgsCptCityColorRamp( const QString& schemeName = DEFAULT_CPTCITY_SCHEMENAME,
544551
const QString& variantName = DEFAULT_CPTCITY_VARIANTNAME,
552+
bool inverted = false,
545553
bool doLoadFile = true );
554+
555+
/** Constructor for QgsCptCityColorRamp
556+
* @param schemeName cpt-city scheme name
557+
* @param variantList cpt-city variant list
558+
* @param variantName cpt-city variant name
559+
* @param inverted invert ramp ordering
560+
* @param doLoadFile load cpt-city ramp from file
561+
*/
546562
QgsCptCityColorRamp( const QString& schemeName, const QStringList& variantList,
547-
const QString& variantName = QString(), bool doLoadFile = true );
563+
const QString& variantName = QString(), bool inverted = false,
564+
bool doLoadFile = true );
548565

549566
static QgsColorRamp* create( const QgsStringMap& properties = QgsStringMap() );
550567

551568
virtual QString type() const override { return QStringLiteral( "cpt-city" ); }
552569

570+
virtual void invert() override;
571+
553572
virtual QgsCptCityColorRamp* clone() const override;
554573
void copy( const QgsCptCityColorRamp* other );
555574
QgsGradientColorRamp* cloneGradientRamp() const;
@@ -585,6 +604,7 @@ class CORE_EXPORT QgsCptCityColorRamp : public QgsGradientColorRamp
585604
QStringList mVariantList;
586605
bool mFileLoaded;
587606
bool mMultiStops;
607+
bool mInverted;
588608
};
589609

590610

0 commit comments

Comments
 (0)