40
42
GimpToolInfo *tool_info;
42
gint ID; /* unique tool ID */
44
gint ID; /* unique tool ID */
44
46
GimpToolControl *control;
46
GimpDisplay *gdisp; /* pointer to currently active gdisp */
47
GimpDrawable *drawable; /* pointer to the tool's current drawable */
48
GimpDisplay *display; /* pointer to currently active display */
49
GimpDrawable *drawable; /* pointer to the tool's current drawable */
49
/* focus_display and modifier_state are *private* state of
50
* gimp_tool_set_focus_display() and gimp_tool_set_modifier_state().
51
* ignore them in tool implementations, they don't exist!
51
/* private state of gimp_tool_set_focus_display() and
52
* gimp_tool_set_[active_]modifier_state()
53
54
GimpDisplay *focus_display;
54
55
GdkModifierType modifier_state;
56
GdkModifierType button_press_state;
57
GdkModifierType active_modifier_state;
59
/* private state for click detection
61
gboolean in_click_distance;
62
gboolean got_motion_event;
63
GimpCoords button_press_coords;
64
guint32 button_press_time;
66
/* private list of displays which have a status message from this tool
68
GList *status_displays;
57
71
struct _GimpToolClass
61
75
/* virtual functions */
63
gboolean (* initialize) (GimpTool *tool,
65
void (* control) (GimpTool *tool,
66
GimpToolAction action,
69
void (* button_press) (GimpTool *tool,
72
GdkModifierType state,
74
void (* button_release) (GimpTool *tool,
77
GdkModifierType state,
79
void (* motion) (GimpTool *tool,
82
GdkModifierType state,
85
gboolean (* key_press) (GimpTool *tool,
88
void (* modifier_key) (GimpTool *tool,
91
GdkModifierType state,
94
void (* oper_update) (GimpTool *tool,
96
GdkModifierType state,
98
void (* cursor_update) (GimpTool *tool,
100
GdkModifierType state,
77
gboolean (* has_display) (GimpTool *tool,
78
GimpDisplay *display);
79
GimpDisplay * (* has_image) (GimpTool *tool,
82
gboolean (* initialize) (GimpTool *tool,
85
void (* control) (GimpTool *tool,
86
GimpToolAction action,
87
GimpDisplay *display);
89
void (* button_press) (GimpTool *tool,
92
GdkModifierType state,
93
GimpDisplay *display);
94
void (* button_release) (GimpTool *tool,
97
GdkModifierType state,
98
GimpButtonReleaseType release_type,
99
GimpDisplay *display);
100
void (* motion) (GimpTool *tool,
103
GdkModifierType state,
104
GimpDisplay *display);
106
gboolean (* key_press) (GimpTool *tool,
108
GimpDisplay *display);
109
void (* modifier_key) (GimpTool *tool,
112
GdkModifierType state,
113
GimpDisplay *display);
114
void (* active_modifier_key) (GimpTool *tool,
117
GdkModifierType state,
118
GimpDisplay *display);
120
void (* oper_update) (GimpTool *tool,
122
GdkModifierType state,
124
GimpDisplay *display);
125
void (* cursor_update) (GimpTool *tool,
127
GdkModifierType state,
128
GimpDisplay *display);
105
GType gimp_tool_get_type (void) G_GNUC_CONST;
107
gboolean gimp_tool_initialize (GimpTool *tool,
109
void gimp_tool_control (GimpTool *tool,
110
GimpToolAction action,
113
void gimp_tool_button_press (GimpTool *tool,
116
GdkModifierType state,
118
void gimp_tool_button_release (GimpTool *tool,
121
GdkModifierType state,
123
void gimp_tool_motion (GimpTool *tool,
126
GdkModifierType state,
129
gboolean gimp_tool_key_press (GimpTool *tool,
133
void gimp_tool_set_focus_display (GimpTool *tool,
135
void gimp_tool_set_modifier_state (GimpTool *tool,
136
GdkModifierType state,
139
void gimp_tool_oper_update (GimpTool *tool,
141
GdkModifierType state,
143
void gimp_tool_cursor_update (GimpTool *tool,
145
GdkModifierType state,
148
void gimp_tool_push_status (GimpTool *tool,
149
const gchar *message);
150
void gimp_tool_push_status_coords (GimpTool *tool,
153
const gchar *separator,
155
void gimp_tool_push_status_length (GimpTool *tool,
157
GimpOrientationType axis,
159
void gimp_tool_pop_status (GimpTool *tool);
161
void gimp_tool_set_cursor (GimpTool *tool,
163
GimpCursorType cursor,
164
GimpToolCursorType tool_cursor,
165
GimpCursorModifier modifier);
132
GType gimp_tool_get_type (void) G_GNUC_CONST;
134
GimpToolOptions * gimp_tool_get_options (GimpTool *tool);
136
gboolean gimp_tool_has_display (GimpTool *tool,
137
GimpDisplay *display);
138
GimpDisplay * gimp_tool_has_image (GimpTool *tool,
141
gboolean gimp_tool_initialize (GimpTool *tool,
142
GimpDisplay *display);
143
void gimp_tool_control (GimpTool *tool,
144
GimpToolAction action,
145
GimpDisplay *display);
147
void gimp_tool_button_press (GimpTool *tool,
150
GdkModifierType state,
151
GimpDisplay *display);
152
void gimp_tool_button_release (GimpTool *tool,
155
GdkModifierType state,
156
GimpDisplay *display);
157
void gimp_tool_motion (GimpTool *tool,
160
GdkModifierType state,
161
GimpDisplay *display);
163
gboolean gimp_tool_key_press (GimpTool *tool,
165
GimpDisplay *display);
167
void gimp_tool_set_focus_display (GimpTool *tool,
168
GimpDisplay *display);
169
void gimp_tool_set_modifier_state (GimpTool *tool,
170
GdkModifierType state,
171
GimpDisplay *display);
172
void gimp_tool_set_active_modifier_state (GimpTool *tool,
173
GdkModifierType state,
174
GimpDisplay *display);
176
void gimp_tool_oper_update (GimpTool *tool,
178
GdkModifierType state,
180
GimpDisplay *display);
181
void gimp_tool_cursor_update (GimpTool *tool,
183
GdkModifierType state,
184
GimpDisplay *display);
186
void gimp_tool_push_status (GimpTool *tool,
187
GimpDisplay *display,
189
...) G_GNUC_PRINTF(3,4);
190
void gimp_tool_push_status_coords (GimpTool *tool,
191
GimpDisplay *display,
194
const gchar *separator,
197
void gimp_tool_push_status_length (GimpTool *tool,
198
GimpDisplay *display,
200
GimpOrientationType axis,
203
void gimp_tool_replace_status (GimpTool *tool,
204
GimpDisplay *display,
206
...) G_GNUC_PRINTF(3,4);
207
void gimp_tool_pop_status (GimpTool *tool,
208
GimpDisplay *display);
210
void gimp_tool_message (GimpTool *tool,
211
GimpDisplay *display,
213
...) G_GNUC_PRINTF(3,4);
215
void gimp_tool_set_cursor (GimpTool *tool,
216
GimpDisplay *display,
217
GimpCursorType cursor,
218
GimpToolCursorType tool_cursor,
219
GimpCursorModifier modifier);
168
222
#endif /* __GIMP_TOOL_H__ */