mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
libgimpcolor: space invade gimp_color_profile_get_lcms_format()
The function was still returning formats without space, and was lacking support for perceptual '~' models.
This commit is contained in:
parent
0710051e2b
commit
4ac4820a54
1 changed files with 53 additions and 16 deletions
|
@ -1544,11 +1544,13 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
const Babl *output_format = NULL;
|
const Babl *output_format = NULL;
|
||||||
const Babl *type;
|
const Babl *type;
|
||||||
const Babl *model;
|
const Babl *model;
|
||||||
|
const Babl *space;
|
||||||
gboolean has_alpha;
|
gboolean has_alpha;
|
||||||
gboolean rgb = FALSE;
|
gboolean rgb = FALSE;
|
||||||
gboolean gray = FALSE;
|
gboolean gray = FALSE;
|
||||||
gboolean cmyk = FALSE;
|
gboolean cmyk = FALSE;
|
||||||
gboolean linear = FALSE;
|
gboolean linear = FALSE;
|
||||||
|
gboolean srgb_trc = FALSE;
|
||||||
|
|
||||||
g_return_val_if_fail (format != NULL, NULL);
|
g_return_val_if_fail (format != NULL, NULL);
|
||||||
g_return_val_if_fail (lcms_format != NULL, NULL);
|
g_return_val_if_fail (lcms_format != NULL, NULL);
|
||||||
|
@ -1556,6 +1558,7 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
has_alpha = babl_format_has_alpha (format);
|
has_alpha = babl_format_has_alpha (format);
|
||||||
type = babl_format_get_type (format, 0);
|
type = babl_format_get_type (format, 0);
|
||||||
model = babl_format_get_model (format);
|
model = babl_format_get_model (format);
|
||||||
|
space = babl_format_get_space (format);
|
||||||
|
|
||||||
if (format == babl_format ("cairo-RGB24"))
|
if (format == babl_format ("cairo-RGB24"))
|
||||||
{
|
{
|
||||||
|
@ -1578,6 +1581,13 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
rgb = TRUE;
|
rgb = TRUE;
|
||||||
linear = TRUE;
|
linear = TRUE;
|
||||||
}
|
}
|
||||||
|
else if (model == babl_model ("R~G~B~") ||
|
||||||
|
model == babl_model ("R~G~B~A") ||
|
||||||
|
model == babl_model ("R~aG~aB~aA"))
|
||||||
|
{
|
||||||
|
rgb = TRUE;
|
||||||
|
srgb_trc = TRUE;
|
||||||
|
}
|
||||||
else if (model == babl_model ("R'G'B'") ||
|
else if (model == babl_model ("R'G'B'") ||
|
||||||
model == babl_model ("R'G'B'A") ||
|
model == babl_model ("R'G'B'A") ||
|
||||||
model == babl_model ("R'aG'aB'aA"))
|
model == babl_model ("R'aG'aB'aA"))
|
||||||
|
@ -1591,6 +1601,13 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
gray = TRUE;
|
gray = TRUE;
|
||||||
linear = TRUE;
|
linear = TRUE;
|
||||||
}
|
}
|
||||||
|
else if (model == babl_model ("Y~") ||
|
||||||
|
model == babl_model ("Y~A") ||
|
||||||
|
model == babl_model ("Y~aA"))
|
||||||
|
{
|
||||||
|
gray = TRUE;
|
||||||
|
srgb_trc = TRUE;
|
||||||
|
}
|
||||||
else if (model == babl_model ("Y'") ||
|
else if (model == babl_model ("Y'") ||
|
||||||
model == babl_model ("Y'A") ||
|
model == babl_model ("Y'A") ||
|
||||||
model == babl_model ("Y'aA"))
|
model == babl_model ("Y'aA"))
|
||||||
|
@ -1614,13 +1631,13 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
{
|
{
|
||||||
*lcms_format = TYPE_RGBA_FLT;
|
*lcms_format = TYPE_RGBA_FLT;
|
||||||
|
|
||||||
return babl_format ("RGBA float");
|
return babl_format_with_space ("RGBA float", space);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*lcms_format = TYPE_RGB_FLT;
|
*lcms_format = TYPE_RGB_FLT;
|
||||||
|
|
||||||
return babl_format ("RGB float");
|
return babl_format_with_space ("RGB float", space);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (babl_format_is_palette (format))
|
else if (babl_format_is_palette (format))
|
||||||
|
@ -1629,13 +1646,13 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
{
|
{
|
||||||
*lcms_format = TYPE_RGBA_8;
|
*lcms_format = TYPE_RGBA_8;
|
||||||
|
|
||||||
return babl_format ("R'G'B'A u8");
|
return babl_format_with_space ("R'G'B'A u8", space);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*lcms_format = TYPE_RGB_8;
|
*lcms_format = TYPE_RGB_8;
|
||||||
|
|
||||||
return babl_format ("R'G'B' u8");
|
return babl_format_with_space ("R'G'B' u8", space);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1663,18 +1680,28 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
*lcms_format = TYPE_RGBA_##lcms_t; \
|
*lcms_format = TYPE_RGBA_##lcms_t; \
|
||||||
\
|
\
|
||||||
if (linear) \
|
if (linear) \
|
||||||
output_format = babl_format ("RGBA " babl_t); \
|
output_format = babl_format_with_space ("RGBA " babl_t, \
|
||||||
|
space); \
|
||||||
|
else if (srgb_trc) \
|
||||||
|
output_format = babl_format_with_space ("R~G~B~A " babl_t, \
|
||||||
|
space); \
|
||||||
else \
|
else \
|
||||||
output_format = babl_format ("R'G'B'A " babl_t); \
|
output_format = babl_format_with_space ("R'G'B'A " babl_t, \
|
||||||
|
space); \
|
||||||
} \
|
} \
|
||||||
else if (gray) \
|
else if (gray) \
|
||||||
{ \
|
{ \
|
||||||
*lcms_format = TYPE_GRAYA_##lcms_t; \
|
*lcms_format = TYPE_GRAYA_##lcms_t; \
|
||||||
\
|
\
|
||||||
if (linear) \
|
if (linear) \
|
||||||
output_format = babl_format ("YA " babl_t); \
|
output_format = babl_format_with_space ("YA " babl_t, \
|
||||||
|
space); \
|
||||||
|
else if (srgb_trc) \
|
||||||
|
output_format = babl_format_with_space ("Y~A " babl_t, \
|
||||||
|
space); \
|
||||||
else \
|
else \
|
||||||
output_format = babl_format ("Y'A " babl_t); \
|
output_format = babl_format_with_space ("Y'A " babl_t, \
|
||||||
|
space); \
|
||||||
} \
|
} \
|
||||||
else if (cmyk) \
|
else if (cmyk) \
|
||||||
{ \
|
{ \
|
||||||
|
@ -1690,18 +1717,28 @@ gimp_color_profile_get_lcms_format (const Babl *format,
|
||||||
*lcms_format = TYPE_RGB_##lcms_t; \
|
*lcms_format = TYPE_RGB_##lcms_t; \
|
||||||
\
|
\
|
||||||
if (linear) \
|
if (linear) \
|
||||||
output_format = babl_format ("RGB " babl_t); \
|
output_format = babl_format_with_space ("RGB " babl_t, \
|
||||||
|
space); \
|
||||||
|
else if (srgb_trc) \
|
||||||
|
output_format = babl_format_with_space ("R~G~B~ " babl_t, \
|
||||||
|
space); \
|
||||||
else \
|
else \
|
||||||
output_format = babl_format ("R'G'B' " babl_t); \
|
output_format = babl_format_with_space ("R'G'B' " babl_t, \
|
||||||
|
space); \
|
||||||
} \
|
} \
|
||||||
else if (gray) \
|
else if (gray) \
|
||||||
{ \
|
{ \
|
||||||
*lcms_format = TYPE_GRAY_##lcms_t; \
|
*lcms_format = TYPE_GRAY_##lcms_t; \
|
||||||
\
|
\
|
||||||
if (linear) \
|
if (linear) \
|
||||||
output_format = babl_format ("Y " babl_t); \
|
output_format = babl_format_with_space ("Y " babl_t, \
|
||||||
|
space); \
|
||||||
|
else if (srgb_trc) \
|
||||||
|
output_format = babl_format_with_space ("Y~ " babl_t, \
|
||||||
|
space); \
|
||||||
else \
|
else \
|
||||||
output_format = babl_format ("Y' " babl_t); \
|
output_format = babl_format_with_space ("Y' " babl_t, \
|
||||||
|
space); \
|
||||||
} \
|
} \
|
||||||
else if (cmyk) \
|
else if (cmyk) \
|
||||||
{ \
|
{ \
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue