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
112 IOP_FLAGS_TILING_FULL_ROI = 1 << 5, // Tiling code has to expect arbitrary roi's for this module (incl. flipping, mirroring etc.)
113 IOP_FLAGS_ONE_INSTANCE = 1 << 6, // The module doesn't support multiple instances
114 IOP_FLAGS_PREVIEW_NON_OPENCL = 1 << 7, // Preview pixelpipe of this module must not run on GPU but always on CPU
115 IOP_FLAGS_NO_HISTORY_STACK = 1 << 8, // This iop will never show up in the history stack
116 IOP_FLAGS_NO_MASKS = 1 << 9, // The module doesn't support masks (used with SUPPORT_BLENDING)
117 IOP_FLAGS_FENCE = 1 << 10, // No module can be moved pass this one
118 IOP_FLAGS_UNSAFE_COPY = 1 << 11, // Unsafe to copy as part of history
119 IOP_FLAGS_GUIDES_SPECIAL_DRAW = 1 << 12, // handle the grid drawing directly
120 IOP_FLAGS_INTERNAL_MASKS = 1 << 13 // Module uses masks internally, outside of blendops. This advertises the need to commit them to history unconditionnaly.
122
123typedef struct dt_iop_gui_data_t
124{
125 // "base type" for all dt_iop_XXXX_gui_data_t types used by iops
126 // to avoid compiler error about different sizes of empty structs between C and C++, we need at least one member
127 int dummy;
129
130typedef void dt_iop_data_t;
132
135{
137 DT_REQUEST_COLORPICK_MODULE = 1 // requested by module (should take precedence)
139
151
153typedef struct dt_iop_module_so_t
154{
155 // Needs to stay on top for casting
157
158#define INCLUDE_API_FROM_MODULE_H
159#include "iop/iop_api.h"
160
162 GModule *module;
169// dt_iop_gui_data_t *gui_data;
173 const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in,
174 const struct dt_iop_roi_t *const roi_out);
175
176 // introspection related data
179
180typedef struct dt_iop_module_t
181{
182 // Needs to stay on top for casting
184
185#define INCLUDE_API_FROM_MODULE_H
186#include "iop/iop_api.h"
187
189 GModule *module;
193 int32_t instance;
207 gboolean bypass_cache;
213 uint32_t *histogram;
217 uint32_t histogram_max[4];
228 gboolean enabled;
234
239 int32_t params_size;
242 dt_pthread_mutex_t gui_lock;
248 gpointer blend_data;
249 struct {
250 struct {
254 GHashTable *users;
258 GHashTable *masks;
259 } source;
260 struct {
263 int id;
264 } sink;
267 GtkWidget *widget;
271 GtkWidget *header;
273 GtkWidget *mask_indicator;
275 GtkWidget *expander;
276 gboolean expanded;
278 GtkWidget *reset_button;
280 GtkWidget *presets_button;
282 GtkWidget *fusion_slider;
283
285 GtkWidget *guides_toggle;
286 GtkWidget *guides_combo;
287
290
292 int multi_priority; // user may change this
293 char multi_name[128]; // user may change this name
299
302
304 const void *const i, void *const o, const struct dt_iop_roi_t *const roi_in,
305 const struct dt_iop_roi_t *const roi_out);
306
307 // introspection related data
309
310 // parameters hash
312
313 // blendop hash
314 // Ideally, this would be added to struct dt_develop_blend_params_t *blendop
315 // but since blendops are dumped to DB as a memory blob, we can't change their length
316 // without updating version (aka breaking backwards compatibility), and this minor
317 // stuff is not worth it.
319
321
323void dt_iop_load_modules_so(void);
325void dt_iop_unload_modules_so(void);
329GList *dt_iop_load_modules_ext(struct dt_develop_t *dev, gboolean no_image);
336 struct dt_dev_pixelpipe_iop_t *piece);
342 ACQUIRE(&module->gui_lock)
343{
344 dt_pthread_mutex_lock(&module->gui_lock);
345}
348 RELEASE(&module->gui_lock)
349{
351}
361void dt_iop_gui_set_expanded(dt_iop_module_t *module, gboolean expanded, gboolean collapse_others);
364/* duplicate module and return new instance */
366
368
371 struct dt_develop_blend_params_t *blendop_params, struct dt_dev_pixelpipe_t *pipe,
372 struct dt_dev_pixelpipe_iop_t *piece);
375void dt_iop_set_mask_mode(dt_iop_module_t *module, int mask_mode);
382
393
395void dt_iop_nap(int32_t usec);
396
399/* returns the iop-module found in list with the given name */
400dt_iop_module_t *dt_iop_get_module_from_list(GList *iop_list, const char *op);
401dt_iop_module_t *dt_iop_get_module(const char *op);
404dt_iop_module_t *dt_iop_get_module_by_op_priority(GList *modules, const char *operation, const int multi_priority);
407dt_iop_module_t *dt_iop_get_module_by_instance_name(GList *modules, const char *operation, const char *multi_name);
408
411
412
414int dt_iop_get_module_flags(const char *op);
415
417const gchar *dt_iop_get_localized_name(const gchar *op);
418const gchar *dt_iop_get_localized_aliases(const gchar *op);
419
422
425
432
433// initializes memory.darktable_iop_names
435
440
443
444// format modules description going in tooltips
445const char **dt_iop_set_description(dt_iop_module_t *module, const char *main_text,
446 const char *purpose, const char *input,
447 const char *process, const char *output);
448
450{
451 // Align so that DT_ALIGNED_ARRAY may be used within gui_data struct
452 module->gui_data = (dt_iop_gui_data_t*)dt_calloc_align(size);
454 return module->gui_data;
455}
456#define IOP_GUI_ALLOC(module) \
457 (dt_iop_##module##_gui_data_t *)_iop_gui_alloc(self,sizeof(dt_iop_##module##_gui_data_t))
458
459#define IOP_GUI_FREE \
460 dt_pthread_mutex_destroy(&self->gui_lock);if(self->gui_data){dt_free_align(self->gui_data);} self->gui_data = NULL
461
465 const int actual_pipe_ch,
466 const void *const __restrict__ ivoid, void *const __restrict__ ovoid,
467 const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out);
468
469/* bring up module rename dialog */
471
472/* dispatch post-value-changed GUI events within module and commit changes to history */
473void dt_iop_gui_changed(dt_iop_module_t *module, GtkWidget *widget, gpointer data);
474
475// update all bauhaus widgets in an iop module from their params fields
477
478// default callback to connect to value-changed signal for bauhaus widgets
479// it will automatically call dt_iop_changed for the right module.
481
482
504
505// Use module fingerprints to determine if two instances are actually the same
507
508
533void dt_iop_set_cache_bypass(dt_iop_module_t *module, gboolean state);
534
535// after writing data using copy_pixel_nontemporal, it is necessary to
536// ensure that the writes have completed before attempting reads from
537// a different core. This function produces the required memory
538// fence to ensure proper visibility
539static inline void dt_sfence()
540{
541#if defined(__SSE__)
542 _mm_sfence();
543#else
544 // the following generates an MFENCE instruction on x86/x64. We
545 // only really need SFENCE, which is less expensive, but none of the
546 // other memory orders generate *any* fence instructions on x64.
547#ifdef __cplusplus
548 std::atomic_thread_fence(std::memory_order_seq_cst);
549#else
551#endif
552#endif
553}
554
555// if the copy_pixel_nontemporal() writes were inside an OpenMP
556// parallel loop, the OpenMP parallelization will have performed a
557// memory fence before resuming single-threaded operation, so a
558// dt_sfence would be superfluous. But if compiled without OpenMP
559// parallelization, we should play it safe and emit a memory fence.
560// This function should be used right after a parallelized for loop,
561// where it will produce a barrier only if needed.
562#ifdef _OPENMP
563#define dt_omploop_sfence()
564#else
565#define dt_omploop_sfence() dt_sfence()
566#endif
567
568#ifdef __cplusplus
569}
570#endif
571
572// clang-format off
573// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
574// vim: shiftwidth=2 expandtab tabstop=2 cindent
575// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
576// 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:319
static int dt_pthread_mutex_init(dt_pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr)
Definition dtpthread.h:304
static int dt_pthread_mutex_lock(dt_pthread_mutex_t *mutex) ACQUIRE(mutex) NO_THREAD_SAFETY_ANALYSIS
Definition dtpthread.h:309
dt_iop_module_t * dt_iop_get_module_from_list(GList *iop_list, const char *op)
Definition imageop.c:2491
dt_dev_request_colorpick_flags_t
Definition imageop.h:135
@ DT_REQUEST_COLORPICK_OFF
Definition imageop.h:136
@ DT_REQUEST_COLORPICK_MODULE
Definition imageop.h:137
dt_iop_module_t * dt_iop_get_module(const char *op)
Definition imageop.c:2508
void dt_iop_set_darktable_iop_table()
Definition imageop.c:2572
GList * dt_iop_load_modules_ext(struct dt_develop_t *dev, gboolean no_image)
Definition imageop.c:1408
void dt_iop_gui_cleanup_module(dt_iop_module_t *module)
Definition imageop.c:1801
void dt_iop_load_default_params(dt_iop_module_t *module)
Definition imageop.c:98
dt_iop_module_t * dt_iop_get_module_by_instance_name(GList *modules, const char *operation, const char *multi_name)
Definition imageop.c:2694
GtkWidget * dt_iop_gui_get_pluginui(dt_iop_module_t *module)
Definition imageop.c:2446
gboolean dt_iop_is_raster_mask_used(dt_iop_module_t *module, int id)
Definition imageop.c:2662
void dt_iop_compute_module_hash(dt_iop_module_t *module, GList *masks)
Definition imageop.c:1720
void dt_iop_add_remove_mask_indicator(dt_iop_module_t *module)
Definition imageop.c:2211
void dt_iop_reload_defaults(dt_iop_module_t *module)
Definition imageop.c:1123
static void dt_sfence()
Definition imageop.h:539
void dt_iop_gui_set_expander(dt_iop_module_t *module)
Definition imageop.c:2303
dt_iop_module_t * dt_iop_gui_get_next_visible_module(dt_iop_module_t *module)
Definition imageop.c:605
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:467
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:1397
gboolean dt_iop_is_first_instance(GList *modules, dt_iop_module_t *module)
Definition imageop.c:2712
void dt_iop_gui_init(dt_iop_module_t *module)
Definition imageop.c:1096
void dt_iop_cleanup_module(dt_iop_module_t *module)
Definition imageop.c:1446
void dt_iop_gui_update(dt_iop_module_t *module)
Definition imageop.c:1836
const gchar * dt_iop_get_localized_aliases(const gchar *op)
Definition imageop.c:2616
const gchar * dt_iop_get_localized_name(const gchar *op)
Definition imageop.c:2594
void dt_bauhaus_update_module(dt_iop_module_t *self)
Definition imageop.c:2820
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:1743
void dt_iop_gui_reset(dt_iop_module_t *module)
Definition imageop.c:1856
void dt_iop_load_modules_so(void)
Definition imageop.c:1391
void dt_iop_nap(int32_t usec)
Definition imageop.c:2452
void dt_iop_default_init(dt_iop_module_t *module)
Definition imageop.c:243
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:2805
void dt_iop_gui_update_expanded(dt_iop_module_t *module)
Definition imageop.c:2049
void dt_iop_gui_update_header(dt_iop_module_t *module)
Definition imageop.c:1052
void dt_iop_gui_set_enable_button(dt_iop_module_t *module)
Definition imageop.c:1080
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:387
void dt_iop_request_focus(dt_iop_module_t *module)
Definition imageop.c:1904
dt_iop_module_t * dt_iop_gui_get_previous_visible_module(dt_iop_module_t *module)
Definition imageop.c:591
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:341
gboolean dt_iop_is_hidden(dt_iop_module_t *module)
Definition imageop.c:1007
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:2767
GtkWidget * dt_iop_gui_get_widget(dt_iop_module_t *module)
Definition imageop.c:2441
gboolean dt_iop_so_is_hidden(dt_iop_module_so_t *module)
Definition imageop.c:992
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:120
@ IOP_FLAGS_PREVIEW_NON_OPENCL
Definition imageop.h:114
@ 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:118
@ IOP_FLAGS_NONE
Definition imageop.h:104
@ IOP_FLAGS_ONE_INSTANCE
Definition imageop.h:113
@ IOP_FLAGS_NO_MASKS
Definition imageop.h:116
@ IOP_FLAGS_GUIDES_SPECIAL_DRAW
Definition imageop.h:119
@ IOP_FLAGS_TILING_FULL_ROI
Definition imageop.h:112
@ IOP_FLAGS_FENCE
Definition imageop.h:117
@ IOP_FLAGS_NO_HISTORY_STACK
Definition imageop.h:115
void dt_iop_global_data_t
Definition imageop.h:131
static void dt_iop_gui_leave_critical_section(dt_iop_module_t *const module) RELEASE(&module -> gui_lock)
Definition imageop.h:347
int dt_iop_get_module_flags(const char *op)
Definition imageop.c:2513
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:2873
dt_iop_module_t * dt_iop_get_colorout_module(void)
Definition imageop.c:2486
gboolean dt_iop_check_modules_equal(dt_iop_module_t *mod_1, dt_iop_module_t *mod_2)
Definition imageop.c:1648
void dt_iop_cancel_history_update(dt_iop_module_t *module)
Definition imageop.c:2758
void dt_iop_queue_history_update(dt_iop_module_t *module, gboolean extend_prior)
Definition imageop.c:2740
void dt_iop_data_t
Definition imageop.h:130
dt_iop_colorspace_type_t
Definition imageop.h:142
@ IOP_CS_RAW
Definition imageop.h:144
@ IOP_CS_LCH
Definition imageop.h:147
@ IOP_CS_JZCZHZ
Definition imageop.h:149
@ IOP_CS_RGB
Definition imageop.h:146
@ IOP_CS_HSL
Definition imageop.h:148
@ IOP_CS_LAB
Definition imageop.h:145
@ IOP_CS_NONE
Definition imageop.h:143
void dt_iop_gui_set_expanded(dt_iop_module_t *module, gboolean expanded, gboolean collapse_others)
Definition imageop.c:2032
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:2468
gboolean dt_iop_get_cache_bypass(dt_iop_module_t *module)
Definition imageop.c:2463
void dt_iop_set_mask_mode(dt_iop_module_t *module, int mask_mode)
Definition imageop.c:1481
void dt_iop_gui_rename_module(dt_iop_module_t *module)
Definition imageop.c:850
dt_iop_module_t * dt_iop_gui_duplicate(dt_iop_module_t *base, gboolean copy_params)
Definition imageop.c:684
GList * dt_iop_load_modules(struct dt_develop_t *dev)
Definition imageop.c:1441
gboolean dt_iop_gui_module_is_visible(dt_iop_module_t *module)
Definition imageop.c:585
dt_iop_module_t * dt_iop_get_module_by_op_priority(GList *modules, const char *operation, const int multi_priority)
Definition imageop.c:2676
static dt_iop_gui_data_t * _iop_gui_alloc(dt_iop_module_t *module, size_t size)
Definition imageop.h:449
void dt_iop_update_multi_priority(dt_iop_module_t *module, int new_priority)
Definition imageop.c:2638
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:1469
size_t size
Definition mipmap_cache.c:3
dt_dev_request_flags_t
Definition pixelpipe.h:40
char dt_dev_operation_t[20]
Definition settings.h:27
unsigned __int64 uint64_t
Definition strptime.c:71
Definition togglebutton.h:32
Definition pixelpipe.h:59
Definition pixelpipe_hb.h:46
Definition pixelpipe_hb.h:126
Definition blend.h:180
Definition develop.h:150
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:124
int dummy
Definition imageop.h:127
Definition imageop.h:154
GModule *dt_dev_operation_t op
Definition imageop.h:164
dt_gui_module_t common_fields
Definition imageop.h:156
dt_iop_global_data_t * data
Definition imageop.h:167
gboolean have_introspection
Definition imageop.h:177
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:172
Definition imageop.h:181
dt_dev_request_colorpick_flags_t request_color_pick
Definition imageop.h:199
GtkDarktableToggleButton * off
Definition imageop.h:269
int32_t hide_enable_button
Definition imageop.h:197
gpointer blend_data
Definition imageop.h:248
struct dt_iop_module_t * source
Definition imageop.h:262
dt_iop_params_t * default_params
Definition imageop.h:237
GHashTable * masks
Definition imageop.h:258
struct dt_develop_blend_params_t * blend_params
Definition imageop.h:246
dt_aligned_pixel_t picked_output_color_min
Definition imageop.h:211
uint64_t hash
Definition imageop.h:311
int32_t suppress_mask
Definition imageop.h:205
GtkWidget * widget
Definition imageop.h:267
int multi_priority
Definition imageop.h:292
char multi_name[128]
Definition imageop.h:293
dt_gui_module_t common_fields
Definition imageop.h:183
struct dt_develop_t * dev
Definition imageop.h:226
GtkWidget * mask_indicator
Definition imageop.h:273
dt_iop_gui_data_t * gui_data
Definition imageop.h:241
uint64_t blendop_hash
Definition imageop.h:318
gboolean default_enabled
Definition imageop.h:233
GModule *dt_dev_operation_t op
Definition imageop.h:191
dt_dev_request_flags_t request_histogram
Definition imageop.h:201
int iop_order
Definition imageop.h:195
gboolean have_introspection
Definition imageop.h:308
GtkWidget * guides_toggle
Definition imageop.h:285
GtkWidget * fusion_slider
Definition imageop.h:282
gboolean expanded
Definition imageop.h:276
GtkWidget * multimenu_button
Definition imageop.h:298
gboolean multi_show_close
Definition imageop.h:294
struct dt_iop_module_t::@28 raster_mask
dt_dev_histogram_stats_t histogram_stats
Definition imageop.h:215
dt_aligned_pixel_t picked_output_color_max
Definition imageop.h:211
int32_t instance
Definition imageop.h:193
gboolean multi_show_up
Definition imageop.h:295
gboolean bypass_cache
Definition imageop.h:207
GtkWidget * presets_button
Definition imageop.h:280
uint32_t histogram_max[4]
Definition imageop.h:217
dt_iop_global_data_t * global_data
Definition imageop.h:244
gboolean multi_show_new
Definition imageop.h:297
gboolean multi_show_down
Definition imageop.h:296
int id
Definition imageop.h:263
gboolean workflow_enabled
Definition imageop.h:235
dt_aligned_pixel_t picked_output_color
Definition imageop.h:211
gboolean enabled
Definition imageop.h:228
GtkWidget * reset_button
Definition imageop.h:278
dt_iop_module_so_t * so
Definition imageop.h:289
GtkWidget * expander
Definition imageop.h:275
dt_aligned_pixel_t picked_color_min
Definition imageop.h:209
int request_mask_display
Definition imageop.h:203
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:303
dt_pthread_mutex_t gui_lock
Definition imageop.h:242
dt_aligned_pixel_t picked_color_max
Definition imageop.h:209
int histogram_middle_grey
Definition imageop.h:224
GHashTable * users
Definition imageop.h:254
struct dt_develop_blend_params_t * default_blendop_params
Definition imageop.h:246
GtkWidget * header
Definition imageop.h:271
int32_t params_size
Definition imageop.h:239
uint32_t * histogram
Definition imageop.h:213
dt_iop_colorspace_type_t histogram_cst
Definition imageop.h:222
guint timeout_handle
Definition imageop.h:301
dt_aligned_pixel_t picked_color
Definition imageop.h:209
GtkWidget * guides_combo
Definition imageop.h:286
dt_iop_params_t * params
Definition imageop.h:237
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