Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
develop.c File Reference
#include <assert.h>
#include <cairo/cairo.h>
#include <glib/gprintf.h>
#include <math.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <strings.h>
#include <unistd.h>
#include "common/atomic.h"
#include "common/debug.h"
#include "common/history.h"
#include "common/image_cache.h"
#include "common/imageio.h"
#include "common/mipmap_cache.h"
#include "common/opencl.h"
#include "common/tags.h"
#include "control/conf.h"
#include "control/control.h"
#include "control/jobs.h"
#include "develop/blend.h"
#include "develop/develop.h"
#include "develop/imageop.h"
#include "develop/lightroom.h"
#include "develop/masks.h"
#include "develop/pixelpipe_cache.h"
#include "gui/gtk.h"
#include "gui/presets.h"
+ Include dependency graph for develop.c:

Macros

#define DT_DEV_AVERAGE_DELAY_START   250
 
#define DT_DEV_PREVIEW_AVERAGE_DELAY_START   50
 
#define DT_DEV_AVERAGE_DELAY_COUNT   5
 
#define DT_IOP_ORDER_INFO   (darktable.unmuted & DT_DEBUG_IOPORDER)
 

Functions

static gchar * _debug_get_pipe_type_str (dt_dev_pixelpipe_type_t pipe_type)
 
void dt_dev_init (dt_develop_t *dev, int32_t gui_attached)
 
void dt_dev_cleanup (dt_develop_t *dev)
 
void dt_dev_process_image (dt_develop_t *dev)
 
void dt_dev_process_preview (dt_develop_t *dev)
 
void dt_dev_refresh_ui_images_real (dt_develop_t *dev)
 
void _dev_pixelpipe_set_dirty (dt_dev_pixelpipe_t *pipe)
 
void dt_dev_pixelpipe_rebuild (dt_develop_t *dev)
 
void dt_dev_pixelpipe_resync_main (dt_develop_t *dev)
 
void dt_dev_pixelpipe_resync_preview (dt_develop_t *dev)
 
void dt_dev_pixelpipe_resync_all (dt_develop_t *dev)
 
void dt_dev_invalidate_real (dt_develop_t *dev)
 
void dt_dev_invalidate_zoom_real (dt_develop_t *dev)
 
void dt_dev_invalidate_zoom_preview (dt_develop_t *dev)
 
void dt_dev_invalidate_preview_real (dt_develop_t *dev)
 
void dt_dev_invalidate_all_real (dt_develop_t *dev)
 
static void _flag_pipe (dt_dev_pixelpipe_t *pipe, gboolean error)
 
static void _update_gui_backbuf (dt_dev_pixelpipe_t *pipe)
 
static gboolean _update_darkroom_roi (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, int *x, int *y, int *wd, int *ht, float *scale)
 
void dt_dev_darkroom_pipeline (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe)
 
void dt_dev_process_preview_job (dt_develop_t *dev)
 
void dt_dev_process_image_job (dt_develop_t *dev)
 
static int _dt_dev_load_raw (dt_develop_t *dev, const int32_t imgid)
 
float dt_dev_get_zoom_scale (dt_develop_t *dev, const gboolean preview)
 
int dt_dev_load_image (dt_develop_t *dev, const int32_t imgid)
 
void dt_dev_configure_real (dt_develop_t *dev, int wd, int ht)
 
void dt_dev_check_zoom_pos_bounds (dt_develop_t *dev, float *dev_x, float *dev_y, float *box_w, float *box_h)
 
void dt_dev_reprocess_all (dt_develop_t *dev)
 
void dt_dev_get_processed_size (const dt_develop_t *dev, int *procw, int *proch)
 
void dt_dev_get_pointer_full_pos (dt_develop_t *dev, const float px, const float py, float *mouse_x, float *mouse_y)
 Get the pointer position in relation of processed image [0..1]. This takes into account the borders around the image. The input mouse coordinates are in widget space, without border subtraction.
 
int dt_dev_is_current_image (dt_develop_t *dev, int32_t imgid)
 
static dt_dev_proxy_exposure_tfind_last_exposure_instance (dt_develop_t *dev)
 
float dt_dev_exposure_get_exposure (dt_develop_t *dev)
 
