[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [krita/krita-testing-wolthera] libs/ui: Use internal visual selector in the Pop-up palette.
From:       Wolthera van Hovell tot Westerflier <griffinvalley () gmail ! com>
Date:       2016-08-26 16:40:57
Message-ID: E1bdKBd-0006IN-PN () code ! kde ! org
[Download RAW message or body]

Git commit 1afa4384e84fa5af6f8681545787f81cdd4f183e by Wolthera van Hovell tot \
Westerflier. Committed on 26/08/2016 at 16:29.
Pushed by woltherav into branch 'krita-testing-wolthera'.

Use internal visual selector in the Pop-up palette.

This means you finally can have your shape of choice inside the pop-up palette!

Needs testing, obviously.

Ref T2438

M  +22   -5    libs/ui/kis_popup_palette.cpp
M  +2    -1    libs/ui/kis_popup_palette.h
M  +30   -9    libs/ui/widgets/kis_visual_color_selector.cpp
M  +1    -0    libs/ui/widgets/kis_visual_color_selector.h

http://commits.kde.org/krita/1afa4384e84fa5af6f8681545787f81cdd4f183e

diff --git a/libs/ui/kis_popup_palette.cpp b/libs/ui/kis_popup_palette.cpp
index e7c8988..98db88b 100644
--- a/libs/ui/kis_popup_palette.cpp
+++ b/libs/ui/kis_popup_palette.cpp
@@ -26,6 +26,8 @@
 #include <brushengine/kis_paintop_preset.h>
 #include "kis_resource_server_provider.h"
 #include <KoTriangleColorSelector.h>
+#include <kis_visual_color_selector.h>
+#include <kis_config_notifier.h>
 #include "KoColorSpaceRegistry.h"
 #include <kis_types.h>
 #include <QtGui>
@@ -106,21 +108,27 @@ KisPopupPalette::KisPopupPalette(KisFavoriteResourceManager* \
manager, const KoCo  {
 
     const int borderWidth = 3;
-    m_triangleColorSelector  = new PopupColorTriangle(displayRenderer, this);
+    //m_triangleColorSelector  = new PopupColorTriangle(displayRenderer, this);
+    m_triangleColorSelector = new KisVisualColorSelector(this);
+    m_triangleColorSelector->setDisplayRenderer(displayRenderer);
+    m_triangleColorSelector->setConfig(true,false);
     m_triangleColorSelector->move(widgetSize/2-colorInnerRadius+borderWidth, \
                widgetSize/2-colorInnerRadius+borderWidth);
     m_triangleColorSelector->resize(colorInnerRadius*2-borderWidth*2, \
colorInnerRadius*2-borderWidth*2);  m_triangleColorSelector->setVisible(true);
+    m_triangleColorSelector->slotSetColor(KoColor());
 
     QRegion maskedRegion(0, 0, m_triangleColorSelector->width(), \
m_triangleColorSelector->height(), QRegion::Ellipse );  \
m_triangleColorSelector->setMask(maskedRegion);  
     //setAttribute(Qt::WA_TranslucentBackground, true);
 
-    connect(m_triangleColorSelector, SIGNAL(realColorChanged(KoColor)),
+    connect(m_triangleColorSelector, SIGNAL(sigNewColor(KoColor)),
             m_colorChangeCompressor.data(), SLOT(start()));
     connect(m_colorChangeCompressor.data(), SIGNAL(timeout()),
             SLOT(slotEmitColorChanged()));
 
+    connect(KisConfigNotifier::instance(), SIGNAL(configChanged()), \
m_triangleColorSelector, SLOT(ConfigurationChanged())); +
     connect(m_resourceManager, SIGNAL(sigChangeFGColorSelector(KoColor)),
             SLOT(slotExternalFgColorChanged(KoColor)));
     connect(this, SIGNAL(sigChangefGColor(KoColor)),
@@ -179,14 +187,23 @@ KisPopupPalette::KisPopupPalette(KisFavoriteResourceManager* \
manager, const KoCo  
 void KisPopupPalette::slotExternalFgColorChanged(const KoColor &color)
 {
-    m_triangleColorSelector->setRealColor(color);
+    //m_triangleColorSelector->setRealColor(color);
+    //hack to get around cmyk for now.
+    if (color.colorSpace()->colorChannelCount()>3) {
+        KoColor c(KoColorSpaceRegistry::instance()->rgb8());
+        c.fromKoColor(color);
+        m_triangleColorSelector->slotSetColor(c);
+    } else {
+        m_triangleColorSelector->slotSetColor(color);
+    }
+
 }
 
 void KisPopupPalette::slotEmitColorChanged()
 {
     if (isVisible()) {
         update();
-        emit sigChangefGColor(m_triangleColorSelector->realColor());
+        emit sigChangefGColor(m_triangleColorSelector->getCurrentColor());
     }
 }
 
@@ -325,7 +342,7 @@ void KisPopupPalette::paintEvent(QPaintEvent* e)
     //painting foreground color
     QPainterPath fgColor;
     fgColor.addEllipse(QPoint(-width() / 2 + 50, -height() / 2 + 32), 30, 30);
-    painter.fillPath(fgColor, \
m_displayRenderer->toQColor(m_triangleColorSelector->realColor())); +    \
painter.fillPath(fgColor, \
m_displayRenderer->toQColor(m_triangleColorSelector->getCurrentColor()));  \
painter.drawPath(fgColor);  
     // create an ellipse for the background that is slightly
diff --git a/libs/ui/kis_popup_palette.h b/libs/ui/kis_popup_palette.h
index 0c6f73f..a45e375 100644
--- a/libs/ui/kis_popup_palette.h
+++ b/libs/ui/kis_popup_palette.h
@@ -33,6 +33,7 @@ class KisSignalCompressor;
 class KisBrushHud;
 class KisRoundHudButton;
 class KisCanvasResourceProvider;
+class KisVisualColorSelector;
 
 class KisPopupPalette : public QWidget
 {
@@ -98,7 +99,7 @@ private:
     int m_hoveredColor;
     int m_selectedColor;
     KisFavoriteResourceManager* m_resourceManager;
-    KoTriangleColorSelector* m_triangleColorSelector;
+    KisVisualColorSelector* m_triangleColorSelector;
 
     QTimer* m_timer;
 
diff --git a/libs/ui/widgets/kis_visual_color_selector.cpp \
b/libs/ui/widgets/kis_visual_color_selector.cpp index bf47370..daf6b58 100644
--- a/libs/ui/widgets/kis_visual_color_selector.cpp
+++ b/libs/ui/widgets/kis_visual_color_selector.cpp
@@ -97,6 +97,11 @@ void KisVisualColorSelector::setConfig(bool forceCircular, bool \
forceSelfUpdate)  m_d->circular = forceCircular;
 }
 
+KoColor KisVisualColorSelector::getCurrentColor()
+{
+    return m_d->currentcolor;
+}
+
 void KisVisualColorSelector::ConfigurationChanged()
 {
     m_d->updateTimer =  new KisSignalCompressor(100 /* ms */, \
KisSignalCompressor::POSTPONE, this); @@ -115,16 +120,24 @@ void \
KisVisualColorSelector::slotRebuildSelectors()  m_d->widgetlist.clear();
     QLayout *layout = new QHBoxLayout;
     //redraw all the widgets.
+    int sizeValue = qMin(width(), height());
+    int borderWidth = qMax(sizeValue*0.1, 20.0);
+
     if (m_d->currentCS->colorChannelCount() == 1) {
-        KisVisualRectangleSelectorShape *bar =  new \
KisVisualRectangleSelectorShape(this, \
KisVisualRectangleSelectorShape::onedimensional,KisVisualColorSelectorShape::Channel, \
                m_d->currentCS, 0, 0);
-        bar->setMaximumWidth(width()*0.1);
-        bar->setMaximumHeight(height());
+        KisVisualColorSelectorShape *bar;
+        if (m_d->circular==false) {
+            bar =  new KisVisualRectangleSelectorShape(this, \
KisVisualColorSelectorShape::onedimensional,KisVisualColorSelectorShape::Channel, \
m_d->currentCS, 0, 0,m_d->displayRenderer, borderWidth); +            \
bar->setMaximumWidth(width()*0.1); +            bar->setMaximumHeight(height());
+
+        } else {
+            bar=  new KisVisualEllipticalSelectorShape(this, \
KisVisualColorSelectorShape::onedimensional,KisVisualColorSelectorShape::Channel, \
m_d->currentCS, 0, 0,m_d->displayRenderer, borderWidth, \
KisVisualEllipticalSelectorShape::borderMirrored); +            layout->setMargin(0);
+        }
         connect (bar, SIGNAL(sigNewColor(KoColor)), this, \
SLOT(updateFromWidgets(KoColor)));  layout->addWidget(bar);
         m_d->widgetlist.append(bar);
     } else if (m_d->currentCS->colorChannelCount() == 3) {
-        int sizeValue = qMin(width(), height());
-        int borderWidth = qMax(sizeValue*0.1, 20.0);
         QRect newrect(0,0, this->geometry().width(), this->geometry().height());
 
 
@@ -346,14 +359,19 @@ void KisVisualColorSelector::resizeEvent(QResizeEvent *) {
     int sizeValue = qMin(width(), height());
     int borderWidth = qMax(sizeValue*0.1, 20.0);
     QRect newrect(0,0, this->geometry().width(), this->geometry().height());
+    if (!m_d->currentCS) {
+        slotsetColorSpace(m_d->currentcolor.colorSpace());
+    }
     if (m_d->currentCS->colorChannelCount()==3) {
         if (m_d->acs_config.subType==Ring) {
             m_d->widgetlist.at(0)->resize(sizeValue,sizeValue);
-        } else if (m_d->acs_config.subType==Slider) {
+        } else if (m_d->acs_config.subType==Slider && m_d->circular==false) {
             m_d->widgetlist.at(0)->setMaximumWidth(borderWidth);
             m_d->widgetlist.at(0)->setMinimumWidth(borderWidth);
             m_d->widgetlist.at(0)->setMinimumHeight(sizeValue);
             m_d->widgetlist.at(0)->setMaximumHeight(sizeValue);
+        } else if (m_d->acs_config.subType==Slider && m_d->circular==true) {
+            m_d->widgetlist.at(0)->resize(sizeValue,sizeValue);
         }
         m_d->widgetlist.at(0)->setBorderWidth(borderWidth);
 
@@ -841,7 +859,9 @@ QVector <qreal> \
KisVisualColorSelectorShape::getHSX(QVector<qreal> hsx, bool wra  ihsx[2] = \
m_d->tone;  }
         } else {
-            ihsx[2] = m_d->tone;
+            if (hsx[2]>m_d->tone-0.005 && hsx[2]<m_d->tone+0.005) {
+                ihsx[2] = m_d->tone;
+            }
         }
         if (m_d->model==HSV){
             if (hsx[2]<=0.0) {
@@ -1376,6 +1396,7 @@ void KisVisualEllipticalSelectorShape::drawCursor()
     QPainter painter;
     painter.begin(&fullSelector);
     painter.setRenderHint(QPainter::Antialiasing);
+    QRect innerRect(m_barWidth, m_barWidth, width()-(m_barWidth*2), \
height()-(m_barWidth*2));  
     painter.save();
     painter.setCompositionMode(QPainter::CompositionMode_Clear);
@@ -1384,7 +1405,8 @@ void KisVisualEllipticalSelectorShape::drawCursor()
     painter.setPen(pen);
     painter.drawEllipse(QRect(0,0,width(),height()));
     if (getDimensions()==KisVisualColorSelectorShape::onedimensional) {
-        painter.drawEllipse(QRect(this->geometry().top()+m_barWidth, \
this->geometry().left()+m_barWidth, this->geometry().width()-(m_barWidth*2), \
this->geometry().height()-(m_barWidth*2))); +        \
painter.setBrush(Qt::SolidPattern); +        painter.drawEllipse(innerRect);
     }
     painter.restore();
 
@@ -1392,7 +1414,6 @@ void KisVisualEllipticalSelectorShape::drawCursor()
     fill.setStyle(Qt::SolidPattern);
 
     int cursorwidth = 5;
-    QRect innerRect(m_barWidth, m_barWidth, width()-(m_barWidth*2), \
height()-(m_barWidth*2));  \
if(m_type==KisVisualEllipticalSelectorShape::borderMirrored){  \
painter.setPen(Qt::white);  fill.setColor(Qt::white);
diff --git a/libs/ui/widgets/kis_visual_color_selector.h \
b/libs/ui/widgets/kis_visual_color_selector.h index b02e5b6..e43448a 100644
--- a/libs/ui/widgets/kis_visual_color_selector.h
+++ b/libs/ui/widgets/kis_visual_color_selector.h
@@ -103,6 +103,7 @@ public:
      * force self-update is for making it update itself when using a modal dialog.
      */
     void setConfig(bool forceCircular, bool forceSelfUpdate);
+    KoColor getCurrentColor();
 
 Q_SIGNALS:
     void sigNewColor(KoColor c);


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic