Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
darkroom.c File Reference
#include "common/extra_optimizations.h"
#include "bauhaus/bauhaus.h"
#include "common/collection.h"
#include "common/colorspaces.h"
#include "common/darktable.h"
#include "common/debug.h"
#include "common/file_location.h"
#include "common/history.h"
#include "common/image_cache.h"
#include "common/imageio.h"
#include "common/imageio_module.h"
#include "common/mipmap_cache.h"
#include "common/selection.h"
#include "common/tags.h"
#include "common/undo.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/masks.h"
#include "dtgtk/button.h"
#include "dtgtk/thumbtable.h"
#include "gui/color_picker_proxy.h"
#include "gui/gtk.h"
#include "gui/gui_throttle.h"
#include "gui/guides.h"
#include "gui/presets.h"
#include "libs/colorpicker.h"
#include "libs/modulegroups.h"
#include "views/view.h"
#include "views/view_api.h"
#include <gdk/gdkkeysyms.h>
#include <glib.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+ Include dependency graph for darkroom.c:

Data Structures

struct  coords_t
 
struct  darkroom_locked_surface_t
 
struct  darkroom_expose_state_t
 

Macros

#define G_SOURCE_FUNC(f)   ((GSourceFunc) (void (*)(void)) (f))
 
#define DARKROOM_EXPOSE_DUMB_DEBUG   0
 

Typedefs

typedef struct coords_t coords_t
 
typedef struct darkroom_locked_surface_t darkroom_locked_surface_t
 
typedef struct darkroom_expose_state_t darkroom_expose_state_t
 

Enumerations

enum  { DND_TARGET_IOP }
 

Functions

static void _update_softproof_gamut_checking (dt_develop_t *d)
 
static void _view_darkroom_filmstrip_activate_callback (gpointer instance, int32_t imgid, gpointer user_data)
 
static void _darkroom_image_loaded_callback (gpointer instance, guint request_id, guint result, gpointer user_data)
 
static void _dev_change_image (dt_view_t *self, const int32_t imgid)
 
static int _change_scaling (dt_develop_t *dev, const float x, const float y, const float new_scaling)
 
static void _release_expose_source_caches (void)
 
const char * name (const dt_view_t *self)
 
void init (dt_view_t *self)
 
uint32_t view (const dt_view_t *self)
 
void cleanup (dt_view_t *self)
 
static cairo_status_t _write_snapshot_data (void *closure, const unsigned char *data, unsigned int length)
 
static dt_darkroom_layout_t _lib_darkroom_get_layout (dt_view_t *self)
 
static gboolean _darkroom_is_only_selected_sample (gboolean is_primary_sample, dt_colorpicker_sample_t *selected_sample, gboolean display_samples)
 
static void _darkroom_pickers_draw (dt_view_t *self, cairo_t *cri, int32_t width, int32_t height, int32_t pozx, int32_t pozy, GSList *samples, gboolean is_primary_sample)
 Draw colorpicker samples overlays in darkroom view.
 
void _colormanage_ui_color (const float L, const float a, const float b, dt_aligned_pixel_t RGB)
 
static void _render_iso12646 (cairo_t *cr, int width, int height, int border)
 
static void _release_locked_surface (darkroom_locked_surface_t *locked)
 
static void _release_preview_fallback_surface (void)
 
static gboolean _lock_pipe_surface (dt_develop_t *dev, dt_dev_pixelpipe_t *pipe, darkroom_locked_surface_t *locked, const gboolean keep_previous_on_fail, const gboolean lock_read)
 
static gboolean _render_main_locked_surface (cairo_t *cr, dt_develop_t *dev, darkroom_locked_surface_t *locked, const int width, const int height, const int border, const dt_aligned_pixel_t bg_color)
 
static gboolean _build_preview_fallback_surface (dt_develop_t *dev, const int width, const int height, const int border, const dt_aligned_pixel_t bg_color, const uint64_t zoom_hash)
 
static gboolean _render_preview_fallback_surface (cairo_t *cr)
 
static gboolean _darkroom_gui_module_requests_uncropped_full_image (const dt_develop_t *dev)
 
static void _paint_all (cairo_t *cri, cairo_t *cr, cairo_surface_t *image_surface)
 
static gboolean _darkroom_preview_fallback_valid (const dt_develop_t *dev, const int width, const int height, const uint64_t zoom_hash)
 
static gboolean _darkroom_locked_main_valid_for_zoom (const darkroom_expose_state_t *state, const uint64_t zoom_hash)
 
static void _darkroom_reset_expose_state (darkroom_expose_state_t *state)
 
