Shared between setup_tag() (initial construction in setup_grobs())
and makeContent.EulerTags() (draw-time re-placement on resize).
Pure factory — no measurement; takes anchor + tether already in
native units, plus the stashed text / gpar bundle. The label /
quantity / annotation stack is centered vertically on (ax, ay)
so the bbox center matches the anchor eunoia placed and leader
endpoints land on the actual bbox edge.
build_tag_grobs(
ax,
ay,
kind,
tx,
ty,
lend_x,
lend_y,
label_text,
quantity_text,
annotation_text,
has_label,
has_quantity,
has_annotation,
label_gp,
quantity_gp,
annotation_gp,
label_rot,
quantity_rot,
annotation_rot,
number,
leader_gp_list,
padding,
waypoints_x = numeric(0),
waypoints_y = numeric(0),
name_prefix = "tag"
)the tag anchor, in native units
the placement kind eunoia returned (interior, exterior, ...)
the tether point on the shape, in native units
the leader endpoint on the tag bbox, in native units
the three text components
whether each component is drawn
per-component grid::gpar()
per-component rotation, in degrees
the diagram's region index, used to name the grobs
grid::gpar() for the leader line, or NULL for
no leader
vertical separation between components, as a
grid::unit()
intermediate leader vertices, in native units
prefix for the generated grob names