Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
develop.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 <cairo.h>
22#include <glib.h>
23#include <inttypes.h>
24#include <stdint.h>
25
26#include "common/debug.h"
27#include "common/darktable.h"
28#include "common/dtpthread.h"
29#include "common/image.h"
30#include "control/settings.h"
31#include "develop/imageop.h"
32#include "develop/dev_history.h"
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38struct dt_iop_module_t;
39
46
56
62
69
78
105
113
121
123{
124 struct dt_iop_module_t *module;
125 float (*get_exposure)(struct dt_iop_module_t *exp);
126 float (*get_black)(struct dt_iop_module_t *exp);
128
129struct dt_dev_pixelpipe_t;
130
131typedef struct dt_backbuf_t
132{
133 void *buffer; // image data
134 size_t width; // pixel size of image
135 size_t height; // pixel size of image
136 uint64_t hash; // checksum/integrity hash, for example to connect to a cacheline
137 const char *op; // name of the backbuf
138 size_t bpp; // bits per pixels
140
141
142typedef struct dt_develop_t
143{
144 int32_t gui_attached; // != 0 if the gui should be notified of changes in hist stack and modules should be
145 // gui_init'ed.
146 int exit; // set to 1 to close background darkroom pipeline threads
150 struct dt_iop_module_t *gui_module; // this module claims gui expose/event callbacks.
151
152 // width, height: dimensions of window
153 int32_t width, height;
154
155 // image processing pipeline with caching
157
158 // image under consideration, which
159 // is copied each time an image is changed. this means we have some information
160 // always cached (might be out of sync, so stars are not reliable), but for the iops
161 // it's quite a convenience to access trivial stuff which is constant anyways without
162 // calling into the cache explicitly. this should never be accessed directly, but
163 // by the iop through the copy their respective pixelpipe holds, for thread-safety.
165
166 // history stack
167 dt_pthread_mutex_t history_mutex;
168 int32_t history_end;
169 GList *history;
170
171 // operations pipeline
173 GList *iop;
174 // iop's to be deleted
175 GList *alliop;
176
177 // iop order
180
181 // profiles info
183
184 // histogram for display.
187
188 // list of forms iop can use for masks or whatever
189 GList *forms;
190 // integrity hash of forms
192 // forms have been added or removed or changed and need to be committed to history
196 // all forms to be linked here for cleanup:
197 GList *allforms;
198
199 // darkroom border size
200 int32_t border_size;
201
202 // Those are the darkroom main widget size, aka max available size to paint stuff.
203 // They are set by Gtk from the window size minus all panels.
204 // The actual image size has to be smaller or equal.
206
207 dt_backbuf_t raw_histogram; // backbuf to prepare the raw histogram (before white balance)
208 dt_backbuf_t output_histogram; // backbuf to prepare the display-agnostic output histogram (in the middle of colorout)
209 dt_backbuf_t display_histogram; // backbuf to prepare the display-referred output histogram (at the far end of the pipe)
210
211 // if dev is GUI-attached, auto save history 15s after the last change is made.
213
214 // Track history changes from C. Note: we have a DB variant.
216
217 /* proxy for communication between plugins and develop/darkroom */
218 struct
219 {
220 // list of exposure iop instances, with plugin hooks, used by histogram dragging functions
221 // each element is dt_dev_proxy_exposure_t
223
224 // modulegroups plugin hooks
225 struct
226 {
227 struct dt_lib_module_t *module;
228 /* switch module group */
229 void (*set)(struct dt_lib_module_t *self, uint32_t group);
230 /* get current module group */
231 uint32_t (*get)(struct dt_lib_module_t *self);
232 /* get activated module group */
233 uint32_t (*get_activated)(struct dt_lib_module_t *self);
234 /* test if iop group flags matches modulegroup */
235 gboolean (*test)(struct dt_lib_module_t *self, uint32_t group, uint32_t iop_group);
236 /* switch to modulegroup */
237 void (*switch_group)(struct dt_lib_module_t *self, struct dt_iop_module_t *module);
238 /* update modulegroup visibility */
240 /* test if module is preset in one of the current groups */
241 gboolean (*test_visible)(struct dt_lib_module_t *self, gchar *module);
243
244 // snapshots plugin hooks
245 struct
246 {
247 // this flag is set by snapshot plugin to signal that expose of darkroom
248 // should store cairo surface as snapshot to disk using filename.
249 gboolean request;
250 const gchar *filename;
252
253 // masks plugin hooks
254 struct
255 {
256 struct dt_lib_module_t *module;
257 /* treview list refresh */
259 void (*list_remove)(struct dt_lib_module_t *self, int formid, int parentid);
261 /* selected forms change */
262 void (*selection_change)(struct dt_lib_module_t *self, struct dt_iop_module_t *module, const int selectid, const int throw_event);
264
265 // what is the ID of the module currently doing pipeline chromatic adaptation ?
266 // this is to prevent multiple modules/instances from doing white balance globally.
267 // only used to display warnings in GUI of modules that should probably not be doing white balance
269
270 // is the WB module using D65 illuminant and not doing full chromatic adaptation ?
271 gboolean wb_is_D65;
272 dt_aligned_pixel_t wb_coeffs;
273
275
276 // for the overexposure indicator
277 struct
278 {
279 GtkWidget *floating_window, *button; // yes, having gtk stuff in here is ugly. live with it.
280
281 gboolean enabled;
283 float lower;
284 float upper;
287
288 // for the raw overexposure indicator
289 struct
290 {
291 GtkWidget *floating_window, *button; // yes, having gtk stuff in here is ugly. live with it.
292
293 gboolean enabled;
298
299 struct
300 {
301 GtkWidget *floating_window, *button; // 10 years later, still ugly
302
306
307 // ISO 12646-compliant colour assessment conditions
308 struct
309 {
310 GtkWidget *button; // yes, ugliness is the norm. what did you expect ?
311 gboolean enabled;
313
314 // the display profile related things (softproof, gamut check, profiles ...)
315 struct
316 {
319
320 int mask_form_selected_id; // select a mask inside an iop
321 gboolean darkroom_skip_mouse_events; // skip mouse events for masks
322 gboolean mask_lock;
325
326void dt_dev_init(dt_develop_t *dev, int32_t gui_attached);
328
331// launch jobs above
334
335// Lazy helpers that will update GUI pipelines (main image and small preview)
336// only when needed, and only the one(s) needed.
338#define dt_dev_refresh_ui_images(dev) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_refresh_ui_images_real, (dev))
339
340int dt_dev_load_image(dt_develop_t *dev, const int32_t imgid);
342int dt_dev_is_current_image(dt_develop_t *dev, int32_t imgid);
343
344
345// Force a full rebuild of the pipe, needed when module order is changed.
346// Resync the full history, which may be expensive.
347// Pixelpipe cache will need to be flushed too when this is called,
348// for raster masks to work properly.
350
352// Invalidate the main image preview in darkroom, resync only the last history item.
353// This is the most common usecase when interacting with modules and masks.
354#define dt_dev_invalidate(dev) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_real, (dev))
355
357// Invalidate the thumbnail preview in darkroom, resync only the last history item.
358#define dt_dev_invalidate_preview(dev) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_preview_real, (dev))
359
361// Invalidate the main image and the thumbnail in darkroom, resync only the last history item.
362#define dt_dev_invalidate_all(dev) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_all_real, (dev))
363
365// Invalidate the main image preview in darkroom.
366// This doesn't resync history at all, only update the coordinates of the region of interest (ROI).
367#define dt_dev_invalidate_zoom(dev) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_zoom_real, (dev))
368
369// Invalidate the main image and the thumbnail in darkroom.
370// Resync the whole history, which may be expensive.
372
373// Invalidate the main image in darkroom.
374// Resync the whole history, which may be expensive.
376
378
379// Flush caches of dev pipes and force a full recompute
381
382void dt_dev_get_processed_size(const dt_develop_t *dev, int *procw, int *proch);
383void dt_dev_check_zoom_bounds(dt_develop_t *dev, float *zoom_x, float *zoom_y, dt_dev_zoom_t zoom,
384 int closeup, float *boxw, float *boxh);
385float dt_dev_get_zoom_scale(dt_develop_t *dev, dt_dev_zoom_t zoom, int closeup_factor, int mode);
386void dt_dev_get_pointer_zoom_pos(dt_develop_t *dev, const float px, const float py, float *zoom_x,
387 float *zoom_y);
388
389void dt_dev_configure_real(dt_develop_t *dev, int wd, int ht);
390#define dt_dev_configure(dev, wd, ht) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_configure_real, (dev), (wd), (ht))
391
392/*
393 * exposure plugin hook, set the exposure and the black level
394 */
395
400
401/*
402 * modulegroups plugin hooks
403 */
409void dt_dev_modulegroups_set(dt_develop_t *dev, uint32_t group);
414
416void dt_dev_snapshot_request(dt_develop_t *dev, const char *filename);
417
419void dt_dev_average_delay_update(const dt_times_t *start, uint32_t *average_delay);
420
421/*
422 * masks plugin hooks
423 */
426void dt_dev_masks_list_remove(dt_develop_t *dev, int formid, int parentid);
427void dt_dev_masks_selection_change(dt_develop_t *dev, struct dt_iop_module_t *module, const int selectid, const int throw_event);
428
431
432/*
433 * multi instances
434 */
441
443gchar *dt_history_item_get_name(const struct dt_iop_module_t *module);
444gchar *dt_history_item_get_name_html(const struct dt_iop_module_t *module);
445
447gchar *dt_history_item_get_label(const struct dt_iop_module_t *module);
448
449
450/*
451 * distort functions
452 */
454int dt_dev_distort_transform(dt_develop_t *dev, float *points, size_t points_count);
456int dt_dev_distort_backtransform(dt_develop_t *dev, float *points, size_t points_count);
458int dt_dev_distort_transform_plus(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction,
459 float *points, size_t points_count);
462 const int transf_direction, float *points, size_t points_count);
464int dt_dev_distort_backtransform_plus(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction,
465 float *points, size_t points_count);
468 const int transf_direction, float *points, size_t points_count);
469
472 struct dt_iop_module_t *module);
473/*
474 * hash functions
475 */
479int dt_dev_wait_hash(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, dt_pthread_mutex_t *lock,
480 const volatile uint64_t *const hash);
486int dt_dev_sync_pixelpipe_hash(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, dt_pthread_mutex_t *lock,
487 const volatile uint64_t *const hash);
488
489/*
490 * history undo support helpers for darkroom
491 */
492
493/* all history change must be enclosed into a start / end call */
496
497// Getter and setter for global mask lock (GUI)
498// Can be overriden by key accels
499
501void dt_masks_set_lock_mode(dt_develop_t *dev, gboolean mode);
502
503// Count all the mask forms used x history entries, up to a certain threshold.
504// Stop counting when the threshold is reached, for performance.
505guint dt_dev_mask_history_overload(GList *dev_history, guint threshold);
506
507// Write the `darktable|changed` tag on the current picture upon history modification
508void dt_dev_append_changed_tag(const int32_t imgid);
509
524void dt_dev_get_final_size(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const int32_t imgid, const int input_width, const int input_height, int *processed_width, int *processed_height);
525
526#ifdef __cplusplus
527}
528#endif
529
530// clang-format off
531// modelines: These editor modelines have been set for all relevant files by tools/update_modelines.py
532// vim: shiftwidth=2 expandtab tabstop=2 cindent
533// kate: tab-indents: off; indent-width 2; replace-tabs on; indent-mode cstyle; remove-trailing-spaces modified;
534// clang-format on
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
void dt_dev_get_final_size(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const int32_t imgid, const int input_width, const int input_height, int *processed_width, int *processed_height)
Compute the theoritical final size of a pipeline taking the full-resolution image at input.
Definition develop.c:1485
int dt_dev_wait_hash(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, dt_pthread_mutex_t *lock, const volatile uint64_t *const hash)
Definition develop.c:1297
void dt_dev_masks_list_change(dt_develop_t *dev)
Definition develop.c:945
int dt_dev_distort_backtransform_locked(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
Definition develop.c:1244
void dt_dev_get_processed_size(const dt_develop_t *dev, int *procw, int *proch)
Definition develop.c:840
void dt_masks_set_lock_mode(dt_develop_t *dev, gboolean mode)
Definition develop.c:1429
dt_dev_overexposed_colorscheme_t
Definition develop.h:41
@ DT_DEV_OVEREXPOSED_PURPLEGREEN
Definition develop.h:44
@ DT_DEV_OVEREXPOSED_REDBLUE
Definition develop.h:43
@ DT_DEV_OVEREXPOSED_BLACKWHITE
Definition develop.h:42
uint32_t dt_dev_modulegroups_get(dt_develop_t *dev)
Definition develop.c:925
void dt_dev_invalidate_preview_real(dt_develop_t *dev)
Definition develop.c:334
void dt_dev_reprocess_all(dt_develop_t *dev)
Definition develop.c:788
float dt_dev_get_zoom_scale(dt_develop_t *dev, dt_dev_zoom_t zoom, int closeup_factor, int mode)
Definition develop.c:707
void dt_dev_get_pointer_zoom_pos(dt_develop_t *dev, const float px, const float py, float *zoom_x, float *zoom_y)
Definition develop.c:866
void dt_dev_cleanup(dt_develop_t *dev)
Definition develop.c:150
void dt_dev_module_remove(dt_develop_t *dev, struct dt_iop_module_t *module)
Definition develop.c:1057
dt_dev_overlay_colors_t
Definition develop.h:48
@ DT_DEV_OVERLAY_CYAN
Definition develop.h:53
@ DT_DEV_OVERLAY_YELLOW
Definition develop.h:52
@ DT_DEV_OVERLAY_RED
Definition develop.h:50
@ DT_DEV_OVERLAY_GREEN
Definition develop.h:51
@ DT_DEV_OVERLAY_GRAY
Definition develop.h:49
@ DT_DEV_OVERLAY_MAGENTA
Definition develop.h:54
void dt_dev_process_image_job(dt_develop_t *dev)
Definition develop.c:565
int dt_dev_distort_transform_plus(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
Definition develop.c:1234
int dt_dev_distort_backtransform(dt_develop_t *dev, float *points, size_t points_count)
Definition develop.c:1199
dt_dev_pixelpipe_display_mask_t
Definition develop.h:80
@ DT_DEV_PIXELPIPE_DISPLAY_a
Definition develop.h:86
@ DT_DEV_PIXELPIPE_DISPLAY_OUTPUT
Definition develop.h:84
@ DT_DEV_PIXELPIPE_DISPLAY_G
Definition develop.h:89
@ DT_DEV_PIXELPIPE_DISPLAY_L
Definition develop.h:85
@ DT_DEV_PIXELPIPE_DISPLAY_CHANNEL
Definition develop.h:83
@ DT_DEV_PIXELPIPE_DISPLAY_ANY
Definition develop.h:102
@ DT_DEV_PIXELPIPE_DISPLAY_LCH_h
Definition develop.h:93
@ DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_hz
Definition develop.h:99
@ DT_DEV_PIXELPIPE_DISPLAY_HSL_H
Definition develop.h:94
@ DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU_MONO
Definition develop.h:101
@ DT_DEV_PIXELPIPE_DISPLAY_HSL_S
Definition develop.h:95
@ DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Cz
Definition develop.h:98
@ DT_DEV_PIXELPIPE_DISPLAY_LCH_C
Definition develop.h:92
@ DT_DEV_PIXELPIPE_DISPLAY_b
Definition develop.h:87
@ DT_DEV_PIXELPIPE_DISPLAY_STICKY
Definition develop.h:103
@ DT_DEV_PIXELPIPE_DISPLAY_MASK
Definition develop.h:82
@ DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Jz
Definition develop.h:97
@ DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU
Definition develop.h:100
@ DT_DEV_PIXELPIPE_DISPLAY_NONE
Definition develop.h:81
@ DT_DEV_PIXELPIPE_DISPLAY_HSL_l
Definition develop.h:96
@ DT_DEV_PIXELPIPE_DISPLAY_GRAY
Definition develop.h:91
@ DT_DEV_PIXELPIPE_DISPLAY_B
Definition develop.h:90
@ DT_DEV_PIXELPIPE_DISPLAY_R
Definition develop.h:88
void dt_dev_check_zoom_bounds(dt_develop_t *dev, float *zoom_x, float *zoom_y, dt_dev_zoom_t zoom, int closeup, float *boxw, float *boxh)
Definition develop.c:798
dt_dev_transform_direction_t
Definition develop.h:71
@ DT_DEV_TRANSFORM_DIR_BACK_EXCL
Definition develop.h:76
@ DT_DEV_TRANSFORM_DIR_BACK_INCL
Definition develop.h:75
@ DT_DEV_TRANSFORM_DIR_FORW_INCL
Definition develop.h:73
@ DT_DEV_TRANSFORM_DIR_ALL
Definition develop.h:72
@ DT_DEV_TRANSFORM_DIR_FORW_EXCL
Definition develop.h:74
void dt_dev_invalidate_zoom_real(dt_develop_t *dev)
Definition develop.c:320
int dt_dev_distort_backtransform_plus(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
Definition develop.c:1273
void dt_dev_append_changed_tag(const int32_t imgid)
Definition develop.c:1451
void dt_dev_invalidate_all_real(dt_develop_t *dev)
Definition develop.c:348
void dt_dev_masks_selection_change(dt_develop_t *dev, struct dt_iop_module_t *module, const int selectid, const int throw_event)
Definition develop.c:960
void dt_dev_init(dt_develop_t *dev, int32_t gui_attached)
Definition develop.c:52
int dt_dev_is_current_image(dt_develop_t *dev, int32_t imgid)
Definition develop.c:886
void dt_dev_undo_start_record(dt_develop_t *dev)
Definition develop.c:1391
dt_dev_rawoverexposed_mode_t
Definition develop.h:57
@ DT_DEV_RAWOVEREXPOSED_MODE_FALSECOLOR
Definition develop.h:60
@ DT_DEV_RAWOVEREXPOSED_MODE_MARK_CFA
Definition develop.h:58
@ DT_DEV_RAWOVEREXPOSED_MODE_MARK_SOLID
Definition develop.h:59
void dt_dev_snapshot_request(dt_develop_t *dev, const char *filename)
Definition develop.c:967
void dt_dev_modulegroups_update_visibility(dt_develop_t *dev)
Definition develop.c:939
gboolean dt_masks_get_lock_mode(dt_develop_t *dev)
Definition develop.c:1417
float dt_dev_exposure_get_black(dt_develop_t *dev)
Definition develop.c:910
gchar * dt_history_item_get_label(const struct dt_iop_module_t *module)
Definition develop.c:1154
void dt_dev_modulegroups_set(dt_develop_t *dev, uint32_t group)
Definition develop.c:919
gchar * dt_history_item_get_name_html(const struct dt_iop_module_t *module)
Definition develop.c:1182
void dt_dev_modulegroups_switch(dt_develop_t *dev, struct dt_iop_module_t *module)
Definition develop.c:933
int dt_dev_distort_transform_locked(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
Definition develop.c:1205
dt_clipping_preview_mode_t
Definition develop.h:115
@ DT_CLIPPING_PREVIEW_ANYRGB
Definition develop.h:117
@ DT_CLIPPING_PREVIEW_GAMUT
Definition develop.h:116
@ DT_CLIPPING_PREVIEW_SATURATION
Definition develop.h:119
@ DT_CLIPPING_PREVIEW_LUMINANCE
Definition develop.h:118
struct dt_dev_pixelpipe_iop_t * dt_dev_distort_get_iop_pipe(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, struct dt_iop_module_t *module)
Definition develop.c:1282
struct dt_iop_module_t * dt_dev_module_duplicate(dt_develop_t *dev, struct dt_iop_module_t *base)
Definition develop.c:985
void dt_dev_process_preview(dt_develop_t *dev)
Definition develop.c:225
void dt_dev_invalidate_real(dt_develop_t *dev)
Definition develop.c:306
void dt_dev_average_delay_update(const dt_times_t *start, uint32_t *average_delay)
Definition develop.c:974
int dt_dev_sync_pixelpipe_hash(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, dt_pthread_mutex_t *lock, const volatile uint64_t *const hash)
Definition develop.c:1339
void dt_dev_configure_real(dt_develop_t *dev, int wd, int ht)
Definition develop.c:765
void dt_dev_process_preview_job(dt_develop_t *dev)
Definition develop.c:423
void dt_dev_pixelpipe_resync_all(dt_develop_t *dev)
Definition develop.c:298
void dt_dev_masks_update_hash(dt_develop_t *dev)
Definition develop.c:1464
dt_dev_rawoverexposed_colorscheme_t
Definition develop.h:63
@ DT_DEV_RAWOVEREXPOSED_RED
Definition develop.h:64
@ DT_DEV_RAWOVEREXPOSED_BLUE
Definition develop.h:66
@ DT_DEV_RAWOVEREXPOSED_BLACK
Definition develop.h:67
@ DT_DEV_RAWOVEREXPOSED_GREEN
Definition develop.h:65
void dt_dev_undo_end_record(dt_develop_t *dev)
Definition develop.c:1406
void dt_dev_modules_update_multishow(dt_develop_t *dev)
Definition develop.c:1137
dt_develop_detail_mmask_t
Definition develop.h:107
@ DT_DEV_DETAIL_MASK_DEMOSAIC
Definition develop.h:110
@ DT_DEV_DETAIL_MASK_REQUIRED
Definition develop.h:109
@ DT_DEV_DETAIL_MASK_RAWPREPARE
Definition develop.h:111
@ DT_DEV_DETAIL_MASK_NONE
Definition develop.h:108
guint dt_dev_mask_history_overload(GList *dev_history, guint threshold)
Definition dev_history.c:903
int dt_dev_distort_transform(dt_develop_t *dev, float *points, size_t points_count)
Definition develop.c:1195
void dt_dev_masks_list_update(dt_develop_t *dev)
Definition develop.c:950
int dt_dev_load_image(dt_develop_t *dev, const int32_t imgid)
Definition develop.c:738
void dt_dev_reorder_gui_module_list(dt_develop_t *dev)
Definition develop.c:1375
void dt_dev_pixelpipe_rebuild(struct dt_develop_t *dev)
Definition develop.c:261
uint64_t dt_dev_hash(dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
Definition develop.c:1359
float dt_dev_exposure_get_exposure(dt_develop_t *dev)
Definition develop.c:900
void dt_dev_masks_list_remove(dt_develop_t *dev, int formid, int parentid)
Definition develop.c:955
void dt_dev_process_image(dt_develop_t *dev)
Definition develop.c:217
void dt_dev_pixelpipe_resync_preview(dt_develop_t *dev)
Definition develop.c:289
gchar * dt_history_item_get_name(const struct dt_iop_module_t *module)
Definition develop.c:1167
void dt_dev_refresh_ui_images_real(dt_develop_t *dev)
Definition develop.c:233
enum dt_develop_detail_mmask_t dt_develop_detail_mask_t
void dt_dev_pixelpipe_resync_main(dt_develop_t *dev)
Definition develop.c:280
dt_dev_zoom_t
Definition settings.h:28
unsigned __int64 uint64_t
Definition strptime.c:71
Definition develop.h:132
size_t height
Definition develop.h:135
uint64_t hash
Definition develop.h:136
size_t width
Definition develop.h:134
void * buffer
Definition develop.h:133
size_t bpp
Definition develop.h:138
const char * op
Definition develop.h:137
Definition pixelpipe_hb.h:46
struct dt_iop_module_t *struct dt_dev_pixelpipe_t * pipe
Definition pixelpipe_hb.h:48
uint64_t hash
Definition pixelpipe_hb.h:74
Definition pixelpipe_hb.h:127
Definition develop.h:123
struct dt_iop_module_t *float(* get_exposure)(struct dt_iop_module_t *exp)
Definition develop.h:125
float(* get_black)(struct dt_iop_module_t *exp)
Definition develop.h:126
Definition develop.h:143
void(* list_update)(struct dt_lib_module_t *self)
Definition develop.h:260
int32_t height
Definition develop.h:153
int32_t gui_attached
Definition develop.h:144
struct dt_develop_t::@16::@22 modulegroups
struct dt_develop_t::@20 iso_12646
GList * iop_order_list
Definition develop.h:179
struct dt_develop_t::@18 rawoverexposed
dt_image_t image_storage
Definition develop.h:164
uint64_t history_hash
Definition develop.h:215
uint32_t(* get)(struct dt_lib_module_t *self)
Definition develop.h:231
uint32_t average_delay
Definition develop.h:148
int32_t orig_height
Definition develop.h:205
struct dt_lib_module_t *void(* set)(struct dt_lib_module_t *self, uint32_t group)
Definition develop.h:229
int iop_order_version
Definition develop.h:178
dt_dev_rawoverexposed_colorscheme_t colorscheme
Definition develop.h:295
int32_t border_size
Definition develop.h:200
dt_backbuf_t display_histogram
Definition develop.h:209
uint32_t * histogram_pre_levels
Definition develop.h:185
GList * iop
Definition develop.h:173
gboolean request
Definition develop.h:249
dt_backbuf_t output_histogram
Definition develop.h:208
struct dt_develop_t::@17 overexposed
int32_t history_end
Definition develop.h:168
gboolean wb_is_D65
Definition develop.h:271
gboolean(* test_visible)(struct dt_lib_module_t *self, gchar *module)
Definition develop.h:241
void(* list_remove)(struct dt_lib_module_t *self, int formid, int parentid)
Definition develop.h:259
void(* update_visibility)(struct dt_lib_module_t *self)
Definition develop.h:239
struct dt_iop_module_t * gui_module
Definition develop.h:150
void(* switch_group)(struct dt_lib_module_t *self, struct dt_iop_module_t *module)
Definition develop.h:237
dt_dev_proxy_exposure_t exposure
Definition develop.h:222
dt_clipping_preview_mode_t mode
Definition develop.h:285
struct dt_develop_t::@16::@23 snapshot
uint32_t preview_average_delay
Definition develop.h:149
uint32_t(* get_activated)(struct dt_lib_module_t *self)
Definition develop.h:233
float brightness
Definition develop.h:303
int32_t orig_width
Definition develop.h:205
struct dt_lib_module_t *void(* list_change)(struct dt_lib_module_t *self)
Definition develop.h:258
gboolean forms_changed
Definition develop.h:193
GtkWidget * floating_window
Definition develop.h:279
gboolean(* test)(struct dt_lib_module_t *self, uint32_t group, uint32_t iop_group)
Definition develop.h:235
float lower
Definition develop.h:283
struct dt_dev_pixelpipe_t * preview_pipe
Definition develop.h:156
struct dt_masks_form_t * form_visible
Definition develop.h:194
GList * history
Definition develop.h:169
struct dt_develop_t::@21 profile
int mask_form_selected_id
Definition develop.h:320
GList * allprofile_info
Definition develop.h:182
gboolean darkroom_skip_mouse_events
Definition develop.h:321
struct dt_develop_t::@16 proxy
GList * alliop
Definition develop.h:175
dt_pthread_mutex_t history_mutex
Definition develop.h:167
dt_aligned_pixel_t wb_coeffs
Definition develop.h:272
dt_dev_overexposed_colorscheme_t colorscheme
Definition develop.h:282
GList * allforms
Definition develop.h:197
dt_backbuf_t raw_histogram
Definition develop.h:207
struct dt_develop_t::@16::@24 masks
struct dt_masks_form_gui_t * form_gui
Definition develop.h:195
GtkWidget * button
Definition develop.h:279
void(* selection_change)(struct dt_lib_module_t *self, struct dt_iop_module_t *module, const int selectid, const int throw_event)
Definition develop.h:262
int border
Definition develop.h:304
struct dt_develop_t::@19 display
gint drawing_timeout
Definition develop.h:323
uint32_t * histogram_pre_tonecurve
Definition develop.h:185
uint32_t histogram_pre_levels_max
Definition develop.h:186
GtkWidget * gamut_button
Definition develop.h:317
struct dt_iop_module_t * chroma_adaptation
Definition develop.h:268
gboolean mask_lock
Definition develop.h:322
gboolean enabled
Definition develop.h:281
int exit
Definition develop.h:146
int32_t iop_instance
Definition develop.h:172
uint64_t forms_hash
Definition develop.h:191
dt_dev_rawoverexposed_mode_t mode
Definition develop.h:294
const gchar * filename
Definition develop.h:250
uint32_t histogram_pre_tonecurve_max
Definition develop.h:186
float threshold
Definition develop.h:296
guint auto_save_timeout
Definition develop.h:212
struct dt_dev_pixelpipe_t * pipe
Definition develop.h:156
float upper
Definition develop.h:284
GtkWidget * softproof_button
Definition develop.h:317
int32_t width
Definition develop.h:153
GList * forms
Definition develop.h:189
int32_t image_invalid_cnt
Definition develop.h:147
Definition common/image.h:195
Definition imageop.h:182
struct dt_develop_t * dev
Definition imageop.h:227
int iop_order
Definition imageop.h:196
Definition libs/lib.h:75
Definition masks.h:272
Definition masks.h:234
Definition darktable.h:605