Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
develop.h File Reference
#include <cairo.h>
#include <glib.h>
#include <inttypes.h>
#include <stdint.h>
#include "common/debug.h"
#include "common/darktable.h"
#include "common/dtpthread.h"
#include "common/image.h"
#include "control/settings.h"
#include "develop/imageop.h"
#include "develop/dev_history.h"
#include "develop/dev_pixelpipe.h"
+ Include dependency graph for develop.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  dt_dev_proxy_exposure_t
 
struct  dt_backbuf_t
 
struct  dt_develop_t
 

Macros

#define dt_dev_process_all(dev)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_process_all_real, (dev))
 
#define dt_dev_configure(dev, wd, ht)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_configure_real, (dev), (wd), (ht))
 

Typedefs

typedef enum dt_dev_overexposed_colorscheme_t dt_dev_overexposed_colorscheme_t
 
typedef enum dt_dev_overlay_colors_t dt_dev_overlay_colors_t
 
typedef enum dt_dev_rawoverexposed_mode_t dt_dev_rawoverexposed_mode_t
 
typedef enum dt_dev_rawoverexposed_colorscheme_t dt_dev_rawoverexposed_colorscheme_t
 
typedef enum dt_dev_transform_direction_t dt_dev_transform_direction_t
 
typedef enum dt_dev_pixelpipe_display_mask_t dt_dev_pixelpipe_display_mask_t
 
typedef enum dt_develop_detail_mmask_t dt_develop_detail_mask_t
 
typedef enum dt_clipping_preview_mode_t dt_clipping_preview_mode_t
 
typedef enum dt_dev_pipe_type_t dt_dev_pipe_type_t
 
typedef struct dt_dev_proxy_exposure_t dt_dev_proxy_exposure_t
 
typedef struct dt_backbuf_t dt_backbuf_t
 
typedef struct dt_develop_t dt_develop_t
 

Enumerations

enum  dt_dev_overexposed_colorscheme_t {
  DT_DEV_OVEREXPOSED_BLACKWHITE = 0 ,
  DT_DEV_OVEREXPOSED_REDBLUE = 1 ,
  DT_DEV_OVEREXPOSED_PURPLEGREEN = 2
}
 
enum  dt_dev_overlay_colors_t {
  DT_DEV_OVERLAY_GRAY = 0 ,
  DT_DEV_OVERLAY_RED = 1 ,
  DT_DEV_OVERLAY_GREEN = 2 ,
  DT_DEV_OVERLAY_YELLOW = 3 ,
  DT_DEV_OVERLAY_CYAN = 4 ,
  DT_DEV_OVERLAY_MAGENTA = 5
}
 
enum  dt_dev_rawoverexposed_mode_t {
  DT_DEV_RAWOVEREXPOSED_MODE_MARK_CFA = 0 ,
  DT_DEV_RAWOVEREXPOSED_MODE_MARK_SOLID = 1 ,
  DT_DEV_RAWOVEREXPOSED_MODE_FALSECOLOR = 2
}
 
enum  dt_dev_rawoverexposed_colorscheme_t {
  DT_DEV_RAWOVEREXPOSED_RED = 0 ,
  DT_DEV_RAWOVEREXPOSED_GREEN = 1 ,
  DT_DEV_RAWOVEREXPOSED_BLUE = 2 ,
  DT_DEV_RAWOVEREXPOSED_BLACK = 3
}
 
enum  dt_dev_transform_direction_t {
  DT_DEV_TRANSFORM_DIR_ALL = 0 ,
  DT_DEV_TRANSFORM_DIR_FORW_INCL = 1 ,
  DT_DEV_TRANSFORM_DIR_FORW_EXCL = 2 ,
  DT_DEV_TRANSFORM_DIR_BACK_INCL = 3 ,
  DT_DEV_TRANSFORM_DIR_BACK_EXCL = 4
}
 
