/*
* Geeqie
* (C) 2006 John Ellis
- * Copyright (C) 2008 - 2010 The Geeqie Team
+ * Copyright (C) 2008 - 2012 The Geeqie Team
*
* Author: John Ellis
+ * Author: Vladimir Nadvornik
*
* This software is released under the GNU General Public License (GNU GPL).
* Please read the included file COPYING for more information.
static void rt_queue(RendererTiles *rt, gint x, gint y, gint w, gint h,
gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing);
-static void rt_redraw(RendererTiles *rt, gboolean new_data);
-
-
-static void rt_signals_connect(RendererTiles *rt);
-static void rt_size_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data);
static void rt_hierarchy_changed_cb(GtkWidget *widget, GtkWidget *previous_toplevel, gpointer data);
-static void pixbuf_renderer_paint(RendererTiles *rt, GdkRectangle *area);
static gint rt_queue_draw_idle_cb(gpointer data);
+static void renderer_redraw(void *renderer, gint x, gint y, gint w, gint h,
+ gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing);
#define GET_RIGHT_PIXBUF_OFFSET(rt) \
(( (rt->stereo_mode & PR_STEREO_RIGHT) && !(rt->stereo_mode & PR_STEREO_SWAP)) || \
rt->tile_cache_size += size;
}
- if ((pr->zoom != 1.0 || pr->source_tiles_enabled || (pr->pixbuf && gdk_pixbuf_get_has_alpha(pr->pixbuf)) ||
- pr->orientation != EXIF_ORIENTATION_TOP_LEFT || pr->func_post_process) && !it->pixbuf)
+ if (!it->pixbuf)
{
GdkPixbuf *pixbuf;
guint size;
- {
- pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, rt->tile_width, rt->tile_height);
- }
+ pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, rt->tile_width, rt->tile_height);
size = gdk_pixbuf_get_rowstride(pixbuf) * rt->tile_height;
rt_tile_free_space(rt, size, it);
}
}
-static void rt_redraw(RendererTiles *rt, gboolean new_data)
-{
- PixbufRenderer *pr = rt->pr;
- rt_queue_clear(rt);
- rt_queue(rt, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE);
-}
-
-
static void rt_scroll(RendererTiles *rt, gint x_off, gint y_off)
{
PixbufRenderer *pr = rt->pr;
#if ! GTK_CHECK_VERSION(2,18,0)
while ((event = gdk_event_get_graphics_expose(box->window)) != NULL)
{
- pixbuf_renderer_paint(pr, &event->expose.area);
-
+ renderer_redraw((void *) rt, event->expose.area.x, event->expose.area.y, event->expose.area.width, event->expose.area.height,
+ FALSE, TILE_RENDER_ALL, FALSE, FALSE);
+
if (event->expose.count == 0)
{
gdk_event_free(event);
rt_queue_clear((RendererTiles *)renderer);
}
-static void renderer_border_draw(void *renderer, gint x, gint y, gint w, gint h)
+static void renderer_border_clear(void *renderer)
{
- RendererTiles *rt = (RendererTiles *)renderer;
- rt_border_draw((RendererTiles *)renderer, x, y, w, h);
+ rt_border_clear((RendererTiles *)renderer);
}
rt->f.redraw = renderer_redraw;
rt->f.area_changed = renderer_area_changed;
rt->f.queue_clear = renderer_queue_clear;
- rt->f.border_draw = renderer_border_draw;
+ rt->f.border_clear = renderer_border_clear;
rt->f.free = renderer_free;
rt->f.invalidate_all = renderer_invalidate_all;
rt->f.invalidate_region = renderer_invalidate_region;