image_change_real(imd, fd, NULL, NULL, zoom);
}
+gint image_get_image_size(ImageWindow *imd, gint *width, gint *height)
+{
+ return pixbuf_renderer_get_image_size(PIXBUF_RENDERER(imd->pr), width, height);
+}
+
GdkPixbuf *image_get_pixbuf(ImageWindow *imd)
{
return pixbuf_renderer_get_pixbuf((PixbufRenderer *)imd->pr);
void layout_image_scroll(LayoutWindow *lw, gint x, gint y)
{
+ gdouble dx, dy;
+ gint width, height, i;
if (!layout_valid(&lw)) return;
image_scroll(lw->image, x, y);
+
+ image_get_image_size(lw->image, &width, &height);
+ dx = (gdouble) x / width;
+ dy = (gdouble) y / height;
+
+ for (i = 0; i < MAX_SPLIT_IMAGES; i++)
+ {
+ if (lw->split_images[i] && lw->split_images[i] != lw->image && lw->connect_scroll)
+ {
+ gdouble sx, sy;
+ image_get_scroll_center(lw->split_images[i], &sx, &sy);
+ sx += dx;
+ sy += dy;
+ image_set_scroll_center(lw->split_images[i], sx, sy);
+ }
+ }
+
}
void layout_image_zoom_adjust(LayoutWindow *lw, gdouble increment)
}
}
+void layout_image_zoom_adjust_at_point(LayoutWindow *lw, gdouble increment, gint x, gint y)
+{
+ gint i;
+ if (!layout_valid(&lw)) return;
+
+ image_zoom_adjust_at_point(lw->image, increment, x, y);
+
+ for (i = 0; i < MAX_SPLIT_IMAGES; i++)
+ {
+ if (lw->split_images[i] && lw->split_images[i] != lw->image && lw->connect_zoom)
+ image_zoom_adjust_at_point(lw->split_images[i], increment, x, y);
+ }
+}
+
void layout_image_zoom_set(LayoutWindow *lw, gdouble zoom)
{
gint i;
switch (direction)
{
case GDK_SCROLL_UP:
- image_zoom_adjust_at_point(imd, get_zoom_increment(), x, y);
+ layout_image_zoom_adjust_at_point(lw, get_zoom_increment(), x, y);
break;
case GDK_SCROLL_DOWN:
- image_zoom_adjust_at_point(imd, -get_zoom_increment(), x, y);
+ layout_image_zoom_adjust_at_point(lw, -get_zoom_increment(), x, y);
break;
default:
break;
void layout_image_scroll(LayoutWindow *lw, gint x, gint y);
void layout_image_zoom_adjust(LayoutWindow *lw, gdouble increment);
+void layout_image_zoom_adjust_at_point(LayoutWindow *lw, gdouble increment, gint x, gint y);
void layout_image_zoom_set(LayoutWindow *lw, gdouble zoom);
void layout_image_zoom_set_fill_geometry(LayoutWindow *lw, gint vertical);
void layout_image_alter(LayoutWindow *lw, AlterType type);