annotate src/pixbuf-renderer.c @ 1895:6e3edda945ae

added half-size (3dtv) stereo mode
author Vladimir Nadvornik <nadvornik@suse.cz>
date Sun, 20 Mar 2011 12:49:00 +0100
parents f0412c60e9f6
children 9604c72ac670
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1 /*
196
bdad1cacadf4 rename GQview -> Geeqie over the code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 131
diff changeset
2 * Geeqie
104
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
3 * (C) 2006 John Ellis
1802
359d910c7ce0 added 2010 to copyright text
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1767
diff changeset
4 * Copyright (C) 2008 - 2010 The Geeqie Team
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
5 *
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
6 * Author: John Ellis
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
7 *
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
8 * This software is released under the GNU General Public License (GNU GPL).
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
9 * Please read the included file COPYING for more information.
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
10 * This software comes with no warranty of any kind, use at your own risk!
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
11 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
12
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
13 #include <stdio.h>
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
14 #include <stdlib.h>
507
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
15 #include <string.h>
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
16 #include <math.h>
507
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
17
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
18 #include "main.h"
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
19 #include "pixbuf-renderer.h"
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
20 #include "renderer-tiles.h"
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
21
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
22 #include "intl.h"
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
23 #include "layout.h"
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
24
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
25 #include <gtk/gtk.h>
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
26
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
27
196
bdad1cacadf4 rename GQview -> Geeqie over the code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 131
diff changeset
28 /* comment this out if not using this from within Geeqie
283
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
29 * defining GQ_BUILD does these things:
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
30 * - Sets the shift-click scroller pixbuf to a nice icon instead of a black box
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
31 */
283
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
32 #define GQ_BUILD 1
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
33
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
34 #ifdef GQ_BUILD
507
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
35 #include "main.h"
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
36 #include "pixbuf_util.h"
856
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
37 #include "exif.h"
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
38 #else
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
39 typedef enum {
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
40 EXIF_ORIENTATION_UNKNOWN = 0,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
41 EXIF_ORIENTATION_TOP_LEFT = 1,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
42 EXIF_ORIENTATION_TOP_RIGHT = 2,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
43 EXIF_ORIENTATION_BOTTOM_RIGHT = 3,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
44 EXIF_ORIENTATION_BOTTOM_LEFT = 4,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
45 EXIF_ORIENTATION_LEFT_TOP = 5,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
46 EXIF_ORIENTATION_RIGHT_TOP = 6,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
47 EXIF_ORIENTATION_RIGHT_BOTTOM = 7,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
48 EXIF_ORIENTATION_LEFT_BOTTOM = 8
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
49 } ExifOrientationType;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
50 #endif
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
51
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
52
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
53 /* default min and max zoom */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
54 #define PR_ZOOM_MIN -32.0
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
55 #define PR_ZOOM_MAX 32.0
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
56
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
57 /* distance to drag mouse to disable image flip */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
58 #define PR_DRAG_SCROLL_THRESHHOLD 4
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
59
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
60 /* increase pan rate when holding down shift */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
61 #define PR_PAN_SHIFT_MULTIPLIER 6
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
62
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
63 /* scroller config */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
64 #define PR_SCROLLER_UPDATES_PER_SEC 30
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
65 #define PR_SCROLLER_DEAD_ZONE 6
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
66
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
67 /* when scaling image to below this size, use nearest pixel for scaling
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
68 * (below about 4, the other scale types become slow generating their conversion tables)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
69 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
70 #define PR_MIN_SCALE_SIZE 8
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
71
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
72 enum {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
73 SIGNAL_ZOOM = 0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
74 SIGNAL_CLICKED,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
75 SIGNAL_SCROLL_NOTIFY,
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
76 SIGNAL_RENDER_COMPLETE,
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
77 SIGNAL_DRAG,
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
78 SIGNAL_UPDATE_PIXEL,
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
79 SIGNAL_COUNT
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
80 };
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
81
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
82 enum {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
83 PROP_0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
84 PROP_ZOOM_MIN,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
85 PROP_ZOOM_MAX,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
86 PROP_ZOOM_QUALITY,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
87 PROP_ZOOM_2PASS,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
88 PROP_ZOOM_EXPAND,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
89 PROP_DITHER_QUALITY,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
90 PROP_SCROLL_RESET,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
91 PROP_DELAY_FLIP,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
92 PROP_LOADING,
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
93 PROP_COMPLETE,
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
94 PROP_CACHE_SIZE_DISPLAY,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
95 PROP_CACHE_SIZE_TILES,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
96 PROP_WINDOW_FIT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
97 PROP_WINDOW_LIMIT,
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
98 PROP_WINDOW_LIMIT_VALUE,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
99 PROP_AUTOFIT_LIMIT,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
100 PROP_AUTOFIT_LIMIT_VALUE
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
101 };
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
102
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
103 typedef enum {
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
104 PR_ZOOM_NONE = 0,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
105 PR_ZOOM_FORCE = 1 << 0,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
106 PR_ZOOM_NEW = 1 << 1,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
107 PR_ZOOM_CENTER = 1 << 2,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
108 PR_ZOOM_INVALIDATE = 1 << 3,
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
109 PR_ZOOM_LAZY = 1 << 4 /* wait with redraw for pixbuf_renderer_area_changed */
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
110 } PrZoomFlags;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
111
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
112 static guint signals[SIGNAL_COUNT] = { 0 };
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
113 static GtkEventBoxClass *parent_class = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
114
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
115
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
116
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
117 static void pixbuf_renderer_class_init(PixbufRendererClass *class);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
118 static void pixbuf_renderer_init(PixbufRenderer *pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
119 static void pixbuf_renderer_finalize(GObject *object);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
120 static void pixbuf_renderer_set_property(GObject *object, guint prop_id,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
121 const GValue *value, GParamSpec *pspec);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
122 static void pixbuf_renderer_get_property(GObject *object, guint prop_id,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
123 GValue *value, GParamSpec *pspec);
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
124 static gboolean pixbuf_renderer_expose(GtkWidget *widget, GdkEventExpose *event);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
125
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
126 static void pr_scroller_timer_set(PixbufRenderer *pr, gboolean start);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
127
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
128
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
129 static void pr_source_tile_free_all(PixbufRenderer *pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
130
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
131 static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
132 PrZoomFlags flags, gint px, gint py);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
133
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
134 static void pr_signals_connect(PixbufRenderer *pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
135 static void pr_size_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
136 static void pixbuf_renderer_paint(PixbufRenderer *pr, GdkRectangle *area);
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
137 static void pr_stereo_temp_disable(PixbufRenderer *pr, gboolean disable);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
138
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
139
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
140 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
141 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
142 * Pixbuf Renderer object
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
143 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
144 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
145
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
146 GType pixbuf_renderer_get_type(void)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
147 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
148 static GType pixbuf_renderer_type = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
149
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
150 if (!pixbuf_renderer_type)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
151 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
152 static const GTypeInfo pixbuf_renderer_info =
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
153 {
691
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
154 sizeof(PixbufRendererClass), /* class_size */
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
155 NULL, /* base_init */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
156 NULL, /* base_finalize */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
157 (GClassInitFunc)pixbuf_renderer_class_init,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
158 NULL, /* class_finalize */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
159 NULL, /* class_data */
691
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
160 sizeof(PixbufRenderer), /* instance_size */
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
161 0, /* n_preallocs */
691
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
162 (GInstanceInitFunc)pixbuf_renderer_init, /* instance_init */
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
163 NULL, /* value_table */
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
164 };
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
165
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
166 pixbuf_renderer_type = g_type_register_static(GTK_TYPE_EVENT_BOX, "PixbufRenderer",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
167 &pixbuf_renderer_info, 0);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
168 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
169
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
170 return pixbuf_renderer_type;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
171 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
172
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
173 static void pixbuf_renderer_class_init(PixbufRendererClass *class)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
174 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
175 GObjectClass *gobject_class = G_OBJECT_CLASS(class);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
176 GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(class);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
177
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
178 parent_class = g_type_class_peek_parent(class);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
179
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
180 gobject_class->set_property = pixbuf_renderer_set_property;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
181 gobject_class->get_property = pixbuf_renderer_get_property;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
182
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
183 gobject_class->finalize = pixbuf_renderer_finalize;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
184
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
185 widget_class->expose_event = pixbuf_renderer_expose;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
186
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
187 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
188 PROP_ZOOM_MIN,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
189 g_param_spec_double("zoom_min",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
190 "Zoom minimum",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
191 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
192 -1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
193 1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
194 PR_ZOOM_MIN,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
195 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
196
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
197 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
198 PROP_ZOOM_MAX,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
199 g_param_spec_double("zoom_max",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
200 "Zoom maximum",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
201 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
202 -1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
203 1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
204 PR_ZOOM_MIN,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
205 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
206
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
207 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
208 PROP_ZOOM_QUALITY,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
209 g_param_spec_uint("zoom_quality",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
210 "Zoom quality",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
211 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
212 GDK_INTERP_NEAREST,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
213 GDK_INTERP_HYPER,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
214 GDK_INTERP_BILINEAR,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
215 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
216
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
217 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
218 PROP_ZOOM_2PASS,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
219 g_param_spec_boolean("zoom_2pass",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
220 "2 pass zoom",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
221 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
222 TRUE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
223 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
224
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
225 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
226 PROP_ZOOM_EXPAND,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
227 g_param_spec_boolean("zoom_expand",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
228 "Expand image in autozoom.",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
229 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
230 FALSE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
231 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
232
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
233 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
234 PROP_DITHER_QUALITY,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
235 g_param_spec_uint("dither_quality",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
236 "Dither quality",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
237 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
238 GDK_RGB_DITHER_NONE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
239 GDK_RGB_DITHER_MAX,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
240 GDK_RGB_DITHER_NORMAL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
241 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
242
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
243 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
244 PROP_SCROLL_RESET,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
245 g_param_spec_uint("scroll_reset",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
246 "New image scroll reset",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
247 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
248 PR_SCROLL_RESET_TOPLEFT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
249 PR_SCROLL_RESET_NOCHANGE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
250 PR_SCROLL_RESET_TOPLEFT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
251 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
252
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
253 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
254 PROP_DELAY_FLIP,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
255 g_param_spec_boolean("delay_flip",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
256 "Delay image update",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
257 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
258 FALSE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
259 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
260
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
261 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
262 PROP_LOADING,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
263 g_param_spec_boolean("loading",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
264 "Image actively loading",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
265 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
266 FALSE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
267 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
268
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
269 g_object_class_install_property(gobject_class,
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
270 PROP_COMPLETE,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
271 g_param_spec_boolean("complete",
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
272 "Image rendering complete",
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
273 NULL,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
274 FALSE,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
275 G_PARAM_READABLE | G_PARAM_WRITABLE));
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
276
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
277 g_object_class_install_property(gobject_class,
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
278 PROP_CACHE_SIZE_DISPLAY,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
279 g_param_spec_uint("cache_display",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
280 "Display cache size MB",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
281 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
282 0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
283 128,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
284 PR_CACHE_SIZE_DEFAULT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
285 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
286
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
287 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
288 PROP_CACHE_SIZE_TILES,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
289 g_param_spec_uint("cache_tiles",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
290 "Tile cache count",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
291 "Number of tiles to retain in memory at any one time.",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
292 0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
293 256,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
294 PR_CACHE_SIZE_DEFAULT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
295 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
296
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
297 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
298 PROP_WINDOW_FIT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
299 g_param_spec_boolean("window_fit",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
300 "Fit window to image size",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
301 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
302 FALSE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
303 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
304
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
305 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
306 PROP_WINDOW_LIMIT,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
307 g_param_spec_boolean("window_limit",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
308 "Limit size of parent window",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
309 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
310 FALSE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
311 G_PARAM_READABLE | G_PARAM_WRITABLE));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
312
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
313 g_object_class_install_property(gobject_class,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
314 PROP_WINDOW_LIMIT_VALUE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
315 g_param_spec_uint("window_limit_value",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
316 "Size limit of parent window",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
317 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
318 10,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
319 150,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
320 100,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
321 G_PARAM_READABLE | G_PARAM_WRITABLE));
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
322
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
323 g_object_class_install_property(gobject_class,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
324 PROP_AUTOFIT_LIMIT,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
325 g_param_spec_boolean("autofit_limit",
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
326 "Limit size of image when autofitting",
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
327 NULL,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
328 FALSE,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
329 G_PARAM_READABLE | G_PARAM_WRITABLE));
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
330
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
331 g_object_class_install_property(gobject_class,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
332 PROP_AUTOFIT_LIMIT_VALUE,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
333 g_param_spec_uint("autofit_limit_value",
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
334 "Size limit of image when autofitting",
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
335 NULL,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
336 10,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
337 150,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
338 100,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
339 G_PARAM_READABLE | G_PARAM_WRITABLE));
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
340
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
341
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
342 signals[SIGNAL_ZOOM] =
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
343 g_signal_new("zoom",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
344 G_OBJECT_CLASS_TYPE(gobject_class),
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
345 G_SIGNAL_RUN_LAST,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
346 G_STRUCT_OFFSET(PixbufRendererClass, zoom),
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
347 NULL, NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
348 g_cclosure_marshal_VOID__DOUBLE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
349 G_TYPE_NONE, 1,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
350 G_TYPE_DOUBLE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
351
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
352 signals[SIGNAL_CLICKED] =
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
353 g_signal_new("clicked",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
354 G_OBJECT_CLASS_TYPE(gobject_class),
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
355 G_SIGNAL_RUN_LAST,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
356 G_STRUCT_OFFSET(PixbufRendererClass, clicked),
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
357 NULL, NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
358 g_cclosure_marshal_VOID__BOXED,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
359 G_TYPE_NONE, 1,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
360 GDK_TYPE_EVENT);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
361
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
362 signals[SIGNAL_SCROLL_NOTIFY] =
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
363 g_signal_new("scroll-notify",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
364 G_OBJECT_CLASS_TYPE(gobject_class),
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
365 G_SIGNAL_RUN_LAST,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
366 G_STRUCT_OFFSET(PixbufRendererClass, scroll_notify),
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
367 NULL, NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
368 g_cclosure_marshal_VOID__VOID,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
369 G_TYPE_NONE, 0);
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
370
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
371 signals[SIGNAL_RENDER_COMPLETE] =
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
372 g_signal_new("render-complete",
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
373 G_OBJECT_CLASS_TYPE(gobject_class),
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
374 G_SIGNAL_RUN_LAST,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
375 G_STRUCT_OFFSET(PixbufRendererClass, render_complete),
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
376 NULL, NULL,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
377 g_cclosure_marshal_VOID__VOID,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
378 G_TYPE_NONE, 0);
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
379
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
380 signals[SIGNAL_DRAG] =
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
381 g_signal_new("drag",
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
382 G_OBJECT_CLASS_TYPE(gobject_class),
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
383 G_SIGNAL_RUN_LAST,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
384 G_STRUCT_OFFSET(PixbufRendererClass, drag),
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
385 NULL, NULL,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
386 g_cclosure_marshal_VOID__BOXED,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
387 G_TYPE_NONE, 1,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
388 GDK_TYPE_EVENT);
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
389
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
390 signals[SIGNAL_UPDATE_PIXEL] =
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
391 g_signal_new("update-pixel",
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
392 G_OBJECT_CLASS_TYPE(gobject_class),
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
393 G_SIGNAL_RUN_LAST,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
394 G_STRUCT_OFFSET(PixbufRendererClass, update_pixel),
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
395 NULL, NULL,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
396 g_cclosure_marshal_VOID__VOID,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
397 G_TYPE_NONE, 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
398 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
399
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
400 static void pixbuf_renderer_init(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
401 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
402 GtkWidget *box;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
403
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
404 box = GTK_WIDGET(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
405
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
406 pr->zoom_min = PR_ZOOM_MIN;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
407 pr->zoom_max = PR_ZOOM_MAX;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
408 pr->zoom_quality = GDK_INTERP_BILINEAR;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
409 pr->zoom_2pass = FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
410
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
411 pr->zoom = 1.0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
412 pr->scale = 1.0;
1884
a722f633d90f added mirrored stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1880
diff changeset
413 pr->aspect_ratio = 1.0;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
414
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
415 pr->dither_quality = GDK_RGB_DITHER_NORMAL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
416
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
417 pr->scroll_reset = PR_SCROLL_RESET_TOPLEFT;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
418
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
419 pr->scroller_id = 0;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
420 pr->scroller_overlay = -1;
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
421
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
422 pr->x_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
423 pr->y_mouse = -1;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
424
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
425 pr->source_tiles_enabled = FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
426 pr->source_tiles = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
427
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
428 pr->orientation = 1;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
429
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
430 pr->norm_center_x = 0.5;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
431 pr->norm_center_y = 0.5;
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
432
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
433 pr->stereo_mode = PR_STEREO_NONE;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
434
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
435 pr->renderer = (void *)renderer_tiles_new(pr);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
436
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
437 pr->renderer2 = NULL;
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
438
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
439 gtk_widget_set_double_buffered(box, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
440 g_signal_connect_after(G_OBJECT(box), "size_allocate",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
441 G_CALLBACK(pr_size_cb), pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
442
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
443 pr_signals_connect(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
444 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
445
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
446 static void pixbuf_renderer_finalize(GObject *object)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
447 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
448 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
449
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
450 pr = PIXBUF_RENDERER(object);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
451
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
452 pr->renderer->free(pr->renderer);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
453 if (pr->renderer2) pr->renderer->free(pr->renderer2);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
454
1043
718ab8111f48 Replaced gtk depreceated code.
Petr Ostadal <postadal@suse.cz>
parents: 1037
diff changeset
455
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
456 if (pr->pixbuf) g_object_unref(pr->pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
457
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
458 pr_scroller_timer_set(pr, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
459
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
460 pr_source_tile_free_all(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
461 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
462
1001
a1f0b2010ca1 Consistency: type * instead of type*.
Laurent Monin <geeqie@norz.org>
parents: 1000
diff changeset
463 PixbufRenderer *pixbuf_renderer_new(void)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
464 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
465 return g_object_new(TYPE_PIXBUF_RENDERER, NULL);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
466 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
467
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
468 static void pixbuf_renderer_set_property(GObject *object, guint prop_id,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
469 const GValue *value, GParamSpec *pspec)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
470 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
471 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
472
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
473 pr = PIXBUF_RENDERER(object);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
474
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
475 switch (prop_id)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
476 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
477 case PROP_ZOOM_MIN:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
478 pr->zoom_min = g_value_get_double(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
479 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
480 case PROP_ZOOM_MAX:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
481 pr->zoom_max = g_value_get_double(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
482 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
483 case PROP_ZOOM_QUALITY:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
484 pr->zoom_quality = g_value_get_uint(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
485 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
486 case PROP_ZOOM_2PASS:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
487 pr->zoom_2pass = g_value_get_boolean(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
488 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
489 case PROP_ZOOM_EXPAND:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
490 pr->zoom_expand = g_value_get_boolean(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
491 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
492 case PROP_DITHER_QUALITY:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
493 pr->dither_quality = g_value_get_uint(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
494 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
495 case PROP_SCROLL_RESET:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
496 pr->scroll_reset = g_value_get_uint(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
497 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
498 case PROP_DELAY_FLIP:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
499 pr->delay_flip = g_value_get_boolean(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
500 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
501 case PROP_LOADING:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
502 pr->loading = g_value_get_boolean(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
503 break;
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
504 case PROP_COMPLETE:
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
505 pr->complete = g_value_get_boolean(value);
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
506 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
507 case PROP_CACHE_SIZE_DISPLAY:
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
508 // pr->tile_cache_max = g_value_get_uint(value);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
509 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
510 case PROP_CACHE_SIZE_TILES:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
511 pr->source_tiles_cache_size = g_value_get_uint(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
512 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
513 case PROP_WINDOW_FIT:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
514 pr->window_fit = g_value_get_boolean(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
515 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
516 case PROP_WINDOW_LIMIT:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
517 pr->window_limit = g_value_get_boolean(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
518 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
519 case PROP_WINDOW_LIMIT_VALUE:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
520 pr->window_limit_size = g_value_get_uint(value);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
521 break;
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
522 case PROP_AUTOFIT_LIMIT:
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
523 pr->autofit_limit = g_value_get_boolean(value);
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
524 break;
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
525 case PROP_AUTOFIT_LIMIT_VALUE:
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
526 pr->autofit_limit_size = g_value_get_uint(value);
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
527 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
528 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
529 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
530 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
531 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
532 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
533
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
534 static void pixbuf_renderer_get_property(GObject *object, guint prop_id,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
535 GValue *value, GParamSpec *pspec)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
536 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
537 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
538
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
539 pr = PIXBUF_RENDERER(object);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
540
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
541 switch (prop_id)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
542 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
543 case PROP_ZOOM_MIN:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
544 g_value_set_double(value, pr->zoom_min);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
545 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
546 case PROP_ZOOM_MAX:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
547 g_value_set_double(value, pr->zoom_max);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
548 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
549 case PROP_ZOOM_QUALITY:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
550 g_value_set_uint(value, pr->zoom_quality);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
551 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
552 case PROP_ZOOM_2PASS:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
553 g_value_set_boolean(value, pr->zoom_2pass);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
554 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
555 case PROP_ZOOM_EXPAND:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
556 g_value_set_boolean(value, pr->zoom_expand);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
557 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
558 case PROP_DITHER_QUALITY:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
559 g_value_set_uint(value, pr->dither_quality);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
560 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
561 case PROP_SCROLL_RESET:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
562 g_value_set_uint(value, pr->scroll_reset);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
563 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
564 case PROP_DELAY_FLIP:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
565 g_value_set_boolean(value, pr->delay_flip);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
566 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
567 case PROP_LOADING:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
568 g_value_set_boolean(value, pr->loading);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
569 break;
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
570 case PROP_COMPLETE:
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
571 g_value_set_boolean(value, pr->complete);
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
572 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
573 case PROP_CACHE_SIZE_DISPLAY:
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
574 // g_value_set_uint(value, pr->tile_cache_max);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
575 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
576 case PROP_CACHE_SIZE_TILES:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
577 g_value_set_uint(value, pr->source_tiles_cache_size);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
578 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
579 case PROP_WINDOW_FIT:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
580 g_value_set_boolean(value, pr->window_fit);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
581 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
582 case PROP_WINDOW_LIMIT:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
583 g_value_set_boolean(value, pr->window_limit);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
584 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
585 case PROP_WINDOW_LIMIT_VALUE:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
586 g_value_set_uint(value, pr->window_limit_size);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
587 break;
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
588 case PROP_AUTOFIT_LIMIT:
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
589 g_value_set_boolean(value, pr->autofit_limit);
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
590 break;
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
591 case PROP_AUTOFIT_LIMIT_VALUE:
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
592 g_value_set_uint(value, pr->autofit_limit_size);
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
593 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
594 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
595 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
596 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
597 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
598 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
599
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
600 static gboolean pixbuf_renderer_expose(GtkWidget *widget, GdkEventExpose *event)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
601 {
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
602 #if GTK_CHECK_VERSION(2,20,0)
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
603 if (gtk_widget_is_drawable(widget))
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
604 #else
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
605 if (GTK_WIDGET_DRAWABLE(widget))
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
606 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
607 {
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
608 #if GTK_CHECK_VERSION(2,20,0)
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
609 if (gtk_widget_get_has_window(widget))
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
610 #else
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
611 if (!GTK_WIDGET_NO_WINDOW(widget))
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
612 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
613 {
104
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
614 if (event->window != widget->window)
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
615 {
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
616 GdkRectangle area;
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
617
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
618 gdk_window_get_position(event->window, &area.x, &area.y);
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
619
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
620 area.x += event->area.x;
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
621 area.y += event->area.y;
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
622 area.width = event->area.width;
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
623 area.height = event->area.height;
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
624 pixbuf_renderer_paint(PIXBUF_RENDERER(widget), &area);
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
625 }
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
626 else
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
627 {
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
628 pixbuf_renderer_paint(PIXBUF_RENDERER(widget), &event->area);
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
629 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
630 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
631 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
632
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
633 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
634 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
635
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
636 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
637 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
638 * misc utilities
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
639 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
640 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
641
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
642 static void widget_set_cursor(GtkWidget *widget, gint icon)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
643 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
644 GdkCursor *cursor;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
645
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
646 if (!widget->window) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
647
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
648 if (icon == -1)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
649 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
650 cursor = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
651 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
652 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
653 {
513
6743a5928e09 Remove whitespace between function name and first parenthesis for the sake of consistency. (pass 2)
Laurent Monin <geeqie@norz.org>
parents: 512
diff changeset
654 cursor = gdk_cursor_new(icon);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
655 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
656
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
657 gdk_window_set_cursor(widget->window, cursor);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
658
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
659 if (cursor) gdk_cursor_unref(cursor);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
660 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
661
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
662 gboolean pr_clip_region(gint x, gint y, gint w, gint h,
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
663 gint clip_x, gint clip_y, gint clip_w, gint clip_h,
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
664 gint *rx, gint *ry, gint *rw, gint *rh)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
665 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
666 if (clip_x + clip_w <= x ||
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
667 clip_x >= x + w ||
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
668 clip_y + clip_h <= y ||
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
669 clip_y >= y + h)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
670 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
671 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
672 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
673
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
674 *rx = MAX(x, clip_x);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
675 *rw = MIN((x + w), (clip_x + clip_w)) - *rx;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
676
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
677 *ry = MAX(y, clip_y);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
678 *rh = MIN((y + h), (clip_y + clip_h)) - *ry;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
679
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
680 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
681 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
682
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
683 static gboolean pr_parent_window_sizable(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
684 {
27
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
685 GdkWindowState state;
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
686
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
687 if (!pr->parent_window) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
688 if (!pr->window_fit) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
689 if (!GTK_WIDGET(pr)->window) return FALSE;
27
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
690
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
691 if (!pr->parent_window->window) return FALSE;
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
692 state = gdk_window_get_state(pr->parent_window->window);
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
693 if (state & GDK_WINDOW_STATE_MAXIMIZED) return FALSE;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
694
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
695 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
696 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
697
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
698 static gboolean pr_parent_window_resize(PixbufRenderer *pr, gint w, gint h)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
699 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
700 GtkWidget *widget;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
701 GtkWidget *parent;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
702 gint ww, wh;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
703
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
704 if (!pr_parent_window_sizable(pr)) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
705
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
706 if (pr->window_limit)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
707 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
708 gint sw = gdk_screen_width() * pr->window_limit_size / 100;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
709 gint sh = gdk_screen_height() * pr->window_limit_size / 100;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
710
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
711 if (w > sw) w = sw;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
712 if (h > sh) h = sh;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
713 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
714
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
715 widget = GTK_WIDGET(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
716 parent = GTK_WIDGET(pr->parent_window);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
717
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
718 w += (parent->allocation.width - widget->allocation.width);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
719 h += (parent->allocation.height - widget->allocation.height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
720
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
721 gdk_drawable_get_size(parent->window, &ww, &wh);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
722 if (w == ww && h == wh) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
723
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
724 gdk_window_resize(parent->window, w, h);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
725
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
726 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
727 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
728
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
729 void pixbuf_renderer_set_parent(PixbufRenderer *pr, GtkWindow *window)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
730 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
731 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
732 g_return_if_fail(window == NULL || GTK_IS_WINDOW(window));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
733
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
734 pr->parent_window = GTK_WIDGET(window);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
735 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
736
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
737 GtkWindow *pixbuf_renderer_get_parent(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
738 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
739 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), NULL);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
740
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
741 return GTK_WINDOW(pr->parent_window);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
742 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
743
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
744
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
745 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
746 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
747 * overlays
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
748 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
749 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
750
1373
a8ed5c80e5d3 overlay now survives image split
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
751
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
752 gint pixbuf_renderer_overlay_add(PixbufRenderer *pr, GdkPixbuf *pixbuf, gint x, gint y,
857
8ee324a036ed Use flags instead of int parameters for pixbuf_renderer_overlay_add().
Laurent Monin <geeqie@norz.org>
parents: 856
diff changeset
753 OverlayRendererFlags flags)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
754 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
755 /* let's assume both renderers returns the same value */
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
756 if (pr->renderer2) pr->renderer2->overlay_add(pr->renderer2, pixbuf, x, y, flags);
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
757 return pr->renderer->overlay_add(pr->renderer, pixbuf, x, y, flags);
1373
a8ed5c80e5d3 overlay now survives image split
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
758 }
a8ed5c80e5d3 overlay now survives image split
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
759
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
760 void pixbuf_renderer_overlay_set(PixbufRenderer *pr, gint id, GdkPixbuf *pixbuf, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
761 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
762 pr->renderer->overlay_set(pr->renderer, id, pixbuf, x, y);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
763 if (pr->renderer2) pr->renderer2->overlay_set(pr->renderer2, id, pixbuf, x, y);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
764 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
765
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
766 gboolean pixbuf_renderer_overlay_get(PixbufRenderer *pr, gint id, GdkPixbuf **pixbuf, gint *x, gint *y)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
767 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
768 if (pr->renderer2) pr->renderer2->overlay_get(pr->renderer2, id, pixbuf, x, y);
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
769 return pr->renderer->overlay_get(pr->renderer, id, pixbuf, x, y);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
770 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
771
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
772 void pixbuf_renderer_overlay_remove(PixbufRenderer *pr, gint id)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
773 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
774 pr->renderer->overlay_set(pr->renderer, id, NULL, 0, 0);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
775 if (pr->renderer2) pr->renderer2->overlay_set(pr->renderer2, id, NULL, 0, 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
776 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
777
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
778 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
779 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
780 * scroller overlay
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
781 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
782 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
783
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
784
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
785 static gboolean pr_scroller_update_cb(gpointer data)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
786 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
787 PixbufRenderer *pr = data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
788 gint x, y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
789 gint xinc, yinc;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
790
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
791 /* this was a simple scroll by difference between scroller and mouse position,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
792 * but all this math results in a smoother result and accounts for a dead zone.
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
793 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
794
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
795 if (abs(pr->scroller_xpos - pr->scroller_x) < PR_SCROLLER_DEAD_ZONE)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
796 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
797 x = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
798 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
799 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
800 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
801 gint shift = PR_SCROLLER_DEAD_ZONE / 2 * PR_SCROLLER_UPDATES_PER_SEC;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
802 x = (pr->scroller_xpos - pr->scroller_x) / 2 * PR_SCROLLER_UPDATES_PER_SEC;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
803 x += (x > 0) ? -shift : shift;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
804 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
805
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
806 if (abs(pr->scroller_ypos - pr->scroller_y) < PR_SCROLLER_DEAD_ZONE)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
807 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
808 y = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
809 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
810 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
811 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
812 gint shift = PR_SCROLLER_DEAD_ZONE / 2 * PR_SCROLLER_UPDATES_PER_SEC;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
813 y = (pr->scroller_ypos - pr->scroller_y) / 2 * PR_SCROLLER_UPDATES_PER_SEC;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
814 y += (y > 0) ? -shift : shift;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
815 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
816
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
817 if (abs(x) < PR_SCROLLER_DEAD_ZONE * PR_SCROLLER_UPDATES_PER_SEC)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
818 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
819 xinc = x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
820 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
821 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
822 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
823 xinc = pr->scroller_xinc;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
824
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
825 if (x >= 0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
826 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
827 if (xinc < 0) xinc = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
828 if (x < xinc) xinc = x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
829 if (x > xinc) xinc = MIN(xinc + x / PR_SCROLLER_UPDATES_PER_SEC, x);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
830 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
831 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
832 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
833 if (xinc > 0) xinc = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
834 if (x > xinc) xinc = x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
835 if (x < xinc) xinc = MAX(xinc + x / PR_SCROLLER_UPDATES_PER_SEC, x);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
836 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
837 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
838
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
839 if (abs(y) < PR_SCROLLER_DEAD_ZONE * PR_SCROLLER_UPDATES_PER_SEC)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
840 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
841 yinc = y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
842 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
843 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
844 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
845 yinc = pr->scroller_yinc;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
846
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
847 if (y >= 0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
848 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
849 if (yinc < 0) yinc = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
850 if (y < yinc) yinc = y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
851 if (y > yinc) yinc = MIN(yinc + y / PR_SCROLLER_UPDATES_PER_SEC, y);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
852 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
853 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
854 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
855 if (yinc > 0) yinc = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
856 if (y > yinc) yinc = y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
857 if (y < yinc) yinc = MAX(yinc + y / PR_SCROLLER_UPDATES_PER_SEC, y);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
858 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
859 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
860
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
861 pr->scroller_xinc = xinc;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
862 pr->scroller_yinc = yinc;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
863
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
864 xinc = xinc / PR_SCROLLER_UPDATES_PER_SEC;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
865 yinc = yinc / PR_SCROLLER_UPDATES_PER_SEC;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
866
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
867 pixbuf_renderer_scroll(pr, xinc, yinc);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
868
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
869 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
870 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
871
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
872 static void pr_scroller_timer_set(PixbufRenderer *pr, gboolean start)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
873 {
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
874 if (pr->scroller_id)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
875 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
876 g_source_remove(pr->scroller_id);
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
877 pr->scroller_id = 0;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
878 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
879
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
880 if (start)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
881 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
882 pr->scroller_id = g_timeout_add(1000 / PR_SCROLLER_UPDATES_PER_SEC,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
883 pr_scroller_update_cb, pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
884 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
885 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
886
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
887 static void pr_scroller_start(PixbufRenderer *pr, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
888 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
889 if (pr->scroller_overlay == -1)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
890 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
891 GdkPixbuf *pixbuf;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
892 gint w, h;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
893
283
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
894 #ifdef GQ_BUILD
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
895 pixbuf = pixbuf_inline(PIXBUF_INLINE_SCROLLER);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
896 #else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
897 pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, 32, 32);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
898 gdk_pixbuf_fill(pixbuf, 0x000000ff);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
899 #endif
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
900 w = gdk_pixbuf_get_width(pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
901 h = gdk_pixbuf_get_height(pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
902
857
8ee324a036ed Use flags instead of int parameters for pixbuf_renderer_overlay_add().
Laurent Monin <geeqie@norz.org>
parents: 856
diff changeset
903 pr->scroller_overlay = pixbuf_renderer_overlay_add(pr, pixbuf, x - w / 2, y - h / 2, OVL_NORMAL);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
904 g_object_unref(pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
905 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
906
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
907 pr->scroller_x = x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
908 pr->scroller_y = y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
909 pr->scroller_xpos = x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
910 pr->scroller_ypos = y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
911
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
912 pr_scroller_timer_set(pr, TRUE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
913 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
914
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
915 static void pr_scroller_stop(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
916 {
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
917 if (!pr->scroller_id) return;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
918
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
919 pixbuf_renderer_overlay_remove(pr, pr->scroller_overlay);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
920 pr->scroller_overlay = -1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
921
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
922 pr_scroller_timer_set(pr, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
923 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
924
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
925 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
926 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
927 * borders
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
928 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
929 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
930
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
931 static void pr_border_clear(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
932 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
933 pr->renderer->border_draw(pr->renderer, 0, 0, pr->viewport_width, pr->viewport_height);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
934 if (pr->renderer2) pr->renderer2->border_draw(pr->renderer2, 0, 0, pr->viewport_width, pr->viewport_height);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
935 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
936
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
937 void pixbuf_renderer_set_color(PixbufRenderer *pr, GdkColor *color)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
938 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
939 GtkStyle *style;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
940 GtkWidget *widget;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
941
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
942 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
943
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
944 widget = GTK_WIDGET(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
945
208
d74cfaa3d146 set user-defined color as image background - patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 196
diff changeset
946 if (color) {
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
947 GdkColor *slot;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
948
208
d74cfaa3d146 set user-defined color as image background - patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 196
diff changeset
949 style = gtk_style_copy(gtk_widget_get_style(widget));
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
950 slot = &style->bg[GTK_STATE_NORMAL];
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
951
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
952 slot->red = color->red;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
953 slot->green = color->green;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
954 slot->blue = color->blue;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
955 }
208
d74cfaa3d146 set user-defined color as image background - patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 196
diff changeset
956 else {
d74cfaa3d146 set user-defined color as image background - patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 196
diff changeset
957 style = gtk_style_copy(gtk_widget_get_default_style());
d74cfaa3d146 set user-defined color as image background - patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 196
diff changeset
958 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
959
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
960 gtk_widget_set_style(widget, style);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
961
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
962 #if GTK_CHECK_VERSION(2,20,0)
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
963 if (gtk_widget_get_visible(widget)) pr_border_clear(pr);
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
964 #else
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
965 if (GTK_WIDGET_VISIBLE(widget)) pr_border_clear(pr);
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
966 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
967 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
968
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
969 static void pr_redraw(PixbufRenderer *pr, gboolean new_data)
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
970 {
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
971 pr->renderer->queue_clear(pr->renderer);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
972 pr->renderer->queue(pr->renderer, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
973 if (pr->renderer2) {
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
974 pr->renderer2->queue_clear(pr->renderer2);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
975 pr->renderer2->queue(pr->renderer2, 0, 0, pr->width, pr->height, TRUE, TILE_RENDER_ALL, new_data, FALSE);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
976 }
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
977 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
978
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
979 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
980 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
981 * source tiles
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
982 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
983 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
984
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
985 static void pr_source_tile_free(SourceTile *st)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
986 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
987 if (!st) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
988
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
989 if (st->pixbuf) g_object_unref(st->pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
990 g_free(st);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
991 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
992
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
993 static void pr_source_tile_free_all(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
994 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
995 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
996
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
997 work = pr->source_tiles;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
998 while (work)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
999 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1000 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1001
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1002 st = work->data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1003 work = work->next;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1004
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1005 pr_source_tile_free(st);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1006 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1007
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1008 g_list_free(pr->source_tiles);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1009 pr->source_tiles = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1010 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1011
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1012 static void pr_source_tile_unset(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1013 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1014 pr_source_tile_free_all(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1015 pr->source_tiles_enabled = FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1016 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1017
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1018 static gboolean pr_source_tile_visible(PixbufRenderer *pr, SourceTile *st)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1019 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1020 gint x1, y1, x2, y2;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1021
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1022 if (!st) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1023
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1024 // x1 = ROUND_DOWN(pr->x_scroll, pr->tile_width);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1025 // y1 = ROUND_DOWN(pr->y_scroll, pr->tile_height);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1026 // x2 = ROUND_UP(pr->x_scroll + pr->vis_width, pr->tile_width);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1027 // y2 = ROUND_UP(pr->y_scroll + pr->vis_height, pr->tile_height);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1028 x1 = pr->x_scroll;
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1029 y1 = pr->y_scroll;
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1030 x2 = pr->x_scroll + pr->vis_width;
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1031 y2 = pr->y_scroll + pr->vis_height;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1032
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1033 return !((gdouble)st->x * pr->scale > (gdouble)x2 ||
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1034 (gdouble)(st->x + pr->source_tile_width) * pr->scale < (gdouble)x1 ||
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1035 (gdouble)st->y * pr->scale > (gdouble)y2 ||
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1036 (gdouble)(st->y + pr->source_tile_height) * pr->scale < (gdouble)y1);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1037 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1038
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1039 static SourceTile *pr_source_tile_new(PixbufRenderer *pr, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1040 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1041 SourceTile *st = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1042 gint count;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1043
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1044 g_return_val_if_fail(pr->source_tile_width >= 1 && pr->source_tile_height >= 1, NULL);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1045
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1046 if (pr->source_tiles_cache_size < 4) pr->source_tiles_cache_size = 4;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1047
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1048 count = g_list_length(pr->source_tiles);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1049 if (count >= pr->source_tiles_cache_size)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1050 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1051 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1052
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1053 work = g_list_last(pr->source_tiles);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1054 while (work && count >= pr->source_tiles_cache_size)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1055 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1056 SourceTile *needle;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1057
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1058 needle = work->data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1059 work = work->prev;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1060
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1061 if (!pr_source_tile_visible(pr, needle))
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1062 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1063 pr->source_tiles = g_list_remove(pr->source_tiles, needle);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1064
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1065 if (pr->func_tile_dispose)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1066 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1067 pr->func_tile_dispose(pr, needle->x, needle->y,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1068 pr->source_tile_width, pr->source_tile_height,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1069 needle->pixbuf, pr->func_tile_data);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1070 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1071
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1072 if (!st)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1073 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1074 st = needle;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1075 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1076 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1077 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1078 pr_source_tile_free(needle);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1079 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1080
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1081 count--;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1082 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1083 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1084 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1085
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1086 if (!st)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1087 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1088 st = g_new0(SourceTile, 1);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1089 st->pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1090 pr->source_tile_width, pr->source_tile_height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1091 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1092
1649
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1093 st->x = ROUND_DOWN(x, pr->source_tile_width);
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1094 st->y = ROUND_DOWN(y, pr->source_tile_height);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1095 st->blank = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1096
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1097 pr->source_tiles = g_list_prepend(pr->source_tiles, st);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1098
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1099 return st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1100 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1101
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1102 static SourceTile *pr_source_tile_request(PixbufRenderer *pr, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1103 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1104 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1105
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1106 st = pr_source_tile_new(pr, x, y);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1107 if (!st) return NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1108
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1109 if (pr->func_tile_request &&
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1110 pr->func_tile_request(pr, st->x, st->y,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1111 pr->source_tile_width, pr->source_tile_height, st->pixbuf, pr->func_tile_data))
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1112 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1113 st->blank = FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1114 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1115
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1116 pr->renderer->invalidate_region(pr->renderer, st->x * pr->scale, st->y * pr->scale,
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1117 pr->source_tile_width * pr->scale, pr->source_tile_height * pr->scale);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1118 if (pr->renderer2) pr->renderer2->invalidate_region(pr->renderer2, st->x * pr->scale, st->y * pr->scale,
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1119 pr->source_tile_width * pr->scale, pr->source_tile_height * pr->scale);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1120 return st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1121 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1122
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1123 static SourceTile *pr_source_tile_find(PixbufRenderer *pr, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1124 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1125 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1126
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1127 work = pr->source_tiles;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1128 while (work)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1129 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1130 SourceTile *st = work->data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1131
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1132 if (x >= st->x && x < st->x + pr->source_tile_width &&
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1133 y >= st->y && y < st->y + pr->source_tile_height)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1134 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1135 if (work != pr->source_tiles)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1136 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1137 pr->source_tiles = g_list_remove_link(pr->source_tiles, work);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1138 pr->source_tiles = g_list_concat(work, pr->source_tiles);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1139 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1140 return st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1141 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1142
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1143 work = work->next;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1144 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1145
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1146 return NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1147 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1148
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1149 GList *pr_source_tile_compute_region(PixbufRenderer *pr, gint x, gint y, gint w, gint h, gboolean request)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1150 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1151 gint x1, y1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1152 GList *list = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1153 gint sx, sy;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1154
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1155 if (x < 0) x = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1156 if (y < 0) y = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1157 if (w > pr->image_width) w = pr->image_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1158 if (h > pr->image_height) h = pr->image_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1159
1649
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1160 sx = ROUND_DOWN(x, pr->source_tile_width);
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1161 sy = ROUND_DOWN(y, pr->source_tile_height);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1162
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1163 for (x1 = sx; x1 < x + w; x1+= pr->source_tile_width)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1164 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1165 for (y1 = sy; y1 < y + h; y1 += pr->source_tile_height)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1166 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1167 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1168
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1169 st = pr_source_tile_find(pr, x1, y1);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1170 if (!st && request) st = pr_source_tile_request(pr, x1, y1);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1171
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1172 if (st) list = g_list_prepend(list, st);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1173 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1174 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1175
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1176 return g_list_reverse(list);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1177 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1178
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1179 static void pr_source_tile_changed(PixbufRenderer *pr, gint x, gint y, gint width, gint height)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1180 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1181 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1182
95
e103e1c85665 Fri Nov 3 11:40:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 87
diff changeset
1183 if (width < 1 || height < 1) return;
e103e1c85665 Fri Nov 3 11:40:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 87
diff changeset
1184
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1185 work = pr->source_tiles;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1186 while (work)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1187 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1188 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1189 gint rx, ry, rw, rh;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1190
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1191 st = work->data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1192 work = work->next;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1193
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 32
diff changeset
1194 if (pr_clip_region(st->x, st->y, pr->source_tile_width, pr->source_tile_height,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 32
diff changeset
1195 x, y, width, height,
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 32
diff changeset
1196 &rx, &ry, &rw, &rh))
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1197 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1198 GdkPixbuf *pixbuf;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1199
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1200 pixbuf = gdk_pixbuf_new_subpixbuf(st->pixbuf, rx - st->x, ry - st->y, rw, rh);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1201 if (pr->func_tile_request &&
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1202 pr->func_tile_request(pr, rx, ry, rw, rh, pixbuf, pr->func_tile_data))
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1203 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1204 pr->renderer->invalidate_region(pr->renderer, rx * pr->scale, ry * pr->scale,
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1205 rw * pr->scale, rh * pr->scale);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1206 if (pr->renderer2) pr->renderer2->invalidate_region(pr->renderer2, rx * pr->scale, ry * pr->scale,
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1207 rw * pr->scale, rh * pr->scale);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1208 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1209 g_object_unref(pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1210 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1211 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1212 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1213
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1214 void pixbuf_renderer_set_tiles(PixbufRenderer *pr, gint width, gint height,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1215 gint tile_width, gint tile_height, gint cache_size,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1216 PixbufRendererTileRequestFunc func_request,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1217 PixbufRendererTileDisposeFunc func_dispose,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1218 gpointer user_data,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1219 gdouble zoom)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1220 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1221 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1222 g_return_if_fail(tile_width >= 32 && tile_width >= 32);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1223 g_return_if_fail(width >= 32 && height > 32);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1224 g_return_if_fail(func_request != NULL);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1225
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1226 if (pr->pixbuf) g_object_unref(pr->pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1227 pr->pixbuf = NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1228
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1229 pr_source_tile_unset(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1230
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1231 if (cache_size < 4) cache_size = 4;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1232
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1233 pr->source_tiles_enabled = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1234 pr->source_tiles_cache_size = cache_size;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1235 pr->source_tile_width = tile_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1236 pr->source_tile_height = tile_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1237
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1238 pr->image_width = width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1239 pr->image_height = height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1240
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1241 pr->func_tile_request = func_request;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1242 pr->func_tile_dispose = func_dispose;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1243 pr->func_tile_data = user_data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1244
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1245 pr_zoom_sync(pr, zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1246 pr_redraw(pr, TRUE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1247 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1248
77
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1249 void pixbuf_renderer_set_tiles_size(PixbufRenderer *pr, gint width, gint height)
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1250 {
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1251 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1252 g_return_if_fail(width >= 32 && height > 32);
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1253
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1254 if (!pr->source_tiles_enabled) return;
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1255 if (pr->image_width == width && pr->image_height == height) return;
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1256
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1257 pr->image_width = width;
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1258 pr->image_height = height;
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1259
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1260 pr_zoom_sync(pr, pr->zoom, PR_ZOOM_FORCE, 0, 0);
77
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1261 }
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1262
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1263 gint pixbuf_renderer_get_tiles(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1264 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1265 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1266
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1267 return pr->source_tiles_enabled;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1268 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1269
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1270 static void pr_zoom_adjust_real(PixbufRenderer *pr, gdouble increment,
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1271 PrZoomFlags flags, gint x, gint y)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1272 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1273 gdouble zoom = pr->zoom;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1274
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1275 if (increment == 0.0) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1276
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1277 if (zoom == 0.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1278 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1279 if (pr->scale < 1.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1280 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1281 zoom = 0.0 - 1.0 / pr->scale;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1282 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1283 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1284 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1285 zoom = pr->scale;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1286 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1287 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1288
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1289 if (increment < 0.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1290 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1291 if (zoom >= 1.0 && zoom + increment < 1.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1292 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1293 zoom = zoom + increment - 2.0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1294 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1295 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1296 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1297 zoom = zoom + increment;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1298 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1299 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1300 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1301 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1302 if (zoom <= -1.0 && zoom + increment > -1.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1303 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1304 zoom = zoom + increment + 2.0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1305 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1306 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1307 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1308 zoom = zoom + increment;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1309 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1310 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1311
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1312 pr_zoom_sync(pr, zoom, flags, x, y);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1313 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1314
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1315
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1316 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1317 *-------------------------------------------------------------------
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1318 * signal emission
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1319 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1320 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1321
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1322 static void pr_update_signal(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1323 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1324 #if 0
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1325 log_printf("FIXME: send updated signal\n");
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1326 #endif
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1327 DEBUG_1("%s pixbuf renderer updated - started drawing %p, img: %dx%d", get_exec_time(), pr, pr->image_width, pr->image_height);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1328 pr->debug_updated = TRUE;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1329 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1330
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1331 static void pr_zoom_signal(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1332 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1333 g_signal_emit(pr, signals[SIGNAL_ZOOM], 0, pr->zoom);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1334 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1335
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1336 static void pr_clicked_signal(PixbufRenderer *pr, GdkEventButton *bevent)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1337 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1338 g_signal_emit(pr, signals[SIGNAL_CLICKED], 0, bevent);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1339 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1340
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1341 static void pr_scroll_notify_signal(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1342 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1343 g_signal_emit(pr, signals[SIGNAL_SCROLL_NOTIFY], 0);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1344 }
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1345
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1346 void pr_render_complete_signal(PixbufRenderer *pr)
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1347 {
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1348 if (!pr->complete)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1349 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1350 g_signal_emit(pr, signals[SIGNAL_RENDER_COMPLETE], 0);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1351 g_object_set(G_OBJECT(pr), "complete", TRUE, NULL);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1352 }
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1353 if (pr->debug_updated)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1354 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1355 DEBUG_1("%s pixbuf renderer done %p", get_exec_time(), pr);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1356 pr->debug_updated = FALSE;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1357 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1358 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1359
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1360 static void pr_drag_signal(PixbufRenderer *pr, GdkEventButton *bevent)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1361 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1362 g_signal_emit(pr, signals[SIGNAL_DRAG], 0, bevent);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1363 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1364
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1365 static void pr_update_pixel_signal(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1366 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1367 g_signal_emit(pr, signals[SIGNAL_UPDATE_PIXEL], 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1368 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1369
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1370 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1371 *-------------------------------------------------------------------
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1372 * sync and clamp
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1373 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1374 */
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1375
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1376
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1377 void pr_tile_coords_map_orientation(gint orientation,
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1378 gdouble tile_x, gdouble tile_y, /* coordinates of the tile */
1633
b8b957cb1387 swap x and y scale when scaling rotated images - it fixes tiles that were
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1617
diff changeset
1379 gdouble image_w, gdouble image_h,
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1380 gdouble tile_w, gdouble tile_h,
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1381 gdouble *res_x, gdouble *res_y)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1382 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1383 *res_x = tile_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1384 *res_y = tile_y;
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1385 switch (orientation)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1386 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1387 case EXIF_ORIENTATION_TOP_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1388 /* normal -- nothing to do */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1389 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1390 case EXIF_ORIENTATION_TOP_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1391 /* mirrored */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1392 *res_x = image_w - tile_x - tile_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1393 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1394 case EXIF_ORIENTATION_BOTTOM_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1395 /* upside down */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1396 *res_x = image_w - tile_x - tile_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1397 *res_y = image_h - tile_y - tile_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1398 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1399 case EXIF_ORIENTATION_BOTTOM_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1400 /* flipped */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1401 *res_y = image_h - tile_y - tile_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1402 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1403 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1404 *res_x = tile_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1405 *res_y = tile_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1406 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1407 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1408 /* rotated -90 (270) */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1409 *res_x = tile_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1410 *res_y = image_w - tile_x - tile_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1411 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1412 case EXIF_ORIENTATION_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1413 *res_x = image_h - tile_y - tile_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1414 *res_y = image_w - tile_x - tile_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1415 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1416 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1417 /* rotated 90 */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1418 *res_x = image_h - tile_y - tile_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1419 *res_y = tile_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1420 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1421 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1422 /* The other values are out of range */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1423 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1424 }
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
1425 // log_printf("tile coord y:%f, ih:%d, th:%f ry:%f\n", tile_y, image_h, tile_h, *res_x);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1426 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1427
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1428 void pr_tile_region_map_orientation(gint orientation,
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1429 gint area_x, gint area_y, /* coordinates of the area inside tile */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1430 gint tile_w, gint tile_h,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1431 gint area_w, gint area_h,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1432 gint *res_x, gint *res_y,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1433 gint *res_w, gint *res_h)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1434 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1435 *res_x = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1436 *res_y = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1437 *res_w = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1438 *res_h = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1439
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1440 switch (orientation)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1441 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1442 case EXIF_ORIENTATION_TOP_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1443 /* normal -- nothing to do */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1444 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1445 case EXIF_ORIENTATION_TOP_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1446 /* mirrored */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1447 *res_x = tile_w - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1448 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1449 case EXIF_ORIENTATION_BOTTOM_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1450 /* upside down */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1451 *res_x = tile_w - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1452 *res_y = tile_h - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1453 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1454 case EXIF_ORIENTATION_BOTTOM_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1455 /* flipped */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1456 *res_y = tile_h - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1457 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1458 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1459 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1460 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1461 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1462 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1463 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1464 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1465 /* rotated -90 (270) */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1466 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1467 *res_y = tile_w - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1468 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1469 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1470 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1471 case EXIF_ORIENTATION_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1472 *res_x = tile_h - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1473 *res_y = tile_w - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1474 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1475 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1476 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1477 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1478 /* rotated 90 */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1479 *res_x = tile_h - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1480 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1481 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1482 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1483 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1484 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1485 /* The other values are out of range */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1486 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1487 }
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
1488 // log_printf("inside y:%d, th:%d, ah:%d ry:%d\n", area_y, tile_h, area_h, *res_x);
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1489 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1490
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1491 void pr_coords_map_orientation_reverse(gint orientation,
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1492 gint area_x, gint area_y,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1493 gint tile_w, gint tile_h,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1494 gint area_w, gint area_h,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1495 gint *res_x, gint *res_y,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1496 gint *res_w, gint *res_h)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1497 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1498 *res_x = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1499 *res_y = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1500 *res_w = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1501 *res_h = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1502
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1503 switch (orientation)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1504 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1505 case EXIF_ORIENTATION_TOP_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1506 /* normal -- nothing to do */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1507 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1508 case EXIF_ORIENTATION_TOP_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1509 /* mirrored */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1510 *res_x = tile_w - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1511 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1512 case EXIF_ORIENTATION_BOTTOM_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1513 /* upside down */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1514 *res_x = tile_w - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1515 *res_y = tile_h - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1516 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1517 case EXIF_ORIENTATION_BOTTOM_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1518 /* flipped */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1519 *res_y = tile_h - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1520 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1521 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1522 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1523 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1524 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1525 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1526 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1527 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1528 /* rotated -90 (270) */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1529 *res_x = tile_w - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1530 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1531 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1532 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1533 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1534 case EXIF_ORIENTATION_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1535 *res_x = tile_w - area_y - area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1536 *res_y = tile_h - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1537 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1538 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1539 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1540 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1541 /* rotated 90 */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1542 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1543 *res_y = tile_h - area_x - area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1544 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1545 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1546 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1547 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1548 /* The other values are out of range */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1549 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1550 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1551 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1552
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1553
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1554
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1555 static void pixbuf_renderer_sync_scroll_center(PixbufRenderer *pr)
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1556 {
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1557 gint src_x, src_y;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1558 if (!pr->width || !pr->height) return;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1559
1617
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1560 /*
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1561 * Update norm_center only if the image is bigger than the window.
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1562 * With this condition the stored center survives also a temporary display
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1563 * of the "broken image" icon.
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1564 */
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1565
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1566 if (pr->width > pr->viewport_width)
1617
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1567 {
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1568 src_x = pr->x_scroll + pr->vis_width / 2;
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1569 pr->norm_center_x = (gdouble)src_x / pr->width;
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1570 }
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1571
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1572 if (pr->height > pr->viewport_height)
1617
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1573 {
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1574 src_y = pr->y_scroll + pr->vis_height / 2;
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1575 pr->norm_center_y = (gdouble)src_y / pr->height;
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1576 }
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1577 }
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1578
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1579
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1580 static gboolean pr_scroll_clamp(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1581 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1582 gint old_xs;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1583 gint old_ys;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1584
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1585 if (pr->zoom == 0.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1586 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1587 pr->x_scroll = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1588 pr->y_scroll = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1589
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1590 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1591 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1592
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1593 old_xs = pr->x_scroll;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1594 old_ys = pr->y_scroll;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1595
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1596 if (pr->x_offset > 0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1597 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1598 pr->x_scroll = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1599 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1600 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1601 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1602 pr->x_scroll = CLAMP(pr->x_scroll, 0, pr->width - pr->vis_width);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1603 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1604
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1605 if (pr->y_offset > 0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1606 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1607 pr->y_scroll = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1608 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1609 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1610 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1611 pr->y_scroll = CLAMP(pr->y_scroll, 0, pr->height - pr->vis_height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1612 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1613
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1614 pixbuf_renderer_sync_scroll_center(pr);
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1615
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1616 return (old_xs != pr->x_scroll || old_ys != pr->y_scroll);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1617 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1618
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1619 static gboolean pr_size_clamp(PixbufRenderer *pr)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1620 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1621 gint old_vw, old_vh;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1622
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1623 old_vw = pr->vis_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1624 old_vh = pr->vis_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1625
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1626 if (pr->width < pr->viewport_width)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1627 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1628 pr->vis_width = pr->width;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1629 pr->x_offset = (pr->viewport_width - pr->width) / 2;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1630 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1631 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1632 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1633 pr->vis_width = pr->viewport_width;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1634 pr->x_offset = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1635 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1636
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1637 if (pr->height < pr->viewport_height)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1638 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1639 pr->vis_height = pr->height;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1640 pr->y_offset = (pr->viewport_height - pr->height) / 2;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1641 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1642 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1643 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1644 pr->vis_height = pr->viewport_height;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1645 pr->y_offset = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1646 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1647
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1648 pixbuf_renderer_sync_scroll_center(pr);
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1649
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1650 return (old_vw != pr->vis_width || old_vh != pr->vis_height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1651 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1652
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1653 static gboolean pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom,
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1654 PrZoomFlags flags, gboolean *redrawn)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1655 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1656 gint w, h;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1657 gdouble scale;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1658 gboolean invalid;
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1659 gboolean force = !!(flags & PR_ZOOM_FORCE);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1660 gboolean new = !!(flags & PR_ZOOM_NEW);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1661 gboolean invalidate = !!(flags & PR_ZOOM_INVALIDATE);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1662 gboolean lazy = !!(flags & PR_ZOOM_LAZY);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1663
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1664 zoom = CLAMP(zoom, pr->zoom_min, pr->zoom_max);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1665
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1666 if (pr->zoom == zoom && !force) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1667
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1668 w = pr->image_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1669 h = pr->image_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1670
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1671 if (zoom == 0.0 && !pr->pixbuf)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1672 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1673 scale = 1.0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1674 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1675 else if (zoom == 0.0)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1676 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1677 gint max_w;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1678 gint max_h;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1679 gboolean sizeable;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1680
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1681 sizeable = (new && pr_parent_window_sizable(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1682
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1683 if (sizeable)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1684 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1685 max_w = gdk_screen_width();
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1686 max_h = gdk_screen_height();
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1687
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1688 if (pr->window_limit)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1689 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1690 max_w = max_w * pr->window_limit_size / 100;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1691 max_h = max_h * pr->window_limit_size / 100;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1692 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1693 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1694 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1695 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1696 max_w = pr->viewport_width;
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1697 max_h = pr->viewport_height;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1698 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1699
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1700 if ((pr->zoom_expand && !sizeable) || w > max_w || h > max_h)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1701 {
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1702 if ((gdouble)max_w / w > (gdouble)max_h / h / pr->aspect_ratio)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1703 {
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1704 scale = (gdouble)max_h / h / pr->aspect_ratio;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1705 h = max_h;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1706 w = w * scale + 0.5;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1707 if (w > max_w) w = max_w;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1708 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1709 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1710 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1711 scale = (gdouble)max_w / w;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1712 w = max_w;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1713 h = h * scale * pr->aspect_ratio + 0.5;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1714 if (h > max_h) h = max_h;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1715 }
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
1716
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
1717 if (pr->autofit_limit)
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
1718 {
336
d0783e36320c Fix display bug when using "Limit image size when autofitting" option.
Laurent Monin <geeqie@norz.org>
parents: 283
diff changeset
1719 gdouble factor = (gdouble)pr->autofit_limit_size / 100;
d0783e36320c Fix display bug when using "Limit image size when autofitting" option.
Laurent Monin <geeqie@norz.org>
parents: 283
diff changeset
1720 w = w * factor + 0.5;
d0783e36320c Fix display bug when using "Limit image size when autofitting" option.
Laurent Monin <geeqie@norz.org>
parents: 283
diff changeset
1721 h = h * factor + 0.5;
d0783e36320c Fix display bug when using "Limit image size when autofitting" option.
Laurent Monin <geeqie@norz.org>
parents: 283
diff changeset
1722 scale = scale * factor;
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
1723 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1724
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1725 if (w < 1) w = 1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1726 if (h < 1) h = 1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1727 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1728 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1729 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1730 scale = 1.0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1731 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1732 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1733 else if (zoom > 0.0) /* zoom orig, in */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1734 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1735 scale = zoom;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1736 w = w * scale;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1737 h = h * scale * pr->aspect_ratio;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1738 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1739 else /* zoom out */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1740 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1741 scale = 1.0 / (0.0 - zoom);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1742 w = w * scale;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1743 h = h * scale * pr->aspect_ratio;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1744 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1745
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1746 invalid = (pr->width != w || pr->height != h);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1747
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1748 pr->zoom = zoom;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1749 pr->width = w;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1750 pr->height = h;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1751 pr->scale = scale;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1752
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1753 if (invalidate || invalid)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1754 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1755 pr->renderer->invalidate_all(pr->renderer);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1756 if (pr->renderer2) pr->renderer2->invalidate_all(pr->renderer2);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1757 if (!lazy) pr_redraw(pr, TRUE);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1758 }
27
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
1759 if (redrawn) *redrawn = (invalidate || invalid);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1760
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1761 pixbuf_renderer_sync_scroll_center(pr);
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1762
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1763 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1764 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1765
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1766 static void pr_zoom_sync(PixbufRenderer *pr, gdouble zoom,
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1767 PrZoomFlags flags, gint px, gint py)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1768 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1769 gdouble old_scale;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1770 gint old_cx, old_cy;
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1771 gboolean clamped;
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1772 gboolean sized;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1773 gboolean redrawn = FALSE;
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1774 gboolean center_point = !!(flags & PR_ZOOM_CENTER);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1775 gboolean force = !!(flags & PR_ZOOM_FORCE);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1776 gboolean new = !!(flags & PR_ZOOM_NEW);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1777 gboolean lazy = !!(flags & PR_ZOOM_LAZY);
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1778 PrZoomFlags clamp_flags = flags;
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1779 gdouble old_center_x = pr->norm_center_x;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1780 gdouble old_center_y = pr->norm_center_y;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1781
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1782 old_scale = pr->scale;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1783 if (center_point)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1784 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1785 px = CLAMP(px, 0, pr->width);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1786 py = CLAMP(py, 0, pr->height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1787 old_cx = pr->x_scroll + (px - pr->x_offset);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1788 old_cy = pr->y_scroll + (py - pr->y_offset);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1789 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1790 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1791 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1792 px = py = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1793 old_cx = pr->x_scroll + pr->vis_width / 2;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1794 old_cy = pr->y_scroll + pr->vis_height / 2;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1795 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1796
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1797 if (force) clamp_flags |= PR_ZOOM_INVALIDATE;
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1798 if (lazy) clamp_flags |= PR_ZOOM_LAZY;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1799 if (!pr_zoom_clamp(pr, zoom, clamp_flags, &redrawn)) return;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1800
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1801 clamped = pr_size_clamp(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1802 sized = pr_parent_window_resize(pr, pr->width, pr->height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1803
99
7cd2368ecc9d Sat Nov 4 17:14:47 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 95
diff changeset
1804 if (force && new)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1805 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1806 switch (pr->scroll_reset)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1807 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1808 case PR_SCROLL_RESET_NOCHANGE:
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1809 /* maintain old scroll position */
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1810 pr->x_scroll = ((gdouble)pr->image_width * old_center_x * pr->scale) - pr->vis_width / 2;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1811 pr->y_scroll = ((gdouble)pr->image_height * old_center_y * pr->scale * pr->aspect_ratio) - pr->vis_height / 2;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1812 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1813 case PR_SCROLL_RESET_CENTER:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1814 /* center new image */
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1815 pr->x_scroll = ((gdouble)pr->image_width / 2.0 * pr->scale) - pr->vis_width / 2;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1816 pr->y_scroll = ((gdouble)pr->image_height / 2.0 * pr->scale * pr->aspect_ratio) - pr->vis_height / 2;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1817 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1818 case PR_SCROLL_RESET_TOPLEFT:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1819 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1820 /* reset to upper left */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1821 pr->x_scroll = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1822 pr->y_scroll = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1823 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1824 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1825 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1826 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1827 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1828 /* user zoom does not force, so keep visible center point */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1829 if (center_point)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1830 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1831 pr->x_scroll = old_cx / old_scale * pr->scale - (px - pr->x_offset);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1832 pr->y_scroll = old_cy / old_scale * pr->scale * pr->aspect_ratio - (py - pr->y_offset);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1833 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1834 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1835 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1836 pr->x_scroll = old_cx / old_scale * pr->scale - (pr->vis_width / 2);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1837 pr->y_scroll = old_cy / old_scale * pr->scale * pr->aspect_ratio - (pr->vis_height / 2);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1838 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1839 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1840
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1841 pr_scroll_clamp(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1842
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1843 /* If the window was not sized, redraw the image - we know there will be no size/expose signal.
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1844 * But even if a size is claimed, there is no guarantee that the window manager will allow it,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1845 * so redraw the window anyway :/
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1846 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1847 if (sized || clamped) pr_border_clear(pr);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1848
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1849 if (lazy)
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1850 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1851 pr->renderer->queue_clear(pr->renderer);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1852 if (pr->renderer2) pr->renderer2->queue_clear(pr->renderer2);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1853 }
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1854 else
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1855 {
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1856 pr_redraw(pr, redrawn);
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
1857 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1858
29
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
1859 pr_scroll_notify_signal(pr);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1860 pr_zoom_signal(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1861 pr_update_signal(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1862 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1863
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1864 static void pr_size_sync(PixbufRenderer *pr, gint new_width, gint new_height)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1865 {
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1866 gboolean zoom_changed = FALSE;
61
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1867
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1868 gint new_viewport_width = new_width;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1869 gint new_viewport_height = new_height;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1870
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1871 if (!pr->stereo_temp_disable)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1872 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1873 if (pr->stereo_mode & PR_STEREO_HORIZ)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1874 {
1894
f0412c60e9f6 fixed sbs mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1891
diff changeset
1875 new_viewport_width = new_width / 2;
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1876 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1877 else if (pr->stereo_mode & PR_STEREO_VERT)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1878 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1879 new_viewport_height = new_height / 2;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1880 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1881 else if (pr->stereo_mode & PR_STEREO_FIXED)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1882 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1883 new_viewport_width = pr->stereo_fixed_width;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1884 new_viewport_height = pr->stereo_fixed_height;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1885 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1886 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1887
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1888 if (pr->window_width == new_width && pr->window_height == new_height &&
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1889 pr->viewport_width == new_viewport_width && pr->viewport_height == new_viewport_height) return;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1890
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1891 pr->window_width = new_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1892 pr->window_height = new_height;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1893 pr->viewport_width = new_viewport_width;
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1894 pr->viewport_height = new_viewport_height;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1895
61
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1896 if (pr->zoom == 0.0)
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1897 {
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1898 gdouble old_scale = pr->scale;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1899 pr_zoom_clamp(pr, 0.0, PR_ZOOM_FORCE, NULL);
61
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1900 zoom_changed = (old_scale != pr->scale);
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1901 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1902
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1903 pr_size_clamp(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1904 pr_scroll_clamp(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1905
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1906 pr->renderer->update_sizes(pr->renderer);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1907 if (pr->renderer2) pr->renderer2->update_sizes(pr->renderer2);
104
6dd9a2f78053 Wed Nov 8 16:59:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 99
diff changeset
1908
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1909 /* ensure scroller remains visible */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1910 if (pr->scroller_overlay != -1)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1911 {
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1912 gboolean update = FALSE;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1913
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1914 if (pr->scroller_x > new_width)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1915 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1916 pr->scroller_x = new_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1917 pr->scroller_xpos = new_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1918 update = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1919 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1920 if (pr->scroller_y > new_height)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1921 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1922 pr->scroller_y = new_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1923 pr->scroller_ypos = new_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1924 update = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1925 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1926
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1927 if (update)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1928 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1929 GdkPixbuf *pixbuf;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1930
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1931 if (pixbuf_renderer_overlay_get(pr, pr->scroller_overlay, &pixbuf, NULL, NULL))
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1932 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1933 gint w, h;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1934
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1935 w = gdk_pixbuf_get_width(pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1936 h = gdk_pixbuf_get_height(pixbuf);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1937 pixbuf_renderer_overlay_set(pr, pr->scroller_overlay, pixbuf,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1938 pr->scroller_x - w / 2, pr->scroller_y - h / 2);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1939 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1940 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1941 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1942
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1943 pr_border_clear(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1944
29
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
1945 pr_scroll_notify_signal(pr);
61
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1946 if (zoom_changed) pr_zoom_signal(pr);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1947 pr_update_signal(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1948 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1949
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1950 static void pr_size_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1951 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1952 PixbufRenderer *pr = data;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1953
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1954 pr_size_sync(pr, allocation->width, allocation->height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1955 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1956
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1957 static void pixbuf_renderer_paint(PixbufRenderer *pr, GdkRectangle *area)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1958 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1959 gint x, y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1960
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1961
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1962 x = MAX(0, (gint)area->x - pr->x_offset + pr->x_scroll);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1963 y = MAX(0, (gint)area->y - pr->y_offset + pr->y_scroll);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1964
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1965 pr->renderer->border_draw(pr->renderer, area->x, area->y, area->width, area->height);
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1966 pr->renderer->queue(pr->renderer,
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1967 x, y,
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1968 MIN((gint)area->width, pr->width - x),
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1969 MIN((gint)area->height, pr->height - y),
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1970 FALSE, TILE_RENDER_ALL, FALSE, FALSE);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1971 if (pr->renderer2)
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1972 {
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1973 pr->renderer2->border_draw(pr->renderer2, area->x, area->y, area->width, area->height);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1974 pr->renderer2->queue(pr->renderer2,
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1975 x, y,
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1976 MIN((gint)area->width, pr->width - x),
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1977 MIN((gint)area->height, pr->height - y),
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1978 FALSE, TILE_RENDER_ALL, FALSE, FALSE);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1979 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1980 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1981
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1982 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1983 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1984 * scrolling
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1985 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1986 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1987
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1988 void pixbuf_renderer_scroll(PixbufRenderer *pr, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1989 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1990 gint old_x, old_y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1991 gint x_off, y_off;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1992
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1993 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1994
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1995 if (!pr->pixbuf && !pr->source_tiles_enabled) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1996
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1997 old_x = pr->x_scroll;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1998 old_y = pr->y_scroll;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1999
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2000 pr->x_scroll += x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2001 pr->y_scroll += y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2002
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2003 pr_scroll_clamp(pr);
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
2004
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
2005 pixbuf_renderer_sync_scroll_center(pr);
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
2006
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2007 if (pr->x_scroll == old_x && pr->y_scroll == old_y) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2008
29
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
2009 pr_scroll_notify_signal(pr);
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
2010
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2011 x_off = pr->x_scroll - old_x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2012 y_off = pr->y_scroll - old_y;
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2013
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2014 pr->renderer->scroll(pr->renderer, x_off, y_off);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2015 if (pr->renderer2) pr->renderer2->scroll(pr->renderer2, x_off, y_off);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2016 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2017
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2018 void pixbuf_renderer_scroll_to_point(PixbufRenderer *pr, gint x, gint y,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2019 gdouble x_align, gdouble y_align)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2020 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2021 gint px, py;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2022 gint ax, ay;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2023
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2024 x_align = CLAMP(x_align, 0.0, 1.0);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2025 y_align = CLAMP(y_align, 0.0, 1.0);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2026
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2027 ax = (gdouble)pr->vis_width * x_align;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2028 ay = (gdouble)pr->vis_height * y_align;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2029
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2030 px = (gdouble)x * pr->scale - (pr->x_scroll + ax);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
2031 py = (gdouble)y * pr->scale * pr->aspect_ratio - (pr->y_scroll + ay);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2032
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2033 pixbuf_renderer_scroll(pr, px, py);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2034 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2035
131
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2036 /* get or set coordinates of viewport center in the image, in range 0.0 - 1.0 */
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2037
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2038 void pixbuf_renderer_get_scroll_center(PixbufRenderer *pr, gdouble *x, gdouble *y)
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2039 {
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
2040 *x = pr->norm_center_x;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
2041 *y = pr->norm_center_y;
131
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2042 }
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2043
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2044 void pixbuf_renderer_set_scroll_center(PixbufRenderer *pr, gdouble x, gdouble y)
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2045 {
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2046 gdouble dst_x, dst_y;
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2047
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2048 dst_x = x * pr->width - pr->vis_width / 2 - pr->x_scroll + CLAMP(pr->subpixel_x_scroll, -1.0, 1.0);
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2049 dst_y = y * pr->height - pr->vis_height / 2 - pr->y_scroll + CLAMP(pr->subpixel_y_scroll, -1.0, 1.0);
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2050
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
2051 pr->subpixel_x_scroll = dst_x - (gint)dst_x;
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
2052 pr->subpixel_y_scroll = dst_y - (gint)dst_y;
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
2053
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
2054 pixbuf_renderer_scroll(pr, (gint)dst_x, (gint)dst_y);
131
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2055 }
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
2056
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2057 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2058 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2059 * mouse
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2060 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2061 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2062
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2063 static gboolean pr_mouse_motion_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2064 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2065 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2066 gint accel;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2067
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2068 /* This is a hack, but work far the best, at least for single pointer systems.
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2069 * See http://bugzilla.gnome.org/show_bug.cgi?id=587714 for more. */
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2070 gint x, y;
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2071 gdk_window_get_pointer (bevent->window, &x, &y, NULL);
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2072 bevent->x = x;
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2073 bevent->y = y;
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2074
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2075 pr = PIXBUF_RENDERER(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2076
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2077 if (pr->scroller_id)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2078 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2079 pr->scroller_xpos = bevent->x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2080 pr->scroller_ypos = bevent->y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2081 }
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2082
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2083 pr->x_mouse = bevent->x;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2084 pr->y_mouse = bevent->y;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2085 pr_update_pixel_signal(pr);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2086
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2087 if (!pr->in_drag || !gdk_pointer_is_grabbed()) return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2088
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2089 if (pr->drag_moved < PR_DRAG_SCROLL_THRESHHOLD)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2090 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2091 pr->drag_moved++;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2092 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2093 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2094 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2095 widget_set_cursor(widget, GDK_FLEUR);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2096 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2097
1047
229877808392 use SHIFT for connected scroll and zoom
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1045
diff changeset
2098 if (bevent->state & GDK_CONTROL_MASK)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2099 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2100 accel = PR_PAN_SHIFT_MULTIPLIER;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2101 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2102 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2103 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2104 accel = 1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2105 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2106
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2107 /* do the scroll */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2108 pixbuf_renderer_scroll(pr, (pr->drag_last_x - bevent->x) * accel,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2109 (pr->drag_last_y - bevent->y) * accel);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2110
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
2111 pr_drag_signal(pr, bevent);
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
2112
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2113 pr->drag_last_x = bevent->x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2114 pr->drag_last_y = bevent->y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2115
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2116 /* This is recommended by the GTK+ documentation, but does not work properly.
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2117 * Use deprecated way until GTK+ gets a solution for correct motion hint handling:
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2118 * http://bugzilla.gnome.org/show_bug.cgi?id=587714
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2119 */
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2120 /* gdk_event_request_motions (bevent); */
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2121 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2122 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2123
1584
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2124 static gboolean pr_leave_notify_cb(GtkWidget *widget, GdkEventCrossing *cevent, gpointer data)
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2125 {
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2126 PixbufRenderer *pr;
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2127
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2128 pr = PIXBUF_RENDERER(widget);
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2129 pr->x_mouse = -1;
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2130 pr->y_mouse = -1;
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2131
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2132 pr_update_pixel_signal(pr);
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2133 return FALSE;
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2134 }
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2135
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2136 static gboolean pr_mouse_press_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2137 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2138 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2139 GtkWidget *parent;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2140
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2141 pr = PIXBUF_RENDERER(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2142
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2143 if (pr->scroller_id) return TRUE;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2144
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2145 switch (bevent->button)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2146 {
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2147 case MOUSE_BUTTON_LEFT:
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2148 pr->in_drag = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2149 pr->drag_last_x = bevent->x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2150 pr->drag_last_y = bevent->y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2151 pr->drag_moved = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2152 gdk_pointer_grab(widget->window, FALSE,
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2153 GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_RELEASE_MASK,
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2154 NULL, NULL, bevent->time);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2155 gtk_grab_add(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2156 break;
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2157 case MOUSE_BUTTON_MIDDLE:
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2158 pr->drag_moved = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2159 break;
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2160 case MOUSE_BUTTON_RIGHT:
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
2161 pr_clicked_signal(pr, bevent);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2162 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2163 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2164 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2165 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2166
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2167 parent = gtk_widget_get_parent(widget);
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2168 #if GTK_CHECK_VERSION(2,20,0)
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2169 if (widget && gtk_widget_get_can_focus(parent))
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2170 #else
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2171 if (widget && GTK_WIDGET_CAN_FOCUS(parent))
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2172 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2173 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2174 gtk_widget_grab_focus(parent);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2175 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2176
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2177 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2178 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2179
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2180 static gboolean pr_mouse_release_cb(GtkWidget *widget, GdkEventButton *bevent, gpointer data)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2181 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2182 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2183
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2184 pr = PIXBUF_RENDERER(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2185
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2186 if (pr->scroller_id)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2187 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2188 pr_scroller_stop(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2189 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2190 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2191
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2192 #if GTK_CHECK_VERSION(2,20,0)
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2193 if (gdk_pointer_is_grabbed() && gtk_widget_has_grab(GTK_WIDGET(pr)))
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2194 #else
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2195 if (gdk_pointer_is_grabbed() && GTK_WIDGET_HAS_GRAB(pr))
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2196 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2197 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2198 gtk_grab_remove(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2199 gdk_pointer_ungrab(bevent->time);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2200 widget_set_cursor(widget, -1);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2201 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2202
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2203 if (pr->drag_moved < PR_DRAG_SCROLL_THRESHHOLD)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2204 {
1047
229877808392 use SHIFT for connected scroll and zoom
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1045
diff changeset
2205 if (bevent->button == MOUSE_BUTTON_LEFT && (bevent->state & GDK_CONTROL_MASK))
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2206 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2207 pr_scroller_start(pr, bevent->x, bevent->y);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2208 }
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2209 else if (bevent->button == MOUSE_BUTTON_LEFT || bevent->button == MOUSE_BUTTON_MIDDLE)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2210 {
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
2211 pr_clicked_signal(pr, bevent);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2212 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2213 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2214
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2215 pr->in_drag = FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2216
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2217 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2218 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2219
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2220 static gboolean pr_mouse_leave_cb(GtkWidget *widget, GdkEventCrossing *event, gpointer data)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2221 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2222 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2223
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2224 pr = PIXBUF_RENDERER(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2225
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2226 if (pr->scroller_id)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2227 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2228 pr->scroller_xpos = pr->scroller_x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2229 pr->scroller_ypos = pr->scroller_y;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2230 pr->scroller_xinc = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2231 pr->scroller_yinc = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2232 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2233
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2234 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2235 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2236
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2237 static void pr_mouse_drag_cb(GtkWidget *widget, GdkDragContext *context, gpointer data)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2238 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2239 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2240
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2241 pr = PIXBUF_RENDERER(widget);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2242
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2243 pr->drag_moved = PR_DRAG_SCROLL_THRESHHOLD;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2244 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2245
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2246 static void pr_signals_connect(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2247 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2248 g_signal_connect(G_OBJECT(pr), "motion_notify_event",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2249 G_CALLBACK(pr_mouse_motion_cb), pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2250 g_signal_connect(G_OBJECT(pr), "button_press_event",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2251 G_CALLBACK(pr_mouse_press_cb), pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2252 g_signal_connect(G_OBJECT(pr), "button_release_event",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2253 G_CALLBACK(pr_mouse_release_cb), pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2254 g_signal_connect(G_OBJECT(pr), "leave_notify_event",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2255 G_CALLBACK(pr_mouse_leave_cb), pr);
1584
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2256 g_signal_connect(G_OBJECT(pr), "leave_notify_event",
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2257 G_CALLBACK(pr_leave_notify_cb), pr);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2258
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2259 gtk_widget_set_events(GTK_WIDGET(pr), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2260 GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK |
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2261 GDK_LEAVE_NOTIFY_MASK);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2262
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2263 g_signal_connect(G_OBJECT(pr), "drag_begin",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2264 G_CALLBACK(pr_mouse_drag_cb), pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2265
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2266 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2267
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2268 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2269 *-------------------------------------------------------------------
1879
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2270 * stereo support
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2271 *-------------------------------------------------------------------
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2272 */
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2273
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2274 #define COLOR_BYTES 3 /* rgb */
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2275 void pr_create_anaglyph(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h)
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2276 {
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2277 gint srs, drs;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2278 guchar *s_pix, *d_pix;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2279 guchar *sp, *dp;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2280 guchar *spi, *dpi;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2281 gint i, j;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2282
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2283 srs = gdk_pixbuf_get_rowstride(right);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2284 s_pix = gdk_pixbuf_get_pixels(right);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2285 spi = s_pix + (x * COLOR_BYTES);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2286
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2287 drs = gdk_pixbuf_get_rowstride(pixbuf);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2288 d_pix = gdk_pixbuf_get_pixels(pixbuf);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2289 dpi = d_pix + x * COLOR_BYTES;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2290
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2291 for (i = y; i < y + h; i++)
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2292 {
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2293 sp = spi + (i * srs);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2294 dp = dpi + (i * drs);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2295 for (j = 0; j < w; j++)
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2296 {
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2297 *dp = *sp; /* copy red channel */
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2298 sp += COLOR_BYTES;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2299 dp += COLOR_BYTES;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2300 }
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2301 }
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2302 }
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2303
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2304
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2305
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2306 /*
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2307 *-------------------------------------------------------------------
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2308 * public
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2309 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2310 */
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2311 static void pr_pixbuf_size_sync(PixbufRenderer *pr)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2312 {
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2313 pr->stereo_pixbuf_offset_left = 0;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2314 pr->stereo_pixbuf_offset_right = 0;
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2315 if (!pr->pixbuf) return;
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2316 gint stereo_data = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(pr->pixbuf), "stereo_data"));
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2317 switch (pr->orientation)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2318 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2319 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2320 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2321 case EXIF_ORIENTATION_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2322 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2323 pr->image_width = gdk_pixbuf_get_height(pr->pixbuf);
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2324 pr->image_height = gdk_pixbuf_get_width(pr->pixbuf);
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2325 if (stereo_data == STEREO_PIXBUF_SBS)
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2326 {
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2327 pr->image_height /= 2;
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2328 pr->stereo_pixbuf_offset_right = pr->image_height;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2329 }
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2330 else if (stereo_data == STEREO_PIXBUF_CROSS)
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2331 {
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2332 pr->image_height /= 2;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2333 pr->stereo_pixbuf_offset_left = pr->image_height;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2334 }
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2335
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2336 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2337 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2338 pr->image_width = gdk_pixbuf_get_width(pr->pixbuf);
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2339 pr->image_height = gdk_pixbuf_get_height(pr->pixbuf);
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2340 if (stereo_data == STEREO_PIXBUF_SBS)
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2341 {
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2342 pr->image_width /= 2;
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2343 pr->stereo_pixbuf_offset_right = pr->image_width;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2344 }
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2345 else if (stereo_data == STEREO_PIXBUF_CROSS)
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2346 {
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2347 pr->image_width /= 2;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2348 pr->stereo_pixbuf_offset_left = pr->image_width;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2349 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2350 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2351 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2352
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2353 static void pr_set_pixbuf(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom, PrZoomFlags flags)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2354 {
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2355 if (pixbuf) g_object_ref(pixbuf);
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2356 if (pr->pixbuf) g_object_unref(pr->pixbuf);
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2357 pr->pixbuf = pixbuf;
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2358
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2359 if (!pr->pixbuf)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2360 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2361 GtkWidget *box;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2362
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2363 /* no pixbuf so just clear the window */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2364 pr->image_width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2365 pr->image_height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2366 pr->scale = 1.0;
1634
7e8bc9e5cdd7 preserve zoom value on fullscreen startup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1633
diff changeset
2367 pr->zoom = zoom; /* don't throw away the zoom value, it is set by pixbuf_renderer_move, among others,
7e8bc9e5cdd7 preserve zoom value on fullscreen startup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1633
diff changeset
2368 and used for pixbuf_renderer_zoom_get */
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2369
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2370 box = GTK_WIDGET(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2371
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2372 #if GTK_CHECK_VERSION(2,20,0)
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2373 if (gtk_widget_get_realized(box))
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2374 #else
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2375 if (GTK_WIDGET_REALIZED(box))
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2376 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2377 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2378 gdk_window_clear(box->window);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2379 pr->renderer->overlay_draw(pr->renderer, 0, 0, pr->viewport_width, pr->viewport_height);
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2380 if (pr->renderer2) pr->renderer2->overlay_draw(pr->renderer2, 0, 0, pr->viewport_width, pr->viewport_height);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2381 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2382
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2383 pr_update_signal(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2384
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2385 return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2386 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
2387
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2388 if (pr->stereo_mode & PR_STEREO_TEMP_DISABLE)
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2389 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2390 gint disable = !pr->pixbuf || ! GPOINTER_TO_INT(g_object_get_data(G_OBJECT(pr->pixbuf), "stereo_data"));
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2391 pr_stereo_temp_disable(pr, disable);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2392 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2393
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2394 pr_pixbuf_size_sync(pr);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2395 pr_zoom_sync(pr, zoom, flags | PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2396 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2397
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2398 void pixbuf_renderer_set_pixbuf(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2399 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2400 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2401
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2402 pr_source_tile_unset(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2403
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2404 pr_set_pixbuf(pr, pixbuf, zoom, 0);
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2405
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2406 pr_update_signal(pr);
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2407 }
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2408
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2409 void pixbuf_renderer_set_pixbuf_lazy(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom, gint orientation)
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2410 {
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2411 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2412
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2413 pr_source_tile_unset(pr);
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2414
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2415 pr->orientation = orientation;
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2416 pr_set_pixbuf(pr, pixbuf, zoom, PR_ZOOM_LAZY);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2417
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2418 pr_update_signal(pr);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2419 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2420
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2421 GdkPixbuf *pixbuf_renderer_get_pixbuf(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2422 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2423 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), NULL);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2424
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2425 return pr->pixbuf;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2426 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2427
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2428 void pixbuf_renderer_set_orientation(PixbufRenderer *pr, gint orientation)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2429 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2430 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2431
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2432 pr->orientation = orientation;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2433
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2434 pr_pixbuf_size_sync(pr);
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2435 pr_zoom_sync(pr, pr->zoom, PR_ZOOM_FORCE, 0, 0);
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2436 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2437
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2438 gint pixbuf_renderer_get_orientation(PixbufRenderer *pr)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2439 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2440 if (!pr) return 1;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2441 return pr->orientation;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2442 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2443
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2444 void pixbuf_renderer_set_post_process_func(PixbufRenderer *pr, PixbufRendererPostProcessFunc func, gpointer user_data, gboolean slow)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2445 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2446 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
2447
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2448 pr->func_post_process = func;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2449 pr->post_process_user_data = user_data;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2450 pr->post_process_slow = func && slow;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2451
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2452 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2453
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2454
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2455 void pixbuf_renderer_move(PixbufRenderer *pr, PixbufRenderer *source)
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2456 {
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2457 GObject *object;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2458 PixbufRendererScrollResetType scroll_reset;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2459
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2460 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2461 g_return_if_fail(IS_PIXBUF_RENDERER(source));
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2462
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2463 if (pr == source) return;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2464
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2465 object = G_OBJECT(pr);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2466
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2467 g_object_set(object, "zoom_min", source->zoom_min, NULL);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2468 g_object_set(object, "zoom_max", source->zoom_max, NULL);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2469 g_object_set(object, "loading", source->loading, NULL);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2470
42
056d96cdec23 Sat May 14 13:04:23 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 38
diff changeset
2471 pr->complete = source->complete;
056d96cdec23 Sat May 14 13:04:23 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 38
diff changeset
2472
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2473 pr->x_scroll = source->x_scroll;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2474 pr->y_scroll = source->y_scroll;
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2475 pr->x_mouse = source->x_mouse;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2476 pr->y_mouse = source->y_mouse;
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2477
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2478 scroll_reset = pr->scroll_reset;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2479 pr->scroll_reset = PR_SCROLL_RESET_NOCHANGE;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2480
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2481 pr->func_post_process = source->func_post_process;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2482 pr->post_process_user_data = source->post_process_user_data;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2483 pr->post_process_slow = source->post_process_slow;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2484 pr->orientation = source->orientation;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2485
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2486 if (source->source_tiles_enabled)
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2487 {
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2488 pr_source_tile_unset(pr);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2489
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2490 pr->source_tiles_enabled = source->source_tiles_enabled;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2491 pr->source_tiles_cache_size = source->source_tiles_cache_size;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2492 pr->source_tile_width = source->source_tile_width;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2493 pr->source_tile_height = source->source_tile_height;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2494 pr->image_width = source->image_width;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2495 pr->image_height = source->image_height;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2496
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2497 pr->func_tile_request = source->func_tile_request;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2498 pr->func_tile_dispose = source->func_tile_dispose;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2499 pr->func_tile_data = source->func_tile_data;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2500
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2501 pr->source_tiles = source->source_tiles;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2502 source->source_tiles = NULL;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2503
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2504 pr_zoom_sync(pr, source->zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2505 pr_redraw(pr, TRUE);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2506 }
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2507 else
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2508 {
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2509 pixbuf_renderer_set_pixbuf(pr, source->pixbuf, source->zoom);
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2510 }
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2511
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2512 pr->scroll_reset = scroll_reset;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2513
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2514 pixbuf_renderer_set_pixbuf(source, NULL, source->zoom);
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2515 // pr_queue_clear(source);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2516 // pr_tile_free_all(source);
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2517 }
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2518
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2519 void pixbuf_renderer_area_changed(PixbufRenderer *pr, gint src_x, gint src_y, gint src_w, gint src_h)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2520 {
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2521 gint x, y, width, height, x1, y1, x2, y2;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2522
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2523 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2524
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2525 pr_coords_map_orientation_reverse(pr->orientation,
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2526 src_x, src_y,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2527 pr->image_width, pr->image_height,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2528 src_w, src_h,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2529 &x, &y,
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2530 &width, &height);
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2531
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2532 if (pr->source_tiles_enabled)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2533 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2534 pr_source_tile_changed(pr, x, y, width, height);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2535 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2536
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2537 if (pr->scale != 1.0 && pr->zoom_quality != GDK_INTERP_NEAREST)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2538 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2539 /* increase region when using a zoom quality that may access surrounding pixels */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2540 y -= 1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2541 height += 2;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2542 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2543
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
2544 x1 = (gint)floor((gdouble)x * pr->scale);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
2545 y1 = (gint)floor((gdouble)y * pr->scale * pr->aspect_ratio);
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
2546 x2 = (gint)ceil((gdouble)(x + width) * pr->scale);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
2547 y2 = (gint)ceil((gdouble)(y + height) * pr->scale * pr->aspect_ratio);
26
f1fe26e637e9 Mon Mar 28 20:23:34 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 25
diff changeset
2548
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2549 pr->renderer->queue(pr->renderer, x1, y1, x2 - x1, y2 - y1, FALSE, TILE_RENDER_AREA, TRUE, TRUE);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2550 if (pr->renderer2) pr->renderer2->queue(pr->renderer2, x1, y1, x2 - x1, y2 - y1, FALSE, TILE_RENDER_AREA, TRUE, TRUE);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2551 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2552
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2553 void pixbuf_renderer_zoom_adjust(PixbufRenderer *pr, gdouble increment)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2554 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2555 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2556
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2557 pr_zoom_adjust_real(pr, increment, PR_ZOOM_NONE, 0, 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2558 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2559
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2560 void pixbuf_renderer_zoom_adjust_at_point(PixbufRenderer *pr, gdouble increment, gint x, gint y)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2561 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2562 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2563
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2564 pr_zoom_adjust_real(pr, increment, PR_ZOOM_CENTER, x, y);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2565 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2566
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2567 void pixbuf_renderer_zoom_set(PixbufRenderer *pr, gdouble zoom)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2568 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2569 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2570
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2571 pr_zoom_sync(pr, zoom, PR_ZOOM_NONE, 0, 0);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2572 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2573
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2574 gdouble pixbuf_renderer_zoom_get(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2575 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2576 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), 1.0);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2577
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2578 return pr->zoom;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2579 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2580
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2581 gdouble pixbuf_renderer_zoom_get_scale(PixbufRenderer *pr)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2582 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2583 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), 1.0);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2584
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2585 return pr->scale;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2586 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2587
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2588 void pixbuf_renderer_zoom_set_limits(PixbufRenderer *pr, gdouble min, gdouble max)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2589 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2590 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2591
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2592 if (min > 1.0 || max < 1.0) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2593 if (min < 1.0 && min > -1.0) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2594 if (min < -200.0 || max > 200.0) return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2595
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2596 if (pr->zoom_min != min)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2597 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2598 pr->zoom_min = min;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2599 g_object_notify(G_OBJECT(pr), "zoom_min");
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2600 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2601 if (pr->zoom_max != max)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2602 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2603 pr->zoom_max = max;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2604 g_object_notify(G_OBJECT(pr), "zoom_max");
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2605 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2606 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2607
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2608 static void pr_stereo_set(PixbufRenderer *pr)
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2609 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2610 if (!pr->renderer) pr->renderer = (void *)renderer_tiles_new(pr);
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2611
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2612 pr->renderer->stereo_set(pr->renderer, pr->stereo_mode & ~PR_STEREO_MIRROR_RIGHT & ~PR_STEREO_FLIP_RIGHT);
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2613
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2614 if (pr->stereo_mode & (PR_STEREO_HORIZ | PR_STEREO_VERT | PR_STEREO_FIXED))
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2615 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2616 if (!pr->renderer2) pr->renderer2 = (void *)renderer_tiles_new(pr);
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2617 pr->renderer2->stereo_set(pr->renderer2, (pr->stereo_mode & ~PR_STEREO_MIRROR_LEFT & ~PR_STEREO_FLIP_LEFT) | PR_STEREO_RIGHT);
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2618 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2619 else
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2620 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2621 if (pr->renderer2) pr->renderer2->free(pr->renderer2);
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2622 pr->renderer2 = NULL;
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2623 }
1895
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2624 if (pr->stereo_mode & PR_STEREO_HALF)
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2625 {
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2626 if (pr->stereo_mode & PR_STEREO_HORIZ) pr->aspect_ratio = 2.0;
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2627 else if (pr->stereo_mode & PR_STEREO_VERT) pr->aspect_ratio = 0.5;
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2628 else pr->aspect_ratio = 1.0;
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2629 }
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2630 else
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2631 {
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2632 pr->aspect_ratio = 1.0;
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2633 }
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2634 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2635
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2636 void pixbuf_renderer_stereo_set(PixbufRenderer *pr, gint stereo_mode)
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2637 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2638 gboolean redraw = !(pr->stereo_mode == stereo_mode) || pr->stereo_temp_disable;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2639 pr->stereo_mode = stereo_mode;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2640 if ((stereo_mode & PR_STEREO_TEMP_DISABLE) && pr->stereo_temp_disable) return;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2641
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2642 pr->stereo_temp_disable = FALSE;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2643
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2644 pr_stereo_set(pr);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2645
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2646 if (redraw)
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2647 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2648 pr_size_sync(pr, pr->window_width, pr->window_height); /* recalculate new viewport */
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2649 pr_zoom_sync(pr, pr->zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2650 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2651 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2652
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2653 void pixbuf_renderer_stereo_fixed_set(PixbufRenderer *pr, gint width, gint height, gint x1, gint y1, gint x2, gint y2)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2654 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2655 pr->stereo_fixed_width = width;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2656 pr->stereo_fixed_height = height;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2657 pr->stereo_fixed_x_left = x1;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2658 pr->stereo_fixed_y_left = y1;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2659 pr->stereo_fixed_x_right = x2;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2660 pr->stereo_fixed_y_right = y2;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2661 }
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2662
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2663 gint pixbuf_renderer_stereo_get(PixbufRenderer *pr)
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2664 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2665 return pr->stereo_mode;
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2666 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2667
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2668 static void pr_stereo_temp_disable(PixbufRenderer *pr, gboolean disable)
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2669 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2670 if (pr->stereo_temp_disable == disable) return;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2671 pr->stereo_temp_disable = disable;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2672 if (disable)
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2673 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2674 if (!pr->renderer) pr->renderer = (void *)renderer_tiles_new(pr);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2675 pr->renderer->stereo_set(pr->renderer, PR_STEREO_NONE);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2676 if (pr->renderer2) pr->renderer2->free(pr->renderer2);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2677 pr->renderer2 = NULL;
1895
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2678 pr->aspect_ratio = 1.0;
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2679 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2680 else
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2681 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2682 pr_stereo_set(pr);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2683 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2684 pr_size_sync(pr, pr->window_width, pr->window_height); /* recalculate new viewport */
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2685 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2686
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2687 gboolean pixbuf_renderer_get_pixel_colors(PixbufRenderer *pr, gint x_pixel, gint y_pixel,
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2688 gint *r_mouse, gint *g_mouse, gint *b_mouse)
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2689 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2690 GdkPixbuf *pb = pr->pixbuf;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2691 gint p_alpha, prs;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2692 guchar *p_pix, *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2693 gint map_x, map_y, map_w, map_h;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2694
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2695 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2696 g_return_val_if_fail(r_mouse != NULL && g_mouse != NULL && b_mouse != NULL, FALSE);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2697
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2698 if (!pr->pixbuf && !pr->source_tiles_enabled)
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2699 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2700 *r_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2701 *g_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2702 *b_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2703 return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2704 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2705
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2706 if (!pb) return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2707
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2708 pr_tile_region_map_orientation(pr->orientation,
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2709 x_pixel, y_pixel,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2710 pr->image_width, pr->image_height,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2711 1, 1, /*single pixel */
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2712 &map_x, &map_y,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2713 &map_w, &map_h);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2714
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2715 if (map_x < 0 || map_x > gdk_pixbuf_get_width(pr->pixbuf) - 1) return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2716 if (map_y < 0 || map_y > gdk_pixbuf_get_height(pr->pixbuf) - 1) return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2717
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2718 p_alpha = gdk_pixbuf_get_has_alpha(pb);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2719 prs = gdk_pixbuf_get_rowstride(pb);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2720 p_pix = gdk_pixbuf_get_pixels(pb);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2721
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2722 pp = p_pix + map_y * prs + (map_x * (p_alpha ? 4 : 3));
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2723 *r_mouse = *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2724 pp++;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2725 *g_mouse = *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2726 pp++;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2727 *b_mouse = *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2728
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2729 return TRUE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2730 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2731
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2732 gboolean pixbuf_renderer_get_mouse_position(PixbufRenderer *pr, gint *x_pixel_return, gint *y_pixel_return)
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2733 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2734 gint x_pixel, y_pixel, x_pixel_clamped, y_pixel_clamped;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2735
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2736 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2737 g_return_val_if_fail(x_pixel_return != NULL && y_pixel_return != NULL, FALSE);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2738
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2739 if (!pr->pixbuf && !pr->source_tiles_enabled)
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2740 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2741 *x_pixel_return = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2742 *y_pixel_return = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2743 return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2744 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2745
1492
3044b1b97143 Fixed bug where pixel/color information at x=0 coordinates werent shown:
Laurent Monin <geeqie@norz.org>
parents: 1435
diff changeset
2746 x_pixel = floor((gdouble)(pr->x_mouse - pr->x_offset + pr->x_scroll) / pr->scale);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
2747 y_pixel = floor((gdouble)(pr->y_mouse - pr->y_offset + pr->y_scroll) / pr->scale / pr->aspect_ratio);
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2748 x_pixel_clamped = CLAMP(x_pixel, 0, pr->image_width - 1);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2749 y_pixel_clamped = CLAMP(y_pixel, 0, pr->image_height - 1);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2750
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2751 if(x_pixel != x_pixel_clamped || y_pixel != y_pixel_clamped)
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2752 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2753 /* mouse is not on pr */
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2754 x_pixel = y_pixel = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2755 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2756
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2757 *x_pixel_return = x_pixel;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2758 *y_pixel_return = y_pixel;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2759
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2760 return TRUE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2761 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2762
1431
13c985b6e35e More gboolean and tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1375
diff changeset
2763 gboolean pixbuf_renderer_get_image_size(PixbufRenderer *pr, gint *width, gint *height)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2764 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2765 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2766 g_return_val_if_fail(width != NULL && height != NULL, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2767
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2768 if (!pr->pixbuf && !pr->source_tiles_enabled && (!pr->image_width || !pr->image_height))
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2769 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2770 *width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2771 *height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2772 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2773 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2774
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2775 *width = pr->image_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2776 *height = pr->image_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2777 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2778 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2779
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2780 gboolean pixbuf_renderer_get_scaled_size(PixbufRenderer *pr, gint *width, gint *height)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2781 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2782 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2783 g_return_val_if_fail(width != NULL && height != NULL, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2784
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2785 if (!pr->pixbuf && !pr->source_tiles_enabled && (!pr->image_width || !pr->image_height))
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2786 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2787 *width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2788 *height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2789 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2790 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2791
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2792 *width = pr->width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2793 *height = pr->height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2794 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2795 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2796
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2797 gboolean pixbuf_renderer_get_visible_rect(PixbufRenderer *pr, GdkRectangle *rect)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2798 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2799 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2800 g_return_val_if_fail(rect != NULL, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2801
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2802 if ((!pr->pixbuf && !pr->source_tiles_enabled) ||
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2803 !pr->scale)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2804 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2805 rect->x = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2806 rect->y = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2807 rect->width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2808 rect->height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2809 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2810 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2811
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2812 rect->x = (gint)((gdouble)pr->x_scroll / pr->scale);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
2813 rect->y = (gint)((gdouble)pr->y_scroll / pr->scale / pr->aspect_ratio);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2814 rect->width = (gint)((gdouble)pr->vis_width / pr->scale);
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
2815 rect->height = (gint)((gdouble)pr->vis_height / pr->scale / pr->aspect_ratio);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2816 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2817 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2818
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2819 gboolean pixbuf_renderer_get_virtual_rect(PixbufRenderer *pr, GdkRectangle *rect)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2820 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2821 g_return_val_if_fail(IS_PIXBUF_RENDERER(pr), FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2822 g_return_val_if_fail(rect != NULL, FALSE);
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2823
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2824 if ((!pr->pixbuf && !pr->source_tiles_enabled))
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2825 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2826 rect->x = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2827 rect->y = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2828 rect->width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2829 rect->height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2830 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2831 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2832
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2833 rect->x = pr->x_scroll;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2834 rect->y = pr->y_scroll;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2835 rect->width = pr->vis_width;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2836 rect->height = pr->vis_height;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2837 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2838 }
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2839
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2840 void pixbuf_renderer_set_size_early(PixbufRenderer *pr, guint width, guint height)
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2841 {
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2842 gdouble zoom;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2843 gint w, h;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2844
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2845 zoom = pixbuf_renderer_zoom_get(pr);
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2846 pr->image_width = width;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2847 pr->image_height = height;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2848
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2849 pr_zoom_clamp(pr, zoom, PR_ZOOM_FORCE, NULL);
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2850
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2851 //w = width;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2852 //h = height;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2853
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2854 //pr->width = width;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2855 //pr->height = height;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2856 }
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2857
1055
4bbdfab3c89a Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1047
diff changeset
2858 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */