bytesperline.c 523 B

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