From kde-kimageshop Wed Apr 15 10:59:47 2020 From: Dmitry Kazakov Date: Wed, 15 Apr 2020 10:59:47 +0000 To: kde-kimageshop Subject: [krita/krita/4.3] plugins/paintops: Disable "Color" and "Lightness" brush tip modes in engines not s Message-Id: <20200415105947.DCAE01240176 () leptone ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-kimageshop&m=158694841425314 Git commit aab7812020e9c5a8dcad36f3837299380411d1cb by Dmitry Kazakov. Committed on 15/04/2020 at 10:59. Pushed by dkazakov into branch 'krita/4.3'. Disable "Color" and "Lightness" brush tip modes in engines not supporting t= hem These modes are supported only by "Pixel" and "Tangent-Normal" brushes. It would be nice to implement that for "ColorSmudge" paintop. WARNING: some old preset might have had "Color" mode for colorsmudge. It was a bug in previous versions of Krita. This switch changed the brush tip a little bit. Now this mode is not supported, all old presets will automatically switch into Mask mode (there are no such preset in the default pack of presets). CC:kimageshop@kde.org M +4 -0 plugins/paintops/colorsmudge/kis_colorsmudgeop_settings_widg= et.cpp M +1 -0 plugins/paintops/defaultpaintops/brush/kis_brushop_settings_= widget.cpp M +5 -0 plugins/paintops/libpaintop/kis_brush_based_paintop_options_= widget.cpp M +1 -0 plugins/paintops/libpaintop/kis_brush_based_paintop_options_= widget.h M +18 -2 plugins/paintops/libpaintop/kis_brush_chooser.cpp M +5 -0 plugins/paintops/libpaintop/kis_brush_chooser.h M +5 -0 plugins/paintops/libpaintop/kis_brush_option_widget.cpp M +1 -0 plugins/paintops/libpaintop/kis_brush_option_widget.h M +10 -0 plugins/paintops/libpaintop/kis_brush_selection_widget.cpp M +4 -0 plugins/paintops/libpaintop/kis_brush_selection_widget.h M +1 -0 plugins/paintops/tangentnormal/kis_tangent_normal_paintop_se= ttings_widget.cpp https://invent.kde.org/kde/krita/commit/aab7812020e9c5a8dcad36f383729938041= 1d1cb diff --git a/plugins/paintops/colorsmudge/kis_colorsmudgeop_settings_widget= .cpp b/plugins/paintops/colorsmudge/kis_colorsmudgeop_settings_widget.cpp index d3994a7054..0f0db9abcd 100644 --- a/plugins/paintops/colorsmudge/kis_colorsmudgeop_settings_widget.cpp +++ b/plugins/paintops/colorsmudge/kis_colorsmudgeop_settings_widget.cpp @@ -49,6 +49,10 @@ KisColorSmudgeOpSettingsWidget::KisColorSmudgeOpSettings= Widget(QWidget* parent): setObjectName("brush option widget"); setPrecisionEnabled(true); = + // ColorSmudge paintoip doesn't support colorful + // HSL brushes yet. Though it would be nice feature to have. + setHSLBrushTipEnabled(false); + addPaintOpOption(new KisCompositeOpOption(true), i18n("Blending Mode")= ); addPaintOpOption(new KisCurveOptionWidget(new KisPressureOpacityOption= (), i18n("Transparent"), i18n("Opaque")), i18n("Opacity")); addPaintOpOption(new KisCurveOptionWidget(new KisPressureSizeOption(),= i18n("0%"), i18n("100%")), i18n("Size")); diff --git a/plugins/paintops/defaultpaintops/brush/kis_brushop_settings_wi= dget.cpp b/plugins/paintops/defaultpaintops/brush/kis_brushop_settings_widg= et.cpp index b0d7b31147..856877f0ae 100644 --- a/plugins/paintops/defaultpaintops/brush/kis_brushop_settings_widget.cpp +++ b/plugins/paintops/defaultpaintops/brush/kis_brushop_settings_widget.cpp @@ -54,6 +54,7 @@ KisBrushOpSettingsWidget::KisBrushOpSettingsWidget(QWidge= t* parent) { setObjectName("brush option widget"); setPrecisionEnabled(true); + setHSLBrushTipEnabled(true); = // Brush tip options addPaintOpOption(new KisCompositeOpOption(true), i18n("Blending Mode")= ); diff --git a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_wi= dget.cpp b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widg= et.cpp index 2131213d20..acd1038d02 100644 --- a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.cpp +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.cpp @@ -37,6 +37,11 @@ void KisBrushBasedPaintopOptionWidget::setPrecisionEnabl= ed(bool value) m_brushOption->setPrecisionEnabled(value); } = +void KisBrushBasedPaintopOptionWidget::setHSLBrushTipEnabled(bool value) +{ + m_brushOption->setHSLBrusTipEnabled(value); +} + KisBrushSP KisBrushBasedPaintopOptionWidget::brush() { return m_brushOption->brush(); diff --git a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_wi= dget.h b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget= .h index 42a161c91c..2e3b6f10fd 100644 --- a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.h +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.h @@ -33,6 +33,7 @@ public: ~KisBrushBasedPaintopOptionWidget() override; = void setPrecisionEnabled(bool value); + void setHSLBrushTipEnabled(bool value); = KisBrushSP brush(); = diff --git a/plugins/paintops/libpaintop/kis_brush_chooser.cpp b/plugins/pa= intops/libpaintop/kis_brush_chooser.cpp index 75048aa0ca..f730fa75a4 100644 --- a/plugins/paintops/libpaintop/kis_brush_chooser.cpp +++ b/plugins/paintops/libpaintop/kis_brush_chooser.cpp @@ -418,7 +418,8 @@ void KisPredefinedBrushChooser::updateBrushTip(KoResour= ce * resource, bool isCha void KisPredefinedBrushChooser::slotUpdateBrushModeButtonsState() { KisColorfulBrush *colorfulBrush =3D dynamic_cast(m_= brush.data()); - const bool modeSwitchEnabled =3D colorfulBrush && colorfulBrush->hasCo= lor(); + const bool modeSwitchEnabled =3D + m_hslBrushTipEnabled && colorfulBrush && colorfulBrush->hasColor(); = if (modeSwitchEnabled) { if (colorfulBrush->useColorAsMask() && colorfulBrush->preserveLigh= tness()) { @@ -461,7 +462,12 @@ void KisPredefinedBrushChooser::slotUpdateBrushModeBut= tonsState() intAdjustmentMidPoint->setToolTip(""); intBrightnessAdjustment->setToolTip(""); intContrastAdjustment->setToolTip(""); - grpBrushMode->setToolTip("The selected brush tip does not have col= or channels. The brush will work in \"Mask\" mode."); + + if (m_hslBrushTipEnabled) { + grpBrushMode->setToolTip("The selected brush tip does not have= color channels. The brush will work in \"Mask\" mode."); + } else { + grpBrushMode->setToolTip("The selected brush engine does not s= upport \"Color\" or \"Lightness\" modes. The brush will work in \"Mask\" mo= de."); + } } = = @@ -557,6 +563,16 @@ void KisPredefinedBrushChooser::setImage(KisImageWSP i= mage) m_image =3D image; } = +void KisPredefinedBrushChooser::setHSLBrusTipEnabled(bool value) +{ + m_hslBrushTipEnabled =3D value; +} + +bool KisPredefinedBrushChooser::hslBrushTipEnabled() const +{ + return m_hslBrushTipEnabled; +} + void KisPredefinedBrushChooser::slotImportNewBrushResource() { m_itemChooser->slotButtonClicked(KoResourceItemChooser::Button_Import); } diff --git a/plugins/paintops/libpaintop/kis_brush_chooser.h b/plugins/pain= tops/libpaintop/kis_brush_chooser.h index d7a3273cc6..de3aa294d2 100644 --- a/plugins/paintops/libpaintop/kis_brush_chooser.h +++ b/plugins/paintops/libpaintop/kis_brush_chooser.h @@ -57,6 +57,9 @@ public: void setBrushSize(qreal xPixels, qreal yPixels); void setImage(KisImageWSP image); = + void setHSLBrusTipEnabled(bool value); + bool hslBrushTipEnabled() const; + private Q_SLOTS: = void slotResetBrush(); @@ -88,6 +91,8 @@ private: KisImageWSP m_image; KisCustomBrushWidget* m_stampBrushWidget; KisClipboardBrushWidget* m_clipboardBrushWidget; + + bool m_hslBrushTipEnabled =3D false; }; = #endif // KIS_PREDEFINED_BRUSH_CHOOSER_H_ diff --git a/plugins/paintops/libpaintop/kis_brush_option_widget.cpp b/plug= ins/paintops/libpaintop/kis_brush_option_widget.cpp index 770f822b4d..9f8c3d4277 100644 --- a/plugins/paintops/libpaintop/kis_brush_option_widget.cpp +++ b/plugins/paintops/libpaintop/kis_brush_option_widget.cpp @@ -74,6 +74,11 @@ void KisBrushOptionWidget::setPrecisionEnabled(bool valu= e) m_brushSelectionWidget->setPrecisionEnabled(value); } = +void KisBrushOptionWidget::setHSLBrusTipEnabled(bool value) +{ + m_brushSelectionWidget->setHSLBrusTipEnabled(value); +} + void KisBrushOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP= settings) const { m_brushSelectionWidget->writeOptionSetting(settings); diff --git a/plugins/paintops/libpaintop/kis_brush_option_widget.h b/plugin= s/paintops/libpaintop/kis_brush_option_widget.h index 41b9e9667f..c645d388a9 100644 --- a/plugins/paintops/libpaintop/kis_brush_option_widget.h +++ b/plugins/paintops/libpaintop/kis_brush_option_widget.h @@ -51,6 +51,7 @@ public: void setImage(KisImageWSP image) override; = void setPrecisionEnabled(bool value); + void setHSLBrusTipEnabled(bool value); = void writeOptionSetting(KisPropertiesConfigurationSP setting) const ov= erride; void readOptionSetting(const KisPropertiesConfigurationSP setting) ove= rride; diff --git a/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp b/p= lugins/paintops/libpaintop/kis_brush_selection_widget.cpp index 7716bf3314..18b367b77b 100644 --- a/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp +++ b/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp @@ -273,6 +273,16 @@ void KisBrushSelectionWidget::hideOptions(const QStrin= gList &options) } } = +void KisBrushSelectionWidget::setHSLBrusTipEnabled(bool value) +{ + m_predefinedBrushWidget->setHSLBrusTipEnabled(value); +} + +bool KisBrushSelectionWidget::hslBrushTipEnabled() const +{ + return m_predefinedBrushWidget->hslBrushTipEnabled(); +} + void KisBrushSelectionWidget::setCurrentWidget(QWidget* widget) { if (widget =3D=3D m_currentBrushWidget) return; diff --git a/plugins/paintops/libpaintop/kis_brush_selection_widget.h b/plu= gins/paintops/libpaintop/kis_brush_selection_widget.h index 81a7c395de..ce02905fac 100644 --- a/plugins/paintops/libpaintop/kis_brush_selection_widget.h +++ b/plugins/paintops/libpaintop/kis_brush_selection_widget.h @@ -73,6 +73,10 @@ public: = void hideOptions(const QStringList &options); = + void setHSLBrusTipEnabled(bool value); + bool hslBrushTipEnabled() const; + + Q_SIGNALS: = void sigBrushChanged(); diff --git a/plugins/paintops/tangentnormal/kis_tangent_normal_paintop_sett= ings_widget.cpp b/plugins/paintops/tangentnormal/kis_tangent_normal_paintop= _settings_widget.cpp index dd181346ed..8c085f3db7 100644 --- a/plugins/paintops/tangentnormal/kis_tangent_normal_paintop_settings_wi= dget.cpp +++ b/plugins/paintops/tangentnormal/kis_tangent_normal_paintop_settings_wi= dget.cpp @@ -47,6 +47,7 @@ KisTangentNormalPaintOpSettingsWidget::KisTangentNormalPa= intOpSettingsWidget(QWi { setObjectName("brush option widget"); setPrecisionEnabled(true); + setHSLBrushTipEnabled(true); = addPaintOpOption(new KisCompositeOpOption(true), i18n("Blending Mode")= ); addPaintOpOption(new KisCurveOptionWidget(new KisPressureOpacityOption= (), i18n("Transparent"), i18n("Opaque")), i18n("Opacity"));