diff --git a/_locales/de/messages.json b/_locales/de/messages.json index e3bf52d..92ff2cb 100644 --- a/_locales/de/messages.json +++ b/_locales/de/messages.json @@ -202,6 +202,15 @@ "description": "" }, + "fakeAlphaChannel_title": { + "message": "Alhpa-Kanal auch vortäuschen", + "description": "" + }, + "fakeAlphaChannel_description": { + "message": "Aktiviert das Vortäuschen des Alpha-Kanals (Transparenz).", + "description": "" + }, + "useCanvasCache_title": { "message": "Zwischenspeicher für Canvas verwenden", "description": "" diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 504f9cc..c436d1f 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -202,6 +202,15 @@ "description": "" }, + "fakeAlphaChannel_title": { + "message": "Fakt the alpha channel", + "description": "" + }, + "fakeAlphaChannel_description": { + "message": "Activates the faking of the alhpa channel (transparency).", + "description": "" + }, + "useCanvasCache_title": { "message": "Use canvas cache", "description": "" diff --git a/lib/defaultSettings.js b/lib/defaultSettings.js index 9c20496..0bfebc1 100644 --- a/lib/defaultSettings.js +++ b/lib/defaultSettings.js @@ -10,6 +10,7 @@ var settings = { rng: "nonPersistent", useCanvasCache: true, ignoreFrequentColors: 0, + fakeAlphaChannel: false, persistentRndStorage: "", storePersistentRnd: false, askOnlyOnce: true, diff --git a/lib/modifiedAPI.js b/lib/modifiedAPI.js index ba5f3e3..cd28c5f 100644 --- a/lib/modifiedAPI.js +++ b/lib/modifiedAPI.js @@ -77,7 +77,7 @@ } var rng = randomSupply.getPixelRng(l, window, ignoredColors); - + var fakeAlphaChannel = prefs("fakeAlphaChannel"); for (var i = 0; i < l; i += 4){ var [r, g, b, a] = rng( source[i + 0], @@ -89,13 +89,14 @@ desc[i + 0] = r; desc[i + 1] = g; desc[i + 2] = b; - desc[i + 3] = a; + desc[i + 3] = fakeAlphaChannel? a: source[i + 3]; } var canvas = original.cloneNode(true); context = window.HTMLCanvasElement.prototype.getContext.call(canvas, "2d"); context.putImageData(imageData, 0, 0); if (prefs("useCanvasCache")){ canvasCache[originalDataURL] = canvas; + canvasCache[canvas.toDataURL()] = canvas; } return canvas; } @@ -373,7 +374,7 @@ ignoredColors = statistic.getMaxColors(prefs("ignoreFrequentColors")); } var rng = randomSupply.getPixelRng(l, window, ignoredColors); - + var fakeAlphaChannel = prefs("fakeAlphaChannel"); for (var i = 0; i < l; i += 4){ var [r, g, b, a] = rng( xPixels[i + 0], @@ -385,9 +386,10 @@ xPixels[i + 0] = r; xPixels[i + 1] = g; xPixels[i + 2] = b; - xPixels[i + 3] = a; + if (fakeAlphaChannel){ + xPixels[i + 3] = a; + } } - return ret; } else { diff --git a/releaseNotes.txt b/releaseNotes.txt index 9da1298..a0f5488 100644 --- a/releaseNotes.txt +++ b/releaseNotes.txt @@ -18,6 +18,7 @@ Version 0.4.0: * setting to not fake the most frequent colors in a canvas * setting to enable canvas cache * setting to hide expert settings + * setting to control if the alpha channel should be faked as wel fixes: - ask mode did not work for input types