placedOn
Resolves this overlay against the frame it is composited onto.
The drawn width is ImageOverlay.scale of the frame's width and the height follows image's own aspect, so the image never stretches. The inset is measured off the frame's shorter side, so the same margin reads as the same distance from the edge in portrait and in landscape.
A margin large enough to carry the overlay past the middle of the frame is held at the middle rather than allowed to cross to the far side.
Return
Where to draw it.
Parameters
The frame the overlay is drawn on, in pixels.
The overlay image's own pixel size.
Resolves this text against the frame it is burned into.
Text carries no margin of its own, so the same point named by TextOverlay.anchor is taken in both the text block and the frame: anchoring to Anchor.BottomCenter puts the block's bottom edge on the frame's. text is the rasterised block's real pixel size, which each platform measures with its own font stack.
Return
Where to draw it.
Parameters
The rasterised text block's pixel size.