annotate src/pixbuf-renderer.c @ 2862:f105ca657cb3

Bug fix #251: Crop simulation https://github.com/BestImageViewer/geeqie/issues/251 If the drawn rectangle started or ended outside the image area, incorrect coordinates were returned. The coordinates of the enclosed part of the image are now returned.
author Colin Clark <colin.clark@cclark.uk>
date Wed, 14 Nov 2018 10:15:23 +0000
parents 3e9ca298bb1d
children
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 /*
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
2 * Copyright (C) 2006 John Ellis
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
3 * Copyright (C) 2008 - 2016 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
4 *
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
5 * 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
6 *
2350
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
7 * This program is free software; you can redistribute it and/or modify
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
8 * it under the terms of the GNU General Public License as published by
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
10 * (at your option) any later version.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
11 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
12 * This program is distributed in the hope that it will be useful,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
15 * GNU General Public License for more details.
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
16 *
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
17 * You should have received a copy of the GNU General Public License along
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
18 * with this program; if not, write to the Free Software Foundation, Inc.,
95507e596256 Update copyright in all files
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2310
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
20 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
21
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
22 #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
23 #include <stdlib.h>
507
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
24 #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
25 #include <math.h>
507
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
26
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
27 #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
28 #include "pixbuf-renderer.h"
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
29 #include "renderer-tiles.h"
2074
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
30 #include "renderer-clutter.h"
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
31
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
32 #include "intl.h"
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
33 #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
34
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
35 #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
36
196
bdad1cacadf4 rename GQview -> Geeqie over the code
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 131
diff changeset
37 /* comment this out if not using this from within Geeqie
283
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
38 * 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
39 * - 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
40 */
283
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
41 #define GQ_BUILD 1
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
42
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
43 #ifdef GQ_BUILD
507
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
44 #include "main.h"
7408e89b601d Move debug macros from main.h to new debug.h.
Laurent Monin <geeqie@norz.org>
parents: 506
diff changeset
45 #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
46 #include "exif.h"
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
47 #else
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
48 typedef enum {
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
49 EXIF_ORIENTATION_UNKNOWN = 0,
35b2c10c7f0d Only define ExifOrientationType if GQ_BUILD is not defined since
Laurent Monin <geeqie@norz.org>
parents: 736
diff changeset
50 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
51 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
52 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
53 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
54 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
55 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
56 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
57 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
58 } ExifOrientationType;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
59 #endif
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
60
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
61
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
62 /* 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
63 #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
64 #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
65
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
66 /* 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
67 #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
68
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
69 /* 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
70 #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
71
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
72 /* scroller config */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
73 #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
74 #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
75
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
76 /* 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
77 * (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
78 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
79 #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
80
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
81 enum {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
82 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
83 SIGNAL_CLICKED,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
84 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
85 SIGNAL_RENDER_COMPLETE,
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
86 SIGNAL_DRAG,
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
87 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
88 SIGNAL_COUNT
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
89 };
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
90
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
91 enum {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
92 PROP_0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
93 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
94 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
95 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
96 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
97 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
98 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
99 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
100 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
101 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
102 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
103 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
104 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
105 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
106 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
107 PROP_AUTOFIT_LIMIT,
2474
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
108 PROP_AUTOFIT_LIMIT_VALUE,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
109 PROP_ENLARGEMENT_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
110 };
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
111
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
112 typedef enum {
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
113 PR_ZOOM_NONE = 0,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
114 PR_ZOOM_FORCE = 1 << 0,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
115 PR_ZOOM_NEW = 1 << 1,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
116 PR_ZOOM_CENTER = 1 << 2,
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
117 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
118 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
119 } PrZoomFlags;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
120
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
121 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
122 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
123
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
124
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
125
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
126 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
127 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
128 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
129 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
130 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
131 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
132 GValue *value, GParamSpec *pspec);
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
133 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
134
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
135
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 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
137
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
138 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
139 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
140
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
141 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
142 static void pr_size_cb(GtkWidget *widget, GtkAllocation *allocation, gpointer data);
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
143 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
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 /*
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 * 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
149 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
150 */
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 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
153 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
154 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
155
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
156 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
157 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
158 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
159 {
691
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
160 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
161 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
162 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
163 (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
164 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
165 NULL, /* class_data */
691
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
166 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
167 0, /* n_preallocs */
691
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
168 (GInstanceInitFunc)pixbuf_renderer_init, /* instance_init */
d82fb3402662 Fix some incomplete initialization warnings.
Laurent Monin <geeqie@norz.org>
parents: 673
diff changeset
169 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
170 };
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 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
173 &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
174 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
175
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
176 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
177 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
178
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
179 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
180 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
181 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
182
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
183 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
184
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
185 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
186 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
187
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
188 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
189
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
190 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
191 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
192 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
193 "Zoom minimum",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
194 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
195 -1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
196 1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
197 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
198 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
199
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
200 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
201 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
202 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
203 "Zoom maximum",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
204 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
205 -1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
206 1000.0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
207 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
208 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
209
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
210 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
211 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
212 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
213 "Zoom quality",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
214 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
215 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
216 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
217 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
218 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
219
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
220 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
221 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
222 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
223 "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
224 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
225 TRUE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
226 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
227
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
228 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
229 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
230 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
231 "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
232 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
233 FALSE,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
234 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
235 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
236 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
237 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
238 "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
239 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
240 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
241 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
242 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
243 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
244
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
245 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
246 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
247 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
248 "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
249 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
250 FALSE,
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_LOADING,
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("loading",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
256 "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
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,
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
262 PROP_COMPLETE,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
263 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
264 "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
265 NULL,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
266 FALSE,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
267 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
268
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
269 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
270 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
271 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
272 "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
273 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
274 0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
275 128,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
276 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
277 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
278
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
279 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
280 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
281 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
282 "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
283 "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
284 0,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
285 256,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
286 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
287 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
288
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
289 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
290 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
291 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
292 "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
293 NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
294 FALSE,
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_LIMIT,
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_limit",
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
300 "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
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_VALUE,
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_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
308 "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
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 10,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
311 150,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
312 100,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
313 G_PARAM_READABLE | G_PARAM_WRITABLE));
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
314
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
315 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
316 PROP_AUTOFIT_LIMIT,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
317 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
318 "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
319 NULL,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
320 FALSE,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
321 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
322
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_VALUE,
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_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
326 "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
327 NULL,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
328 10,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
329 150,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
330 100,
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
331 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
332
2474
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
333 g_object_class_install_property(gobject_class,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
334 PROP_ENLARGEMENT_LIMIT_VALUE,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
335 g_param_spec_uint("enlargement_limit_value",
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
336 "Size increase limit of image when autofitting",
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
337 NULL,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
338 100,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
339 999,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
340 500,
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
341 G_PARAM_READABLE | G_PARAM_WRITABLE));
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
342
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
343
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
344 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
345 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
346 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
347 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
348 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
349 NULL, NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
350 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
351 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
352 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
353
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
354 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
355 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
356 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
357 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
358 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
359 NULL, NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
360 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
361 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
362 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
363
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
364 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
365 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
366 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
367 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
368 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
369 NULL, NULL,
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
370 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
371 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
372
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
373 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
374 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
375 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
376 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
377 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
378 NULL, NULL,
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
379 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
380 G_TYPE_NONE, 0);
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
381
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
382 signals[SIGNAL_DRAG] =
128
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
383 g_signal_new("drag",
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
384 G_OBJECT_CLASS_TYPE(gobject_class),
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
385 G_SIGNAL_RUN_LAST,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
386 G_STRUCT_OFFSET(PixbufRendererClass, drag),
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
387 NULL, NULL,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
388 g_cclosure_marshal_VOID__BOXED,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
389 G_TYPE_NONE, 1,
0c318260b7f6 improved connected scroll and active image switching
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 104
diff changeset
390 GDK_TYPE_EVENT);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
391
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
392 signals[SIGNAL_UPDATE_PIXEL] =
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
393 g_signal_new("update-pixel",
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
394 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
395 G_SIGNAL_RUN_LAST,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
396 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
397 NULL, NULL,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
398 g_cclosure_marshal_VOID__VOID,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
399 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
400 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
401
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
402 static RendererFuncs *pr_backend_renderer_new(PixbufRenderer *pr)
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
403 {
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
404 if (options->image.use_clutter_renderer)
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
405 {
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
406 #ifdef HAVE_CLUTTER
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
407 return renderer_clutter_new(pr);
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
408 #else
2604
425b69f7ff5f Revise DEBUG_0() usage
Colin Clark <colin.clark@cclark.uk>
parents: 2487
diff changeset
409 log_printf("Warning: Geeqie is built without clutter renderer support");
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
410 #endif
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
411 }
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
412 return renderer_tiles_new(pr);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
413 }
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
414
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
415
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
416 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
417 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
418 GtkWidget *box;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
419
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
420 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
421
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
422 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
423 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
424 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
425 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
426
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
427 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
428 pr->scale = 1.0;
1884
a722f633d90f added mirrored stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1880
diff changeset
429 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
430
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
431 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
432
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
433 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
434 pr->scroller_overlay = -1;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
435
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
436 pr->x_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
437 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
438
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
439 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
440 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
441
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
442 pr->orientation = 1;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
443
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
444 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
445 pr->norm_center_y = 0.5;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
446
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
447 pr->stereo_mode = PR_STEREO_NONE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
448
2379
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
449 pr->color.red =0;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
450 pr->color.green =0;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
451 pr->color.blue =0;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
452
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
453 pr->renderer = pr_backend_renderer_new(pr);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
454
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
455 pr->renderer2 = NULL;
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
456
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
457 gtk_widget_set_double_buffered(box, FALSE);
2092
a997cdfc1008 use gtk_widget_set_app_paintable for renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2091
diff changeset
458 gtk_widget_set_app_paintable(box, TRUE);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
459 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
460 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
461
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
462 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
463 }
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 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
466 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
467 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
468
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
469 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
470
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
471 pr->renderer->free(pr->renderer);
1905
25f23890dabe fixed freed data access
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1899
diff changeset
472 if (pr->renderer2) pr->renderer2->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
473
1043
718ab8111f48 Replaced gtk depreceated code.
Petr Ostadal <postadal@suse.cz>
parents: 1037
diff changeset
474
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
475 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
476
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
477 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
478
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
479 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
480 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
481
1001
a1f0b2010ca1 Consistency: type * instead of type*.
Laurent Monin <geeqie@norz.org>
parents: 1000
diff changeset
482 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
483 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
484 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
485 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
486
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
487 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
488 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
489 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
490 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
491
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
492 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
493
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
494 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
495 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
496 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
497 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
498 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
499 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
500 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
501 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
502 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
503 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
504 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
505 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
506 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
507 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
508 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
509 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
510 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
511 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
512 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
513 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
514 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
515 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
516 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
517 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
518 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
519 break;
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
520 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
521 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
522 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
523 case PROP_CACHE_SIZE_DISPLAY:
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
524 // 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
525 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
526 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
527 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
528 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
529 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
530 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
531 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
532 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
533 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
534 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
535 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
536 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
537 break;
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
538 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
539 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
540 break;
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
541 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
542 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
543 break;
2474
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
544 case PROP_ENLARGEMENT_LIMIT_VALUE:
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
545 pr->enlargement_limit_size = g_value_get_uint(value);
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
546 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
547 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
548 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
549 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
550 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
551 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
552
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
553 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
554 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
555 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
556 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
557
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
558 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
559
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
560 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
561 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
562 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
563 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
564 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
565 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
566 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
567 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
568 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
569 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
570 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
571 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
572 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
573 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
574 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
575 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
576 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
577 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
578 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
579 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
580 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
581 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
582 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
583 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
584 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
585 break;
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
586 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
587 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
588 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
589 case PROP_CACHE_SIZE_DISPLAY:
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
590 // 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
591 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
592 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
593 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
594 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
595 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
596 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
597 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
598 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
599 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
600 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
601 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
602 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
603 break;
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
604 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
605 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
606 break;
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
607 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
608 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
609 break;
2474
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
610 case PROP_ENLARGEMENT_LIMIT_VALUE:
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
611 g_value_set_uint(value, pr->enlargement_limit_size);
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
612 break;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
613 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
614 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
615 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
616 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
617 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
618
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
619
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
620 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
621 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
622 * misc utilities
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
623 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
624 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
625
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
626 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
627 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
628 GdkCursor *cursor;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
629
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
630 if (!gtk_widget_get_window(widget)) return;
23
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 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
633 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
634 cursor = NULL;
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 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
637 {
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
638 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
639 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
640
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
641 gdk_window_set_cursor(gtk_widget_get_window(widget), cursor);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
642
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
643 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
644 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
645
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
646 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
647 gint clip_x, gint clip_y, gint clip_w, gint clip_h,
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
648 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
649 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
650 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
651 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
652 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
653 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
654 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
655 return FALSE;
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
658 *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
659 *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
660
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
661 *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
662 *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
663
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
664 return TRUE;
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
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
667 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
668 {
27
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
669 GdkWindowState state;
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
670
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
671 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
672 if (!pr->window_fit) return FALSE;
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
673 if (!gtk_widget_get_window(GTK_WIDGET(pr))) return FALSE;
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
674
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
675 if (!gtk_widget_get_window(pr->parent_window)) return FALSE;
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
676 state = gdk_window_get_state(gtk_widget_get_window(pr->parent_window));
27
ff0b02ab8da7 Sat Apr 2 17:28:16 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 26
diff changeset
677 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
678
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
679 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
680 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
681
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
682 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
683 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
684 GtkWidget *widget;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
685 GtkWidget *parent;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
686 gint ww, wh;
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
687 GtkAllocation widget_allocation;
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
688 GtkAllocation parent_allocation;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
689
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
690 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
691
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
692 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
693 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
694 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
695 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
696
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
697 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
698 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
699 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
700
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
701 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
702 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
703
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
704 gtk_widget_get_allocation(widget, &widget_allocation);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
705 gtk_widget_get_allocation(parent, &parent_allocation);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
706
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
707 w += (parent_allocation.width - widget_allocation.width);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
708 h += (parent_allocation.height - widget_allocation.height);
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
709
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
710 ww = gdk_window_get_width(gtk_widget_get_window(parent));
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
711 wh = gdk_window_get_height(gtk_widget_get_window(parent));
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
712 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
713
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
714 gdk_window_resize(gtk_widget_get_window(parent), w, h);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
715
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
716 return TRUE;
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
719 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
720 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
721 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
722 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
723
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
724 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
725 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
726
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
727 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
728 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
729 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
730
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
731 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
732 }
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
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 * overlays
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 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
740
1373
a8ed5c80e5d3 overlay now survives image split
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
741
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
742 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
743 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
744 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
745 /* let's assume both renderers returns the same value */
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
746 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
747 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
748 }
a8ed5c80e5d3 overlay now survives image split
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1284
diff changeset
749
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
750 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
751 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
752 pr->renderer->overlay_set(pr->renderer, id, pixbuf, x, y);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
753 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
754 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
755
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
756 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
757 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
758 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
759 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
760 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
761
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
762 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
763 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
764 pr->renderer->overlay_set(pr->renderer, id, NULL, 0, 0);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
765 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
766 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
767
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
768 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
769 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
770 * scroller overlay
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 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
773
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
774
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
775 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
776 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
777 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
778 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
779 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
780
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
781 /* 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
782 * 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
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 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
786 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
787 x = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
788 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
789 else
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 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
792 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
793 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
794 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
795
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
796 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
797 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
798 y = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
799 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
800 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
801 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
802 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
803 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
804 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
805 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
806
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
807 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
808 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
809 xinc = x;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
810 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
811 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
812 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
813 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
814
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
815 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
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 (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
818 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
819 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
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 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
824 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
825 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
826 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
827 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
828
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
829 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
830 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
831 yinc = y;
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 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
834 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
835 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
836
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
837 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
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 (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
840 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
841 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
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 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
846 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
847 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
848 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
849 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
850
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
851 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
852 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
853
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
854 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
855 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
856
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
857 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
858
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
859 return TRUE;
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
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
862 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
863 {
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
864 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
865 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
866 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
867 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
868 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
869
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
870 if (start)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
871 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
872 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
873 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
874 }
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
877 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
878 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
879 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
880 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
881 GdkPixbuf *pixbuf;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
882 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
883
283
c459535524df GQVIEW_* -> GQ_*
Laurent Monin <geeqie@norz.org>
parents: 209
diff changeset
884 #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
885 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
886 #else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
887 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
888 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
889 #endif
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
890 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
891 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
892
857
8ee324a036ed Use flags instead of int parameters for pixbuf_renderer_overlay_add().
Laurent Monin <geeqie@norz.org>
parents: 856
diff changeset
893 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
894 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
895 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
896
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
897 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
898 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
899 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
900 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
901
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
902 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
903 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
904
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
905 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
906 {
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
907 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
908
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
909 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
910 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
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, FALSE);
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 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
916 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
917 * borders
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 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
920
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
921 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
922 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
923 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
924
2379
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
925 if (color)
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
926 {
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
927 pr->color.red = color->red;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
928 pr->color.green = color->green;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
929 pr->color.blue = color->blue;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
930 }
2379
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
931 else
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
932 {
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
933 pr->color.red = 0;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
934 pr->color.green = 0;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
935 pr->color.blue = 0;
5ddb29034ae2 Bug Fix #233 Custom Border
Colin Clark <cclark@mcb.net>
parents: 2373
diff changeset
936 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
937
2090
3f0bbd79773c renamed renderer->update_sizes to update_viewport
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2089
diff changeset
938 pr->renderer->update_viewport(pr->renderer);
3f0bbd79773c renamed renderer->update_sizes to update_viewport
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2089
diff changeset
939 if (pr->renderer2) pr->renderer2->update_viewport(pr->renderer2);
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
940 }
23
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 /*
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 * source tiles
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
945 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
946 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
947
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
948 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
949 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
950 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
951
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
952 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
953 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
954 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
955
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
956 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
957 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
958 GList *work;
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 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
961 while (work)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
962 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
963 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
964
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
965 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
966 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
967
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
968 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
969 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
970
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
971 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
972 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
973 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
974
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
975 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
976 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
977 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
978 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
979 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
980
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
981 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
982 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
983 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
984
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
985 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
986
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
987 // x1 = ROUND_DOWN(pr->x_scroll, pr->tile_width);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
988 // y1 = ROUND_DOWN(pr->y_scroll, pr->tile_height);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
989 // 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
990 // 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
991 x1 = pr->x_scroll;
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
992 y1 = pr->y_scroll;
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
993 x2 = pr->x_scroll + pr->vis_width;
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
994 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
995
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
996 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
997 (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
998 (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
999 (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
1000 }
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 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
1003 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1004 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
1005 gint count;
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 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
1008
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1009 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
1010
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1011 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
1012 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
1013 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1014 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1015
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1016 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
1017 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
1018 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1019 SourceTile *needle;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1020
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1021 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
1022 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
1023
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1024 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
1025 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1026 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
1027
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1028 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
1029 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1030 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
1031 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
1032 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
1033 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1034
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1035 if (!st)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1036 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1037 st = needle;
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 else
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 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
1042 }
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 count--;
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 }
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1049 if (!st)
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 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
1052 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
1053 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
1054 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1055
1649
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1056 st->x = ROUND_DOWN(x, pr->source_tile_width);
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1057 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
1058 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
1059
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1060 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
1061
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1062 return st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1063 }
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 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
1066 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1067 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1068
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1069 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
1070 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
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 (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
1073 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
1074 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
1075 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1076 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
1077 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1078
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1079 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
1080 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
1081 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
1082 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
1083 return st;
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 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
1087 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1088 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1089
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1090 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
1091 while (work)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1092 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1093 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
1094
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1095 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
1096 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
1097 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1098 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
1099 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1100 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
1101 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
1102 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1103 return st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1104 }
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 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
1107 }
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 return NULL;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1110 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1111
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1112 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
1113 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1114 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
1115 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
1116 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
1117
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1118 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
1119 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
1120 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
1121 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
1122
1649
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1123 sx = ROUND_DOWN(x, pr->source_tile_width);
adbe8f7cff62 fixed problems with floor/ceil
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1634
diff changeset
1124 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
1125
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1126 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
1127 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1128 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
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;
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 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
1133 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
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 (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
1136 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1137 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1138
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1139 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
1140 }
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 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
1143 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1144 GList *work;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1145
95
e103e1c85665 Fri Nov 3 11:40:48 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 87
diff changeset
1146 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
1147
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1148 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
1149 while (work)
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 SourceTile *st;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1152 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
1153
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1154 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
1155 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
1156
33
96e4f244caa7 Wed Apr 6 06:41:25 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 32
diff changeset
1157 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
1158 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
1159 &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
1160 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1161 GdkPixbuf *pixbuf;
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 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
1164 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
1165 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
1166 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1167 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
1168 rw * pr->scale, rh * pr->scale);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1169 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
1170 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
1171 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1172 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
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1177 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
1178 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
1179 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
1180 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
1181 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
1182 gdouble zoom)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1183 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1184 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
2310
e7f97aa94972 Fix a typo
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2255
diff changeset
1185 g_return_if_fail(tile_width >= 32 && tile_height >= 32);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1186 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
1187 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
1188
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1189 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
1190 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
1191
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1192 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
1193
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1194 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
1195
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1196 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
1197 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
1198 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
1199 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
1200
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1201 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
1202 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
1203
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1204 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
1205 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
1206 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
1207
2094
596b928d2751 disable stereo mode in Pan View
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2092
diff changeset
1208 pr_stereo_temp_disable(pr, TRUE);
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1209 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
1210 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1211
77
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1212 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
1213 {
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1214 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
1215 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
1216
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1217 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
1218 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
1219
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1220 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
1221 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
1222
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1223 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
1224 }
234aff18fd1b Sun Oct 15 10:45:14 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 61
diff changeset
1225
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1226 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
1227 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1228 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
1229
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1230 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
1231 }
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 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
1234 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
1235 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1236 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
1237
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1238 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
1239
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1240 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
1241 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1242 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
1243 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1244 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
1245 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1246 else
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 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
1249 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1250 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1251
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1252 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
1253 {
2636
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1254 if (zoom >= 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
1255 {
2636
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1256 if (zoom / -(increment - 1.0) < 1.0)
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1257 {
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1258 zoom = 1.0 / (zoom / (increment - 1.0));
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1259 }
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1260 else
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1261 {
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1262 zoom = zoom / -(increment - 1.0) ;
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1263 }
23
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 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1266 {
2636
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1267 zoom = zoom * -(increment - 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
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 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1271 {
2636
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1272 if (zoom <= -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
1273 {
2636
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1274 if (zoom / (increment + 1.0) > -1.0)
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1275 {
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1276 zoom = -(1.0 / (zoom / (increment + 1.0)));
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1277 }
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1278 else
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1279 {
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1280 zoom = zoom / (increment + 1.0) ;
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1281 }
23
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 {
2636
22479efb61d7 Fix #313, #521: zoom increment is not multiplicative
Colin Clark <colin.clark@cclark.uk>
parents: 2629
diff changeset
1285 zoom = zoom * (increment + 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
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
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1289 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
1290 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1291
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1292
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1293 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1294 *-------------------------------------------------------------------
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1295 * 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
1296 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1297 */
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1298
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1299 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
1300 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1301 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
1302 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
1303 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1304
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1305 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
1306 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1307 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
1308 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1309
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1310 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
1311 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1312 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
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 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
1316 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1317 g_signal_emit(pr, signals[SIGNAL_SCROLL_NOTIFY], 0);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1318 }
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1319
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1320 void pr_render_complete_signal(PixbufRenderer *pr)
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1321 {
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1322 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
1323 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1324 g_signal_emit(pr, signals[SIGNAL_RENDER_COMPLETE], 0);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1325 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
1326 }
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1327 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
1328 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1329 DEBUG_1("%s pixbuf renderer done %p", get_exec_time(), pr);
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1330 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
1331 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1332 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1333
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
1334 static void pr_drag_signal(PixbufRenderer *pr, GdkEventMotion *event)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1335 {
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
1336 g_signal_emit(pr, signals[SIGNAL_DRAG], 0, event);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1337 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1338
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1339 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
1340 {
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1341 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
1342 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1343
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1344 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1345 *-------------------------------------------------------------------
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1346 * 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
1347 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1348 */
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1349
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1350
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1351 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
1352 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
1353 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
1354 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
1355 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
1356 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1357 *res_x = tile_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1358 *res_y = tile_y;
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1359 switch (orientation)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1360 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1361 case EXIF_ORIENTATION_TOP_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1362 /* normal -- nothing to do */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1363 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1364 case EXIF_ORIENTATION_TOP_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1365 /* mirrored */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1366 *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
1367 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1368 case EXIF_ORIENTATION_BOTTOM_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1369 /* upside down */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1370 *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
1371 *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
1372 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1373 case EXIF_ORIENTATION_BOTTOM_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1374 /* flipped */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1375 *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
1376 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1377 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1378 *res_x = tile_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1379 *res_y = tile_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1380 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1381 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1382 /* rotated -90 (270) */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1383 *res_x = tile_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1384 *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
1385 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1386 case EXIF_ORIENTATION_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1387 *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
1388 *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
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_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1391 /* rotated 90 */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1392 *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
1393 *res_y = tile_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1394 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1395 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1396 /* 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
1397 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1398 }
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
1399 // 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
1400 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1401
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1402 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
1403 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
1404 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
1405 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
1406 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
1407 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
1408 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1409 *res_x = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1410 *res_y = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1411 *res_w = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1412 *res_h = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1413
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1414 switch (orientation)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1415 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1416 case EXIF_ORIENTATION_TOP_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1417 /* normal -- nothing to do */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1418 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1419 case EXIF_ORIENTATION_TOP_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1420 /* mirrored */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1421 *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
1422 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1423 case EXIF_ORIENTATION_BOTTOM_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1424 /* upside down */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1425 *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
1426 *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
1427 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1428 case EXIF_ORIENTATION_BOTTOM_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1429 /* flipped */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1430 *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
1431 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1432 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1433 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1434 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1435 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1436 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1437 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1438 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1439 /* rotated -90 (270) */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1440 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1441 *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
1442 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1443 *res_h = area_w;
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_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1446 *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
1447 *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
1448 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1449 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1450 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1451 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1452 /* rotated 90 */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1453 *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
1454 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1455 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1456 *res_h = area_w;
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 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1459 /* 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
1460 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1461 }
673
c9c2bc042e10 Do not use printf() directly but use new wrapper function log_printf() instead.
Laurent Monin <geeqie@norz.org>
parents: 671
diff changeset
1462 // 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
1463 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1464
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1465 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
1466 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
1467 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
1468 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
1469 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
1470 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
1471 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1472 *res_x = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1473 *res_y = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1474 *res_w = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1475 *res_h = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1476
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1477 switch (orientation)
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1478 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1479 case EXIF_ORIENTATION_TOP_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1480 /* normal -- nothing to do */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1481 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1482 case EXIF_ORIENTATION_TOP_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1483 /* mirrored */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1484 *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
1485 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1486 case EXIF_ORIENTATION_BOTTOM_RIGHT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1487 /* upside down */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1488 *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
1489 *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
1490 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1491 case EXIF_ORIENTATION_BOTTOM_LEFT:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1492 /* flipped */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1493 *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
1494 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1495 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1496 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1497 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1498 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1499 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1500 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1501 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1502 /* rotated -90 (270) */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1503 *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
1504 *res_y = area_x;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1505 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1506 *res_h = area_w;
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_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1509 *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
1510 *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
1511 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1512 *res_h = area_w;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1513 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1514 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1515 /* rotated 90 */
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1516 *res_x = area_y;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1517 *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
1518 *res_w = area_h;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1519 *res_h = area_w;
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 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1522 /* 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
1523 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1524 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1525 }
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1526
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
1527
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1528
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1529 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
1530 {
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1531 gint src_x, src_y;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1532 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
1533
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
1534 /*
1617
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1535 * 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
1536 * 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
1537 * 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
1538 */
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1539
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1540 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
1541 {
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1542 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
1543 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
1544 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1545
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1546 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
1547 {
551ec3cbcdc8 preserve image center over short periods when the "broken image" icon is
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1584
diff changeset
1548 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
1549 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
1550 }
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1551 }
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1552
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1553
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1554 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
1555 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1556 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
1557 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
1558
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1559 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
1560 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1561 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
1562 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
1563
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1564 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1565 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1566
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1567 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
1568 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
1569
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1570 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
1571 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1572 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
1573 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1574 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1575 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1576 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
1577 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1578
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1579 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
1580 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1581 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
1582 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1583 else
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 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
1586 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1587
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1588 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
1589
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1590 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
1591 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1592
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1593 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
1594 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1595 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
1596
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1597 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
1598 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
1599
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1600 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
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->vis_width = pr->width;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1603 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
1604 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1605 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1606 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1607 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
1608 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
1609 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1610
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1611 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
1612 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1613 pr->vis_height = pr->height;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1614 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
1615 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1616 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1617 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1618 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
1619 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
1620 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1621
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1622 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
1623
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1624 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
1625 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1626
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1627 static gboolean pr_zoom_clamp(PixbufRenderer *pr, gdouble zoom,
2089
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1628 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
1629 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1630 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
1631 gdouble scale;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1632 gboolean force = !!(flags & PR_ZOOM_FORCE);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1633 gboolean new = !!(flags & PR_ZOOM_NEW);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1634
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1635 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
1636
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1637 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
1638
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1639 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
1640 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
1641
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1642 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
1643 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1644 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
1645 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1646 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
1647 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1648 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
1649 gint max_h;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1650 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
1651
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1652 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
1653
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1654 if (sizeable)
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 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
1657 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
1658
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1659 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
1660 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1661 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
1662 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
1663 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1664 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1665 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1666 {
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1667 max_w = pr->viewport_width;
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1668 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
1669 }
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 ((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
1672 {
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1673 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
1674 {
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1675 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
1676 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
1677 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
1678 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
1679 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1680 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1681 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1682 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
1683 w = max_w;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1684 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
1685 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
1686 }
209
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
1687
ce89a8349d8b configurable frame around image - geeqie_autofit_maxsize.patch by Laurent MONIN
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 208
diff changeset
1688 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
1689 {
336
d0783e36320c Fix display bug when using "Limit image size when autofitting" option.
Laurent Monin <geeqie@norz.org>
parents: 283
diff changeset
1690 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
1691 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
1692 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
1693 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
1694 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
1695
2474
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1696 if (pr->zoom_expand)
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1697 {
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1698 gdouble factor = (gdouble)pr->enlargement_limit_size / 100;
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1699 if (scale > factor)
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1700 {
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1701 w = w * factor / scale;
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1702 h = h * factor / scale;
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1703 scale = factor;
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1704 }
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1705 }
f591509cb3d3 Fix #123: Limit image expansion in Fit To Window
Colin Clark <colin.clark@cclark.uk>
parents: 2452
diff changeset
1706
23
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 < 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
1708 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
1709 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1710 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1711 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1712 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
1713 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1714 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1715 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
1716 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1717 scale = zoom;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1718 w = w * scale;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1719 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
1720 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1721 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
1722 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1723 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
1724 w = w * scale;
1880
b69a33a93ace display pixel aspect ratio support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1879
diff changeset
1725 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
1726 }
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 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
1729 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
1730 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
1731 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
1732
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1733 return TRUE;
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1736 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
1737 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
1738 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1739 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
1740 gint old_cx, old_cy;
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1741 gboolean center_point = !!(flags & PR_ZOOM_CENTER);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1742 gboolean force = !!(flags & PR_ZOOM_FORCE);
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1743 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
1744 gboolean lazy = !!(flags & PR_ZOOM_LAZY);
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1745 PrZoomFlags clamp_flags = flags;
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1746 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
1747 gdouble old_center_y = pr->norm_center_y;
2181
8addfcef82af Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents: 2180
diff changeset
1748
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1749 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
1750 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
1751 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1752 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
1753 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
1754 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
1755 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
1756 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1757 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1758 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1759 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
1760 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
1761 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
1762 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1763
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
1764 if (force) clamp_flags |= PR_ZOOM_INVALIDATE;
2487
d280894dbf80 Temporary Fix #133: switching between images causes window to keep shrinking
Colin Clark <colin.clark@cclark.uk>
parents: 2474
diff changeset
1765 (void) pr_parent_window_resize(pr, pr->width, pr->height);
2089
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1766 if (!pr_zoom_clamp(pr, zoom, clamp_flags)) return;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1767
2181
8addfcef82af Clear few more warnings, unused variables mostly.
Laurent Monin <zas@norz.org>
parents: 2180
diff changeset
1768 (void) pr_size_clamp(pr);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1769
99
7cd2368ecc9d Sat Nov 4 17:14:47 2006 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 95
diff changeset
1770 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
1771 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1772 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
1773 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1774 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
1775 /* maintain old scroll position */
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1776 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
1777 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
1778 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1779 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
1780 /* center new image */
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1781 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
1782 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
1783 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1784 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
1785 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1786 /* 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
1787 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
1788 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
1789 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1790 }
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 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1793 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1794 /* 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
1795 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
1796 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1797 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
1798 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
1799 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1800 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1801 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1802 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
1803 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
1804 }
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1807 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
1808
2074
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
1809 pr->renderer->update_zoom(pr->renderer, lazy);
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
1810 if (pr->renderer2) pr->renderer2->update_zoom(pr->renderer2, lazy);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1811
29
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
1812 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
1813 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
1814 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
1815 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1816
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1817 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
1818 {
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1819 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
1820
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1821 gint new_viewport_width = new_width;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1822 gint new_viewport_height = new_height;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1823
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1824 if (!pr->stereo_temp_disable)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1825 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1826 if (pr->stereo_mode & PR_STEREO_HORIZ)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1827 {
1894
f0412c60e9f6 fixed sbs mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1891
diff changeset
1828 new_viewport_width = new_width / 2;
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1829 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1830 else if (pr->stereo_mode & PR_STEREO_VERT)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1831 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1832 new_viewport_height = new_height / 2;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1833 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1834 else if (pr->stereo_mode & PR_STEREO_FIXED)
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1835 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1836 new_viewport_width = pr->stereo_fixed_width;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1837 new_viewport_height = pr->stereo_fixed_height;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1838 }
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
1839 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1840
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1841 if (pr->window_width == new_width && pr->window_height == new_height &&
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1842 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
1843
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1844 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
1845 pr->window_height = new_height;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1846 pr->viewport_width = new_viewport_width;
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1847 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
1848
61
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1849 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
1850 {
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1851 gdouble old_scale = pr->scale;
2089
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1852 pr_zoom_clamp(pr, 0.0, PR_ZOOM_FORCE);
61
72245fb0b946 Mon Jun 13 20:22:58 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 42
diff changeset
1853 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
1854 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1855
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1856 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
1857 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
1858
2089
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1859 if (zoom_changed)
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1860 {
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1861 pr->renderer->update_zoom(pr->renderer, FALSE);
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1862 if (pr->renderer2) pr->renderer2->update_zoom(pr->renderer2, FALSE);
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1863 }
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1864
2090
3f0bbd79773c renamed renderer->update_sizes to update_viewport
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2089
diff changeset
1865 pr->renderer->update_viewport(pr->renderer);
3f0bbd79773c renamed renderer->update_sizes to update_viewport
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2089
diff changeset
1866 if (pr->renderer2) pr->renderer2->update_viewport(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
1867
2089
60c803c18a3f simplified pr_zoom_clamp
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2088
diff changeset
1868
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1869 /* 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
1870 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
1871 {
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
1872 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
1873
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1874 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
1875 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1876 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
1877 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
1878 update = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1879 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1880 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
1881 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1882 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
1883 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
1884 update = TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1885 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1886
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1887 if (update)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1888 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1889 GdkPixbuf *pixbuf;
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 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
1892 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1893 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
1894
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1895 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
1896 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
1897 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
1898 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
1899 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1900 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1901 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1902
29
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
1903 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
1904 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
1905 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
1906 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1907
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1908 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
1909 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1910 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
1911
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1912 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
1913 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1914
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 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1917 * scrolling
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1918 *-------------------------------------------------------------------
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
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1921 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
1922 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1923 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
1924 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
1925
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1926 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
1927
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1928 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
1929
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1930 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
1931 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
1932
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1933 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
1934 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
1935
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1936 pr_scroll_clamp(pr);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1937
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1938 pixbuf_renderer_sync_scroll_center(pr);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1939
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1940 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
1941
29
410dfc57a2d0 Sun Apr 3 00:36:22 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 27
diff changeset
1942 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
1943
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1944 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
1945 y_off = pr->y_scroll - old_y;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
1946
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
1947 pr->renderer->scroll(pr->renderer, x_off, y_off);
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
1948 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
1949 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1950
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1951 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
1952 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
1953 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1954 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
1955 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
1956
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1957 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
1958 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
1959
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1960 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
1961 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
1962
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1963 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
1964 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
1965
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1966 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
1967 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1968
131
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1969 /* 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
1970
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1971 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
1972 {
1037
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1973 *x = pr->norm_center_x;
e7adeebbbe5d fixed various problems with preserving viewport on image change,
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1035
diff changeset
1974 *y = pr->norm_center_y;
131
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1975 }
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1976
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1977 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
1978 {
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1979 gdouble dst_x, dst_y;
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1980
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1981 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
1982 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
1983
1000
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1984 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
1985 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
1986
07f6093c1c1a For the sake of consistency, use glib basic types everywhere.
Laurent Monin <geeqie@norz.org>
parents: 872
diff changeset
1987 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
1988 }
d50f6061b37b relative scroll is working; some cleanup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 128
diff changeset
1989
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1990 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1991 *-------------------------------------------------------------------
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1992 * mouse
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1993 *-------------------------------------------------------------------
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
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
1996 static gboolean pr_mouse_motion_cb(GtkWidget *widget, GdkEventMotion *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
1997 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1998 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
1999 gint accel;
2373
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2000 #if GTK_CHECK_VERSION(3,0,0)
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2001 GdkDeviceManager *device_manager;
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2002 GdkDevice *device;
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2003 #endif
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2004
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2005 /* 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
2006 * 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
2007 gint x, y;
2373
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2008 #if GTK_CHECK_VERSION(3,0,0)
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2009 device_manager = gdk_display_get_device_manager(gdk_window_get_display(event->window));
2373
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2010 device = gdk_device_manager_get_client_pointer(device_manager);
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2011 gdk_window_get_device_position(event->window, device, &x, &y, NULL);
2373
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2012 #else
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2013 gdk_window_get_pointer (event->window, &x, &y, NULL);
2373
b7228e6b2a02 Fix deprecated - gdk_window_get_pointer
Colin Clark <cclark@mcb.net>
parents: 2358
diff changeset
2014 #endif
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2015 event->x = x;
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2016 event->y = y;
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2017
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2018 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
2019
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2020 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
2021 {
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2022 pr->scroller_xpos = event->x;
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2023 pr->scroller_ypos = event->y;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2024 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2025
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2026 pr->x_mouse = event->x;
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2027 pr->y_mouse = event->y;
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2028 pr_update_pixel_signal(pr);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2029
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2030 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
2031
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2032 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
2033 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2034 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
2035 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2036 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2037 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2038 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
2039 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2040
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2041 if (event->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
2042 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2043 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
2044 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2045 else
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2046 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2047 accel = 1;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2048 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2049
2801
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2636
diff changeset
2050 /* do the scroll - not when drawing rectangle*/
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2636
diff changeset
2051 if (!options->draw_rectangle)
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2636
diff changeset
2052 {
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2636
diff changeset
2053 pixbuf_renderer_scroll(pr, (pr->drag_last_x - event->x) * accel,
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2636
diff changeset
2054 (pr->drag_last_y - event->y) * accel);
3e9ca298bb1d Fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2636
diff changeset
2055 }
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2056 pr_drag_signal(pr, event);
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2057
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2058 pr->drag_last_x = event->x;
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2059 pr->drag_last_y = event->y;
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2060
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2061 /* 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
2062 * 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
2063 * http://bugzilla.gnome.org/show_bug.cgi?id=587714
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2064 */
2452
8bcdac2603d3 Fix #473: Parameter type fix for "motion-notify-event" signal handlers
Colin Clark <cclark@mcb.net>
parents: 2379
diff changeset
2065 /* gdk_event_request_motions (event); */
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2066 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2067 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2068
1584
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2069 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
2070 {
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2071 PixbufRenderer *pr;
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2072
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2073 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
2074 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
2075 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
2076
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2077 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
2078 return FALSE;
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2079 }
c97dea5d82d7 improved pixel info, changed the menu entry from "Hide" to "Show",
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1523
diff changeset
2080
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2081 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
2082 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2083 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2084 GtkWidget *parent;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2085
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2086 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
2087
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2088 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
2089
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2090 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
2091 {
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2092 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
2093 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
2094 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
2095 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
2096 pr->drag_moved = 0;
2034
9297985567b5 use accessor functions
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2021
diff changeset
2097 gdk_pointer_grab(gtk_widget_get_window(widget), FALSE,
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2098 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
2099 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
2100 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
2101 break;
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2102 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
2103 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
2104 break;
448
2c1500b5c933 Use explicit names for mouse buttons instead of numbers.
Laurent Monin <geeqie@norz.org>
parents: 446
diff changeset
2105 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
2106 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
2107 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2108 default:
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2109 break;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2110 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2111
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2112 parent = gtk_widget_get_parent(widget);
1810
c3a79dda8ea7 GTK marks several functions as deprecated
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1802
diff changeset
2113 if (widget && gtk_widget_get_can_focus(parent))
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2114 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2115 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
2116 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2117
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2118 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2119 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2120
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2121 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
2122 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2123 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2124
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2125 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
2126
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2127 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
2128 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2129 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
2130 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2131 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2132
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2133 if (gdk_pointer_is_grabbed() && gtk_widget_has_grab(GTK_WIDGET(pr)))
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2134 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2135 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
2136 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
2137 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
2138 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2139
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2140 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
2141 {
1047
229877808392 use SHIFT for connected scroll and zoom
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1045
diff changeset
2142 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
2143 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2144 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
2145 }
2629
65ddca027935 Multi-button mouse support
Tomasz Golinski <tomaszg@math.uwb.edu.pl>
parents: 2606
diff changeset
2146 else if (bevent->button == MOUSE_BUTTON_LEFT || bevent->button == MOUSE_BUTTON_MIDDLE || bevent->button == MOUSE_BUTTON_BACK || bevent->button == MOUSE_BUTTON_FORWARD)
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2147 {
25
aa1b676c31b6 Fri Mar 25 22:39:30 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 24
diff changeset
2148 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
2149 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2150 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2151
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2152 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
2153
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2154 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2155 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2156
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2157 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
2158 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2159 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2160
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2161 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
2162
1523
e52aabe8fc7a Fix up event source ids type: gint -> guint.
Laurent Monin <geeqie@norz.org>
parents: 1517
diff changeset
2163 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
2164 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2165 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
2166 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
2167 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
2168 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
2169 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2170
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2171 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2172 }
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 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
2175 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2176 PixbufRenderer *pr;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2177
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2178 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
2179
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2180 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
2181 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2182
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2183 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
2184 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2185 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
2186 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
2187 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
2188 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
2189 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
2190 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
2191 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
2192 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
2193 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
2194 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
2195
1709
07840a56692c improved scroll on slower machines
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1649
diff changeset
2196 gtk_widget_set_events(GTK_WIDGET(pr), GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK |
2111
821cab3e2fd8 added GDK_SCROLL_MASK to pixbuf renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2099
diff changeset
2197 GDK_BUTTON_RELEASE_MASK | GDK_BUTTON_PRESS_MASK | GDK_SCROLL_MASK |
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2198 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
2199
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2200 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
2201 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
2202
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2203 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2204
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2205 /*
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2206 *-------------------------------------------------------------------
1879
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2207 * stereo support
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2208 *-------------------------------------------------------------------
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2209 */
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2210
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2211 #define COLOR_BYTES 3 /* rgb */
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2212 #define RC 0 /* Red-Cyan */
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2213 #define GM 1 /* Green-Magenta */
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2214 #define YB 2 /* Yellow-Blue */
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2215
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2216 static void pr_create_anaglyph_color(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h, guint mode)
1879
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2217 {
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2218 gint srs, drs;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2219 guchar *s_pix, *d_pix;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2220 guchar *sp, *dp;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2221 guchar *spi, *dpi;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2222 gint i, j;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2223
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2224 srs = gdk_pixbuf_get_rowstride(right);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2225 s_pix = gdk_pixbuf_get_pixels(right);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2226 spi = s_pix + (x * COLOR_BYTES);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2227
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2228 drs = gdk_pixbuf_get_rowstride(pixbuf);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2229 d_pix = gdk_pixbuf_get_pixels(pixbuf);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2230 dpi = d_pix + x * COLOR_BYTES;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2231
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2232 for (i = y; i < y + h; i++)
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2233 {
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2234 sp = spi + (i * srs);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2235 dp = dpi + (i * drs);
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2236 for (j = 0; j < w; j++)
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2237 {
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2238 switch(mode)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2239 {
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2240 case RC:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2241 dp[0] = sp[0]; /* copy red channel */
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2242 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2243 case GM:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2244 dp[1] = sp[1];
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2245 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2246 case YB:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2247 dp[0] = sp[0];
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2248 dp[1] = sp[1];
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2249 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2250 }
1879
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2251 sp += COLOR_BYTES;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2252 dp += COLOR_BYTES;
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2253 }
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2254 }
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2255 }
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2256
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2257 static void pr_create_anaglyph_gray(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h, guint mode)
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2258 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2259 gint srs, drs;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2260 guchar *s_pix, *d_pix;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2261 guchar *sp, *dp;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2262 guchar *spi, *dpi;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2263 gint i, j;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2264 const double gc[3] = {0.299, 0.587, 0.114};
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2265
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2266 srs = gdk_pixbuf_get_rowstride(right);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2267 s_pix = gdk_pixbuf_get_pixels(right);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2268 spi = s_pix + (x * COLOR_BYTES);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2269
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2270 drs = gdk_pixbuf_get_rowstride(pixbuf);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2271 d_pix = gdk_pixbuf_get_pixels(pixbuf);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2272 dpi = d_pix + x * COLOR_BYTES;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2273
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2274 for (i = y; i < y + h; i++)
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2275 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2276 sp = spi + (i * srs);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2277 dp = dpi + (i * drs);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2278 for (j = 0; j < w; j++)
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2279 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2280 guchar g1 = dp[0] * gc[0] + dp[1] * gc[1] + dp[2] * gc[2];
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2281 guchar g2 = sp[0] * gc[0] + sp[1] * gc[1] + sp[2] * gc[2];
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2282 switch(mode)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2283 {
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2284 case RC:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2285 dp[0] = g2; /* red channel from sp */
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2286 dp[1] = g1; /* green and blue from dp */
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2287 dp[2] = g1;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2288 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2289 case GM:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2290 dp[0] = g1;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2291 dp[1] = g2;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2292 dp[2] = g1;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2293 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2294 case YB:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2295 dp[0] = g2;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2296 dp[1] = g2;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2297 dp[2] = g1;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2298 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2299 }
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2300 sp += COLOR_BYTES;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2301 dp += COLOR_BYTES;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2302 }
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2303 }
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2304 }
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2305
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2306 static void pr_create_anaglyph_dubois(GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h, guint mode)
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2307 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2308 gint srs, drs;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2309 guchar *s_pix, *d_pix;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2310 guchar *sp, *dp;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2311 guchar *spi, *dpi;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2312 gint i, j, k;
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2313 double pr_dubois_matrix[3][6];
2606
1e344397544c Remove some stuff that is throwing errors in gcc-7
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2604
diff changeset
2314 static const double pr_dubois_matrix_RC[3][6] = {
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2315 { 0.456, 0.500, 0.176, -0.043, -0.088, -0.002},
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2316 {-0.040, -0.038, -0.016, 0.378, 0.734, -0.018},
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2317 {-0.015, -0.021, -0.005, -0.072, -0.113, 1.226}};
2606
1e344397544c Remove some stuff that is throwing errors in gcc-7
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2604
diff changeset
2318 static const double pr_dubois_matrix_GM[3][6] = {
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2319 {-0.062, -0.158, -0.039, 0.529, 0.705, 0.024},
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2320 { 0.284, 0.668, 0.143, -0.016, -0.015, -0.065},
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2321 {-0.015, -0.027, 0.021, 0.009, 0.075, 0.937}};
2606
1e344397544c Remove some stuff that is throwing errors in gcc-7
Klaus Ethgen <Klaus@Ethgen.de>
parents: 2604
diff changeset
2322 static const double pr_dubois_matrix_YB[3][6] = {
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2323 { 1.000, -0.193, 0.282, -0.015, -0.116, -0.016},
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2324 {-0.024, 0.855, 0.064, 0.006, 0.058, -0.016},
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2325 {-0.036, -0.163, 0.021, 0.089, 0.174, 0.858}};
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2326
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2327 switch(mode)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2328 {
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2329 case RC:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2330 memcpy(pr_dubois_matrix, pr_dubois_matrix_RC, sizeof pr_dubois_matrix);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2331 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2332 case GM:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2333 memcpy(pr_dubois_matrix, pr_dubois_matrix_GM, sizeof pr_dubois_matrix);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2334 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2335 case YB:
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2336 memcpy(pr_dubois_matrix, pr_dubois_matrix_YB, sizeof pr_dubois_matrix);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2337 break;
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2338 }
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2339
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2340 srs = gdk_pixbuf_get_rowstride(right);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2341 s_pix = gdk_pixbuf_get_pixels(right);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2342 spi = s_pix + (x * COLOR_BYTES);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2343
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2344 drs = gdk_pixbuf_get_rowstride(pixbuf);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2345 d_pix = gdk_pixbuf_get_pixels(pixbuf);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2346 dpi = d_pix + x * COLOR_BYTES;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2347
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2348 for (i = y; i < y + h; i++)
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2349 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2350 sp = spi + (i * srs);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2351 dp = dpi + (i * drs);
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2352 for (j = 0; j < w; j++)
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2353 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2354 double res[3];
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2355 for (k = 0; k < 3; k++)
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2356 {
2069
3d360d8f51a2 Don't discard const
Laurent Monin <zas@norz.org>
parents: 2043
diff changeset
2357 const double *m = pr_dubois_matrix[k];
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2358 res[k] = sp[0] * m[0] + sp[1] * m[1] + sp[2] * m[2] + dp[0] * m[3] + dp[1] * m[4] + dp[2] * m[5];
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2359 if (res[k] < 0.0) res[k] = 0;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2360 if (res[k] > 255.0) res[k] = 255.0;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2361 }
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2362 dp[0] = res[0];
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2363 dp[1] = res[1];
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2364 dp[2] = res[2];
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2365 sp += COLOR_BYTES;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2366 dp += COLOR_BYTES;
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2367 }
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2368 }
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2369 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2370
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2371 void pr_create_anaglyph(guint mode, GdkPixbuf *pixbuf, GdkPixbuf *right, gint x, gint y, gint w, gint h)
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2372 {
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2373 if (mode & PR_STEREO_ANAGLYPH_RC)
2255
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2374 pr_create_anaglyph_color(pixbuf, right, x, y, w, h, RC);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2375 else if (mode & PR_STEREO_ANAGLYPH_GM)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2376 pr_create_anaglyph_color(pixbuf, right, x, y, w, h, GM);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2377 else if (mode & PR_STEREO_ANAGLYPH_YB)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2378 pr_create_anaglyph_color(pixbuf, right, x, y, w, h, YB);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2379 else if (mode & PR_STEREO_ANAGLYPH_GRAY_RC)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2380 pr_create_anaglyph_gray(pixbuf, right, x, y, w, h, RC);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2381 else if (mode & PR_STEREO_ANAGLYPH_GRAY_GM)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2382 pr_create_anaglyph_gray(pixbuf, right, x, y, w, h, GM);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2383 else if (mode & PR_STEREO_ANAGLYPH_GRAY_YB)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2384 pr_create_anaglyph_gray(pixbuf, right, x, y, w, h, YB);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2385 else if (mode & PR_STEREO_ANAGLYPH_DB_RC)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2386 pr_create_anaglyph_dubois(pixbuf, right, x, y, w, h, RC);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2387 else if (mode & PR_STEREO_ANAGLYPH_DB_GM)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2388 pr_create_anaglyph_dubois(pixbuf, right, x, y, w, h, GM);
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2389 else if (mode & PR_STEREO_ANAGLYPH_DB_YB)
c67b4f60c4b1 Add support for Green-Magenta and Yellow-Blue anaglyph modes
Alexey Akishin <alex@science.su>
parents: 2185
diff changeset
2390 pr_create_anaglyph_dubois(pixbuf, right, x, y, w, h, YB);
1896
9604c72ac670 added more anaglyph modes
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1895
diff changeset
2391 }
1879
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2392
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2393 /*
880d06578486 anaglyph support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1875
diff changeset
2394 *-------------------------------------------------------------------
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2395 * public
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 */
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2398 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
2399 {
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2400 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
2401 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
2402 if (!pr->pixbuf) return;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2403 switch (pr->orientation)
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2404 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2405 case EXIF_ORIENTATION_LEFT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2406 case EXIF_ORIENTATION_RIGHT_TOP:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2407 case EXIF_ORIENTATION_RIGHT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2408 case EXIF_ORIENTATION_LEFT_BOTTOM:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2409 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
2410 pr->image_height = gdk_pixbuf_get_width(pr->pixbuf);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2411 if (pr->stereo_data == STEREO_PIXBUF_SBS)
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2412 {
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2413 pr->image_height /= 2;
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2414 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
2415 }
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2416 else if (pr->stereo_data == STEREO_PIXBUF_CROSS)
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2417 {
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2418 pr->image_height /= 2;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2419 pr->stereo_pixbuf_offset_left = pr->image_height;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2420 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2421
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2422 break;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2423 default:
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2424 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
2425 pr->image_height = gdk_pixbuf_get_height(pr->pixbuf);
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2426 if (pr->stereo_data == STEREO_PIXBUF_SBS)
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2427 {
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2428 pr->image_width /= 2;
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2429 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
2430 }
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2431 else if (pr->stereo_data == STEREO_PIXBUF_CROSS)
1888
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2432 {
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2433 pr->image_width /= 2;
039d5c8864a0 type of source stereo image made adjustable from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1886
diff changeset
2434 pr->stereo_pixbuf_offset_left = pr->image_width;
1875
e9b157ab56a6 first stereo support
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1874
diff changeset
2435 }
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 }
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2438
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2439 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
2440 {
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2441 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
2442 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
2443 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
2444
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2445 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
2446 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2447 /* 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
2448 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
2449 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
2450 pr->scale = 1.0;
1634
7e8bc9e5cdd7 preserve zoom value on fullscreen startup
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1633
diff changeset
2451 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
2452 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
2453
2091
f8e5de56fc04 dropped renderer->overlay_draw
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2090
diff changeset
2454 pr->renderer->update_pixbuf(pr->renderer, flags & PR_ZOOM_LAZY);
f8e5de56fc04 dropped renderer->overlay_draw
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2090
diff changeset
2455 if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, 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
2456
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2457 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
2458
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2459 return;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2460 }
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
2461
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2462 if (pr->stereo_mode & PR_STEREO_TEMP_DISABLE)
1920
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2463 {
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2464 gint disable = !pr->pixbuf || ! pr->stereo_data;
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2465 pr_stereo_temp_disable(pr, disable);
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2466 }
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2467
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2468 pr_pixbuf_size_sync(pr);
2074
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
2469 pr->renderer->update_pixbuf(pr->renderer, flags & PR_ZOOM_LAZY);
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
2470 if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, flags & PR_ZOOM_LAZY);
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2471 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
2472 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2473
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2474 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
2475 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2476 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
2477
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2478 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
2479
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2480 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
2481
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2482 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
2483 }
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2484
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2485 void pixbuf_renderer_set_pixbuf_lazy(PixbufRenderer *pr, GdkPixbuf *pixbuf, gdouble zoom, gint orientation, StereoPixbufData stereo_data)
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2486 {
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2487 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
2488
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2489 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
2490
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2491 pr->orientation = orientation;
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2492 pr->stereo_data = stereo_data;
1045
19bc806e0a69 added possibility to redraw only the parts of image that are already
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1043
diff changeset
2493 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
2494
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2495 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
2496 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2497
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2498 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
2499 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2500 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
2501
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2502 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
2503 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2504
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2505 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
2506 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2507 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
2508
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2509 pr->orientation = orientation;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2510
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2511 pr_pixbuf_size_sync(pr);
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2512 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
2513 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2514
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2515 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
2516 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2517 if (!pr) return 1;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2518 return pr->orientation;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2519 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2520
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2521 void pixbuf_renderer_set_stereo_data(PixbufRenderer *pr, StereoPixbufData stereo_data)
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2522 {
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2523 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
2088
2f5862670004 fixed unnecessary renderer backend calls
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2084
diff changeset
2524 if (pr->stereo_data == stereo_data) return;
2f5862670004 fixed unnecessary renderer backend calls
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2084
diff changeset
2525
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2526
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2527 pr->stereo_data = stereo_data;
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2528
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2529 if (pr->stereo_mode & PR_STEREO_TEMP_DISABLE)
1920
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2530 {
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2531 gint disable = !pr->pixbuf || ! pr->stereo_data;
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2532 pr_stereo_temp_disable(pr, disable);
465b904a7e05 fixed stereo_temp_disable functionality
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1916
diff changeset
2533 }
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2534 pr_pixbuf_size_sync(pr);
2074
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
2535 pr->renderer->update_pixbuf(pr->renderer, FALSE);
b56062760fc2 implemented clutter-based renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2069
diff changeset
2536 if (pr->renderer2) pr->renderer2->update_pixbuf(pr->renderer2, FALSE);
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2537 pr_zoom_sync(pr, pr->zoom, PR_ZOOM_FORCE, 0, 0);
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2538 }
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2539
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2540 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
2541 {
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2542 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
442
f698b737556b Big whitespaces cleanup:
Laurent Monin <geeqie@norz.org>
parents: 409
diff changeset
2543
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2544 pr->func_post_process = func;
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2545 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
2546 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
2547
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2548 }
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2549
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2550
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2551 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
2552 {
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2553 GObject *object;
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2554 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
2555
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2556 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
2557 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
2558
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2559 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
2560
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2561 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
2562
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2563 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
2564 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
2565 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
2566
42
056d96cdec23 Sat May 14 13:04:23 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 38
diff changeset
2567 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
2568
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2569 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
2570 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
2571 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
2572 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
2573
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2574 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
2575 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
2576
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2577 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
2578 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
2579 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
2580 pr->orientation = source->orientation;
1916
69ab167a50f5 do not mix autodetected and user-defined stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1905
diff changeset
2581 pr->stereo_data = source->stereo_data;
398
3297e8f0d5d7 image post-processing (rotation and color management) moved to
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 386
diff changeset
2582
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2583 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
2584 {
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2585 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
2586
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2587 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
2588 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
2589 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
2590 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
2591 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
2592 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
2593
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2594 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
2595 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
2596 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
2597
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2598 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
2599 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
2600
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2601 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
2602 }
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2603 else
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2604 {
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2605 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
2606 }
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2607
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2608 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
2609
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2610 pixbuf_renderer_set_pixbuf(source, NULL, source->zoom);
2099
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2611 }
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2612
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2613 void pixbuf_renderer_copy(PixbufRenderer *pr, PixbufRenderer *source)
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2614 {
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2615 GObject *object;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2616 PixbufRendererScrollResetType scroll_reset;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2617
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2618 g_return_if_fail(IS_PIXBUF_RENDERER(pr));
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2619 g_return_if_fail(IS_PIXBUF_RENDERER(source));
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2620
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2621 if (pr == source) return;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2622
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2623 object = G_OBJECT(pr);
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2624
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2625 g_object_set(object, "zoom_min", source->zoom_min, NULL);
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2626 g_object_set(object, "zoom_max", source->zoom_max, NULL);
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2627 g_object_set(object, "loading", source->loading, NULL);
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2628
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2629 pr->complete = source->complete;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2630
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2631 pr->x_scroll = source->x_scroll;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2632 pr->y_scroll = source->y_scroll;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2633 pr->x_mouse = source->x_mouse;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2634 pr->y_mouse = source->y_mouse;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2635
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2636 scroll_reset = pr->scroll_reset;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2637 pr->scroll_reset = PR_SCROLL_RESET_NOCHANGE;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2638
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2639 pr->orientation = source->orientation;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2640 pr->stereo_data = source->stereo_data;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2641
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2642 if (source->source_tiles_enabled)
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2643 {
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2644 pr->source_tiles_enabled = source->source_tiles_enabled;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2645 pr->source_tiles_cache_size = source->source_tiles_cache_size;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2646 pr->source_tile_width = source->source_tile_width;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2647 pr->source_tile_height = source->source_tile_height;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2648 pr->image_width = source->image_width;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2649 pr->image_height = source->image_height;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2650
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2651 pr->func_tile_request = source->func_tile_request;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2652 pr->func_tile_dispose = source->func_tile_dispose;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2653 pr->func_tile_data = source->func_tile_data;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2654
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2655 pr->source_tiles = source->source_tiles;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2656 source->source_tiles = NULL;
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2657
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2658 pr_zoom_sync(pr, source->zoom, PR_ZOOM_FORCE | PR_ZOOM_NEW, 0, 0);
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2659 }
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2660 else
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2661 {
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2662 pixbuf_renderer_set_pixbuf(pr, source->pixbuf, source->zoom);
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2663 }
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2664
cd445a64205f implemented presentation mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2095
diff changeset
2665 pr->scroll_reset = scroll_reset;
24
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2666 }
ca420b4159df Wed Mar 23 00:22:28 2005 John Ellis <johne@verizon.net>
John Ellis <johne@verizon.net>
parents: 23
diff changeset
2667
1897
b1fe543de73a fixed area_changed handling
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1896
diff changeset
2668 void pixbuf_renderer_area_changed(PixbufRenderer *pr, gint x, gint y, 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
2669 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2670 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
2671
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2672 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
2673 {
1897
b1fe543de73a fixed area_changed handling
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1896
diff changeset
2674 pr_source_tile_changed(pr, x, y, w, h);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2675 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2676
1897
b1fe543de73a fixed area_changed handling
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1896
diff changeset
2677 pr->renderer->area_changed(pr->renderer, x, y, w, h);
b1fe543de73a fixed area_changed handling
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1896
diff changeset
2678 if (pr->renderer2) pr->renderer2->area_changed(pr->renderer2, x, y, w, h);
23
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2679 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2680
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2681 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
2682 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2683 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
2684
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2685 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
2686 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2687
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2688 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
2689 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2690 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
2691
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2692 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
2693 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2694
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2695 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
2696 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2697 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
2698
859
45d06e0b62c7 Use flags for pr_zoom_*() functions.
Laurent Monin <geeqie@norz.org>
parents: 857
diff changeset
2699 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
2700 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2701
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2702 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
2703 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2704 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
2705
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2706 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
2707 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2708
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2709 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
2710 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2711 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
2712
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2713 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
2714 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2715
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2716 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
2717 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2718 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
2719
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2720 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
2721 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
2722 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
2723
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2724 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
2725 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2726 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
2727 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
2728 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2729 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
2730 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2731 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
2732 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
2733 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2734 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2735
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2736 static void pr_stereo_set(PixbufRenderer *pr)
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2737 {
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
2738 if (!pr->renderer) pr->renderer = pr_backend_renderer_new(pr);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2739
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2740 pr->renderer->stereo_set(pr->renderer, pr->stereo_mode & ~PR_STEREO_MIRROR_RIGHT & ~PR_STEREO_FLIP_RIGHT);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2741
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2742 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
2743 {
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
2744 if (!pr->renderer2) pr->renderer2 = pr_backend_renderer_new(pr);
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2745 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
2746 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2747 else
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2748 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2749 if (pr->renderer2) pr->renderer2->free(pr->renderer2);
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2750 pr->renderer2 = NULL;
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2751 }
1895
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2752 if (pr->stereo_mode & PR_STEREO_HALF)
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2753 {
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2754 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
2755 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
2756 else pr->aspect_ratio = 1.0;
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2757 }
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2758 else
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2759 {
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2760 pr->aspect_ratio = 1.0;
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2761 }
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2762 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2763
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2764 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
2765 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2766 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
2767 pr->stereo_mode = stereo_mode;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2768 if ((stereo_mode & PR_STEREO_TEMP_DISABLE) && pr->stereo_temp_disable) return;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2769
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2770 pr->stereo_temp_disable = FALSE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2771
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2772 pr_stereo_set(pr);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2773
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2774 if (redraw)
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2775 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2776 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
2777 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
2778 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2779 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2780
1891
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2781 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
2782 {
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2783 pr->stereo_fixed_width = width;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2784 pr->stereo_fixed_height = height;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2785 pr->stereo_fixed_x_left = x1;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2786 pr->stereo_fixed_y_left = y1;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2787 pr->stereo_fixed_x_right = x2;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2788 pr->stereo_fixed_y_right = y2;
25645af65caf added fixed stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1889
diff changeset
2789 }
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2790
1886
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2791 gint pixbuf_renderer_stereo_get(PixbufRenderer *pr)
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2792 {
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2793 return pr->stereo_mode;
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2794 }
ba2f9ac17b54 change stereo mode from menu
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1885
diff changeset
2795
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2796 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
2797 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2798 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
2799 pr->stereo_temp_disable = disable;
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2800 if (disable)
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2801 {
2084
1c712b43f063 added option for clutter renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2077
diff changeset
2802 if (!pr->renderer) pr->renderer = pr_backend_renderer_new(pr);
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2803 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
2804 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
2805 pr->renderer2 = NULL;
1895
6e3edda945ae added half-size (3dtv) stereo mode
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1894
diff changeset
2806 pr->aspect_ratio = 1.0;
1889
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2807 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2808 else
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2809 {
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2810 pr_stereo_set(pr);
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2811 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2812 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
2813 }
14088e0b25ec temporarily disable stereo mode, added more stereo prefs
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1888
diff changeset
2814
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2815 gboolean pixbuf_renderer_get_pixel_colors(PixbufRenderer *pr, gint x_pixel, gint y_pixel,
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2816 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
2817 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2818 GdkPixbuf *pb = pr->pixbuf;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2819 gint p_alpha, prs;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2820 guchar *p_pix, *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2821 gint map_x, map_y, map_w, map_h;
2358
e77b4764e794 Properly open and work with large TIFF files.
Martin Pelikán <mpel@google.com>
parents: 2350
diff changeset
2822 size_t xoff, yoff;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2823
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2824 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
2825 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
2826
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2827 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
2828 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2829 *r_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2830 *g_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2831 *b_mouse = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2832 return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2833 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2834
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2835 if (!pb) return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2836
1874
ca810ea8fae9 separated tile renderer
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1865
diff changeset
2837 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
2838 x_pixel, y_pixel,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2839 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
2840 1, 1, /*single pixel */
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2841 &map_x, &map_y,
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2842 &map_w, &map_h);
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2843
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2844 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
2845 if (map_y < 0 || map_y > gdk_pixbuf_get_height(pr->pixbuf) - 1) return FALSE;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2846
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2847 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
2848 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
2849 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
2850
2358
e77b4764e794 Properly open and work with large TIFF files.
Martin Pelikán <mpel@google.com>
parents: 2350
diff changeset
2851 xoff = (size_t)map_x * (p_alpha ? 4 : 3);
e77b4764e794 Properly open and work with large TIFF files.
Martin Pelikán <mpel@google.com>
parents: 2350
diff changeset
2852 yoff = (size_t)map_y * prs;
e77b4764e794 Properly open and work with large TIFF files.
Martin Pelikán <mpel@google.com>
parents: 2350
diff changeset
2853 pp = p_pix + yoff + xoff;
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2854 *r_mouse = *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2855 pp++;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2856 *g_mouse = *pp;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2857 pp++;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2858 *b_mouse = *pp;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2859
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2860 return TRUE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2861 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2862
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2863 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
2864 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2865 gint x_pixel, y_pixel, x_pixel_clamped, y_pixel_clamped;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2866
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2867 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
2868 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
2869
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2870 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
2871 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2872 *x_pixel_return = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2873 *y_pixel_return = -1;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2874 return FALSE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2875 }
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2876
1492
3044b1b97143 Fixed bug where pixel/color information at x=0 coordinates werent shown:
Laurent Monin <geeqie@norz.org>
parents: 1435
diff changeset
2877 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
2878 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
2879 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
2880 y_pixel_clamped = CLAMP(y_pixel, 0, pr->image_height - 1);
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2881
2862
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2882 if (x_pixel != x_pixel_clamped)
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2883 {
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2884 /* mouse is not on pr */
2862
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2885 x_pixel = -1;
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2886 }
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2887 if (y_pixel != y_pixel_clamped)
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2888 {
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2889 /* mouse is not on pr */
f105ca657cb3 Bug fix #251: Crop simulation
Colin Clark <colin.clark@cclark.uk>
parents: 2801
diff changeset
2890 y_pixel = -1;
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2891 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2892
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2893 *x_pixel_return = x_pixel;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2894 *y_pixel_return = y_pixel;
2185
c14a1d8e6aa4 Trim trailing white spaces on empty lines.
Laurent Monin <zas@norz.org>
parents: 2184
diff changeset
2895
1375
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2896 return TRUE;
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2897 }
08db75ca4713 Display pixel coordinates and rgb - patch by Ruben Stein
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1373
diff changeset
2898
1431
13c985b6e35e More gboolean and tidy up.
Laurent Monin <geeqie@norz.org>
parents: 1375
diff changeset
2899 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
2900 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2901 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
2902 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
2903
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2904 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
2905 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2906 *width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2907 *height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2908 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2909 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2910
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2911 *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
2912 *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
2913 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2914 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2915
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2916 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
2917 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2918 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
2919 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
2920
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2921 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
2922 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2923 *width = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2924 *height = 0;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2925 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2926 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2927
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2928 *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
2929 *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
2930 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2931 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2932
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2933 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
2934 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2935 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
2936 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
2937
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2938 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
2939 !pr->scale)
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2940 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2941 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
2942 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
2943 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
2944 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
2945 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2946 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2947
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2948 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
2949 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
2950 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
2951 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
2952 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2953 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2954
1435
ff8338a0b68b gint -> gboolean.
Laurent Monin <geeqie@norz.org>
parents: 1431
diff changeset
2955 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
2956 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2957 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
2958 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
2959
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2960 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
2961 {
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2962 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
2963 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
2964 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
2965 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
2966 return FALSE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2967 }
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2968
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2969 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
2970 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
2971 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
2972 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
2973 return TRUE;
9ff428db7772 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
John Ellis <johne@verizon.net>
parents:
diff changeset
2974 }
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2975
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2976 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
2977 {
2088
2f5862670004 fixed unnecessary renderer backend calls
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2084
diff changeset
2978 #if 0
2184
9cdebd070874 Trim trailing white spaces.
Laurent Monin <zas@norz.org>
parents: 2181
diff changeset
2979 /* FIXME: this function does not consider the image orientation,
2088
2f5862670004 fixed unnecessary renderer backend calls
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2084
diff changeset
2980 so it probably only breaks something */
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2981 gdouble zoom;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2982 gint w, h;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2983
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2984 zoom = pixbuf_renderer_zoom_get(pr);
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2985 pr->image_width = width;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2986 pr->image_height = height;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2987
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2988 pr_zoom_clamp(pr, zoom, PR_ZOOM_FORCE, NULL);
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2989
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2990 //w = width;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2991 //h = height;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2992
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2993 //pr->width = width;
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2994 //pr->height = height;
2088
2f5862670004 fixed unnecessary renderer backend calls
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 2084
diff changeset
2995 #endif
1865
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2996 }
d525caac8cad Fix the windowsize
Klaus Ethgen <Klaus@Ethgen.de>
parents: 1810
diff changeset
2997
1055
4bbdfab3c89a Adding a vim modeline to all files - patch by Klaus Ethgen
Vladimir Nadvornik <nadvornik@suse.cz>
parents: 1047
diff changeset
2998 /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */