createRectGetterMatrix method
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;
}