[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