14#include <QApplication>
15#include <QGlobalStatic>
25 : m_cfg( KSharedConfig::openConfig()->group(configGroupName()))
26 , m_readOnly(readOnly)
35 if (m_readOnly)
return;
37 if (qApp && qApp->thread() != QThread::currentThread()) {
38 dbgKrita <<
"WARNING: WGConfig: requested config synchronization from nonGUI thread! Called from:" <<
kisBacktrace();
47 return QStringLiteral(
"WideGamutColorSelector");
52 QString config = m_cfg.readEntry(
"colorSelectorConfiguration", QString());
58 m_cfg.writeEntry(
"colorSelectorConfiguration", config.
toString());
64 return defaultFavoriteConfigurations();
68 QString favorites = m_cfg.readEntry(
"favoriteSelectorConfigurations", QString());
69 if (favorites.isEmpty()) {
70 return defaultFavoriteConfigurations();
73 for (QString &fav: favoriteList) {
76 return favoriteConfigs;
83 defaults.append(KCSC(KCSC::Triangle, KCSC::Ring, KCSC::SV, KCSC::H));
84 defaults.append(KCSC(KCSC::Square, KCSC::Ring, KCSC::SV, KCSC::H));
85 defaults.append(KCSC(KCSC::Wheel, KCSC::Slider, KCSC::VH, KCSC::hsvS));
93 favoriteList.append(fav.toString());
95 m_cfg.writeEntry(
"favoriteSelectorConfigurations", favoriteList.join(
';'));
101 defaultLines.append(
ShadeLine(QVector4D(0.3, 0, 0, 0)));
102 defaultLines.append(
ShadeLine(QVector4D(0, -0.5, 0, 0)));
103 defaultLines.append(
ShadeLine(QVector4D(0, 0, 0.5, 0)));
104 defaultLines.append(
ShadeLine(QVector4D(0, -0.2, 0.2, 0)));
111 return defaultShadeSelectorLines();
114 QString configString = m_cfg.readEntry(
"minimalShadeSelectorLines", QString());
115 if (configString.isEmpty()) {
116 return defaultShadeSelectorLines();
119 QStringList shadeLineList(configString.split(
'|'));
120 for (
const QString &line: std::as_const(shadeLineList)) {
121 QVector4D gradient, offset;
124 if (values.size() >= 4) {
125 for (
int i = 0; i < 4; i++) {
126 gradient[i] = qBound(-1.0f, values.at(i).toFloat(), 1.0f);
129 if (values.size() >= 8) {
130 for (
int i = 0; i < 4; i++) {
131 offset[i] = qBound(-1.0f, values.at(i + 4).toFloat(), 1.0f);
134 if (values.size() >= 9) {
135 patchCount = qBound(-1, values.at(8).toInt(), 99);
137 shadeLines.append(
ShadeLine(gradient, offset, patchCount));
145 for (
const ShadeLine &line: shadeLines) {
147 QTextStream stream(&lineString);
148 for (
int i = 0; i < 4; i++) {
149 stream << line.gradient[i] <<
';';
151 for (
int i = 0; i < 4; i++) {
152 stream << line.offset[i] <<
';';
154 stream << line.patchCount;
155 shadeLineList.append(lineString);
157 m_cfg.writeEntry(
"minimalShadeSelectorLines", shadeLineList.join(
'|'));
165 QString modelID = m_cfg.readEntry(
"customColorSpaceModel",
"RGBA");
166 QString depthID = m_cfg.readEntry(
"customColorSpaceDepthID",
"U8");
167 QString profile = m_cfg.readEntry(
"customColorSpaceProfile",
"");
182 m_cfg.writeEntry(
"customColorSpaceModel", cs->
colorModelId().
id());
183 m_cfg.writeEntry(
"customColorSpaceDepthID", cs->
colorDepthId().
id());
185 m_cfg.writeEntry(
"customColorSpaceProfile", cs->
profile()->
name());
192 return s_notifier_instance;
214 {
"colorHistory.orientation", Qt::Horizontal, Qt::Horizontal, Qt::Vertical,
true },
215 {
"colorHistory.patchSize", QSize(16,16), QSize(10,10), QSize(99,99),
true },
216 {
"colorHistory.maxCount", 30, 2, 200,
true },
217 {
"colorHistory.rows", 1, 1, 20,
true },
222 {
"commonColors.orientation", Qt::Horizontal, Qt::Horizontal, Qt::Vertical,
true },
223 {
"commonColors.patchSize", QSize(16,16), QSize(10,10), QSize(99,99),
true },
224 {
"commonColors.maxCount", 20, 2, 200,
true },
225 {
"commonColors.rows", 1, 1, 20,
true },
230 {
"popupColorPatchOrientation", Qt::Horizontal, Qt::Horizontal, Qt::Vertical,
true },
231 {
"popupColorPatchSize", QSize(32,32), QSize(10,10), QSize(99,99),
true },
232 {
"popupPatches.maxCount", 30, 2, 200,
true },
233 {
"popupPatches.rows", 1, 1, 20,
true },
Q_GLOBAL_STATIC(KisStoragePluginRegistry, s_instance)
virtual KoID colorModelId() const =0
virtual KoID colorDepthId() const =0
virtual const KoColorProfile * profile() const =0
void notifyConfigChanged()
void selectorConfigChanged()
void notifySelectorConfigChanged()
void setColorSelectorConfiguration(const KisColorSelectorConfiguration &config)
static const KisColorSelectorConfiguration defaultColorSelectorConfiguration
static QVector< KisColorSelectorConfiguration > defaultFavoriteConfigurations()
KisColorSelectorConfiguration colorSelectorConfiguration() const
QVector< KisColorSelectorConfiguration > favoriteConfigurations(bool defaultValue=false) const
void setCustomSelectionColorSpace(const KoColorSpace *cs)
void setFavoriteConfigurations(const QVector< KisColorSelectorConfiguration > &favoriteConfigs)
void setShadeSelectorLines(const QVector< ShadeLine > &shadeLines)
static QVector< ShadeLine > defaultShadeSelectorLines()
const KoColorSpace * customSelectionColorSpace(bool defaultValue=false) const
QVector< ShadeLine > shadeSelectorLines(bool defaultValue=false) const
static QString configGroupName()
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
const GenericSetting< bool > colorHistoryEnabled
const ColorPatches commonColors
const GenericSetting< bool > minimalShadeSelectorEnabled
const GenericSetting< bool > commonColorsEnabled
const NumericSetting< KisVisualColorSelector::RenderMode > selectorRenderMode
const ColorPatches popupPatches
WGConfigNotifier * notifier()
const GenericSetting< bool > colorHistoryShowClearButton
const NumericSetting< KisVisualColorModel::ColorModel > rgbColorModel
const NumericSetting< int > shadeSelectorLineHeight
const GenericSetting< bool > proofToPaintingColors
const NumericSetting< int > popupSize
const GenericSetting< bool > shadeSelectorUpdateOnExternalChanges
const GenericSetting< bool > quickSettingsEnabled
const GenericSetting< bool > commonColorsAutoUpdate
const GenericSetting< bool > shadeSelectorUpdateOnInteractionEnd
const ColorPatches colorHistory
const GenericSetting< bool > shadeSelectorUpdateOnRightClick
const KoColorSpace * colorSpace(const QString &colorModelId, const QString &colorDepthId, const KoColorProfile *profile)
static KoColorSpaceRegistry * instance()
const KoColorSpace * rgb8(const QString &profileName=QString())