static void _darkroom_prepare_image_surface (dt_develop_t *dev, const int width, const int height, darkroom_expose_state_t *state)
 
void expose (dt_view_t *self, cairo_t *cri, int32_t width, int32_t height, int32_t pointerx, int32_t pointery)
 
void reset (dt_view_t *self)
 
static void _darkroom_log_image_load_error (const int ret)
 
static gboolean _darkroom_attach_missing_iop_guis (dt_develop_t *dev)
 
int try_enter (dt_view_t *self)
 
static gboolean _toolbar_show_popup (gpointer user_data)
 
static void _get_final_size_with_iso_12646 (dt_develop_t *d)
 
static void _iso_12646_quickbutton_clicked (GtkWidget *w, gpointer user_data)
 
static void _guides_quickbutton_clicked (GtkWidget *widget, gpointer user_data)
 
static void _guides_view_changed (gpointer instance, dt_view_t *old_view, dt_view_t *new_view, dt_lib_module_t *self)
 
static void _display_quickbutton_clicked (GtkWidget *w, gpointer user_data)
 
static void display_brightness_callback (GtkWidget *slider, gpointer user_data)
 
static void display_borders_callback (GtkWidget *slider, gpointer user_data)
 
static void _overexposed_quickbutton_clicked (GtkWidget *w, gpointer user_data)
 
static void colorscheme_callback (GtkWidget *combo, gpointer user_data)
 
static void lower_callback (GtkWidget *slider, gpointer user_data)
 
static void upper_callback (GtkWidget *slider, gpointer user_data)
 
static void mode_callback (GtkWidget *slider, gpointer user_data)
 
static void _rawoverexposed_quickbutton_clicked (GtkWidget *w, gpointer user_data)
 
static void rawoverexposed_mode_callback (GtkWidget *combo, gpointer user_data)
 
static void rawoverexposed_colorscheme_callback (GtkWidget *combo, gpointer user_data)
 
static void rawoverexposed_threshold_callback (GtkWidget *slider, gpointer user_data)
 
static void _softproof_quickbutton_clicked (GtkWidget *w, gpointer user_data)
 
static void _gamut_quickbutton_clicked (GtkWidget *w, gpointer user_data)
 
static void softproof_profile_callback (GtkWidget *combo, gpointer user_data)
 
static gboolean _quickbutton_press_release (GtkWidget *button, GdkEventButton *event, GtkWidget *popover)
 
void connect_button_press_release (GtkWidget *w, GtkWidget *p)
 
gboolean _focus_main_image (GtkAccelGroup *accel_group, GObject *accelerable, guint keyval, GdkModifierType modifier, gpointer data)
 
gboolean _switch_to_next_picture (GtkAccelGroup *accel_group, GObject *accelerable, guint keyval, GdkModifierType modifier, gpointer data)
 
gboolean _switch_to_prev_picture (GtkAccelGroup *accel_group, GObject *accelerable, guint keyval, GdkModifierType modifier, gpointer data)
 
void gui_init (dt_view_t *self)
 
static dt_iop_module_t_get_dnd_dest_module (GtkBox *container, gint x, gint y, dt_iop_module_t *module_src)
 
static dt_iop_module_t_get_dnd_source_module (GtkBox *container)
 
static void _on_drag_end (GtkWidget *widget, GdkDragContext *context, gpointer user_data)
 
static void _on_drag_begin (GtkWidget *widget, GdkDragContext *context, gpointer user_data)
 
static void _on_drag_data_get (GtkWidget *widget, GdkDragContext *context, GtkSelectionData *selection_data, guint info, guint time, gpointer user_data)
 
static gboolean _on_drag_drop (GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint time, gpointer user_data)
 
static gboolean _on_drag_motion (GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint time, gpointer user_data)
 
static void _on_drag_data_received (GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint time, gpointer user_data)
 
static void _on_drag_leave (GtkWidget *widget, GdkDragContext *dc, guint time, gpointer user_data)
 
static void _register_modules_drag_n_drop (dt_view_t *self)
 
static void _unregister_modules_drag_n_drop (dt_view_t *self)
 
static gboolean _is_scroll_captured_by_widget ()
 
gboolean _scroll_on_focus (GdkEventScroll event, void *data)
 
void enter (dt_view_t *self)
 
void leave (dt_view_t *self)
 
void mouse_leave (dt_view_t *self)
 
static gboolean _is_in_frame (const int width, const int height, const int x, const int y)
 
static gboolean mouse_in_imagearea (dt_view_t *self, double x, double y)
 
