53 #define TYPE_XYZA_FLT (FLOAT_SH(1)|COLORSPACE_SH(PT_XYZ)|EXTRA_SH(1)|CHANNELS_SH(3)|BYTES_SH(4))
57#define DT_IOP_COLOR_ICC_LEN 512
58#define LUT_SAMPLES 0x10000
216int mat3inv(
float *
const dst,
const float *
const src);
256 const char *over_filename);
268 float *lutb,
const int lutsize);
272 float *lutb,
const int lutsize);
282void rgb2hsl(
const dt_aligned_pixel_t
rgb,
float *
h,
float *s,
float *l);
283void hsl2rgb(dt_aligned_pixel_t
rgb,
float h,
float s,
float l);
377 gboolean *new_profile);
int width
Definition bilateral.h:1
int height
Definition bilateral.h:1
static const dt_aligned_pixel_simd_t const dt_adaptation_t const float p
Definition chromatic_adaptation.h:315
static void transform(float *x, float *o, const float *m, const float t_h, const float t_v)
Definition clipping.c:492
static dt_colorspaces_color_profile_type_t sanitize_colorspaces(dt_colorspaces_color_profile_type_t colorspace)
Definition colorspaces.h:323
cmsHPROFILE dt_colorspaces_create_xyzimatrix_profile(float cam_xyz[3][3])
Definition colorspaces.c:1302
dt_iop_color_intent_t
Definition colorspaces.h:63
@ DT_INTENT_ABSOLUTE_COLORIMETRIC
Definition colorspaces.h:67
@ DT_INTENT_RELATIVE_COLORIMETRIC
Definition colorspaces.h:65
@ DT_INTENT_PERCEPTUAL
Definition colorspaces.h:64
@ DT_INTENT_SATURATION
Definition colorspaces.h:66
@ DT_INTENT_LAST
Definition colorspaces.h:68
const dt_colorspaces_color_profile_t * dt_colorspaces_get_profile(dt_colorspaces_color_profile_type_t type, const char *filename, dt_colorspaces_profile_direction_t direction)
Definition colorspaces.c:2519
void dt_colorspaces_rgb_to_cygm(float *out, int num, double RGB_to_CAM[4][3])
Definition colorspaces.c:2718
dt_colorspaces_color_profile_type_t dt_colorspaces_get_input_profile_from_image(int32_t imgid, dt_colorspaces_color_profile_type_t requested, cmsHPROFILE *output, gboolean *new_profile)
Resolve an embedded/matrix input profile for a given image, honoring the requested type when possible...
Definition colorspaces.c:1070
void rgb2hsl(const dt_aligned_pixel_t rgb, float *h, float *s, float *l)
Definition colorspaces.c:1414
void dt_colorspaces_transform_rgba_float_image(const cmsHTRANSFORM transform, const float *image_in, float *image_out, const int width, const int height)
Definition colorspaces.c:1549
int dt_colorspaces_conversion_matrices_rgb(const float adobe_XYZ_to_CAM[4][3], double RGB_to_CAM[4][3], double CAM_to_RGB[3][4], const float *embedded_matrix, double mul[4])
Definition colorspaces.c:2589
const dt_colorspaces_color_profile_t * dt_colorspaces_get_output_profile(const int32_t imgid, dt_colorspaces_color_profile_type_t *over_type, const char *over_filename)
Definition colorspaces.c:1206
int dt_colorspaces_get_matrix_from_output_profile(cmsHPROFILE prof, dt_colormatrix_t matrix, float *lutr, float *lutg, float *lutb, const int lutsize)
Definition colorspaces.c:322
void dt_colorspaces_update_display_transforms()
Definition colorspaces.c:1538
static gboolean dt_colorspaces_is_matrix_profile_type(const dt_colorspaces_color_profile_type_t type)
Definition colorspaces.h:340
const cmsHPROFILE dt_colorspaces_get_embedded_profile(const int32_t imgid, dt_colorspaces_color_profile_type_t *type, gboolean *new_profile)
Definition colorspaces.c:1175
#define DT_IOP_COLOR_ICC_LEN
Definition colorspaces.h:57
cmsHPROFILE dt_colorspaces_create_vendor_profile(const char *makermodel)
Definition colorspaces.c:592
int dt_colorspaces_get_matrix_from_input_profile(cmsHPROFILE prof, dt_colormatrix_t matrix, float *lutr, float *lutg, float *lutb, const int lutsize)
Definition colorspaces.c:316
dt_colorspaces_color_profile_type_t
Definition colorspaces.h:81
@ DT_COLORSPACE_ADOBERGB
Definition colorspaces.h:85
@ DT_COLORSPACE_PROPHOTO_RGB
Definition colorspaces.h:104
@ DT_COLORSPACE_EMBEDDED_MATRIX
Definition colorspaces.h:93
@ DT_COLORSPACE_EMBEDDED_ICC
Definition colorspaces.h:92
@ DT_COLORSPACE_FILE
Definition colorspaces.h:83
@ DT_COLORSPACE_DISPLAY
Definition colorspaces.h:91
@ DT_COLORSPACE_SRGB
Definition colorspaces.h:84
@ DT_COLORSPACE_INFRARED
Definition colorspaces.h:90
@ DT_COLORSPACE_EXPORT
Definition colorspaces.h:99
@ DT_COLORSPACE_LAB
Definition colorspaces.h:89
@ DT_COLORSPACE_REC709
Definition colorspaces.h:103
@ DT_COLORSPACE_HLG_P3
Definition colorspaces.h:108
@ DT_COLORSPACE_PQ_P3
Definition colorspaces.h:107
@ DT_COLORSPACE_PQ_REC2020
Definition colorspaces.h:105
@ DT_COLORSPACE_DISPLAY2
Definition colorspaces.h:102
@ DT_COLORSPACE_NONE
Definition colorspaces.h:82
@ DT_COLORSPACE_HLG_REC2020
Definition colorspaces.h:106
@ DT_COLORSPACE_WORK
Definition colorspaces.h:101
@ DT_COLORSPACE_LAST
Definition colorspaces.h:111
@ DT_COLORSPACE_ENHANCED_MATRIX
Definition colorspaces.h:95
@ DT_COLORSPACE_LIN_REC2020
Definition colorspaces.h:87
@ DT_COLORSPACE_DISPLAY_P3
Definition colorspaces.h:110
@ DT_COLORSPACE_STANDARD_MATRIX
Definition colorspaces.h:94
@ DT_COLORSPACE_XYZ
Definition colorspaces.h:88
@ DT_COLORSPACE_BRG
Definition colorspaces.h:98
@ DT_COLORSPACE_VENDOR_MATRIX
Definition colorspaces.h:96
@ DT_COLORSPACE_SOFTPROOF
Definition colorspaces.h:100
@ DT_COLORSPACE_ITUR_BT1886
Definition colorspaces.h:109
@ DT_COLORSPACE_LIN_REC709
Definition colorspaces.h:86
@ DT_COLORSPACE_ALTERNATE_MATRIX
Definition colorspaces.h:97
int mat3inv(float *const dst, const float *const src)
Definition colorspaces.c:191
dt_colorspaces_profile_type_t
Definition colorspaces.h:72
@ DT_COLORSPACES_PROFILE_TYPE_DISPLAY
Definition colorspaces.h:76
@ DT_COLORSPACES_PROFILE_TYPE_EXPORT
Definition colorspaces.h:75
@ DT_COLORSPACES_PROFILE_TYPE_SOFTPROOF
Definition colorspaces.h:77
@ DT_COLORSPACES_PROFILE_TYPE_INPUT
Definition colorspaces.h:73
@ DT_COLORSPACES_PROFILE_TYPE_WORK
Definition colorspaces.h:74
dt_colorspaces_profile_direction_t
Definition colorspaces.h:122
@ DT_PROFILE_DIRECTION_CATEGORY
Definition colorspaces.h:126
@ DT_PROFILE_DIRECTION_DISPLAY2
Definition colorspaces.h:128
@ DT_PROFILE_DIRECTION_IN
Definition colorspaces.h:123
@ DT_PROFILE_DIRECTION_OUT
Definition colorspaces.h:124
@ DT_PROFILE_DIRECTION_DISPLAY
Definition colorspaces.h:125
@ DT_PROFILE_DIRECTION_WORK
Definition colorspaces.h:127
@ DT_PROFILE_DIRECTION_ANY
Definition colorspaces.h:129
void dt_colorspaces_cleanup(dt_colorspaces_t *self)
Definition colorspaces.c:1904
cmsHPROFILE dt_colorspaces_create_darktable_profile(const char *makermodel)
Definition colorspaces.c:642
int dt_colorspaces_conversion_matrices_xyz(const float adobe_XYZ_to_CAM[4][3], float in_XYZ_to_CAM[9], double XYZ_to_CAM[4][3], double CAM_to_XYZ[3][4])
Definition colorspaces.c:2558
dt_colorspaces_cicp_transfer_characteristics_t
Definition colorspaces.h:147
@ DT_CICP_TRANSFER_CHARACTERISTICS_UNSPECIFIED
Definition colorspaces.h:149
@ DT_CICP_TRANSFER_CHARACTERISTICS_LINEAR
Definition colorspaces.h:151
@ DT_CICP_TRANSFER_CHARACTERISTICS_HLG
Definition colorspaces.h:156
@ DT_CICP_TRANSFER_CHARACTERISTICS_REC2020_12B
Definition colorspaces.h:154
@ DT_CICP_TRANSFER_CHARACTERISTICS_REC709
Definition colorspaces.h:148
@ DT_CICP_TRANSFER_CHARACTERISTICS_PQ
Definition colorspaces.h:155
@ DT_CICP_TRANSFER_CHARACTERISTICS_REC2020_10B
Definition colorspaces.h:153
@ DT_CICP_TRANSFER_CHARACTERISTICS_REC601
Definition colorspaces.h:150
@ DT_CICP_TRANSFER_CHARACTERISTICS_SRGB
Definition colorspaces.h:152
void dt_colorspaces_cleanup_profile(cmsHPROFILE p)
Definition colorspaces.c:1365
dt_colorspaces_color_profile_type_t dt_image_find_best_color_profile(int32_t imgid, cmsHPROFILE *output, gboolean *new_profile)
Best effort to find a suitable (input) color profile for a given image, using embedded ICC or EXIF wh...
Definition colorspaces.c:880
const dt_colorspaces_color_profile_t * dt_colorspaces_get_work_profile(const int32_t imgid)
Definition colorspaces.c:830
dt_colorspaces_t * dt_colorspaces_init()
Definition colorspaces.c:1713
cmsHPROFILE dt_colorspaces_get_rgb_profile_from_mem(uint8_t *data, uint32_t size)
Definition colorspaces.c:1358
const char * dt_colorspaces_get_name(dt_colorspaces_color_profile_type_t type, const char *filename)
Definition colorspaces.c:1939
void dt_colorspaces_get_profile_name(cmsHPROFILE p, const char *language, const char *country, char *name, size_t len)
Definition colorspaces.c:1371
dt_colorspaces_color_mode_t
Definition colorspaces.h:115
@ DT_PROFILE_GAMUTCHECK
Definition colorspaces.h:118
@ DT_PROFILE_SOFTPROOF
Definition colorspaces.h:117
@ DT_PROFILE_NORMAL
Definition colorspaces.h:116
void dt_colorspaces_set_display_profile(const dt_colorspaces_color_profile_type_t profile_type)
Definition colorspaces.c:2081
cmsHPROFILE dt_colorspaces_create_alternate_profile(const char *makermodel)
Definition colorspaces.c:542
void hsl2rgb(dt_aligned_pixel_t rgb, float h, float s, float l)
Definition colorspaces.c:1458
gboolean dt_colorspaces_is_profile_equal(const char *fullname, const char *filename)
Definition colorspaces.c:2252
static gboolean dt_colorspaces_is_raw_matrix_profile_type(const dt_colorspaces_color_profile_type_t type)
Definition colorspaces.h:332
dt_colorspaces_color_profile_type_t dt_colorspaces_cicp_to_type(const dt_colorspaces_cicp_t *cicp, const char *filename)
Definition colorspaces.c:2262
void dt_colorspaces_transform_rgba8_to_bgra8(const cmsHTRANSFORM transform, const uint8_t *image_in, uint8_t *image_out, const int width, const int height)
Definition colorspaces.c:1567
void dt_colorspaces_cygm_apply_coeffs_to_rgb(float *out, const float *in, int num, double RGB_to_CAM[4][3], double CAM_to_RGB[3][4], dt_aligned_pixel_t coeffs)
Definition colorspaces.c:2669
dt_colorspaces_cicp_color_primaries_t
Definition colorspaces.h:137
@ DT_CICP_COLOR_PRIMARIES_REC2020
Definition colorspaces.h:140
@ DT_CICP_COLOR_PRIMARIES_UNSPECIFIED
Definition colorspaces.h:139
@ DT_CICP_COLOR_PRIMARIES_P3
Definition colorspaces.h:142
@ DT_CICP_COLOR_PRIMARIES_REC709
Definition colorspaces.h:138
@ DT_CICP_COLOR_PRIMARIES_XYZ
Definition colorspaces.h:141
int mat3inv_float(float *const dst, const float *const src)
Definition colorspaces.c:189
void dt_colorspaces_transform_rgba_float_row(const cmsHTRANSFORM transform, const float *in, float *out, const int width)
Definition colorspaces.c:1543
static gboolean dt_colorspaces_is_embedded_or_matrix_profile_type(const dt_colorspaces_color_profile_type_t type)
Definition colorspaces.h:345
dt_colorspaces_cicp_matrix_coefficients_t
Definition colorspaces.h:161
@ DT_CICP_MATRIX_COEFFICIENTS_REC601
Definition colorspaces.h:166
@ DT_CICP_MATRIX_COEFFICIENTS_REC2020_NCL
Definition colorspaces.h:167
@ DT_CICP_MATRIX_COEFFICIENTS_UNSPECIFIED
Definition colorspaces.h:164
@ DT_CICP_MATRIX_COEFFICIENTS_IDENTITY
Definition colorspaces.h:162
@ DT_CICP_MATRIX_COEFFICIENTS_SYCC
Definition colorspaces.h:165
@ DT_CICP_MATRIX_COEFFICIENTS_REC709
Definition colorspaces.h:163
@ DT_CICP_MATRIX_COEFFICIENTS_CHROMA_DERIVED_NCL
Definition colorspaces.h:168
void dt_colorspaces_cygm_to_rgb(float *out, int num, double CAM_to_RGB[3][4])
Definition colorspaces.c:2701
const float h
Definition colorspaces_inline_conversions.h:1366
static const dt_colormatrix_t dt_aligned_pixel_t out
Definition colorspaces_inline_conversions.h:184
static dt_aligned_pixel_t rgb
Definition colorspaces_inline_conversions.h:530
static const dt_colormatrix_t matrix
Definition colorspaces_inline_conversions.h:182
static const float const int lutsize
Definition iop_profile.h:224
float DT_ALIGNED_ARRAY dt_colormatrix_t[4][4]
Definition matrices.h:33
size_t size
Definition mipmap_cache.c:3
Definition colorspaces.h:209
dt_colorspaces_cicp_matrix_coefficients_t matrix_coefficients
Definition colorspaces.h:212
dt_colorspaces_cicp_transfer_characteristics_t transfer_characteristics
Definition colorspaces.h:211
dt_colorspaces_cicp_color_primaries_t color_primaries
Definition colorspaces.h:210
Definition colorspaces.h:196
cmsHPROFILE profile
Definition colorspaces.h:200
int work_pos
Definition colorspaces.h:205
int display_pos
Definition colorspaces.h:203
dt_colorspaces_color_profile_type_t type
Definition colorspaces.h:197
int out_pos
Definition colorspaces.h:202
char filename[512]
Definition colorspaces.h:198
int in_pos
Definition colorspaces.h:201
char name[512]
Definition colorspaces.h:199
int category_pos
Definition colorspaces.h:204
Definition colorspaces.h:172
GList * profiles
Definition colorspaces.h:173
cmsHTRANSFORM transform_adobe_rgb_to_display
Definition colorspaces.h:191
dt_colorspaces_color_profile_type_t softproof_type
Definition colorspaces.h:183
gchar * colord_profile_file
Definition colorspaces.h:177
cmsHTRANSFORM transform_srgb_to_display
Definition colorspaces.h:191
cmsHTRANSFORM transform_xyz_to_display
Definition colorspaces.h:191
pthread_rwlock_t xprofile_lock
Definition colorspaces.h:176
dt_colorspaces_color_mode_t mode
Definition colorspaces.h:189
int xprofile_size
Definition colorspaces.h:179
char softproof_filename[512]
Definition colorspaces.h:185
uint8_t * xprofile_data
Definition colorspaces.h:178
dt_colorspaces_color_profile_type_t display_type
Definition colorspaces.h:182
char display_filename[512]
Definition colorspaces.h:184
dt_iop_color_intent_t softproof_intent
Definition colorspaces.h:187
dt_iop_color_intent_t display_intent
Definition colorspaces.h:186
#define MIN(a, b)
Definition thinplate.c:32