Ansel 0.0
A darktable fork - bloat + design vision
Loading...
Searching...
No Matches
basecurve.c File Reference
#include "bauhaus/bauhaus.h"
#include "common/colorspaces_inline_conversions.h"
#include "common/debug.h"
#include "common/math.h"
#include "common/opencl.h"
#include "common/rgb_norms.h"
#include "control/control.h"
#include "develop/develop.h"
#include "develop/imageop.h"
#include "develop/imageop_math.h"
#include "develop/imageop_gui.h"
#include "develop/tiling.h"
#include "dtgtk/drawingarea.h"
#include "gui/draw.h"
#include "gui/gtk.h"
#include "gui/presets.h"
#include "iop/iop_api.h"
#include <assert.h>
#include <gtk/gtk.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
+ Include dependency graph for basecurve.c:

Data Structures

struct  dt_iop_basecurve_node_t
 
struct  dt_iop_basecurve_params_t
 
struct  dt_iop_basecurve_params5_t
 
struct  dt_iop_basecurve_params3_t
 
struct  dt_iop_basecurve_params2_t
 
struct  dt_iop_basecurve_params1_t
 
struct  dt_iop_basecurve_gui_data_t
 
struct  basecurve_preset_t
 
struct  dt_iop_basecurve_data_t
 

Macros

#define DT_GUI_CURVE_EDITOR_INSET   DT_PIXEL_APPLY_DPI(5)
 
#define DT_GUI_CURVE_INFL   .3f
 
#define DT_IOP_TONECURVE_RES   256
 
#define MAXNODES   20
 
#define m   MONOTONE_HERMITE
 
#define BASECURVE_DEFAULT_STEP   (0.001f)
 

Typedefs

typedef struct dt_iop_basecurve_node_t dt_iop_basecurve_node_t
 
typedef struct dt_iop_basecurve_params_t dt_iop_basecurve_params_t
 
typedef struct dt_iop_basecurve_params5_t dt_iop_basecurve_params5_t
 
typedef struct dt_iop_basecurve_params3_t dt_iop_basecurve_params3_t
 
typedef dt_iop_basecurve_params3_t dt_iop_basecurve_params4_t
 
typedef struct dt_iop_basecurve_params2_t dt_iop_basecurve_params2_t
 
typedef struct dt_iop_basecurve_params1_t dt_iop_basecurve_params1_t
 
typedef struct dt_iop_basecurve_gui_data_t dt_iop_basecurve_gui_data_t
 
typedef struct basecurve_preset_t basecurve_preset_t
 
typedef struct dt_iop_basecurve_data_t dt_iop_basecurve_data_t
 

Functions

int legacy_params (dt_iop_module_t *self, const void *const old_params, const int old_version, void *new_params, const int new_version)
 
const char * name ()
 
const char ** description (struct dt_iop_module_t *self)
 
int default_group ()
 
int flags ()
 
int default_colorspace (dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, const dt_dev_pixelpipe_iop_t *piece)
 
static void set_presets (dt_iop_module_so_t *self, const basecurve_preset_t *presets, int count, gboolean camera)
 
void init_presets (dt_iop_module_so_t *self)
 
static float exposure_increment (float stops, int e, float fusion, float bias)
 
void tiling_callback (struct dt_iop_module_t *self, const struct dt_dev_pixelpipe_t *pipe, const struct dt_dev_pixelpipe_iop_t *piece, struct dt_develop_tiling_t *tiling)
 
static void apply_legacy_curve (const float *const in, float *const out, const int width, const int height, const float mul, const float *const table, const float *const unbounded_coeffs)
 
static void apply_curve (const float *const in, float *const out, const int width, const int height, const int preserve_colors, const float mul, const float *const table, const float *const unbounded_coeffs, const dt_iop_order_iccprofile_info_t *const work_profile)
 
static void compute_features (float *const col, const int wd, const int ht)
 
static int gauss_blur (const float *const input, float *const output, const size_t wd, const size_t ht)
 
static int gauss_expand (const float *const input, float *const fine, const size_t wd, const size_t ht)
 
static int gauss_reduce (const float *const input, float *const coarse, float *const detail, const size_t wd, const size_t ht)
 
