joinSignsHorizontal function

String joinSignsHorizontal(
  1. List<String> fsws, {
  2. int spacing = 0,
})

Arranges signs horizontally (left to right), with optional spacing between them.

Mirrors Python signwriting.utils.join_signs.join_signs_horizontal.

Implementation

String joinSignsHorizontal(List<String> fsws, {int spacing = 0}) {
  final signs = _initJoin(fsws);
  final symbols = <SignSymbol>[];
  int accumulativeOffset = 0;

  for (final sign in signs) {
    final signMinX = _allAxis(sign, 'x').reduce(min);
    final signOffsetX = accumulativeOffset + spacing - signMinX;
    accumulativeOffset += (sign.box.position.item1 - signMinX) + spacing;

    for (final symbol in sign.symbols) {
      symbols.add(SignSymbol(
        symbol: symbol.symbol,
        position:
            Tuple2(symbol.position.item1 + signOffsetX, symbol.position.item2),
      ));
    }
  }

  if (symbols.isEmpty) return 'M500x500';
  return signToFsw(signFromSymbols(symbols, fixY: false));
}