[aseprite] 84/196: Implement app::IColorSource in color selectors

Tobias Hansen thansen at moszumanska.debian.org
Wed Apr 20 18:50:04 UTC 2016


This is an automated email from the git hooks/post-receive script.

thansen pushed a commit to branch master
in repository aseprite.

commit 497cfa61a48d471d442c5a2e8b72f55e16504833
Author: David Capello <davidcapello at gmail.com>
Date:   Fri Mar 18 23:35:23 2016 -0300

    Implement app::IColorSource in color selectors
---
 src/app/ui/color_selector.h          |  4 +++-
 src/app/ui/color_spectrum.cpp        |  4 ++--
 src/app/ui/color_spectrum.h          |  3 ++-
 src/app/ui/color_tint_shade_tone.cpp | 33 +++++++++++++++++++++------------
 src/app/ui/color_tint_shade_tone.h   |  4 +++-
 src/app/ui/color_wheel.cpp           | 13 +++++++++----
 src/app/ui/color_wheel.h             |  4 +++-
 7 files changed, 43 insertions(+), 22 deletions(-)

diff --git a/src/app/ui/color_selector.h b/src/app/ui/color_selector.h
index 8de16ee..58f65fe 100644
--- a/src/app/ui/color_selector.h
+++ b/src/app/ui/color_selector.h
@@ -10,13 +10,15 @@
 #pragma once
 
 #include "app/color.h"
+#include "app/ui/color_source.h"
 #include "base/signal.h"
 #include "ui/mouse_buttons.h"
 #include "ui/widget.h"
 
 namespace app {
 
-  class ColorSelector : public ui::Widget {
+  class ColorSelector : public ui::Widget
+                      , public IColorSource {
   public:
     ColorSelector();
 
diff --git a/src/app/ui/color_spectrum.cpp b/src/app/ui/color_spectrum.cpp
index d7e9a93..2224c61 100644
--- a/src/app/ui/color_spectrum.cpp
+++ b/src/app/ui/color_spectrum.cpp
@@ -34,7 +34,7 @@ ColorSpectrum::ColorSpectrum()
   setBorder(gfx::Border(3*ui::guiscale()));
 }
 
-app::Color ColorSpectrum::pickColor(const gfx::Point& pos) const
+app::Color ColorSpectrum::getColorByPosition(const gfx::Point& pos)
 {
   gfx::Rect rc = childrenBounds();
   if (rc.isEmpty())
@@ -137,7 +137,7 @@ bool ColorSpectrum::onProcessMessage(ui::Message* msg)
     case kMouseMoveMessage: {
       MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
 
-      app::Color color = pickColor(mouseMsg->position());
+      app::Color color = getColorByPosition(mouseMsg->position());
       if (color != app::Color::fromMask()) {
         StatusBar::instance()->showColor(0, "", color);
         if (hasCapture())
diff --git a/src/app/ui/color_spectrum.h b/src/app/ui/color_spectrum.h
index bd84745..809bb0a 100644
--- a/src/app/ui/color_spectrum.h
+++ b/src/app/ui/color_spectrum.h
@@ -18,7 +18,8 @@ namespace app {
   public:
     ColorSpectrum();
 
-    app::Color pickColor(const gfx::Point& pos) const;
+    // IColorSource
+    app::Color getColorByPosition(const gfx::Point& pos) override;
 
   protected:
     void onPaint(ui::PaintEvent& ev) override;
diff --git a/src/app/ui/color_tint_shade_tone.cpp b/src/app/ui/color_tint_shade_tone.cpp
index 855648a..d60526e 100644
--- a/src/app/ui/color_tint_shade_tone.cpp
+++ b/src/app/ui/color_tint_shade_tone.cpp
@@ -34,7 +34,7 @@ ColorTintShadeTone::ColorTintShadeTone()
   setBorder(gfx::Border(3*ui::guiscale()));
 }
 
-app::Color ColorTintShadeTone::pickColor(const gfx::Point& pos) const
+app::Color ColorTintShadeTone::getColorByPosition(const gfx::Point& pos)
 {
   gfx::Rect rc = childrenBounds();
   if (rc.isEmpty())
@@ -49,7 +49,11 @@ app::Color ColorTintShadeTone::pickColor(const gfx::Point& pos) const
 
   double hue, sat, val;
 
-  if (m_capturedInHue) {
+  bool inHue =
+    (( hasCapture() && m_capturedInHue) ||
+     (!hasCapture() && inHueBarArea(pos)));
+
+  if (inHue) {
     hue = (360.0 * u / umax);
     sat = m_color.getSaturation();
     val = m_color.getValue();
@@ -142,23 +146,28 @@ bool ColorTintShadeTone::onProcessMessage(ui::Message* msg)
   switch (msg->type()) {
 
     case kMouseDownMessage:
+      if (manager()->getCapture())
+        break;
+
       captureMouse();
+
       // Continue...
 
-    case kMouseMoveMessage: {
-      MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
+    case kMouseMoveMessage:
+      if (hasCapture()) {
+        MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
 
-      if (msg->type() == kMouseDownMessage)
-        m_capturedInHue = inHueBarArea(mouseMsg->position());
+        if (msg->type() == kMouseDownMessage)
+          m_capturedInHue = inHueBarArea(mouseMsg->position());
 
-      app::Color color = pickColor(mouseMsg->position());
-      if (color != app::Color::fromMask()) {
-        StatusBar::instance()->showColor(0, "", color);
-        if (hasCapture())
-          ColorChange(color, mouseMsg->buttons());
+        app::Color color = getColorByPosition(mouseMsg->position());
+        if (color != app::Color::fromMask()) {
+          StatusBar::instance()->showColor(0, "", color);
+          if (hasCapture())
+            ColorChange(color, mouseMsg->buttons());
+        }
       }
       break;
-    }
 
     case kMouseUpMessage:
       if (hasCapture()) {
diff --git a/src/app/ui/color_tint_shade_tone.h b/src/app/ui/color_tint_shade_tone.h
index 5d62da1..b65f2b6 100644
--- a/src/app/ui/color_tint_shade_tone.h
+++ b/src/app/ui/color_tint_shade_tone.h
@@ -17,12 +17,14 @@ namespace app {
   public:
     ColorTintShadeTone();
 
+    // IColorSource
+    app::Color getColorByPosition(const gfx::Point& pos) override;
+
   protected:
     void onPaint(ui::PaintEvent& ev) override;
     bool onProcessMessage(ui::Message* msg) override;
 
   private:
-    app::Color pickColor(const gfx::Point& pos) const;
     bool inHueBarArea(const gfx::Point& pos) const;
     int getHueBarSize() const;
 
diff --git a/src/app/ui/color_wheel.cpp b/src/app/ui/color_wheel.cpp
index 25c7911..309da87 100644
--- a/src/app/ui/color_wheel.cpp
+++ b/src/app/ui/color_wheel.cpp
@@ -72,7 +72,12 @@ ColorWheel::ColorWheel()
   addChild(&m_options);
 }
 
-app::Color ColorWheel::pickColor(const gfx::Point& pos) const
+app::Color ColorWheel::getColorByPosition(const gfx::Point& mousePos)
+{
+  return getColorInClientPos(mousePos - bounds().origin());
+}
+
+app::Color ColorWheel::getColorInClientPos(const gfx::Point& pos)
 {
   m_harmonyPicked = false;
 
@@ -213,7 +218,7 @@ void ColorWheel::onPaint(ui::PaintEvent& ev)
   for (int y=rc.y; y<rc.y+rc.h; ++y) {
     for (int x=rc.x; x<rc.x+rc.w; ++x) {
       app::Color appColor =
-        ColorWheel::pickColor(gfx::Point(x, y));
+        ColorWheel::getColorInClientPos(gfx::Point(x, y));
 
       gfx::Color color;
       if (appColor.getType() != app::Color::MaskType) {
@@ -271,7 +276,7 @@ bool ColorWheel::onProcessMessage(ui::Message* msg)
     case kMouseMoveMessage: {
       MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
 
-      app::Color color = pickColor(
+      app::Color color = getColorInClientPos(
         mouseMsg->position()
         - bounds().origin());
 
@@ -293,7 +298,7 @@ bool ColorWheel::onProcessMessage(ui::Message* msg)
 
     case kSetCursorMessage: {
       MouseMessage* mouseMsg = static_cast<MouseMessage*>(msg);
-      app::Color color = pickColor(
+      app::Color color = getColorInClientPos(
         mouseMsg->position()
         - bounds().origin());
 
diff --git a/src/app/ui/color_wheel.h b/src/app/ui/color_wheel.h
index 44745ed..5ccb074 100644
--- a/src/app/ui/color_wheel.h
+++ b/src/app/ui/color_wheel.h
@@ -35,7 +35,8 @@ namespace app {
 
     ColorWheel();
 
-    app::Color pickColor(const gfx::Point& pos) const;
+    // IColorSource
+    app::Color getColorByPosition(const gfx::Point& pos) override;
 
     bool isDiscrete() const { return m_discrete; }
     void setDiscrete(bool state);
@@ -44,6 +45,7 @@ namespace app {
     void setHarmony(Harmony harmony);
 
   private:
+    app::Color getColorInClientPos(const gfx::Point& pos);
     void onResize(ui::ResizeEvent& ev) override;
     void onPaint(ui::PaintEvent& ev) override;
     bool onProcessMessage(ui::Message* msg) override;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git



More information about the Pkg-games-commits mailing list