mirror of https://github.com/GNOME/gimp.git
app: add gimp_babl_component_format() and use it in GimpImage
This commit is contained in:
parent
8d4672eb5e
commit
8a55b13577
|
@ -1551,7 +1551,12 @@ gimp_image_get_mask_format (const GimpImage *image)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
|
||||||
|
|
||||||
return babl_format ("Y u8");
|
switch (gimp_image_get_precision (image))
|
||||||
|
{
|
||||||
|
case GIMP_PRECISION_U8: return babl_format ("Y u8");
|
||||||
|
}
|
||||||
|
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
gint
|
gint
|
||||||
|
@ -2061,12 +2066,33 @@ gimp_image_get_component_format (const GimpImage *image,
|
||||||
|
|
||||||
switch (channel)
|
switch (channel)
|
||||||
{
|
{
|
||||||
case GIMP_RED_CHANNEL: return babl_format ("R' u8");
|
case GIMP_RED_CHANNEL:
|
||||||
case GIMP_GREEN_CHANNEL: return babl_format ("G' u8");
|
return gimp_babl_component_format (GIMP_RGB,
|
||||||
case GIMP_BLUE_CHANNEL: return babl_format ("B' u8");
|
gimp_image_get_precision (image),
|
||||||
case GIMP_GRAY_CHANNEL: return babl_format ("Y' u8");
|
RED);
|
||||||
case GIMP_INDEXED_CHANNEL: return babl_format ("Y' u8"); /* XXX: seems wrong */
|
|
||||||
case GIMP_ALPHA_CHANNEL: return babl_format ("A u8");
|
case GIMP_GREEN_CHANNEL:
|
||||||
|
return gimp_babl_component_format (GIMP_RGB,
|
||||||
|
gimp_image_get_precision (image),
|
||||||
|
GREEN);
|
||||||
|
|
||||||
|
case GIMP_BLUE_CHANNEL:
|
||||||
|
return gimp_babl_component_format (GIMP_RGB,
|
||||||
|
gimp_image_get_precision (image),
|
||||||
|
BLUE);
|
||||||
|
|
||||||
|
case GIMP_ALPHA_CHANNEL:
|
||||||
|
return gimp_babl_component_format (GIMP_RGB,
|
||||||
|
gimp_image_get_precision (image),
|
||||||
|
ALPHA);
|
||||||
|
|
||||||
|
case GIMP_GRAY_CHANNEL:
|
||||||
|
return gimp_babl_component_format (GIMP_GRAY,
|
||||||
|
gimp_image_get_precision (image),
|
||||||
|
GRAY);
|
||||||
|
|
||||||
|
case GIMP_INDEXED_CHANNEL:
|
||||||
|
return babl_format ("Y' u8"); /* XXX: seems wrong */
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -206,3 +206,54 @@ gimp_babl_format (GimpImageBaseType base_type,
|
||||||
|
|
||||||
g_return_val_if_reached (NULL);
|
g_return_val_if_reached (NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Babl *
|
||||||
|
gimp_babl_component_format (GimpImageBaseType base_type,
|
||||||
|
GimpPrecision precision,
|
||||||
|
gint index)
|
||||||
|
{
|
||||||
|
switch (base_type)
|
||||||
|
{
|
||||||
|
case GIMP_RGB:
|
||||||
|
switch (precision)
|
||||||
|
{
|
||||||
|
case GIMP_PRECISION_U8:
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0: return babl_format ("R' u8");
|
||||||
|
case 1: return babl_format ("G' u8");
|
||||||
|
case 2: return babl_format ("B' u8");
|
||||||
|
case 3: return babl_format ("A u8");
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GIMP_GRAY:
|
||||||
|
switch (precision)
|
||||||
|
{
|
||||||
|
case GIMP_PRECISION_U8:
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0: return babl_format ("Y' u8");
|
||||||
|
case 1: return babl_format ("A u8");
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case GIMP_INDEXED:
|
||||||
|
/* need to use the image's api for this */
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
|
}
|
||||||
|
|
|
@ -32,6 +32,9 @@ GimpPrecision gimp_babl_format_get_precision (const Babl *format);
|
||||||
const Babl * gimp_babl_format (GimpImageBaseType base_type,
|
const Babl * gimp_babl_format (GimpImageBaseType base_type,
|
||||||
GimpPrecision precision,
|
GimpPrecision precision,
|
||||||
gboolean with_alpha);
|
gboolean with_alpha);
|
||||||
|
const Babl * gimp_babl_component_format (GimpImageBaseType base_type,
|
||||||
|
GimpPrecision precision,
|
||||||
|
gint index);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __GIMP_BABL_H__ */
|
#endif /* __GIMP_BABL_H__ */
|
||||||
|
|
Loading…
Reference in New Issue