|
|
export function isNodePattern(cb) { |
|
|
if (typeof cb === "undefined") { |
|
|
return false; |
|
|
} |
|
|
|
|
|
if (typeof cb !== "function") { |
|
|
throw new TypeError("Callback must be a function"); |
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
|
|
|
export function throwError(error, cb) { |
|
|
if (typeof error === "string") { |
|
|
error = new Error(error); |
|
|
} |
|
|
|
|
|
if (typeof cb === "function") { |
|
|
return cb.call(this, error); |
|
|
} |
|
|
|
|
|
throw error; |
|
|
} |
|
|
|
|
|
export function scan(image, x, y, w, h, f) { |
|
|
|
|
|
x = Math.round(x); |
|
|
y = Math.round(y); |
|
|
w = Math.round(w); |
|
|
h = Math.round(h); |
|
|
|
|
|
for (let _y = y; _y < y + h; _y++) { |
|
|
for (let _x = x; _x < x + w; _x++) { |
|
|
const idx = (image.bitmap.width * _y + _x) << 2; |
|
|
f.call(image, _x, _y, idx); |
|
|
} |
|
|
} |
|
|
|
|
|
return image; |
|
|
} |
|
|
|
|
|
export function* scanIterator(image, x, y, w, h) { |
|
|
|
|
|
x = Math.round(x); |
|
|
y = Math.round(y); |
|
|
w = Math.round(w); |
|
|
h = Math.round(h); |
|
|
|
|
|
for (let _y = y; _y < y + h; _y++) { |
|
|
for (let _x = x; _x < x + w; _x++) { |
|
|
const idx = (image.bitmap.width * _y + _x) << 2; |
|
|
yield { x: _x, y: _y, idx, image }; |
|
|
} |
|
|
} |
|
|
} |
|
|
|