From c43fa4ae92a36b8f0f77c41b7bf7e4b0d1077faf Mon Sep 17 00:00:00 2001
From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org>
Date: Thu, 17 Oct 1996 22:48:55 +0200
Subject: [PATCH] new method: select_from(x,y,max_distance)

Rev: src/modules/image/image.c:1.18
Rev: src/modules/image/quant.c:1.9
---
 src/modules/image/image.c | 13 ++++++++-----
 src/modules/image/quant.c |  2 +-
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/modules/image/image.c b/src/modules/image/image.c
index 3ead03ddf1..a554cc9fca 100644
--- a/src/modules/image/image.c
+++ b/src/modules/image/image.c
@@ -1583,6 +1583,7 @@ void image_distancesq(INT32 args)
    push_object(o);
 }
 
+/*#define DEBUG_ISF*/
 #define ISF_LEFT 4
 #define ISF_RIGHT 8
 
@@ -1598,7 +1599,8 @@ void isf_seek(int mode,int ydir,INT32 low_limit,INT32 x1,INT32 x2,INT32 y,
 	   mode,ydir,low_limit,x1,x2,y,src,dest,xsize,ysize,rgb.r,rgb.g,rgb.b);
 #endif
 
-#define MARK_DISTANCE(_dest,_value) ((_dest).r=(_dest).g=(_dest).b=((_value)?(_value):1)),fprintf(stderr,"%d,",_value)
+#define MARK_DISTANCE(_dest,_value) \
+      ((_dest).r=(_dest).g=(_dest).b=(max(1,255-(_value>>8))))
    if ( mode&ISF_LEFT ) /* scan left from x1 */
    {
       x=x1;
@@ -1664,8 +1666,8 @@ fprintf(stderr," %d,%d,%d)\n",src[x+y*xsize].r,src[x+y*xsize].g,src[x+y*xsize].b
 fprintf(stderr,"==> %d (",DISTANCE(rgb,src[x+y*xsize]));
 fprintf(stderr," %d,%d,%d)\n",src[x+y*xsize].r,src[x+y*xsize].g,src[x+y*xsize].b);
 #endif
-      if ( dest[x+y*xsize].r ||
-	   (j=DISTANCE(rgb,src[x+y*xsize])) >low_limit) /* seen that */
+      if ( dest[x+y*xsize].r || /* seen that */
+	   (j=DISTANCE(rgb,src[x+y*xsize])) >low_limit) 
       {
 	 if (xr<x)
 	    isf_seek(ISF_LEFT*(xr==x1),ydir,low_limit,
@@ -1673,7 +1675,8 @@ fprintf(stderr," %d,%d,%d)\n",src[x+y*xsize].r,src[x+y*xsize].g,src[x+y*xsize].b
 	 while (++x<=x2)
 	    if ( (j=DISTANCE(rgb,src[x+y*xsize])) <=low_limit) break;
 	 xr=x;
-	 x++;
+/*	 x++; hokuspokus /law */
+/*       n�n dag ska jag f�rs�ka begripa varf�r... */
 	 if (x>x2) return;
 	 continue;
       }
@@ -1717,7 +1720,7 @@ void image_select_from(INT32 args)
       free_object(o);
       error("Out of memory\n");
    }
-   MEMSET(img->img,sizeof(rgb_group)*img->xsize*img->ysize,0);
+   MEMSET(img->img,0,sizeof(rgb_group)*img->xsize*img->ysize);
 
    if (sp[-args].u.integer>=0 && sp[-args].u.integer<img->xsize 
        && sp[1-args].u.integer>=0 && sp[1-args].u.integer<img->ysize)
diff --git a/src/modules/image/quant.c b/src/modules/image/quant.c
index 0a2a8b546e..e241a34030 100644
--- a/src/modules/image/quant.c
+++ b/src/modules/image/quant.c
@@ -24,8 +24,8 @@ David K
 /*
 #define QUANT_DEBUG
 #define QUANT_DEBUG_DEEP
-*/
 #define QUANT_CHRONO
+*/
 
 /**********************************************************************/
 
-- 
GitLab