From 7a755d5b5284598668979c51f140face0da616cf Mon Sep 17 00:00:00 2001 From: Ell Date: Fri, 17 Feb 2017 12:13:33 -0500 Subject: [PATCH] app: implement the different composite modes for dissolve mode --- .../layer-modes/gimpoperationdissolve.c | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/app/operations/layer-modes/gimpoperationdissolve.c b/app/operations/layer-modes/gimpoperationdissolve.c index bd59ea8508..e99ff5f045 100644 --- a/app/operations/layer-modes/gimpoperationdissolve.c +++ b/app/operations/layer-modes/gimpoperationdissolve.c @@ -117,14 +117,32 @@ gimp_operation_dissolve_process (GeglOperation *op, out[0] = in[0]; out[1] = in[1]; out[2] = in[2]; - out[3] = in[3]; + + if (layer_mode->composite_mode == GIMP_LAYER_COMPOSITE_SRC_OVER || + layer_mode->composite_mode == GIMP_LAYER_COMPOSITE_SRC_ATOP) + { + out[3] = in[3]; + } + else + { + out[3] = 0.0f; + } } else { out[0] = layer[0]; out[1] = layer[1]; out[2] = layer[2]; - out[3] = 1.0; + + if (layer_mode->composite_mode == GIMP_LAYER_COMPOSITE_SRC_OVER || + layer_mode->composite_mode == GIMP_LAYER_COMPOSITE_DST_ATOP) + { + out[3] = 1.0f; + } + else + { + out[3] = in[3]; + } } in += 4;