logRenderFrame static method
void
logRenderFrame({})
Implementation
static void logRenderFrame({
required Object view,
int? renderGeneration,
String? degradationLevel,
int? renderDurationUs,
int? width,
int? height,
List<TerminalNativeSpanDelta>? nativeSpanDelta,
}) {
if (!captureFramesEnabled) return;
final frame = TerminalRenderFrame.inspect(view);
logDecision(
decisionType: 'render_frame',
result: 'captured',
type: 'runtime.render',
factors: <String, Object?>{
if (renderGeneration != null) 'renderGeneration': renderGeneration,
if (degradationLevel != null) 'degradationLevel': degradationLevel,
if (renderDurationUs != null) 'renderDurationUs': renderDurationUs,
if (width != null) 'width': width,
if (height != null) 'height': height,
'lineCount': frame.lines.length,
'content': frame.content,
'plainText': frame.plainText,
'lines': frame.lines
.map(
(line) => <String, Object?>{
'raw': line.raw,
'statePrefix': line.statePrefix,
'plainText': line.plainText,
'visibleWidth': line.visibleWidth,
},
)
.toList(growable: false),
if (nativeSpanDelta != null)
'nativeSpanDelta': nativeSpanDelta
.map(
(line) => <String, Object?>{
'index': line.index,
'spans': line.spans
.map(
(span) => <String, Object?>{
'lineIndex': span.lineIndex,
'startColumn': span.startColumn,
'endColumn': span.endColumn,
'text': span.text,
'hasDrawable': span.hasDrawable,
if (span.style.fg != null)
'fg': _nativeColorToJson(span.style.fg!),
if (span.style.bg != null)
'bg': _nativeColorToJson(span.style.bg!),
if (span.style.underlineColor != null)
'underlineColor': _nativeColorToJson(
span.style.underlineColor!,
),
'style': <String, Object?>{
'attrs': span.style.attrs,
'underline': span.style.underline.name,
'packedKey': span.style.packedKey,
},
'link': <String, Object?>{
'url': span.link.url,
'params': span.link.params,
},
},
)
.toList(growable: false),
},
)
.toList(growable: false),
},
);
}