![]() |
Ansel 0.0
A darktable fork - bloat + design vision
|
#include "bauhaus/bauhaus.h"#include "common/colorspaces_inline_conversions.h"#include "common/darktable.h"#include "common/math.h"#include "common/opencl.h"#include "control/control.h"#include "develop/develop.h"#include "develop/imageop_math.h"#include "develop/imageop_gui.h"#include "dtgtk/button.h"#include "gui/gtk.h"#include "gui/presets.h"#include "gui/color_picker_proxy.h"#include "iop/iop_api.h"#include <assert.h>#include <stdlib.h>#include <string.h>
Include dependency graph for profile_gamma.c:Go to the source code of this file.
Data Structures | |
| struct | dt_iop_profilegamma_params_t |
| struct | dt_iop_profilegamma_gui_data_t |
| struct | dt_iop_profilegamma_data_t |
Typedefs | |
| typedef enum dt_iop_profilegamma_mode_t | dt_iop_profilegamma_mode_t |
| typedef struct dt_iop_profilegamma_params_t | dt_iop_profilegamma_params_t |
| typedef struct dt_iop_profilegamma_gui_data_t | dt_iop_profilegamma_gui_data_t |
| typedef struct dt_iop_profilegamma_data_t | dt_iop_profilegamma_data_t |
Enumerations | |
| enum | dt_iop_profilegamma_mode_t { PROFILEGAMMA_LOG = 0 , PROFILEGAMMA_GAMMA = 1 } |
| typedef struct dt_iop_profilegamma_data_t dt_iop_profilegamma_data_t |
| typedef struct dt_iop_profilegamma_gui_data_t dt_iop_profilegamma_gui_data_t |
| typedef enum dt_iop_profilegamma_mode_t dt_iop_profilegamma_mode_t |
| typedef struct dt_iop_profilegamma_params_t dt_iop_profilegamma_params_t |
| Enumerator | |
|---|---|
| PROFILEGAMMA_LOG | |
| PROFILEGAMMA_GAMMA | |
Definition at line 73 of file profile_gamma.c.
|
static |
Definition at line 299 of file profile_gamma.c.
References darktable, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, g, darktable_t::gui, dt_iop_module_t::gui_data, Log2Thres(), noise, p, dt_iop_module_t::params, dt_iop_module_t::picked_color_min, dt_gui_gtk_t::reset, and TRUE.
Referenced by color_picker_apply().
|
static |
Definition at line 321 of file profile_gamma.c.
References darktable, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, g, darktable_t::gui, dt_iop_module_t::gui_data, Log2Thres(), noise, p, dt_iop_module_t::params, dt_iop_module_t::picked_color_max, dt_gui_gtk_t::reset, and TRUE.
Referenced by color_picker_apply().
|
static |
Definition at line 283 of file profile_gamma.c.
References darktable, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, g, darktable_t::gui, dt_iop_module_t::gui_data, p, dt_iop_module_t::params, dt_iop_module_t::picked_color, dt_gui_gtk_t::reset, and TRUE.
Referenced by color_picker_apply().
|
static |
Definition at line 346 of file profile_gamma.c.
References darktable, darktable_t::develop, dt_bauhaus_slider_set(), dt_dev_add_history_item, g, darktable_t::gui, dt_iop_module_t::gui_data, Log2Thres(), noise, p, dt_iop_module_t::params, dt_iop_module_t::picked_color, dt_iop_module_t::picked_color_max, dt_iop_module_t::picked_color_min, dt_gui_gtk_t::reset, and TRUE.
Referenced by color_picker_apply().
| void cleanup_pipe | ( | dt_iop_module_t * | self, |
| dt_dev_pixelpipe_t * | pipe, | ||
| dt_dev_pixelpipe_iop_t * | piece | ||
| ) |
Definition at line 511 of file profile_gamma.c.
References dt_dev_pixelpipe_iop_t::data, and dt_free_align.
| void color_picker_apply | ( | dt_iop_module_t * | self, |
| GtkWidget * | picker, | ||
| dt_dev_pixelpipe_t * | pipe, | ||
| dt_dev_pixelpipe_iop_t * | piece | ||
| ) |
Definition at line 417 of file profile_gamma.c.
References apply_auto_black(), apply_auto_dynamic_range(), apply_auto_grey(), apply_autotune(), g, and dt_iop_module_t::gui_data.
| void commit_params | ( | dt_iop_module_t * | self, |
| dt_iop_params_t * | p1, | ||
| dt_dev_pixelpipe_t * | pipe, | ||
| dt_dev_pixelpipe_iop_t * | piece | ||
| ) |
Definition at line 432 of file profile_gamma.c.
References __OMP_PARALLEL_FOR__, d, dt_dev_pixelpipe_iop_t::data, dt_iop_estimate_exp(), g, k, linear, p, and x.
| int default_colorspace | ( | dt_iop_module_t * | self, |
| dt_dev_pixelpipe_t * | pipe, | ||
| const dt_dev_pixelpipe_iop_t * | piece | ||
| ) |
Definition at line 141 of file profile_gamma.c.
References IOP_CS_RGB.
| int default_group | ( | ) |
Definition at line 130 of file profile_gamma.c.
References IOP_GROUP_TECHNICAL.
| const char ** description | ( | struct dt_iop_module_t * | self | ) |
Definition at line 121 of file profile_gamma.c.
References dt_iop_set_description().
| int flags | ( | ) |
Definition at line 135 of file profile_gamma.c.
References IOP_FLAGS_ALLOW_TILING, IOP_FLAGS_INCLUDE_IN_STYLES, IOP_FLAGS_ONE_INSTANCE, and IOP_FLAGS_SUPPORTS_BLENDING.
| void gui_changed | ( | dt_iop_module_t * | self, |
| GtkWidget * | w, | ||
| void * | previous | ||
| ) |
Definition at line 380 of file profile_gamma.c.
References darktable, dt_bauhaus_slider_set(), g, darktable_t::gui, dt_iop_module_t::gui_data, p, dt_iop_module_t::params, PROFILEGAMMA_LOG, and dt_gui_gtk_t::reset.
Referenced by gui_update().
| void gui_init | ( | dt_iop_module_t * | self | ) |
Definition at line 531 of file profile_gamma.c.
References darktable_t::bauhaus, darktable, dt_bauhaus_combobox_from_params(), dt_bauhaus_combobox_new(), dt_bauhaus_slider_from_params(), dt_bauhaus_slider_set_digits(), dt_bauhaus_slider_set_format(), dt_bauhaus_slider_set_soft_max(), dt_bauhaus_slider_set_soft_range(), dt_bauhaus_widget_set_label(), DT_COLOR_PICKER_AREA, dt_color_picker_new(), DT_GUI_BOX_SPACING, DT_GUI_MODULE, dt_ui_section_label_new(), FALSE, g, IOP_GUI_ALLOC, TRUE, and dt_iop_module_t::widget.
| void gui_reset | ( | dt_iop_module_t * | self | ) |
Definition at line 517 of file profile_gamma.c.
References dt_iop_color_picker_reset(), and TRUE.
| void gui_update | ( | dt_iop_module_t * | self | ) |
Refresh GUI controls from current params and configuration.
Definition at line 522 of file profile_gamma.c.
References dt_iop_color_picker_reset(), g, gui_changed(), dt_iop_module_t::gui_data, and TRUE.
| void init_pipe | ( | dt_iop_module_t * | self, |
| dt_dev_pixelpipe_t * | pipe, | ||
| dt_dev_pixelpipe_iop_t * | piece | ||
| ) |
Definition at line 505 of file profile_gamma.c.
References dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::data_size, and dt_calloc_align().
| void init_presets | ( | dt_iop_module_so_t * | self | ) |
Definition at line 146 of file profile_gamma.c.
References DEVELOP_BLEND_CS_RGB_DISPLAY, dt_gui_presets_add_generic(), dt_iop_module_so_t::op, p, and PROFILEGAMMA_LOG.
| int legacy_params | ( | dt_iop_module_t * | self, |
| const void *const | old_params, | ||
| const int | old_version, | ||
| void * | new_params, | ||
| const int | new_version | ||
| ) |
Definition at line 187 of file profile_gamma.c.
References d, dt_iop_module_t::default_params, linear, n, and PROFILEGAMMA_GAMMA.
| const char * name | ( | ) |
Definition at line 116 of file profile_gamma.c.
| __DT_CLONE_TARGETS__ int process | ( | dt_iop_module_t * | self, |
| const dt_dev_pixelpipe_t * | pipe, | ||
| const dt_dev_pixelpipe_iop_t * | piece, | ||
| const void *const | ivoid, | ||
| void *const | ovoid | ||
| ) |
The log2(x) -> -INF when x -> 0 thus very low values (noise) will get even lower, resulting in noise negative amplification, which leads to pepper noise in shadows. To avoid that, we need to clip values that are noise for sure. Using 16 bits RAW data, the black value (known by rawspeed for every manufacturer) could be used as a threshold. However, at this point of the pixelpipe, the RAW levels have already been corrected and everything can happen with black levels in the exposure module. So we define the threshold as the first non-null 16 bit integer
Definition at line 213 of file profile_gamma.c.
References __OMP_FOR_SIMD__, __OMP_PARALLEL_FOR__, ch, dt_iop_buffer_dsc_t::channels, dt_dev_pixelpipe_iop_t::data, dt_dev_pixelpipe_iop_t::dsc_in, DT_DEV_PIXELPIPE_DISPLAY_MASK, dt_iop_eval_exp(), dt_iop_profilegamma_data_t::dynamic_range, fastlog2(), dt_iop_profilegamma_data_t::grey_point, dt_iop_roi_t::height, i, k, dt_dev_pixelpipe_t::mask_display, dt_iop_profilegamma_data_t::mode, noise, out, ovoid, PROFILEGAMMA_GAMMA, PROFILEGAMMA_LOG, dt_dev_pixelpipe_iop_t::roi_out, dt_iop_profilegamma_data_t::shadows_range, dt_iop_profilegamma_data_t::table, dt_iop_profilegamma_data_t::unbounded_coeffs, and dt_iop_roi_t::width.