diff --git a/app/actions/drawable-commands.c b/app/actions/drawable-commands.c index e697a8678b..50d61b32b0 100644 --- a/app/actions/drawable-commands.c +++ b/app/actions/drawable-commands.c @@ -67,8 +67,9 @@ drawable_invert_cmd_callback (GtkAction *action, return_if_no_drawable (image, drawable, data); return_if_no_display (display, data); + /* FIXME invert masks? */ gimp_drawable_apply_operation_by_name (drawable, GIMP_PROGRESS (display), - _("Invert"), "gegl:invert", + _("Invert"), "gegl:invert-gamma", NULL); gimp_image_flush (image); } diff --git a/app/core/gimpchannel.c b/app/core/gimpchannel.c index 83f44e77f0..300869d14d 100644 --- a/app/core/gimpchannel.c +++ b/app/core/gimpchannel.c @@ -430,7 +430,7 @@ gimp_channel_get_node (GimpFilter *filter) g_warn_if_fail (channel->invert_node == NULL); channel->invert_node = gegl_node_new_child (node, - "operation", "gegl:invert", + "operation", "gegl:invert-linear", NULL); if (channel->show_masked) @@ -1299,9 +1299,9 @@ gimp_channel_real_invert (GimpChannel *channel, } else { - gimp_gegl_apply_invert (gimp_drawable_get_buffer (drawable), - NULL, NULL, - gimp_drawable_get_buffer (drawable)); + gimp_gegl_apply_invert_linear (gimp_drawable_get_buffer (drawable), + NULL, NULL, + gimp_drawable_get_buffer (drawable)); channel->bounds_known = FALSE; diff --git a/app/gegl/gimp-gegl-apply-operation.c b/app/gegl/gimp-gegl-apply-operation.c index 43385a65e5..439e3c6ac0 100644 --- a/app/gegl/gimp-gegl-apply-operation.c +++ b/app/gegl/gimp-gegl-apply-operation.c @@ -232,10 +232,10 @@ gimp_gegl_apply_gaussian_blur (GeglBuffer *src_buffer, } void -gimp_gegl_apply_invert (GeglBuffer *src_buffer, - GimpProgress *progress, - const gchar *undo_desc, - GeglBuffer *dest_buffer) +gimp_gegl_apply_invert_gamma (GeglBuffer *src_buffer, + GimpProgress *progress, + const gchar *undo_desc, + GeglBuffer *dest_buffer) { GeglNode *node; @@ -244,7 +244,7 @@ gimp_gegl_apply_invert (GeglBuffer *src_buffer, g_return_if_fail (GEGL_IS_BUFFER (dest_buffer)); node = gegl_node_new_child (NULL, - "operation", "gegl:invert", + "operation", "gegl:invert-gamma", NULL); gimp_gegl_apply_operation (src_buffer, progress, undo_desc, @@ -252,6 +252,26 @@ gimp_gegl_apply_invert (GeglBuffer *src_buffer, g_object_unref (node); } +void +gimp_gegl_apply_invert_linear (GeglBuffer *src_buffer, + GimpProgress *progress, + const gchar *undo_desc, + GeglBuffer *dest_buffer) +{ + GeglNode *node; + + g_return_if_fail (GEGL_IS_BUFFER (src_buffer)); + g_return_if_fail (progress == NULL || GIMP_IS_PROGRESS (progress)); + g_return_if_fail (GEGL_IS_BUFFER (dest_buffer)); + + node = gegl_node_new_child (NULL, + "operation", "gegl:invert-linear", + NULL); + + gimp_gegl_apply_operation (src_buffer, progress, undo_desc, + node, dest_buffer, NULL); + g_object_unref (node); +} void gimp_gegl_apply_opacity (GeglBuffer *src_buffer, diff --git a/app/gegl/gimp-gegl-apply-operation.h b/app/gegl/gimp-gegl-apply-operation.h index 11365d75db..14e3822044 100644 --- a/app/gegl/gimp-gegl-apply-operation.h +++ b/app/gegl/gimp-gegl-apply-operation.h @@ -63,7 +63,12 @@ void gimp_gegl_apply_gaussian_blur (GeglBuffer *src_buffer, gdouble std_dev_x, gdouble std_dev_y); -void gimp_gegl_apply_invert (GeglBuffer *src_buffer, +void gimp_gegl_apply_invert_gamma (GeglBuffer *src_buffer, + GimpProgress *progress, + const gchar *undo_desc, + GeglBuffer *dest_buffer); + +void gimp_gegl_apply_invert_linear (GeglBuffer *src_buffer, GimpProgress *progress, const gchar *undo_desc, GeglBuffer *dest_buffer); diff --git a/app/pdb/color-cmds.c b/app/pdb/color-cmds.c index 05724a3d8a..cda0ddd21e 100644 --- a/app/pdb/color-cmds.c +++ b/app/pdb/color-cmds.c @@ -385,7 +385,7 @@ invert_invoker (GimpProcedure *procedure, { gimp_drawable_apply_operation_by_name (drawable, progress, _("Invert"), - "gegl:invert", + "gegl:invert-gamma", NULL); } else diff --git a/app/tools/gimpgegltool.c b/app/tools/gimpgegltool.c index 3b444adeac..2435556aed 100644 --- a/app/tools/gimpgegltool.c +++ b/app/tools/gimpgegltool.c @@ -132,7 +132,8 @@ gimp_gegl_tool_operation_blacklisted (const gchar *name, "gegl:fractal-trace", "gegl:gaussian-blur", "gegl:grid", - "gegl:invert", + "gegl:invert-linear", + "gegl:invert-gamma", "gegl:lens-distortion", "gegl:mono-mixer", "gegl:motion-blur-circular", diff --git a/tools/pdbgen/pdb/color.pdb b/tools/pdbgen/pdb/color.pdb index 55bec291aa..a6430b7dee 100644 --- a/tools/pdbgen/pdb/color.pdb +++ b/tools/pdbgen/pdb/color.pdb @@ -388,7 +388,7 @@ HELP { gimp_drawable_apply_operation_by_name (drawable, progress, _("Invert"), - "gegl:invert", + "gegl:invert-gamma", NULL); } else