xref: /csrg-svn/old/lib2648/minmax.c (revision 19797)
111480Sralph /*
2*19797Sdist  * Copyright (c) 1980 Regents of the University of California.
3*19797Sdist  * All rights reserved.  The Berkeley software License Agreement
4*19797Sdist  * specifies the terms and conditions for redistribution.
5*19797Sdist  */
6*19797Sdist 
7*19797Sdist #ifndef lint
8*19797Sdist static char sccsid[] = "@(#)minmax.c	5.1 (Berkeley) 04/30/85";
9*19797Sdist #endif not lint
10*19797Sdist 
11*19797Sdist /*
1211480Sralph  * minmax: find the 4 edges of the glyph within a window.
1311480Sralph  */
1411480Sralph 
1511480Sralph #include "bit.h"
1611480Sralph 
minmax(g,nrow,ncol,rmin,cmin,rmax,cmax)1711480Sralph minmax(g, nrow, ncol, rmin, cmin, rmax, cmax)
1811480Sralph bitmat g;
1911480Sralph int nrow, ncol;
2011480Sralph int *rmin, *cmin, *rmax, *cmax;
2111480Sralph {
2211480Sralph 	register int i, j;
2311480Sralph 	register int r1, r2, c1, c2;
2411480Sralph 	int ar1, ar2, ac1, ac2;
2511480Sralph 
2611480Sralph 	aminmax(g, nrow, ncol, &ar1, &ac1, &ar2, &ac2);
2711480Sralph #ifdef TRACE
2811480Sralph 	if (trace)
2911480Sralph 		fprintf(trace, "aminmax returns %d, %d, %d, %d\n", ar1, ac1, ar2, ac2);
3011480Sralph #endif
3111480Sralph 	r1 = nrow; c1 = ncol; r2 = c2 = 0;
3211480Sralph 	for (i=ar1; i<=ar2; i++)
3311480Sralph 		for (j=ac1; j<=ac2; j++)
3411480Sralph 			if (mat(g, nrow, ncol, i, j, 8)) {
3511480Sralph 				r1 = min(r1, i);
3611480Sralph 				r2 = max(r2, i);
3711480Sralph 				c1 = min(c1, j);
3811480Sralph 				c2 = max(c2, j);
3911480Sralph 			}
4011480Sralph 	if (r2 < r1) {
4111480Sralph 		/* empty glyph! */
4211480Sralph 		r1 = c1 = r2 = c2 = 1;
4311480Sralph 	}
4411480Sralph 	*rmin = r1; *rmax = r2;
4511480Sralph 	*cmin = c1; *cmax = c2;
4611480Sralph }
47