224#define INCLUDE_API_FROM_MODULE_H
250#define INCLUDE_API_FROM_MODULE_H
420 RELEASE(&module->gui_lock)
453#define dt_iop_fmt_log(module, fmt, ...) \
454 dt_print(DT_DEBUG_PIPE, "[iop-fmt] %-14s " fmt "\n", (module)->op, ##__VA_ARGS__)
561 gboolean
enable, gboolean write_history,
const char *reason);
589 const char *purpose,
const char *input,
590 const char *
process,
const char *output);
595 module->gui_data = (dt_iop_gui_data_t*)dt_calloc_align(size);
597 return module->gui_data;
599#define IOP_GUI_ALLOC(module) \
600 (dt_iop_##module##_gui_data_t *)_iop_gui_alloc(self,sizeof(dt_iop_##module##_gui_data_t))
602#define IOP_GUI_FREE \
603 dt_pthread_mutex_destroy(&self->gui_lock); \
604 if(self->gui_data){ \
605 dt_free_align(self->gui_data); \
606 self->gui_data = NULL; \
608 self->gui_data = NULL;
682#if defined(__x86_64__) || defined(__i386__)
688 __atomic_thread_fence(__ATOMIC_SEQ_CST);
700#define dt_omploop_sfence()
702#define dt_omploop_sfence() dt_sfence()
__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)
static int dt_pthread_mutex_unlock(dt_pthread_mutex_t *mutex) RELEASE(mutex) NO_THREAD_SAFETY_ANALYSIS
static int dt_pthread_mutex_init(dt_pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr)
static int dt_pthread_mutex_lock(dt_pthread_mutex_t *mutex) ACQUIRE(mutex) NO_THREAD_SAFETY_ANALYSIS
static gboolean enable(dt_image_t *image)
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
dt_iop_module_t * dt_iop_get_module(const char *op)
void dt_iop_set_darktable_iop_table()
void dt_iop_gui_cleanup_module(dt_iop_module_t *module)
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)
void dt_iop_gui_set_expander(dt_iop_module_t *module)
void dt_iop_throttled_history_update(gpointer data)
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)
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.
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)
void dt_iop_gui_init(dt_iop_module_t *module)
void dt_iop_cleanup_module(dt_iop_module_t *module)
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)
static gboolean dt_iop_colorspace_is_rgb(const dt_iop_colorspace_type_t cst)
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)
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)
dt_iop_module_t * dt_iop_gui_get_previous_visible_module(dt_iop_module_t *module)
dt_iop_module_header_icons_t
static void dt_iop_gui_enter_critical_section(dt_iop_module_t *const module) ACQUIRE(&module -> gui_lock)
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
static void dt_iop_gui_leave_critical_section(dt_iop_module_t *const module) RELEASE(&module -> gui_lock)
int dt_iop_get_module_flags(const char *op)
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)
gboolean dt_iop_check_modules_equal(dt_iop_module_t *mod_1, dt_iop_module_t *mod_2)
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)
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)
static dt_iop_gui_data_t * _iop_gui_alloc(dt_iop_module_t *module, size_t size)
void dt_iop_update_multi_priority(dt_iop_module_t *module, int new_priority)
void dt_iop_unload_modules_so(void)
float dt_aligned_pixel_t[4]
char dt_dev_operation_t[20]
struct _GtkWidget GtkWidget
const float uint32_t state[4]
unsigned __int64 uint64_t
struct dt_iop_module_t *void * data
The dt_gui_module_t type is the intersection between a dt_lib_module_t and a dt_iop_module_t structur...
GModule *dt_dev_operation_t op
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
dt_dev_request_colorpick_flags_t request_color_pick
GtkDarktableToggleButton * off
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_t::@31 raster_mask
dt_gui_module_t common_fields
struct dt_develop_t * dev
GtkWidget * mask_indicator
dt_iop_gui_data_t * gui_data
GModule *dt_dev_operation_t op
dt_dev_request_flags_t request_histogram
gboolean have_introspection
GtkWidget * guides_toggle
GtkWidget * fusion_slider
GtkWidget * multimenu_button
gboolean multi_show_close
dt_dev_histogram_stats_t histogram_stats
dt_aligned_pixel_t picked_output_color_max
GtkWidget * presets_button
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_pthread_mutex_t gui_lock
dt_aligned_pixel_t picked_color_max
int histogram_middle_grey
struct dt_develop_blend_params_t * default_blendop_params
dt_iop_colorspace_type_t histogram_cst
dt_aligned_pixel_t picked_color
Region of interest passed through the pixelpipe.