3 def thediamond_(suffix $) =
4 $.e -- $.n -- $.w -- $s -- cycle
7 vardef sizediamond_(suffix $) =
9 (a_,b_) = .5*(urcorner pic_$ - llcorner pic_$);
10 if (unknown $dy or unknown $dx) and unknown $squatness: $squatness = 1; fi
11 if unknown $dy: $dy = $squatness * ($dx + a_) - b_; fi
13 $dy = b_ + circmargin * sqrt($squatness+1) + $squatness * a_;
18 vardef cleardiamond_(suffix $) =
20 generic_redeclare(numeric) _n.squatness;
23 vardef patchit@#(expr s, type) =
24 _elementit.@#(s, 0, 0, push, false, false);
26 pproc_.@# := "thecirc_";
27 % sproc_.@# := "sizecirc_";
30 generic_declare(numeric) _n.squatness, _n.dx, _n.dy;
31 pproc_.@# := "thediamond_";
32 sproc_.@# := "sizediamond_";
33 expandafter def expandafter clearboxes expandafter =
34 clearboxes cleardiamond_(@#);
37 pproc_.@# := "rboxpath_";
41 vardef drawconnpatch(suffix $,$$)(text conn) text rest =
42 interim linejoin := mitered;
43 drawarrow ($.c conn $$.c) cutbefore bpath.$ cutafter bpath.$$ withpen connectionpen rest