X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fpixbuf-renderer.h;h=a0668a929b5f89c3cf186ec498050c4da735c40d;hb=db38d12f83128e9890ce2d2c7acc5ad62062bc7e;hp=46dbe5bfe6cabbb0fe4550ead180056f447ae5c2;hpb=63fdb63ce1470f08c4be2d7a2ff02582c331560e;p=geeqie.git diff --git a/src/pixbuf-renderer.h b/src/pixbuf-renderer.h index 46dbe5bf..a0668a92 100644 --- a/src/pixbuf-renderer.h +++ b/src/pixbuf-renderer.h @@ -1,7 +1,7 @@ /* * Geeqie * (C) 2006 John Ellis - * Copyright (C) 2008 - 2010 The Geeqie Team + * Copyright (C) 2008 - 2012 The Geeqie Team * * Author: John Ellis * @@ -13,10 +13,6 @@ #ifndef PIXBUF_RENDERER_H #define PIXBUF_RENDERER_H -#include -#include - - #define TYPE_PIXBUF_RENDERER (pixbuf_renderer_get_type()) #define PIXBUF_RENDERER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), TYPE_PIXBUF_RENDERER, PixbufRenderer)) #define PIXBUF_RENDERER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), TYPE_PIXBUF_RENDERER, PixbufRendererClass)) @@ -76,19 +72,20 @@ typedef enum { struct _RendererFuncs { - void (*queue)(void *renderer, gint x, gint y, gint w, gint h, - gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing); - void (*queue_clear)(void *renderer); - void (*border_draw)(void *renderer, gint x, gint y, gint w, gint h); - void (*invalidate_all)(void *renderer); +// void (*redraw)(void *renderer, gint x, gint y, gint w, gint h, + // gint clamp, ImageRenderType render, gboolean new_data, gboolean only_existing); + void (*area_changed)(void *renderer, gint src_x, gint src_y, gint src_w, gint src_h); /* pixbuf area changed */ void (*invalidate_region)(void *renderer, gint x, gint y, gint w, gint h); - void (*scroll)(void *renderer, gint x_off, gint y_off); + void (*scroll)(void *renderer, gint x_off, gint y_off); /* scroll */ + void (*update_viewport)(void *renderer); /* window / wiewport / border color has changed */ + void (*update_pixbuf)(void *renderer, gboolean lazy); /* pixbuf has changed */ + void (*update_zoom)(void *renderer, gboolean lazy); /* zoom has changed */ gint (*overlay_add)(void *renderer, GdkPixbuf *pixbuf, gint x, gint y, OverlayRendererFlags flags); void (*overlay_set)(void *renderer, gint id, GdkPixbuf *pixbuf, gint x, gint y); gboolean (*overlay_get)(void *renderer, gint id, GdkPixbuf **pixbuf, gint *x, gint *y); - void (*overlay_update_sizes)(void *renderer); - void (*overlay_draw)(void *renderer, gint x, gint y, gint w, gint h); + + void (*stereo_set)(void *renderer, gint stereo_mode); /* set stereo mode */ void (*free)(void *renderer); }; @@ -99,6 +96,8 @@ struct _PixbufRenderer gint image_width; /* image actual dimensions (pixels) */ gint image_height; + gint stereo_pixbuf_offset_right; /* offset of the right part of the stereo image in pixbuf */ + gint stereo_pixbuf_offset_left; /* offset of the left part of the stereo image in pixbuf */ GdkPixbuf *pixbuf; @@ -110,7 +109,7 @@ struct _PixbufRenderer gint x_offset; /* offset of image start (non-zero when viewport < window) */ gint y_offset; - + gint x_mouse; /* coordinates of the mouse taken from GtkEvent */ gint y_mouse; @@ -125,7 +124,7 @@ struct _PixbufRenderer gdouble norm_center_x; /* coordinates of viewport center in the image, in range 0.0 - 1.0 */ gdouble norm_center_y; /* these coordinates are used for PR_SCROLL_RESET_NOCHANGE and should be preserved over periods with NULL pixbuf */ - + gdouble subpixel_x_scroll; /* subpixel scroll alignment, used to prevent acumulation of rounding errors */ gdouble subpixel_y_scroll; @@ -134,12 +133,12 @@ struct _PixbufRenderer gdouble zoom; /* zoom we want (0 is auto) */ gdouble scale; /* zoom we got (should never be 0) */ + gdouble aspect_ratio; /* screen pixel aspect ratio (2.0 for 3DTV SBS mode) */ + GdkInterpType zoom_quality; gboolean zoom_2pass; gboolean zoom_expand; - GdkRgbDither dither_quality; - PixbufRendererScrollResetType scroll_reset; gboolean has_frame; @@ -193,7 +192,19 @@ struct _PixbufRenderer gint orientation; + gint stereo_mode; + + StereoPixbufData stereo_data; + gboolean stereo_temp_disable; + gint stereo_fixed_width; + gint stereo_fixed_height; + gint stereo_fixed_x_left; + gint stereo_fixed_y_left; + gint stereo_fixed_x_right; + gint stereo_fixed_y_right; + RendererFuncs *renderer; + RendererFuncs *renderer2; }; struct _PixbufRendererClass @@ -224,7 +235,7 @@ GtkWindow *pixbuf_renderer_get_parent(PixbufRenderer *pr); void pixbuf_renderer_set_pixbuf(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom); /* same as pixbuf_renderer_set_pixbuf but waits with redrawing for pixbuf_renderer_area_changed */ -void pixbuf_renderer_set_pixbuf_lazy(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom, gint orientation); +void pixbuf_renderer_set_pixbuf_lazy(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom, gint orientation, StereoPixbufData stereo_data); GdkPixbuf *pixbuf_renderer_get_pixbuf(PixbufRenderer *pr); @@ -232,6 +243,9 @@ GdkPixbuf *pixbuf_renderer_get_pixbuf(PixbufRenderer *pr); void pixbuf_renderer_set_orientation(PixbufRenderer *pr, gint orientation); gint pixbuf_renderer_get_orientation(PixbufRenderer *pr); +/* sets the format of stereo data in the input pixbuf */ +void pixbuf_renderer_set_stereo_data(PixbufRenderer *pr, StereoPixbufData stereo_data); + void pixbuf_renderer_set_post_process_func(PixbufRenderer *pr, PixbufRendererPostProcessFunc func, gpointer user_data, gboolean slow); /* display an on-request array of pixbuf tiles */ @@ -248,6 +262,7 @@ gint pixbuf_renderer_get_tiles(PixbufRenderer *pr); /* move image data from source to pr, source is then set to NULL image */ void pixbuf_renderer_move(PixbufRenderer *pr, PixbufRenderer *source); +void pixbuf_renderer_copy(PixbufRenderer *pr, PixbufRenderer *source); /* update region of existing image */ @@ -303,6 +318,11 @@ gboolean pixbuf_renderer_get_pixel_colors(PixbufRenderer *pr, gint x_pixel, gint void pixbuf_renderer_set_size_early(PixbufRenderer *pr, guint width, guint height); +/* stereo */ +void pixbuf_renderer_stereo_set(PixbufRenderer *pr, gint stereo_mode); +gint pixbuf_renderer_stereo_get(PixbufRenderer *pr); +void pixbuf_renderer_stereo_fixed_set(PixbufRenderer *pr, gint width, gint height, gint x1, gint y1, gint x2, gint y2); + /* protected - for renderer use only*/ typedef struct _SourceTile SourceTile; @@ -339,5 +359,7 @@ void pr_coords_map_orientation_reverse(gint orientation, gint *res_w, gint *res_h); GList *pr_source_tile_compute_region(PixbufRenderer *pr, gint x, gint y, gint w, gint h, gboolean request); + +void pr_create_anaglyph(guint mode, GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h); #endif /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */