[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