app: use actual render area when processing display filters

When processing display filters, shift the filter buffer to the
top-left corner of the render area, and pass the actual render
area, instead of an area whose top-left coords are (0, 0), to the
display filter.  This allows for position-dependent display
filters.
This commit is contained in:
Ell 2017-11-02 13:33:52 -04:00
parent e042393199
commit a5a2b56850
1 changed files with 12 additions and 2 deletions

View File

@ -274,13 +274,23 @@ gimp_display_shell_render (GimpDisplayShell *shell,
if (gimp_display_shell_has_filter (shell))
{
GeglBuffer *filter_buffer;
filter_buffer = g_object_new (GEGL_TYPE_BUFFER,
"source", shell->filter_buffer,
"shift-x", -scaled_x,
"shift-y", -scaled_y,
NULL);
/* convert the filter_buffer in place
*/
gimp_color_display_stack_convert_buffer (shell->filter_stack,
shell->filter_buffer,
GEGL_RECTANGLE (0, 0,
filter_buffer,
GEGL_RECTANGLE (scaled_x, scaled_y,
scaled_width,
scaled_height));
g_object_unref (filter_buffer);
}
if (gimp_display_shell_has_filter (shell) || ! can_convert_to_u8)