static gboolean mouse_in_actionarea (dt_view_t *self, double x, double y)
 
static void _set_default_cursor (dt_view_t *self, double x, double y)
 
void mouse_enter (dt_view_t *self)
 
static void _delayed_history_commit (gpointer data)
 
void mouse_moved (dt_view_t *self, double x, double y, double pressure, int which)
 
int button_released (dt_view_t *self, double x, double y, int which, uint32_t state)
 
int button_pressed (dt_view_t *self, double x, double y, double pressure, int which, int type, uint32_t state)
 
static gboolean _center_view_free_zoom (dt_view_t *self, double x, double y, int up, int state, int flow)
 
int scrolled (dt_view_t *self, double x, double y, int up, int state, int delta_y)
 
static void _key_scroll (dt_develop_t *dev)
 
int key_pressed (dt_view_t *self, GdkEventKey *event)
 
void configure (dt_view_t *self, int wd, int ht)
 

Variables

static int32_t _darkroom_pending_imgid = UNKNOWN_IMAGE
 
static dt_iop_module_t_darkroom_pending_focus_module = NULL
 
static darkroom_locked_surface_t _darkroom_main_locked = { .hash = (uint64_t)-1 }
 
static darkroom_locked_surface_t _darkroom_preview_locked = { .hash = (uint64_t)-1 }
 
static cairo_surface_t * _darkroom_preview_fallback_surface = NULL
 
static int32_t _darkroom_preview_fallback_imgid = UNKNOWN_IMAGE
 
static uint64_t _darkroom_preview_fallback_zoom_hash = 0
 
static uint64_t _darkroom_preview_fallback_backbuf_hash = 0
 
static int _darkroom_preview_fallback_width = 0
 
static int _darkroom_preview_fallback_height = 0
 
static const GtkTargetEntry _iop_target_list_internal [] = { { "iop", GTK_TARGET_SAME_WIDGET, DND_TARGET_IOP } }
 
static const guint _iop_n_targets_internal = G_N_ELEMENTS(_iop_target_list_internal)
 

Macro Definition Documentation

◆ DARKROOM_EXPOSE_DUMB_DEBUG

#define DARKROOM_EXPOSE_DUMB_DEBUG   0

◆ G_SOURCE_FUNC

#define G_SOURCE_FUNC (   f)    ((GSourceFunc) (void (*)(void)) (f))

this is the view for the darkroom module.

Typedef Documentation

◆ coords_t

typedef struct coords_t coords_t

◆ darkroom_expose_state_t

◆ darkroom_locked_surface_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DND_TARGET_IOP 

Function Documentation

◆ _build_preview_fallback_surface()

◆ _center_view_free_zoom()

static gboolean _center_view_free_zoom ( dt_view_t self,
double  x,
double  y,
int  up,
int  state,
int  flow 
)
static

◆ _change_scaling()

◆ _colormanage_ui_color()

void _colormanage_ui_color ( const float  L,
const float  a,
const float  b,
dt_aligned_pixel_t  RGB 
)

◆ _darkroom_attach_missing_iop_guis()

static gboolean _darkroom_attach_missing_iop_guis ( dt_develop_t dev)
static

◆ _darkroom_gui_module_requests_uncropped_full_image()

static gboolean _darkroom_gui_module_requests_uncropped_full_image ( const dt_develop_t dev)
inlinestatic

◆ _darkroom_image_loaded_callback()

◆ _darkroom_is_only_selected_sample()

static gboolean _darkroom_is_only_selected_sample ( gboolean  is_primary_sample,
dt_colorpicker_sample_t selected_sample,
gboolean  display_samples 
)
static

Referenced by _darkroom_pickers_draw().

◆ _darkroom_locked_main_valid_for_zoom()

static gboolean _darkroom_locked_main_valid_for_zoom ( const darkroom_expose_state_t state,
const uint64_t  zoom_hash 
)
inlinestatic

◆ _darkroom_log_image_load_error()

static void _darkroom_log_image_load_error ( const int  ret)
static

◆ _darkroom_pickers_draw()

static void _darkroom_pickers_draw ( dt_view_t self,
cairo_t *  cri,
int32_t  width,
int32_t  height,
int32_t  pozx,
int32_t  pozy,
GSList *  samples,
gboolean  is_primary_sample 
)
static

Draw colorpicker samples overlays in darkroom view.

