xref: /inferno-os/libdraw/bytesperline.c (revision 37da2899f40661e3e9631e497da8dc59b971cbd0)
1 #include "lib9.h"
2 #include "draw.h"
3 
4 static
5 int
unitsperline(Rectangle r,int d,int bitsperunit)6 unitsperline(Rectangle r, int d, int bitsperunit)
7 {
8 	ulong l, t;
9 
10 	if(r.min.x >= 0){
11 		l = (r.max.x*d+bitsperunit-1)/bitsperunit;
12 		l -= (r.min.x*d)/bitsperunit;
13 	}else{			/* make positive before divide */
14 		t = (-r.min.x*d+bitsperunit-1)/bitsperunit;
15 		l = t+(r.max.x*d+bitsperunit-1)/bitsperunit;
16 	}
17 	return l;
18 }
19 
20 int
wordsperline(Rectangle r,int d)21 wordsperline(Rectangle r, int d)
22 {
23 	return unitsperline(r, d, 8*sizeof(ulong));
24 }
25 
26 int
bytesperline(Rectangle r,int d)27 bytesperline(Rectangle r, int d)
28 {
29 	return unitsperline(r, d, 8);
30 }
31