toSimpleTrueTypeGlyph method

SimpleGlyph toSimpleTrueTypeGlyph()

Implementation

SimpleGlyph toSimpleTrueTypeGlyph() {
  final isOnCurveList = _getIsOnCurveList();
  final endPoints = _getEndPoints();
  final pointList = _getPointList();

  final absXcoordinates = pointList.map((p) => p.x.toInt()).toList();
  final absYcoordinates = pointList.map((p) => p.y.toInt()).toList();

  final relXcoordinates = absToRelCoordinates(absXcoordinates);
  final relYcoordinates = absToRelCoordinates(absYcoordinates);

  final xMin = absXcoordinates.fold<int>(kInt32Max, math.min);
  final yMin = absYcoordinates.fold<int>(kInt32Max, math.min);
  final xMax = absXcoordinates.fold<int>(kInt32Min, math.max);
  final yMax = absYcoordinates.fold<int>(kInt32Min, math.max);

  final flags = [
    for (var i = 0; i < pointList.length; i++)
      SimpleGlyphFlag.createForPoint(
          relXcoordinates[i], relYcoordinates[i], isOnCurveList[i])
  ];

  // TODO: compact flags: repeat & not short same flag

  return SimpleGlyph(
    GlyphHeader(endPoints.length, xMin, yMin, xMax, yMax),
    endPoints,
    [],
    flags,
    pointList,
  );
}