ref: d180b70c6c69ffe8168cc8571772ad6e15ac6aba
dir: /string.myr/
use std use "types" use "font" use "pack" pkg draw = const string : (dst : image#, dp : point, str : byte[:] -> void) const gstring : (dst : image#, dp : point, clipr : rect, src : image#, sp : point, ft : font#, str : byte[:] -> void) ;; const string = {dst, dp, str gstring(dst, dp, dst.r, dst.dpy.black, [.x=0, .y=0], dst.dpy.dfont, str) } const gstring = {dst, dp, clipr, src, sp, ft, str var cids, id cids = [][:] for c : std.bychar(str) id = cachechar(ft, c) if id < 0 break ;; std.slpush(&cids, id) ;; /* s dstid[4] srcid[4] fontid[4] p[2*4] clipr[4*4] sp[2*4] n[2] n*(index[2]) */ pack(dst.dpy, "biiiprpsI", 2*cids.len, \ ('s' : byte), \ dst.id, \ src.id, \ ft.cimage.id, \ dp, \ clipr, \ sp, \ cids.len, \ cids) std.slfree(cids) }