[gimp] app: move the code to update scrollbars and rulers to their own files
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: move the code to update scrollbars and rulers to their own files
- Date: Tue, 5 Jan 2016 17:05:58 +0000 (UTC)
commit 2f26016a47962fb5195f403dea1aac8b7439f8a8
Author: Michael Natterer <mitch gimp org>
Date: Tue Jan 5 18:02:59 2016 +0100
app: move the code to update scrollbars and rulers to their own files
so they are gone from the "scale" and "scroll" namespaces because they
belong to neither and both. And because the files are way too large.
app/display/Makefile.am | 4 +
app/display/gimpdisplayshell-callbacks.c | 5 +-
app/display/gimpdisplayshell-handlers.c | 3 +-
app/display/gimpdisplayshell-rulers.c | 150 ++++++++++++++++++++++++++
app/display/gimpdisplayshell-rulers.h | 25 +++++
app/display/gimpdisplayshell-scale.c | 162 ----------------------------
app/display/gimpdisplayshell-scale.h | 3 -
app/display/gimpdisplayshell-scroll.c | 95 +----------------
app/display/gimpdisplayshell-scroll.h | 5 -
app/display/gimpdisplayshell-scrollbars.c | 163 +++++++++++++++++++++++++++++
app/display/gimpdisplayshell-scrollbars.h | 30 ++++++
app/display/gimpdisplayshell.c | 3 +-
12 files changed, 384 insertions(+), 264 deletions(-)
---
diff --git a/app/display/Makefile.am b/app/display/Makefile.am
index b181888..a6bcbc9 100644
--- a/app/display/Makefile.am
+++ b/app/display/Makefile.am
@@ -119,12 +119,16 @@ libappdisplay_a_sources = \
gimpdisplayshell-rotate.h \
gimpdisplayshell-rotate-dialog.c \
gimpdisplayshell-rotate-dialog.h \
+ gimpdisplayshell-rulers.c \
+ gimpdisplayshell-rulers.h \
gimpdisplayshell-scale.c \
gimpdisplayshell-scale.h \
gimpdisplayshell-scale-dialog.c \
gimpdisplayshell-scale-dialog.h \
gimpdisplayshell-scroll.c \
gimpdisplayshell-scroll.h \
+ gimpdisplayshell-scrollbars.c \
+ gimpdisplayshell-scrollbars.h \
gimpdisplayshell-selection.c \
gimpdisplayshell-selection.h \
gimpdisplayshell-title.c \
diff --git a/app/display/gimpdisplayshell-callbacks.c b/app/display/gimpdisplayshell-callbacks.c
index db2e04c..ba3064a 100644
--- a/app/display/gimpdisplayshell-callbacks.c
+++ b/app/display/gimpdisplayshell-callbacks.c
@@ -40,6 +40,7 @@
#include "gimpdisplayshell-draw.h"
#include "gimpdisplayshell-scale.h"
#include "gimpdisplayshell-scroll.h"
+#include "gimpdisplayshell-scrollbars.h"
#include "gimpdisplayshell-selection.h"
#include "gimpdisplayshell-title.h"
#include "gimpdisplayxfer.h"
@@ -374,7 +375,7 @@ gimp_display_shell_hscrollbar_change_value (GtkRange *range,
g_object_freeze_notify (G_OBJECT (shell->hsbdata));
- gimp_display_shell_scroll_setup_hscrollbar (shell, value);
+ gimp_display_shell_scrollbars_setup_horizontal (shell, value);
g_object_thaw_notify (G_OBJECT (shell->hsbdata)); /* emits "changed" */
@@ -397,7 +398,7 @@ gimp_display_shell_vscrollbar_change_value (GtkRange *range,
g_object_freeze_notify (G_OBJECT (shell->vsbdata));
- gimp_display_shell_scroll_setup_vscrollbar (shell, value);
+ gimp_display_shell_scrollbars_setup_vertical (shell, value);
g_object_thaw_notify (G_OBJECT (shell->vsbdata)); /* emits "changed" */
diff --git a/app/display/gimpdisplayshell-handlers.c b/app/display/gimpdisplayshell-handlers.c
index cd8c5d2..fa2d405 100644
--- a/app/display/gimpdisplayshell-handlers.c
+++ b/app/display/gimpdisplayshell-handlers.c
@@ -59,6 +59,7 @@
#include "gimpdisplayshell-handlers.h"
#include "gimpdisplayshell-icon.h"
#include "gimpdisplayshell-profile.h"
+#include "gimpdisplayshell-rulers.h"
#include "gimpdisplayshell-scale.h"
#include "gimpdisplayshell-scroll.h"
#include "gimpdisplayshell-selection.h"
@@ -568,7 +569,7 @@ gimp_display_shell_resolution_changed_handler (GimpImage *image,
{
if (shell->unit != GIMP_UNIT_PIXEL)
{
- gimp_display_shell_scale_update_rulers (shell);
+ gimp_display_shell_rulers_update (shell);
}
gimp_display_shell_scaled (shell);
diff --git a/app/display/gimpdisplayshell-rulers.c b/app/display/gimpdisplayshell-rulers.c
new file mode 100644
index 0000000..bebf46f
--- /dev/null
+++ b/app/display/gimpdisplayshell-rulers.c
@@ -0,0 +1,150 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+#include <gtk/gtk.h>
+
+#include "libgimpbase/gimpbase.h"
+#include "libgimpwidgets/gimpwidgets.h"
+
+#include "display-types.h"
+
+#include "core/gimpimage.h"
+
+#include "gimpdisplay.h"
+#include "gimpdisplayshell.h"
+#include "gimpdisplayshell-rulers.h"
+
+
+/**
+ * gimp_display_shell_rulers_update:
+ * @shell:
+ *
+ **/
+void
+gimp_display_shell_rulers_update (GimpDisplayShell *shell)
+{
+ GimpImage *image;
+ gint image_width;
+ gint image_height;
+ gdouble resolution_x = 1.0;
+ gdouble resolution_y = 1.0;
+ gdouble horizontal_lower;
+ gdouble horizontal_upper;
+ gdouble horizontal_max_size;
+ gdouble vertical_lower;
+ gdouble vertical_upper;
+ gdouble vertical_max_size;
+
+ if (! shell->display)
+ return;
+
+ image = gimp_display_get_image (shell->display);
+
+ if (image)
+ {
+ image_width = gimp_image_get_width (image);
+ image_height = gimp_image_get_height (image);
+
+ gimp_image_get_resolution (image, &resolution_x, &resolution_y);
+ }
+ else
+ {
+ image_width = shell->disp_width;
+ image_height = shell->disp_height;
+ }
+
+
+ /* Initialize values */
+
+ horizontal_lower = 0;
+ vertical_lower = 0;
+
+ if (image)
+ {
+ horizontal_upper = gimp_pixels_to_units (FUNSCALEX (shell,
+ shell->disp_width),
+ shell->unit,
+ resolution_x);
+ horizontal_max_size = gimp_pixels_to_units (MAX (image_width,
+ image_height),
+ shell->unit,
+ resolution_x);
+
+ vertical_upper = gimp_pixels_to_units (FUNSCALEY (shell,
+ shell->disp_height),
+ shell->unit,
+ resolution_y);
+ vertical_max_size = gimp_pixels_to_units (MAX (image_width,
+ image_height),
+ shell->unit,
+ resolution_y);
+ }
+ else
+ {
+ horizontal_upper = image_width;
+ horizontal_max_size = MAX (image_width, image_height);
+
+ vertical_upper = image_height;
+ vertical_max_size = MAX (image_width, image_height);
+ }
+
+
+ /* Adjust due to scrolling */
+
+ if (image)
+ {
+ gdouble offset_x;
+ gdouble offset_y;
+
+ offset_x = gimp_pixels_to_units (FUNSCALEX (shell,
+ (gdouble) shell->offset_x),
+ shell->unit,
+ resolution_x);
+
+ offset_y = gimp_pixels_to_units (FUNSCALEX (shell,
+ (gdouble) shell->offset_y),
+ shell->unit,
+ resolution_y);
+
+ horizontal_lower += offset_x;
+ horizontal_upper += offset_x;
+
+ vertical_lower += offset_y;
+ vertical_upper += offset_y;
+ }
+
+ /* Finally setup the actual rulers */
+
+ gimp_ruler_set_range (GIMP_RULER (shell->hrule),
+ horizontal_lower,
+ horizontal_upper,
+ horizontal_max_size);
+
+ gimp_ruler_set_unit (GIMP_RULER (shell->hrule),
+ shell->unit);
+
+ gimp_ruler_set_range (GIMP_RULER (shell->vrule),
+ vertical_lower,
+ vertical_upper,
+ vertical_max_size);
+
+ gimp_ruler_set_unit (GIMP_RULER (shell->vrule),
+ shell->unit);
+}
diff --git a/app/display/gimpdisplayshell-rulers.h b/app/display/gimpdisplayshell-rulers.h
new file mode 100644
index 0000000..dbba940
--- /dev/null
+++ b/app/display/gimpdisplayshell-rulers.h
@@ -0,0 +1,25 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_DISPLAY_SHELL_RULERS_H__
+#define __GIMP_DISPLAY_SHELL_RULERS_H__
+
+
+void gimp_display_shell_rulers_update (GimpDisplayShell *shell);
+
+
+#endif /* __GIMP_DISPLAY_SHELL_RULERS_H__ */
diff --git a/app/display/gimpdisplayshell-scale.c b/app/display/gimpdisplayshell-scale.c
index a9d34e7..351dac6 100644
--- a/app/display/gimpdisplayshell-scale.c
+++ b/app/display/gimpdisplayshell-scale.c
@@ -84,168 +84,6 @@ static void gimp_display_shell_scale_get_zoom_focus (GimpDisplayShell *shel
/* public functions */
/**
- * gimp_display_shell_scale_update_scrollbars:
- * @shell:
- *
- **/
-void
-gimp_display_shell_scale_update_scrollbars (GimpDisplayShell *shell)
-{
- g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
-
- if (! shell->display)
- return;
-
- /* Horizontal scrollbar */
-
- g_object_freeze_notify (G_OBJECT (shell->hsbdata));
-
- /* Update upper and lower value before we set the new value */
- gimp_display_shell_scroll_setup_hscrollbar (shell, shell->offset_x);
-
- g_object_set (shell->hsbdata,
- "value", (gdouble) shell->offset_x,
- "page-size", (gdouble) shell->disp_width,
- "page-increment", (gdouble) shell->disp_width / 2,
- NULL);
-
- g_object_thaw_notify (G_OBJECT (shell->hsbdata)); /* emits "changed" */
-
-
- /* Vertcal scrollbar */
-
- g_object_freeze_notify (G_OBJECT (shell->vsbdata));
-
- /* Update upper and lower value before we set the new value */
- gimp_display_shell_scroll_setup_vscrollbar (shell, shell->offset_y);
-
- g_object_set (shell->vsbdata,
- "value", (gdouble) shell->offset_y,
- "page-size", (gdouble) shell->disp_height,
- "page-increment", (gdouble) shell->disp_height / 2,
- NULL);
-
- g_object_thaw_notify (G_OBJECT (shell->vsbdata)); /* emits "changed" */
-}
-
-/**
- * gimp_display_shell_scale_update_rulers:
- * @shell:
- *
- **/
-void
-gimp_display_shell_scale_update_rulers (GimpDisplayShell *shell)
-{
- GimpImage *image;
- gint image_width;
- gint image_height;
- gdouble resolution_x = 1.0;
- gdouble resolution_y = 1.0;
- gdouble horizontal_lower;
- gdouble horizontal_upper;
- gdouble horizontal_max_size;
- gdouble vertical_lower;
- gdouble vertical_upper;
- gdouble vertical_max_size;
-
- if (! shell->display)
- return;
-
- image = gimp_display_get_image (shell->display);
-
- if (image)
- {
- image_width = gimp_image_get_width (image);
- image_height = gimp_image_get_height (image);
-
- gimp_image_get_resolution (image, &resolution_x, &resolution_y);
- }
- else
- {
- image_width = shell->disp_width;
- image_height = shell->disp_height;
- }
-
-
- /* Initialize values */
-
- horizontal_lower = 0;
- vertical_lower = 0;
-
- if (image)
- {
- horizontal_upper = gimp_pixels_to_units (FUNSCALEX (shell,
- shell->disp_width),
- shell->unit,
- resolution_x);
- horizontal_max_size = gimp_pixels_to_units (MAX (image_width,
- image_height),
- shell->unit,
- resolution_x);
-
- vertical_upper = gimp_pixels_to_units (FUNSCALEY (shell,
- shell->disp_height),
- shell->unit,
- resolution_y);
- vertical_max_size = gimp_pixels_to_units (MAX (image_width,
- image_height),
- shell->unit,
- resolution_y);
- }
- else
- {
- horizontal_upper = image_width;
- horizontal_max_size = MAX (image_width, image_height);
-
- vertical_upper = image_height;
- vertical_max_size = MAX (image_width, image_height);
- }
-
-
- /* Adjust due to scrolling */
-
- if (image)
- {
- gdouble offset_x;
- gdouble offset_y;
-
- offset_x = gimp_pixels_to_units (FUNSCALEX (shell,
- (gdouble) shell->offset_x),
- shell->unit,
- resolution_x);
-
- offset_y = gimp_pixels_to_units (FUNSCALEX (shell,
- (gdouble) shell->offset_y),
- shell->unit,
- resolution_y);
-
- horizontal_lower += offset_x;
- horizontal_upper += offset_x;
-
- vertical_lower += offset_y;
- vertical_upper += offset_y;
- }
-
- /* Finally setup the actual rulers */
-
- gimp_ruler_set_range (GIMP_RULER (shell->hrule),
- horizontal_lower,
- horizontal_upper,
- horizontal_max_size);
-
- gimp_ruler_set_unit (GIMP_RULER (shell->hrule),
- shell->unit);
-
- gimp_ruler_set_range (GIMP_RULER (shell->vrule),
- vertical_lower,
- vertical_upper,
- vertical_max_size);
-
- gimp_ruler_set_unit (GIMP_RULER (shell->vrule),
- shell->unit);
-}
-
-/**
* gimp_display_shell_scale_revert:
* @shell: the #GimpDisplayShell
*
diff --git a/app/display/gimpdisplayshell-scale.h b/app/display/gimpdisplayshell-scale.h
index f3d7532..e1653f2 100644
--- a/app/display/gimpdisplayshell-scale.h
+++ b/app/display/gimpdisplayshell-scale.h
@@ -19,9 +19,6 @@
#define __GIMP_DISPLAY_SHELL_SCALE_H__
-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);
diff --git a/app/display/gimpdisplayshell-scroll.c b/app/display/gimpdisplayshell-scroll.c
index e1cc5d4..ec1807f 100644
--- a/app/display/gimpdisplayshell-scroll.c
+++ b/app/display/gimpdisplayshell-scroll.c
@@ -36,13 +36,14 @@
#include "gimpdisplayshell.h"
#include "gimpdisplayshell-expose.h"
#include "gimpdisplayshell-rotate.h"
+#include "gimpdisplayshell-rulers.h"
#include "gimpdisplayshell-scale.h"
#include "gimpdisplayshell-scroll.h"
+#include "gimpdisplayshell-scrollbars.h"
#include "gimpdisplayshell-transform.h"
-#define OVERPAN_FACTOR 0.5
-#define MINIMUM_STEP_AMOUNT 1.0
+#define OVERPAN_FACTOR 0.5
/**
@@ -231,8 +232,8 @@ gimp_display_shell_scroll_clamp_and_update (GimpDisplayShell *shell)
shell->offset_y = 0;
}
- gimp_display_shell_scale_update_scrollbars (shell);
- gimp_display_shell_scale_update_rulers (shell);
+ gimp_display_shell_scrollbars_update (shell);
+ gimp_display_shell_rulers_update (shell);
}
/**
@@ -466,89 +467,3 @@ gimp_display_shell_scroll_get_viewport (GimpDisplayShell *shell,
*w = shell->disp_width / shell->scale_x;
*h = shell->disp_height / shell->scale_y;
}
-
-/**
- * gimp_display_shell_scroll_setup_hscrollbar:
- * @shell:
- * @value:
- *
- * Setup the limits of the horizontal scrollbar
- **/
-void
-gimp_display_shell_scroll_setup_hscrollbar (GimpDisplayShell *shell,
- gdouble value)
-{
- gint sw;
- gdouble lower;
- gdouble upper;
-
- g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
-
- if (! shell->display ||
- ! gimp_display_get_image (shell->display))
- return;
-
- gimp_display_shell_scale_get_image_size (shell, &sw, NULL);
-
- if (shell->disp_width < sw)
- {
- lower = MIN (value, 0);
- upper = MAX (value + shell->disp_width, sw);
- }
- else
- {
- lower = MIN (value, -(shell->disp_width - sw) / 2);
- upper = MAX (value + shell->disp_width,
- sw + (shell->disp_width - sw) / 2);
- }
-
- g_object_set (shell->hsbdata,
- "lower", lower,
- "upper", upper,
- "step-increment", (gdouble) MAX (shell->scale_x,
- MINIMUM_STEP_AMOUNT),
- NULL);
-}
-
-/**
- * gimp_display_shell_scroll_setup_vscrollbar:
- * @shell:
- * @value:
- *
- * Setup the limits of the vertical scrollbar
- **/
-void
-gimp_display_shell_scroll_setup_vscrollbar (GimpDisplayShell *shell,
- gdouble value)
-{
- gint sh;
- gdouble lower;
- gdouble upper;
-
- g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
-
- if (! shell->display ||
- ! gimp_display_get_image (shell->display))
- return;
-
- gimp_display_shell_scale_get_image_size (shell, NULL, &sh);
-
- if (shell->disp_height < sh)
- {
- lower = MIN (value, 0);
- upper = MAX (value + shell->disp_height, sh);
- }
- else
- {
- lower = MIN (value, -(shell->disp_height - sh) / 2);
- upper = MAX (value + shell->disp_height,
- sh + (shell->disp_height - sh) / 2);
- }
-
- g_object_set (shell->vsbdata,
- "lower", lower,
- "upper", upper,
- "step-increment", (gdouble) MAX (shell->scale_y,
- MINIMUM_STEP_AMOUNT),
- NULL);
-}
diff --git a/app/display/gimpdisplayshell-scroll.h b/app/display/gimpdisplayshell-scroll.h
index b531d3d..9d5dc09 100644
--- a/app/display/gimpdisplayshell-scroll.h
+++ b/app/display/gimpdisplayshell-scroll.h
@@ -56,10 +56,5 @@ void gimp_display_shell_scroll_get_viewport (GimpDisplayShell *shell,
gdouble *w,
gdouble *h);
-void gimp_display_shell_scroll_setup_hscrollbar (GimpDisplayShell *shell,
- gdouble value);
-void gimp_display_shell_scroll_setup_vscrollbar (GimpDisplayShell *shell,
- gdouble value);
-
#endif /* __GIMP_DISPLAY_SHELL_SCROLL_H__ */
diff --git a/app/display/gimpdisplayshell-scrollbars.c b/app/display/gimpdisplayshell-scrollbars.c
new file mode 100644
index 0000000..152dcd9
--- /dev/null
+++ b/app/display/gimpdisplayshell-scrollbars.c
@@ -0,0 +1,163 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "config.h"
+
+#include <gegl.h>
+#include <gtk/gtk.h>
+
+#include "display-types.h"
+
+#include "gimpdisplay.h"
+#include "gimpdisplayshell.h"
+#include "gimpdisplayshell-scale.h"
+#include "gimpdisplayshell-scrollbars.h"
+
+
+#define MINIMUM_STEP_AMOUNT 1.0
+
+
+/**
+ * gimp_display_shell_scrollbars_update:
+ * @shell:
+ *
+ **/
+void
+gimp_display_shell_scrollbars_update (GimpDisplayShell *shell)
+{
+ g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+
+ if (! shell->display)
+ return;
+
+ /* Horizontal scrollbar */
+
+ g_object_freeze_notify (G_OBJECT (shell->hsbdata));
+
+ /* Update upper and lower value before we set the new value */
+ gimp_display_shell_scrollbars_setup_horizontal (shell, shell->offset_x);
+
+ g_object_set (shell->hsbdata,
+ "value", (gdouble) shell->offset_x,
+ "page-size", (gdouble) shell->disp_width,
+ "page-increment", (gdouble) shell->disp_width / 2,
+ NULL);
+
+ g_object_thaw_notify (G_OBJECT (shell->hsbdata)); /* emits "changed" */
+
+
+ /* Vertcal scrollbar */
+
+ g_object_freeze_notify (G_OBJECT (shell->vsbdata));
+
+ /* Update upper and lower value before we set the new value */
+ gimp_display_shell_scrollbars_setup_vertical (shell, shell->offset_y);
+
+ g_object_set (shell->vsbdata,
+ "value", (gdouble) shell->offset_y,
+ "page-size", (gdouble) shell->disp_height,
+ "page-increment", (gdouble) shell->disp_height / 2,
+ NULL);
+
+ g_object_thaw_notify (G_OBJECT (shell->vsbdata)); /* emits "changed" */
+}
+
+/**
+ * gimp_display_shell_scrollbars_setup_horizontal:
+ * @shell:
+ * @value:
+ *
+ * Setup the limits of the horizontal scrollbar
+ **/
+void
+gimp_display_shell_scrollbars_setup_horizontal (GimpDisplayShell *shell,
+ gdouble value)
+{
+ gint sw;
+ gdouble lower;
+ gdouble upper;
+
+ g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+
+ if (! shell->display ||
+ ! gimp_display_get_image (shell->display))
+ return;
+
+ gimp_display_shell_scale_get_image_size (shell, &sw, NULL);
+
+ if (shell->disp_width < sw)
+ {
+ lower = MIN (value, 0);
+ upper = MAX (value + shell->disp_width, sw);
+ }
+ else
+ {
+ lower = MIN (value, -(shell->disp_width - sw) / 2);
+ upper = MAX (value + shell->disp_width,
+ sw + (shell->disp_width - sw) / 2);
+ }
+
+ g_object_set (shell->hsbdata,
+ "lower", lower,
+ "upper", upper,
+ "step-increment", (gdouble) MAX (shell->scale_x,
+ MINIMUM_STEP_AMOUNT),
+ NULL);
+}
+
+/**
+ * gimp_display_shell_scrollbars_setup_vertical:
+ * @shell:
+ * @value:
+ *
+ * Setup the limits of the vertical scrollbar
+ **/
+void
+gimp_display_shell_scrollbars_setup_vertical (GimpDisplayShell *shell,
+ gdouble value)
+{
+ gint sh;
+ gdouble lower;
+ gdouble upper;
+
+ g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
+
+ if (! shell->display ||
+ ! gimp_display_get_image (shell->display))
+ return;
+
+ gimp_display_shell_scale_get_image_size (shell, NULL, &sh);
+
+ if (shell->disp_height < sh)
+ {
+ lower = MIN (value, 0);
+ upper = MAX (value + shell->disp_height, sh);
+ }
+ else
+ {
+ lower = MIN (value, -(shell->disp_height - sh) / 2);
+ upper = MAX (value + shell->disp_height,
+ sh + (shell->disp_height - sh) / 2);
+ }
+
+ g_object_set (shell->vsbdata,
+ "lower", lower,
+ "upper", upper,
+ "step-increment", (gdouble) MAX (shell->scale_y,
+ MINIMUM_STEP_AMOUNT),
+ NULL);
+}
diff --git a/app/display/gimpdisplayshell-scrollbars.h b/app/display/gimpdisplayshell-scrollbars.h
new file mode 100644
index 0000000..8a7dff1
--- /dev/null
+++ b/app/display/gimpdisplayshell-scrollbars.h
@@ -0,0 +1,30 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __GIMP_DISPLAY_SHELL_SCROLLBARS_H__
+#define __GIMP_DISPLAY_SHELL_SCROLLBARS_H__
+
+
+void gimp_display_shell_scrollbars_update (GimpDisplayShell *shell);
+
+void gimp_display_shell_scrollbars_setup_horizontal (GimpDisplayShell *shell,
+ gdouble value);
+void gimp_display_shell_scrollbars_setup_vertical (GimpDisplayShell *shell,
+ gdouble value);
+
+
+#endif /* __GIMP_DISPLAY_SHELL_SCROLLBARS_H__ */
diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c
index 1a68952..3d2f9a0 100644
--- a/app/display/gimpdisplayshell.c
+++ b/app/display/gimpdisplayshell.c
@@ -70,6 +70,7 @@
#include "gimpdisplayshell-progress.h"
#include "gimpdisplayshell-render.h"
#include "gimpdisplayshell-rotate.h"
+#include "gimpdisplayshell-rulers.h"
#include "gimpdisplayshell-scale.h"
#include "gimpdisplayshell-scroll.h"
#include "gimpdisplayshell-selection.h"
@@ -1643,7 +1644,7 @@ gimp_display_shell_set_unit (GimpDisplayShell *shell,
{
shell->unit = unit;
- gimp_display_shell_scale_update_rulers (shell);
+ gimp_display_shell_rulers_update (shell);
gimp_display_shell_scaled (shell);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]