createPaths2 method

Map<String, dynamic> createPaths2(
  1. String text,
  2. num size,
  3. Map<String, dynamic> data
)

Implementation

Map<String, dynamic> createPaths2(String text, num size, Map<String, dynamic> data) {
  List<String> chars = text.split("");

  num scale = size / data["resolution"];
  num lineHeight = (data["boundingBox"]["yMax"] - data["boundingBox"]["yMin"] + data["underlineThickness"]) * scale;

  // List<ShapePath> paths = [];

  Map<String, Map<String, dynamic>> paths = {};
  List<Map<String, dynamic>> result = [];

  num offsetX = 0.0;
  num offsetY = 0.0;

  num maxWidth = 0.0;

  for (var i = 0; i < chars.length; i++) {
    var char = chars[i];

    if (char == '\n') {
      offsetX = 0;
      offsetY -= lineHeight;
    } else {
      var charPath = paths[char];
      if (charPath == null) {
        var ret = createPath(char, scale, 0.0, 0.0, data);
        paths[char] = ret;
        charPath = ret;
      }

      Map<String, dynamic> charData = {"char": char, "offsetX": offsetX, "offsetY": offsetY};

      result.add(charData);

      offsetX += charPath["offsetX"];
      // paths.add(ret["path"]);

      if (offsetX > maxWidth) {
        maxWidth = offsetX;
      }
    }
  }

  return {
    "paths": paths,
    "chars": result,
    "height": offsetY + lineHeight,
    "width": maxWidth,
  };
}