1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
#ifndef _EOG_SCROLL_VIEW_H_
#define _EOG_SCROLL_VIEW_H_
#include <gtk/gtk.h>
#include "eog-image.h"
G_BEGIN_DECLS
typedef struct _EogScrollView EogScrollView;
typedef struct _EogScrollViewClass EogScrollViewClass;
typedef struct _EogScrollViewPrivate EogScrollViewPrivate;
#define EOG_TYPE_SCROLL_VIEW (eog_scroll_view_get_type ())
#define EOG_SCROLL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EOG_TYPE_SCROLL_VIEW, EogScrollView))
#define EOG_SCROLL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EOG_TYPE_SCROLL_VIEW, EogScrollViewClass))
#define EOG_IS_SCROLL_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EOG_TYPE_SCROLL_VIEW))
#define EOG_IS_SCROLL_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EOG_TYPE_SCROLL_VIEW))
struct _EogScrollView {
GtkGrid base_instance;
EogScrollViewPrivate *priv;
};
struct _EogScrollViewClass {
GtkGridClass parent_class;
void (* zoom_changed) (EogScrollView *view, double zoom);
void (* rotation_changed) (EogScrollView *view, double degrees);
void (* next_image) (EogScrollView *view);
void (* previous_image) (EogScrollView *view);
};
/**
* EogTransparencyStyle:
* @EOG_TRANSP_BACKGROUND: Use the background color of the current UI theme
* @EOG_TRANSP_CHECKED: Show transparent parts as a checkerboard pattern
* @EOG_TRANSP_COLOR: Show transparent parts in a user defined color
* (see #EogScrollView:transparency-color )
*
* Used to define how transparent image parts are drawn.
*/
typedef enum {
EOG_TRANSP_BACKGROUND,
EOG_TRANSP_CHECKED,
EOG_TRANSP_COLOR
} EogTransparencyStyle;
/**
* EogZoomMode:
* @EOG_ZOOM_MODE_FREE: Use the currently set zoom factor to display the image
* (see eog_scroll_view_set_zoom()).
* @EOG_ZOOM_MODE_SHRINK_TO_FIT: If an image is to large for the window,
* zoom out until the image is fully visible.
* This will never zoom in on smaller images.
*
* Used to determine the zooming behaviour of an #EogScrollView.
*/
typedef enum {
EOG_ZOOM_MODE_FREE,
EOG_ZOOM_MODE_SHRINK_TO_FIT
} EogZoomMode;
#define EOG_SCROLL_VIEW_MAX_ZOOM_FACTOR (20)
#define EOG_SCROLL_VIEW_MIN_ZOOM_FACTOR (0.02)
GType eog_scroll_view_get_type (void) G_GNUC_CONST;
GtkWidget* eog_scroll_view_new (void);
/* loading stuff */
void eog_scroll_view_set_image (EogScrollView *view, EogImage *image);
EogImage* eog_scroll_view_get_image (EogScrollView *view);
/* general properties */
void eog_scroll_view_set_scroll_wheel_zoom (EogScrollView *view, gboolean scroll_wheel_zoom);
void eog_scroll_view_set_zoom_upscale (EogScrollView *view, gboolean upscale);
void eog_scroll_view_set_zoom_multiplier (EogScrollView *view, gdouble multiplier);
void eog_scroll_view_set_zoom_mode (EogScrollView *view, EogZoomMode mode);
EogZoomMode eog_scroll_view_get_zoom_mode (EogScrollView *view);
void eog_scroll_view_set_antialiasing_in (EogScrollView *view, gboolean state);
void eog_scroll_view_set_antialiasing_out (EogScrollView *view, gboolean state);
void eog_scroll_view_set_transparency_color (EogScrollView *view, GdkRGBA *color);
void eog_scroll_view_set_transparency (EogScrollView *view, EogTransparencyStyle style);
gboolean eog_scroll_view_scrollbars_visible (EogScrollView *view);
void eog_scroll_view_set_popup (EogScrollView *view, GtkMenu *menu);
void eog_scroll_view_set_background_color (EogScrollView *view,
const GdkRGBA *color);
void eog_scroll_view_override_bg_color (EogScrollView *view,
const GdkRGBA *color);
void eog_scroll_view_set_use_bg_color (EogScrollView *view, gboolean use);
/* zoom api */
void eog_scroll_view_zoom_in (EogScrollView *view, gboolean smooth);
void eog_scroll_view_zoom_out (EogScrollView *view, gboolean smooth);
void eog_scroll_view_set_zoom (EogScrollView *view, double zoom);
double eog_scroll_view_get_zoom (EogScrollView *view);
gboolean eog_scroll_view_get_zoom_is_min (EogScrollView *view);
gboolean eog_scroll_view_get_zoom_is_max (EogScrollView *view);
void eog_scroll_view_show_cursor (EogScrollView *view);
void eog_scroll_view_hide_cursor (EogScrollView *view);
gboolean eog_scroll_view_event_is_over_image (EogScrollView *view,
const GdkEvent *ev);
G_END_DECLS
#endif /* _EOG_SCROLL_VIEW_H_ */
|