Parameters
selfactual view
cricairo context
widthwidth of the widget
heightheight of the widget
pozxx pointer
pozyy pointer
sampleslist of samples to draw
is_primary_samplewhether we are drawing the primary sample or live samples
Todo:
: instead of going to all this effort to show how error-prone a preview pipe sample can be, just produce a better point sample
Todo:
: to be really accurate, the colorpicker should render precisely over the nearest pixelpipe pixel, but this gets particularly tricky to do with iop pickers with transformations after them in the pipeline
Todo:
: if an area sample is selected, when selected should fill it with colorpicker color?

References _darkroom_is_only_selected_sample(), dt_colorpicker_sample_t::box, dt_develop_t::color_picker, darktable, dt_view_t::data, darktable_t::develop, dt_develop_t::display_samples, dt_dev_get_fit_scale(), dt_dev_rescale_roi(), DT_LIB_COLORPICKER_SIZE_BOX, DT_LIB_COLORPICKER_SIZE_POINT, FALSE, h, height, lw, M_PI, dt_colorpicker_sample_t::point, dt_develop_t::preview_height, dt_develop_t::preview_width, dt_develop_t::roi, dt_develop_t::selected_sample, set_color(), dt_colorpicker_sample_t::size, dt_colorpicker_sample_t::swatch, TRUE, width, and x.

Referenced by expose().

◆ _darkroom_prepare_image_surface()

◆ _darkroom_preview_fallback_valid()

static gboolean _darkroom_preview_fallback_valid ( const dt_develop_t dev,
const int  width,
const int  height,
const uint64_t  zoom_hash 
)
inlinestatic

◆ _darkroom_reset_expose_state()

◆ _delayed_history_commit()

◆ _dev_change_image()

◆ _display_quickbutton_clicked()

static void _display_quickbutton_clicked ( GtkWidget w,
gpointer  user_data 
)
static

DOC Overexposed and gamut modules are inserted inplace in pipeline at runtime, only for the main preview, and don't add history items. They all need a full history -> pipeline resynchronization.

Referenced by gui_init().

◆ _focus_main_image()

gboolean _focus_main_image ( GtkAccelGroup *  accel_group,
GObject *  accelerable,
guint  keyval,
GdkModifierType  modifier,
gpointer  data 
)

◆ _gamut_quickbutton_clicked()

◆ _get_dnd_dest_module()

static dt_iop_module_t * _get_dnd_dest_module ( GtkBox *  container,
gint  x,
gint  y,
dt_iop_module_t module_src 
)
static

◆ _get_dnd_source_module()

static dt_iop_module_t * _get_dnd_source_module ( GtkBox *  container)
static

◆ _get_final_size_with_iso_12646()

static void _get_final_size_with_iso_12646 ( dt_develop_t d)
static

◆ _guides_quickbutton_clicked()

static void _guides_quickbutton_clicked ( GtkWidget widget,
gpointer  user_data 
)
static

◆ _guides_view_changed()

static void _guides_view_changed ( gpointer  instance,
dt_view_t old_view,
dt_view_t new_view,
dt_lib_module_t self 
)
static

References dt_guides_update_button_state().

Referenced by gui_init().

◆ _is_in_frame()

static gboolean _is_in_frame ( const int  width,
const int  height,
const int  x,
const int  y 
)
static

◆ _is_scroll_captured_by_widget()

static gboolean _is_scroll_captured_by_widget ( )
static

◆ _iso_12646_quickbutton_clicked()

static void _iso_12646_quickbutton_clicked ( GtkWidget w,
gpointer  user_data 
)
static

◆ _key_scroll()

◆ _lib_darkroom_get_layout()

static dt_darkroom_layout_t _lib_darkroom_get_layout ( dt_view_t self)
static

References DT_DARKROOM_LAYOUT_EDITING.

Referenced by gui_init().

◆ _lock_pipe_surface()

◆ _on_drag_begin()

static void _on_drag_begin ( GtkWidget widget,
GdkDragContext *  context,
gpointer  user_data 
)
static

◆ _on_drag_data_get()

static void _on_drag_data_get ( GtkWidget widget,
GdkDragContext *  context,
GtkSelectionData *  selection_data,
guint  info,
guint  time,
gpointer  user_data 
)
static

◆ _on_drag_data_received()

◆ _on_drag_drop()

static gboolean _on_drag_drop ( GtkWidget widget,
GdkDragContext *  dc,
gint  x,
gint  y,
guint  time,
gpointer  user_data 
)
static

◆ _on_drag_end()

static void _on_drag_end ( GtkWidget widget,
GdkDragContext *  context,
gpointer  user_data 
)
static

◆ _on_drag_leave()

