[gimp] app: various fixes in GimpToolGyroscope
- From: N/A <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: various fixes in GimpToolGyroscope
- Date: Wed, 11 Apr 2018 08:54:35 +0000 (UTC)
commit 5430e7794c006c4086710c24def569ed32e725d4
Author: Ell <ell_se yahoo com>
Date: Wed Apr 11 04:46:52 2018 -0400
app: various fixes in GimpToolGyroscope
Invert zoom adjustment using the mouse or the keyboard when in
inverse mode. Take zoom factor into account when panning using the
keyboard. Fix motion cancelation.
app/display/gimptoolgyroscope.c | 27 +++++++++++++++++++--------
1 files changed, 19 insertions(+), 8 deletions(-)
---
diff --git a/app/display/gimptoolgyroscope.c b/app/display/gimptoolgyroscope.c
index aee6c56..ebd22db 100644
--- a/app/display/gimptoolgyroscope.c
+++ b/app/display/gimptoolgyroscope.c
@@ -483,6 +483,9 @@ gimp_tool_gyroscope_motion (GimpToolWidget *widget,
zoom = (y1 - y2) * shell->scale_y / 128.0;
+ if (private->invert)
+ zoom = -zoom;
+
private->last_zoom *= pow (2.0, zoom);
zoom = log (private->last_zoom / private->zoom) / G_LN2;
@@ -546,6 +549,9 @@ gimp_tool_gyroscope_key_press (GimpToolWidget *widget,
break;
}
+ if (private->invert)
+ zoom = -zoom;
+
if (zoom)
{
g_object_set (gyroscope,
@@ -579,10 +585,14 @@ gimp_tool_gyroscope_key_press (GimpToolWidget *widget,
else
{
/* pan */
- gdouble x0 = 0.0;
- gdouble y0 = 0.0;
- gdouble x = 0.0;
- gdouble y = 0.0;
+ gdouble x0 = 0.0;
+ gdouble y0 = 0.0;
+ gdouble x = 0.0;
+ gdouble y = 0.0;
+ gdouble factor = 1.0 / private->zoom;
+
+ if (private->invert)
+ factor = 1.0 / factor;
switch (kevent->keyval)
{
@@ -614,6 +624,7 @@ gimp_tool_gyroscope_key_press (GimpToolWidget *widget,
(y - y0) * DEG_TO_RAD,
(x - x0) * DEG_TO_RAD,
0.0);
+ gimp_vector3_mul (&axis, factor);
}
gimp_tool_gyroscope_rotate (gyroscope, &axis);
@@ -741,10 +752,10 @@ gimp_tool_gyroscope_restore (GimpToolGyroscope *gyroscope)
GimpToolGyroscopePrivate *private = gyroscope->private;
g_object_set (gyroscope,
- "yaw", private->yaw,
- "pitch", private->pitch,
- "roll", private->roll,
- "zoom", private->zoom,
+ "yaw", private->orig_yaw,
+ "pitch", private->orig_pitch,
+ "roll", private->orig_roll,
+ "zoom", private->orig_zoom,
NULL);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]