1 /* aminmax.c 4.1 83/03/09 */ 2 /* 3 * aminmax: find the 4 edges of the glyph within a window. 4 * This version is approximate, in that it may include some 5 * blank areas. But it's much faster because it doesn't have 6 * to call mat over and over. 7 */ 8 9 #include "bit.h" 10 11 aminmax(g, nrow, ncol, rmin, cmin, rmax, cmax) 12 bitmat g; 13 int nrow, ncol; 14 int *rmin, *cmin, *rmax, *cmax; 15 { 16 register int i, j; 17 register int nc = (ncol+7)>>3; 18 register int r1, r2, c1, c2; 19 20 r1 = nrow; c1 = nc; r2 = c2 = 0; 21 for (i=0; i<nrow; i++) 22 for (j=0; j<nc; j++) 23 if (g[i*nc+j]) { 24 r1 = min(r1, i); 25 r2 = max(r2, i); 26 c1 = min(c1, j); 27 c2 = max(c2, j); 28 } 29 if (r2 < r1) { 30 /* empty glyph! */ 31 r1 = c1 = r2 = c2 = 1; 32 } 33 *rmin = r1; *rmax = r2; 34 *cmin = 8*c1; *cmax = 8*c2+7; 35 } 36