File: imagepresent.h

package info (click to toggle)
nip2 8.9.1-2
  • links: PTS
  • area: main
  • in suites: forky, sid
  • size: 23,404 kB
  • sloc: ansic: 64,076; sh: 4,681; yacc: 1,133; makefile: 927; lex: 386; xml: 40; perl: 17
file content (122 lines) | stat: -rw-r--r-- 3,394 bytes parent folder | download | duplicates (7)
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
111
112
113
114
115
116
117
118
119
120
121
122
/* Imagepresent widget stuff.
 */

/*

    Copyright (C) 1991-2001 The Natoinal Gallery

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along
    with this program; if not, write to the Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

 */

/*

    These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk

 */

#define TYPE_IMAGEPRESENT (imagepresent_get_type())
#define IMAGEPRESENT( obj ) \
	(G_TYPE_CHECK_INSTANCE_CAST( (obj), TYPE_IMAGEPRESENT, Imagepresent ))
#define IMAGEPRESENT_CLASS( klass ) \
	(G_TYPE_CHECK_CLASS_CAST( (klass), \
		TYPE_IMAGEPRESENT, ImagepresentClass))
#define IS_IMAGEPRESENT( obj ) \
	(G_TYPE_CHECK_INSTANCE_TYPE( (obj), TYPE_IMAGEPRESENT ))
#define IS_IMAGEPRESENT_CLASS( klass ) \
	(G_TYPE_CHECK_CLASS_TYPE( (klass), TYPE_IMAGEPRESENT ))
#define IMAGEPRESENT_GET_CLASS( obj ) \
	(G_TYPE_INSTANCE_GET_CLASS( (obj), \
		TYPE_IMAGEPRESENT, ImagepresentClass ))

/* Track an image view canvas in one of these.
 */
struct _Imagepresent {
	GtkBin parent_object;

	/* Context.
	 */
	Imagemodel *imagemodel;		/* Keep model parts of widgets here */

	/* Sub-widgets.
	 */
	Imagedisplay *id;		/* Image we display */
	GtkScrolledWindow *swin;
	GtkAdjustment *hadj;
	GtkAdjustment *vadj;
	GtkHRuler *hrule;		/* Rulers */
	GtkVRuler *vrule;
	GtkEventBox *heb;		/* EventBoxes holding rulers */
	GtkEventBox *veb;
	iWindowCursorContext *cntxt;
	GtkWidget *ruler_menu;

	/* Panning stuff.
	 */
	guint dx, dy;		/* Drag start position */

	/* Last known mouse position, mouse in window.
	 */
	int last_x, last_y;
	gboolean inside;

	/* Background scroll stuff.
	 */
	guint scroll_tid;
	int u, v;

	/* Rubberbanding.
	 */
	Regionview *regionview;	/* region rubberband display */
	Rect floating;		/* rubberband area */

	/* Painting stuff.
	 */
	int paint_last_x;
	int paint_last_y;

	/* Regionviews drawing on us. Used for snap-to-guide stuff.
	 */
	GSList *regionviews;

	/* The regionview that's currently grabbed ... maintained for us by
	 * regionview.c ... see regionview_attach()/_detach()
	 */
	Regionview *grabbed;
};

/* Class structure.
 */
typedef struct _ImagepresentClass {
	/* Our parent.
	 */
	GtkBinClass parent_class;
} ImagepresentClass;

gboolean imagepresent_snap_point( Imagepresent *ip, 
	int x, int y, int *sx, int *sy );
gboolean imagepresent_snap_rect( Imagepresent *ip, Rect *in, Rect *out );

void imagepresent_paint_recalc( Imagepresent *ip );

GType imagepresent_get_type( void );
Imagepresent *imagepresent_new( Imagemodel *imagemodel );

void imagepresent_set_position( Imagepresent *ip, int x, int w );
void imagepresent_set_mag_pos( Imagepresent *ip, int mag, int ix, int iy );
void imagepresent_zoom_to( Imagepresent *ip, int mag );

void imagepresent_scroll_start( Imagepresent *ip, int u, int v );
void imagepresent_scroll_stop( Imagepresent *ip );