createPaths2 method

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

Implementation

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

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

  // List<ShapePath> paths = [];

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

  double offsetX = 0.0;
  double offsetY = 0.0;

  double maxWidth = 0.0;

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

    if (char == '\n') {
      offsetX = 0;
      offsetY -= lineHeight;
    }
    else {
      Map<String, dynamic>? charPath = paths[char];
      if (charPath == null) {
        final 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;
      }
    }
  }

  Map<String, dynamic> data2 = {
    "paths": paths,
    "chars": result,
    "height": offsetY + lineHeight,
    "width": maxWidth
  };

  return data2;
}