53#ifndef DT_DEVELOP_IMAGEOP_H
54#define DT_DEVELOP_IMAGEOP_H
231#define INCLUDE_API_FROM_MODULE_H
255#define INCLUDE_API_FROM_MODULE_H
535#define dt_iop_fmt_log(module, fmt, ...) \
536 dt_print(DT_DEBUG_PIPE, "[iop-fmt] %-14s " fmt "\n", (module)->op, ##__VA_ARGS__)
669 gboolean
enable, gboolean write_history,
const char *reason);
694 const char *purpose,
const char *input,
695 const char *
process,
const char *output);
__DT_CLONE_TARGETS__ int process(struct dt_iop_module_t *self, const dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid)
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
struct _GtkWidget GtkWidget
GtkWidget, opaque, spelled exactly as GTK spells it.
static gboolean enable(const dt_image_t *image)
char dt_dev_operation_t[20]
The string identifying an operation in the history stack ("exposure", "colorbalancergb",...
dt_iop_module_t * dt_iop_get_module_from_list(GList *iop_list, const char *op)
dt_dev_request_colorpick_flags_t
@ DT_REQUEST_COLORPICK_OFF
@ DT_REQUEST_COLORPICK_MODULE
void default_input_format(struct dt_iop_module_t *self, struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece, struct dt_iop_buffer_dsc_t *dsc)
dt_iop_module_t * dt_iop_get_module(const char *op)
void dt_iop_set_darktable_iop_table()
gboolean dt_iop_module_needs_mask_history_ext(const dt_iop_module_t *module, gboolean *raster, gboolean *drawn, gboolean *parametric)
void dt_iop_gui_cleanup_module(dt_iop_module_t *module)
uint32_t dt_dev_get_roi_filters(const struct dt_dev_pixelpipe_iop_t *piece, const dt_iop_roi_t *roi_in)
Get this piece's raw CFA filters descriptor, phase-corrected for its current crop.
int default_blend_colorspace(struct dt_iop_module_t *self, struct dt_dev_pixelpipe_t *pipe, const struct dt_dev_pixelpipe_iop_t *piece)
void dt_iop_load_default_params(dt_iop_module_t *module)
dt_iop_module_t * dt_iop_get_module_by_instance_name(GList *modules, const char *operation, const char *multi_name)
GtkWidget * dt_iop_gui_get_pluginui(dt_iop_module_t *module)
gboolean dt_iop_is_raster_mask_used(dt_iop_module_t *module, int id)
void dt_iop_compute_module_hash(dt_iop_module_t *module, GList *masks)
void dt_iop_add_remove_mask_indicator(dt_iop_module_t *module)
void dt_iop_reload_defaults(dt_iop_module_t *module)
gboolean dt_iop_module_supports_drawn_mask(dt_iop_module_t *iop)
void dt_iop_gui_set_expander(dt_iop_module_t *module)
dt_iop_module_t * dt_iop_gui_get_next_visible_module(dt_iop_module_t *module)
void dt_iop_init_pipe(struct dt_iop_module_t *module, struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece)
Build one pixelpipe node's module-owned storage.
int dt_iop_load_module(dt_iop_module_t *module, dt_iop_module_so_t *module_so, struct dt_develop_t *dev)
float dt_dev_get_module_scale(const struct dt_dev_pixelpipe_t *pipe, const dt_iop_roi_t *roi_in)
Get the size of one current-grid pixel in full-resolution image pixels.
void default_output_format(struct dt_iop_module_t *self, struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece, struct dt_iop_buffer_dsc_t *dsc)
gboolean dt_iop_gui_commit_iop_order_change(struct dt_develop_t *dev, dt_iop_module_t *module, gboolean enable, gboolean write_history, const char *reason)
Commit the GUI-side consequences of an IOP-order change.
gboolean dt_iop_is_first_instance(GList *modules, dt_iop_module_t *module)
GList * dt_iop_get_modules_so(void)
void dt_iop_gui_init(dt_iop_module_t *module)
void dt_iop_cleanup_module(dt_iop_module_t *module)
const dt_iop_module_static_entry_t dt_iop_static_modules[]
gboolean dt_iop_module_has_raster_mask(const dt_iop_module_t *module)
void dt_iop_gui_update(dt_iop_module_t *module)
const gchar * dt_iop_get_localized_aliases(const gchar *op)
const gchar * dt_iop_get_localized_name(const gchar *op)
void dt_bauhaus_update_module(dt_iop_module_t *self)
void dt_iop_set_cache_bypass_variant(dt_iop_module_t *module, int variant)
const int dt_iop_static_modules_count
void dt_iop_commit_params(dt_iop_module_t *module, dt_iop_params_t *params, struct dt_develop_blend_params_t *blendop_params, struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece)
Copy params into the pipeline piece, so the next render uses them.
void dt_iop_gui_leave_critical_section(dt_iop_module_t *const module)
Release what dt_iop_gui_enter_critical_section() took. Also a no-op headless.
void dt_iop_gui_reset(dt_iop_module_t *module)
gboolean dt_iop_module_needs_mask_history(const dt_iop_module_t *module)
void dt_iop_load_modules_so(void)
void dt_iop_nap(int32_t usec)
void dt_iop_default_init(dt_iop_module_t *module)
void dt_iop_commit_blend_params(dt_iop_module_t *module, const struct dt_develop_blend_params_t *blendop_params)
void dt_iop_gui_changed(dt_iop_module_t *module, GtkWidget *widget, gpointer data)
void dt_iop_gui_update_expanded(dt_iop_module_t *module)
void dt_iop_gui_update_header(dt_iop_module_t *module)
void dt_iop_gui_set_enable_button(dt_iop_module_t *module)
void dt_iop_cleanup_pipe(struct dt_iop_module_t *module, struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece)
Release module-owned resources for one pixelpipe node.
gboolean dt_iop_is_visible(dt_iop_module_t *module)
int dt_iop_load_module_by_so(dt_iop_module_t *module, dt_iop_module_so_t *so, struct dt_develop_t *dev)
void dt_iop_request_focus(dt_iop_module_t *module)
Move darkroom focus to module, or clear it with NULL.
dt_iop_module_t * dt_iop_gui_get_previous_visible_module(dt_iop_module_t *module)
dt_iop_module_header_icons_t
gboolean dt_iop_module_is_in_pipeline(dt_iop_module_t *iop)
gboolean dt_iop_is_hidden(dt_iop_module_t *module)
const char ** dt_iop_set_description(dt_iop_module_t *module, const char *main_text, const char *purpose, const char *input, const char *process, const char *output)
GtkWidget * dt_iop_gui_get_widget(dt_iop_module_t *module)
gboolean dt_iop_so_is_hidden(dt_iop_module_so_t *module)
@ IOP_FLAGS_INCLUDE_IN_STYLES
@ IOP_FLAGS_INTERNAL_MASKS
@ IOP_FLAGS_PREVIEW_NON_OPENCL
@ IOP_FLAGS_SUPPORTS_BLENDING
@ IOP_FLAGS_TAKE_NO_INPUT
@ IOP_FLAGS_CPU_WRITES_OPENCL
@ IOP_FLAGS_GUIDES_SPECIAL_DRAW
@ IOP_FLAGS_TILING_FULL_ROI
@ IOP_FLAGS_NO_HISTORY_STACK
void dt_iop_global_data_t
int dt_iop_get_module_flags(const char *op)
gboolean dt_iop_gui_owns_widget(const dt_iop_module_t *module, const GtkWidget *target)
gboolean dt_iop_gui_move_module_before(dt_iop_module_t *module, dt_iop_module_t *module_next, const char *reason)
Move a module before another one and commit the GUI-side effects.
void dt_bauhaus_value_changed_default_callback(GtkWidget *widget)
dt_iop_module_t * dt_iop_get_colorout_module(void)
void dt_iop_gui_enter_critical_section(dt_iop_module_t *const module)
Take the module's GUI lock, serialising access to its dt_iop_gui_data_t.
gboolean dt_iop_check_modules_equal(dt_iop_module_t *mod_1, dt_iop_module_t *mod_2)
gboolean dt_iop_module_instance_exists(dt_iop_module_t *iop)
void dt_iop_gui_set_expanded(dt_iop_module_t *module, gboolean expanded, gboolean collapse_others)
void dt_iop_set_cache_bypass(dt_iop_module_t *module, gboolean state)
gboolean dt_iop_get_cache_bypass(dt_iop_module_t *module)
gboolean dt_iop_gui_move_module_after(dt_iop_module_t *module, dt_iop_module_t *module_prev, const char *reason)
Move a module after another one and commit the GUI-side effects.
void dt_iop_set_mask_mode(dt_iop_module_t *module, int mask_mode)
void dt_iop_gui_rename_module(dt_iop_module_t *module)
dt_iop_module_t * dt_iop_gui_duplicate(dt_iop_module_t *base, gboolean copy_params)
Create another instance of base, insert it into dev->iop and give it a GUI.
gboolean dt_iop_gui_module_is_visible(dt_iop_module_t *module)
dt_iop_module_t * dt_iop_get_module_by_op_priority(GList *modules, const char *operation, const int multi_priority)
GtkWidget * dt_iop_gui_get_off(dt_iop_module_t *module)
void dt_iop_update_multi_priority(dt_iop_module_t *module, int new_priority)
void dt_iop_unload_modules_so(void)
DT_ALIGNED_PIXEL float dt_aligned_pixel_t[4]
const float uint32_t state[4]
unsigned __int64 uint64_t
One module instance's contribution, as data.
The dt_gui_module_t type is the intersection between a dt_lib_module_t and a dt_iop_module_t structur...
The interactive half of a module instance, owned by the GUI.
dt_gui_module_t common_fields
int(* process_plain)(struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, const struct dt_dev_pixelpipe_iop_t *piece, const void *const i, void *const o)
dt_iop_global_data_t * data
gboolean have_introspection
One IOP module built into this binary, and the generated function that binds it.
void(* fill_so)(dt_iop_module_so_t *module)
dt_dev_request_colorpick_flags_t request_color_pick
int32_t hide_enable_button
struct dt_iop_module_t * source
dt_iop_params_t * default_params
struct dt_develop_blend_params_t * blend_params
dt_aligned_pixel_t picked_output_color_min
struct dt_iop_module_gui_t * gui
dt_gui_module_t common_fields
struct dt_develop_t * dev
dt_dev_request_flags_t request_histogram
gboolean have_introspection
dt_dev_histogram_stats_t histogram_stats
dt_aligned_pixel_t picked_output_color_max
uint32_t histogram_max[4]
dt_iop_global_data_t * global_data
gboolean workflow_enabled
dt_aligned_pixel_t picked_output_color
int(* process_plain)(struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, const struct dt_dev_pixelpipe_iop_t *piece, const void *const i, void *const o)
dt_aligned_pixel_t picked_color_min
dt_aligned_pixel_t picked_color_max
int histogram_middle_grey
struct dt_develop_blend_params_t * default_blendop_params
struct dt_iop_module_t::@23 raster_mask
dt_iop_colorspace_type_t histogram_cst
dt_aligned_pixel_t picked_color
Region of interest passed through the pixelpipe.