int process_fusion (struct dt_iop_module_t *self, const dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
 
void process_lut (struct dt_iop_module_t *self, const dt_dev_pixelpipe_iop_t *piece, const void *const ivoid, void *const ovoid, const dt_iop_roi_t *const roi_in, const dt_iop_roi_t *const roi_out)
 
int process (struct 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)
 
void commit_params (struct dt_iop_module_t *self, dt_iop_params_t *p1, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void init_pipe (struct dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void cleanup_pipe (struct dt_iop_module_t *self, dt_dev_pixelpipe_t *pipe, dt_dev_pixelpipe_iop_t *piece)
 
void gui_update (struct dt_iop_module_t *self)
 
static float eval_grey (float x)
 
void init (dt_iop_module_t *module)
 
static gboolean dt_iop_basecurve_enter_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 
static gboolean dt_iop_basecurve_leave_notify (GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
 
static float to_log (const float x, const float base)
 
static float to_lin (const float x, const float base)
 
static gboolean dt_iop_basecurve_draw (GtkWidget *widget, cairo_t *crf, gpointer user_data)
 
static int _add_node (dt_iop_basecurve_node_t *basecurve, int *nodes, float x, float y)
 
static void dt_iop_basecurve_sanity_check (dt_iop_module_t *self, GtkWidget *widget)
 
static gboolean _move_point_internal (dt_iop_module_t *self, GtkWidget *widget, float dx, float dy, guint state)
 
static gboolean dt_iop_basecurve_motion_notify (GtkWidget *widget, GdkEventMotion *event, gpointer user_data)
 
static gboolean dt_iop_basecurve_button_press (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
 
static gboolean area_resized (GtkWidget *widget, GdkEvent *event, gpointer user_data)
 
static gboolean _scrolled (GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
 
static gboolean dt_iop_basecurve_key_press (GtkWidget *widget, GdkEventKey *event, gpointer user_data)
 
void gui_changed (dt_iop_module_t *self, GtkWidget *w, void *previous)
 
static void logbase_callback (GtkWidget *slider, gpointer user_data)
 
void gui_init (struct dt_iop_module_t *self)
 
void gui_cleanup (struct dt_iop_module_t *self)
 

Variables

static const char neutral [] = N_("neutral")
 
static const char canon_eos [] = N_("canon eos like")
 
static const char canon_eos_alt [] = N_("canon eos like alternate")
 
static const char nikon [] = N_("nikon like")
 
static const char nikon_alt [] = N_("nikon like alternate")
 
static const char sony_alpha [] = N_("sony alpha like")
 
static const char pentax [] = N_("pentax like")
 
static const char ricoh [] = N_("ricoh like")
 
static const char olympus [] = N_("olympus like")
 
static const char olympus_alt [] = N_("olympus like alternate")
 
static const char panasonic [] = N_("panasonic like")
 
static const char leica [] = N_("leica like")
 
static const char kodak_easyshare [] = N_("kodak easyshare like")
 
static const char konica_minolta [] = N_("konica minolta like")
 
static const char samsung [] = N_("samsung like")
 
static const char fujifilm [] = N_("fujifilm like")
 
static const char nokia [] = N_("nokia like")
 
static const basecurve_preset_t basecurve_camera_presets []
 
static const int basecurve_camera_presets_cnt = sizeof(basecurve_camera_presets) / sizeof(basecurve_preset_t)
 
static const basecurve_preset_t basecurve_presets []
 
static const int basecurve_presets_cnt = sizeof(basecurve_presets) / sizeof(basecurve_preset_t)
 

Macro Definition Documentation

◆ BASECURVE_DEFAULT_STEP

#define BASECURVE_DEFAULT_STEP   (0.001f)

◆ DT_GUI_CURVE_EDITOR_INSET

#define DT_GUI_CURVE_EDITOR_INSET   DT_PIXEL_APPLY_DPI(5)

◆ DT_GUI_CURVE_INFL

#define DT_GUI_CURVE_INFL   .3f

◆ DT_IOP_TONECURVE_RES

#define DT_IOP_TONECURVE_RES   256

◆ m

const float m   MONOTONE_HERMITE

Referenced by _apply_preferences(), _dfs_visit(), _display_default(), _focus_next_control(), _focus_previous_control(), _free_metadata_queue(), _get_current_configuration(), _get_metadata_per_index(), _iop_dim_all_but(), _lib_metadata_init_queue(), _lib_metadata_refill_grid(), _lib_metadata_setup_grid(), _lib_plugin_header_button_press(), _menuitem_preferences(), _metadata_add_metadata_to_list(), _metadata_remove_metadata_from_list(), _metadata_update_markup(), _metadata_update_tooltip(), _metadata_update_value(), _picker_max_chroma_for_m_hue(), _picker_project_opponent_to_display_rgb(), _polygon_get_mask_roi(), _remove_outliers(), _retouch_fill(), _set_printer(), _simplex(), _tree_format_form_usage_label(), alloc_move_to(), backtransform(), box_max_1d(), box_max_vert_16wide(), box_min_1d(), box_min_vert_16wide(), camera_menu_fill(), catmull_rom_set(), clamp(), clampnan(), commit_params(), create_lens_kernel(), create_motion_kernel(), dark_channel(), demosaic_ppg(), dsvd(), dt_bauhaus_update_module(), dt_bauhaus_widget_set_label(), dt_control_merge_hdr_process(), dt_dev_next_multi_priority_for_op(), dt_drawlayer_widgets_draw_picker(), dt_exif_xmp_attach_export(), dt_get_medium(), dt_imageio_dng_write_tiff_header(), dt_imageio_open_exr(), dt_imageio_open_rgbe(), dt_iop_colorreconstruct_bilateral_splat(), dt_iop_colorzones_get_params(), dt_iop_commit_blend_params(), dt_iop_get_module_by_instance_name(), dt_iop_get_module_by_op_priority(), dt_iop_gui_set_expanded(), dt_iop_is_first_instance(), dt_lib_init_module(), dt_lib_unload_module(), easter(), fit_curve(), gauss_make_triangular(), gauss_solve_triangular(), gui_reset(), ilogbp1(), inv_matrix(), Kahan_sum(), kth_smallest(), ldexpk(), lens_menu_fill(), LinEqSolve(), load_update_max_16wide(), load_update_min_16wide(), monotone_hermite_set(), mul_mat_vec_2(), process(), process(), process(), pseudo_solve(), pseudo_solve_gaussian(), ptr_array_find_sorted(), ptr_array_insert_sorted(), rcd_ppg_border(), rt_build_scaled_mask(), rt_copy_image_masked(), rt_copy_mask_to_alpha(), simplex(), smooth_path_linsys(), transform(), transition_map(), transpose_dot_matrix(), transpose_dot_matrix(), transpose_dot_vector(), transpose_dot_vector(), update_max_16wide(), update_min_16wide(), window_max(), window_min(), and xlog().

◆ MAXNODES

#define MAXNODES   20

Typedef Documentation

◆ basecurve_preset_t

◆ dt_iop_basecurve_data_t

◆ dt_iop_basecurve_gui_data_t

◆ dt_iop_basecurve_node_t

◆ dt_iop_basecurve_params1_t

◆ dt_iop_basecurve_params2_t

◆ dt_iop_basecurve_params3_t

◆ dt_iop_basecurve_params4_t

◆ dt_iop_basecurve_params5_t

◆ dt_iop_basecurve_params_t

Function Documentation

◆ _add_node()

static int _add_node ( dt_iop_basecurve_node_t basecurve,
int *  nodes,
float  x,
float  y 
)
inlinestatic

◆ _move_point_internal()

◆ _scrolled()

static gboolean _scrolled ( GtkWidget widget,
GdkEventScroll *  event,
gpointer  user_data 
)
static

◆ apply_curve()

static void apply_curve ( const float *const  in,
float *const  out,
const int  width,
const int  height,
const int  preserve_colors,
const float  mul,
const float *const  table,
const float *const  unbounded_coeffs,
const dt_iop_order_iccprofile_info_t *const  work_profile 
)
inlinestatic
Todo:
: Determine if we can get rid of the conditionals within this function in some way to improve performance.

References c, dt_iop_eval_exp(), dt_rgb_norm(), height, out, and width.

Referenced by process_fusion(), and process_lut().

◆ apply_legacy_curve()

static void apply_legacy_curve ( const float *const  in,
float *const  out,
const int  width,
const int  height,
const float  mul,
const float *const  table,
const float *const  unbounded_coeffs 
)
inlinestatic

References dt_iop_eval_exp(), f, height, i, out, and width.

Referenced by process_fusion(), and process_lut().

◆ area_resized()

static gboolean area_resized ( GtkWidget widget,
GdkEvent *  event,
gpointer  user_data 
)
static

References r, and TRUE.

Referenced by gui_init().

◆ cleanup_pipe()

void cleanup_pipe ( struct dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
dt_dev_pixelpipe_iop_t piece 
)

◆ commit_params()

◆ compute_features()

static void compute_features ( float *const  col,
const int  wd,
const int  ht 
)
inlinestatic

References c, dt_fast_expf(), MAX, max, MIN, min, v, and x.

Referenced by process_fusion().

◆ default_colorspace()

int default_colorspace ( dt_iop_module_t self,
dt_dev_pixelpipe_t pipe,
const dt_dev_pixelpipe_iop_t piece 
)

References IOP_CS_RGB.

◆ default_group()

int default_group ( )

References IOP_GROUP_TONES.

◆ description()

const char ** description ( struct dt_iop_module_t self)

◆ dt_iop_basecurve_button_press()

◆ dt_iop_basecurve_draw()

◆ dt_iop_basecurve_enter_notify()

static gboolean dt_iop_basecurve_enter_notify ( GtkWidget widget,
GdkEventCrossing *  event,
gpointer  user_data 
)
static

References TRUE.

Referenced by gui_init().

◆ dt_iop_basecurve_key_press()

static gboolean dt_iop_basecurve_key_press ( GtkWidget widget,
GdkEventKey *  event,
gpointer  user_data 
)
static

◆ dt_iop_basecurve_leave_notify()

static gboolean dt_iop_basecurve_leave_notify ( GtkWidget widget,
GdkEventCrossing *  event,
gpointer  user_data 
)
static

References TRUE.

Referenced by gui_init().

◆ dt_iop_basecurve_motion_notify()

static gboolean dt_iop_basecurve_motion_notify ( GtkWidget widget,
GdkEventMotion *  event,
gpointer  user_data 
)
static

◆ dt_iop_basecurve_sanity_check()

static void dt_iop_basecurve_sanity_check ( dt_iop_module_t self,
GtkWidget widget 
)
static

◆ eval_grey()

static float eval_grey ( float  x)
static

References x.

Referenced by logbase_callback().

◆ exposure_increment()

static float exposure_increment ( float  stops,
int  e,
float  fusion,
float  bias 
)
static

Referenced by process_fusion().

◆ flags()

◆ gauss_blur()

static int gauss_blur ( const float *const  input,
float *const  output,
const size_t  wd,
const size_t  ht 
)
inlinestatic

◆ gauss_expand()

static int gauss_expand ( const float *const  input,
float *const  fine,
const size_t  wd,
const size_t  ht 
)
inlinestatic

References c, gauss_blur(), and i.

Referenced by gauss_reduce(), and process_fusion().

◆ gauss_reduce()

static int gauss_reduce ( const float *const  input,
float *const  coarse,
float *const  detail,
const size_t  wd,
const size_t  ht 
)
inlinestatic
Todo:

: we'll need to pad up the image to get a good boundary condition!

: downsampling will not result in an energy conserving pattern (every 4 pixels one sample)

: neither will a mirror boundary condition (mirrors in subsampled values at random density)

: copy laplacian code from local laplacian filters, it's faster.

References c, dt_pixelpipe_cache_alloc_align_float_cache, dt_pixelpipe_cache_free_align, gauss_blur(), gauss_expand(), and i.

Referenced by process_fusion().

◆ gui_changed()

void gui_changed ( dt_iop_module_t self,
GtkWidget w,
void previous 
)

◆ gui_cleanup()

◆ gui_init()

◆ gui_update()

◆ init()

◆ init_pipe()

◆ init_presets()

◆ legacy_params()

◆ logbase_callback()

static void logbase_callback ( GtkWidget slider,
gpointer  user_data 
)
static

◆ name()

const char * name ( )

Referenced by set_presets().

◆ process()

int process ( struct 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 
)

◆ process_fusion()

◆ process_lut()

void process_lut ( struct dt_iop_module_t self,
const dt_dev_pixelpipe_iop_t piece,
const void *const  ivoid,
void *const  ovoid,
const dt_iop_roi_t *const  roi_in,
const dt_iop_roi_t *const  roi_out 
)
Todo:
, determine what possible data formats and channel
Todo:
comments in apply_curve for more potential performance improvements

References apply_curve(), apply_legacy_curve(), d, dt_dev_pixelpipe_iop_t::data, dt_ioppr_get_iop_work_profile_info(), DT_RGB_NORM_NONE, dt_iop_roi_t::height, out, and dt_iop_roi_t::width.

Referenced by process().

◆ set_presets()

◆ tiling_callback()

void tiling_callback ( struct dt_iop_module_t self,
const struct dt_dev_pixelpipe_t pipe,
const struct dt_dev_pixelpipe_iop_t piece,
struct dt_develop_tiling_t tiling 
)

◆ to_lin()

static float to_lin ( const float  x,
const float  base 
)
static

◆ to_log()

static float to_log ( const float  x,
const float  base 
)
static

Variable Documentation

◆ basecurve_camera_presets

const basecurve_preset_t basecurve_camera_presets[]
static

Referenced by init_presets().

◆ basecurve_camera_presets_cnt

const int basecurve_camera_presets_cnt = sizeof(basecurve_camera_presets) / sizeof(basecurve_preset_t)
static

Referenced by init_presets().

◆ basecurve_presets

const basecurve_preset_t basecurve_presets[]
static
Initial value:
= {
{ N_("cubic spline"), "", "", 0, FLT_MAX, { { { { 0.0, 0.0}, { 1.0, 1.0 }, { 0., 0.}, { 0., 0.}, { 0., 0.}, { 0., 0.}, { 0., 0.}, { 0., 0.} } }, { 2 }, { CUBIC_SPLINE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ neutral, "", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.005000, 0.002500 }, { 0.150000, 0.300000 }, { 0.400000, 0.700000 }, { 0.750000, 0.950000 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE } , 0, 0, 0, DT_RGB_NORM_LUMINANCE}, 0, 1 },
{ canon_eos, "Canon", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.028226, 0.029677 }, { 0.120968, 0.232258 }, { 0.459677, 0.747581 }, { 0.858871, 0.967742 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ canon_eos_alt, "Canon", "EOS 5D Mark%", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.026210, 0.029677 }, { 0.108871, 0.232258 }, { 0.350806, 0.747581 }, { 0.669355, 0.967742 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ nikon, "NIKON", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.036290, 0.036532 }, { 0.120968, 0.228226 }, { 0.459677, 0.759678 }, { 0.858871, 0.983468 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ nikon_alt, "NIKON", "%D____%", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.012097, 0.007322 }, { 0.072581, 0.130742 }, { 0.310484, 0.729291 }, { 0.611321, 0.951613 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ sony_alpha, "SONY", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.031949, 0.036532 }, { 0.105431, 0.228226 }, { 0.434505, 0.759678 }, { 0.855738, 0.983468 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ pentax, "PENTAX", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.032258, 0.024596 }, { 0.120968, 0.166419 }, { 0.205645, 0.328527 }, { 0.604839, 0.790171 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ ricoh, "RICOH", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.032259, 0.024596 }, { 0.120968, 0.166419 }, { 0.205645, 0.328527 }, { 0.604839, 0.790171 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ olympus, "OLYMPUS", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.033962, 0.028226 }, { 0.249057, 0.439516 }, { 0.501887, 0.798387 }, { 0.750943, 0.955645 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ olympus_alt, "OLYMPUS", "E-M%", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.012097, 0.010322 }, { 0.072581, 0.167742 }, { 0.310484, 0.711291 }, { 0.645161, 0.956855 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ panasonic, "Panasonic", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.036290, 0.024596 }, { 0.120968, 0.166419 }, { 0.205645, 0.328527 }, { 0.604839, 0.790171 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ leica, "Leica", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.036291, 0.024596 }, { 0.120968, 0.166419 }, { 0.205645, 0.328527 }, { 0.604839, 0.790171 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ kodak_easyshare, "EASTMAN KODAK COMPANY", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.044355, 0.020967 }, { 0.133065, 0.154322 }, { 0.209677, 0.300301 }, { 0.572581, 0.753477 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ konica_minolta, "MINOLTA", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.020161, 0.010322 }, { 0.112903, 0.167742 }, { 0.500000, 0.711291 }, { 0.899194, 0.956855 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ samsung, "SAMSUNG", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.040323, 0.029677 }, { 0.133065, 0.232258 }, { 0.447581, 0.747581 }, { 0.842742, 0.967742 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ fujifilm, "FUJIFILM", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.028226, 0.029677 }, { 0.104839, 0.232258 }, { 0.387097, 0.747581 }, { 0.754032, 0.967742 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
{ nokia, "Nokia", "", 0, FLT_MAX, { { { { 0.000000, 0.000000 }, { 0.041825, 0.020161 }, { 0.117871, 0.153226 }, { 0.319392, 0.500000 }, { 0.638783, 0.842742 }, { 1.000000, 1.000000 } } }, { 6 }, { MONOTONE_HERMITE }, 0, 0, 0, DT_RGB_NORM_LUMINANCE }, 0, 0 },
}
static const char sony_alpha[]
Definition basecurve.c:252
static const char nokia[]
Definition basecurve.c:263
static const char fujifilm[]
Definition basecurve.c:262
static const char pentax[]
Definition basecurve.c:253
static const char nikon_alt[]
Definition basecurve.c:251
static const char olympus[]
Definition basecurve.c:255
static const char neutral[]
Definition basecurve.c:247
static const char konica_minolta[]
Definition basecurve.c:260
static const char leica[]
Definition basecurve.c:258
static const char canon_eos_alt[]
Definition basecurve.c:249
static const char canon_eos[]
Definition basecurve.c:248
static const char ricoh[]
Definition basecurve.c:254
static const char olympus_alt[]
Definition basecurve.c:256
static const char nikon[]
Definition basecurve.c:250
static const char samsung[]
Definition basecurve.c:261
static const char panasonic[]
Definition basecurve.c:257
static const char kodak_easyshare[]
Definition basecurve.c:259
#define CUBIC_SPLINE
Definition curve_tools.h:33
#define MONOTONE_HERMITE
Definition curve_tools.h:35
@ DT_RGB_NORM_LUMINANCE
Definition data/kernels/rgb_norms.h:25

Referenced by init_presets().

◆ basecurve_presets_cnt

const int basecurve_presets_cnt = sizeof(basecurve_presets) / sizeof(basecurve_preset_t)
static

Referenced by init_presets().

◆ canon_eos

const char canon_eos[] = N_("canon eos like")
static

◆ canon_eos_alt

const char canon_eos_alt[] = N_("canon eos like alternate")
static

◆ fujifilm

const char fujifilm[] = N_("fujifilm like")
static

◆ kodak_easyshare

const char kodak_easyshare[] = N_("kodak easyshare like")
static

◆ konica_minolta

const char konica_minolta[] = N_("konica minolta like")
static

◆ leica

const char leica[] = N_("leica like")
static

◆ neutral

const char neutral[] = N_("neutral")
static

Referenced by color_finetuning_slider().

◆ nikon

const char nikon[] = N_("nikon like")
static

◆ nikon_alt

const char nikon_alt[] = N_("nikon like alternate")
static

◆ nokia

const char nokia[] = N_("nokia like")
static

◆ olympus

const char olympus[] = N_("olympus like")
static

◆ olympus_alt

const char olympus_alt[] = N_("olympus like alternate")
static

◆ panasonic

const char panasonic[] = N_("panasonic like")
static

◆ pentax

const char pentax[] = N_("pentax like")
static

◆ ricoh

const char ricoh[] = N_("ricoh like")
static

◆ samsung

const char samsung[] = N_("samsung like")
static

◆ sony_alpha

const char sony_alpha[] = N_("sony alpha like")
static