gimpfiltertool.h 5.29 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
  GimpDrawable          *drawable;

  GeglNode              *operation;
44
  GObject               *config;
45
  GObject               *default_config;
46 47 48

  gchar                 *title;
  gchar                 *description;
49
  gchar                 *undo_desc;
50 51
  gchar                 *icon_name;
  gchar                 *help_id;
52

53
  GimpImageMap          *filter;
54

55 56
  GimpGuide             *percent_guide;

57
  /* dialog */
58
  gboolean               overlay;
59
  GimpToolGui           *gui;
60
  GtkWidget             *settings_box;
61
  GtkWidget             *region_combo;
62
  GtkWidget             *active_picker;
Michael Natterer's avatar
Michael Natterer committed
63 64
};

65
struct _GimpFilterToolClass
Michael Natterer's avatar
Michael Natterer committed
66
{
67
  GimpColorToolClass  parent_class;
68

69
  const gchar        *settings_name;
70 71
  const gchar        *import_dialog_title;
  const gchar        *export_dialog_title;
72

73
  /* virtual functions */
74
  gchar     * (* get_operation)   (GimpFilterTool    *filter_tool,
75 76 77 78 79
                                   gchar            **title,
                                   gchar            **description,
                                   gchar            **undo_desc,
                                   gchar            **icon_name,
                                   gchar            **help_id);
80 81
  void        (* dialog)          (GimpFilterTool    *filter_tool);
  void        (* reset)           (GimpFilterTool    *filter_tool);
82

83
  GtkWidget * (* get_settings_ui) (GimpFilterTool    *filter_tool,
84
                                   GimpContainer     *settings,
85
                                   GFile             *settings_file,
86 87 88
                                   const gchar       *import_dialog_title,
                                   const gchar       *export_dialog_title,
                                   const gchar       *file_dialog_help_id,
89
                                   GFile             *default_folder,
90 91
                                   GtkWidget        **settings_box);

92
  gboolean    (* settings_import) (GimpFilterTool    *filter_tool,
93
                                   GInputStream      *input,
94
                                   GError           **error);
95
  gboolean    (* settings_export) (GimpFilterTool    *filter_tool,
96
                                   GOutputStream     *output,
97
                                   GError           **error);
98

99
  void        (* color_picked)    (GimpFilterTool    *filter_tool,
100
                                   gpointer           identifier,
101 102
                                   gdouble            x,
                                   gdouble            y,
103 104
                                   const Babl        *sample_format,
                                   const GimpRGB     *color);
Michael Natterer's avatar
Michael Natterer committed
105 106 107
};


108
GType       gimp_filter_tool_get_type         (void) G_GNUC_CONST;
109

110
void        gimp_filter_tool_get_operation    (GimpFilterTool   *filter_tool);
111

112 113 114
void        gimp_filter_tool_edit_as          (GimpFilterTool   *filter_tool,
                                               const gchar      *new_tool_id,
                                               GimpConfig       *config);
115

116 117 118
gboolean    gimp_filter_tool_on_guide         (GimpFilterTool   *filter_tool,
                                               const GimpCoords *coords,
                                               GimpDisplay      *display);
119

120
GtkWidget * gimp_filter_tool_dialog_get_vbox  (GimpFilterTool   *filter_tool);
121

122 123 124 125
GtkWidget * gimp_filter_tool_add_color_picker (GimpFilterTool   *filter_tool,
                                               gpointer          identifier,
                                               const gchar      *icon_name,
                                               const gchar      *tooltip);
126

Michael Natterer's avatar
Michael Natterer committed
127

128
#endif /* __GIMP_FILTER_TOOL_H__ */