app: add gimp_babl_get_description()

which keeps around human readable and translatable strings for Babl
formats, as replacement for the to-be-obsoleted image type etc. enum
descriptions.
This commit is contained in:
Michael Natterer
2012-04-11 17:34:43 +02:00
parent a9e60bf6ce
commit 310c1bfb71
4 changed files with 69 additions and 21 deletions

View File

@ -34,6 +34,7 @@
#include "config/gimpcoreconfig.h"
#include "gegl/gimp-gegl.h"
#include "gegl/gimp-gegl-utils.h"
#include "gimp.h"
@ -973,9 +974,7 @@ gimp_thumbnail_set_info_from_image (GimpThumbnail *thumbnail,
const gchar *mime_type,
GimpImage *image)
{
GimpEnumDesc *desc;
const Babl *format;
GimpImageType type;
const Babl *format;
/* peek the thumbnail to make sure that mtime and filesize are set */
gimp_thumbnail_peek_image (thumbnail);
@ -983,15 +982,11 @@ gimp_thumbnail_set_info_from_image (GimpThumbnail *thumbnail,
format = gimp_image_get_layer_format (image,
gimp_image_has_alpha (image));
type = gimp_babl_format_get_image_type (format);
desc = gimp_enum_get_desc (g_type_class_peek (GIMP_TYPE_IMAGE_TYPE), type);
g_object_set (thumbnail,
"image-mimetype", mime_type,
"image-width", gimp_image_get_width (image),
"image-height", gimp_image_get_height (image),
"image-type", desc->value_desc,
"image-type", gimp_babl_get_description (format),
"image-num-layers", gimp_image_get_n_layers (image),
NULL);
}

View File

@ -31,6 +31,8 @@
#include "config/gimpdisplayconfig.h"
#include "gegl/gimp-gegl.h"
#include "core/gimpcontainer.h"
#include "core/gimpdrawable.h"
#include "core/gimpimage.h"
@ -135,17 +137,6 @@ gimp_display_shell_title_image_type (GimpImage *image)
return name;
}
static const gchar *
gimp_display_shell_title_drawable_type (GimpDrawable *drawable)
{
const gchar *name = "";
gimp_enum_get_value (GIMP_TYPE_IMAGE_TYPE,
gimp_drawable_type (drawable), NULL, NULL, &name, NULL);
return name;
}
static gint print (gchar *buf,
gint len,
gint start,
@ -248,10 +239,11 @@ gimp_display_shell_format_title (GimpDisplayShell *shell,
case 'T': /* drawable type */
{
GimpDrawable *drawable = gimp_image_get_active_drawable (image);
const Babl *format = gimp_drawable_get_format (drawable);
if (drawable)
i += print (title, title_len, i, "%s",
gimp_display_shell_title_drawable_type (drawable));
gimp_babl_get_description (format));
}
break;

View File

@ -79,6 +79,8 @@
#include "gimpoperationreplacemode.h"
#include "gimpoperationantierasemode.h"
#include "gimp-intl.h"
static void gimp_gegl_notify_tile_cache_size (GimpBaseConfig *config);
@ -179,6 +181,63 @@ gimp_gegl_init (Gimp *gimp)
g_type_class_ref (GIMP_TYPE_OPERATION_ANTI_ERASE_MODE);
}
static const struct
{
const gchar *name;
const gchar *description;
}
babl_descriptions[] =
{
{ "R'G'B' u8", N_("RGB") },
{ "R'G'B'A u8", N_("RGB-alpha") },
{ "Y' u8", N_("Grayscale") },
{ "Y'A u8", N_("Grayscale-alpha") },
{ "R' u8", N_("Red component") },
{ "G' u8", N_("Green component") },
{ "B' u8", N_("Blue component") },
{ "A u8", N_("Alpha component") }
};
static GHashTable *babl_description_hash = NULL;
const gchar *
gimp_babl_get_description (const Babl *babl)
{
const gchar *description;
g_return_val_if_fail (babl != NULL, NULL);
if (G_UNLIKELY (! babl_description_hash))
{
gint i;
babl_description_hash = g_hash_table_new (g_str_hash,
g_str_equal);
for (i = 0; i < G_N_ELEMENTS (babl_descriptions); i++)
g_hash_table_insert (babl_description_hash,
(gpointer) babl_descriptions[i].name,
gettext (babl_descriptions[i].description));
}
if (babl_format_is_palette (babl))
{
if (babl_format_has_alpha (babl))
return _("Indexed-alpha");
else
return _("Indexed");
}
description = g_hash_table_lookup (babl_description_hash,
babl_get_name (babl));
if (description)
return description;
return g_strconcat ("ERROR: unknown Babl format ",
babl_get_name (babl), NULL);
}
static void
gimp_gegl_notify_tile_cache_size (GimpBaseConfig *config)
{

View File

@ -22,7 +22,9 @@
#define __GIMP_GEGL_H__
void gimp_gegl_init (Gimp *gimp);
void gimp_gegl_init (Gimp *gimp);
const gchar * gimp_babl_get_description (const Babl *babl);
#endif /* __GIMP_GEGL_H__ */