From 4dea51bbdb87ef0f6f0cf3a62620d0541fa09bdf Mon Sep 17 00:00:00 2001 From: Dan Royer Date: Tue, 11 Feb 2025 12:39:18 -0800 Subject: [PATCH] added "add" and "subtract" blending modes --- .../donatello/nodes/images/BlendImages.java | 71 +++++++++++++------ 1 file changed, 48 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/marginallyclever/donatello/nodes/images/BlendImages.java b/src/main/java/com/marginallyclever/donatello/nodes/images/BlendImages.java index c50f01e..cd9001c 100644 --- a/src/main/java/com/marginallyclever/donatello/nodes/images/BlendImages.java +++ b/src/main/java/com/marginallyclever/donatello/nodes/images/BlendImages.java @@ -6,6 +6,8 @@ import com.marginallyclever.nodegraphcore.Node; import java.awt.image.BufferedImage; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.stream.IntStream; /** * blend difference @@ -23,7 +25,7 @@ public class BlendImages extends Node { */ public BlendImages() { super("BlendImages"); - style.setOptions(new String[]{"Difference","Multiply","Screen"}); + style.setOptions(new String[]{"Difference","Multiply","Screen","Add","Subtract"}); addPort(a); addPort(b); addPort(style); @@ -42,14 +44,18 @@ public void update() { // TODO check A and B have the same pixel format? int components = A.getColorModel().getNumComponents(); - float [] pa = new float[components]; - float [] pb = new float[components]; var ar = A.getRaster(); var br = B.getRaster(); var cr = C.getRaster(); - for(int y=0;y { + float [] pa = new float[components]; + float [] pb = new float[components]; for(int x=0;x