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 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_refresh_ui_images(dev)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_refresh_ui_images_real, (dev))
 
#define dt_dev_invalidate(dev)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_real, (dev))
 
#define dt_dev_invalidate_preview(dev)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_preview_real, (dev))
 
#define dt_dev_invalidate_all(dev)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_all_real, (dev))
 
#define dt_dev_invalidate_zoom(dev)   DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_zoom_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_refresh_ui_images_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_pixelpipe_rebuild (struct dt_develop_t *dev)
 
void dt_dev_invalidate_real (dt_develop_t *dev)
 
void dt_dev_invalidate_preview_real (dt_develop_t *dev)
 
void dt_dev_invalidate_all_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_pixelpipe_resync_all (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_reprocess_all (dt_develop_t *dev)
 
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_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.
 
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)
 
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)
 
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.
 
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_configure

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

◆ dt_dev_invalidate

#define dt_dev_invalidate (   dev)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_real, (dev))

◆ dt_dev_invalidate_all

#define dt_dev_invalidate_all (   dev)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_all_real, (dev))

◆ dt_dev_invalidate_preview

#define dt_dev_invalidate_preview (   dev)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_preview_real, (dev))

◆ dt_dev_invalidate_zoom

#define dt_dev_invalidate_zoom (   dev)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_invalidate_zoom_real, (dev))

◆ dt_dev_refresh_ui_images

#define dt_dev_refresh_ui_images (   dev)    DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_refresh_ui_images_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()

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