import method

void import(
  1. Map data
)

Expects data from toMap.

Implementation

void import(Map data) {
  final list = <CubicPath>[];

  final v2 = (data['version'] ?? 1) == 2;
  final bounds = Size(data['bounds']['width'], data['bounds']['height']);
  final paths = data['paths'] as Iterable;
  final setups = data['setup'] as Iterable?;

  if (v2) {
    assert(setups != null);
    assert(paths.length == setups!.length);
  } else {
    final threshold = data['threshold'];
    final smoothRatio = data['smoothRatio'];
    final velocityRange = data['velocityRange'];

    setup = () => SignaturePathSetup(
          threshold: threshold,
          smoothRatio: smoothRatio,
          velocityRange: velocityRange,
        );
  }

  final count = paths.length;

  for (int i = 0; i < count; i++) {
    final points = List.from(paths.elementAt(i));
    final setup =
        v2 ? SignaturePathSetup.fromMap(setups!.elementAt(i)) : this.setup();

    final cp = CubicPath(setup: setup);

    cp.begin(OffsetPoint.fromMap(points[0]));
    points.skip(1).forEach((element) => cp.add(OffsetPoint.fromMap(element)));
    cp.end();

    list.add(cp);
  }

  addPath(list, bounds);
}