Я реализую алгоритм seedfill. Для цвета используется общая переменная. Однако я не знаю, как реализовать шаблон patt
, который является целым числом. Вот исходный код:Добавление шаблона в алгоритм SeedFill
public class SeedFill4In<PixelType> implements SeedFill<PixelType> {
@Override
public @NotNull RasterImage<PixelType> fill(
final @NotNull RasterImage<PixelType> img, final int c, final int r,
final @NotNull PixelType areaValue,
final @NotNull PixelType newValue) {
int [ ][ ] patt = {
{0xFF0000,0x0000FF,0x0000FF,0xFF0000,0xFF0000},
{0xFF0000,0x0000FF,0x00FF00,0xFF0000,0xFF0000},
{0xFF0000,0x0000FF,0x0000FF,0x00FF00,0xFF0000},
{0xFF0000,0x0000FF,0x0000FF,0xFF0000,0xFF0000},
{0xFF0000,0x0000FF,0x0000FF,0xFF0000,0xFF0000}
};
int i = c % patt.length;
int j = r % patt.length;
return new Object() {
@NotNull RasterImage<PixelType> fill(
final @NotNull RasterImage<PixelType> img, final int c, final int r) {
return img.getPixel(c, r)
.flatMap((final @NotNull PixelType actualValue) -> {
if (actualValue.equals(areaValue)) {
return Optional.of(
fill(
fill(
fill(
fill(
img.withPixel(c, r, newValue),
c, r - 1),
c + 1, r),
c, r + 1),
c - 1, r)
);
}
return Optional.empty();
})
.orElse(img);
}
}.fill(img, c, r);
}
Для заполнения без рисунка я использовал переменную newValue
. Как изменить его на образец?