float dt_dev_exposure_get_black (dt_develop_t *dev)
 
void dt_dev_modulegroups_set (dt_develop_t *dev, uint32_t group)
 
uint32_t dt_dev_modulegroups_get (dt_develop_t *dev)
 
void dt_dev_modulegroups_switch (dt_develop_t *dev, dt_iop_module_t *module)
 
void dt_dev_modulegroups_update_visibility (dt_develop_t *dev)
 
void dt_dev_masks_list_change (dt_develop_t *dev)
 
void dt_dev_masks_list_update (dt_develop_t *dev)
 
void dt_dev_masks_list_remove (dt_develop_t *dev, int formid, int parentid)
 
void dt_dev_masks_selection_change (dt_develop_t *dev, struct dt_iop_module_t *module, const int selectid, const int throw_event)
 
void dt_dev_snapshot_request (dt_develop_t *dev, const char *filename)
 
void dt_dev_average_delay_update (const dt_times_t *start, uint32_t *average_delay)
 
dt_iop_module_tdt_dev_module_duplicate (dt_develop_t *dev, dt_iop_module_t *base)
 
void dt_dev_module_remove (dt_develop_t *dev, dt_iop_module_t *module)
 
void _dev_module_update_multishow (dt_develop_t *dev, struct dt_iop_module_t *module)
 
void dt_dev_modules_update_multishow (dt_develop_t *dev)
 
gchar * dt_history_item_get_label (const struct dt_iop_module_t *module)
 
gchar * dt_history_item_get_name (const struct dt_iop_module_t *module)
 
gchar * dt_history_item_get_name_html (const struct dt_iop_module_t *module)
 
int dt_dev_distort_transform (dt_develop_t *dev, float *points, size_t points_count)
 
int dt_dev_distort_backtransform (dt_develop_t *dev, float *points, size_t points_count)
 
