[gimp] app: improve gimp_drawable_fill_buffer() for patterns
- From: Ell <ell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: improve gimp_drawable_fill_buffer() for patterns
- Date: Wed, 27 Mar 2019 19:50:12 +0000 (UTC)
commit 3c1634ee0d5a1d6bbf448253abe9b88b2172a2c2
Author: Ell <ell_se yahoo com>
Date: Wed Mar 27 14:50:20 2019 -0400
app: improve gimp_drawable_fill_buffer() for patterns
In gimp_drawable_fill_buffer(), when the fill-source is a pattern,
avoid going through an intermediate buffer when there's no profile
transform, and use the destination-buffer format for the
intermediate buffer, instead of the pattern format, when there is a
profile transform.
app/core/gimpdrawable-fill.c | 34 +++++++++++++++++++++-------------
1 file changed, 21 insertions(+), 13 deletions(-)
---
diff --git a/app/core/gimpdrawable-fill.c b/app/core/gimpdrawable-fill.c
index dfe8dd9405..c885625466 100644
--- a/app/core/gimpdrawable-fill.c
+++ b/app/core/gimpdrawable-fill.c
@@ -92,26 +92,34 @@ gimp_drawable_fill_buffer (GimpDrawable *drawable,
if (pattern)
{
- const Babl *format;
GeglBuffer *src_buffer;
GeglBuffer *dest_buffer;
GimpColorProfile *src_profile;
GimpColorProfile *dest_profile;
src_buffer = gimp_pattern_create_buffer (pattern);
- format = gegl_buffer_get_format (src_buffer);
- dest_buffer = gegl_buffer_new (gegl_buffer_get_extent (src_buffer),
- format);
-
- src_profile = gimp_babl_format_get_color_profile (format);
- dest_profile = gimp_color_managed_get_color_profile (GIMP_COLOR_MANAGED (drawable));
-
- gimp_gegl_convert_color_profile (src_buffer, NULL, src_profile,
- dest_buffer, NULL, dest_profile,
- GIMP_COLOR_RENDERING_INTENT_PERCEPTUAL,
- TRUE,
- NULL);
+ src_profile = gimp_babl_format_get_color_profile (
+ gegl_buffer_get_format (src_buffer));
+ dest_profile = gimp_color_managed_get_color_profile (
+ GIMP_COLOR_MANAGED (drawable));
+
+ if (gimp_color_transform_can_gegl_copy (src_profile, dest_profile))
+ {
+ dest_buffer = g_object_ref (src_buffer);
+ }
+ else
+ {
+ dest_buffer = gegl_buffer_new (gegl_buffer_get_extent (src_buffer),
+ gegl_buffer_get_format (buffer));
+
+ gimp_gegl_convert_color_profile (
+ src_buffer, NULL, src_profile,
+ dest_buffer, NULL, dest_profile,
+ GIMP_COLOR_RENDERING_INTENT_PERCEPTUAL,
+ TRUE,
+ NULL);
+ }
g_object_unref (src_profile);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]