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 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168
|
/* The GIMP -- an image manipulation program
* Copyright (C) 1995-2002 Spencer Kimball, Peter Mattis, and others
*
* 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP_TOOL_H__
#define __GIMP_TOOL_H__
#include "core/gimpobject.h"
#define GIMP_TYPE_TOOL (gimp_tool_get_type ())
#define GIMP_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_TOOL, GimpTool))
#define GIMP_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_TOOL, GimpToolClass))
#define GIMP_IS_TOOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_TOOL))
#define GIMP_IS_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_TOOL))
#define GIMP_TOOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_TOOL, GimpToolClass))
typedef struct _GimpToolClass GimpToolClass;
struct _GimpTool
{
GimpObject parent_instance;
GimpToolInfo *tool_info;
gint ID; /* unique tool ID */
GimpToolControl *control;
GimpDisplay *gdisp; /* pointer to currently active gdisp */
GimpDrawable *drawable; /* pointer to the tool's current drawable */
/* focus_display and modifier_state are *private* state of
* gimp_tool_set_focus_display() and gimp_tool_set_modifier_state().
* ignore them in tool implementations, they don't exist!
*/
GimpDisplay *focus_display;
GdkModifierType modifier_state;
};
struct _GimpToolClass
{
GimpObjectClass parent_class;
/* virtual functions */
gboolean (* initialize) (GimpTool *tool,
GimpDisplay *gdisp);
void (* control) (GimpTool *tool,
GimpToolAction action,
GimpDisplay *gdisp);
void (* button_press) (GimpTool *tool,
GimpCoords *coords,
guint32 time,
GdkModifierType state,
GimpDisplay *gdisp);
void (* button_release) (GimpTool *tool,
GimpCoords *coords,
guint32 time,
GdkModifierType state,
GimpDisplay *gdisp);
void (* motion) (GimpTool *tool,
GimpCoords *coords,
guint32 time,
GdkModifierType state,
GimpDisplay *gdisp);
gboolean (* key_press) (GimpTool *tool,
GdkEventKey *kevent,
GimpDisplay *gdisp);
void (* modifier_key) (GimpTool *tool,
GdkModifierType key,
gboolean press,
GdkModifierType state,
GimpDisplay *gdisp);
void (* oper_update) (GimpTool *tool,
GimpCoords *coords,
GdkModifierType state,
GimpDisplay *gdisp);
void (* cursor_update) (GimpTool *tool,
GimpCoords *coords,
GdkModifierType state,
GimpDisplay *gdisp);
};
GType gimp_tool_get_type (void) G_GNUC_CONST;
gboolean gimp_tool_initialize (GimpTool *tool,
GimpDisplay *gdisp);
void gimp_tool_control (GimpTool *tool,
GimpToolAction action,
GimpDisplay *gdisp);
void gimp_tool_button_press (GimpTool *tool,
GimpCoords *coords,
guint32 time,
GdkModifierType state,
GimpDisplay *gdisp);
void gimp_tool_button_release (GimpTool *tool,
GimpCoords *coords,
guint32 time,
GdkModifierType state,
GimpDisplay *gdisp);
void gimp_tool_motion (GimpTool *tool,
GimpCoords *coords,
guint32 time,
GdkModifierType state,
GimpDisplay *gdisp);
gboolean gimp_tool_key_press (GimpTool *tool,
GdkEventKey *kevent,
GimpDisplay *gdisp);
void gimp_tool_set_focus_display (GimpTool *tool,
GimpDisplay *gdisp);
void gimp_tool_set_modifier_state (GimpTool *tool,
GdkModifierType state,
GimpDisplay *gdisp);
void gimp_tool_oper_update (GimpTool *tool,
GimpCoords *coords,
GdkModifierType state,
GimpDisplay *gdisp);
void gimp_tool_cursor_update (GimpTool *tool,
GimpCoords *coords,
GdkModifierType state,
GimpDisplay *gdisp);
void gimp_tool_push_status (GimpTool *tool,
const gchar *message);
void gimp_tool_push_status_coords (GimpTool *tool,
const gchar *title,
gdouble x,
const gchar *separator,
gdouble y);
void gimp_tool_push_status_length (GimpTool *tool,
const gchar *title,
GimpOrientationType axis,
gdouble value);
void gimp_tool_pop_status (GimpTool *tool);
void gimp_tool_set_cursor (GimpTool *tool,
GimpDisplay *gdisp,
GimpCursorType cursor,
GimpToolCursorType tool_cursor,
GimpCursorModifier modifier);
#endif /* __GIMP_TOOL_H__ */
|