[gimp/soc-2011-seamless-clone2] app: remove the old rendering increments from struct GimpDisplayShell
- From: Clayton Walker <claytonw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/soc-2011-seamless-clone2] app: remove the old rendering increments from struct GimpDisplayShell
- Date: Wed, 8 May 2013 15:14:34 +0000 (UTC)
commit ea7b33a253d31a7b57b6987b75ee5ccef7301ea0
Author: Michael Natterer <mitch gimp org>
Date: Thu Apr 18 02:10:38 2013 +0200
app: remove the old rendering increments from struct GimpDisplayShell
and don't use them for (un)transforming integer coordinates. Everything
seems to work fine, but this sort of change has caused off-by-one errors
before, please review.
app/display/gimpdisplayshell-transform.c | 28 ++++++++++++----------------
app/display/gimpdisplayshell.c | 20 --------------------
app/display/gimpdisplayshell.h | 5 -----
3 files changed, 12 insertions(+), 41 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-transform.c b/app/display/gimpdisplayshell-transform.c
index 14bb347..d245a29 100644
--- a/app/display/gimpdisplayshell-transform.c
+++ b/app/display/gimpdisplayshell-transform.c
@@ -112,11 +112,8 @@ gimp_display_shell_transform_xy (const GimpDisplayShell *shell,
g_return_if_fail (nx != NULL);
g_return_if_fail (ny != NULL);
- tx = ((gint64) x * shell->x_src_dec) / shell->x_dest_inc;
- ty = ((gint64) y * shell->y_src_dec) / shell->y_dest_inc;
-
- tx -= shell->offset_x;
- ty -= shell->offset_y;
+ tx = x * shell->scale_x - shell->offset_x;
+ ty = y * shell->scale_y - shell->offset_x;
/* The projected coordinates might overflow a gint in the case of big
images at high zoom levels, so we clamp them here to avoid problems. */
@@ -153,17 +150,16 @@ gimp_display_shell_untransform_xy (const GimpDisplayShell *shell,
g_return_if_fail (nx != NULL);
g_return_if_fail (ny != NULL);
- tx = (gint64) x + shell->offset_x;
- ty = (gint64) y + shell->offset_y;
-
- tx *= shell->x_dest_inc;
- ty *= shell->y_dest_inc;
-
- tx += round ? shell->x_dest_inc : shell->x_dest_inc >> 1;
- ty += round ? shell->y_dest_inc : shell->y_dest_inc >> 1;
-
- tx /= shell->x_src_dec;
- ty /= shell->y_src_dec;
+ if (round)
+ {
+ tx = SIGNED_ROUND (((gint64) x + shell->offset_x) / shell->scale_x);
+ ty = SIGNED_ROUND (((gint64) y + shell->offset_y) / shell->scale_y);
+ }
+ else
+ {
+ tx = ((gint64) x + shell->offset_x) / shell->scale_x;
+ ty = ((gint64) y + shell->offset_y) / shell->scale_y;
+ }
*nx = CLAMP (tx, G_MININT, G_MAXINT);
*ny = CLAMP (ty, G_MININT, G_MAXINT);
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index 5d17c7c..c25c290 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -294,10 +294,6 @@ gimp_display_shell_init (GimpDisplayShell *shell)
shell->dot_for_dot = TRUE;
shell->scale_x = 1.0;
shell->scale_y = 1.0;
- shell->x_dest_inc = 1;
- shell->y_dest_inc = 1;
- shell->x_src_dec = 1;
- shell->y_src_dec = 1;
gimp_display_shell_items_init (shell);
@@ -1412,27 +1408,11 @@ gimp_display_shell_scale_changed (GimpDisplayShell *shell)
gimp_zoom_model_get_factor (shell->zoom),
&shell->scale_x,
&shell->scale_y);
-
- shell->x_dest_inc = gimp_image_get_width (image);
- shell->y_dest_inc = gimp_image_get_height (image);
- shell->x_src_dec = shell->scale_x * shell->x_dest_inc;
- shell->y_src_dec = shell->scale_y * shell->y_dest_inc;
-
- if (shell->x_src_dec < 1)
- shell->x_src_dec = 1;
-
- if (shell->y_src_dec < 1)
- shell->y_src_dec = 1;
}
else
{
shell->scale_x = 1.0;
shell->scale_y = 1.0;
-
- shell->x_dest_inc = 1;
- shell->y_dest_inc = 1;
- shell->x_src_dec = 1;
- shell->y_src_dec = 1;
}
}
diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h
index d0ca7eb..2204d2d 100644
--- a/app/display/gimpdisplayshell.h
+++ b/app/display/gimpdisplayshell.h
@@ -74,11 +74,6 @@ struct _GimpDisplayShell
gdouble monitor_yres;
gboolean dot_for_dot; /* ignore monitor resolution */
- gint x_src_dec; /* increments for the bresenham style */
- gint y_src_dec; /* image --> display transformation */
- gint x_dest_inc;
- gint y_dest_inc;
-
GimpZoomModel *zoom;
gdouble last_scale; /* scale used when reverting zoom */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]