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