+Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
+
+ * pan-view.c: Recalc the size of the layout when popping up new images
+ in the calendar so that all new images can be scrolled into view.
+ * pixbuf-renderer.[ch] (pixbuf_renderer_set_tiles_size): Add ability
+ to resize a tile canvas without the need for a complete reset/render.
+
Sun Oct 15 04:03:41 2006 John Ellis <johne@verizon.net>
* main.c: Fix command line parser to work with any combination of files
> xvpics is now hidden option.
> Holding down shift will now scroll more when panning with mouse.
+ > add blurb about moving images between collections with shift+drag
+
Minor (non blockers):
----------------------------------------------
static GList *pan_layout_intersect(PanWindow *pw, gint x, gint y, gint width, gint height);
+static void pan_layout_resize(PanWindow *pw, gint border);
+
static void pan_window_layout_update_idle(PanWindow *pw);
static GtkWidget *pan_popup_menu(PanWindow *pw);
pan_item_box_shadow(pbox, PAN_SHADOW_OFFSET * 2, PAN_SHADOW_FADE * 2);
pan_item_added(pw, pbox);
+
+ pan_layout_resize(pw, 100);
}
static void pan_window_layout_compute_calendar(PanWindow *pw, const gchar *path, gint *width, gint *height)
return list;
}
+static void pan_layout_resize(PanWindow *pw, gint border)
+{
+ gint width = 0;
+ gint height = 0;
+ GList *work;
+ PixbufRenderer *pr;
+
+ work = pw->list;
+ while (work)
+ {
+ PanItem *pi;
+
+ pi = work->data;
+ work = work->next;
+
+ if (width < pi->x + pi->width) width = pi->x + pi->width;
+ if (height < pi->y + pi->height) height = pi->y + pi->height;
+ }
+ work = pw->list_static;
+ while (work)
+ {
+ PanItem *pi;
+
+ pi = work->data;
+ work = work->next;
+
+ if (width < pi->x + pi->width) width = pi->x + pi->width;
+ if (height < pi->y + pi->height) height = pi->y + pi->height;
+ }
+
+ width += border;
+ height += border;
+
+ pr = PIXBUF_RENDERER(pw->imd->pr);
+ if (width < pr->window_width) width = pr->window_width;
+ if (height < pr->window_width) height = pr->window_height;
+
+ pixbuf_renderer_set_tiles_size(PIXBUF_RENDERER(pw->imd->pr), width, height);
+}
+
/*
*-----------------------------------------------------------------------------
* tile generation
pr_redraw(pr, TRUE);
}
+void pixbuf_renderer_set_tiles_size(PixbufRenderer *pr, gint width, gint height)
+{
+ g_return_if_fail(IS_PIXBUF_RENDERER(pr));
+ g_return_if_fail(width >= 32 && height > 32);
+
+ if (!pr->source_tiles_enabled) return;
+ if (pr->image_width == width && pr->image_height == height) return;
+
+ pr->image_width = width;
+ pr->image_height = height;
+
+ pr_zoom_sync(pr, pr->zoom, TRUE, FALSE, TRUE, FALSE, 0, 0);
+ pr_redraw(pr, TRUE);
+}
+
gint pixbuf_renderer_get_tiles(PixbufRenderer *pr)
{
g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
PixbufRendererTileDisposeFunc func_dispose,
gpointer user_data,
gdouble zoom);
+void pixbuf_renderer_set_tiles_size(PixbufRenderer *pr, gint width, gint height);
gint pixbuf_renderer_get_tiles(PixbufRenderer *pr);
/* move image data from source to pr, source is then set to NULL image */