decodeLayout function

MathLayout decodeLayout(
  1. List<Object?> data,
  2. List<MathFont> fonts
)

Rebuilds a layout from encodeLayout; fonts resolves font names (a name not found falls back to the first font).

Implementation

MathLayout decodeLayout(List<Object?> data, List<MathFont> fonts) {
  final byName = {for (final f in fonts) f.name: f};
  MathFont font(Object? name) => byName[name] ?? fonts.first;
  return MathLayout(
    _unbox(data[0]! as List<Object?>, font),
    equationNumbers: [
      for (final n in data[1]! as List<Object?>)
        EquationNumber(
          _unbox((n! as List<Object?>)[0]! as List<Object?>, font),
          (n as List<Object?>)[1]! as double,
          left: n[2]! as bool,
        ),
    ],
    rtl: data[2]! as bool,
    lineCount: data[3]! as int,
    breakPoints: (data[4]! as List<Object?>).cast<double>(),
  );
}