Krita Source Code Documentation
Loading...
Searching...
No Matches
WGColorSelectorDock Class Reference

#include <WGColorSelectorDock.h>

+ Inheritance diagram for WGColorSelectorDock:

Public Types

enum  ColorSpaceSource { LayerColorSpace , ImageColorSpace , FixedColorSpace }
 

Public Member Functions

KisUniqueColorSetcolorHistoryModel () const
 
const KisVisualColorModelcolorModel () const
 
KisDisplayColorConverterdisplayColorConverter (bool rawPointer=false) const
 
bool selectingBackground () const
 
void setChannelValues (const QVector4D &values)
 Set new channel values; takes effect immediately!
 
 WGColorSelectorDock ()
 
- Public Member Functions inherited from KisMainwindowObserver
 KisMainwindowObserver ()
 
 ~KisMainwindowObserver () override
 
- Public Member Functions inherited from KoCanvasObserverBase
 KoCanvasObserverBase ()
 
KoCanvasBaseobservedCanvas () const
 
virtual QString observerName ()
 
void setObservedCanvas (KoCanvasBase *canvas)
 
void unsetObservedCanvas ()
 
virtual ~KoCanvasObserverBase ()
 

Protected Member Functions

void disconnectFromCanvas ()
 
void leaveEvent (QEvent *event) override
 
void setCanvas (KoCanvasBase *canvas) override
 
void setViewManager (KisViewManager *viewManager) override
 
void unsetCanvas () override
 
void updateLayout ()
 

Private Slots

void slotCanvasResourceChanged (int key, const QVariant &value)
 
void slotColorInteraction (bool active)
 
void slotColorSelected (const KoColor &color)
 
void slotColorSourceToggled (bool selectingBg)
 
void slotConfigurationChanged ()
 
void slotDisplayConfigurationChanged ()
 
void slotFGColorUsed (const KoColor &color)
 
void slotOpenSettings ()
 
void slotSetNewColors ()
 
void slotShowGamutMaskToolbar (bool show)
 

Private Attributes

WGActionManagerm_actionManager {0}
 
QPointer< KisCanvas2m_canvas
 
KisSignalCompressorm_colorChangeCompressor
 
bool m_colorHistoryFromDocument {false}
 
KisVisualColorModelSP m_colorModelBG
 
KisVisualColorModelSP m_colorModelFG
 
WGColorPreviewToolTipm_colorTooltip {0}
 
WGColorPatchesm_commonColors {0}
 
WGCommonColorSetm_commonColorSet {0}
 
QToolButton * m_configButton {0}
 
ColorSpaceSource m_CSSource {LayerColorSpace}
 
const KoColorSpacem_customCS {0}
 
WGSelectorDisplayConfigSP m_displayConfig
 
KisUniqueColorSetm_documentColorHistoryModel {0}
 
std::unique_ptr< KisUniqueColorSetm_fallbackColorHistoryModel
 
KisGamutMaskToolbarm_gamutToolbar
 
KisUniqueColorSetm_globalColorHistoryModel {0}
 
WGColorPatchesm_history {0}
 
QBoxLayout * m_mainWidgetLayout {0}
 
bool m_pendingBgUpdate {false}
 
bool m_pendingFgUpdate {false}
 
QWidgetAction * m_quickSettingAction {0}
 
WGQuickSettingsWidgetm_quickSettings {0}
 
KisVisualColorSelectorm_selector {0}
 
QBoxLayout * m_selectorAreaLayout {0}
 
WGShadeSelectorm_shadeSelector {0}
 
KisColorSourceTogglem_toggle {0}
 
QBoxLayout * m_verticalElementsLayout {0}
 

Detailed Description

Definition at line 38 of file WGColorSelectorDock.h.

Member Enumeration Documentation

◆ ColorSpaceSource

Enumerator
LayerColorSpace 
ImageColorSpace 
FixedColorSpace 

Definition at line 42 of file WGColorSelectorDock.h.

Constructor & Destructor Documentation

◆ WGColorSelectorDock()

WGColorSelectorDock::WGColorSelectorDock ( )

Definition at line 41 of file WGColorSelectorDock.cpp.

