mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2025-07-03 03:56:26 +02:00
Added setting "ignoreFrequentColors"
This commit is contained in:
parent
9da251b14d
commit
1733be23f2
8 changed files with 131 additions and 7 deletions
|
@ -14,6 +14,8 @@
|
|||
scope = window.scope.modifiedAPI;
|
||||
}
|
||||
|
||||
const colorStatistics = require("./colorStatistics");
|
||||
|
||||
// let Cu = require("chrome").Cu;
|
||||
|
||||
var randomSupply = null;
|
||||
|
@ -52,7 +54,7 @@
|
|||
};
|
||||
}
|
||||
|
||||
function getFakeCanvas(window, original){
|
||||
function getFakeCanvas(window, original, prefs){
|
||||
try {
|
||||
// original may not be a canvas -> we must not leak an error
|
||||
var context = getContext(window, original);
|
||||
|
@ -61,6 +63,11 @@
|
|||
var l = desc.length;
|
||||
|
||||
var ignoredColors = {};
|
||||
if (prefs("ignoreFrequentColors")){
|
||||
var statistic = colorStatistics.compute(source);
|
||||
ignoredColors = statistic.getMaxColors(prefs("ignoreFrequentColors"));
|
||||
}
|
||||
|
||||
var rng = randomSupply.getPixelRng(l, window, ignoredColors);
|
||||
|
||||
for (var i = 0; i < l; i += 4){
|
||||
|
@ -175,7 +182,7 @@
|
|||
return function toDataURL(){
|
||||
if (canvasSizeShouldBeFaked(this, prefs)){
|
||||
notify.call(this, "fakedReadout");
|
||||
return original.apply(getFakeCanvas(window, this), window.Array.from(arguments));
|
||||
return original.apply(getFakeCanvas(window, this, prefs), window.Array.from(arguments));
|
||||
}
|
||||
else {
|
||||
return original.apply(this, window.Array.from(arguments));
|
||||
|
@ -201,7 +208,7 @@
|
|||
return function toBlob(callback){
|
||||
if (canvasSizeShouldBeFaked(this, prefs)){
|
||||
notify.call(this, "fakedReadout");
|
||||
return original.apply(getFakeCanvas(window, this), window.Array.from(arguments));
|
||||
return original.apply(getFakeCanvas(window, this, prefs), window.Array.from(arguments));
|
||||
}
|
||||
else {
|
||||
return original.apply(this, window.Array.from(arguments));
|
||||
|
@ -228,7 +235,7 @@
|
|||
return function mozGetAsFile(callback){
|
||||
if (canvasSizeShouldBeFaked(this, prefs)){
|
||||
notify.call(this, "fakedReadout");
|
||||
return original.apply(getFakeCanvas(window, this), window.Array.from(arguments));
|
||||
return original.apply(getFakeCanvas(window, this, prefs), window.Array.from(arguments));
|
||||
}
|
||||
else {
|
||||
return original.apply(this, window.Array.from(arguments));
|
||||
|
@ -257,11 +264,11 @@
|
|||
var fakeCanvas;
|
||||
var context = this;
|
||||
if (this && this.canvas) {
|
||||
fakeCanvas = getFakeCanvas(window, this.canvas);
|
||||
fakeCanvas = getFakeCanvas(window, this.canvas, prefs);
|
||||
}
|
||||
if (fakeCanvas && fakeCanvas !== this.canvas){
|
||||
context = window.HTMLCanvasElement.prototype.getContext.call(
|
||||
getFakeCanvas(window, this.canvas),
|
||||
fakeCanvas,
|
||||
"2d"
|
||||
);
|
||||
}
|
||||
|
@ -349,7 +356,12 @@
|
|||
var xPixels = pixels;
|
||||
var ret = original.apply(this, window.Array.from(arguments));
|
||||
var l = xPixels.length;
|
||||
var rng = randomSupply.getPixelRng(l, window, {});
|
||||
var ignoredColors = {};
|
||||
if (prefs("ignoreFrequentColors")){
|
||||
var statistic = colorStatistics.compute(pixels);
|
||||
ignoredColors = statistic.getMaxColors(prefs("ignoreFrequentColors"));
|
||||
}
|
||||
var rng = randomSupply.getPixelRng(l, window, ignoredColors);
|
||||
|
||||
for (var i = 0; i < l; i += 4){
|
||||
var [r, g, b, a] = rng(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue