createRectGetterMatrix method

List<List<RectGetter>> createRectGetterMatrix({
  1. bool reverseX = false,
  2. bool reverseY = false,
  3. bool looseEqualIgnored = false,
  4. double xMinFactor = 0.00001,
  5. double yMinFactor = 0.00001,
  6. List<String> includes = const [],
  7. List<String> excludes = const [],
  8. Size? sampleSortSize,
})

Implementation

List<List<RectGetter>> createRectGetterMatrix({bool reverseX = false, bool reverseY = false, bool looseEqualIgnored = false, double xMinFactor = 0.00001, double yMinFactor = 0.00001,
                  List<String> includes = const [], List<String> excludes = const [], Size? sampleSortSize}){
  var vLines = lines(DIRECTION.vertical, includes: includes, excludes: excludes);
  if(sampleSortSize != null) vLines = useSampleWidthSorted(sampleSortSize, vLines);
  vLines = reverseX ? vLines.reversed.toList(): vLines;
  // ketchupDebug(vLines);
  var hLines = lines(DIRECTION.horizontal, includes: includes, excludes: excludes);
  if(sampleSortSize != null) hLines = useSampleHeightSorted(sampleSortSize, hLines);
  hLines = reverseY ? hLines.reversed.toList(): hLines;
  // ketchupDebug(hLines);
  // assert(gameDebug(vLines).length >= 2 && gameDebug(hLines).length >= 2);
  assert(vLines.length >= 2 && hLines.length >= 2);
  List<List<RectGetter>> retColumns = [];
  for(var yGetterIndex = 0; yGetterIndex < hLines.length - 1; yGetterIndex++){
    var yLessGetter = reverseY ? hLines[yGetterIndex + 1] : hLines[yGetterIndex];
    var yMoreGetter = reverseY ? hLines[yGetterIndex] : hLines[yGetterIndex + 1];
    if(!looseEqualIgnored && yMoreGetter.percent - yLessGetter.percent < yMinFactor || yMoreGetter.looseEqual(yLessGetter)) continue;
    List<RectGetter> newRow = [];
    for(var xGetterIndex =0; xGetterIndex < vLines.length - 1; xGetterIndex++){
      var xLessGetter = reverseX ? vLines[xGetterIndex + 1] : vLines[xGetterIndex];
      var xMoreGetter = reverseX ? vLines[xGetterIndex] : vLines[xGetterIndex + 1];
      if(!looseEqualIgnored && xMoreGetter.percent - xLessGetter.percent < xMinFactor || xMoreGetter.looseEqual(xLessGetter)) continue;

      newRow.add((Size size)=>Rect.fromPoints(
        Offset(xLessGetter.computeWidth(size), yLessGetter.computeHeight(size)),
        Offset(xMoreGetter.computeWidth(size), yMoreGetter.computeHeight(size))
        // Offset(xLessGetter.percentGetter(size) * size.width, yLessGetter.percentGetter(size) * size.height),
        // Offset(xMoreGetter.percentGetter(size) * size.width, yMoreGetter.percentGetter(size) * size.height),
        // Offset(
        //   literalValue(xLessGetter, size) + xLessGetter.percentGetter(size) * size.width,
        //   literalValue(yLessGetter, size) + yLessGetter.percentGetter(size) * size.height),
        // Offset(
        //   literalValue(xMoreGetter, size) + xMoreGetter.percentGetter(size) * size.width,
        //   literalValue(yMoreGetter, size) + yMoreGetter.percentGetter(size) * size.height),
      ));
    }
    retColumns.add(newRow);
  }
  return retColumns;
}