createDisplaySegments method
Creates whole display - all characters (all segments)
Implementation
List<Segment> createDisplaySegments() {
final charCount = characterCount ?? value.length;
final segments = <Segment>[];
double indent = 0;
// Add left padding when characterCount > text.length
for (var i = value.length - charCount; i < value.length; i++) {
var char = '';
if (i >= 0 && i < value.length) {
char = value[i];
}
// handle dividers rendering
if (CharacterSegmentMap.dividerCharacters.values.contains(char)) {
final segment = createDividerCharacter(char, indent);
if (segment != null) {
indent += segmentSize.width + characterSpacing;
segments.add(segment);
}
continue;
}
final characterSegments = createSingleCharacter(indent);
// when character can be displayed, enable given segments
if (char.isNotEmpty && canDisplay(char)) {
final encoding = characterMap[char];
for (var i = 0; i < characterSegments.length; i++) {
if (encoding! >> i & 1 == 1) {
characterSegments[i].isEnabled = true;
}
}
}
indent += (2 * segmentSize.width + segmentSize.height) + characterSpacing;
segments.addAll(characterSegments);
}
return segments;
}