#include "main.h"
#include "pixbuf-renderer.h"
#include "renderer-tiles.h"
+#include "renderer-clutter.h"
#include "intl.h"
#include "layout.h"
#include <gtk/gtk.h>
+#define RENDERER_NEW(pr) renderer_clutter_new(pr)
/* comment this out if not using this from within Geeqie
* defining GQ_BUILD does these things:
pr->stereo_mode = PR_STEREO_NONE;
- pr->renderer = (void *)renderer_tiles_new(pr);
+ pr->renderer = RENDERER_NEW(pr);
pr->renderer2 = NULL;
*-------------------------------------------------------------------
*/
-static void pr_border_clear(PixbufRenderer *pr)
-{
- pr->renderer->border_clear(pr->renderer);
- if (pr->renderer2) pr->renderer2->border_clear(pr->renderer2);
-}
-
void pixbuf_renderer_set_color(PixbufRenderer *pr, GdkColor *color)
{
GtkStyle *style;
gtk_widget_set_style(widget, style);
-#if GTK_CHECK_VERSION(2,20,0)
- if (gtk_widget_get_visible(widget)) pr_border_clear(pr);
-#else
- if (GTK_WIDGET_VISIBLE(widget)) pr_border_clear(pr);
-#endif
-}
-
-static void pr_redraw(PixbufRenderer *pr, gboolean new_data)
-{
- pr->renderer->queue_clear(pr->renderer);
- pr->renderer->redraw(pr->renderer, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE);
- if (pr->renderer2) {
- pr->renderer2->queue_clear(pr->renderer2);
- pr->renderer2->redraw(pr->renderer2, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE);
- }
+ pr->renderer->update_sizes(pr->renderer);
+ if (pr->renderer2) pr->renderer2->update_sizes(pr->renderer2);
}
/*
pr->func_tile_data = user_data;
pr_zoom_sync(pr, zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
- pr_redraw(pr, TRUE);
}
void pixbuf_renderer_set_tiles_size(PixbufRenderer *pr, gint width, gint height)
if (invalidate || invalid)
{
- pr->renderer->invalidate_all(pr->renderer);
- if (pr->renderer2) pr->renderer2->invalidate_all(pr->renderer2);
- if (!lazy) pr_redraw(pr, TRUE);
+ pr->renderer->update_zoom(pr->renderer, lazy);
+ if (pr->renderer2) pr->renderer2->update_zoom(pr->renderer2, lazy);
+// if (!lazy) pr_redraw(pr, TRUE);
}
if (redrawn) *redrawn = (invalidate || invalid);
pr_scroll_clamp(pr);
- /* If the window was not sized, redraw the image - we know there will be no size/expose signal.
- * But even if a size is claimed, there is no guarantee that the window manager will allow it,
- * so redraw the window anyway :/
- */
- if (sized || clamped) pr_border_clear(pr);
-
+#if 0
if (lazy)
{
pr->renderer->queue_clear(pr->renderer);
{
pr_redraw(pr, redrawn);
}
+#endif
+ pr->renderer->update_zoom(pr->renderer, lazy);
+ if (pr->renderer2) pr->renderer2->update_zoom(pr->renderer2, lazy);
pr_scroll_notify_signal(pr);
pr_zoom_signal(pr);
}
}
- pr_border_clear(pr);
-
pr_scroll_notify_signal(pr);
if (zoom_changed) pr_zoom_signal(pr);
pr_update_signal(pr);
}
pr_pixbuf_size_sync(pr);
+ pr->renderer->update_pixbuf(pr->renderer, flags & PR_ZOOM_LAZY);
+ if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, flags & PR_ZOOM_LAZY);
pr_zoom_sync(pr, zoom, flags | PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
}
pr->orientation = orientation;
pr_pixbuf_size_sync(pr);
+ if (0)
+ {
+ pr->renderer->update_pixbuf(pr->renderer, FALSE);
+ if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, FALSE);
+ }
pr_zoom_sync(pr, pr->zoom, PR_ZOOM_FORCE, 0, 0);
+
+ pr->renderer->update_sizes(pr->renderer);
+ if (pr->renderer2) pr->renderer2->update_sizes(pr->renderer2);
}
gint pixbuf_renderer_get_orientation(PixbufRenderer *pr)
pr_stereo_temp_disable(pr, disable);
}
pr_pixbuf_size_sync(pr);
+ pr->renderer->update_pixbuf(pr->renderer, FALSE);
+ if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, FALSE);
pr_zoom_sync(pr, pr->zoom, PR_ZOOM_FORCE, 0, 0);
}
source->source_tiles = NULL;
pr_zoom_sync(pr, source->zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
- pr_redraw(pr, TRUE);
}
else
{
static void pr_stereo_set(PixbufRenderer *pr)
{
- if (!pr->renderer) pr->renderer = (void *)renderer_tiles_new(pr);
+ if (!pr->renderer) pr->renderer = RENDERER_NEW(pr);
pr->renderer->stereo_set(pr->renderer, pr->stereo_mode & ~PR_STEREO_MIRROR_RIGHT & ~PR_STEREO_FLIP_RIGHT);
if (pr->stereo_mode & (PR_STEREO_HORIZ | PR_STEREO_VERT | PR_STEREO_FIXED))
{
- if (!pr->renderer2) pr->renderer2 = (void *)renderer_tiles_new(pr);
+ if (!pr->renderer2) pr->renderer2 = RENDERER_NEW(pr);
pr->renderer2->stereo_set(pr->renderer2, (pr->stereo_mode & ~PR_STEREO_MIRROR_LEFT & ~PR_STEREO_FLIP_LEFT) | PR_STEREO_RIGHT);
}
else
pr->stereo_temp_disable = disable;
if (disable)
{
- if (!pr->renderer) pr->renderer = (void *)renderer_tiles_new(pr);
+ if (!pr->renderer) pr->renderer = RENDERER_NEW(pr);
pr->renderer->stereo_set(pr->renderer, PR_STEREO_NONE);
if (pr->renderer2) pr->renderer2->free(pr->renderer2);
pr->renderer2 = NULL;