app: add image API to get Babl formats based on GimpImageType

because we often have only a type and an image, but no drawable
(yet) to ask for its types.
This commit is contained in:
Michael Natterer
2012-03-18 17:08:33 +01:00
parent b05e213d6d
commit 906176831d
6 changed files with 81 additions and 73 deletions

View File

@ -1830,90 +1830,28 @@ gimp_drawable_fill_by_type (GimpDrawable *drawable,
const Babl *
gimp_drawable_get_format (const GimpDrawable *drawable)
{
GimpImageType type;
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
type = gimp_drawable_type (drawable);
switch (type)
{
case GIMP_RGB_IMAGE: return babl_format ("RGB u8");
case GIMP_RGBA_IMAGE: return babl_format ("RGBA u8");
case GIMP_GRAY_IMAGE: return babl_format ("Y u8");
case GIMP_GRAYA_IMAGE: return babl_format ("YA u8");
case GIMP_INDEXED_IMAGE:
case GIMP_INDEXEDA_IMAGE:
{
GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable));
return (type == GIMP_INDEXED_IMAGE ?
gimp_image_colormap_get_rgb_format (image) :
gimp_image_colormap_get_rgba_format (image));
}
}
g_warn_if_reached ();
return NULL;
return gimp_image_get_format (gimp_item_get_image (GIMP_ITEM (drawable)),
gimp_drawable_type (drawable));
}
const Babl *
gimp_drawable_get_format_with_alpha (const GimpDrawable *drawable)
{
GimpImageType type;
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
type = gimp_drawable_type (drawable);
switch (type)
{
case GIMP_RGB_IMAGE:
case GIMP_RGBA_IMAGE: return babl_format ("RGBA u8");
case GIMP_GRAY_IMAGE:
case GIMP_GRAYA_IMAGE: return babl_format ("YA u8");
case GIMP_INDEXED_IMAGE:
case GIMP_INDEXEDA_IMAGE:
{
GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable));
return gimp_image_colormap_get_rgba_format (image);
}
}
g_warn_if_reached ();
return NULL;
return gimp_image_get_format_with_alpha (gimp_item_get_image (GIMP_ITEM (drawable)),
gimp_drawable_type (drawable));
}
const Babl *
gimp_drawable_get_format_without_alpha (const GimpDrawable *drawable)
{
GimpImageType type;
g_return_val_if_fail (GIMP_IS_DRAWABLE (drawable), NULL);
type = gimp_drawable_type (drawable);
switch (type)
{
case GIMP_RGB_IMAGE:
case GIMP_RGBA_IMAGE: return babl_format ("RGB u8");
case GIMP_GRAY_IMAGE:
case GIMP_GRAYA_IMAGE: return babl_format ("Y u8");
case GIMP_INDEXED_IMAGE:
case GIMP_INDEXEDA_IMAGE:
{
GimpImage *image = gimp_item_get_image (GIMP_ITEM (drawable));
return gimp_image_colormap_get_rgb_format (image);
}
}
g_warn_if_reached ();
return NULL;
return gimp_image_get_format_without_alpha (gimp_item_get_image (GIMP_ITEM (drawable)),
gimp_drawable_type (drawable));
}
gboolean

View File

@ -129,7 +129,7 @@ gimp_image_colormap_free (GimpImage *image)
}
const Babl *
gimp_image_colormap_get_rgb_format (GimpImage *image)
gimp_image_colormap_get_rgb_format (const GimpImage *image)
{
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
@ -137,7 +137,7 @@ gimp_image_colormap_get_rgb_format (GimpImage *image)
}
const Babl *
gimp_image_colormap_get_rgba_format (GimpImage *image)
gimp_image_colormap_get_rgba_format (const GimpImage *image)
{
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);

View File

@ -26,8 +26,8 @@ void gimp_image_colormap_init (GimpImage *image);
void gimp_image_colormap_dispose (GimpImage *image);
void gimp_image_colormap_free (GimpImage *image);
const Babl * gimp_image_colormap_get_rgb_format (GimpImage *image);
const Babl * gimp_image_colormap_get_rgba_format (GimpImage *image);
const Babl * gimp_image_colormap_get_rgb_format (const GimpImage *image);
const Babl * gimp_image_colormap_get_rgba_format (const GimpImage *image);
GimpPalette * gimp_image_get_colormap_palette (GimpImage *image);

View File

@ -1495,6 +1495,69 @@ gimp_image_get_combination_mode (GimpImageType dest_type,
return valid_combinations[dest_type][src_bytes];
}
const Babl *
gimp_image_get_format (const GimpImage *image,
GimpImageType type)
{
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
switch (type)
{
case GIMP_RGB_IMAGE: return babl_format ("RGB u8");
case GIMP_RGBA_IMAGE: return babl_format ("RGBA u8");
case GIMP_GRAY_IMAGE: return babl_format ("Y u8");
case GIMP_GRAYA_IMAGE: return babl_format ("YA u8");
case GIMP_INDEXED_IMAGE: return gimp_image_colormap_get_rgb_format (image);
case GIMP_INDEXEDA_IMAGE: return gimp_image_colormap_get_rgba_format (image);
}
g_warn_if_reached ();
return NULL;
}
const Babl *
gimp_image_get_format_with_alpha (const GimpImage *image,
GimpImageType type)
{
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
switch (type)
{
case GIMP_RGB_IMAGE:
case GIMP_RGBA_IMAGE: return babl_format ("RGBA u8");
case GIMP_GRAY_IMAGE:
case GIMP_GRAYA_IMAGE: return babl_format ("YA u8");
case GIMP_INDEXED_IMAGE:
case GIMP_INDEXEDA_IMAGE: return gimp_image_colormap_get_rgba_format (image);
}
g_warn_if_reached ();
return NULL;
}
const Babl *
gimp_image_get_format_without_alpha (const GimpImage *image,
GimpImageType type)
{
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
switch (type)
{
case GIMP_RGB_IMAGE:
case GIMP_RGBA_IMAGE: return babl_format ("RGB u8");
case GIMP_GRAY_IMAGE:
case GIMP_GRAYA_IMAGE: return babl_format ("Y u8");
case GIMP_INDEXED_IMAGE:
case GIMP_INDEXEDA_IMAGE: return gimp_image_colormap_get_rgb_format (image);
}
g_warn_if_reached ();
return NULL;
}
gint
gimp_image_get_ID (const GimpImage *image)
{

View File

@ -170,6 +170,13 @@ GimpImageType gimp_image_base_type_with_alpha (const GimpImage *image);
CombinationMode gimp_image_get_combination_mode (GimpImageType dest_type,
gint src_bytes);
const Babl * gimp_image_get_format (const GimpImage *image,
GimpImageType type);
const Babl * gimp_image_get_format_with_alpha (const GimpImage *image,
GimpImageType type);
const Babl * gimp_image_get_format_without_alpha (const GimpImage *image,
GimpImageType type);
gint gimp_image_get_ID (const GimpImage *image);
GimpImage * gimp_image_get_by_ID (Gimp *gimp,
gint id);