gimpfiltertool.h 6.31 KB
Newer Older
1
/* GIMP - The GNU Image Manipulation Program
Michael Natterer's avatar
Michael Natterer committed
2 3
 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
 *
4
 * This program is free software: you can redistribute it and/or modify
Michael Natterer's avatar
Michael Natterer committed
5
 * it under the terms of the GNU General Public License as published by
6
 * the Free Software Foundation; either version 3 of the License, or
Michael Natterer's avatar
Michael Natterer committed
7 8 9 10 11 12 13 14
 * (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
15
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
Michael Natterer's avatar
Michael Natterer committed
16 17
 */

18 19
#ifndef __GIMP_FILTER_TOOL_H__
#define __GIMP_FILTER_TOOL_H__
Michael Natterer's avatar
Michael Natterer committed
20 21


22
#include "gimpcolortool.h"
Michael Natterer's avatar
Michael Natterer committed
23 24


25 26 27 28 29 30
#define GIMP_TYPE_FILTER_TOOL            (gimp_filter_tool_get_type ())
#define GIMP_FILTER_TOOL(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_FILTER_TOOL, GimpFilterTool))
#define GIMP_FILTER_TOOL_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_FILTER_TOOL, GimpFilterToolClass))
#define GIMP_IS_FILTER_TOOL(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_FILTER_TOOL))
#define GIMP_IS_FILTER_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_FILTER_TOOL))
#define GIMP_FILTER_TOOL_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_FILTER_TOOL, GimpFilterToolClass))
Michael Natterer's avatar
Michael Natterer committed
31

32
#define GIMP_FILTER_TOOL_GET_OPTIONS(t)  (GIMP_FILTER_OPTIONS (gimp_tool_get_options (GIMP_TOOL (t))))
33

Michael Natterer's avatar
Michael Natterer committed
34

35
typedef struct _GimpFilterToolClass GimpFilterToolClass;
Michael Natterer's avatar
Michael Natterer committed
36

37
struct _GimpFilterTool
Michael Natterer's avatar
Michael Natterer committed
38
{
39
  GimpColorTool       parent_instance;
40

41 42 43 44
  GeglNode           *operation;
  GObject            *config;
  GObject            *default_config;
  GimpContainer      *settings;
45

46
  gchar              *description;
47

48
  gboolean            has_settings;
49

50
  GimpDrawableFilter *filter;
51

52
  GimpGuide          *preview_guide;
53

54 55
  gpointer            pick_identifier;
  gboolean            pick_abyss;
56

57
  /* dialog */
58 59 60 61 62
  gboolean            overlay;
  GimpToolGui        *gui;
  GtkWidget          *settings_box;
  GtkWidget          *region_combo;
  GtkWidget          *active_picker;
63 64

  /* widget */
65 66
  GimpToolWidget     *widget;
  GimpToolWidget     *grab_widget;
Michael Natterer's avatar
Michael Natterer committed
67 68
};

69
struct _GimpFilterToolClass
Michael Natterer's avatar
Michael Natterer committed
70
{
71
  GimpColorToolClass  parent_class;
72 73

  /* virtual functions */
74
  gchar     * (* get_operation)   (GimpFilterTool    *filter_tool,
75
                                   gchar            **description);
76 77
  void        (* dialog)          (GimpFilterTool    *filter_tool);
  void        (* reset)           (GimpFilterTool    *filter_tool);
78 79
  void        (* set_config)      (GimpFilterTool    *filter_tool,
                                   GimpConfig        *config);
80 81 82
  void        (* config_notify)   (GimpFilterTool    *filter_tool,
                                   GimpConfig        *config,
                                   const GParamSpec  *pspec);
83

84
  gboolean    (* settings_import) (GimpFilterTool    *filter_tool,
85
                                   GInputStream      *input,
86
                                   GError           **error);
87
  gboolean    (* settings_export) (GimpFilterTool    *filter_tool,
88
                                   GOutputStream     *output,
89
                                   GError           **error);
90

91
  void        (* color_picked)    (GimpFilterTool    *filter_tool,
92
                                   gpointer           identifier,
93 94
                                   gdouble            x,
                                   gdouble            y,
95 96
                                   const Babl        *sample_format,
                                   const GimpRGB     *color);
Michael Natterer's avatar
Michael Natterer committed
97 98 99
};


100
GType       gimp_filter_tool_get_type              (void) G_GNUC_CONST;
101

102
void        gimp_filter_tool_get_operation         (GimpFilterTool   *filter_tool);
103

104 105
void        gimp_filter_tool_set_config            (GimpFilterTool   *filter_tool,
                                                    GimpConfig       *config);
106

107 108 109
void        gimp_filter_tool_edit_as               (GimpFilterTool   *filter_tool,
                                                    const gchar      *new_tool_id,
                                                    GimpConfig       *config);
110

111 112 113
gboolean    gimp_filter_tool_on_guide              (GimpFilterTool   *filter_tool,
                                                    const GimpCoords *coords,
                                                    GimpDisplay      *display);
114

115
GtkWidget * gimp_filter_tool_dialog_get_vbox       (GimpFilterTool   *filter_tool);
116

117 118 119 120
void        gimp_filter_tool_enable_color_picking  (GimpFilterTool   *filter_tool,
                                                    gpointer          identifier,
                                                    gboolean          pick_abyss);
void        gimp_filter_tool_disable_color_picking (GimpFilterTool   *filter_tool);
121

122 123 124 125 126
GtkWidget * gimp_filter_tool_add_color_picker      (GimpFilterTool   *filter_tool,
                                                    gpointer          identifier,
                                                    const gchar      *icon_name,
                                                    const gchar      *tooltip,
                                                    gboolean          pick_abyss);
127 128 129 130 131 132
GCallback   gimp_filter_tool_add_controller        (GimpFilterTool   *filter_tool,
                                                    GimpControllerType controller_type,
                                                    const gchar      *status_title,
                                                    GCallback         callback,
                                                    gpointer          callback_data,
                                                    gpointer         *set_func_data);
133

134 135
void        gimp_filter_tool_set_widget            (GimpFilterTool   *filter_tool,
                                                    GimpToolWidget   *widget);
136

137 138 139 140 141
gboolean    gimp_filter_tool_get_drawable_area     (GimpFilterTool   *filter_tool,
                                                    gint             *drawable_offset_x,
                                                    gint             *drawable_offset_y,
                                                    GeglRectangle    *drawable_area);

Michael Natterer's avatar
Michael Natterer committed
142

143
#endif /* __GIMP_FILTER_TOOL_H__ */