line.c 720 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "lib9.h"
  2. #include "draw.h"
  3. void
  4. line(Image *dst, Point p0, Point p1, int end0, int end1, int radius, Image *src, Point sp)
  5. {
  6. lineop(dst, p0, p1, end0, end1, radius, src, sp, SoverD);
  7. }
  8. void
  9. lineop(Image *dst, Point p0, Point p1, int end0, int end1, int radius, Image *src, Point sp, Drawop op)
  10. {
  11. uchar *a;
  12. _setdrawop(dst->display, op);
  13. a = bufimage(dst->display, 1+4+2*4+2*4+4+4+4+4+2*4);
  14. if(a == 0){
  15. _drawprint(2, "image line: %r\n");
  16. return;
  17. }
  18. a[0] = 'L';
  19. BPLONG(a+1, dst->id);
  20. BPLONG(a+5, p0.x);
  21. BPLONG(a+9, p0.y);
  22. BPLONG(a+13, p1.x);
  23. BPLONG(a+17, p1.y);
  24. BPLONG(a+21, end0);
  25. BPLONG(a+25, end1);
  26. BPLONG(a+29, radius);
  27. BPLONG(a+33, src->id);
  28. BPLONG(a+37, sp.x);
  29. BPLONG(a+41, sp.y);
  30. }