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)
--
⑨