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);
|
||||
|
||||
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
|
||||
|
@ -2061,12 +2066,33 @@ gimp_image_get_component_format (const GimpImage *image,
|
|||
|
||||
switch (channel)
|
||||
{
|
||||
case GIMP_RED_CHANNEL: return babl_format ("R' u8");
|
||||
case GIMP_GREEN_CHANNEL: return babl_format ("G' u8");
|
||||
case GIMP_BLUE_CHANNEL: return babl_format ("B' u8");
|
||||
case GIMP_GRAY_CHANNEL: return babl_format ("Y' u8");
|
||||
case GIMP_INDEXED_CHANNEL: return babl_format ("Y' u8"); /* XXX: seems wrong */
|
||||
case GIMP_ALPHA_CHANNEL: return babl_format ("A u8");
|
||||
case GIMP_RED_CHANNEL:
|
||||
return gimp_babl_component_format (GIMP_RGB,
|
||||
gimp_image_get_precision (image),
|
||||
RED);
|
||||
|
||||
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;
|
||||
|
|
|
@ -206,3 +206,54 @@ gimp_babl_format (GimpImageBaseType base_type,
|
|||
|
||||
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,
|
||||
GimpPrecision precision,
|
||||
gboolean with_alpha);
|
||||
const Babl * gimp_babl_component_format (GimpImageBaseType base_type,
|
||||
GimpPrecision precision,
|
||||
gint index);
|
||||
|
||||
|
||||
#endif /* __GIMP_BABL_H__ */
|
||||
|
|
Loading…
Reference in New Issue