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

List:       kde-kimageshop
Subject:    Patch: Color Selector
From:       Silvio Heinrich <plassy () web ! de>
Date:       2011-01-12 22:42:12
Message-ID: 4D2E2E44.8000100 () web ! de
[Download RAW message or body]

I added another mode for the advanced color selector which i personally 
find more pleasing to choose the color from. It's another square mode 
who looks like this:

http://imagebin.org/132397

Here you can choose the lightness on the left side and when you go in a 
strait line to the right, you can add more saturation to the color. It 
was bugging me that the other modes have either two black or two white 
corners.
I think this is especially useful when working with composition modes. 
Many composition modes are working kind of neutral when using shades of 
gray and then you can add some color by choosing a color that is more at 
the right side.

["ColorSelector.patch" (text/x-diff)]

From 7285932c25d3cb08bbdbee0d1cb89e918f064582 Mon Sep 17 00:00:00 2001
From: Silvio Heinrich <plassy@web.de>
Date: Tue, 11 Jan 2011 04:41:50 +0100
Subject: [PATCH] Added a color selector mode.

In this mode it should be easier to see and pick a color in relationship
to lightness, darkness and value.
---
 .../dockers/colorselectorng/kis_color_selector.h   |    2 +-
 .../kis_color_selector_combo_box.cpp               |    9 +++++----
 .../colorselectorng/kis_color_selector_simple.cpp  |   19 +++++++++++++++++++
 3 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector.h \
b/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector.h index \
                bc74c84..def417b 100644
--- a/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector.h
+++ b/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector.h
@@ -33,7 +33,7 @@ class KisColorSelector : public KisColorSelectorBase
     Q_OBJECT
 public:
     enum Type {Ring, Square, Wheel, Triangle, Slider};
-    enum Parameters {H, hsvS, V, hslS, L, SL, SV, hsvSH, hslSH, VH, LH};
+    enum Parameters {H, hsvS, V, hslS, L, SL, SV, SV2, hsvSH, hslSH, VH, LH};
     struct Configuration {
         Type mainType;
         Type subType;
diff --git a/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_combo_box.cpp \
b/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_combo_box.cpp \
                index de6b347..0940b9c 100644
--- a/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_combo_box.cpp
                
+++ b/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_combo_box.cpp
 @@ -41,10 +41,11 @@ public:
         QGridLayout* layout = new QGridLayout(this);
         layout->setSpacing(spacing);
 
-        layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Triangle, \
                KisColorSelector::Ring, KisColorSelector::SL, KisColorSelector::H), \
                this), 0,0);
-        layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square,   \
                KisColorSelector::Ring, KisColorSelector::SL, KisColorSelector::H), \
                this), 0,1);
-        layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square,   \
                KisColorSelector::Ring, KisColorSelector::SV, KisColorSelector::H), \
                this), 0,2);
-
+        layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Triangle, \
KisColorSelector::Ring, KisColorSelector::SL , KisColorSelector::H), this), 0,0); +   \
layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square,   \
KisColorSelector::Ring, KisColorSelector::SL , KisColorSelector::H), this), 0,1); +   \
layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square,   \
KisColorSelector::Ring, KisColorSelector::SV , KisColorSelector::H), this), 0,2); +   \
layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square,   \
KisColorSelector::Ring, KisColorSelector::SV2, KisColorSelector::H), this), 0,3); +   \
  layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square, \
KisColorSelector::Slider, KisColorSelector::SV, KisColorSelector::H), this), 1,0);  \
layout->addWidget(new \
KisColorSelector(KisColorSelector::Configuration(KisColorSelector::Square, \
KisColorSelector::Slider, KisColorSelector::SL, KisColorSelector::H), this), 1,1);  
diff --git a/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_simple.cpp \
b/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_simple.cpp \
                index a13c1af..8de334e 100644
--- a/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_simple.cpp
+++ b/krita/plugins/extensions/dockers/colorselectorng/kis_color_selector_simple.cpp
@@ -32,6 +32,9 @@ KisColorSelectorSimple::KisColorSelectorSimple(KisColorSelector \
*parent) :  
 void KisColorSelectorSimple::setColor(const QColor &c)
 {
+    QColor color;
+    color.setHsvF(c.hslHueF(), 1.0, 1.0);
+    
     switch (m_parameter) {
     case KisColorSelector::SL:
         m_lastClickPos.setX(c.hslSaturationF());
@@ -48,6 +51,14 @@ void KisColorSelectorSimple::setColor(const QColor &c)
         m_lastClickPos.setY(1-c.valueF());
         emit paramChanged(-1, c.saturationF(), c.valueF(), -1, -1);
         break;
+    case KisColorSelector::SV2: {
+        qreal xRel = c.hsvSaturationF();
+        qreal yRel = 1.0 - qBound<qreal>(0.0, (c.valueF() - xRel) / (1.0 - xRel), \
1.0); +        m_lastClickPos.setX(xRel);
+        m_lastClickPos.setY(yRel);
+        emit paramChanged(-1, -1, -1, xRel, yRel);
+        break;
+    }
     case KisColorSelector::VH:
         m_lastClickPos.setX(qBound<qreal>(0., c.hueF(), 1.));
         m_lastClickPos.setY(c.valueF());
@@ -124,6 +135,7 @@ QColor KisColorSelectorSimple::selectColor(int x, int y)
     case KisColorSelector::SL:
         emit paramChanged(-1, -1, -1, xRel, yRel);
         break;
+    case KisColorSelector::SV2:
     case KisColorSelector::SV:
         emit paramChanged(-1, xRel, yRel, -1, -1);
         break;
@@ -188,6 +200,7 @@ void KisColorSelectorSimple::paint(QPainter* painter)
             break;
         case KisColorSelector::SL:
         case KisColorSelector::SV:
+        case KisColorSelector::SV2:
         case KisColorSelector::hslSH:
         case KisColorSelector::hsvSH:
         case KisColorSelector::VH:
@@ -217,6 +230,9 @@ const QColor& KisColorSelectorSimple::colorAt(int x, int y)
     else
         relPos = 1.-x/qreal(width());
 
+    QColor color;
+    color.setHsvF(m_hue, 1.0, 1.0);
+    
     switch(m_parameter) {
     case KisColorSelector::SL:
         m_qcolor.setHslF(m_hue, xRel, yRel);
@@ -224,6 +240,9 @@ const QColor& KisColorSelectorSimple::colorAt(int x, int y)
     case KisColorSelector::SV:
         m_qcolor.setHsvF(m_hue, xRel, yRel);
         break;
+    case KisColorSelector::SV2:
+        m_qcolor.setHsvF(m_hue, xRel, xRel + (1.0-xRel)*yRel);
+        break;
     case KisColorSelector::hsvSH:
         m_qcolor.setHsvF(xRel, yRel, m_value);
         break;
-- 
1.7.1



_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


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

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