42 : QDockWidget()
48{
49 setWindowTitle(i18n("Wide Gamut Color Selector"));
50
51 QWidget *mainWidget = new QWidget();
52 m_mainWidgetLayout = new QVBoxLayout(mainWidget);
53 m_verticalElementsLayout = new QHBoxLayout();
54 m_selectorAreaLayout = new QBoxLayout(QBoxLayout::TopToBottom);
55
56 m_selector = new KisVisualColorSelector(mainWidget);
58 connect(m_selector, SIGNAL(sigNewColor(KoColor)), SLOT(slotColorSelected(KoColor)));
59 connect(m_selector, SIGNAL(sigInteraction(bool)), SLOT(slotColorInteraction(bool)));
60 connect(m_colorChangeCompressor, SIGNAL(timeout()), SLOT(slotSetNewColors()));
62
63 // Header
64 QWidget *headerWidget = new QWidget(mainWidget);
65 QHBoxLayout *headerLayout = new QHBoxLayout(headerWidget);
66
67 m_toggle = new KisColorSourceToggle(mainWidget);
68 connect(m_toggle, SIGNAL(toggled(bool)), SLOT(slotColorSourceToggled(bool)));
69 headerLayout->addWidget(m_toggle);
71 m_gamutToolbar->setContentsMargins(0, 0, 0, 5);
72 m_gamutToolbar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
73 headerLayout->addWidget(m_gamutToolbar);
74 headerLayout->addStretch();
75 headerLayout->setContentsMargins(0, 0, 0, 0);
76
77 connect(m_selector, SIGNAL(sigGamutMaskSupportChanged(bool)), SLOT(slotShowGamutMaskToolbar(bool)));
78
79 m_configButton = new QToolButton(this);
80 m_configButton->setIcon(KisIconUtils::loadIcon("view-choose"));
81 m_configButton->setAutoRaise(true);
82 m_configButton->setPopupMode(QToolButton::InstantPopup);
83 headerLayout->addWidget(m_configButton);
84
85 m_mainWidgetLayout->addWidget(headerWidget);
88
90
94 connect(m_shadeSelector, SIGNAL(sigColorInteraction(bool)), SLOT(slotColorInteraction(bool)));
95
96 // eventually it should made be a global history, not specific to any plugin
100
103 connect(m_history, SIGNAL(sigColorChanged(KoColor)), SLOT(slotColorSelected(KoColor)));
104 connect(m_history, SIGNAL(sigColorInteraction(bool)), SLOT(slotColorInteraction(bool)));
105
106 // Common Colors (Colors from Image)
108
111 connect(m_commonColors, SIGNAL(sigColorChanged(KoColor)), SLOT(slotColorSelected(KoColor)));
112 connect(m_commonColors, SIGNAL(sigColorInteraction(bool)), SLOT(slotColorInteraction(bool)));
113
114 connect(WGConfig::notifier(), SIGNAL(configChanged()), SLOT(slotConfigurationChanged()));
115
116 setWidget(mainWidget);
118 setEnabled(false);
119}
The KisVisualColorModel class allows manipulating a KoColor using various color models.
The KisVisualColorSelector class.
KisVisualColorModelSP selectorModel() const
void setPreset(Preset preset)
void slotColorSelected(const KoColor &color)
QBoxLayout * m_selectorAreaLayout
KisGamutMaskToolbar * m_gamutToolbar
void slotShowGamutMaskToolbar(bool show)
void slotColorInteraction(bool active)
WGCommonColorSet * m_commonColorSet
WGShadeSelector * m_shadeSelector
KisVisualColorModelSP m_colorModelBG
KisColorSourceToggle * m_toggle
QBoxLayout * m_mainWidgetLayout
void slotColorSourceToggled(bool selectingBg)
WGColorPatches * m_history
WGActionManager * m_actionManager
KisSignalCompressor * m_colorChangeCompressor
KisVisualColorModelSP m_colorModelFG
KisUniqueColorSet * m_documentColorHistoryModel
std::unique_ptr< KisUniqueColorSet > m_fallbackColorHistoryModel
KisVisualColorSelector * m_selector
QBoxLayout * m_verticalElementsLayout
KisUniqueColorSet * m_globalColorHistoryModel
WGColorPatches * m_commonColors
WGSelectorDisplayConfigSP m_displayConfig
WGColorPreviewToolTip * m_colorTooltip
QIcon loadIcon(const QString &name)
WGConfigNotifier * notifier()
Definition WGConfig.cpp:190

References WGColorPatches::CommonColors, WGColorPatches::History, KisIconUtils::loadIcon(), m_colorChangeCompressor, m_colorModelFG, m_commonColors, m_commonColorSet, m_configButton, m_displayConfig, m_documentColorHistoryModel, m_fallbackColorHistoryModel, m_gamutToolbar, m_globalColorHistoryModel, m_history, m_mainWidgetLayout, m_selector, m_selectorAreaLayout, m_shadeSelector, m_toggle, m_verticalElementsLayout, WGConfig::notifier(), KisVisualColorSelector::selectorModel(), KisVisualColorSelector::setMinimumSliderWidth(), WGColorPatches::setPreset(), slotColorInteraction(), slotColorSelected(), slotColorSourceToggled(), slotConfigurationChanged(), slotSetNewColors(), and slotShowGamutMaskToolbar().

Member Function Documentation

◆ colorHistoryModel()

◆ colorModel()

const KisVisualColorModel & WGColorSelectorDock::colorModel ( ) const

Definition at line 121 of file WGColorSelectorDock.cpp.

122{
123 // currently always return foreground model;
124 // do lazy conversion to current HSX model if required
125 if (selectingBackground() && m_colorModelBG->isHSXModel()) {
126 m_colorModelFG->setRGBColorModel(m_colorModelBG->colorModel());
127 }
128 return *(m_colorModelFG);
129}

References m_colorModelBG, m_colorModelFG, and selectingBackground().

◆ disconnectFromCanvas()

void WGColorSelectorDock::disconnectFromCanvas ( )
protected

Definition at line 246 of file WGColorSelectorDock.cpp.

247{
248 m_canvas->disconnectCanvasObserver(this);
249 m_canvas->displayColorConverter()->displayRendererInterface()->disconnect(this);
250 m_canvas->imageView()->resourceProvider()->disconnect(m_selector);
251 m_canvas = 0;
252}
QPointer< KisCanvas2 > m_canvas

References m_canvas, and m_selector.

◆ displayColorConverter()

KisDisplayColorConverter * WGColorSelectorDock::displayColorConverter ( bool rawPointer = false) const

Definition at line 131 of file WGColorSelectorDock.cpp.

132{
133 KisDisplayColorConverter *converter = nullptr;
134 if (m_canvas) {
135 converter = m_canvas->displayColorConverter();
136 }
137 return (rawPointer || converter) ? converter : KisDisplayColorConverter::dumbConverterInstance();
138}
static KisDisplayColorConverter * dumbConverterInstance()

References KisDisplayColorConverter::dumbConverterInstance(), and m_canvas.

◆ leaveEvent()

void WGColorSelectorDock::leaveEvent ( QEvent * event)
overrideprotected

Definition at line 161 of file WGColorSelectorDock.cpp.

162{
163 Q_UNUSED(event)
164 m_colorTooltip->hide();
165}

References m_colorTooltip.

◆ selectingBackground()

bool WGColorSelectorDock::selectingBackground ( ) const

Definition at line 140 of file WGColorSelectorDock.cpp.

141{
142 return m_toggle->isChecked();
143}

References m_toggle.

◆ setCanvas()

void WGColorSelectorDock::setCanvas ( KoCanvasBase * canvas)
overrideprotectedvirtual

re-implement this method in your canvas observer. It will be called whenever a canvas becomes active. Note that you are responsible for not connecting more than one time to the signals of a canvas or any of the QObjects you can access through the canvas.

Implements KoCanvasObserverBase.

Definition at line 173 of file WGColorSelectorDock.cpp.

174{
175 if (m_canvas.data() == canvas)
176 {
177 // not sure why setCanvas gets called 3 times for new canvas, just skip
178 return;
179 }
180 if (m_canvas) {
182 }
183 m_actionManager->setCanvas(qobject_cast<KisCanvas2*>(canvas), m_canvas);
184 m_canvas = qobject_cast<KisCanvas2*>(canvas);
185 // TODO: unset display converters if canvas is null
186 if (m_canvas) {
187 KoColorDisplayRendererInterface *dri = m_canvas->displayColorConverter()->displayRendererInterface();
188 KisCanvasResourceProvider *resourceProvider = m_canvas->imageView()->resourceProvider();
189
190 m_globalColorHistoryModel = resourceProvider->colorHistoryModel();
191 m_documentColorHistoryModel = m_canvas->imageView()->document()->colorHistoryModel();
192
195
197 m_displayConfig->setDisplayConverter(m_canvas->displayColorConverter());
199 //m_toggle->setBackgroundColor(dri->toQColor(color));
200 connect(dri, SIGNAL(displayConfigurationChanged()), this, SLOT(slotDisplayConfigurationChanged()));
201 connect(m_canvas->resourceManager(), SIGNAL(canvasResourceChanged(int,QVariant)),
202 this, SLOT(slotCanvasResourceChanged(int,QVariant)));
203 connect(resourceProvider, SIGNAL(sigFGColorUsed(KoColor)),
204 this, SLOT(slotFGColorUsed(KoColor)), Qt::UniqueConnection);
205
206 // Gamut Mask
207 connect(resourceProvider, SIGNAL(sigGamutMaskChanged(KoGamutMaskSP)),
208 m_selector, SLOT(slotGamutMaskChanged(KoGamutMaskSP)), Qt::UniqueConnection);
209
210 connect(resourceProvider, SIGNAL(sigGamutMaskPreviewUpdate()),
211 m_selector, SLOT(slotGamutMaskPreviewUpdate()), Qt::UniqueConnection);
212
213 connect(resourceProvider, SIGNAL(sigGamutMaskUnset()),
214 m_selector, SLOT(slotGamutMaskUnset()), Qt::UniqueConnection);
215
216 connect(resourceProvider, SIGNAL(sigGamutMaskDeactivated()),
217 m_selector, SLOT(slotGamutMaskUnset()), Qt::UniqueConnection);
218
219 m_gamutToolbar->connectMaskSignals(resourceProvider);
220
221 // quirk note: displayConfigurationChanged signal gets sent *before* the new canvas gets
222 // passed, through the display converter of the now inactive canvas! So we need to repeat...
224 }
225 setEnabled(canvas != 0);
226}
KisUniqueColorSet * colorHistoryModel() const
void connectMaskSignals(KisCanvasResourceProvider *resourceProvider)
void setDisplayRenderer(const KoColorDisplayRendererInterface *displayRenderer) override
void setCanvas(KisCanvas2 *canvas, KisCanvas2 *oldCanvas)
void setColorHistoryModel(KisUniqueColorSet *history)
KisUniqueColorSet * colorHistoryModel() const
void slotFGColorUsed(const KoColor &color)
void slotCanvasResourceChanged(int key, const QVariant &value)
void setImage(KisImageSP image)

