Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
imageop.h
Go to the documentation of this file.
1/*
2 This file is part of darktable,
3 Copyright (C) 2009-2021 darktable developers.
4
5 darktable is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 3 of the License, or
8 (at your option) any later version.
9
10 darktable is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with darktable. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19#pragma once
20
21#include <gmodule.h>
22#include <gtk/gtk.h>
23#include <sched.h>
24#include <stdint.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
31typedef struct dt_iop_roi_t
32{
33 int x, y, width, height;
34 double scale;
36
37#ifdef __cplusplus
38}
39#endif
40
41#include "common/darktable.h"
44#include "common/opencl.h"
45
46#include "control/settings.h"
47#include "develop/pixelpipe.h"
48#include "dtgtk/togglebutton.h"
49#include "gui/gtk.h"
50
51#ifdef __cplusplus
52extern "C" {
53#endif
54
55struct dt_develop_t;
61
73
87
89typedef enum dt_iop_tags_t
90{
95
96 // might be some other filters togglable by user?
97 // IOP_TAG_SLOW = 1<<3,
98 // IOP_TAG_DETAIL_FIX = 1<<3,
100
102typedef enum dt_iop_flags_t
103{
105
108 IOP_FLAGS_SUPPORTS_BLENDING = 1 << 1, // Does provide blending modes
110 IOP_FLAGS_ALLOW_TILING = 1 << 3, // Does allow tile-wise processing (valid for CPU and GPU processing)
111 IOP_FLAGS_HIDDEN = 1 << 4, // Hide the iop from userinterface
113 = 1 << 5, // Tiling code has to expect arbitrary roi's for this module (incl. flipping, mirroring etc.)
114 IOP_FLAGS_ONE_INSTANCE = 1 << 6, // The module doesn't support multiple instances
115 IOP_FLAGS_PREVIEW_NON_OPENCL = 1 << 7, // Preview pixelpipe of this module must not run on GPU but always on CPU
116 IOP_FLAGS_NO_HISTORY_STACK = 1 << 8, // This iop will never show up in the history stack
117 IOP_FLAGS_NO_MASKS = 1 << 9, // The module doesn't support masks (used with SUPPORT_BLENDING)
118 IOP_FLAGS_FENCE = 1 << 10, // No module can be moved pass this one
119 IOP_FLAGS_UNSAFE_COPY = 1 << 11, // Unsafe to copy as part of history
120 IOP_FLAGS_GUIDES_SPECIAL_DRAW = 1 << 12, // handle the grid drawing directly
121 IOP_FLAGS_INTERNAL_MASKS = 1 << 13 // Module uses masks internally, outside of blendops. This advertises the need to commit them to history unconditionnaly.
123
124typedef struct dt_iop_gui_data_t
125{
126 // "base type" for all dt_iop_XXXX_gui_data_t types used by iops
127 // to avoid compiler error about different sizes of empty structs between C and C++, we need at least one member
128 int dummy;
130
131typedef void dt_iop_data_t;
133
136{
138 DT_REQUEST_COLORPICK_MODULE = 1 // requested by module (should take precedence)
140
152
154typedef struct dt_iop_module_so_t
155{
156 // Needs to stay on top for casting
158
159#define INCLUDE_API_FROM_MODULE_H
160#include "iop/iop_api.h"
161
163 GModule *module;
170// dt_iop_gui_data_t *gui_data;
174 const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in,
175 const struct dt_iop_roi_t *const roi_out);
176
177 // introspection related data
180
181typedef struct dt_iop_module_t
182{
183 // Needs to stay on top for casting
185
186#define INCLUDE_API_FROM_MODULE_H
187#include "iop/iop_api.h"
188
190 GModule *module;
194 int32_t instance;
208 gboolean bypass_cache;
214 uint32_t *histogram;
218 uint32_t histogram_max[4];
229 gboolean enabled;
235
240 int32_t params_size;
243 dt_pthread_mutex_t gui_lock;
249 gpointer blend_data;
250 struct {
251 struct {
255 GHashTable *users;
259 GHashTable *masks;
260 } source;
261 struct {
264 int id;
265 } sink;
268 GtkWidget *widget;
272 GtkWidget *header;
274 GtkWidget *mask_indicator;
276 GtkWidget *expander;
277 gboolean expanded;
279 GtkWidget *reset_button;
281 GtkWidget *presets_button;
283 GtkWidget *fusion_slider;
284
286 GtkWidget *guides_toggle;
287 GtkWidget *guides_combo;
288
291
293 int multi_priority; // user may change this
294 char multi_name[128]; // user may change this name
300
303
305 const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in,
306 const struct dt_iop_roi_t *const roi_out);
307
308 // introspection related data
310
311 // parameters hash
313
314 // blendop hash
315 // Ideally, this would be added to struct dt_develop_blend_params_t *blendop
316 // but since blendops are dumped to DB as a memory blob, we can't change their length
317 // without updating version (aka breaking backwards compatibility), and this minor
318 // stuff is not worth it.
320
322
324void dt_iop_load_modules_so(void);
326void dt_iop_unload_modules_so(void);
330GList *dt_iop_load_modules_ext(struct dt_develop_t *dev, gboolean no_image);
337 struct dt_dev_pixelpipe_iop_t *piece);
343 ACQUIRE(&module->gui_lock)
344{
345 dt_pthread_mutex_lock(&module->gui_lock);
346}
349 RELEASE(&module->gui_lock)
350{
352}
362void dt_iop_gui_set_expanded(dt_iop_module_t *module, gboolean expanded, gboolean collapse_others);
365/* duplicate module and return new instance */
367
369
372 struct dt_develop_blend_params_t *blendop_params, struct dt_dev_pixelpipe_t *pipe,
373 struct dt_dev_pixelpipe_iop_t *piece);
376void dt_iop_set_mask_mode(dt_iop_module_t *module, int mask_mode);
383
394
396void dt_iop_nap(int32_t usec);
397
400/* returns the iop-module found in list with the given name */
401dt_iop_module_t *dt_iop_get_module_from_list(GList *iop_list, const char *op);
402dt_iop_module_t *dt_iop_get_module(const char *op);
405dt_iop_module_t *dt_iop_get_module_by_op_priority(GList *modules, const char *operation, const int multi_priority);
408dt_iop_module_t *dt_iop_get_module_by_instance_name(GList *modules, const char *operation, const char *multi_name);
409
412
415
416
418int dt_iop_get_module_flags(const char *op);
419
421const gchar *dt_iop_get_localized_name(const gchar *op);
422const gchar *dt_iop_get_localized_aliases(const gchar *op);
423
426
429
436
437// initializes memory.darktable_iop_names
439
444
449
452
453// format modules description going in tooltips
454const char **dt_iop_set_description(dt_iop_module_t *module, const char *main_text,
455 const char *purpose, const char *input,
456 const char *process, const char *output);
457
459{
460 // Align so that DT_ALIGNED_ARRAY may be used within gui_data struct
461 module->gui_data = (dt_iop_gui_data_t*)dt_calloc_align(size);
463 return module->gui_data;
464}
465#define IOP_GUI_ALLOC(module) \
466 (dt_iop_##module##_gui_data_t *)_iop_gui_alloc(self,sizeof(dt_iop_##module##_gui_data_t))
467
468#define IOP_GUI_FREE \
469 dt_pthread_mutex_destroy(&self->gui_lock);if(self->gui_data){dt_free_align(self->gui_data);} self->gui_data = NULL
470
474 const int actual_pipe_ch,
475 const void *const __restrict__ ivoid, void *const __restrict__ ovoid,
476 const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out);
477
478/* bring up module rename dialog */
480
481/* dispatch post-value-changed GUI events within module and commit changes to history */
482void dt_iop_gui_changed(dt_iop_module_t *module, GtkWidget *widget, gpointer data);
483
484// update all bauhaus widgets in an iop module from their params fields
486
487// default callback to connect to value-changed signal for bauhaus widgets
488// it will automatically call dt_iop_changed for the right module.
490
491
513
514// Use module fingerprints to determine if two instances are actually the same
516
517
542void dt_iop_set_cache_bypass(dt_iop_module_t *module, gboolean state);
543
544// after writing data using copy_pixel_nontemporal, it is necessary to
545// ensure that the writes have completed before attempting reads from
546// a different core. This function produces the required memory
547// fence to ensure proper visibility
548static inline void dt_sfence()
549{
550#if defined(__SSE__)
551 _mm_sfence();
552#else
553 // the following generates an MFENCE instruction on x86/x64. We
554 // only really need SFENCE, which is less expensive, but none of the
555 // other memory orders generate *any* fence instructions on x64.
556#ifdef __cplusplus
557 std::atomic_thread_fence(std::memory_order_seq_cst);
558#else
560#endif
561#endif
562}
563
564// if the copy_pixel_nontemporal() writes were inside an OpenMP
565// parallel loop, the OpenMP parallelization will have performed a
566// memory fence before resuming single-threaded operation, so a
567// dt_sfence would be superfluous. But if compiled without OpenMP
568// parallelization, we should play it safe and emit a memory fence.
569// This function should be used right after a parallelized for loop,
570// where it will produce a barrier only if needed.
571#ifdef _OPENMP
572#define dt_omploop_sfence()
573#else
574#define dt_omploop_sfence() dt_sfence()
575#endif
576
577#ifdef __cplusplus
578}
579#endif
580
581// clang-format off
582// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
583// vim: shiftwidth=2 expandtab tabstop=2 cindent
584// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
585// clang-format on
void process(struct dt_iop_module_t *self, dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
Definition ashift.c:3088
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
dt_iop_colorspace_type_t
Definition color_conversion.h:24
@ ACQUIRE
Definition colormapping.c:72
void dt_iop_params_t
Definition dev_history.h:22
static int dt_pthread_mutex_unlock(dt_pthread_mutex_t *mutex) RELEASE(mutex) NO_THREAD_SAFETY_ANALYSIS
Definition dtpthread.h:321
static int dt_pthread_mutex_init(dt_pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr)
Definition dtpthread.h:306
static int dt_pthread_mutex_lock(dt_pthread_mutex_t *mutex) ACQUIRE(mutex) NO_THREAD_SAFETY_ANALYSIS
Definition dtpthread.h:311
dt_iop_module_t * dt_iop_get_module_from_list(GList *iop_list, const char *op)
Definition imageop.c:2470
dt_dev_request_colorpick_flags_t
Definition imageop.h:136
@ DT_REQUEST_COLORPICK_OFF
Definition imageop.h:137
@ DT_REQUEST_COLORPICK_MODULE
Definition imageop.h:138
void dt_iop_refresh_center(dt_iop_module_t *module)
Definition imageop.c:2760
dt_iop_module_t * dt_iop_get_module(const char *op)
Definition imageop.c:2487
void dt_iop_set_darktable_iop_table()
Definition imageop.c:2551
GList * dt_iop_load_modules_ext(struct dt_develop_t *dev, gboolean no_image)
Definition imageop.c:1387
void dt_iop_gui_cleanup_module(dt_iop_module_t *module)
Definition imageop.c:1780
void dt_iop_refresh_preview(dt_iop_module_t *module)
Definition imageop.c:2771
void dt_iop_load_default_params(dt_iop_module_t *module)
Definition imageop.c:73
dt_iop_module_t * dt_iop_get_module_by_instance_name(GList *modules, const char *operation, const char *multi_name)
Definition imageop.c:2724
GtkWidget * dt_iop_gui_get_pluginui(dt_iop_module_t *module)
Definition imageop.c:2425
gboolean dt_iop_is_raster_mask_used(dt_iop_module_t *module, int id)
Definition imageop.c:2641
void dt_iop_compute_module_hash(dt_iop_module_t *module, GList *masks)
Definition imageop.c:1699
void dt_iop_add_remove_mask_indicator(dt_iop_module_t *module)
Definition imageop.c:2190
void dt_iop_reload_defaults(dt_iop_module_t *module)
Definition imageop.c:1102
static void dt_sfence()
Definition imageop.h:548
void dt_iop_gui_set_expander(dt_iop_module_t *module)
Definition imageop.c:2282
dt_iop_module_t * dt_iop_gui_get_next_visible_module(dt_iop_module_t *module)
Definition imageop.c:580
void dt_iop_init_pipe(struct dt_iop_module_t *module, struct dt_dev_pixelpipe_t *pipe, struct dt_dev_pixelpipe_iop_t *piece)
Definition imageop.c:442
int dt_iop_load_module(dt_iop_module_t *module, dt_iop_module_so_t *module_so, struct dt_develop_t *dev)
Definition imageop.c:1376
gboolean dt_iop_is_first_instance(GList *modules, dt_iop_module_t *module)
Definition imageop.c:2742
void dt_iop_gui_init(dt_iop_module_t *module)
Definition imageop.c:1075
void dt_iop_cleanup_module(dt_iop_module_t *module)
Definition imageop.c:1425
void dt_iop_gui_update(dt_iop_module_t *module)
Definition imageop.c:1815
const gchar * dt_iop_get_localized_aliases(const gchar *op)
Definition imageop.c:2595
const gchar * dt_iop_get_localized_name(const gchar *op)
Definition imageop.c:2573
void dt_bauhaus_update_module(dt_iop_module_t *self)
Definition imageop.c:2872
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)
Definition imageop.c:1722
dt_iop_module_t * dt_iop_get_module_preferred_instance(dt_iop_module_so_t *module)
Definition imageop.c:2673
void dt_iop_gui_reset(dt_iop_module_t *module)
Definition imageop.c:1835
void dt_iop_load_modules_so(void)
Definition imageop.c:1370
void dt_iop_nap(int32_t usec)
Definition imageop.c:2431
void dt_iop_default_init(dt_iop_module_t *module)
Definition imageop.c:218
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)
Definition imageop.c:2857
void dt_iop_gui_update_expanded(dt_iop_module_t *module)
Definition imageop.c:2028
void dt_iop_gui_update_header(dt_iop_module_t *module)
Definition imageop.c:1031
void dt_iop_gui_set_enable_button(dt_iop_module_t *module)
Definition imageop.c:1059
int dt_iop_load_module_by_so(dt_iop_module_t *module, dt_iop_module_so_t *so, struct dt_develop_t *dev)
Definition imageop.c:362
void dt_iop_request_focus(dt_iop_module_t *module)
Definition imageop.c:1883
dt_iop_module_t * dt_iop_gui_get_previous_visible_module(dt_iop_module_t *module)
Definition imageop.c:566
dt_iop_module_header_icons_t
Definition imageop.h:63
@ IOP_MODULE_ICON
Definition imageop.h:65
@ IOP_MODULE_PRESETS
Definition imageop.h:70
@ IOP_MODULE_RESET
Definition imageop.h:69
@ IOP_MODULE_LABEL
Definition imageop.h:66
@ IOP_MODULE_MASK
Definition imageop.h:67
@ IOP_MODULE_LAST
Definition imageop.h:71
@ IOP_MODULE_SWITCH
Definition imageop.h:64
@ IOP_MODULE_INSTANCE
Definition imageop.h:68
static void dt_iop_gui_enter_critical_section(dt_iop_module_t *const module) ACQUIRE(&module -> gui_lock)
Definition imageop.h:342
gboolean dt_iop_is_hidden(dt_iop_module_t *module)
Definition imageop.c:986
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)
Definition imageop.c:2819
GtkWidget * dt_iop_gui_get_widget(dt_iop_module_t *module)
Definition imageop.c:2420
gboolean dt_iop_so_is_hidden(dt_iop_module_so_t *module)
Definition imageop.c:971
dt_iop_flags_t
Definition imageop.h:103
@ IOP_FLAGS_HIDDEN
Definition imageop.h:111
@ IOP_FLAGS_INCLUDE_IN_STYLES
Definition imageop.h:107
@ IOP_FLAGS_INTERNAL_MASKS
Definition imageop.h:121
@ IOP_FLAGS_PREVIEW_NON_OPENCL
Definition imageop.h:115
@ IOP_FLAGS_DEPRECATED
Definition imageop.h:109
@ IOP_FLAGS_SUPPORTS_BLENDING
Definition imageop.h:108
@ IOP_FLAGS_ALLOW_TILING
Definition imageop.h:110
@ IOP_FLAGS_UNSAFE_COPY
Definition imageop.h:119
@ IOP_FLAGS_NONE
Definition imageop.h:104
@ IOP_FLAGS_ONE_INSTANCE
Definition imageop.h:114
@ IOP_FLAGS_NO_MASKS
Definition imageop.h:117
@ IOP_FLAGS_GUIDES_SPECIAL_DRAW
Definition imageop.h:120
@ IOP_FLAGS_TILING_FULL_ROI
Definition imageop.h:112
@ IOP_FLAGS_FENCE
Definition imageop.h:118
@ IOP_FLAGS_NO_HISTORY_STACK
Definition imageop.h:116
void dt_iop_global_data_t
Definition imageop.h:132
static void dt_iop_gui_leave_critical_section(dt_iop_module_t *const module) RELEASE(&module -> gui_lock)
Definition imageop.h:348
int dt_iop_get_module_flags(const char *op)
Definition imageop.c:2492
gboolean dt_iop_have_required_input_format(const int required_ch, struct dt_iop_module_t *const module, const int actual_pipe_ch, const void *const __restrict__ ivoid, void *const __restrict__ ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
void dt_bauhaus_value_changed_default_callback(GtkWidget *widget)
Definition imageop.c:2925
dt_iop_module_t * dt_iop_get_colorout_module(void)
Definition imageop.c:2465
gboolean dt_iop_check_modules_equal(dt_iop_module_t *mod_1, dt_iop_module_t *mod_2)
Definition imageop.c:1627
void dt_iop_cancel_history_update(dt_iop_module_t *module)
Definition imageop.c:2810
void dt_iop_queue_history_update(dt_iop_module_t *module, gboolean extend_prior)
Definition imageop.c:2792
void dt_iop_data_t
Definition imageop.h:131
dt_iop_colorspace_type_t
Definition imageop.h:143
@ IOP_CS_RAW
Definition imageop.h:145
@ IOP_CS_LCH
Definition imageop.h:148
@ IOP_CS_JZCZHZ
Definition imageop.h:150
@ IOP_CS_RGB
Definition imageop.h:147
@ IOP_CS_HSL
Definition imageop.h:149
@ IOP_CS_LAB
Definition imageop.h:146
@ IOP_CS_NONE
Definition imageop.h:144
void dt_iop_gui_set_expanded(dt_iop_module_t *module, gboolean expanded, gboolean collapse_others)
Definition imageop.c:2011
dt_iop_group_t
Definition imageop.h:76
@ IOP_GROUP_LAST
Definition imageop.h:85
@ IOP_GROUP_EFFECTS
Definition imageop.h:83
@ IOP_GROUP_FILM
Definition imageop.h:79
@ IOP_GROUP_TECHNICAL
Definition imageop.h:84
@ IOP_GROUP_COLOR
Definition imageop.h:80
@ IOP_GROUP_REPAIR
Definition imageop.h:81
@ IOP_GROUP_SHARPNESS
Definition imageop.h:82
@ IOP_GROUP_TONES
Definition imageop.h:78
@ IOP_GROUP_NONE
Definition imageop.h:77
void dt_iop_set_cache_bypass(dt_iop_module_t *module, gboolean state)
Definition imageop.c:2447
gboolean dt_iop_get_cache_bypass(dt_iop_module_t *module)
Definition imageop.c:2442
void dt_iop_set_mask_mode(dt_iop_module_t *module, int mask_mode)
Definition imageop.c:1460
void dt_iop_gui_rename_module(dt_iop_module_t *module)
Definition imageop.c:829
dt_iop_module_t * dt_iop_gui_duplicate(dt_iop_module_t *base, gboolean copy_params)
Definition imageop.c:661
GList * dt_iop_load_modules(struct dt_develop_t *dev)
Definition imageop.c:1420
gboolean dt_iop_gui_module_is_visible(dt_iop_module_t *module)
Definition imageop.c:560
dt_iop_module_t * dt_iop_get_module_by_op_priority(GList *modules, const char *operation, const int multi_priority)
Definition imageop.c:2655
static dt_iop_gui_data_t * _iop_gui_alloc(dt_iop_module_t *module, size_t size)
Definition imageop.h:458
void dt_iop_update_multi_priority(dt_iop_module_t *module, int new_priority)
Definition imageop.c:2617
dt_iop_tags_t
Definition imageop.h:90
@ IOP_TAG_DECORATION
Definition imageop.h:93
@ IOP_TAG_CLIPPING
Definition imageop.h:94
@ IOP_TAG_DISTORT
Definition imageop.h:92
@ IOP_TAG_NONE
Definition imageop.h:91
void dt_iop_unload_modules_so(void)
Definition imageop.c:1448
size_t size
Definition mipmap_cache.c:3
dt_dev_request_flags_t
Definition pixelpipe.h:41
char dt_dev_operation_t[20]
Definition settings.h:35
unsigned __int64 uint64_t
Definition strptime.c:71
Definition togglebutton.h:32
Definition pixelpipe.h:60
Definition pixelpipe_hb.h:46
Definition pixelpipe_hb.h:127
Definition blend.h:180
Definition develop.h:143
Definition tiling.h:30
The dt_gui_module_t type is the intersection between a dt_lib_module_t and a dt_iop_module_t structur...
Definition gui_module_api.h:25
Definition color_picker_proxy.h:42
Definition imageop.h:125
int dummy
Definition imageop.h:128
Definition imageop.h:155
GModule *dt_dev_operation_t op
Definition imageop.h:165
dt_gui_module_t common_fields
Definition imageop.h:157
dt_iop_global_data_t * data
Definition imageop.h:168
gboolean have_introspection
Definition imageop.h:178
void(* process_plain)(struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in, const struct dt_iop_roi_t *const roi_out)
Definition imageop.h:173
Definition imageop.h:182
dt_dev_request_colorpick_flags_t request_color_pick
Definition imageop.h:200
GtkDarktableToggleButton * off
Definition imageop.h:270
int32_t hide_enable_button
Definition imageop.h:198
gpointer blend_data
Definition imageop.h:249
struct dt_iop_module_t * source
Definition imageop.h:263
dt_iop_params_t * default_params
Definition imageop.h:238
GHashTable * masks
Definition imageop.h:259
struct dt_develop_blend_params_t * blend_params
Definition imageop.h:247
dt_aligned_pixel_t picked_output_color_min
Definition imageop.h:212
uint64_t hash
Definition imageop.h:312
int32_t suppress_mask
Definition imageop.h:206
GtkWidget * widget
Definition imageop.h:268
int multi_priority
Definition imageop.h:293
char multi_name[128]
Definition imageop.h:294
dt_gui_module_t common_fields
Definition imageop.h:184
struct dt_develop_t * dev
Definition imageop.h:227
GtkWidget * mask_indicator
Definition imageop.h:274
dt_iop_gui_data_t * gui_data
Definition imageop.h:242
uint64_t blendop_hash
Definition imageop.h:319
gboolean default_enabled
Definition imageop.h:234
GModule *dt_dev_operation_t op
Definition imageop.h:192
dt_dev_request_flags_t request_histogram
Definition imageop.h:202
int iop_order
Definition imageop.h:196
gboolean have_introspection
Definition imageop.h:309
GtkWidget * guides_toggle
Definition imageop.h:286
GtkWidget * fusion_slider
Definition imageop.h:283
struct dt_iop_module_t::@27 raster_mask
gboolean expanded
Definition imageop.h:277
GtkWidget * multimenu_button
Definition imageop.h:299
gboolean multi_show_close
Definition imageop.h:295
dt_dev_histogram_stats_t histogram_stats
Definition imageop.h:216
dt_aligned_pixel_t picked_output_color_max
Definition imageop.h:212
int32_t instance
Definition imageop.h:194
gboolean multi_show_up
Definition imageop.h:296
gboolean bypass_cache
Definition imageop.h:208
GtkWidget * presets_button
Definition imageop.h:281
uint32_t histogram_max[4]
Definition imageop.h:218
dt_iop_global_data_t * global_data
Definition imageop.h:245
gboolean multi_show_new
Definition imageop.h:298
gboolean multi_show_down
Definition imageop.h:297
int id
Definition imageop.h:264
gboolean workflow_enabled
Definition imageop.h:236
dt_aligned_pixel_t picked_output_color
Definition imageop.h:212
gboolean enabled
Definition imageop.h:229
GtkWidget * reset_button
Definition imageop.h:279
dt_iop_module_so_t * so
Definition imageop.h:290
GtkWidget * expander
Definition imageop.h:276
dt_aligned_pixel_t picked_color_min
Definition imageop.h:210
int request_mask_display
Definition imageop.h:204
void(* process_plain)(struct dt_iop_module_t *self, struct dt_dev_pixelpipe_iop_t *piece, const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in, const struct dt_iop_roi_t *const roi_out)
Definition imageop.h:304
dt_pthread_mutex_t gui_lock
Definition imageop.h:243
dt_aligned_pixel_t picked_color_max
Definition imageop.h:210
int histogram_middle_grey
Definition imageop.h:225
GHashTable * users
Definition imageop.h:255
struct dt_develop_blend_params_t * default_blendop_params
Definition imageop.h:247
GtkWidget * header
Definition imageop.h:272
int32_t params_size
Definition imageop.h:240
uint32_t * histogram
Definition imageop.h:214
dt_iop_colorspace_type_t histogram_cst
Definition imageop.h:223
guint timeout_handle
Definition imageop.h:302
dt_aligned_pixel_t picked_color
Definition imageop.h:210
GtkWidget * guides_combo
Definition imageop.h:287
dt_iop_params_t * params
Definition imageop.h:238
Definition imageop.h:32
int x
Definition imageop.h:33
double scale
Definition imageop.h:34
int width
Definition imageop.h:33
int height
Definition imageop.h:33
int y
Definition imageop.h:33