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

List:       kde-commits
Subject:    [calligra] krita/plugins/extensions/dockers/advancedcolorselector
From:       Adam Celarek <identity_kde_org () xibo ! at>
Date:       2011-01-19 20:59:47
Message-ID: 20110119205947.A32AEA60A6 () git ! kde ! org
[Download RAW message or body]

Git commit d14131fb8bf5ff8f9fe7f1cd5ac39fd494da9fb0 by Adam Celarek
Pushed by adamc into branch krita-colorselectorng-adamc

fix issues with image colours
o fix possible crash
o don't take out of canvas colours into account

M +19 -5 krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.cpp \
 M +6 -2 krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.h 
M +1 -1 krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.cpp \
 M +2 -2 krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.h \


http://commits.kde.org/47e7010d/d14131fb8bf5ff8f9fe7f1cd5ac39fd494da9fb0

diff --git a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.cpp \
b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.cpp index \
                5c3be32..c2adcb6 100644
--- a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.cpp
+++ b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.cpp
@@ -53,8 +53,13 @@ KisCommonColors::KisCommonColors(QWidget *parent) :
     m_recalculationTimer.setInterval(2000);
     m_recalculationTimer.setSingleShot(true);
 
+    m_delayUpdateTimer.setInterval(1);
+    m_delayUpdateTimer.setSingleShot(true);
+
     connect(&m_recalculationTimer, SIGNAL(timeout()),
-            this,                 SLOT(recalculate()));
+            this,                  SLOT(recalculate()));
+    connect(&m_delayUpdateTimer,   SIGNAL(timeout()),
+            this,                  SLOT(updateColors()));
 }
 
 void KisCommonColors::setCanvas(KisCanvas2 *canvas)
@@ -72,7 +77,7 @@ KisColorSelectorBase* KisCommonColors::createPopup() const
 {
     KisCommonColors* ret = new KisCommonColors();
     ret->setCanvas(m_canvas);
-    ret->setColors(colors());
+    ret->delayedSetColors(colors());
     return ret;
 }
 
@@ -100,11 +105,19 @@ void KisCommonColors::updateSettings()
     m_reloadButton->setEnabled(true);
 }
 
-void KisCommonColors::setColors(QList<KoColor> colors)
+void KisCommonColors::delayedSetColors(QList<KoColor> colors)
+{
+    QMutexLocker locker(&m_mutex);
+    m_calculatedColors = colors;
+    m_delayUpdateTimer.start();
+    locker.unlock();
+}
+
+void KisCommonColors::updateColors()
 {
     QMutexLocker locker(&m_mutex);
     m_reloadButton->setEnabled(true);
-    KisColorPatches::setColors(colors);
+    KisColorPatches::setColors(m_calculatedColors);
     locker.unlock();
 }
 
@@ -123,7 +136,8 @@ void KisCommonColors::recalculate()
     qApp->processEvents();
 
     KisImageWSP kisImage = m_canvas->image();
-    QImage image = kisImage->projection()->createThumbnail(1024, 1024);
+
+    QImage image = kisImage->projection()->createThumbnail(1024, 1024, 0, \
kisImage->bounds());  
     KisCommonColorsRecalculationRunner* runner = new \
KisCommonColorsRecalculationRunner(image, patchCount(), this);  \
                QThreadPool::globalInstance()->start(runner);
diff --git a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.h \
b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.h index \
                708ca58..6fe3f65 100644
--- a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.h
+++ b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors.h
@@ -31,17 +31,21 @@ public:
     explicit KisCommonColors(QWidget *parent = 0);
     void setCanvas(KisCanvas2 *canvas);
     KisColorSelectorBase* createPopup() const;
-    void setColors(QList<KoColor> colors);
 
 public slots:
+    void delayedSetColors(QList<KoColor> colors);
     void updateSettings();
     void recalculate();
 
+protected slots:
+    void updateColors();
+
 private:
-    void updateImageCache();
     QMutex m_mutex;
     QTimer m_recalculationTimer;
+    QTimer m_delayUpdateTimer;
     QPushButton* m_reloadButton;
+    QList<KoColor> m_calculatedColors;
 };
 
 #endif
diff --git a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.cpp \
b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.cpp
 index 3f704fc..63b5fc5 100644
--- a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.cpp
                
+++ b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.cpp
 @@ -125,7 +125,7 @@ private:
 
 void KisCommonColorsRecalculationRunner::run()
 {
-    parent->setColors(extractColors());
+    parent->delayedSetColors(extractColors());
 }
 
 QList<KoColor> KisCommonColorsRecalculationRunner::extractColors()
diff --git a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.h \
b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.h
 index 461d28c..191c8f9 100644
--- a/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.h
                
+++ b/krita/plugins/extensions/dockers/advancedcolorselector/kis_common_colors_recalculation_runner.h
 @@ -12,7 +12,7 @@ class KisCommonColors;
 class KisCommonColorsRecalculationRunner : public QRunnable
 {
 public:
-    KisCommonColorsRecalculationRunner(const QImage &data, int numberOfColors, \
KisCommonColors* parentObj) +    KisCommonColorsRecalculationRunner(QImage data, int \
numberOfColors, KisCommonColors* parentObj)  : imageData(data),
         numColors(numberOfColors),
         parent(parentObj)
@@ -23,7 +23,7 @@ public:
     QList<QRgb> getColors();
 
 private:
-    const QImage& imageData;
+    QImage imageData;
     int numColors;
     KisCommonColors* parent;
 };


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

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