static void _on_drag_leave ( GtkWidget widget,
GdkDragContext *  dc,
guint  time,
gpointer  user_data 
)
static

◆ _on_drag_motion()

◆ _overexposed_quickbutton_clicked()

static void _overexposed_quickbutton_clicked ( GtkWidget w,
gpointer  user_data 
)
static

◆ _paint_all()

static void _paint_all ( cairo_t *  cri,
cairo_t *  cr,
cairo_surface_t *  image_surface 
)
static

Referenced by expose().

◆ _quickbutton_press_release()

static gboolean _quickbutton_press_release ( GtkWidget button,
GdkEventButton *  event,
GtkWidget popover 
)
static

end of toolbox

References _toolbar_show_popup(), FALSE, and TRUE.

Referenced by connect_button_press_release().

◆ _rawoverexposed_quickbutton_clicked()

static void _rawoverexposed_quickbutton_clicked ( GtkWidget w,
gpointer  user_data 
)
static

◆ _register_modules_drag_n_drop()

◆ _release_expose_source_caches()

◆ _release_locked_surface()

◆ _release_preview_fallback_surface()

◆ _render_iso12646()

static void _render_iso12646 ( cairo_t *  cr,
int  width,
int  height,
int  border 
)
static

◆ _render_main_locked_surface()

◆ _render_preview_fallback_surface()

static gboolean _render_preview_fallback_surface ( cairo_t *  cr)
static

References _darkroom_preview_fallback_surface, FALSE, and TRUE.

Referenced by expose().

◆ _scroll_on_focus()

gboolean _scroll_on_focus ( GdkEventScroll  event,
void data 
)

◆ _set_default_cursor()

static void _set_default_cursor ( dt_view_t self,
double  x,
double  y 
)
static

◆ _softproof_quickbutton_clicked()

◆ _switch_to_next_picture()

gboolean _switch_to_next_picture ( GtkAccelGroup *  accel_group,
GObject *  accelerable,
guint  keyval,
GdkModifierType  modifier,
gpointer  data 
)

◆ _switch_to_prev_picture()

gboolean _switch_to_prev_picture ( GtkAccelGroup *  accel_group,
GObject *  accelerable,
guint  keyval,
GdkModifierType  modifier,
gpointer  data 
)

◆ _toolbar_show_popup()

static gboolean _toolbar_show_popup ( gpointer  user_data)
static

◆ _unregister_modules_drag_n_drop()

◆ _update_softproof_gamut_checking()

◆ _view_darkroom_filmstrip_activate_callback()

static void _view_darkroom_filmstrip_activate_callback ( gpointer  instance,
int32_t  imgid,
gpointer  user_data 
)
static

References _dev_change_image(), and UNKNOWN_IMAGE.

Referenced by enter(), and leave().

◆ _write_snapshot_data()

static cairo_status_t _write_snapshot_data ( void closure,
const unsigned char *  data,
unsigned int  length 
)
static

Referenced by expose().

◆ button_pressed()

◆ button_released()

◆ cleanup()

◆ colorscheme_callback()

static void colorscheme_callback ( GtkWidget combo,
gpointer  user_data 
)
static

◆ configure()

◆ connect_button_press_release()

void connect_button_press_release ( GtkWidget w,
GtkWidget p 
)

References _quickbutton_press_release(), and p.

Referenced by gui_init().

◆ display_borders_callback()

static void display_borders_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ display_brightness_callback()

static void display_brightness_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ enter()

◆ expose()

void expose ( dt_view_t self,
cairo_t *  cri,
int32_t  width,
int32_t  height,
int32_t  pointerx,
int32_t  pointery 
)
Todo:
: draw picker in gui_post_expose() hook in libs/colorpicker.c – catch would be that live samples would appear over guides, softproof/gamut text overlay would be hidden by picker

