Warning: session_start(): open(/var/lib/php/sessions/sess_94fatot03vemfatfvulhgpv4o2, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
static L areasColoredOneOf(Color... color) {
ret areasColoredOneOf(shootScreen(), color);
}
static int areasColoredOneOf_g = 3;
static L areasColoredOneOf(RGBImage img, int... color) {
ret areasColoredOneOf(img, mapToArrayOfType(Color.class, f toColor, asList(color)));
}
static L areasColoredOneOf(int... color) {
ret areasColoredOneOf(map toColor(asList(color)));
}
static L areasColoredOneOf(RGBImage img, Color... color) {
ret areasColoredOneOf(img, areasColoredOneOf_g, color);
}
static L areasColoredOneOf(RGBImage img, int g, Color... color) {
int w = img.w(), h = img.h();
int gw = w/g, gh = h/g;
new BitSet grid;
int[] intColors = map(func(Color c) -> Int { color.getRGB() & 0xFFFFFF }, color);
int overlap = 0;
for (int gy = 0; gy <= h- g; gy += g)
next: for (int gx = 0; gx <= w- g; gx += g) {
float min = 1, max = 0;
int y2 = min(h, gy + g + overlap);
int x2 = min(w, gx + g + overlap);
if (rgbAllPixelsInAreaEqualToOneOf(img, gx, gy, x2, y2, intColor))
grid.set((gy / g) * gw + (gx / g));
}
L clips = floodFillGrid(grid, gw, gh, g);
//print(n(clips, "areas") + " found for color " + new RGB(color) + ": " + struct(clips));
ret clips;
}