22#include <QFileInfoList> 
   28  qDeleteAll( mColorSchemeList );
 
   29  mColorSchemeList.clear();
 
 
   38  QList< QgsColorScheme * >::iterator it = schemeList.begin();
 
   39  for ( ; it != schemeList.end(); ++it )
 
 
   57  if ( QFileInfo::exists( stylePalette ) )
 
 
   70  if ( !localDir.mkpath( palettesDir ) )
 
   75  const QFileInfoList fileInfoList = QDir( palettesDir ).entryInfoList( QStringList( QStringLiteral( 
"*.gpl" ) ), QDir::Files );
 
   76  QFileInfoList::const_iterator infoIt = fileInfoList.constBegin();
 
   77  for ( ; infoIt != fileInfoList.constEnd(); ++infoIt )
 
 
   85  mColorSchemeList.append( scheme );
 
 
   90  QList< QgsColorScheme * > allSchemes;
 
   91  QList<QgsColorScheme *>::const_iterator schemeIt;
 
   92  for ( schemeIt = mColorSchemeList.constBegin(); schemeIt != mColorSchemeList.constEnd(); ++schemeIt )
 
   94    allSchemes.append( ( *schemeIt ) );
 
 
  101  QList< QgsColorScheme * > matchingSchemes;
 
  102  QList<QgsColorScheme *>::const_iterator schemeIt;
 
  103  for ( schemeIt = mColorSchemeList.constBegin(); schemeIt != mColorSchemeList.constEnd(); ++schemeIt )
 
  105    if ( ( *schemeIt )->flags().testFlag( flag ) )
 
  107      matchingSchemes.append( ( *schemeIt ) );
 
  110  return matchingSchemes;
 
 
  115  mRandomStyleColorScheme = scheme;
 
  120    if ( mRandomStyleColors.count() > 0 )
 
  122      std::random_device rd;
 
  123      std::mt19937 mt( rd() );
 
  124      std::uniform_int_distribution<int> colorDist( 0, mRandomStyleColors.count() - 1 );
 
  125      mNextRandomStyleColorIndex = colorDist( mt );
 
  126      std::uniform_int_distribution<int> colorDir( 0, 1 );
 
  127      mNextRandomStyleColorDirection = colorDir( mt ) == 0 ? -1 : 1;
 
  132    mRandomStyleColors.clear();
 
 
  138  return mRandomStyleColorScheme;
 
 
  143  if ( mRandomStyleColors.empty() )
 
  148    std::random_device rd;
 
  149    std::mt19937 mt( rd() );
 
  150    std::uniform_int_distribution<int> hueDist( 0, 359 );
 
  151    std::uniform_int_distribution<int> satDist( 64, 255 );
 
  152    std::uniform_int_distribution<int> valueDist( 128, 255 );
 
  153    return QColor::fromHsv( hueDist( mt ), satDist( mt ), valueDist( mt ) );
 
  157    static QMutex sMutex;
 
  158    const QMutexLocker locker( &sMutex );
 
  159    QColor res = mRandomStyleColors.at( mNextRandomStyleColorIndex ).first;
 
  160    mNextRandomStyleColorIndex += mNextRandomStyleColorDirection;
 
  161    if ( mNextRandomStyleColorIndex < 0 )
 
  162      mNextRandomStyleColorIndex = mRandomStyleColors.count() - 1;
 
  163    if ( mNextRandomStyleColorIndex >= mRandomStyleColors.count() )
 
  164      mNextRandomStyleColorIndex = 0;
 
 
  171  if ( mRandomStyleColorScheme == scheme )
 
  173    mRandomStyleColorScheme = 
nullptr;
 
  174    mRandomStyleColors.clear();
 
  177  if ( mColorSchemeList.indexOf( scheme ) != -1 )
 
  179    mColorSchemeList.removeAll( scheme );
 
 
static QgsColorSchemeRegistry * colorSchemeRegistry()
Returns the application's color scheme registry, used for managing color schemes.
static QString pkgDataPath()
Returns the common root path of all application data directories.
static QString qgisSettingsDirPath()
Returns the path to the settings directory in user's home dir.
void addDefaultSchemes()
Adds all default color schemes to this color scheme.
void addColorScheme(QgsColorScheme *scheme)
Adds a color scheme to the registry.
QList< QgsColorScheme * > schemes() const
Returns all color schemes in the registry.
QColor fetchRandomStyleColor() const
Returns a random color for use with a new symbol style (e.g.
void populateFromInstance()
Adds all color schemes from the global instance to this color scheme.
QgsColorScheme * randomStyleColorScheme()
Returns the color scheme used when fetching random colors to use for symbol styles.
bool removeColorScheme(QgsColorScheme *scheme)
Removes all matching color schemes from the registry.
void initStyleScheme()
Initializes the default random style color scheme for the user.
void setRandomStyleColorScheme(QgsColorScheme *scheme)
Sets the color scheme to use when fetching random colors to use for symbol styles.
void addUserSchemes()
Creates schemes for all gpl palettes in the user's palettes folder.
virtual ~QgsColorSchemeRegistry()
Abstract base class for color schemes.
SchemeFlag
Flags for controlling behavior of color scheme.
virtual QgsNamedColorList fetchColors(const QString &context=QString(), const QColor &baseColor=QColor())=0
Gets a list of colors from the scheme.
A color scheme which contains custom colors set through QGIS app options dialog.
A color scheme which contains project specific colors set through project properties dialog.
A color scheme which contains the most recently used colors.
A color scheme which stores its colors in a gpl palette file within the "palettes" subfolder off the ...