[gimp] Remove macros SCREEN_XRES() and SCREEN_YRES()
- From: Michael Natterer <mitch src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gimp] Remove macros SCREEN_XRES() and SCREEN_YRES()
- Date: Wed, 3 Feb 2010 18:52:36 +0000 (UTC)
commit b6ce5d075d5b8103068a9e20712ecb35e037154a
Author: Michael Natterer <mitch gimp org>
Date: Wed Feb 3 19:50:46 2010 +0100
Remove macros SCREEN_XRES() and SCREEN_YRES()
and add gimp_display_shell_get_screen_resolution() instead. The times
when these macros were used in inner loops have long passed.
app/display/gimpdisplayshell-scale.c | 38 +++++++++++++---
app/display/gimpdisplayshell-scale.h | 82 ++++++++++++++++++----------------
app/display/gimpdisplayshell.h | 6 ---
app/tools/gimpmagnifytool.c | 16 ++++---
4 files changed, 85 insertions(+), 57 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-scale.c b/app/display/gimpdisplayshell-scale.c
index 8522919..65627b6 100644
--- a/app/display/gimpdisplayshell-scale.c
+++ b/app/display/gimpdisplayshell-scale.c
@@ -338,6 +338,29 @@ gimp_display_shell_scale_set_dot_for_dot (GimpDisplayShell *shell,
}
}
+void
+gimp_display_shell_get_screen_resolution (GimpDisplayShell *shell,
+ gdouble *xres,
+ gdouble *yres)
+{
+ gdouble x, y;
+
+ g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+
+ if (shell->dot_for_dot)
+ {
+ gimp_image_get_resolution (shell->display->image, &x, &y);
+ }
+ else
+ {
+ x = shell->monitor_xres;
+ y = shell->monitor_yres;
+ }
+
+ if (xres) *xres = x;
+ if (yres) *yres = y;
+}
+
/**
* gimp_display_shell_scale:
* @shell: the #GimpDisplayShell
@@ -699,14 +722,16 @@ gimp_display_shell_scale_resize (GimpDisplayShell *shell,
*
**/
void
-gimp_display_shell_calculate_scale_x_and_y (const GimpDisplayShell *shell,
- gdouble scale,
- gdouble *scale_x,
- gdouble *scale_y)
+gimp_display_shell_calculate_scale_x_and_y (GimpDisplayShell *shell,
+ gdouble scale,
+ gdouble *scale_x,
+ gdouble *scale_y)
{
GimpImage *image;
gdouble xres;
gdouble yres;
+ gdouble screen_xres;
+ gdouble screen_yres;
g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
@@ -715,9 +740,10 @@ gimp_display_shell_calculate_scale_x_and_y (const GimpDisplayShell *shell,
g_return_if_fail (GIMP_IS_IMAGE (image));
gimp_image_get_resolution (image, &xres, &yres);
+ gimp_display_shell_get_screen_resolution (shell, &screen_xres, &screen_yres);
- if (scale_x) *scale_x = scale * SCREEN_XRES (shell) / xres;
- if (scale_y) *scale_y = scale * SCREEN_YRES (shell) / yres;
+ if (scale_x) *scale_x = scale * screen_xres / xres;
+ if (scale_y) *scale_y = scale * screen_yres / yres;
}
void
diff --git a/app/display/gimpdisplayshell-scale.h b/app/display/gimpdisplayshell-scale.h
index 0624c10..3dfc4bb 100644
--- a/app/display/gimpdisplayshell-scale.h
+++ b/app/display/gimpdisplayshell-scale.h
@@ -19,45 +19,49 @@
#define __GIMP_DISPLAY_SHELL_SCALE_H__
-void gimp_display_shell_update_scrollbars_and_rulers (GimpDisplayShell *shell);
-void gimp_display_shell_scale_update_scrollbars (GimpDisplayShell *shell);
-void gimp_display_shell_scale_update_rulers (GimpDisplayShell *shell);
-
-gboolean gimp_display_shell_scale_revert (GimpDisplayShell *shell);
-gboolean gimp_display_shell_scale_can_revert (GimpDisplayShell *shell);
-
-void gimp_display_shell_scale_set_dot_for_dot (GimpDisplayShell *shell,
- gboolean dot_for_dot);
-
-void gimp_display_shell_scale (GimpDisplayShell *shell,
- GimpZoomType zoom_type,
- gdouble scale,
- GimpZoomFocus zoom_focus);
-void gimp_display_shell_scale_fit_in (GimpDisplayShell *shell);
-gboolean gimp_display_shell_scale_image_is_within_viewport (GimpDisplayShell *shell,
- gboolean *horizontally,
- gboolean *vertically);
-void gimp_display_shell_scale_fill (GimpDisplayShell *shell);
-void gimp_display_shell_scale_handle_zoom_revert (GimpDisplayShell *shell);
-void gimp_display_shell_scale_by_values (GimpDisplayShell *shell,
- gdouble scale,
- gint offset_x,
- gint offset_y,
- gboolean resize_window);
-void gimp_display_shell_scale_shrink_wrap (GimpDisplayShell *shell,
- gboolean grow_only);
-
-void gimp_display_shell_scale_resize (GimpDisplayShell *shell,
- gboolean resize_window,
- gboolean grow_only);
-void gimp_display_shell_calculate_scale_x_and_y (const GimpDisplayShell *shell,
- gdouble scale,
- gdouble *scale_x,
- gdouble *scale_y);
-void gimp_display_shell_set_initial_scale (GimpDisplayShell *shell,
- gdouble scale,
- gint *display_width,
- gint *display_height);
+void gimp_display_shell_update_scrollbars_and_rulers (GimpDisplayShell *shell);
+void gimp_display_shell_scale_update_scrollbars (GimpDisplayShell *shell);
+void gimp_display_shell_scale_update_rulers (GimpDisplayShell *shell);
+
+gboolean gimp_display_shell_scale_revert (GimpDisplayShell *shell);
+gboolean gimp_display_shell_scale_can_revert (GimpDisplayShell *shell);
+
+void gimp_display_shell_scale_set_dot_for_dot (GimpDisplayShell *shell,
+ gboolean dot_for_dot);
+
+void gimp_display_shell_get_screen_resolution (GimpDisplayShell *shell,
+ gdouble *xres,
+ gdouble *yres);
+
+void gimp_display_shell_scale (GimpDisplayShell *shell,
+ GimpZoomType zoom_type,
+ gdouble scale,
+ GimpZoomFocus zoom_focus);
+void gimp_display_shell_scale_fit_in (GimpDisplayShell *shell);
+gboolean gimp_display_shell_scale_image_is_within_viewport (GimpDisplayShell *shell,
+ gboolean *horizontally,
+ gboolean *vertically);
+void gimp_display_shell_scale_fill (GimpDisplayShell *shell);
+void gimp_display_shell_scale_handle_zoom_revert (GimpDisplayShell *shell);
+void gimp_display_shell_scale_by_values (GimpDisplayShell *shell,
+ gdouble scale,
+ gint offset_x,
+ gint offset_y,
+ gboolean resize_window);
+void gimp_display_shell_scale_shrink_wrap (GimpDisplayShell *shell,
+ gboolean grow_only);
+
+void gimp_display_shell_scale_resize (GimpDisplayShell *shell,
+ gboolean resize_window,
+ gboolean grow_only);
+void gimp_display_shell_calculate_scale_x_and_y (GimpDisplayShell *shell,
+ gdouble scale,
+ gdouble *scale_x,
+ gdouble *scale_y);
+void gimp_display_shell_set_initial_scale (GimpDisplayShell *shell,
+ gdouble scale,
+ gint *display_width,
+ gint *display_height);
#endif /* __GIMP_DISPLAY_SHELL_SCALE_H__ */
diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h
index 6bf954a..62eeb36 100644
--- a/app/display/gimpdisplayshell.h
+++ b/app/display/gimpdisplayshell.h
@@ -23,12 +23,6 @@
#define PROJ_ROUND(coord) ((gint) RINT (coord))
#define PROJ_ROUND64(coord) ((gint64) RINT (coord))
-/* finding the effective screen resolution (double) */
-#define SCREEN_XRES(s) ((s)->dot_for_dot ? \
- (s)->display->image->xresolution : (s)->monitor_xres)
-#define SCREEN_YRES(s) ((s)->dot_for_dot ? \
- (s)->display->image->yresolution : (s)->monitor_yres)
-
/* scale values */
#define SCALEX(s,x) PROJ_ROUND ((x) * (s)->scale_x)
#define SCALEY(s,y) PROJ_ROUND ((y) * (s)->scale_y)
diff --git a/app/tools/gimpmagnifytool.c b/app/tools/gimpmagnifytool.c
index d262f56..27df901 100644
--- a/app/tools/gimpmagnifytool.c
+++ b/app/tools/gimpmagnifytool.c
@@ -224,13 +224,17 @@ gimp_magnify_tool_button_release (GimpTool *tool,
if (new_scale != current_scale)
{
- gdouble xres;
- gdouble yres;
gint offset_x = 0;
gint offset_y = 0;
+ gdouble xres;
+ gdouble yres;
+ gdouble screen_xres;
+ gdouble screen_yres;
gimp_image_get_resolution (gimp_display_get_image (display),
&xres, &yres);
+ gimp_display_shell_get_screen_resolution (shell,
+ &screen_xres, &screen_yres);
switch (options->zoom_type)
{
@@ -245,11 +249,11 @@ gimp_magnify_tool_button_release (GimpTool *tool,
* offset
*/
offset_x = RINT (new_scale * ((x1 + x2) / 2.0) *
- SCREEN_XRES (shell) / xres -
+ screen_xres / xres -
(shell->disp_width / 2.0));
offset_y = RINT (new_scale * ((y1 + y2) / 2.0) *
- SCREEN_YRES (shell) / yres -
+ screen_yres / yres -
(shell->disp_height / 2.0));
break;
@@ -266,14 +270,14 @@ gimp_magnify_tool_button_release (GimpTool *tool,
offset_x = RINT (new_scale * UNSCALEX (shell,
shell->offset_x +
shell->disp_width / 2.0) *
- SCREEN_XRES (shell) / xres -
+ screen_xres / xres -
(SCALEX (shell, (x1 + x2) / 2.0) -
shell->offset_x));
offset_y = RINT (new_scale * UNSCALEY (shell,
shell->offset_y +
shell->disp_height / 2.0) *
- SCREEN_YRES (shell) / yres -
+ screen_yres / yres -
(SCALEY (shell, (y1 + y2) / 2.0) -
shell->offset_y));
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]