shithub: imagetools

Download patch

ref: 8e1d6128c8e93dfb9216e328b1b889deb72b4796
parent: d0bb413fab671e82223a64c1011ce5cc738859ac
author: rodri <rgl@antares-labs.eu>
date: Thu May 1 03:32:18 EDT 2025

saturate by default

--- a/add.c
+++ b/add.c
@@ -4,7 +4,7 @@
 #include <memdraw.h>
 #include "fns.h"
 
-static int saturate;
+static int saturate = 1;
 
 static int
 opadd(uchar b1, uchar b2)
@@ -26,7 +26,7 @@
 	int i, j, fd;
 
 	ARGBEGIN{
-	case 's': saturate++; break;
+	case 's': saturate--; break;
 	default: usage();
 	}ARGEND;
 	if(argc < 2)
--- a/convolution.c
+++ b/convolution.c
@@ -6,7 +6,7 @@
 #include "fns.h"
 
 static int dim;
-static int saturate;
+static int saturate = 1;
 
 static char *
 getline(Biobuf *b)
@@ -172,14 +172,17 @@
 	free(im);
 }
 
-static void
-imgconvolution(Memimage *d, Memimage *s, double *k, int dim)
+static Memimage *
+imgconvolution(Memimage *s, double *k, int dim)
 {
+	Memimage *d;
 	double denom;
 	Rectangle *subr;
 	char *nprocs;
 	int nproc, i;
 
+	d = eallocmemimage(s->r, s->chan);
+
 	denom = coeffsum(k, dim);
 	denom = denom == 0? 1: 1/denom;
 
@@ -204,6 +207,7 @@
 		;
 
 	free(subr);
+	return d;
 }
 
 
@@ -222,7 +226,7 @@
 	int fd;
 
 	ARGBEGIN{
-	case 's': saturate++; break;
+	case 's': saturate--; break;
 	default: usage();
 	}ARGEND;
 	if(argc != 1)
@@ -236,13 +240,12 @@
 	kern = ckern;
 
 	in = ereadmemimage(0);
-	out = eallocmemimage(in->r, in->chan);
+	out = imgconvolution(in, kern, dim);
+	freememimage(in);
+	free(kern);
 
-	imgconvolution(out, in, kern, dim);
 	ewritememimage(1, out);
-
 	freememimage(out);
-	freememimage(in);
-	free(kern);
+
 	exits(nil);
 }
--- a/sobel.c
+++ b/sobel.c
@@ -4,7 +4,7 @@
 #include <memdraw.h>
 #include "fns.h"
 
-static int saturate;
+static int saturate = 1;
 static int byangle;
 
 static int
@@ -33,7 +33,7 @@
 	int i, fd;
 
 	ARGBEGIN{
-	case 's': saturate++; break;
+	case 's': saturate--; break;
 	case 'a': byangle++; break;
 	default: usage();
 	}ARGEND;
--- a/sub.c
+++ b/sub.c
@@ -4,7 +4,7 @@
 #include <memdraw.h>
 #include "fns.h"
 
-static int saturate;
+static int saturate = 1;
 
 static int
 opsub(uchar b1, uchar b2)
@@ -26,7 +26,7 @@
 	int i, fd;
 
 	ARGBEGIN{
-	case 's': saturate++; break;
+	case 's': saturate--; break;
 	default: usage();
 	}ARGEND;
 	if(argc != 2)
--