2 #ifndef __GXK_SCROLL_CANVAS_H__
3 #define __GXK_SCROLL_CANVAS_H__
10 #define GXK_TYPE_SCROLL_CANVAS (gxk_scroll_canvas_get_type ())
11 #define GXK_SCROLL_CANVAS(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GXK_TYPE_SCROLL_CANVAS, GxkScrollCanvas))
12 #define GXK_SCROLL_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GXK_TYPE_SCROLL_CANVAS, GxkScrollCanvasClass))
13 #define GXK_IS_SCROLL_CANVAS(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GXK_TYPE_SCROLL_CANVAS))
14 #define GXK_IS_SCROLL_CANVAS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GXK_TYPE_SCROLL_CANVAS))
15 #define GXK_SCROLL_CANVAS_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), GXK_TYPE_SCROLL_CANVAS, GxkScrollCanvasClass))
21 GXK_DRAG_AREA_RESIZE = 1 << 0,
22 GXK_DRAG_AREA_ENRICH = 1 << 1,
23 GXK_DRAG_AREA_REDUCE = 1 << 2,
24 GXK_DRAG_AREA_XOR = 1 << 3,
25 GXK_DRAG_RATIO_FIXED = 1 << 8,
26 GXK_DRAG_OFFSET_CENTERED = 1 << 9,
28 GxkDragMode gxk_drag_modifier_start (GdkModifierType key_mods);
29 GxkDragMode gxk_drag_modifier_next (GdkModifierType key_mods,
30 GxkDragMode last_drag_mods);
39 GXK_DRAG_UNHANDLED = GXK_DRAG_START,
40 GXK_DRAG_CONTINUE = GXK_DRAG_MOTION,
41 GXK_DRAG_HANDLED = GXK_DRAG_DONE,
42 GXK_DRAG_ERROR = GXK_DRAG_ABORT
46 #define GXK_SCROLL_CANVAS_DRAG_FIELDS \
48 GdkWindow *drawable; \
50 GxkDragMode mode : 16; \
54 GxkDragStatus type : 16; \
55 guint window_drag : 1; \
56 guint canvas_drag : 1; \
57 guint top_panel_drag : 1; \
58 guint left_panel_drag : 1; \
59 guint right_panel_drag : 1; \
60 guint bottom_panel_drag : 1; \
61 guint ___dummy1 : 2; \
63 guint start_confined : 1; \
65 guint current_confined : 1; \
66 gint start_x, start_y; \
67 gint current_x, current_y; \
69 GxkDragStatus state : 16; \
75 GXK_SCROLL_CANVAS_DRAG_FIELDS;
87 gint top_panel_height;
88 gint left_panel_width;
89 gint right_panel_width;
90 gint bottom_panel_height;
91 gint canvas_width, max_canvas_width;
92 gint canvas_height, max_canvas_height;
96 GtkContainer parent_instance;
98 GdkWindow *canvas, *top_panel, *left_panel, *right_panel, *bottom_panel;
99 GdkPixmap *canvas_pixmap;
101 guint n_pango_layouts;
102 PangoLayout **pango_layouts;
106 gint x_offset, y_offset;
107 GtkAdjustment *hadjustment, *vadjustment;
112 GtkContainerClass parent_class;
114 GdkEventMask canvas_events, top_panel_events, left_panel_events, right_panel_events, bottom_panel_events;
115 guint double_buffer_window : 1, double_buffer_canvas : 1;
116 guint double_buffer_top_panel : 1, double_buffer_left_panel : 1;
117 guint double_buffer_right_panel : 1, double_buffer_bottom_panel : 1;
118 guint auto_clear : 1;
119 guint grab_focus : 1;
120 guint hscrollable : 1;
121 guint vscrollable : 1;
124 const GdkColor *colors;
125 gchar *image_file_name;
127 gdouble image_saturation;
128 GSList *realized_widgets;
130 void (*get_layout) (GxkScrollCanvas *
self,
132 void (*set_scroll_adjustments) (GxkScrollCanvas *
self,
133 GtkAdjustment *hadjustment,
134 GtkAdjustment *vadjustment);
135 void (*update_adjustments) (GxkScrollCanvas *
self,
138 void (*adjustment_changed) (GxkScrollCanvas *
self,
140 void (*reallocate_contents) (GxkScrollCanvas *
self,
143 void (*draw_window) (GxkScrollCanvas *
self,
146 void (*draw_canvas) (GxkScrollCanvas *
self,
149 void (*draw_top_panel) (GxkScrollCanvas *
self,
152 void (*draw_left_panel) (GxkScrollCanvas *
self,
155 void (*draw_right_panel) (GxkScrollCanvas *
self,
158 void (*draw_bottom_panel) (GxkScrollCanvas *
self,
161 void (*draw_marker) (GxkScrollCanvas *
self,
165 void (*handle_drag) (GxkScrollCanvas *
self,
172 GType gxk_scroll_canvas_get_type (
void);
173 void gxk_scroll_canvas_get_layout (GxkScrollCanvas *
self,
175 void gxk_scroll_canvas_get_canvas_size (GxkScrollCanvas *
self,
178 void gxk_scroll_canvas_set_hadjustment (GxkScrollCanvas *
self,
179 GtkAdjustment *adjustment);
180 void gxk_scroll_canvas_set_vadjustment (GxkScrollCanvas *
self,
181 GtkAdjustment *adjustment);
182 void gxk_scroll_canvas_update_adjustments (GxkScrollCanvas *
self,
185 void gxk_scroll_canvas_scroll_to (GxkScrollCanvas *
self,
188 void gxk_scroll_canvas_make_visible (GxkScrollCanvas *
self,
191 gint scroll_area_width,
192 gint scroll_area_height);
193 void gxk_scroll_canvas_reset_pango_layouts (GxkScrollCanvas *
self);
194 void gxk_scroll_canvas_reallocate (GxkScrollCanvas *
self);
195 gboolean gxk_scroll_canvas_dragging (GxkScrollCanvas *
self);
196 void gxk_scroll_canvas_drag_abort (GxkScrollCanvas *
self);
197 void gxk_scroll_canvas_set_window_cursor (GxkScrollCanvas *
self,
198 GdkCursorType cursor);
199 void gxk_scroll_canvas_set_canvas_cursor (GxkScrollCanvas *
self,
200 GdkCursorType cursor);
201 void gxk_scroll_canvas_set_top_panel_cursor (GxkScrollCanvas *
self,
202 GdkCursorType cursor);
203 void gxk_scroll_canvas_set_left_panel_cursor (GxkScrollCanvas *
self,
204 GdkCursorType cursor);
205 void gxk_scroll_canvas_set_right_panel_cursor (GxkScrollCanvas *
self,
206 GdkCursorType cursor);
207 void gxk_scroll_canvas_set_bottom_panel_cursor (GxkScrollCanvas *
self,
208 GdkCursorType cursor);
209 PangoLayout* gxk_scroll_canvas_get_pango_layout (GxkScrollCanvas *
self,
211 PangoLayout* gxk_scroll_canvas_peek_pango_layout (GxkScrollCanvas *
self,
213 GxkScrollMarker* gxk_scroll_canvas_lookup_marker (GxkScrollCanvas *
self,
218 void gxk_scroll_canvas_remove_marker (GxkScrollCanvas *
self,
220 void gxk_scroll_canvas_setup_marker (GxkScrollCanvas *
self,
227 void gxk_scroll_canvas_move_marker (GxkScrollCanvas *
self,