ref: d180b70c6c69ffe8168cc8571772ad6e15ac6aba
dir: /shape.myr/
use std use "types" use "chan" use "pack" pkg draw = const fill : (dst : image#, src : image#, r : rect -> void) const draw : (dst : image#, r : rect, src : image#, p0 : point -> void) const drawop : (dst : image#, r : rect, src : image#, p0 : point, op : drawop -> void) const mdrawop : (dst : image#, r : rect, s : image#, p0 : point, mask : image#, p1 : point, op : drawop -> void) const inset : (r : rect, off : int -> rect) ;; const fill = {dst, src, r // d dstid[4] srcid[4] maskid[4] dstr[4*4] srcp[2*4] maskp[2*4] mdrawop(dst, r, src, Zp, dst.dpy.opaque, Zp, SoverD) } const draw = {dst, r, src, p0 mdrawop(dst, r, src, p0, dst.dpy.opaque, Zp, SoverD) } const drawop = {dst, r, src, p0, op mdrawop(dst, r, src, p0, dst.dpy.opaque, Zp, SoverD) } const mdrawop = {dst, r, src, p0, mask, p1, op if op != SoverD pack(dst.dpy, "bb", 0, ('O' : byte), (op : byte)) ;; pack(dst.dpy, "biiiriiii", 0, \ ('d' : byte), /* draw */ \ dst.id, \ src.id, \ mask.id, \ r, \ p0.x, \ p0.y, \ p1.x, \ p1.y) } const inset = {r, off r.x0 += off r.y0 += off r.x1 -= off r.y1 -= off -> r }