References _build_preview_fallback_surface(), _colormanage_ui_color(), _darkroom_gui_module_requests_uncropped_full_image(), _darkroom_locked_main_valid_for_zoom(), _darkroom_main_locked, _darkroom_pickers_draw(), _darkroom_prepare_image_surface(), _darkroom_preview_fallback_backbuf_hash, _darkroom_preview_fallback_valid(), _darkroom_preview_locked, _lock_pipe_surface(), _paint_all(), _release_preview_fallback_surface(), _render_main_locked_surface(), _render_preview_fallback_surface(), _write_snapshot_data(), dt_dev_pixelpipe_t::backbuf, darktable_t::bauhaus, dt_develop_t::border_size, dt_develop_t::color_picker, darktable_t::color_profiles, darktable, dt_view_t::data, darktable_t::develop, dt_develop_t::display_samples, dt_conf_get_int(), dt_control_queue_redraw_center(), DT_DEBUG_DEV, dt_dev_backbuf_get_hash(), dt_dev_clip_roi(), dt_dev_get_overlay_scale(), dt_dev_rescale_roi(), dt_get_times(), dt_guides_draw(), dt_hash(), dt_iop_color_picker_is_visible(), dt_lib_get_module(), dt_lib_gui_get_expanded(), dt_masks_events_post_expose(), dt_masks_get_visible_form(), DT_PIXEL_APPLY_DPI, DT_PIXELPIPE_CACHE_HASH_INVALID, dt_print(), DT_PROFILE_GAMUTCHECK, DT_PROFILE_NORMAL, dt_show_times_f(), dt_develop_t::enabled, dt_iop_module_t::enabled, FALSE, dt_develop_t::filename, darktable_t::gui, dt_develop_t::gui_module, darkroom_locked_surface_t::hash, height, dt_backbuf_t::height, dt_image_t::id, dt_develop_t::image_storage, dt_develop_t::image_surface, darkroom_expose_state_t::image_surface_has_main, darkroom_expose_state_t::image_surface_imgid, darkroom_expose_state_t::image_surface_width, IOP_FLAGS_GUIDES_SPECIAL_DRAW, dt_develop_t::iso_12646, darkroom_expose_state_t::main_hash, darkroom_expose_state_t::main_zoom_hash, dt_colorspaces_t::mode, O_BINARY, dt_bauhaus_t::pango_font_desc, dt_develop_t::pipe, dt_gui_gtk_t::ppd, dt_develop_t::preview_height, dt_develop_t::preview_pipe, dt_develop_t::preview_width, dt_develop_t::primary_sample, dt_develop_t::proxy, dt_develop_t::request, dt_develop_t::roi, dt_develop_t::samples, scaling, dt_develop_t::scaling, dt_develop_t::selected_sample, dt_develop_t::snapshot, darkroom_locked_surface_t::surface, TRUE, UNKNOWN_IMAGE, width, and dt_backbuf_t::width.

Referenced by mouse_moved().

◆ gui_init()

void gui_init ( dt_view_t self)

let's fill the encapsulating widgets

let's fill the encapsulating widgets

Todo:
can't use DT_BAUHAUS_COMBOBOX_NEW_FULL because of (unnecessary?) translation context

let's fill the encapsulating widgets

let's fill the encapsulating widgets

References _display_quickbutton_clicked(), _gamut_quickbutton_clicked(), _guides_quickbutton_clicked(), _guides_view_changed(), _iso_12646_quickbutton_clicked(), _lib_darkroom_get_layout(), _overexposed_quickbutton_clicked(), _rawoverexposed_quickbutton_clicked(), _softproof_quickbutton_clicked(), _switch_to_next_picture(), _switch_to_prev_picture(), _update_softproof_gamut_checking(), dt_gui_gtk_t::accels, darktable_t::bauhaus, dt_develop_t::border_size, dt_develop_t::button, darktable_t::color_profiles, dt_develop_t::colorscheme, colorscheme_callback(), connect_button_press_release(), dt_view_manager_t::darkroom, dt_accels_t::darkroom_accels, darktable, dt_view_t::data, dt_develop_t::display, display_borders_callback(), display_brightness_callback(), dt_accels_build_path(), dt_accels_new_darkroom_action, dt_accels_new_virtual_shortcut(), dt_bauhaus_combobox_add(), dt_bauhaus_combobox_new(), DT_BAUHAUS_COMBOBOX_NEW_FULL, dt_bauhaus_combobox_set(), dt_bauhaus_combobox_set_entries_ellipsis(), dt_bauhaus_slider_new_with_range(), dt_bauhaus_slider_set(), dt_bauhaus_slider_set_format(), dt_bauhaus_widget_set_label(), DT_COLORSPACE_FILE, dt_conf_get_int(), DT_DEBUG_CONTROL_SIGNAL_CONNECT, dt_free, dt_get_help_url(), dt_gui_add_help_link(), DT_GUI_MODULE, dt_guides_popover(), dt_loc_get_datadir(), dt_loc_get_user_config_dir(), DT_PIXEL_APPLY_DPI, DT_SIGNAL_VIEWMANAGER_VIEW_CHANGED, dt_ui_center(), DT_VIEW_DARKROOM, dt_view_manager_module_toolbox_add(), dtgtk_button_new(), dtgtk_cairo_paint_bulb(), dtgtk_cairo_paint_display(), dtgtk_cairo_paint_gamut_check(), dtgtk_cairo_paint_grid(), dtgtk_cairo_paint_overexposed(), dtgtk_cairo_paint_rawoverexposed(), dtgtk_cairo_paint_softproof(), dtgtk_togglebutton_new(), dt_colorspaces_color_profile_t::filename, dt_develop_t::floating_window, dt_develop_t::gamut_button, dt_view_manager_t::get_layout, darktable_t::gui, dt_view_manager_t::guides_popover, dt_view_manager_t::guides_toggle, dt_develop_t::iso_12646, dt_develop_t::lower, lower_callback(), dt_develop_t::mode, mode_callback(), dt_colorspaces_color_profile_t::name, dt_colorspaces_color_profile_t::out_pos, dt_develop_t::overexposed, PATH_MAX, dt_develop_t::profile, dt_colorspaces_t::profiles, dt_view_manager_t::proxy, dt_develop_t::rawoverexposed, rawoverexposed_colorscheme_callback(), rawoverexposed_mode_callback(), rawoverexposed_threshold_callback(), dt_develop_t::roi, darktable_t::signals, dt_develop_t::softproof_button, dt_colorspaces_t::softproof_filename, softproof_profile_callback(), dt_colorspaces_t::softproof_type, threshold, dt_develop_t::threshold, tooltip, TRUE, dt_colorspaces_color_profile_t::type, dt_gui_gtk_t::ui, dt_develop_t::upper, upper_callback(), and darktable_t::view_manager.

