vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

bytesperline.c (617B)


      1 #include "u.h"
      2 #include "lib.h"
      3 #include "draw.h"
      4 
      5 static
      6 int
      7 unitsperline(Rectangle r, int d, int bitsperunit)
      8 {
      9 	ulong l, t;
     10 
     11 	if(d <= 0 || d > 32)	/* being called wrong.  d is image depth. */
     12 		abort();
     13 
     14 	if(r.min.x >= 0){
     15 		l = (r.max.x*d+bitsperunit-1)/bitsperunit;
     16 		l -= (r.min.x*d)/bitsperunit;
     17 	}else{			/* make positive before divide */
     18 		t = (-r.min.x*d+bitsperunit-1)/bitsperunit;
     19 		l = t+(r.max.x*d+bitsperunit-1)/bitsperunit;
     20 	}
     21 	return l;
     22 }
     23 
     24 int
     25 wordsperline(Rectangle r, int d)
     26 {
     27 	return unitsperline(r, d, 8*sizeof(uint32));
     28 }
     29 
     30 int
     31 bytesperline(Rectangle r, int d)
     32 {
     33 	return unitsperline(r, d, 8);
     34 }