xref: /csrg-svn/old/lib2648/minmax.c (revision 11480)
1*11480Sralph /*	minmax.c	4.1	83/03/09	*/
2*11480Sralph /*
3*11480Sralph  * minmax: find the 4 edges of the glyph within a window.
4*11480Sralph  */
5*11480Sralph 
6*11480Sralph #include "bit.h"
7*11480Sralph 
8*11480Sralph minmax(g, nrow, ncol, rmin, cmin, rmax, cmax)
9*11480Sralph bitmat g;
10*11480Sralph int nrow, ncol;
11*11480Sralph int *rmin, *cmin, *rmax, *cmax;
12*11480Sralph {
13*11480Sralph 	register int i, j;
14*11480Sralph 	register int r1, r2, c1, c2;
15*11480Sralph 	int ar1, ar2, ac1, ac2;
16*11480Sralph 
17*11480Sralph 	aminmax(g, nrow, ncol, &ar1, &ac1, &ar2, &ac2);
18*11480Sralph #ifdef TRACE
19*11480Sralph 	if (trace)
20*11480Sralph 		fprintf(trace, "aminmax returns %d, %d, %d, %d\n", ar1, ac1, ar2, ac2);
21*11480Sralph #endif
22*11480Sralph 	r1 = nrow; c1 = ncol; r2 = c2 = 0;
23*11480Sralph 	for (i=ar1; i<=ar2; i++)
24*11480Sralph 		for (j=ac1; j<=ac2; j++)
25*11480Sralph 			if (mat(g, nrow, ncol, i, j, 8)) {
26*11480Sralph 				r1 = min(r1, i);
27*11480Sralph 				r2 = max(r2, i);
28*11480Sralph 				c1 = min(c1, j);
29*11480Sralph 				c2 = max(c2, j);
30*11480Sralph 			}
31*11480Sralph 	if (r2 < r1) {
32*11480Sralph 		/* empty glyph! */
33*11480Sralph 		r1 = c1 = r2 = c2 = 1;
34*11480Sralph 	}
35*11480Sralph 	*rmin = r1; *rmax = r2;
36*11480Sralph 	*cmin = c1; *cmax = c2;
37*11480Sralph }
38