diff --git a/demos/workers/modules/filters.js b/demos/workers/modules/filters.js new file mode 100644 index 00000000000..2c3a892ad77 --- /dev/null +++ b/demos/workers/modules/filters.js @@ -0,0 +1,17 @@ +export function none() {} + +export function grayscale({ data: d }) { + for (let i = 0; i < d.length; i += 4) { + const [r, g, b] = [d[i], d[i + 1], d[i + 2]]; + + // CIE luminance for the RGB + // The human eye is bad at seeing red and blue, so we de-emphasize them. + d[i] = d[i + 1] = d[i + 2] = 0.2126 * r + 0.7152 * g + 0.0722 * b; + } +}; + +export function brighten({ data: d }) { + for (let i = 0; i < d.length; ++i) { + d[i] *= 1.2; + } +}; \ No newline at end of file diff --git a/demos/workers/modules/page.html b/demos/workers/modules/page.html new file mode 100644 index 00000000000..267fb935bb9 --- /dev/null +++ b/demos/workers/modules/page.html @@ -0,0 +1,64 @@ + + +Worker example: image decoding + + + + + + \ No newline at end of file diff --git a/demos/workers/modules/worker.js b/demos/workers/modules/worker.js new file mode 100644 index 00000000000..19d4df630ad --- /dev/null +++ b/demos/workers/modules/worker.js @@ -0,0 +1,7 @@ +import * as filters from "./filters.js"; + +self.onmessage = e => { + const { imageData, filter } = e.data; + filters[filter](imageData); + self.postMessage(imageData, [imageData.data.buffer]); +}; \ No newline at end of file diff --git a/source b/source index 3946aa6a547..f46d082c35b 100644 --- a/source +++ b/source @@ -2813,6 +2813,7 @@ a.setAttribute('href', 'http://example.com/'); // change the content attribute d
  • process response
  • set
  • terminate +
  • the RequestCredentials enumeration
  • response and its associated: