flush method
Draws the buffered segments aligned relative to the parent's current cursor, then advances the parent past the sentence.
Implementation
TextDrawer<T> flush({
TextDrawerHAlign halign = .left,
TextDrawerVAlign valign = .top,
}) {
final startX = switch (halign) {
.left => _parent._x,
.center => _parent._x - _totalWidth / 2,
.right => _parent._x - _totalWidth,
};
final drawY = switch (valign) {
.top => _parent._y,
.middle => _parent._y - _parent._fontSize / 2,
.bottom => _parent._y - _parent._fontSize,
};
var x = startX;
for (final seg in _segments) {
if (seg is _TextSegment) {
_parent.backend.render.drawText(
seg.content, x, drawY, _parent._fontSize, seg.color ?? .WHITE,
);
x += seg.width;
} else if (seg is _GapSegment) {
x += seg.width;
}
}
_parent._x = halign == .left ? x : _parent._x;
return _parent;
}