draw method
void
draw(
- TextCanvas canvas
)
override
Implementation
@override
void draw(TextCanvas canvas) {
final height = measureHeight();
final alignment = cell.canonicalStyle.alignment ?? TextAlignment.TopLeft;
final top = () {
switch (alignment) {
case TextAlignment.TopLeft:
case TextAlignment.TopCenter:
case TextAlignment.TopRight:
return topPadding;
case TextAlignment.MiddleLeft:
case TextAlignment.MiddleCenter:
case TextAlignment.MiddleRight:
return ((canvas.height - height) ~/ 2) + topPadding;
case TextAlignment.BottomLeft:
case TextAlignment.BottomCenter:
case TextAlignment.BottomRight:
return canvas.height - height + topPadding;
}
}();
var index = 0;
for (final line in cell.cell.content.split('\n')) {
final lineWidth = leftPadding +
(cell.canonicalStyle.paddingRight ?? 0) +
line.visualCodePointCount;
final left = () {
switch (alignment) {
case TextAlignment.TopLeft:
case TextAlignment.MiddleLeft:
case TextAlignment.BottomLeft:
return leftPadding;
case TextAlignment.TopCenter:
case TextAlignment.MiddleCenter:
case TextAlignment.BottomCenter:
return ((canvas.width - lineWidth) ~/ 2) + leftPadding;
case TextAlignment.TopRight:
case TextAlignment.MiddleRight:
case TextAlignment.BottomRight:
return canvas.width - lineWidth + leftPadding;
}
}();
canvas.write(top + index, left, line);
index++;
}
}