547 const int64_t hash,
const int64_t history_hash);
601#define dt_dev_configure(dev, wd, ht) DT_DEBUG_TRACE_WRAPPER(DT_DEBUG_DEV, dt_dev_configure_real, (dev), (wd), (ht))
666 float *points,
size_t points_count);
669 const int transf_direction,
float *points,
size_t points_count);
672 float *points,
size_t points_count);
uint64_t dt_atomic_get_uint64(const dt_atomic_uint64 *var)
void dt_atomic_set_uint64(dt_atomic_uint64 *var, uint64_t value)
static const float scaling
typedef void((*dt_cache_allocate_t)(void *userdata, dt_cache_entry_t *entry))
void dt_dev_signal_modules_moved(dt_develop_t *dev)
void dt_dev_masks_list_change(dt_develop_t *dev)
void dt_dev_coordinates_image_abs_to_image_norm(dt_develop_t *dev, float *points, size_t num_points)
float dt_dev_get_natural_scale(dt_develop_t *dev)
void dt_dev_get_processed_size(const dt_develop_t *dev, int *procw, int *proch)
static uint64_t dt_dev_get_history_hash(const dt_develop_t *dev)
int dt_dev_distort_transform_plus(const struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
void dt_masks_set_lock_mode(dt_develop_t *dev, gboolean mode)
dt_dev_overexposed_colorscheme_t
@ DT_DEV_OVEREXPOSED_PURPLEGREEN
@ DT_DEV_OVEREXPOSED_REDBLUE
@ DT_DEV_OVEREXPOSED_BLACKWHITE
void dt_dev_coordinates_preview_abs_to_image_norm(dt_develop_t *dev, float *points, size_t num_points)
int dt_dev_get_thumbnail_size(dt_develop_t *dev)
int dt_dev_coordinates_raw_abs_to_image_abs(dt_develop_t *dev, float *points, size_t points_count)
void dt_dev_coordinates_raw_norm_to_raw_abs(dt_develop_t *dev, float *points, size_t num_points)
void dt_dev_get_widget_center(const dt_develop_t *dev, float *point)
Get the center of the darkroom widget in logical coordinates.
float dt_dev_get_widget_zoom_scale(const dt_develop_t *dev, float scaling)
Convert a darkroom scaling factor to GUI logical zoom.
void dt_dev_cleanup(dt_develop_t *dev)
void dt_dev_module_remove(dt_develop_t *dev, struct dt_iop_module_t *module)
dt_dev_pixelpipe_display_mask_t
@ DT_DEV_PIXELPIPE_DISPLAY_a
@ DT_DEV_PIXELPIPE_DISPLAY_OUTPUT
@ DT_DEV_PIXELPIPE_DISPLAY_G
@ DT_DEV_PIXELPIPE_DISPLAY_L
@ DT_DEV_PIXELPIPE_DISPLAY_CHANNEL
@ DT_DEV_PIXELPIPE_DISPLAY_ANY
@ DT_DEV_PIXELPIPE_DISPLAY_LCH_h
@ DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_hz
@ DT_DEV_PIXELPIPE_DISPLAY_HSL_H
@ DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU_MONO
@ DT_DEV_PIXELPIPE_DISPLAY_HSL_S
@ DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Cz
@ DT_DEV_PIXELPIPE_DISPLAY_LCH_C
@ DT_DEV_PIXELPIPE_DISPLAY_b
@ DT_DEV_PIXELPIPE_DISPLAY_STICKY
@ DT_DEV_PIXELPIPE_DISPLAY_MASK
@ DT_DEV_PIXELPIPE_DISPLAY_JzCzhz_Jz
@ DT_DEV_PIXELPIPE_DISPLAY_PASSTHRU
@ DT_DEV_PIXELPIPE_DISPLAY_NONE
@ DT_DEV_PIXELPIPE_DISPLAY_HSL_l
@ DT_DEV_PIXELPIPE_DISPLAY_GRAY
@ DT_DEV_PIXELPIPE_DISPLAY_B
@ DT_DEV_PIXELPIPE_DISPLAY_R
void dt_dev_modulegroups_switch_tab(dt_develop_t *dev, struct dt_iop_module_t *module)
dt_dev_transform_direction_t
@ DT_DEV_TRANSFORM_DIR_BACK_EXCL
@ DT_DEV_TRANSFORM_DIR_BACK_INCL
@ DT_DEV_TRANSFORM_DIR_FORW_INCL
@ DT_DEV_TRANSFORM_DIR_ALL
@ DT_DEV_TRANSFORM_DIR_FORW_EXCL
float dt_dev_get_overlay_scale(dt_develop_t *dev)
Get the overlay scale factor in GUI logical coordinates.
void dt_dev_append_changed_tag(const int32_t imgid)
dt_dev_image_storage_t dt_dev_load_image(dt_develop_t *dev, const int32_t imgid)
void dt_dev_coordinates_image_norm_to_preview_abs(dt_develop_t *dev, float *points, size_t num_points)
float dt_dev_get_zoom_level(const dt_develop_t *dev)
void dt_dev_coordinates_image_norm_to_widget(dt_develop_t *dev, float *points, size_t num_points)
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_init(dt_develop_t *dev, int32_t gui_attached)
int dt_dev_is_current_image(dt_develop_t *dev, int32_t imgid)
void dt_dev_undo_start_record(dt_develop_t *dev)
dt_dev_rawoverexposed_mode_t
@ DT_DEV_RAWOVEREXPOSED_MODE_FALSECOLOR
@ DT_DEV_RAWOVEREXPOSED_MODE_MARK_CFA
@ DT_DEV_RAWOVEREXPOSED_MODE_MARK_SOLID
void dt_dev_snapshot_request(dt_develop_t *dev, const char *filename)
gboolean dt_masks_get_lock_mode(dt_develop_t *dev)
gchar * dt_history_item_get_label(const struct dt_iop_module_t *module)
void dt_dev_coordinates_raw_norm_to_image_norm(dt_develop_t *dev, float *points, size_t num_points)
gchar * dt_history_item_get_name_html(const struct dt_iop_module_t *module)
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 .
gboolean dt_dev_check_zoom_scale_bounds(dt_develop_t *dev)
Ensure that the current zoom level is within allowed bounds (for scrolling).
@ DT_DEV_DETAIL_MASK_ENABLED
@ DT_DEV_DETAIL_MASK_NONE
dt_clipping_preview_mode_t
@ DT_CLIPPING_PREVIEW_ANYRGB
@ DT_CLIPPING_PREVIEW_GAMUT
@ DT_CLIPPING_PREVIEW_SATURATION
@ DT_CLIPPING_PREVIEW_LUMINANCE
void dt_dev_reset_roi(dt_develop_t *dev)
struct dt_iop_module_t * dt_dev_module_duplicate(dt_develop_t *dev, struct dt_iop_module_t *base)
GList * dt_dev_load_modules(dt_develop_t *dev)
void dt_dev_set_backbuf(dt_backbuf_t *backbuf, const int width, const int height, const size_t bpp, const int64_t hash, const int64_t history_hash)
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_pixelpipe_has_preview_output(const dt_develop_t *dev, const struct dt_dev_pixelpipe_t *pipe, const struct dt_iop_roi_t *roi)
Tell whether a GUI-attached pipe currently targets the darkroom preview-sized output.
void dt_dev_coordinates_image_norm_to_raw_norm(dt_develop_t *dev, float *points, size_t num_points)
gboolean dt_dev_pipelines_share_preview_output(dt_develop_t *dev)
Tell whether the darkroom main and preview pipes currently target the same GUI output.
void dt_dev_configure_real(dt_develop_t *dev, int wd, int ht)
void dt_dev_masks_update_hash(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 void dt_dev_set_history_hash(dt_develop_t *dev, const uint64_t history_hash)
dt_dev_rawoverexposed_colorscheme_t
@ DT_DEV_RAWOVEREXPOSED_RED
@ DT_DEV_RAWOVEREXPOSED_BLUE
@ DT_DEV_RAWOVEREXPOSED_BLACK
@ DT_DEV_RAWOVEREXPOSED_GREEN
int dt_dev_coordinates_image_abs_to_raw_abs(dt_develop_t *dev, float *points, size_t points_count)
void dt_dev_get_image_box_in_widget(const dt_develop_t *dev, int32_t width, int32_t height, float *box)
Get the displayed image rectangle in darkroom widget coordinates.
void dt_dev_undo_end_record(dt_develop_t *dev)
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.
void dt_dev_coordinates_widget_delta_to_image_delta(dt_develop_t *dev, float *points, size_t num_points)
Convert a widget-space distance to processed-image pixels.
void dt_dev_convert_roi(const dt_develop_t *dev, const dt_iop_roi_t *roi_in, dt_iop_roi_t *roi_out, const dt_dev_roi_space_t from, const dt_dev_roi_space_t to)
Convert a full ROI object between pipeline raster coordinates and GUI logical coordinates.
float dt_dev_get_fit_scale(dt_develop_t *dev)
Get the scale factor that maps preview-buffer pixels to GUI coordinates.
dt_dev_image_storage_t dt_dev_ensure_image_storage(dt_develop_t *dev, const int32_t imgid)
@ DT_DEV_IMAGE_STORAGE_DB_NOT_READ
@ DT_DEV_IMAGE_STORAGE_OK
@ DT_DEV_IMAGE_STORAGE_MIPMAP_NOT_FOUND
void dt_dev_modules_update_multishow(dt_develop_t *dev)
void dt_dev_coordinates_image_norm_to_image_abs(dt_develop_t *dev, float *points, size_t num_points)
guint dt_dev_mask_history_overload(GList *dev_history, guint threshold)
gchar * dt_dev_get_masks_group_name(const struct dt_iop_module_t *module)
void dt_dev_coordinates_widget_to_image_norm(dt_develop_t *dev, float *points, size_t num_points)
Coordinate conversion helpers between widget, normalized image, and absolute image spaces.
void dt_dev_update_mouse_effect_radius(dt_develop_t *dev)
Convert absolute output-image coordinates to input image space by calling dt_dev_coordinates_image_ab...
void dt_dev_masks_list_update(dt_develop_t *dev)
int dt_dev_distort_backtransform_plus(const struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
gchar * dt_dev_get_multi_name(const struct dt_iop_module_t *module)
void dt_dev_masks_list_remove(dt_develop_t *dev, int formid, int parentid)
int dt_dev_distort_transform_locked(const struct dt_dev_pixelpipe_t *pipe, const double iop_order, const int transf_direction, float *points, size_t points_count)
float dt_dev_get_zoom_scale(const dt_develop_t *dev, gboolean preview)
void dt_dev_coordinates_raw_abs_to_raw_norm(dt_develop_t *dev, float *points, size_t num_points)
void dt_dev_coordinates_image_abs_to_raw_norm(dt_develop_t *dev, float *points, size_t num_points)
gchar * dt_history_item_get_name(const struct dt_iop_module_t *module)
void dt_dev_retrieve_full_pos(dt_develop_t *dev, const int px, const int py, float *mouse_x, float *mouse_y)
Get a point position from widget space to preview buffer space [0..1].
struct dt_dev_pixelpipe_iop_t * dt_dev_distort_get_iop_pipe(struct dt_dev_pixelpipe_t *pipe, struct dt_iop_module_t *module)
void dt_dev_start_all_pipelines(dt_develop_t *dev)
#define dt_pthread_rwlock_t
float dt_aligned_pixel_t[4]
struct _GtkWidget GtkWidget
unsigned __int64 uint64_t
void(* list_update)(struct dt_lib_module_t *self)
cairo_surface_t * image_surface
int undo_history_before_end
struct dt_develop_t::@25 profile
struct dt_develop_t::@19 color_picker
Authoritative darkroom color-picker state.
struct dt_develop_t::@23 display
struct dt_colorpicker_sample_t * primary_sample
GList * undo_history_before_snapshot
dt_dev_rawoverexposed_colorscheme_t colorscheme
dt_backbuf_t display_histogram
uint32_t * histogram_pre_levels
dt_backbuf_t output_histogram
struct dt_develop_t::@18 transient_params
uint64_t wait_output_hash
GList * undo_history_before_iop_order_list
gboolean(* refresh_global_picker)(struct dt_lib_module_t *self)
struct dt_develop_t::@24 iso_12646
struct dt_iop_module_t * pending_module
gboolean restrict_histogram
void(* list_remove)(struct dt_lib_module_t *self, int formid, int parentid)
struct dt_iop_module_t * gui_module
dt_pthread_rwlock_t history_mutex
gboolean live_samples_enabled
dt_clipping_preview_mode_t mode
struct dt_develop_t::@20::@27 snapshot
dt_atomic_uint64 history_hash
struct dt_lib_module_t *void(* list_change)(struct dt_lib_module_t *self)
GtkWidget * floating_window
struct dt_dev_pixelpipe_t * preview_pipe
dt_dev_pixelpipe_cache_wait_t output_wait
gboolean pipelines_started
struct dt_dev_pixelpipe_t * virtual_pipe
dt_atomic_int mask_preview_settings_revision
Revision of the global mask-preview appearance.
gboolean darkroom_skip_mouse_events
struct dt_iop_module_t *void * params
dt_aligned_pixel_t wb_coeffs
struct dt_iop_module_t *struct dt_iop_color_picker_t * picker
dt_dev_overexposed_colorscheme_t colorscheme
dt_backbuf_t raw_histogram
struct dt_masks_form_gui_t * form_gui
struct dt_develop_t::@17 roi
struct dt_develop_t::@20::@28 masks
void(* selection_change)(struct dt_lib_module_t *self, struct dt_iop_module_t *module, const int selectid, const int throw_event)
struct dt_colorpicker_sample_t * selected_sample
struct dt_develop_t::@20 proxy
uint32_t * histogram_pre_tonecurve
guint refresh_idle_source
uint32_t histogram_pre_levels_max
struct dt_dev_pixelpipe_t * pending_pipe
struct dt_lib_module_t * histogram_module
struct dt_iop_module_t * chroma_adaptation
dt_pthread_mutex_t transient_params_mutex
dt_pthread_rwlock_t masks_mutex
dt_dev_rawoverexposed_mode_t mode
struct dt_develop_t::@22 rawoverexposed
uint32_t histogram_pre_tonecurve_max
struct dt_develop_t::@26 progress
struct dt_dev_pixelpipe_t * pipe
GtkWidget * softproof_button
dt_dev_pixelpipe_cache_wait_t input_wait
struct dt_develop_t::@21 overexposed
struct dt_develop_t * dev
Region of interest passed through the pixelpipe.