add spareexu method to canvas cleaner

This commit is contained in:
HF 2022-04-01 14:03:46 +02:00
parent fbb0c9b193
commit e2dd53add6
2 changed files with 35 additions and 2 deletions

View File

@ -263,7 +263,11 @@ function Modtools() {
break;
case 'spareext':
// eslint-disable-next-line max-len
descCleanAction = t`Clean spare pixels that are surrounded by a single other color`;
descCleanAction = t`Clean spare pixels that are surrounded by unset pixels and up to 1 other set pixels`;
break;
case 'spareextu':
// eslint-disable-next-line max-len
descCleanAction = t`Clean spare pixels that are surrounded by a single other color or unset pixels (VERY AGGRESSIVE ON CANVASES THAT ALLOW UNSET PIXELS (where there are two cooldowns)!)`;
break;
default:
// nothing
@ -571,7 +575,7 @@ function Modtools() {
selectCleanAction(sel.options[sel.selectedIndex].value);
}}
>
{['spare', 'spareext'].map((opt) => (
{['spare', 'spareext', 'spareextu'].map((opt) => (
<option
value={opt}
>

View File

@ -53,6 +53,35 @@ const METHODS = {
},
spareext: (xc, yc, clrIgnore, canvasCleaner) => {
let pxl = canvasCleaner.getPixelInChunkArea(xc, yc);
if (pxl === null || pxl < clrIgnore) {
return null;
}
let cntSet = 1;
let rplPxl = null;
for (let u = -1; u <= 1; u += 1) {
for (let v = -1; v <= 1; v += 1) {
pxl = canvasCleaner.getPixelInChunkArea(xc + u, yc + v);
if (pxl === null
|| (u === 0 && v === 0)
) {
continue;
}
if (pxl >= clrIgnore) {
if (cntSet >= 2) {
return null;
}
cntSet += 1;
}
if (rplPxl === null) {
rplPxl = pxl;
}
}
}
return rplPxl;
},
spareextu: (xc, yc, clrIgnore, canvasCleaner) => {
let pxl = canvasCleaner.getPixelInChunkArea(xc, yc);
if (pxl === null || pxl < clrIgnore) {
return null;