int dt_dev_distort_transform_locked (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
 
int dt_dev_distort_transform_plus (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
 
int dt_dev_distort_backtransform_locked (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
 
int dt_dev_distort_backtransform_plus (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
 
dt_dev_pixelpipe_iop_tdt_dev_distort_get_iop_pipe (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe, struct dt_iop_module_t *module)
 
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)
 
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)
 
uint64_t dt_dev_hash (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
 
void dt_dev_reorder_gui_module_list (dt_develop_t *dev)
 
void dt_dev_undo_start_record (dt_develop_t *dev)
 
void dt_dev_undo_end_record (dt_develop_t *dev)
 
gboolean dt_masks_get_lock_mode (dt_develop_t *dev)
 
void dt_masks_set_lock_mode (dt_develop_t *dev, gboolean mode)
 
int32_t dt_dev_get_history_end (dt_develop_t *dev)
 
void dt_dev_set_history_end (dt_develop_t *dev, const uint32_t index)
 
void dt_dev_append_changed_tag (const int32_t imgid)
 
void dt_dev_masks_update_hash (dt_develop_t *dev)
 
void dt_dev_get_final_size (dt_develop_t *dev, 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.
 
float dt_dev_get_natural_scale (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
 
void dt_dev_reset_roi (dt_develop_t *dev)
 
gboolean dt_dev_clip_roi (dt_develop_t *dev, cairo_t *cr, int32_t width, int32_t height)
 Clip the view to the ROI. WARNING: this must be done before any translation.
 
gboolean dt_dev_rescale_roi (dt_develop_t *dev, cairo_t *cr, int32_t width, int32_t height)
 Scale the ROI to fit within given width/height, centered.
 
gboolean dt_dev_check_zoom_scale_bounds (dt_develop_t *dev)
 Ensure that the current zoom level is within allowed bounds.
 

Macro Definition Documentation

◆ DT_DEV_AVERAGE_DELAY_COUNT

#define DT_DEV_AVERAGE_DELAY_COUNT   5

◆ DT_DEV_AVERAGE_DELAY_START

#define DT_DEV_AVERAGE_DELAY_START   250

◆ DT_DEV_PREVIEW_AVERAGE_DELAY_START

#define DT_DEV_PREVIEW_AVERAGE_DELAY_START   50

◆ DT_IOP_ORDER_INFO

#define DT_IOP_ORDER_INFO   (darktable.unmuted & DT_DEBUG_IOPORDER)

Function Documentation

◆ _debug_get_pipe_type_str()

◆ _dev_module_update_multishow()

◆ _dev_pixelpipe_set_dirty()

◆ _dt_dev_load_raw()

◆ _flag_pipe()

◆ _update_darkroom_roi()

◆ _update_gui_backbuf()

◆ dt_dev_append_changed_tag()

◆ dt_dev_average_delay_update()

void dt_dev_average_delay_update ( const dt_times_t start,
uint32_t *  average_delay 
)

update gliding average for pixelpipe delay

References dt_times_t::clock, DT_DEV_AVERAGE_DELAY_COUNT, and dt_get_times().

Referenced by dt_dev_darkroom_pipeline().

◆ dt_dev_check_zoom_pos_bounds()

◆ dt_dev_check_zoom_scale_bounds()

gboolean dt_dev_check_zoom_scale_bounds ( dt_develop_t dev)

Ensure that the current zoom level is within allowed bounds.

Parameters
devthe develop instance
Returns
gboolean TRUE if the zoom level was adjusted, FALSE otherwise

References darktable, FALSE, darktable_t::gui, dt_develop_t::natural_scale, dt_gui_gtk_t::ppd, dt_develop_t::scaling, and TRUE.

Referenced by _center_view_free_zoom().

◆ dt_dev_cleanup()

◆ dt_dev_clip_roi()

gboolean dt_dev_clip_roi ( dt_develop_t dev,
cairo_t *  cr,
int32_t  width,
int32_t  height 
)

Clip the view to the ROI. WARNING: this must be done before any translation.

Parameters
devthe develop instance
crthe cairo context to clip on
widththe view width
heightthe view height
Returns
gboolean TRUE if the image dimension are 0x0

References dt_dev_pixelpipe_t::backbuf_height, dt_dev_pixelpipe_t::backbuf_width, dt_develop_t::border_size, darktable, FALSE, darktable_t::gui, height, dt_gui_gtk_t::ppd, dt_develop_t::preview_pipe, dt_develop_t::scaling, TRUE, and width.

Referenced by expose(), and gui_post_expose().

◆ dt_dev_configure_real()

◆ dt_dev_darkroom_pipeline()

void dt_dev_darkroom_pipeline ( dt_develop_t dev,
dt_dev_pixelpipe_t pipe 
)

References _debug_get_pipe_type_str(), _flag_pipe(), _update_darkroom_roi(), _update_gui_backbuf(), dt_develop_t::average_delay, dt_mipmap_buffer_t::buf, dt_dev_pixelpipe_t::busy_mutex, dt_dev_pixelpipe_t::changed, darktable, dt_atomic_set_int(), dt_control_log_busy_enter(), dt_control_log_busy_leave(), dt_control_queue_redraw(), dt_control_queue_redraw_center(), dt_control_toast_busy_enter(), dt_control_toast_busy_leave(), DT_DEBUG_CONTROL_SIGNAL_RAISE, DT_DEBUG_DEV, dt_dev_average_delay_update(), DT_DEV_PIPE_REMOVE, dt_dev_pixelpipe_cache_flush(), dt_dev_pixelpipe_change(), DT_DEV_PIXELPIPE_DIRTY, DT_DEV_PIXELPIPE_FULL, dt_dev_pixelpipe_has_reentry(), DT_DEV_PIXELPIPE_PREVIEW, dt_dev_pixelpipe_process(), dt_dev_pixelpipe_reset_reentry(), dt_dev_pixelpipe_set_input(), DT_DEV_PIXELPIPE_UNDEF, DT_DEV_PIXELPIPE_VALID, dt_get_times(), dt_iop_nap(), DT_MIPMAP_BLOCKING, dt_mipmap_cache_get, dt_mipmap_cache_release, DT_MIPMAP_FULL, dt_print(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), DT_SIGNAL_DEVELOP_PREVIEW_PIPE_FINISHED, DT_SIGNAL_DEVELOP_UI_PIPE_FINISHED, dt_develop_t::exit, FALSE, dt_mipmap_buffer_t::height, dt_develop_t::height, dt_image_t::id, dt_develop_t::image_storage, darktable_t::mipmap_cache, darktable_t::pixelpipe_cache, dt_develop_t::preview_average_delay, dt_dev_pixelpipe_t::processing, dt_dev_pixelpipe_t::running, dt_dev_pixelpipe_t::shutdown, darktable_t::signals, dt_dev_pixelpipe_t::status, type, dt_dev_pixelpipe_t::type, dt_mipmap_buffer_t::width, and dt_develop_t::width.

Referenced by dt_dev_process_image_job(), and dt_dev_process_preview_job().

◆ dt_dev_distort_backtransform()

◆ dt_dev_distort_backtransform_locked()

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 
)

◆ dt_dev_distort_backtransform_plus()

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 
)

◆ dt_dev_distort_get_iop_pipe()

◆ dt_dev_distort_transform()

int dt_dev_distort_transform ( dt_develop_t dev,
float *  points,
size_t  points_count 
)

apply all transforms to the specified points (in preview pipe space)

References dt_dev_distort_transform_plus(), DT_DEV_TRANSFORM_DIR_ALL, and dt_develop_t::preview_pipe.

Referenced by _circle_get_points(), _ellipse_get_points(), and _gradient_get_points().

◆ dt_dev_distort_transform_locked()

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 
)

◆ dt_dev_distort_transform_plus()

◆ dt_dev_exposure_get_black()

float dt_dev_exposure_get_black ( dt_develop_t dev)

get exposure black level

References find_last_exposure_instance(), and dt_dev_proxy_exposure_t::get_black.

Referenced by _extract_patches().

◆ dt_dev_exposure_get_exposure()

float dt_dev_exposure_get_exposure ( dt_develop_t dev)

◆ dt_dev_get_final_size()

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.

Note: this creates a dummy pipeline and develop but doesn't trigger file I/O.

Parameters
devAn inited develop object, with dev->iop and dev->history already populated. Can be NULL, in which case a temporary develop is created from scratch (slower).
pipeAn inited pipeline object, with pipe->iwidth and pipe->iheight already set and pipeline pieces params already synchronized. Can be NULL, in which case a temporary pipeline is created from scratch (slower).
imgid
input_widthNot used if pipe is not NULL, will use pipe->iwidth
input_heightNot used if pipe is not NULL, will use pipe->iheight
processed_widthreturned computed value
processed_heightreturned computed value

References darktable, dt_dev_cleanup(), dt_dev_init(), dt_dev_pixelpipe_cleanup(), dt_dev_pixelpipe_create_nodes(), dt_dev_pixelpipe_get_roi_out(), dt_dev_pixelpipe_init_dummy(), dt_dev_pixelpipe_set_input(), dt_dev_pixelpipe_synch_all, dt_dev_read_history_ext(), dt_get_times(), dt_image_cache_get(), dt_image_cache_read_release(), dt_iop_load_modules(), DT_MIPMAP_NONE, dt_show_times(), FALSE, darktable_t::image_cache, dt_develop_t::image_storage, dt_develop_t::iop, and TRUE.

◆ dt_dev_get_history_end()

◆ dt_dev_get_natural_scale()

◆ dt_dev_get_pointer_full_pos()

void dt_dev_get_pointer_full_pos ( dt_develop_t dev,
const float  px,
const float  py,
float *  mouse_x,
float *  mouse_y 
)

Get the pointer position in relation of processed image [0..1]. This takes into account the borders around the image. The input mouse coordinates are in widget space, without border subtraction.

Parameters
devthe develop instance
pxthe x mouse coordinate in widget space, with no border subtraction.
pythe y mouse coordinate in widget space, with no border subtraction.
mouse_xthe returned x mouse coordinate relative to processed image [0..1].
mouse_ythe returned y mouse coordinate relative to processed image [0..1].

References dt_develop_t::border_size, dt_dev_get_natural_scale(), dt_develop_t::height, dt_develop_t::pipe, dt_dev_pixelpipe_t::processed_height, dt_dev_pixelpipe_t::processed_width, dt_develop_t::scaling, dt_develop_t::width, dt_develop_t::x, and dt_develop_t::y.

Referenced by button_pressed(), button_released(), dt_masks_events_button_pressed(), dt_masks_events_mouse_scrolled(), get_point_scale(), gui_post_expose(), mouse_moved(), mouse_moved(), and scrolled().

◆ dt_dev_get_processed_size()

◆ dt_dev_get_zoom_scale()

◆ dt_dev_hash()

uint64_t dt_dev_hash ( dt_develop_t dev,
struct dt_dev_pixelpipe_t pipe 
)

Get the global hash of the last module in pipe

Todo:
: this should have its own hash

References dt_dev_pixelpipe_iop_t::global_hash, dt_pixel_cache_entry_t::hash, and dt_dev_pixelpipe_t::nodes.

Referenced by commit_params_late(), dt_dev_wait_hash(), gui_post_expose(), process(), and process_drago().

◆ dt_dev_init()

void dt_dev_init ( dt_develop_t dev,
int32_t  gui_attached 
)
Todo:
: these are uint32_t, setting to -1 is confusing

References dt_develop_t::allforms, dt_develop_t::alliop, dt_develop_t::allprofile_info, dt_develop_t::auto_save_timeout, dt_develop_t::average_delay, dt_backbuf_t::bpp, dt_backbuf_t::buffer, dt_develop_t::chroma_adaptation, dt_develop_t::colorscheme, dt_develop_t::darkroom_skip_mouse_events, dt_develop_t::display_histogram, dt_develop_t::drawing_timeout, dt_conf_get_float(), dt_conf_get_int(), DT_DEV_AVERAGE_DELAY_START, dt_dev_pixelpipe_init(), dt_dev_pixelpipe_init_preview(), DT_DEV_PREVIEW_AVERAGE_DELAY_START, dt_dev_reset_roi(), dt_image_init(), dt_pthread_mutex_init(), dt_develop_t::enabled, dt_develop_t::exit, dt_develop_t::exposure, FALSE, dt_develop_t::form_gui, dt_develop_t::form_visible, dt_develop_t::forms, dt_develop_t::forms_changed, dt_develop_t::forms_hash, dt_develop_t::gui_attached, dt_develop_t::gui_module, dt_backbuf_t::hash, dt_backbuf_t::height, dt_develop_t::height, dt_develop_t::histogram_pre_levels, dt_develop_t::histogram_pre_levels_max, dt_develop_t::histogram_pre_tonecurve, dt_develop_t::histogram_pre_tonecurve_max, dt_develop_t::history, dt_develop_t::history_end, dt_develop_t::history_hash, dt_develop_t::history_mutex, dt_develop_t::image_storage, dt_develop_t::iop, dt_develop_t::iop_instance, dt_develop_t::iop_order_list, dt_develop_t::iop_order_version, dt_develop_t::iso_12646, dt_develop_t::lower, dt_develop_t::mask_lock, dt_develop_t::mode, dt_backbuf_t::op, dt_develop_t::output_histogram, dt_develop_t::overexposed, dt_develop_t::pipe, dt_develop_t::preview_average_delay, dt_develop_t::preview_pipe, dt_develop_t::proxy, dt_develop_t::raw_histogram, dt_develop_t::rawoverexposed, dt_develop_t::threshold, TRUE, dt_develop_t::upper, dt_develop_t::wb_coeffs, dt_develop_t::wb_is_D65, dt_backbuf_t::width, and dt_develop_t::width.

Referenced by _history_copy_and_paste_on_image_merge(), dt_dev_get_final_size(), dt_focus_draw_clusters(), dt_imageio_export_with_flags(), dt_styles_apply_to_image(), and init().

◆ dt_dev_invalidate_all_real()

◆ dt_dev_invalidate_preview_real()

◆ dt_dev_invalidate_real()

◆ dt_dev_invalidate_zoom_preview()

◆ dt_dev_invalidate_zoom_real()

◆ dt_dev_is_current_image()

int dt_dev_is_current_image ( dt_develop_t dev,
int32_t  imgid 
)

checks if provided imgid is the image currently in develop

References dt_image_t::id, and dt_develop_t::image_storage.

Referenced by dt_styles_apply_to_image().

◆ dt_dev_load_image()

◆ dt_dev_masks_list_change()

void dt_dev_masks_list_change ( dt_develop_t dev)

◆ dt_dev_masks_list_remove()

void dt_dev_masks_list_remove ( dt_develop_t dev,
int  formid,
int  parentid 
)

◆ dt_dev_masks_list_update()

void dt_dev_masks_list_update ( dt_develop_t dev)

◆ dt_dev_masks_selection_change()

◆ dt_dev_masks_update_hash()

◆ dt_dev_module_duplicate()

◆ dt_dev_module_remove()

◆ dt_dev_modulegroups_get()

◆ dt_dev_modulegroups_set()

◆ dt_dev_modulegroups_switch()

void dt_dev_modulegroups_switch ( dt_develop_t dev,
struct dt_iop_module_t module 
)

◆ dt_dev_modulegroups_update_visibility()

void dt_dev_modulegroups_update_visibility ( dt_develop_t dev)

◆ dt_dev_modules_update_multishow()

◆ dt_dev_pixelpipe_rebuild()

◆ dt_dev_pixelpipe_resync_all()

◆ dt_dev_pixelpipe_resync_main()

◆ dt_dev_pixelpipe_resync_preview()

◆ dt_dev_process_image()

◆ dt_dev_process_image_job()

void dt_dev_process_image_job ( dt_develop_t dev)

◆ dt_dev_process_preview()

◆ dt_dev_process_preview_job()

void dt_dev_process_preview_job ( dt_develop_t dev)

◆ dt_dev_refresh_ui_images_real()

◆ dt_dev_reorder_gui_module_list()

void dt_dev_reorder_gui_module_list ( dt_develop_t dev)

◆ dt_dev_reprocess_all()

◆ dt_dev_rescale_roi()

gboolean dt_dev_rescale_roi ( dt_develop_t dev,
cairo_t *  cr,
int32_t  width,
int32_t  height 
)

Scale the ROI to fit within given width/height, centered.

Parameters
devthe develop instance
crthe cairo context to draw on
widththe target width
heightthe target height
clipwhether to clip to the visible area
Returns
gboolean TRUE if the image dimension are 0x0

References dt_dev_pixelpipe_t::backbuf_height, dt_dev_pixelpipe_t::backbuf_width, darktable, FALSE, darktable_t::gui, height, dt_gui_gtk_t::ppd, dt_develop_t::preview_pipe, dt_develop_t::scaling, TRUE, width, dt_develop_t::x, and dt_develop_t::y.

Referenced by expose(), gui_post_expose(), and gui_post_expose().

◆ dt_dev_reset_roi()

void dt_dev_reset_roi ( dt_develop_t dev)

◆ dt_dev_set_history_end()

◆ dt_dev_snapshot_request()

void dt_dev_snapshot_request ( dt_develop_t dev,
const char *  filename 
)

◆ dt_dev_sync_pixelpipe_hash()

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 
)

synchronize pixelpipe by means hash values by waiting with timeout and potential reprocessing FIXME: modules that need to resync internal data with pipeline should listen to the PREVIEW_PIPE_RECOMPUTED signal. This function relies on timeouts, waiting for the pipe to finish, and the exception is not caught if the timeout expires with no result.

References dt_dev_pixelpipe_t::changed, dt_dev_invalidate, DT_DEV_PIPE_REMOVE, DT_DEV_PIPE_SYNCH, DT_DEV_PIPE_TOP_CHANGED, dt_dev_wait_hash(), FALSE, dt_pixel_cache_entry_t::hash, dt_pixel_cache_entry_t::lock, and TRUE.

Referenced by commit_params_late(), process(), and process_drago().

◆ dt_dev_undo_end_record()

◆ dt_dev_undo_start_record()

◆ dt_dev_wait_hash()

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 
)

◆ dt_history_item_get_label()

gchar * dt_history_item_get_label ( const struct dt_iop_module_t module)

generate item multi-instance name with mnemonics, for Gtk labels

References dt_iop_module_t::multi_name.

Referenced by _iop_panel_label().

◆ dt_history_item_get_name()

gchar * dt_history_item_get_name ( const struct dt_iop_module_t module)

◆ dt_history_item_get_name_html()

gchar * dt_history_item_get_name_html ( const struct dt_iop_module_t module)

◆ dt_masks_get_lock_mode()

◆ dt_masks_set_lock_mode()

◆ find_last_exposure_instance()

static dt_dev_proxy_exposure_t * find_last_exposure_instance ( dt_develop_t dev)
static