/* PIKA - Photo and Image Kooker Application * a rebranding of The GNU Image Manipulation Program (created with heckimp) * A derived work which may be trivial. However, any changes may be (C)2023 by Aldercone Studio * * Original copyright, applying to most contents (license remains unchanged): * Copyright (C) 1995 Spencer Kimball and Peter Mattis * * 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 3 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, see . */ #ifndef __PIKA_FILTER_TOOL_H__ #define __PIKA_FILTER_TOOL_H__ #include "pikacolortool.h" #define PIKA_TYPE_FILTER_TOOL (pika_filter_tool_get_type ()) #define PIKA_FILTER_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), PIKA_TYPE_FILTER_TOOL, PikaFilterTool)) #define PIKA_FILTER_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), PIKA_TYPE_FILTER_TOOL, PikaFilterToolClass)) #define PIKA_IS_FILTER_TOOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), PIKA_TYPE_FILTER_TOOL)) #define PIKA_IS_FILTER_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PIKA_TYPE_FILTER_TOOL)) #define PIKA_FILTER_TOOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PIKA_TYPE_FILTER_TOOL, PikaFilterToolClass)) #define PIKA_FILTER_TOOL_GET_OPTIONS(t) (PIKA_FILTER_OPTIONS (pika_tool_get_options (PIKA_TOOL (t)))) typedef struct _PikaFilterToolClass PikaFilterToolClass; struct _PikaFilterTool { PikaColorTool parent_instance; GeglNode *operation; GObject *config; GObject *default_config; PikaContainer *settings; gchar *description; gboolean has_settings; PikaDrawableFilter *filter; PikaGuide *preview_guide; gpointer pick_identifier; gboolean pick_abyss; /* dialog */ gboolean overlay; PikaToolGui *gui; GtkWidget *settings_box; GtkWidget *controller_toggle; GtkWidget *operation_settings_box; GtkWidget *clip_combo; GtkWidget *region_combo; GtkWidget *active_picker; /* widget */ PikaToolWidget *widget; PikaToolWidget *grab_widget; }; struct _PikaFilterToolClass { PikaColorToolClass parent_class; /* virtual functions */ gchar * (* get_operation) (PikaFilterTool *filter_tool, gchar **description); void (* dialog) (PikaFilterTool *filter_tool); void (* reset) (PikaFilterTool *filter_tool); void (* set_config) (PikaFilterTool *filter_tool, PikaConfig *config); void (* config_notify) (PikaFilterTool *filter_tool, PikaConfig *config, const GParamSpec *pspec); gboolean (* settings_import) (PikaFilterTool *filter_tool, GInputStream *input, GError **error); gboolean (* settings_export) (PikaFilterTool *filter_tool, GOutputStream *output, GError **error); void (* region_changed) (PikaFilterTool *filter_tool); void (* color_picked) (PikaFilterTool *filter_tool, gpointer identifier, gdouble x, gdouble y, const Babl *sample_format, const PikaRGB *color); }; GType pika_filter_tool_get_type (void) G_GNUC_CONST; void pika_filter_tool_get_operation (PikaFilterTool *filter_tool); void pika_filter_tool_set_config (PikaFilterTool *filter_tool, PikaConfig *config); void pika_filter_tool_edit_as (PikaFilterTool *filter_tool, const gchar *new_tool_id, PikaConfig *config); gboolean pika_filter_tool_on_guide (PikaFilterTool *filter_tool, const PikaCoords *coords, PikaDisplay *display); GtkWidget * pika_filter_tool_dialog_get_vbox (PikaFilterTool *filter_tool); void pika_filter_tool_enable_color_picking (PikaFilterTool *filter_tool, gpointer identifier, gboolean pick_abyss); void pika_filter_tool_disable_color_picking (PikaFilterTool *filter_tool); GtkWidget * pika_filter_tool_add_color_picker (PikaFilterTool *filter_tool, gpointer identifier, const gchar *icon_name, const gchar *tooltip, gboolean pick_abyss, PikaPickerCallback callback, gpointer callback_data); GCallback pika_filter_tool_add_controller (PikaFilterTool *filter_tool, PikaControllerType controller_type, const gchar *status_title, GCallback callback, gpointer callback_data, gpointer *set_func_data); void pika_filter_tool_set_widget (PikaFilterTool *filter_tool, PikaToolWidget *widget); gboolean pika_filter_tool_get_drawable_area (PikaFilterTool *filter_tool, gint *drawable_offset_x, gint *drawable_offset_y, GeglRectangle *drawable_area); #endif /* __PIKA_FILTER_TOOL_H__ */