References KisCanvasResourceProvider::colorHistoryModel(), colorHistoryModel(), KisGamutMaskToolbar::connectMaskSignals(), disconnectFromCanvas(), m_actionManager, m_canvas, m_commonColorSet, m_displayConfig, m_documentColorHistoryModel, m_gamutToolbar, m_globalColorHistoryModel, m_history, m_selector, WGActionManager::setCanvas(), WGColorPatches::setColorHistoryModel(), KisVisualColorSelector::setDisplayRenderer(), WGCommonColorSet::setImage(), slotCanvasResourceChanged(), slotDisplayConfigurationChanged(), slotFGColorUsed(), and WGActionManager::updateColorHistoryModel().

◆ setChannelValues()

void WGColorSelectorDock::setChannelValues ( const QVector4D & values)

Set new channel values; takes effect immediately!

This is intended for synchronization when color gets adjusted outside of the docker, like in WGActionManager

Parameters
values

Definition at line 145 of file WGColorSelectorDock.cpp.

146{
147 // currently always set foreground color
148 if (!m_canvas) {
149 return;
150 }
151
152 // This could be nicer...if setting active model, this triggers slotColorSelected()
153 // and leaves timer running with NOP, otherwise the resource update is detected as
154 // external event and updates UI.
155 m_colorModelFG->slotSetChannelValues(values);
156
157 m_canvas->resourceManager()->setForegroundColor(m_colorModelFG->currentColor());
158 m_pendingFgUpdate = false;
159}

References m_canvas, m_colorModelFG, and m_pendingFgUpdate.

◆ setViewManager()

void WGColorSelectorDock::setViewManager ( KisViewManager * viewManager)
overrideprotectedvirtual

Implements KisMainwindowObserver.

Definition at line 241 of file WGColorSelectorDock.cpp.

242{
243 m_actionManager->registerActions(viewManager);
244}
void registerActions(KisViewManager *viewManager)

References m_actionManager, and WGActionManager::registerActions().

◆ slotCanvasResourceChanged

void WGColorSelectorDock::slotCanvasResourceChanged ( int key,
const QVariant & value )
privateslot

Definition at line 481 of file WGColorSelectorDock.cpp.

482{
483 switch (key) {
485 if (!m_pendingFgUpdate) {
486 KoColor color = value.value<KoColor>();
488 m_colorModelFG->slotSetColor(color);
489 }
490 break;
492 if (!m_pendingBgUpdate) {
493 KoColor color = value.value<KoColor>();
495 m_colorModelBG->slotSetColor(color);
496 }
497 default:
498 break;
499 }
500}
float value(const T *src, size_t ch)
void setBackgroundColor(const QColor &color)
void setForegroundColor(const QColor &color)
QColor toQColor(const KoColor &c, bool proofToPaintColors=false) const
KisDisplayColorConverter * displayColorConverter(bool rawPointer=false) const
@ BackgroundColor
The active background color selected for this canvas.
@ ForegroundColor
The active foreground color selected for this canvas.

References KoCanvasResource::BackgroundColor, displayColorConverter(), KoCanvasResource::ForegroundColor, m_colorModelBG, m_colorModelFG, m_pendingBgUpdate, m_pendingFgUpdate, m_toggle, KisColorSourceToggle::setBackgroundColor(), KisColorSourceToggle::setForegroundColor(), KisDisplayColorConverter::toQColor(), and value().

