libgimpwidgets: add GimpColorDisplay::convert_buffer()

which takes a GeglBuffer and a GeglRectangle.
This commit is contained in:
Michael Natterer 2013-11-01 22:34:09 +01:00
parent 5fd46384a5
commit 50d4fe3496
5 changed files with 80 additions and 5 deletions

View file

@ -141,6 +141,7 @@ gimp_color_display_class_init (GimpColorDisplayClass *klass)
klass->stock_id = GIMP_STOCK_DISPLAY_FILTER;
klass->clone = NULL;
klass->convert_buffer = NULL;
klass->convert_surface = NULL;
klass->convert = NULL;
klass->load_state = NULL;
@ -335,6 +336,32 @@ gimp_color_display_clone (GimpColorDisplay *display)
return GIMP_COLOR_DISPLAY (gimp_config_duplicate (GIMP_CONFIG (display)));
}
/**
* gimp_color_display_convert_buffer:
* @display: a #GimpColorDisplay
* @buffer: a #GeglBuffer
* @area: area in @buffer to convert
*
* Converts all pixels in @area of @buffer.
*
* Since: GIMP 2.10
**/
void
gimp_color_display_convert_buffer (GimpColorDisplay *display,
GeglBuffer *buffer,
GeglRectangle *area)
{
g_return_if_fail (GIMP_IS_COLOR_DISPLAY (display));
g_return_if_fail (GEGL_IS_BUFFER (buffer));
if (display->enabled &&
GIMP_COLOR_DISPLAY_GET_CLASS (display)->convert_buffer)
{
GIMP_COLOR_DISPLAY_GET_CLASS (display)->convert_buffer (display, buffer,
area);
}
}
/**
* gimp_color_display_convert_surface:
* @display: a #GimpColorDisplay
@ -343,6 +370,8 @@ gimp_color_display_clone (GimpColorDisplay *display)
* Converts all pixels in @surface.
*
* Since: GIMP 2.8
*
* Deprecated: GIMP 2.8: Use gimp_color_display_convert_buffer() instead.
**/
void
gimp_color_display_convert_surface (GimpColorDisplay *display,
@ -373,7 +402,7 @@ gimp_color_display_convert_surface (GimpColorDisplay *display,
*
* Converts all pixels in @buf.
*
* Deprecated: GIMP 2.8: Use gimp_color_display_convert_surface() instead.
* Deprecated: GIMP 2.8: Use gimp_color_display_convert_buffer() instead.
**/
void
gimp_color_display_convert (GimpColorDisplay *display,

View file

@ -85,11 +85,15 @@ struct _GimpColorDisplayClass
const gchar *stock_id;
/* implementing the GimpColorDisplay::convert_surface method is deprecated */
void (* convert_surface) (GimpColorDisplay *display,
cairo_surface_t *surface);
void (* convert_buffer) (GimpColorDisplay *display,
GeglBuffer *buffer,
GeglRectangle *area);
/* Padding for future expansion */
void (* _gimp_reserved3) (void);
void (* _gimp_reserved4) (void);
};
@ -100,9 +104,13 @@ GIMP_DEPRECATED_FOR(g_object_new)
GimpColorDisplay * gimp_color_display_new (GType display_type);
GimpColorDisplay * gimp_color_display_clone (GimpColorDisplay *display);
void gimp_color_display_convert_buffer (GimpColorDisplay *display,
GeglBuffer *buffer,
GeglRectangle *area);
GIMP_DEPRECATED_FOR(gimp_color_display_convert_buffer)
void gimp_color_display_convert_surface (GimpColorDisplay *display,
cairo_surface_t *surface);
GIMP_DEPRECATED_FOR(gimp_color_display_convert_surface)
GIMP_DEPRECATED_FOR(gimp_color_display_convert_buffer)
void gimp_color_display_convert (GimpColorDisplay *display,
guchar *buf,
gint width,

View file

@ -285,6 +285,34 @@ gimp_color_display_stack_reorder_down (GimpColorDisplayStack *stack,
}
}
/**
* gimp_color_display_stack_convert_buffer:
* @stack: a #GimpColorDisplayStack
* @buffer: a #GeglBuffer
* @area: area of @buffer to convert
*
* Runs all the stack's filters on all pixels in @area of @buffer.
*
* Since: GIMP 2.10
**/
void
gimp_color_display_stack_convert_buffer (GimpColorDisplayStack *stack,
GeglBuffer *buffer,
GeglRectangle *area)
{
GList *list;
g_return_if_fail (GIMP_IS_COLOR_DISPLAY_STACK (stack));
g_return_if_fail (GEGL_IS_BUFFER (buffer));
for (list = stack->filters; list; list = g_list_next (list))
{
GimpColorDisplay *display = list->data;
gimp_color_display_convert_buffer (display, buffer, area);
}
}
/**
* gimp_color_display_stack_convert_surface:
* @stack: a #GimpColorDisplayStack
@ -293,6 +321,8 @@ gimp_color_display_stack_reorder_down (GimpColorDisplayStack *stack,
* Runs all the stack's filters on all pixels in @surface.
*
* Since: GIMP 2.8
*
* Deprecated: GIMP 2.10: Use gimp_color_display_stack_convert_buffer() instead.
**/
void
gimp_color_display_stack_convert_surface (GimpColorDisplayStack *stack,
@ -309,7 +339,9 @@ gimp_color_display_stack_convert_surface (GimpColorDisplayStack *stack,
{
GimpColorDisplay *display = list->data;
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
gimp_color_display_convert_surface (display, surface);
G_GNUC_END_IGNORE_DEPRECATIONS
}
}
@ -324,7 +356,7 @@ gimp_color_display_stack_convert_surface (GimpColorDisplayStack *stack,
*
* Converts all pixels in @buf.
*
* Deprecated: GIMP 2.8: Use gimp_color_display_stack_convert_surface() instead.
* Deprecated: GIMP 2.8: Use gimp_color_display_stack_convert_buffer() instead.
**/
void
gimp_color_display_stack_convert (GimpColorDisplayStack *stack,

View file

@ -85,9 +85,13 @@ void gimp_color_display_stack_reorder_up (GimpColorDisplayStack *stack,
GimpColorDisplay *display);
void gimp_color_display_stack_reorder_down (GimpColorDisplayStack *stack,
GimpColorDisplay *display);
void gimp_color_display_stack_convert_buffer (GimpColorDisplayStack *stack,
GeglBuffer *buffer,
GeglRectangle *area);
GIMP_DEPRECATED_FOR(gimp_color_display_stack_convert_buffer)
void gimp_color_display_stack_convert_surface (GimpColorDisplayStack *stack,
cairo_surface_t *surface);
GIMP_DEPRECATED_FOR(gimp_color_display_stack_convert_surface)
GIMP_DEPRECATED_FOR(gimp_color_display_stack_convert_buffer)
void gimp_color_display_stack_convert (GimpColorDisplayStack *stack,
guchar *buf,
gint width,

View file

@ -44,6 +44,7 @@ EXPORTS
gimp_color_display_configure
gimp_color_display_configure_reset
gimp_color_display_convert
gimp_color_display_convert_buffer
gimp_color_display_convert_surface
gimp_color_display_get_config
gimp_color_display_get_enabled
@ -57,6 +58,7 @@ EXPORTS
gimp_color_display_stack_changed
gimp_color_display_stack_clone
gimp_color_display_stack_convert
gimp_color_display_stack_convert_buffer
gimp_color_display_stack_convert_surface
gimp_color_display_stack_get_type
gimp_color_display_stack_new