decodeLayout function
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>(),
);
}