◆ slotColorInteraction

void WGColorSelectorDock::slotColorInteraction ( bool active)
privateslot

Definition at line 442 of file WGColorSelectorDock.cpp.

443{
444 if (active) {
445 QColor baseCol = m_displayConfig->displayConverter()->toQColor(m_selector->getCurrentColor());
448 if (sender() == m_shadeSelector) {
450 } else {
451 m_colorTooltip->show(this);
452 }
453 }
454}
KoColor getCurrentColor() const override
void show(const QWidget *focus=nullptr)
void setCurrentColor(const QColor &color)
void setPreviousColor(const QColor &color)

References KisVisualColorSelector::getCurrentColor(), m_colorTooltip, m_displayConfig, m_selector, m_shadeSelector, WGColorPreviewToolTip::setCurrentColor(), WGColorPreviewToolTip::setPreviousColor(), and WGColorPreviewToolTip::show().

◆ slotColorSelected

◆ slotColorSourceToggled

void WGColorSelectorDock::slotColorSourceToggled ( bool selectingBg)
privateslot

Definition at line 420 of file WGColorSelectorDock.cpp.

421{
422 if (selectingBg) {
423 if (m_colorModelFG->isHSXModel()) {
424 m_colorModelBG->setRGBColorModel(m_colorModelFG->colorModel());
425 }
428 }
429 else {
430 if (m_colorModelBG->isHSXModel()) {
431 m_colorModelFG->setRGBColorModel(m_colorModelBG->colorModel());
432 }
435 }
436 // currently, only the color space of the active model is updated, so it may be outdated
437 if (m_canvas) {
439 }
440}
void setSelectorModel(KisVisualColorModelSP model)
void setModel(KisVisualColorModelSP colorModel) override

References m_canvas, m_colorModelBG, m_colorModelFG, m_selector, m_shadeSelector, WGShadeSelector::setModel(), KisVisualColorSelector::setSelectorModel(), and slotDisplayConfigurationChanged().

◆ slotConfigurationChanged

void WGColorSelectorDock::slotConfigurationChanged ( )
privateslot

Definition at line 305 of file WGColorSelectorDock.cpp.

306{
309 m_selector->selectorModel()->setRGBColorModel(cfg.get(WGConfig::rgbColorModel));
310 KisColorSelectorConfiguration selectorCfg = cfg.colorSelectorConfiguration();
311 m_selector->setConfiguration(&selectorCfg);
314 m_customCS = cfg.customSelectionColorSpace();
315 }
316 bool proofColors = cfg.get(WGConfig::proofToPaintingColors);
317 m_selector->setProofColors(proofColors);
318 m_displayConfig->setPreviewInPaintingCS(proofColors);
320
325
328 // Quick settings menu
329 if (cfg.get(WGConfig::quickSettingsEnabled)) {
330 if (!m_configButton->menu()) {
331 m_configButton->disconnect(this);
332 QMenu *configureMenu = new QMenu(this);
334 // prevents hover indicator being stuck on other menu entries
335 m_quickSettings->setMouseTracking(true);
336 m_quickSettingAction = new QWidgetAction(this);
337 m_quickSettingAction->setDefaultWidget(m_quickSettings);
338
339 configureMenu->addAction(m_quickSettingAction);
340 QAction *cfgAction = configureMenu->addAction(i18nc("Wide Gamut Color Selector", "Configure..."));
341 connect(cfgAction, SIGNAL(triggered(bool)), SLOT(slotOpenSettings()));
342 m_configButton->setMenu(configureMenu);
343 } else {
344 // WORKAROUND: force geometry update by re-adding action, all other attempts failed...
345 QMenu *menu = m_configButton->menu();
346 menu->removeAction(m_quickSettingAction);
347 menu->insertAction(menu->actions().constFirst(), m_quickSettingAction);
348 }
350 } else {
351 if (m_configButton->menu()) {
352 m_configButton->menu()->deleteLater();
353 m_configButton->setMenu(0);
356 m_quickSettings = 0;
357 }
358 connect(m_configButton, SIGNAL(clicked(bool)), SLOT(slotOpenSettings()), Qt::UniqueConnection);
359 }
360
361 updateLayout();
362
363 if (m_canvas) {
365 }
366}
void setRenderMode(RenderMode mode)
void setConfiguration(const KisColorSelectorConfiguration *config)
Explicitly set the shape configuration. Accepts all valid combinations of Advanced Color Selector,...
void updateSettings() override
const KoColorSpace * m_customCS
WGQuickSettingsWidget * m_quickSettings
QWidgetAction * m_quickSettingAction
ColorSpaceSource m_CSSource
void setAutoUpdate(bool enabled)
void updateSettings() override
const GenericSetting< bool > colorHistoryFromDocument
Definition WGConfig.cpp:239
const NumericSetting< KisVisualColorSelector::RenderMode > selectorRenderMode
Definition WGConfig.cpp:256
const NumericSetting< WGColorSelectorDock::ColorSpaceSource > colorSpaceSource
const NumericSetting< KisVisualColorModel::ColorModel > rgbColorModel
Definition WGConfig.cpp:253
class WGConfig Accessor
const GenericSetting< bool > proofToPaintingColors
Definition WGConfig.cpp:237
const GenericSetting< bool > quickSettingsEnabled
Definition WGConfig.cpp:244
const GenericSetting< bool > commonColorsAutoUpdate
Definition WGConfig.cpp:242

