29#define DT_COLORRINGS_ANGLE_SHIFT +20.f
31#define DT_COLORRINGS_NUM_RINGS 3
32#define DT_COLORRINGS_MAXNODES 20
33#define DT_COLORRINGS_DEFAULT_NODES 8
34#define DT_COLORRINGS_HUE_SAMPLES 64
35#define DT_COLORRINGS_CLUT_LEVEL 64
36#define DT_COLORRINGS_LOCAL_FIELD_RINGS (DT_COLORRINGS_NUM_RINGS + 1)
124 float inv_sigma_rho,
float inv_sigma_theta,
float rho0,
float out[3]);
133 float inv_sigma_rho,
float inv_sigma_theta,
float rho0);
136 int anchor_count,
float inv_sigma_L,
float inv_sigma_rho,
137 float inv_sigma_theta,
float rho0,
float out[3]);
140 int anchor_count,
float inv_sigma_L,
float inv_sigma_rho,
141 float inv_sigma_theta,
float rho0);
float dt_colorrings_ring_brightness(dt_colorrings_ring_t ring)
Definition colorequal_shared.c:139
float dt_colorrings_wendland_c2(float d)
Definition colorequal_shared.c:492
void dt_colorrings_profile_rgb_to_display_rgb(const dt_aligned_pixel_t RGB, const dt_iop_order_iccprofile_info_t *profile, const dt_iop_order_iccprofile_info_t *display_profile, dt_aligned_pixel_t display_rgb)
Definition colorequal_shared.c:225
float dt_colorrings_distance_to_cube_shell(const dt_aligned_pixel_t axis, const dt_aligned_pixel_t direction)
Definition colorequal_shared.c:366
float dt_colorrings_ring_axis_position_from_brightness(float brightness, float white, const dt_iop_order_iccprofile_info_t *profile)
Definition colorequal_shared.c:347
float dt_colorrings_curve_periodic_sample(const dt_colorrings_node_t *curve, int nodes, float x)
Definition colorequal_shared.c:153
void dt_colorrings_brightness_to_axis_rgb(float brightness, float white, const dt_iop_order_iccprofile_info_t *profile, dt_aligned_pixel_t RGB)
Definition colorequal_shared.c:356
float dt_colorrings_curve_periodic_distance(float x0, float x1)
Definition colorequal_shared.c:133
void dt_colorrings_rgb_to_gray_cyl(const float rgb[3], float *L, float *rho, float *theta)
Definition colorequal_shared.c:441
void dt_colorrings_fill_lut_local_field(float *lut, int level, const float anchor_L[(3+1)][64], const float anchor_rho[(3+1)][64], const float anchor_theta[(3+1)][64], const float delta_L[(3+1)][64], const float chroma_scale[(3+1)][64], const float delta_theta[(3+1)][64], float inv_sigma_L, float inv_sigma_rho, float inv_sigma_theta, float rho0)
float dt_colorrings_wrap_hue_pi(float hue)
Definition colorequal_shared.c:117
#define DT_COLORRINGS_HUE_SAMPLES
Definition colorequal_shared.h:34
void dt_colorrings_compute_reference_saturations(float white, float reference_saturation[3])
void dt_colorrings_fill_lut_sparse_local_field(float *lut, int level, const dt_colorrings_sparse_anchor_t *anchors, int anchor_count, float inv_sigma_L, float inv_sigma_rho, float inv_sigma_theta, float rho0)
Definition colorequal_shared.c:704
float dt_colorrings_wrap_hue_2pi(float hue)
Definition colorequal_shared.c:110
dt_colorrings_ring_t
Definition colorequal_shared.h:39
@ DT_COLORRINGS_RING_DARK
Definition colorequal_shared.h:40
@ DT_COLORRINGS_RING_MID
Definition colorequal_shared.h:41
@ DT_COLORRINGS_RING_LIGHT
Definition colorequal_shared.h:42
void dt_colorrings_normalize3(dt_aligned_pixel_t vector)
Definition colorequal_shared.c:419
void dt_colorrings_project_to_cube_shell(const dt_aligned_pixel_t axis, dt_aligned_pixel_t RGB)
Definition colorequal_shared.c:382
#define DT_COLORRINGS_NUM_RINGS
Definition colorequal_shared.h:31
void dt_colorrings_hsb_to_profile_rgb(const dt_aligned_pixel_t HSB, float white, const dt_iop_order_iccprofile_info_t *profile, dt_aligned_pixel_t RGB)
Definition colorequal_shared.c:208
void dt_colorrings_rotate_around_axis(const dt_aligned_pixel_t input, const dt_aligned_pixel_t axis, float cos_angle, float sin_angle, dt_aligned_pixel_t output)
Definition colorequal_shared.c:429
void dt_colorrings_eval_local_field(const float x[3], const float anchor_L[(3+1)][64], const float anchor_rho[(3+1)][64], const float anchor_theta[(3+1)][64], const float delta_L[(3+1)][64], const float chroma_scale[(3+1)][64], const float delta_theta[(3+1)][64], float inv_sigma_L, float inv_sigma_rho, float inv_sigma_theta, float rho0, float out[3])
void dt_colorrings_profile_rgb_to_dt_ucs_jch(const dt_aligned_pixel_t RGB, float white, const dt_iop_order_iccprofile_info_t *profile, dt_aligned_pixel_t JCH)
Definition colorequal_shared.c:244
void dt_colorrings_cross3(const dt_aligned_pixel_t a, const dt_aligned_pixel_t b, dt_aligned_pixel_t out)
Definition colorequal_shared.c:411
float dt_colorrings_wrap_pi(float x)
Definition colorequal_shared.c:499
float dt_colorrings_vector_norm3(const dt_aligned_pixel_t vector)
Definition colorequal_shared.c:401
float dt_colorrings_hue_to_curve_x(float hue)
Definition colorequal_shared.c:128
#define DT_COLORRINGS_LOCAL_FIELD_RINGS
Definition colorequal_shared.h:36
float dt_colorrings_curve_x_to_hue(float x)
Definition colorequal_shared.c:123
void dt_colorrings_profile_rgb_to_Ych(const dt_aligned_pixel_t RGB, const dt_iop_order_iccprofile_info_t *profile, dt_aligned_pixel_t Ych)
Definition colorequal_shared.c:280
void dt_colorrings_gray_axis_rgb_from_L(float L, dt_aligned_pixel_t RGB)
Definition colorequal_shared.c:483
gboolean dt_colorrings_apply_rgb_lut(const dt_aligned_pixel_t input_rgb, float white_level, const dt_iop_order_iccprofile_info_t *work_profile, const dt_iop_order_iccprofile_info_t *lut_profile, const float *clut, uint16_t clut_level, dt_pthread_rwlock_t *clut_lock, dt_lut3d_interpolation_t interpolation, dt_aligned_pixel_t output_rgb)
Definition colorequal_shared.c:175
float dt_colorrings_graph_white(void)
Definition colorequal_shared.c:105
float dt_colorrings_dot3(const dt_aligned_pixel_t a, const dt_aligned_pixel_t b)
Definition colorequal_shared.c:406
void dt_colorrings_profile_rgb_to_dt_ucs_hsb(const dt_aligned_pixel_t RGB, float white, const dt_iop_order_iccprofile_info_t *profile, dt_aligned_pixel_t HSB)
Definition colorequal_shared.c:272
void dt_colorrings_gray_basis_to_rgb(float L, float u, float v, float rgb[3])
Definition colorequal_shared.c:464
void dt_colorrings_hsb_to_display_rgb(const dt_aligned_pixel_t HSB, float white, const dt_iop_order_iccprofile_info_t *display_profile, dt_aligned_pixel_t RGB)
Definition colorequal_shared.c:218
void dt_colorrings_eval_sparse_local_field(const float x[3], const dt_colorrings_sparse_anchor_t *anchors, int anchor_count, float inv_sigma_L, float inv_sigma_rho, float inv_sigma_theta, float rho0, float out[3])
Definition colorequal_shared.c:623
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:344
const float L
Definition colorspaces_inline_conversions.h:493
const float d
Definition colorspaces_inline_conversions.h:680
const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:42
static dt_aligned_pixel_t RGB
Definition colorspaces_inline_conversions.h:327
#define dt_pthread_rwlock_t
Definition dtpthread.h:389
static const float x
Definition iop_profile.h:235
const float *const lut
Definition iop_profile.h:240
const float v
Definition iop_profile.h:221
dt_lut3d_interpolation_t
Definition lut3d.h:25
float dt_aligned_pixel_t[4]
Definition noiseprofile.c:28
Definition colorequal_shared.h:46
float y
Definition colorequal_shared.h:48
float x
Definition colorequal_shared.h:47
Definition colorequal_shared.h:52
float delta_theta
Definition colorequal_shared.h:58
float delta_L
Definition colorequal_shared.h:56
float weight
Definition colorequal_shared.h:59
float chroma_scale
Definition colorequal_shared.h:57
float L
Definition colorequal_shared.h:53
float rho
Definition colorequal_shared.h:54
float theta
Definition colorequal_shared.h:55
Definition iop_profile.h:52