enum  dt_dev_pixelpipe_display_mask_t {
  DT_DEV_PIXELPIPE_DISPLAY_NONE = 0 ,
  DT_DEV_PIXELPIPE_DISPLAY_MASK = 1 << 0 ,
  DT_DEV_PIXELPIPE_DISPLAY_CHANNEL = 1 << 1 ,
  DT_DEV_PIXELPIPE_DISPLAY_OUTPUT = 1 << 2 ,
  DT_DEV_PIXELPIPE_DISPLAY_L = 1 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_a = 2 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_b = 3 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_R = 4 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_G = 5 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_B = 6 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_GRAY = 7 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_LCH_C = 8 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_LCH_h = 9 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_HSL_H = 10 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_HSL_S = 11 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_HSL_l = 12 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Jz = 13 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Cz = 14 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_hz = 15 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU = 16 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU_MONO = 17 << 3 ,
  DT_DEV_PIXELPIPE_DISPLAY_ANY = 0xff << 2 ,
  DT_DEV_PIXELPIPE_DISPLAY_STICKY = 1 << 16
}
 
enum  dt_develop_detail_mmask_t {
  DT_DEV_DETAIL_MASK_NONE = 0 ,
  DT_DEV_DETAIL_MASK_REQUIRED = 1 ,
  DT_DEV_DETAIL_MASK_DEMOSAIC = 2 ,
  DT_DEV_DETAIL_MASK_RAWPREPARE = 4
}
 
enum  dt_clipping_preview_mode_t {
  DT_CLIPPING_PREVIEW_GAMUT = 0 ,
  DT_CLIPPING_PREVIEW_ANYRGB = 1 ,
  DT_CLIPPING_PREVIEW_LUMINANCE = 2 ,
  DT_CLIPPING_PREVIEW_SATURATION = 3
}
 
enum  dt_dev_pipe_type_t {
  DT_DEV_PIPE = 0 ,
  DT_DEV_PREVIEW_PIPE = 1
}
 

Functions

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_job (dt_develop_t *dev)
 
void dt_dev_process_preview_job (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)
 
int dt_dev_load_image (dt_develop_t *dev, const int32_t imgid)
 
int dt_dev_is_current_image (dt_develop_t *dev, int32_t imgid)
 
void dt_dev_get_processed_size (const dt_develop_t *dev, int *procw, int *proch)
 
float dt_dev_get_zoom_scale (dt_develop_t *dev, gboolean preview)
 
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].
 
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 .
 
float dt_dev_exposure_get_exposure (dt_develop_t *dev)
 
float dt_dev_exposure_get_black (dt_develop_t *dev)
 
void dt_dev_modulegroups_switch (dt_develop_t *dev, struct dt_iop_module_t *module)
 
void dt_dev_modulegroups_update_visibility (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_reorder_gui_module_list (dt_develop_t *dev)
 
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)
 
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_masks_update_hash (dt_develop_t *dev)
 
struct dt_iop_module_tdt_dev_module_duplicate (dt_develop_t *dev, struct dt_iop_module_t *base)
 
void dt_dev_module_remove (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_name (const struct dt_iop_module_t *module)
 
gchar * dt_history_item_get_name_html (const struct dt_iop_module_t *module)
 
gchar * dt_history_item_get_label (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_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)
 
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)
 
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)
 
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)
 
struct 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)
 
uint64_t dt_dev_hash (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
 
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)
 
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)
 
guint dt_dev_mask_history_overload (GList *dev_history, guint threshold)
 
void dt_dev_append_changed_tag (const int32_t imgid)
 
float dt_dev_get_natural_scale (dt_develop_t *dev, struct dt_dev_pixelpipe_t *pipe)
 
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_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_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.
 
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 *out_x, float *out_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_configure

#define dt_dev_configure (   dev,
  wd,
  ht 
)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_configure_real, (dev), (wd), (ht))

◆ dt_dev_process_all

#define dt_dev_process_all (   dev)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_process_all_real, (dev))

Typedef Documentation

◆ dt_backbuf_t

typedef struct dt_backbuf_t dt_backbuf_t

◆ dt_clipping_preview_mode_t

◆ dt_dev_overexposed_colorscheme_t

◆ dt_dev_overlay_colors_t

◆ dt_dev_pipe_type_t

◆ dt_dev_pixelpipe_display_mask_t

◆ dt_dev_proxy_exposure_t

◆ dt_dev_rawoverexposed_colorscheme_t

◆ dt_dev_rawoverexposed_mode_t

◆ dt_dev_transform_direction_t