References WGConfig::colorHistoryFromDocument, colorHistoryModel(), WGConfig::colorSpaceSource, WGConfig::commonColorsAutoUpdate, FixedColorSpace, WGQuickSettingsWidget::loadConfiguration(), m_actionManager, m_canvas, m_colorHistoryFromDocument, m_commonColors, m_commonColorSet, m_configButton, m_CSSource, m_customCS, m_displayConfig, m_history, m_quickSettingAction, m_quickSettings, m_selector, m_shadeSelector, WGConfig::proofToPaintingColors, WGConfig::quickSettingsEnabled, WGConfig::rgbColorModel, KisVisualColorSelector::selectorModel(), WGConfig::selectorRenderMode, WGCommonColorSet::setAutoUpdate(), WGColorPatches::setColorHistoryModel(), KisVisualColorSelector::setConfiguration(), KisVisualColorSelector::setProofColors(), KisVisualColorSelector::setRenderMode(), slotDisplayConfigurationChanged(), slotOpenSettings(), WGActionManager::updateColorHistoryModel(), updateLayout(), WGColorPatches::updateSettings(), and WGShadeSelector::updateSettings().

◆ slotDisplayConfigurationChanged

void WGColorSelectorDock::slotDisplayConfigurationChanged ( )
privateslot

Definition at line 368 of file WGColorSelectorDock.cpp.

369{
370 if (!m_canvas) {
371 return;
372 }
373
374 const KoColorSpace *selectionCS = nullptr;
375
376 // Note: displayConfigurationChanged is also emitted on image color space changes,
377 // so there's no need to handle extra signals, although it's a bit convoluted
379 selectionCS = m_canvas->image()->colorSpace();
380 } else if (m_CSSource == FixedColorSpace) {
381 selectionCS = m_customCS;
382 } else {
383 selectionCS = m_canvas->displayColorConverter()->nodeColorSpace();
384 }
385
386 // TODO: use m_viewManager->canvasResourceProvider()->fgColor();
387 KoColor fgColor = m_canvas->resourceManager()->foregroundColor();
388 KoColor bgColor = m_canvas->resourceManager()->backgroundColor();
389
390 bool proof = m_displayConfig->previewInPaintingCS();
391 m_toggle->setForegroundColor(displayColorConverter()->toQColor(fgColor, proof));
392 m_toggle->setBackgroundColor(displayColorConverter()->toQColor(bgColor, proof));
394
395 if (selectionCS && selectionCS != activeModel->colorSpace()) {
396 activeModel->slotSetColorSpace(selectionCS);
397 activeModel->slotSetColor(activeModel == m_colorModelFG ? fgColor : bgColor);
398 }
399}

References displayColorConverter(), FixedColorSpace, ImageColorSpace, m_canvas, m_colorModelFG, m_CSSource, m_customCS, m_displayConfig, m_selector, m_toggle, KisVisualColorSelector::selectorModel(), KisColorSourceToggle::setBackgroundColor(), and KisColorSourceToggle::setForegroundColor().

◆ slotFGColorUsed

void WGColorSelectorDock::slotFGColorUsed ( const KoColor & color)
privateslot

◆ slotOpenSettings

void WGColorSelectorDock::slotOpenSettings ( )
privateslot

Definition at line 502 of file WGColorSelectorDock.cpp.

503{
504 if (!m_canvas) return;
505
507 if (settings.exec() == QDialog::Accepted) {
508 //WGConfig::notifier()->notifyConfigChanged();
509 }
510}

References m_canvas.

◆ slotSetNewColors

void WGColorSelectorDock::slotSetNewColors ( )
privateslot

Definition at line 468 of file WGColorSelectorDock.cpp.

