Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
develop.c File Reference
#include <assert.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 * dt_pipe_type_to_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_process_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)
 Ensure that the current ROI position is within allowed bounds .
 
void dt_dev_get_processed_size (const dt_develop_t *dev, int *procw, int *proch)
 
void dt_dev_retrieve_full_pos (dt_develop_t *dev, const int px, const int py, float *mouse_x, float *mouse_y)
 Get the pointer position from widget space to preview buffer space [0..1].
 
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)
 
float dt_dev_get_natural_scale (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
 
float dt_dev_get_fit_scale (dt_develop_t *dev)
 Get the scale factor to fit the image into the darkroom area. (scaling * natural_scale_on_processed_size)
 
float dt_dev_get_overlay_scale (dt_develop_t *dev)
 Get the overlay scale factor (scaling * natural_scale_on_processed_size * ppd)
 
float dt_dev_get_zoom_level (const dt_develop_t *dev)
 
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.
 
static gboolean _dev_translate_roi (dt_develop_t *dev, cairo_t *cr, int32_t width, int32_t height)
 
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_rescale_roi_to_input (dt_develop_t *dev, cairo_t *cr, int32_t width, int32_t height)
 Scale the ROI to fit the input size 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 (for scrolling).
 
gboolean dt_dev_roi_to_input_space (dt_develop_t *dev, gboolean normalize_out, const float in_x, const float in_y, float *point_x, float *point_y)
 Get point in input image space from point in normalized ROI space. The function performs a distortion backtransform.
 
gboolean dt_dev_roi_delta_to_input_space (dt_develop_t *dev, const float delta[2], const float in[2], float points[2])
 Convert a delta vector in ROI space to input image space. The function performs a distortion backtransform.
 

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

◆ _dev_module_update_multishow()

◆ _dev_translate_roi()

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

◆ _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()

void dt_dev_check_zoom_pos_bounds ( dt_develop_t dev,
float *  dev_x,
float *  dev_y,
float *  box_w,
float *  box_h 
)

Ensure that the current ROI position is within allowed bounds .

Parameters
devthe develop instance
dev_xthe normalized x position of ROI
dev_ythe normalized y position of ROI
box_wthe width of navigation's box
box_hthe height of navigation's box

References CLAMPF, darktable, dt_dev_get_processed_size(), dt_dev_get_zoom_level(), darktable_t::gui, dt_develop_t::height, dt_gui_gtk_t::ppd, dt_develop_t::scaling, and dt_develop_t::width.

Referenced by _change_scaling(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), _zoom_preset_change(), and mouse_moved().

◆ 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 (for scrolling).

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 _change_scaling().

◆ 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, dt_dev_get_overlay_scale(), FALSE, height, dt_develop_t::preview_pipe, 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 _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, dt_develop_t::completed, 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_pipe_type_to_str(), 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::pipeline_threadsafe, darktable_t::pixelpipe_cache, dt_develop_t::preview_average_delay, dt_dev_pixelpipe_t::processing, dt_develop_t::progress, dt_dev_pixelpipe_t::running, dt_dev_pixelpipe_t::shutdown, darktable_t::signals, dt_dev_pixelpipe_t::status, dt_dev_pixelpipe_t::timeout, dt_develop_t::total, 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_fit_scale()

float dt_dev_get_fit_scale ( dt_develop_t dev)

Get the scale factor to fit the image into the darkroom area. (scaling * natural_scale_on_processed_size)

Parameters
devthe develop instance
Returns
float : the fit scale factor

References dt_dev_pixelpipe_t::backbuf_height, dt_dev_pixelpipe_t::backbuf_width, dt_develop_t::height, dt_develop_t::preview_pipe, dt_develop_t::scaling, and dt_develop_t::width.

Referenced by _darkroom_pickers_draw(), dt_dev_get_overlay_scale(), dt_dev_rescale_roi(), and expose().

◆ dt_dev_get_history_end()

◆ dt_dev_get_natural_scale()

◆ dt_dev_get_overlay_scale()

float dt_dev_get_overlay_scale ( dt_develop_t dev)

Get the overlay scale factor (scaling * natural_scale_on_processed_size * ppd)

Parameters
devthe develop instance
Returns
float :the overlay scale factor

References darktable, dt_dev_get_fit_scale(), darktable_t::gui, and dt_gui_gtk_t::ppd.

Referenced by button_pressed(), dt_dev_clip_roi(), expose(), gui_post_expose(), and mouse_moved().

◆ dt_dev_get_processed_size()

◆ dt_dev_get_zoom_level()

◆ 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::completed, 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_rwlock_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::loading_cache, 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::progress, dt_develop_t::proxy, dt_develop_t::raw_histogram, dt_develop_t::rawoverexposed, dt_develop_t::threshold, dt_develop_t::total, 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_focus_draw_clusters(), dt_imageio_export_with_flags(), dt_styles_apply_to_image(), and init().

◆ 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_process_all_real()

◆ 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_reorder_gui_module_list()

void dt_dev_reorder_gui_module_list ( dt_develop_t dev)

◆ 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 widget width
heightthe widget height
Returns
gboolean TRUE if the image dimension are 0x0

References _dev_translate_roi(), dt_dev_get_fit_scale(), FALSE, height, TRUE, and width.

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

◆ dt_dev_rescale_roi_to_input()

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

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

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

References _dev_translate_roi(), darktable, dt_dev_get_zoom_level(), FALSE, darktable_t::gui, height, dt_gui_gtk_t::ppd, TRUE, and width.

Referenced by dt_masks_events_post_expose().

◆ dt_dev_reset_roi()

void dt_dev_reset_roi ( dt_develop_t dev)

◆ dt_dev_retrieve_full_pos()

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

Get the pointer position from widget space to preview buffer space [0..1].

NOTE: The input mouse coordinates are 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, darktable, dt_dev_get_zoom_level(), darktable_t::gui, dt_develop_t::height, dt_develop_t::pipe, dt_gui_gtk_t::ppd, dt_dev_pixelpipe_t::processed_height, dt_dev_pixelpipe_t::processed_width, dt_develop_t::width, dt_develop_t::x, and dt_develop_t::y.

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

◆ dt_dev_roi_delta_to_input_space()

gboolean dt_dev_roi_delta_to_input_space ( dt_develop_t dev,
const float  delta[2],
const float  in[2],
float  points[2] 
)

Convert a delta vector in ROI space to input image space. The function performs a distortion backtransform.

Parameters
devthe develop instance
deltathe delta vector in anormalized ROI space.
inthe input point in normalized ROI space [0..1].
pointsthe returned two points in input image space, normalized or pixel depending on normalize_out.
Returns
gboolean TRUE on success, FALSE if image has 0 dimension or fails.

References dt_dev_pixelpipe_t::backbuf_height, dt_dev_pixelpipe_t::backbuf_width, dt_dev_distort_backtransform(), FALSE, dt_dev_pixelpipe_t::iheight, dt_dev_pixelpipe_t::iwidth, dt_develop_t::natural_scale, dt_develop_t::preview_pipe, and TRUE.

Referenced by _brush_events_mouse_moved(), _circle_events_mouse_moved(), _ellipse_events_mouse_moved(), _gradient_events_mouse_moved(), _polygon_events_mouse_moved(), and dt_masks_set_source_pos_initial_value().

◆ dt_dev_roi_to_input_space()

gboolean dt_dev_roi_to_input_space ( dt_develop_t dev,
gboolean  normalize_out,
const float  in_x,
const float  in_y,
float *  out_x,
float *  out_y 
)

Get point in input image space from point in normalized ROI space. The function performs a distortion backtransform.

Parameters
devthe develop instance
normalize_outif TRUE, out_x and out_y will be normalized [0..1], if FALSE, they will be in pixel coordinates.
in_xthe x point in normalized ROI space [0..1].
in_ythe y point in normalized ROI space [0..1].
out_xthe returned x point in input image space, normalized or pixel depending on normalize_out.
out_ythe returned y point in input image space, normalized or pixel depending on normalize_out.
Returns
gboolean TRUE on success, FALSE if image has 0 dimension.

References dt_dev_pixelpipe_t::backbuf_height, dt_dev_pixelpipe_t::backbuf_width, dt_dev_distort_backtransform(), FALSE, dt_dev_pixelpipe_t::iheight, dt_dev_pixelpipe_t::iwidth, dt_develop_t::natural_scale, dt_develop_t::preview_pipe, and TRUE.

Referenced by _add_node_to_segment(), _add_node_to_segment(), _circle_events_button_pressed(), _ellipse_events_button_pressed(), _gradient_events_button_pressed(), and _polygon_events_button_pressed().

◆ 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_PIPE_REMOVE, DT_DEV_PIPE_SYNCH, DT_DEV_PIPE_TOP_CHANGED, dt_dev_pixelpipe_update_main, 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()

◆ 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()

◆ dt_pipe_type_to_str()

◆ find_last_exposure_instance()

static dt_dev_proxy_exposure_t * find_last_exposure_instance ( dt_develop_t dev)
static