◆ dt_develop_detail_mask_t

◆ dt_develop_t

typedef struct dt_develop_t dt_develop_t

Enumeration Type Documentation

◆ dt_clipping_preview_mode_t

Enumerator
DT_CLIPPING_PREVIEW_GAMUT 
DT_CLIPPING_PREVIEW_ANYRGB 
DT_CLIPPING_PREVIEW_LUMINANCE 
DT_CLIPPING_PREVIEW_SATURATION 

◆ dt_dev_overexposed_colorscheme_t

Enumerator
DT_DEV_OVEREXPOSED_BLACKWHITE 
DT_DEV_OVEREXPOSED_REDBLUE 
DT_DEV_OVEREXPOSED_PURPLEGREEN 

◆ dt_dev_overlay_colors_t

Enumerator
DT_DEV_OVERLAY_GRAY 
DT_DEV_OVERLAY_RED 
DT_DEV_OVERLAY_GREEN 
DT_DEV_OVERLAY_YELLOW 
DT_DEV_OVERLAY_CYAN 
DT_DEV_OVERLAY_MAGENTA 

◆ dt_dev_pipe_type_t

Enumerator
DT_DEV_PIPE 
DT_DEV_PREVIEW_PIPE 

◆ dt_dev_pixelpipe_display_mask_t

Enumerator
DT_DEV_PIXELPIPE_DISPLAY_NONE 
DT_DEV_PIXELPIPE_DISPLAY_MASK 
DT_DEV_PIXELPIPE_DISPLAY_CHANNEL 
DT_DEV_PIXELPIPE_DISPLAY_OUTPUT 
DT_DEV_PIXELPIPE_DISPLAY_L 
DT_DEV_PIXELPIPE_DISPLAY_a 
DT_DEV_PIXELPIPE_DISPLAY_b 
DT_DEV_PIXELPIPE_DISPLAY_R 
DT_DEV_PIXELPIPE_DISPLAY_G 
DT_DEV_PIXELPIPE_DISPLAY_B 
DT_DEV_PIXELPIPE_DISPLAY_GRAY 
DT_DEV_PIXELPIPE_DISPLAY_LCH_C 
DT_DEV_PIXELPIPE_DISPLAY_LCH_h 
DT_DEV_PIXELPIPE_DISPLAY_HSL_H 
DT_DEV_PIXELPIPE_DISPLAY_HSL_S 
DT_DEV_PIXELPIPE_DISPLAY_HSL_l 
DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Jz 
DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Cz 
DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_hz 
DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU 
DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU_MONO 
DT_DEV_PIXELPIPE_DISPLAY_ANY 
DT_DEV_PIXELPIPE_DISPLAY_STICKY 

◆ dt_dev_rawoverexposed_colorscheme_t

Enumerator
DT_DEV_RAWOVEREXPOSED_RED 
DT_DEV_RAWOVEREXPOSED_GREEN 
DT_DEV_RAWOVEREXPOSED_BLUE 
DT_DEV_RAWOVEREXPOSED_BLACK 

◆ dt_dev_rawoverexposed_mode_t

Enumerator
DT_DEV_RAWOVEREXPOSED_MODE_MARK_CFA 
DT_DEV_RAWOVEREXPOSED_MODE_MARK_SOLID 
DT_DEV_RAWOVEREXPOSED_MODE_FALSECOLOR 

◆ dt_dev_transform_direction_t

Enumerator
DT_DEV_TRANSFORM_DIR_ALL 
DT_DEV_TRANSFORM_DIR_FORW_INCL 
DT_DEV_TRANSFORM_DIR_FORW_EXCL 
DT_DEV_TRANSFORM_DIR_BACK_INCL 
DT_DEV_TRANSFORM_DIR_BACK_EXCL 

◆ dt_develop_detail_mmask_t

Enumerator
DT_DEV_DETAIL_MASK_NONE 
DT_DEV_DETAIL_MASK_REQUIRED 
DT_DEV_DETAIL_MASK_DEMOSAIC 
DT_DEV_DETAIL_MASK_RAWPREPARE 

Function Documentation

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

guint dt_dev_mask_history_overload ( GList *  dev_history,
guint  threshold 
)

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