469{
470 //KIS_SAFE_ASSERT_RECOVER_RETURN(m_pendingFgUpdate || m_pendingBgUpdate);
471 if (m_pendingFgUpdate) {
472 m_canvas->resourceManager()->setForegroundColor(m_colorModelFG->currentColor());
473 m_pendingFgUpdate = false;
474 }
475 if (m_pendingBgUpdate) {
476 m_canvas->resourceManager()->setBackgroundColor(m_colorModelBG->currentColor());
477 m_pendingBgUpdate = false;
478 }
479}

References m_canvas, m_colorModelBG, m_colorModelFG, m_pendingBgUpdate, and m_pendingFgUpdate.

◆ slotShowGamutMaskToolbar

void WGColorSelectorDock::slotShowGamutMaskToolbar ( bool show)
privateslot

Definition at line 512 of file WGColorSelectorDock.cpp.

513{
514 m_gamutToolbar->setVisible(show);
515}

References m_gamutToolbar.

◆ unsetCanvas()

void WGColorSelectorDock::unsetCanvas ( )
overrideprotectedvirtual

Re-implement to notify the observer that its canvas is no longer among the living. The daisies, it is pushing up. This means you don't have to disconnect, it's dead.

The old canvas should be deleted already, so if you stored a pointer to it, don't touch!

Note that currently there is a bug where in certain specific circumstances unsetCanvas can be called when it shouldn't, see for example KWStatisticsDocker for a workaround for this problem.

Implements KoCanvasObserverBase.

Definition at line 228 of file WGColorSelectorDock.cpp.

229{
230 setEnabled(false);
232 m_displayConfig->setDisplayConverter(0);
235
238 m_canvas = 0;
239}
KisSharedPtr< KisImage > KisImageSP
Definition kis_types.h:69

References m_actionManager, m_canvas, m_commonColorSet, m_displayConfig, m_documentColorHistoryModel, m_globalColorHistoryModel, m_history, m_selector, WGActionManager::setCanvas(), WGColorPatches::setColorHistoryModel(), KisVisualColorSelector::setDisplayRenderer(), and WGCommonColorSet::setImage().

◆ updateLayout()

void WGColorSelectorDock::updateLayout ( )
protected

Definition at line 254 of file WGColorSelectorDock.cpp.

255{
257
258 bool historyEnabled = cfg.get(WGConfig::colorHistoryEnabled);
259 Qt::Orientation historyOrientation = cfg.get(WGConfig::colorHistory.orientation);
260
261 m_verticalElementsLayout->removeWidget(m_history);
263 m_mainWidgetLayout->removeWidget(m_history);
264 m_mainWidgetLayout->removeWidget(m_commonColors);
265
266 if (historyEnabled) {
267 if (historyOrientation == Qt::Vertical) {
269 }
270 else {
271 m_mainWidgetLayout->addWidget(m_history);
272 }
273 m_history->show();
274 }
275 else {
276 m_history->hide();
277 }
278
280 Qt::Orientation commonColorsOrientation = cfg.get(WGConfig::commonColors.orientation);
281
282 if (commonColorsEnabled) {
283 if (commonColorsOrientation == Qt::Vertical) {
285 }
286 else {
288 }
289 m_commonColors->show();
290 }
291 else {
292 m_commonColors->hide();
293 }
294
295 bool shadeSelectorEnabled = cfg.get(WGConfig::minimalShadeSelectorEnabled);
296 if (shadeSelectorEnabled) {
297 m_shadeSelector->show();
298 }
299 else {
300 m_shadeSelector->hide();
301 }
302
303}
const GenericSetting< bool > colorHistoryEnabled
Definition WGConfig.cpp:238
const ColorPatches commonColors
Definition WGConfig.cpp:221
const GenericSetting< bool > minimalShadeSelectorEnabled
Definition WGConfig.cpp:247
const GenericSetting< bool > commonColorsEnabled
Definition WGConfig.cpp:240
const ColorPatches colorHistory
Definition WGConfig.cpp:213

References WGConfig::colorHistory, WGConfig::colorHistoryEnabled, WGConfig::commonColors, WGConfig::commonColorsEnabled, m_commonColors, m_history, m_mainWidgetLayout, m_shadeSelector, m_verticalElementsLayout, and WGConfig::minimalShadeSelectorEnabled.

Member Data Documentation

◆ m_actionManager

WGActionManager* WGColorSelectorDock::m_actionManager {0}
private

Definition at line 99 of file WGColorSelectorDock.h.

99{0};

◆ m_canvas

QPointer<KisCanvas2> WGColorSelectorDock::m_canvas
private

Definition at line 83 of file WGColorSelectorDock.h.

◆ m_colorChangeCompressor

KisSignalCompressor* WGColorSelectorDock::m_colorChangeCompressor
private

Definition at line 92 of file WGColorSelectorDock.h.

◆ m_colorHistoryFromDocument