◆ init()

◆ key_pressed()

◆ leave()

void leave ( dt_view_t self)

References _darkroom_pending_focus_module, _release_expose_source_caches(), _unregister_modules_drag_n_drop(), _view_darkroom_filmstrip_activate_callback(), dt_gui_gtk_t::accels, dt_develop_t::allforms, dt_develop_t::alliop, dt_dev_pixelpipe_t::backbuf, dt_dev_pixelpipe_t::busy_mutex, dt_develop_t::color_picker, darktable, dt_view_t::data, darktable_t::develop, dt_develop_t::display_histogram, dt_accels_detach_scroll_handler(), dt_accels_disconnect_active_group(), dt_atomic_set_int(), dt_conf_set_string(), DT_DEBUG_CONTROL, DT_DEBUG_CONTROL_SIGNAL_DISCONNECT, dt_dev_backbuf_get_hash(), dt_dev_backbuf_set_hash(), dt_dev_history_free_history(), dt_dev_pixelpipe_cache_flush_clmem(), dt_dev_pixelpipe_cache_unref_hash(), dt_dev_pixelpipe_cleanup_nodes(), dt_free, dt_get_wtime(), dt_gui_throttle_cancel(), dt_iop_cleanup_module(), dt_iop_color_picker_cleanup(), dt_iop_color_picker_reset(), dt_iop_gui_cleanup_module(), dt_iop_is_hidden(), dt_masks_free_form(), dt_masks_gui_cleanup(), dt_print(), dt_pthread_mutex_lock(), dt_pthread_mutex_unlock(), dt_pthread_rwlock_unlock, dt_pthread_rwlock_wrlock, dt_selection_select_single(), dt_thumbtable_hide(), dt_thumbtable_refresh_thumbnail, dt_ui_center(), dt_view_active_images_get_first(), dt_view_active_images_reset(), dt_develop_t::exit, FALSE, dt_develop_t::floating_window, dt_develop_t::form_gui, dt_develop_t::forms, darktable_t::gui, dt_develop_t::gui_module, dt_develop_t::history_mutex, dt_image_t::id, dt_develop_t::image_storage, dt_develop_t::image_surface, dt_develop_t::iop, dt_develop_t::masks_mutex, dt_iop_module_t::op, dt_develop_t::output_histogram, dt_develop_t::overexposed, dt_develop_t::picker, dt_develop_t::pipe, dt_develop_t::pipelines_started, darktable_t::pixelpipe_cache, dt_develop_t::preview_pipe, dt_develop_t::profile, dt_develop_t::raw_histogram, dt_develop_t::rawoverexposed, darktable_t::selection, dt_dev_pixelpipe_t::shutdown, darktable_t::signals, dt_ui_t::thumbtable_filmstrip, dt_ui_t::thumbtable_lighttable, TRUE, dt_gui_gtk_t::ui, dt_develop_t::virtual_pipe, and void().

Referenced by _event_dnd_received(), and _name_editing_done().

◆ lower_callback()

static void lower_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ mode_callback()

