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

List:       kde-commits
Subject:    [krita/krita-testing-wolthera] libs/ui/widgets: Pick color from canvas directly if the cursor is ove
From:       Sven Langkamp <sven.langkamp () gmail ! com>
Date:       2016-08-27 8:51:00
Message-ID: E1bdZKO-0007JR-RE () code ! kde ! org
[Download RAW message or body]

Git commit c5621355279c211721a74e2d4affa0d322e3de9f by Sven Langkamp.
Committed on 27/08/2016 at 08:50.
Pushed by langkamp into branch 'krita-testing-wolthera'.

Pick color from canvas directly if the cursor is over the canvas

M  +29   -0    libs/ui/widgets/kis_screen_color_picker.cpp

http://commits.kde.org/krita/c5621355279c211721a74e2d4affa0d322e3de9f

diff --git a/libs/ui/widgets/kis_screen_color_picker.cpp \
b/libs/ui/widgets/kis_screen_color_picker.cpp index b8f40ae..a7b89f2 100644
--- a/libs/ui/widgets/kis_screen_color_picker.cpp
+++ b/libs/ui/widgets/kis_screen_color_picker.cpp
@@ -29,6 +29,9 @@
 
 #include "kis_icon.h"
 #include "kis_screen_color_picker.h"
+#include "KisMainWindow.h"
+#include <kis_canvas2.h>
+#include "kis_wrapped_rect.h"
 
 struct KisScreenColorPicker::Private
 {
@@ -119,6 +122,32 @@ void KisScreenColorPicker::setCurrentColor(KoColor c)
 
 KoColor KisScreenColorPicker::grabScreenColor(const QPoint &p)
 {
+    QWidget* topLevelWidget = parentWidget();
+    while (topLevelWidget->parentWidget())
+        topLevelWidget = topLevelWidget->parentWidget();
+
+    KisMainWindow* window = dynamic_cast<KisMainWindow*>(topLevelWidget);
+    KisView* activeView = window->activeView();
+    if(activeView) {
+        QWidget* canvasWidget = activeView->canvasBase()->canvasWidget();
+        QPoint widgetPoint = canvasWidget->mapFromGlobal(p);
+
+        if(canvasWidget->rect().contains(widgetPoint))
+        {
+            QPointF imagePoint = \
activeView->canvasBase()->coordinatesConverter()->widgetToImage(widgetPoint); +       \
KisImageWSP image = activeView->image(); +            if(image)
+            {
+                if (activeView->image()->wrapAroundModePermitted()) {
+                    imagePoint = KisWrappedRect::ptToWrappedPt(imagePoint.toPoint(), \
image->bounds()); +                }
+                KoColor pickedColor = KoColor();
+                image->projection()->pixel(imagePoint.x(), imagePoint.y(), \
&pickedColor); +                return pickedColor;
+            }
+        }
+    }
+
     const QDesktopWidget *desktop = QApplication::desktop();
     const QPixmap pixmap = \
                QGuiApplication::screens().at(desktop->screenNumber())->grabWindow(desktop->winId(),
                
                                                                                      \
p.x(), p.y(), 1, 1);


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

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