Calculate coordinates and h|vjust values for entry text strings, to achieve the desired justification and alignment with respect to cell boundaries. This is an internal utility function, not intended to be called by package users.
coord_justif(df, x0, x1, y0, y1, size, align=df$align)Data frame with one row per row of df. Columns are:
Coordinates to give to a geom_* function when drawing the entry
text.
hjust and vjust values to give to a geom_* function.
Data frame with one row per entry. Required columns are hjust,
vjust, hpad, vpad, angle. angle must
be a multiple of 90 degrees.
Numeric vectors with one element per entry, giving the coordinates (in mm) of the boundaries of the cell(s) containing each entry. Note that the origin is at the top left of the table.
Data frame with one row per entry, and columns hsize, vsize,
and descender. The first two are the dimensions, in mm, of an
unrotated rectangle just enclosing the (possibly rotated) entry text. (So
hsize is always measured parallel to the x-axis and vsize
parallel to the y-axis.) descender is the amount of space included
in hsize or vsize to allow for text descenders. (This is 0
for a textGrob, but larger for richtext_grob and
textbox_grob.) Functions entrySize_mm and
calc_rcsize return such a data frame (the latter in the
sizeInfo component).
Optional numeric vector with one element per entry. It specifies
horizontal alignment of multiple lines within an entry *with respect to
each other*. 0 means all lines in the entry are aligned at their left
edge ("left justified"), 1 means they are all aligned at their right edge
("right justified"), 0.5 means they are aligned at their centers. The
default is to use column align in df if present and not NA.
Otherwise it depends on text rotation specified by df$angle; for
unrotated text it is set equal to df$hjust.
The need to jointly calculate x, y, gg_hjust, and
gg_vjust is due to a difference between tablesgg and
ggplot2 in their interpretations of text justification.
ggplot2 interprets justification parameters as indicating position
of text relative to the (x,y) coordinates used to draw the text: 0 means
to the right/above (x,y), 1 means to the left/below (x,y).
tablesgg interprets justification parameters as position relative
to the boundaries of the table cell(s) containing the entry text: 0 means
at the left/top boundary, 1 means at the right/bottom boundary.
This function takes cell boundary coordinates x0, x1,
y0, y1 and tablesgg-type justification parameters and
converts them to the ggplot2-type (x,y) coordinates and
justification parameters. In doing so it is also necessary to take any
text rotation (specified by graphical property angle) into account.
Values provided to geom_* functions should be x, y,
hjust=gg_hjust, and vjust=gg_vjust. If the geom_*
function has an halign argument (e.g., for geom_textbox),
set it to gg_hjust.
Justification values in [0, 1] will never position text closer to cell
boundaries than the padding specified by df$hpad and
df$vpad.
entrySize_mm, calc_rcsize