TerminalGraphicsFrame.scan constructor
TerminalGraphicsFrame.scan(
- String value
Scans value for retained graphics visible in the frame.
Implementation
factory TerminalGraphicsFrame.scan(String value) {
var hasRetainedGraphics = false;
final retainedImageIds = <int>{};
var untrackedGraphicsFingerprint = 0;
var hashingUntrackedTransmission = false;
for (final control in parseTerminalGraphicsControls(value)) {
if (control.protocol != TerminalGraphicsProtocol.kitty) {
continue;
}
if (!control.displaysImage) {
if (hashingUntrackedTransmission) {
untrackedGraphicsFingerprint = Object.hash(
untrackedGraphicsFingerprint,
control.sequence,
);
hashingUntrackedTransmission = control.hasMoreChunks;
}
continue;
}
hasRetainedGraphics = true;
final id = control.imageId;
if (id != null) {
retainedImageIds.add(id);
hashingUntrackedTransmission = false;
} else {
untrackedGraphicsFingerprint = Object.hash(
untrackedGraphicsFingerprint,
control.sequence,
);
hashingUntrackedTransmission = control.hasMoreChunks;
}
}
if (!hasRetainedGraphics && retainedImageIds.isEmpty) {
return TerminalGraphicsFrame.empty;
}
return TerminalGraphicsFrame(
hasRetainedGraphics: hasRetainedGraphics,
retainedImageIds: retainedImageIds,
untrackedGraphicsFingerprint: untrackedGraphicsFingerprint,
);
}