static void mode_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ mouse_enter()

◆ mouse_in_actionarea()

static gboolean mouse_in_actionarea ( dt_view_t self,
double  x,
double  y 
)
static

◆ mouse_in_imagearea()

◆ mouse_leave()

◆ mouse_moved()

◆ name()

const char * name ( const dt_view_t self)

◆ rawoverexposed_colorscheme_callback()

static void rawoverexposed_colorscheme_callback ( GtkWidget combo,
gpointer  user_data 
)
static

◆ rawoverexposed_mode_callback()

static void rawoverexposed_mode_callback ( GtkWidget combo,
gpointer  user_data 
)
static

◆ rawoverexposed_threshold_callback()

static void rawoverexposed_threshold_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ reset()

◆ scrolled()

◆ softproof_profile_callback()

◆ try_enter()

◆ upper_callback()

static void upper_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ view()

uint32_t view ( const dt_view_t self)

References DT_VIEW_DARKROOM.

Referenced by _active_modules_popup(), _add_selected_metadata(), _add_tag_button_clicked(), _apply_smudge_stroke_mode(), _attached_key_pressed(), _blendop_masks_all_rename_callback(), _brush_runtime_view_from_state(), _changes_tooltip_callback(), _click_on_metadata_list(), _click_on_view(), _click_on_view_attached(), _click_on_view_dictionary(), _current_view_cb(), _detach_selected_tag(), _dictionary_key_pressed(), _discarded_files_popup(), _dt_ctl_switch_mode_to_by_view(), _ensure_widget_cache(), _estimate_alpha_noise_gain(), _event_dnd_begin(), _init_treeview(), _menuitem_preferences(), _needs_recompute(), _pop_menu_dictionary_change_path(), _pop_menu_dictionary_create_tag(), _pop_menu_dictionary_delete_node(), _pop_menu_dictionary_delete_tag(), _pop_menu_dictionary_edit_tag(), _pop_menu_dictionary_set_as_tag(), _pop_menu_view(), _prepare_analytic_pixel_context(), _prepare_blur_context(), _preview_button_press(), _sample_alpha_noise_raw(), _sample_tooltip_callback(), _select_next_user_attached_tag(), _select_previous_user_attached_tag(), _show_iter_on_view(), _show_keyword_on_view(), _show_tag_on_view(), _switch_to_next_picture(), _switch_to_prev_picture(), _unselect_all_in_view(), _update_attached_count(), append_views(), available_in_lighttable_callback(), dt_ctl_switch_mode_to_by_view(), dt_drawlayer_brush_rasterize(), dt_drawlayer_compute_view_patch(), dt_lib_export_metadata_configuration_dialog(), dt_lib_init_module(), dt_lib_is_visible_in_view(), dt_lib_load_module(), dt_view_manager_gui_init(), dt_view_unload_module(), entry_activated(), gui_init(), gui_init(), row_activated_with_event(), and views_member().

Variable Documentation

◆ _darkroom_main_locked

darkroom_locked_surface_t _darkroom_main_locked = { .hash = (uint64_t)-1 }
static

◆ _darkroom_pending_focus_module

dt_iop_module_t* _darkroom_pending_focus_module = NULL
static

◆ _darkroom_pending_imgid

int32_t _darkroom_pending_imgid = UNKNOWN_IMAGE
static

Referenced by cleanup(), enter(), and try_enter().

◆ _darkroom_preview_fallback_backbuf_hash

uint64_t _darkroom_preview_fallback_backbuf_hash = 0
static

◆ _darkroom_preview_fallback_height

int _darkroom_preview_fallback_height = 0
static

◆ _darkroom_preview_fallback_imgid

◆ _darkroom_preview_fallback_surface

cairo_surface_t* _darkroom_preview_fallback_surface = NULL
static

◆ _darkroom_preview_fallback_width

int _darkroom_preview_fallback_width = 0
static

◆ _darkroom_preview_fallback_zoom_hash

uint64_t _darkroom_preview_fallback_zoom_hash = 0
static

◆ _darkroom_preview_locked

darkroom_locked_surface_t _darkroom_preview_locked = { .hash = (uint64_t)-1 }
static

◆ _iop_n_targets_internal

const guint _iop_n_targets_internal = G_N_ELEMENTS(_iop_target_list_internal)
static

◆ _iop_target_list_internal

const GtkTargetEntry _iop_target_list_internal[] = { { "iop", GTK_TARGET_SAME_WIDGET, DND_TARGET_IOP } }
static

drag and drop module list

Referenced by _register_modules_drag_n_drop().