createDisplaySegments method

List<Segment> createDisplaySegments()

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;
}