bool WGColorSelectorDock::m_colorHistoryFromDocument {false}
private

Definition at line 96 of file WGColorSelectorDock.h.

96{false};

◆ m_colorModelBG

KisVisualColorModelSP WGColorSelectorDock::m_colorModelBG
private

Definition at line 108 of file WGColorSelectorDock.h.

◆ m_colorModelFG

KisVisualColorModelSP WGColorSelectorDock::m_colorModelFG
private

Definition at line 107 of file WGColorSelectorDock.h.

◆ m_colorTooltip

WGColorPreviewToolTip* WGColorSelectorDock::m_colorTooltip {0}
private

Definition at line 100 of file WGColorSelectorDock.h.

100{0};

◆ m_commonColors

WGColorPatches* WGColorSelectorDock::m_commonColors {0}
private

Definition at line 103 of file WGColorSelectorDock.h.

103{0};

◆ m_commonColorSet

WGCommonColorSet* WGColorSelectorDock::m_commonColorSet {0}
private

Definition at line 98 of file WGColorSelectorDock.h.

98{0};

◆ m_configButton

QToolButton* WGColorSelectorDock::m_configButton {0}
private

Definition at line 106 of file WGColorSelectorDock.h.

106{0};

◆ m_CSSource

ColorSpaceSource WGColorSelectorDock::m_CSSource {LayerColorSpace}
private

Definition at line 110 of file WGColorSelectorDock.h.

◆ m_customCS

const KoColorSpace* WGColorSelectorDock::m_customCS {0}
private

Definition at line 109 of file WGColorSelectorDock.h.

109{0};

◆ m_displayConfig

WGSelectorDisplayConfigSP WGColorSelectorDock::m_displayConfig
private

Definition at line 84 of file WGColorSelectorDock.h.

◆ m_documentColorHistoryModel

KisUniqueColorSet* WGColorSelectorDock::m_documentColorHistoryModel {0}
private

Definition at line 94 of file WGColorSelectorDock.h.

94{0};

◆ m_fallbackColorHistoryModel

std::unique_ptr<KisUniqueColorSet> WGColorSelectorDock::m_fallbackColorHistoryModel
private

Definition at line 95 of file WGColorSelectorDock.h.

◆ m_gamutToolbar

KisGamutMaskToolbar* WGColorSelectorDock::m_gamutToolbar
private

Definition at line 97 of file WGColorSelectorDock.h.

◆ m_globalColorHistoryModel

KisUniqueColorSet* WGColorSelectorDock::m_globalColorHistoryModel {0}
private

Definition at line 93 of file WGColorSelectorDock.h.

93{0};

◆ m_history

WGColorPatches* WGColorSelectorDock::m_history {0}
private

Definition at line 102 of file WGColorSelectorDock.h.

102{0};

◆ m_mainWidgetLayout

QBoxLayout* WGColorSelectorDock::m_mainWidgetLayout {0}
private

Definition at line 86 of file WGColorSelectorDock.h.

86{0};

◆ m_pendingBgUpdate

bool WGColorSelectorDock::m_pendingBgUpdate {false}
private

Definition at line 112 of file WGColorSelectorDock.h.

112{false};

◆ m_pendingFgUpdate

bool WGColorSelectorDock::m_pendingFgUpdate {false}
private

Definition at line 111 of file WGColorSelectorDock.h.

111{false};

◆ m_quickSettingAction

QWidgetAction* WGColorSelectorDock::m_quickSettingAction {0}
private

Definition at line 104 of file WGColorSelectorDock.h.

104{0};

◆ m_quickSettings

WGQuickSettingsWidget* WGColorSelectorDock::m_quickSettings {0}
private

Definition at line 105 of file WGColorSelectorDock.h.

105{0};

◆ m_selector

KisVisualColorSelector* WGColorSelectorDock::m_selector {0}
private

Definition at line 90 of file WGColorSelectorDock.h.

90{0};

◆ m_selectorAreaLayout

QBoxLayout* WGColorSelectorDock::m_selectorAreaLayout {0}
private

Definition at line 87 of file WGColorSelectorDock.h.

87{0};

◆ m_shadeSelector

WGShadeSelector* WGColorSelectorDock::m_shadeSelector {0}
private

Definition at line 101 of file WGColorSelectorDock.h.

101{0};

◆ m_toggle

KisColorSourceToggle* WGColorSelectorDock::m_toggle {0}
private

Definition at line 91 of file WGColorSelectorDock.h.

91{0};

◆ m_verticalElementsLayout

QBoxLayout* WGColorSelectorDock::m_verticalElementsLayout {0}
private

Definition at line 88 of file WGColorSelectorDock.h.

88{0};

The documentation for this class was generated from the following files: