app: add gimp_gegl_pyramid_get_memsize(), used by gimp_projection_get_memsize()

This commit is contained in:
Michael Natterer 2014-06-15 18:21:05 +02:00
parent 02c9dacc8f
commit 9f0fde1397
3 changed files with 19 additions and 1 deletions

View File

@ -304,6 +304,23 @@ gimp_gegl_buffer_get_memsize (GeglBuffer *buffer)
return 0;
}
gint64
gimp_gegl_pyramid_get_memsize (GeglBuffer *buffer)
{
if (buffer)
{
const Babl *format = gegl_buffer_get_format (buffer);
/* The pyramid levels constitute a geometric sum with a ratio of 1/4. */
return ((gint64) babl_format_get_bytes_per_pixel (format) *
(gint64) gegl_buffer_get_width (buffer) *
(gint64) gegl_buffer_get_height (buffer) * 1.33 +
gimp_g_object_get_memsize (G_OBJECT (buffer)));
}
return 0;
}
gint64
gimp_string_get_memsize (const gchar *string)
{

View File

@ -53,6 +53,7 @@ gint64 gimp_g_value_get_memsize (GValue *value);
gint64 gimp_g_param_spec_get_memsize (GParamSpec *pspec);
gint64 gimp_gegl_buffer_get_memsize (GeglBuffer *buffer);
gint64 gimp_gegl_pyramid_get_memsize (GeglBuffer *buffer);
gint64 gimp_string_get_memsize (const gchar *string);
gint64 gimp_parasite_get_memsize (GimpParasite *parasite,

View File

@ -296,7 +296,7 @@ gimp_projection_get_memsize (GimpObject *object,
GimpProjection *projection = GIMP_PROJECTION (object);
gint64 memsize = 0;
memsize += gimp_gegl_buffer_get_memsize (projection->priv->buffer);
memsize += gimp_gegl_pyramid_get_memsize (projection->priv->buffer);
return memsize + GIMP_OBJECT_CLASS (parent_class)->get_memsize (object,
gui_size);