xref: /original-bsd/old/lib2648/setmat.c (revision d9030308)
1 /*
2  * Copyright (c) 1980 Regents of the University of California.
3  * All rights reserved.  The Berkeley software License Agreement
4  * specifies the terms and conditions for redistribution.
5  */
6 
7 #ifndef lint
8 static char sccsid[] = "@(#)setmat.c	5.1 (Berkeley) 04/26/85";
9 #endif not lint
10 
11 /*
12  * setmat: set the value in m[r, c] to nval.
13  */
14 
15 #include "bit.h"
16 
setmat(m,rows,cols,r,c,nval)17 setmat(m, rows, cols, r, c, nval)
18 bitmat m;
19 int rows, cols, r, c, nval;
20 {
21 	register int offset, thisbit;
22 
23 	if (r<0 || c<0 || r>=rows || c>=cols) {
24 #ifdef TRACE
25 		if (trace)
26 			fprintf(trace, "setmat range error: (%d, %d) <- %d in a (%d, %d) matrix %x\n", r, c, nval, rows, cols, m);
27 #endif
28 
29 		return;
30 	}
31 	offset = r*((cols+7)>>3) + (c>>3);
32 	thisbit = 0x80 >> (c&7);
33 	if (nval)
34 		m[offset] |= thisbit;
35 	else
36 		m[offset] &= ~thisbit;
37 }
38