renderSequenceDiagram function
String
renderSequenceDiagram(
- String content, {
- SequenceDiagramOptions? options,
- SequenceDiagramTheme? theme,
- int? maxWidth,
Convenience: renders a Mermaid sequence diagram string to text.
Implementation
String renderSequenceDiagram(
String content, {
SequenceDiagramOptions? options,
SequenceDiagramTheme? theme,
int? maxWidth,
}) {
final diagram = parseSequenceDiagram(content);
if (diagram == null || diagram.participants.isEmpty) return '';
SequenceDiagram renderedDiagram = diagram;
SequenceDiagramOptions? layoutOptions = options;
if (maxWidth != null) {
final fitWidth = math.max(1, maxWidth);
layoutOptions = SequenceDiagramOptions(
minParticipantGap: options?.minParticipantGap ?? 1,
);
renderedDiagram = _fitSequenceDiagramToWidth(
diagram,
fitWidth,
layoutOptions,
);
final layout = layoutSequenceDiagram(
renderedDiagram,
options: layoutOptions,
);
if (layout.width <= maxWidth) {
_checkSequenceCanvasSize(layout.width, layout.height);
final canvas = Canvas(layout.width, layout.height);
try {
drawSequenceDiagram(
canvas,
rect(0, 0, layout.width, layout.height),
renderedDiagram,
theme: theme ?? SequenceDiagramTheme.defaultTheme,
options: layoutOptions,
);
return canvas.render();
} finally {
canvas.dispose();
}
}
return _sequenceDiagnostic(
'sequence diagram needs ${layout.width} columns; available $maxWidth',
maxWidth,
);
}
final layout = layoutSequenceDiagram(renderedDiagram, options: layoutOptions);
_checkSequenceCanvasSize(layout.width, layout.height);
final canvas = Canvas(layout.width, layout.height);
try {
final resolvedTheme = theme ?? SequenceDiagramTheme.defaultTheme;
drawSequenceDiagram(
canvas,
rect(0, 0, layout.width, layout.height),
renderedDiagram,
theme: resolvedTheme,
options: layoutOptions,
);
return canvas.render();
} finally {
canvas.dispose();
}
}