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