![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "develop/dev_viewport.h"#include "develop/dev_roi_request.h"#include "develop/develop.h"#include <string.h>
Include dependency graph for dev_viewport.c:Go to the source code of this file.
|
inlinestatic |
Definition at line 31 of file dev_viewport.c.
References dt_atomic_get_uint64(), dt_atomic_set_uint64(), dt_dev_viewport_t::generation, and dt_dev_viewport_t::state.
Referenced by dt_dev_viewport_reset(), dt_dev_viewport_set_border(), dt_dev_viewport_set_box(), dt_dev_viewport_set_center(), dt_dev_viewport_set_scaling(), and dt_dev_viewport_set_widget_size().
| int32_t dt_dev_viewport_border_size | ( | const dt_develop_t * | dev | ) |
Definition at line 100 of file dev_viewport.c.
References dt_dev_viewport_state_t::border_size, and dt_dev_viewport_get().
Referenced by dt_dev_clip_roi(), dt_dev_get_image_box_in_widget(), dt_dev_snapshot_draw(), dt_dev_toolbox_apply_iso_12646_size(), dt_drawlayer_compute_view_patch(), dt_focus_draw_clusters(), expose(), and expose().
| int32_t dt_dev_viewport_box_height | ( | const dt_develop_t * | dev | ) |
Definition at line 97 of file dev_viewport.c.
References dt_dev_viewport_state_t::box_height, and dt_dev_viewport_get().
Referenced by _compute_main_roi(), _darkroom_pipeline_inputs_ready(), _start_new_shape(), dt_dev_check_zoom_pos_bounds(), dt_dev_configure_real(), dt_dev_get_natural_scale(), and dt_dev_get_zoom_scale().
| int32_t dt_dev_viewport_box_width | ( | const dt_develop_t * | dev | ) |
Definition at line 96 of file dev_viewport.c.
References dt_dev_viewport_state_t::box_width, and dt_dev_viewport_get().
Referenced by _compute_main_roi(), _darkroom_pipeline_inputs_ready(), _start_new_shape(), dt_dev_check_zoom_pos_bounds(), dt_dev_configure_real(), dt_dev_get_natural_scale(), and dt_dev_get_zoom_scale().
| float dt_dev_viewport_center_x | ( | const dt_develop_t * | dev | ) |
Definition at line 94 of file dev_viewport.c.
References dt_dev_viewport_state_t::center_x, and dt_dev_viewport_get().
Referenced by _build_preview_fallback_surface(), _compute_main_roi(), _darkroom_edge_pan_apply(), _dev_translate_roi(), _draw_preview_fallback(), _ensure_widget_cache(), _fill_runtime_inputs(), _lib_navigation_draw_callback(), dt_dev_coordinates_image_norm_to_widget(), dt_dev_coordinates_widget_to_image_norm(), gui_init(), key_pressed(), and mouse_moved().
| float dt_dev_viewport_center_y | ( | const dt_develop_t * | dev | ) |
Definition at line 95 of file dev_viewport.c.
References dt_dev_viewport_state_t::center_y, and dt_dev_viewport_get().
Referenced by _build_preview_fallback_surface(), _compute_main_roi(), _darkroom_edge_pan_apply(), _dev_translate_roi(), _draw_preview_fallback(), _ensure_widget_cache(), _fill_runtime_inputs(), _lib_navigation_draw_callback(), dt_dev_coordinates_image_norm_to_widget(), dt_dev_coordinates_widget_to_image_norm(), gui_init(), key_pressed(), and mouse_moved().
| gboolean dt_dev_viewport_configured | ( | const dt_develop_t * | dev | ) |
Definition at line 101 of file dev_viewport.c.
References dt_dev_viewport_state_t::configured, and dt_dev_viewport_get().
Referenced by dt_dev_get_natural_scale(), and dt_dev_get_thumbnail_size().
| gboolean dt_dev_viewport_exists | ( | const dt_develop_t * | dev | ) |
Definition at line 66 of file dev_viewport.c.
References IS_NULL_PTR, and dt_develop_t::viewport.
Referenced by dt_dev_viewport_get(), dt_dev_viewport_reset(), dt_dev_viewport_set_border(), dt_dev_viewport_set_box(), dt_dev_viewport_set_center(), dt_dev_viewport_set_scaling(), and dt_dev_viewport_set_widget_size().
| void dt_dev_viewport_free | ( | dt_dev_viewport_t * | viewport | ) |
| dt_dev_viewport_state_t dt_dev_viewport_get | ( | const dt_develop_t * | dev | ) |
Definition at line 71 of file dev_viewport.c.
References dt_atomic_get_uint64(), dt_dev_viewport_exists(), dt_dev_viewport_neutral(), dt_dev_viewport_t::generation, dt_dev_viewport_t::state, state, and dt_develop_t::viewport.
Referenced by _change_scaling(), _darkroom_zoom_hash(), dt_dev_clamp_viewport_center(), dt_dev_roi_request_publish(), dt_dev_viewport_border_size(), dt_dev_viewport_box_height(), dt_dev_viewport_box_width(), dt_dev_viewport_center_x(), dt_dev_viewport_center_y(), dt_dev_viewport_configured(), dt_dev_viewport_reset(), dt_dev_viewport_scaling(), dt_dev_viewport_set_border(), dt_dev_viewport_set_box(), dt_dev_viewport_set_center(), dt_dev_viewport_set_scaling(), dt_dev_viewport_set_widget_size(), dt_dev_viewport_widget_height(), and dt_dev_viewport_widget_width().
| dt_dev_viewport_state_t dt_dev_viewport_neutral | ( | void | ) |
The neutral state a dev without a viewport reads as.
Definition at line 38 of file dev_viewport.c.
Referenced by dt_dev_viewport_get(), dt_dev_viewport_new(), and dt_dev_viewport_reset().
| dt_dev_viewport_t * dt_dev_viewport_new | ( | void | ) |
Allocate/free. dt_dev_init() creates one only for a gui_attached dev.
Definition at line 51 of file dev_viewport.c.
References dt_atomic_set_uint64(), dt_dev_viewport_neutral(), dt_dev_viewport_t::generation, IS_NULL_PTR, L, and dt_dev_viewport_t::state.
Referenced by dt_dev_init().
| void dt_dev_viewport_reset | ( | struct dt_develop_t * | dev | ) |
Reset to the neutral zoom and centre, without touching the allocation or border.
Definition at line 180 of file dev_viewport.c.
References _publish(), dt_dev_viewport_state_t::center_x, dt_dev_viewport_state_t::center_y, dt_dev_roi_request_publish(), dt_dev_viewport_exists(), dt_dev_viewport_get(), dt_dev_viewport_neutral(), neutral, dt_dev_viewport_state_t::scaling, and dt_develop_t::viewport.
Referenced by dt_dev_reset_roi().
| float dt_dev_viewport_scaling | ( | const dt_develop_t * | dev | ) |
Definition at line 93 of file dev_viewport.c.
References dt_dev_viewport_get(), and dt_dev_viewport_state_t::scaling.
Referenced by _build_preview_fallback_surface(), _center_view_free_zoom(), _change_scaling(), _compute_main_roi(), _darkroom_edge_pan_update_state(), _draw_preview_fallback(), _ensure_widget_cache(), _fill_runtime_inputs(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), _zoom_preset_change(), button_pressed(), button_pressed(), dt_dev_check_zoom_pos_bounds(), dt_dev_check_zoom_scale_bounds(), dt_dev_get_fit_scale(), dt_dev_get_image_box_in_widget(), dt_dev_get_zoom_level(), gui_init(), gui_post_expose(), gui_post_expose(), key_pressed(), mouse_moved(), and mouse_moved().
| gboolean dt_dev_viewport_set_border | ( | struct dt_develop_t * | dev, |
| int32_t | border_size | ||
| ) |
Border policy (ISO 12646 toggle, preference), in logical pixels.
Definition at line 119 of file dev_viewport.c.
References _publish(), dt_dev_viewport_state_t::border_size, dt_dev_roi_request_publish(), dt_dev_viewport_exists(), dt_dev_viewport_get(), FALSE, TRUE, and dt_develop_t::viewport.
Referenced by dt_dev_toolbox_apply_iso_12646_size(), and gui_init().
| gboolean dt_dev_viewport_set_box | ( | struct dt_develop_t * | dev, |
| int32_t | box_width, | ||
| int32_t | box_height | ||
| ) |
The raster-pixel box an image backbuffer covers, and the "a size has been handed in" flag.
Takes the box already converted to raster pixels, because that is what its one caller computes today (dt_dev_configure_real, through dt_dev_convert_roi) and because the border subtraction that precedes it lives at ITS callers (views/dev_toolbox.c). Folding both into this object is the right end state and a behaviour change to argue separately; this tranche relocates state, it does not redistribute arithmetic.
Definition at line 133 of file dev_viewport.c.
References _publish(), dt_dev_viewport_state_t::box_height, dt_dev_viewport_state_t::box_width, dt_dev_viewport_state_t::configured, dt_dev_roi_request_publish(), dt_dev_viewport_exists(), dt_dev_viewport_get(), FALSE, TRUE, and dt_develop_t::viewport.
Referenced by dt_dev_configure_real().
| gboolean dt_dev_viewport_set_center | ( | struct dt_develop_t * | dev, |
| float | center_x, | ||
| float | center_y | ||
| ) |
Absolute pan, in normalized image coordinates. The caller clamps: the clamp needs the processed size and the zoom level, which belong to the ROI request, not here.
Definition at line 149 of file dev_viewport.c.
References _publish(), dt_dev_viewport_state_t::center_x, dt_dev_viewport_state_t::center_y, dt_dev_roi_request_publish(), dt_dev_viewport_exists(), dt_dev_viewport_get(), FALSE, TRUE, and dt_develop_t::viewport.
Referenced by _change_scaling(), _darkroom_edge_pan_apply(), _lib_navigation_draw_callback(), _lib_navigation_set_position(), dt_dev_clamp_viewport_center(), dt_masks_center_view_on_form(), key_pressed(), and mouse_moved().
| gboolean dt_dev_viewport_set_scaling | ( | struct dt_develop_t * | dev, |
| float | scaling | ||
| ) |
User zoom, applied on top of the natural (fit-to-box) scale. Clamped by the caller, for the same reason as the centre.
Definition at line 166 of file dev_viewport.c.
References _publish(), dt_dev_roi_request_publish(), dt_dev_viewport_exists(), dt_dev_viewport_get(), FALSE, dt_dev_viewport_state_t::scaling, scaling, TRUE, and dt_develop_t::viewport.
Referenced by _change_scaling(), _zoom_preset_change(), and dt_dev_check_zoom_scale_bounds().
| gboolean dt_dev_viewport_set_widget_size | ( | struct dt_develop_t * | dev, |
| int32_t | widget_width, | ||
| int32_t | widget_height | ||
| ) |
The Gtk allocation of the darkroom centre widget, in logical pixels.
Definition at line 103 of file dev_viewport.c.
References _publish(), dt_dev_roi_request_publish(), dt_dev_viewport_exists(), dt_dev_viewport_get(), FALSE, TRUE, dt_develop_t::viewport, dt_dev_viewport_state_t::widget_height, and dt_dev_viewport_state_t::widget_width.
Referenced by _studio_configure_dev_roi(), and configure().
| int32_t dt_dev_viewport_widget_height | ( | const dt_develop_t * | dev | ) |
Definition at line 99 of file dev_viewport.c.
References dt_dev_viewport_get(), and dt_dev_viewport_state_t::widget_height.
Referenced by dt_dev_coordinates_image_norm_to_widget(), dt_dev_coordinates_widget_to_image_norm(), dt_dev_get_widget_center(), dt_dev_toolbox_apply_iso_12646_size(), and dt_drawlayer_compute_view_patch().
| int32_t dt_dev_viewport_widget_width | ( | const dt_develop_t * | dev | ) |
Definition at line 98 of file dev_viewport.c.
References dt_dev_viewport_get(), and dt_dev_viewport_state_t::widget_width.
Referenced by dt_dev_coordinates_image_norm_to_widget(), dt_dev_coordinates_widget_to_image_norm(), dt_dev_get_widget_center(), dt_dev_toolbox_apply_iso_12646_size(), and dt_drawlayer_compute_view_patch().