From 2ee4c9e0e9db16a24d23f24b382ea2e4438f544c Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Thu, 7 Jan 2021 20:57:22 +0000 Subject: [PATCH 01/28] filters rewrite - initial work --- demo/filters-002.html | 12 +- demo/filters-002.js | 32 +- demo/filters-003.html | 3 + demo/filters-003.js | 9 +- demo/filters-004.html | 3 + demo/filters-004.js | 6 + demo/filters-004a.html | 57 + demo/filters-004a.js | 107 ++ demo/filters-005.html | 11 +- demo/filters-005.js | 2 + demo/filters-005a.html | 66 + demo/filters-005a.js | 116 ++ demo/filters-006.html | 5 +- demo/filters-006.js | 2 + demo/filters-007.html | 3 + demo/filters-007.js | 2 + demo/filters-009.html | 3 + demo/filters-009.js | 7 +- demo/filters-009a.html | 63 + demo/filters-009a.js | 133 ++ demo/{filters-011.html => filters-051.html} | 8 +- demo/{filters-011.js => filters-051.js} | 4 +- demo/{filters-012.html => filters-052.html} | 8 +- demo/{filters-012.js => filters-052.js} | 4 +- demo/{filters-013.html => filters-053.html} | 8 +- demo/{filters-013.js => filters-053.js} | 4 +- demo/{filters-014.html => filters-054.html} | 8 +- demo/{filters-014.js => filters-054.js} | 4 +- demo/{filters-015.html => filters-055.html} | 8 +- demo/{filters-015.js => filters-055.js} | 4 +- demo/img/iris-120.png | Bin 0 -> 27419 bytes demo/index.html | 20 +- .../{filters-011.png => filters-051.png} | Bin .../{filters-012.png => filters-052.png} | Bin .../{filters-013.png => filters-053.png} | Bin .../{filters-014.png => filters-054.png} | Bin .../{filters-015.png => filters-055.png} | Bin docs/index.html | 10 +- source/factory/filter.js | 27 +- source/worker/new-filter.js | 1209 +++++++++++++++++ 40 files changed, 1906 insertions(+), 62 deletions(-) create mode 100644 demo/filters-004a.html create mode 100644 demo/filters-004a.js create mode 100644 demo/filters-005a.html create mode 100644 demo/filters-005a.js create mode 100644 demo/filters-009a.html create mode 100644 demo/filters-009a.js rename demo/{filters-011.html => filters-051.html} (93%) rename demo/{filters-011.js => filters-051.js} (98%) rename demo/{filters-012.html => filters-052.html} (91%) rename demo/{filters-012.js => filters-052.js} (97%) rename demo/{filters-013.html => filters-053.html} (95%) rename demo/{filters-013.js => filters-053.js} (98%) rename demo/{filters-014.html => filters-054.html} (93%) rename demo/{filters-014.js => filters-054.js} (98%) rename demo/{filters-015.html => filters-055.html} (94%) rename demo/{filters-015.js => filters-055.js} (98%) create mode 100644 demo/img/iris-120.png rename demo/thumbs/{filters-011.png => filters-051.png} (100%) rename demo/thumbs/{filters-012.png => filters-052.png} (100%) rename demo/thumbs/{filters-013.png => filters-053.png} (100%) rename demo/thumbs/{filters-014.png => filters-054.png} (100%) rename demo/thumbs/{filters-015.png => filters-055.png} (100%) create mode 100644 source/worker/new-filter.js diff --git a/demo/filters-002.html b/demo/filters-002.html index aa777cb29..729d3fd7d 100644 --- a/demo/filters-002.html +++ b/demo/filters-002.html @@ -9,6 +9,9 @@ + + + +

Scrawl-canvas v8 - Filters test 004a

+

Parameters for: flood filter

+ +
+ +
Flood color
+
+ +
Opacity
+
+ +
+ + + + + +

+ +
+

Test purpose

+ + + +

Annotated code

+
+ + + + + + diff --git a/demo/filters-004a.js b/demo/filters-004a.js new file mode 100644 index 000000000..5b2f10056 --- /dev/null +++ b/demo/filters-004a.js @@ -0,0 +1,107 @@ +// # Demo Filters 004 +// Filter parameters: flood + +// [Run code](../../demo/filters-004.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +// Create the filter +const myFilter = scrawl.makeFilter({ + + name: 'flood', + method: 'flood', + + red: 0, + green: 0, + blue: 0, + alpha: 255 +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['flood'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let flood = document.querySelector('#flood'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + flood color: ${flood.value}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Use a color object to convert between CSS hexadecimal and RGB decimal colors +const converter = scrawl.makeColor({ + name: 'converter', +}); + +scrawl.addNativeListener( + ['input', 'change'], + (e) => myFilter.set({ opacity: parseFloat(e.target.value) }), + '#opacity'); + +scrawl.addNativeListener( + ['input', 'change'], + (e) => { + + converter.convert(e.target.value); + + myFilter.set({ + red: converter.r, + green: converter.g, + blue: converter.b, + }); + }, + '#flood'); + +// Setup form +document.querySelector('#flood').value = '#000000'; +document.querySelector('#opacity').value = 1; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/filters-005.html b/demo/filters-005.html index 8435f32f0..038914f50 100644 --- a/demo/filters-005.html +++ b/demo/filters-005.html @@ -10,7 +10,7 @@ + + + +

Scrawl-canvas v8 - Filters test 005a

+

Parameters for: channelLevels filter

+ +
+ +
Red
+
+ +
Green
+
+ +
Blue
+
+ +
Alpha
+
+ +
Opacity
+
+ +
+ + + + + +

+ +
+

Test purpose

+ + + +

Annotated code

+
+ + + + + + diff --git a/demo/filters-005a.js b/demo/filters-005a.js new file mode 100644 index 000000000..4264deabe --- /dev/null +++ b/demo/filters-005a.js @@ -0,0 +1,116 @@ +// # Demo Filters 005a +// Filter parameters: channelLevels + +// [Run code](../../demo/filters-005a.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +// Create the filter +const myFilter = scrawl.makeFilter({ + + name: 'channelLevels', + method: 'channelLevels', + + red: [50, 200], + green: [60, 220, 150], + blue: [40, 180], + alpha: [], +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['channelLevels'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let red = document.querySelector('#red'), + green = document.querySelector('#green'), + alpha = document.querySelector('#alpha'), + blue = document.querySelector('#blue'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + red: [${red.value}] + green: [${green.value}] + blue: [${blue.value}] + alpha: [${alpha.value}]`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +scrawl.addNativeListener( + ['input', 'change'], + (e) => { + + let a; + + if (e.target.id === 'opacity') a = e.target.value; + else { + + let temp = e.target.value.split(','); + a = []; + + temp.forEach(t => { + let n = parseInt(t, 10); + if (n.toFixed && !isNaN(n)) a.push(n) + }); + } + + myFilter.set({ + [e.target.id]: a, + }); + }, + '.controlItem'); + +// Setup form +document.querySelector('#red').value = '50, 200'; +document.querySelector('#green').value = '60, 220, 150'; +document.querySelector('#blue').value = '40, 180'; +document.querySelector('#alpha').value = ''; +document.querySelector('#opacity').value = 1; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/filters-006.html b/demo/filters-006.html index 2fe4bfeed..c4da0c121 100644 --- a/demo/filters-006.html +++ b/demo/filters-006.html @@ -10,7 +10,7 @@ + + + +

Scrawl-canvas v8 - Filters test 009a

+

Parameters for: chromakey filter

+ +
+ +
Transparent at
+
+ +
Opaque at
+
+ +
Key color
+
+ +
Opacity
+
+ +
+ + + + + +

+ +
+

Test purpose

+ + + +

Annotated code

+
+ + + + + + diff --git a/demo/filters-009a.js b/demo/filters-009a.js new file mode 100644 index 000000000..113a19cf5 --- /dev/null +++ b/demo/filters-009a.js @@ -0,0 +1,133 @@ +// # Demo Filters 009 +// Filter parameters: chroma + +// [Run code](../../demo/filters-009.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + +canvas.setBase({ + backgroundColor: 'black', +}) + + +// Create the filter +// + Chroma filters can have more than one range; each range array should be added to the `ranges` attribute +const myFilter = scrawl.makeFilter({ + + name: 'chromakey', + method: 'chromakey', + + red: 0, + green: 127, + blue: 0, + + opaqueAt: 1, + transparentAt: 0, +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['chromakey'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let col = document.querySelector('#color'), + trans = document.querySelector('#transparentAt'), + opaq = document.querySelector('#opaqueAt'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Key color: ${col.value} + Transparent at: ${trans.value} + Opaque at: ${opaq.value}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +const interpretColors = function () { + + const converter = scrawl.makeColor({ + name: 'converter', + }); + + const color = document.querySelector('#color'); + + return function () { + + converter.convert(color.value); + + myFilter.set({ + red: converter.r, + green: converter.g, + blue: converter.b, + }); + } +}(); +scrawl.addNativeListener(['input', 'change'], interpretColors, '.controlItem'); + +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: myFilter, + + useNativeListener: true, + preventDefault: true, + + updates: { + transparentAt: ['transparentAt', 'float'], + opaqueAt: ['opaqueAt', 'float'], + opacity: ['opacity', 'float'], + }, +}); + + +// Setup form +document.querySelector('#color').value = '#007700'; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/filters-011.html b/demo/filters-051.html similarity index 93% rename from demo/filters-011.html rename to demo/filters-051.html index 2329cff9b..2e5cddfdb 100644 --- a/demo/filters-011.html +++ b/demo/filters-051.html @@ -5,7 +5,7 @@ - Demo Filters 011 + Demo Filters 051 - - - -

Scrawl-canvas v8 - Filters test 005a

-

Parameters for: channelLevels filter

- -
- -
Red
-
- -
Green
-
- -
Blue
-
- -
Alpha
-
- -
Opacity
-
- -
- - - - - -

- -
-

Test purpose

- - - -

Annotated code

-
- - - - - - diff --git a/demo/filters-005a.js b/demo/filters-005a.js deleted file mode 100644 index 4264deabe..000000000 --- a/demo/filters-005a.js +++ /dev/null @@ -1,116 +0,0 @@ -// # Demo Filters 005a -// Filter parameters: channelLevels - -// [Run code](../../demo/filters-005a.html) -import scrawl from '../source/scrawl.js'; - -// #### Scene setup -const canvas = scrawl.library.canvas.mycanvas; - -scrawl.importDomImage('.flowers'); - - -// Create the filter -const myFilter = scrawl.makeFilter({ - - name: 'channelLevels', - method: 'channelLevels', - - red: [50, 200], - green: [60, 220, 150], - blue: [40, 180], - alpha: [], -}); - - -// Create the target entity -scrawl.makePicture({ - - name: 'base-piccy', - - asset: 'iris', - - width: '100%', - height: '100%', - - copyWidth: '100%', - copyHeight: '100%', - - method: 'fill', - - filters: ['channelLevels'], -}); - - -// #### Scene animation -// Function to display frames-per-second data, and other information relevant to the demo -let report = function () { - - let testTicker = Date.now(), - testTime, testNow, - testMessage = document.querySelector('#reportmessage'); - - let red = document.querySelector('#red'), - green = document.querySelector('#green'), - alpha = document.querySelector('#alpha'), - blue = document.querySelector('#blue'); - - return function () { - - testNow = Date.now(); - testTime = testNow - testTicker; - testTicker = testNow; - - testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: [${red.value}] - green: [${green.value}] - blue: [${blue.value}] - alpha: [${alpha.value}]`; - }; -}(); - - -// Create the Display cycle animation -const demoAnimation = scrawl.makeRender({ - - name: "demo-animation", - target: canvas, - afterShow: report, -}); - - -// #### User interaction -scrawl.addNativeListener( - ['input', 'change'], - (e) => { - - let a; - - if (e.target.id === 'opacity') a = e.target.value; - else { - - let temp = e.target.value.split(','); - a = []; - - temp.forEach(t => { - let n = parseInt(t, 10); - if (n.toFixed && !isNaN(n)) a.push(n) - }); - } - - myFilter.set({ - [e.target.id]: a, - }); - }, - '.controlItem'); - -// Setup form -document.querySelector('#red').value = '50, 200'; -document.querySelector('#green').value = '60, 220, 150'; -document.querySelector('#blue').value = '40, 180'; -document.querySelector('#alpha').value = ''; -document.querySelector('#opacity').value = 1; - - -// #### Development and testing -console.log(scrawl.library); diff --git a/demo/filters-006.html b/demo/filters-006.html index c4da0c121..36c8f222b 100644 --- a/demo/filters-006.html +++ b/demo/filters-006.html @@ -20,18 +20,21 @@

Scrawl-canvas v8 - Filters test 006

-

Parameters for: channels filter

+

Parameters for: channelLevels filter

Red
-
+
Green
-
+
Blue
-
+
+ +
Alpha
+
Opacity
@@ -49,7 +52,7 @@

Test purpose

diff --git a/demo/filters-006.js b/demo/filters-006.js index a7cc8f987..9f620afb5 100644 --- a/demo/filters-006.js +++ b/demo/filters-006.js @@ -1,5 +1,5 @@ // # Demo Filters 006 -// Filter parameters: channels +// Filter parameters: channelLevels // [Run code](../../demo/filters-006.html) import scrawl from '../source/scrawl.js'; @@ -13,12 +13,13 @@ scrawl.importDomImage('.flowers'); // Create the filter const myFilter = scrawl.makeFilter({ - name: 'channels', - method: 'channels', + name: 'channelLevels', + method: 'channelLevels', - red: 1, - green: 1, - blue: 1, + red: [50, 200], + green: [60, 220, 150], + blue: [40, 180], + alpha: [], }); @@ -37,7 +38,7 @@ scrawl.makePicture({ method: 'fill', - filters: ['channels'], + filters: ['channelLevels'], }); @@ -51,6 +52,7 @@ let report = function () { let red = document.querySelector('#red'), green = document.querySelector('#green'), + alpha = document.querySelector('#alpha'), blue = document.querySelector('#blue'); return function () { @@ -60,9 +62,10 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: ${red.value} - green: ${green.value} - blue: ${blue.value}`; + red: [${red.value}] + green: [${green.value}] + blue: [${blue.value}] + alpha: [${alpha.value}]`; }; }(); @@ -77,30 +80,35 @@ const demoAnimation = scrawl.makeRender({ // #### User interaction -// Setup form observer functionality -scrawl.observeAndUpdate({ +scrawl.addNativeListener( + ['input', 'change'], + (e) => { - event: ['input', 'change'], - origin: '.controlItem', + let a; - target: myFilter, + if (e.target.id === 'opacity') a = e.target.value; + else { - useNativeListener: true, - preventDefault: true, + let temp = e.target.value.split(','); + a = []; - updates: { + temp.forEach(t => { + let n = parseInt(t, 10); + if (n.toFixed && !isNaN(n)) a.push(n) + }); + } - red: ['red', 'float'], - green: ['green', 'float'], - blue: ['blue', 'float'], - opacity: ['opacity', 'float'], - }, -}); + myFilter.set({ + [e.target.id]: a, + }); + }, + '.controlItem'); // Setup form -document.querySelector('#red').value = 1; -document.querySelector('#green').value = 1; -document.querySelector('#blue').value = 1; +document.querySelector('#red').value = '50, 200'; +document.querySelector('#green').value = '60, 220, 150'; +document.querySelector('#blue').value = '40, 180'; +document.querySelector('#alpha').value = ''; document.querySelector('#opacity').value = 1; diff --git a/demo/filters-007.html b/demo/filters-007.html index b0a9f5ee4..1ee51ac2f 100644 --- a/demo/filters-007.html +++ b/demo/filters-007.html @@ -10,7 +10,7 @@

Scrawl-canvas v8 - Filters test 010

-

Parameters for: matrix, matrix5 filters

+

Parameters for: chroma filter

-
- -
-
 
-
 
-
 
-
 
- - -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
- -
-
-
-
-
+
Low color
+
+ +
High color
+
+ +
Opacity
+
+
@@ -83,7 +46,7 @@

Test purpose

diff --git a/demo/filters-010.js b/demo/filters-010.js index 441386c6b..b9aeca6b6 100644 --- a/demo/filters-010.js +++ b/demo/filters-010.js @@ -1,5 +1,5 @@ // # Demo Filters 010 -// Filter parameters: matrix, matrix5 +// Filter parameters: chroma // [Run code](../../demo/filters-010.html) import scrawl from '../source/scrawl.js'; @@ -10,26 +10,19 @@ const canvas = scrawl.library.canvas.mycanvas; scrawl.importDomImage('.flowers'); -// Create the filters -const matrix3 = scrawl.makeFilter({ +// Create the filter +// + Chroma filters can have more than one range; each range array should be added to the `ranges` attribute +const myFilter = scrawl.makeFilter({ - name: 'matrix3', - method: 'matrix', + name: 'chroma', + method: 'chroma', - weights: [0, 0, 0, 0, 1, 0, 0, 0, 0], -}); - -const matrix5 = scrawl.makeFilter({ - - name: 'matrix5', - method: 'matrix5', - - weights: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + ranges: [[0, 0, 0, 92, 127, 92]], }); // Create the target entity -const target = scrawl.makePicture({ +scrawl.makePicture({ name: 'base-piccy', @@ -43,7 +36,7 @@ const target = scrawl.makePicture({ method: 'fill', - filters: ['matrix3'], + filters: ['chroma'], }); @@ -65,8 +58,9 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - matrix3: ${matrix3.weights} - matrix5: ${matrix5.weights}`; + low color: ${lowCol.value} + high color: ${highCol.value} + range: [${myFilter.ranges}]`; }; }(); @@ -82,99 +76,54 @@ const demoAnimation = scrawl.makeRender({ // #### User interaction // Setup form observer functionality -const changeMatrix = function () { +const interpretColors = function () { - const selector = document.querySelector('#selectMatrix'); + const converter = scrawl.makeColor({ + name: 'converter', + }); - return function () { + const lowColor = document.querySelector('#lowColor'); + const highColor = document.querySelector('#highColor'); - target.set({ - filters: [selector.value], - }); - } -}(); -scrawl.addNativeListener(['input', 'change'], changeMatrix, '#selectMatrix'); - -const updateWeights = function () { - - const m11 = document.querySelector('#m11'); - const m12 = document.querySelector('#m12'); - const m13 = document.querySelector('#m13'); - const m14 = document.querySelector('#m14'); - const m15 = document.querySelector('#m15'); - const m21 = document.querySelector('#m21'); - const m22 = document.querySelector('#m22'); - const m23 = document.querySelector('#m23'); - const m24 = document.querySelector('#m24'); - const m25 = document.querySelector('#m25'); - const m31 = document.querySelector('#m31'); - const m32 = document.querySelector('#m32'); - const m33 = document.querySelector('#m33'); - const m34 = document.querySelector('#m34'); - const m35 = document.querySelector('#m35'); - const m41 = document.querySelector('#m41'); - const m42 = document.querySelector('#m42'); - const m43 = document.querySelector('#m43'); - const m44 = document.querySelector('#m44'); - const m45 = document.querySelector('#m45'); - const m51 = document.querySelector('#m51'); - const m52 = document.querySelector('#m52'); - const m53 = document.querySelector('#m53'); - const m54 = document.querySelector('#m54'); - const m55 = document.querySelector('#m55'); - - let weights3, weights5; + let lowRed = 0, + lowGreen = 0, + lowBlue = 0, + highRed = 92, + highGreen = 127, + highBlue = 92; return function () { - weights3 = [parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), - parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), - parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value)]; + converter.convert(lowColor.value); + + lowRed = converter.r; + lowGreen = converter.g; + lowBlue = converter.b; + + converter.convert(highColor.value); - weights5 = [parseFloat(m11.value), parseFloat(m12.value), parseFloat(m13.value), parseFloat(m14.value), parseFloat(m15.value), - parseFloat(m21.value), parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), parseFloat(m25.value), - parseFloat(m31.value), parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), parseFloat(m35.value), - parseFloat(m41.value), parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value), parseFloat(m45.value), - parseFloat(m51.value), parseFloat(m52.value), parseFloat(m53.value), parseFloat(m54.value), parseFloat(m55.value)]; + highRed = converter.r; + highGreen = converter.g; + highBlue = converter.b; - matrix3.set({ - weights: weights3, - }); + myFilter.set({ - matrix5.set({ - weights: weights5, - }); + ranges: [[lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue]], + }) } }(); -scrawl.addNativeListener(['input', 'change'], updateWeights, '.weight'); +scrawl.addNativeListener(['input', 'change'], interpretColors, '.controlItem'); + +scrawl.addNativeListener( + ['input', 'change'], + (e) => myFilter.set({ opacity: parseFloat(e.target.value) }), + '#opacity'); + // Setup form -document.querySelector('#selectMatrix').value = 'matrix3'; -document.querySelector('#m11').value = 0; -document.querySelector('#m12').value = 0; -document.querySelector('#m13').value = 0; -document.querySelector('#m14').value = 0; -document.querySelector('#m15').value = 0; -document.querySelector('#m21').value = 0; -document.querySelector('#m22').value = 0; -document.querySelector('#m23').value = 0; -document.querySelector('#m24').value = 0; -document.querySelector('#m25').value = 0; -document.querySelector('#m31').value = 0; -document.querySelector('#m32').value = 0; -document.querySelector('#m33').value = 1; -document.querySelector('#m34').value = 0; -document.querySelector('#m35').value = 0; -document.querySelector('#m41').value = 0; -document.querySelector('#m42').value = 0; -document.querySelector('#m43').value = 0; -document.querySelector('#m44').value = 0; -document.querySelector('#m45').value = 0; -document.querySelector('#m51').value = 0; -document.querySelector('#m52').value = 0; -document.querySelector('#m53').value = 0; -document.querySelector('#m54').value = 0; -document.querySelector('#m55').value = 0; +document.querySelector('#lowColor').value = '#000000'; +document.querySelector('#highColor').value = '#5c7f5c'; +document.querySelector('#opacity').value = 1; // #### Development and testing diff --git a/demo/filters-009a.html b/demo/filters-011.html similarity index 90% rename from demo/filters-009a.html rename to demo/filters-011.html index ac2542a96..823b62a3c 100644 --- a/demo/filters-009a.html +++ b/demo/filters-011.html @@ -5,7 +5,7 @@ - Demo Filters 009a + Demo Filters 011 + + + +

Scrawl-canvas v8 - Filters test 012

+

Parameters for: matrix, matrix5 filters

+ +
+ +
+ +
+
 
+
 
+
 
+
 
+ + +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ + + + + +

+ +
+

Test purpose

+ +
    +
  • Create a test Picture entity
  • +
  • Create matrix, matrix5 filters; apply them to the test entity
  • +
  • Update filter attributes and observe the effect they have on the entity
  • +
+ +

Annotated code

+
+ + + + + + diff --git a/demo/filters-012.js b/demo/filters-012.js new file mode 100644 index 000000000..f2cac329b --- /dev/null +++ b/demo/filters-012.js @@ -0,0 +1,181 @@ +// # Demo Filters 012 +// Filter parameters: matrix, matrix5 + +// [Run code](../../demo/filters-012.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +// Create the filters +const matrix3 = scrawl.makeFilter({ + + name: 'matrix3', + method: 'matrix', + + weights: [0, 0, 0, 0, 1, 0, 0, 0, 0], +}); + +const matrix5 = scrawl.makeFilter({ + + name: 'matrix5', + method: 'matrix5', + + weights: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], +}); + + +// Create the target entity +const target = scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['matrix3'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let lowCol = document.querySelector('#lowColor'), + highCol = document.querySelector('#highColor'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + matrix3: ${matrix3.weights} + matrix5: ${matrix5.weights}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +const changeMatrix = function () { + + const selector = document.querySelector('#selectMatrix'); + + return function () { + + target.set({ + filters: [selector.value], + }); + } +}(); +scrawl.addNativeListener(['input', 'change'], changeMatrix, '#selectMatrix'); + +const updateWeights = function () { + + const m11 = document.querySelector('#m11'); + const m12 = document.querySelector('#m12'); + const m13 = document.querySelector('#m13'); + const m14 = document.querySelector('#m14'); + const m15 = document.querySelector('#m15'); + const m21 = document.querySelector('#m21'); + const m22 = document.querySelector('#m22'); + const m23 = document.querySelector('#m23'); + const m24 = document.querySelector('#m24'); + const m25 = document.querySelector('#m25'); + const m31 = document.querySelector('#m31'); + const m32 = document.querySelector('#m32'); + const m33 = document.querySelector('#m33'); + const m34 = document.querySelector('#m34'); + const m35 = document.querySelector('#m35'); + const m41 = document.querySelector('#m41'); + const m42 = document.querySelector('#m42'); + const m43 = document.querySelector('#m43'); + const m44 = document.querySelector('#m44'); + const m45 = document.querySelector('#m45'); + const m51 = document.querySelector('#m51'); + const m52 = document.querySelector('#m52'); + const m53 = document.querySelector('#m53'); + const m54 = document.querySelector('#m54'); + const m55 = document.querySelector('#m55'); + + let weights3, weights5; + + return function () { + + weights3 = [parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), + parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), + parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value)]; + + weights5 = [parseFloat(m11.value), parseFloat(m12.value), parseFloat(m13.value), parseFloat(m14.value), parseFloat(m15.value), + parseFloat(m21.value), parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), parseFloat(m25.value), + parseFloat(m31.value), parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), parseFloat(m35.value), + parseFloat(m41.value), parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value), parseFloat(m45.value), + parseFloat(m51.value), parseFloat(m52.value), parseFloat(m53.value), parseFloat(m54.value), parseFloat(m55.value)]; + + matrix3.set({ + weights: weights3, + }); + + matrix5.set({ + weights: weights5, + }); + } +}(); +scrawl.addNativeListener(['input', 'change'], updateWeights, '.weight'); + +// Setup form +document.querySelector('#selectMatrix').value = 'matrix3'; +document.querySelector('#m11').value = 0; +document.querySelector('#m12').value = 0; +document.querySelector('#m13').value = 0; +document.querySelector('#m14').value = 0; +document.querySelector('#m15').value = 0; +document.querySelector('#m21').value = 0; +document.querySelector('#m22').value = 0; +document.querySelector('#m23').value = 0; +document.querySelector('#m24').value = 0; +document.querySelector('#m25').value = 0; +document.querySelector('#m31').value = 0; +document.querySelector('#m32').value = 0; +document.querySelector('#m33').value = 1; +document.querySelector('#m34').value = 0; +document.querySelector('#m35').value = 0; +document.querySelector('#m41').value = 0; +document.querySelector('#m42').value = 0; +document.querySelector('#m43').value = 0; +document.querySelector('#m44').value = 0; +document.querySelector('#m45').value = 0; +document.querySelector('#m51').value = 0; +document.querySelector('#m52').value = 0; +document.querySelector('#m53').value = 0; +document.querySelector('#m54').value = 0; +document.querySelector('#m55').value = 0; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/filters-004a.html b/demo/filters-013.html similarity index 88% rename from demo/filters-004a.html rename to demo/filters-013.html index f3b201d51..653c9d5a9 100644 --- a/demo/filters-004a.html +++ b/demo/filters-013.html @@ -5,7 +5,7 @@ - Demo Filters 004a + Demo Filters 013 + + + +

Scrawl-canvas v8 - Filters test 014

+

Parameters for: areaAlpha filter

+ +
+ +
Tile Width
+
+ +
Tile Height
+
+ +
Gutter Width
+
+ +
Gutter Height
+
+ +
Offset X
+
+ +
Offset Y
+
+ +
Tile-Tile alpha
+
+ +
Tile-Gutter alpha
+
+ +
Gutter-Tile alpha
+
+ +
Gutter-Gutter alpha
+
+ +
Opacity
+
+ +
+ + + + + +

+ +
+

Test purpose

+ +
    +
  • Create a test Picture entity
  • +
  • Create an areaAlpha filter and apply it to the test entity
  • +
  • Update filter attributes and observe the effect they have on the entity
  • +
+ +

Annotated code

+
+ + + + + + diff --git a/demo/filters-014.js b/demo/filters-014.js new file mode 100644 index 000000000..03d717dab --- /dev/null +++ b/demo/filters-014.js @@ -0,0 +1,143 @@ +// # Demo Filters 014 +// Filter parameters: areaAlpha + +// [Run code](../../demo/filters-014.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +// Create the filter +const myFilter = scrawl.makeFilter({ + + name: 'areaAlpha', + method: 'areaAlpha', + + tileWidth: 10, + tileHeight: 10, + gutterWidth: 10, + gutterHeight: 10, + offsetX: 0, + offsetY: 0, + areaAlphaLevels: [255, 255, 0, 0], +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['areaAlpha'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let tile_width = document.querySelector('#tile_width'), + tile_height = document.querySelector('#tile_height'), + gutter_width = document.querySelector('#gutter_width'), + gutter_height = document.querySelector('#gutter_height'), + alpha_0 = document.querySelector('#alpha_0'), + alpha_1 = document.querySelector('#alpha_1'), + alpha_2 = document.querySelector('#alpha_2'), + alpha_3 = document.querySelector('#alpha_3'), + offset_x = document.querySelector('#offset_x'), + offset_y = document.querySelector('#offset_y'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Tile dimensions - width: ${tile_width.value} height: ${tile_height.value} + Gutter dimensions - width: ${gutter_width.value} height: ${gutter_height.value} + Offset - x: ${offset_x.value} y: ${offset_y.value} + areaAlphaLevels: [${alpha_0.value}, ${alpha_1.value}, ${alpha_2.value}, ${alpha_3.value}]`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: myFilter, + + useNativeListener: true, + preventDefault: true, + + updates: { + + tile_width: ['tileWidth', 'round'], + tile_height: ['tileHeight', 'round'], + gutter_width: ['gutterWidth', 'round'], + gutter_height: ['gutterHeight', 'round'], + offset_x: ['offsetX', 'round'], + offset_y: ['offsetY', 'round'], + opacity: ['opacity', 'float'], + }, +}); + +scrawl.addNativeListener(['input', 'change'], function (e) { + + let a0 = parseInt(document.querySelector('#alpha_0').value, 10), + a1 = parseInt(document.querySelector('#alpha_1').value, 10), + a2 = parseInt(document.querySelector('#alpha_2').value, 10), + a3 = parseInt(document.querySelector('#alpha_3').value, 10); + + myFilter.set({ + areaAlphaLevels: [a0, a2, a1, a3], + }); + +}, '.alphas'); + +// Setup form +document.querySelector('#tile_width').value = 10; +document.querySelector('#tile_height').value = 10; +document.querySelector('#gutter_width').value = 10; +document.querySelector('#gutter_height').value = 10; +document.querySelector('#offset_x').value = 0; +document.querySelector('#offset_y').value = 0; +document.querySelector('#opacity').value = 1; +document.querySelector('#alpha_0').value = 255; +document.querySelector('#alpha_1').value = 0; +document.querySelector('#alpha_2').value = 255; +document.querySelector('#alpha_3').value = 0; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/index.html b/demo/index.html index 6a3b3b4e8..12c6ce995 100644 --- a/demo/index.html +++ b/demo/index.html @@ -234,10 +234,10 @@

Filters functionality tests

Filters 004 - Parameters for: threshold filter
-
Filters 005 - Parameters for: channelLevels filter
+
Filters 005 - Parameters for: channelstep filter
-
Filters 006 - Parameters for: channelstep filter
+
Filters 006 - Parameters for: channelLevels filter
Filters 007 - Parameters for: channels filter
@@ -260,6 +260,9 @@

Filters functionality tests

Filters 013 - Parameters for: flood filter
+
+
Filters 014 - Parameters for: areaAlpha filter
+
Filters 051 - Canvas engine filter strings (based on CSS filters)
diff --git a/demo/thumbs/filters-001.png b/demo/thumbs/filters-001.png index 09127ba531587d5c06fc7ac7ec665d308c63d3e7..153e3abfcfd175c64727a04b66ccaf5e532a3bf7 100644 GIT binary patch literal 581726 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%0AN2KMg2#q+=W25>r?B;-YNoQ+;`<}Y$X*om?D?Wl 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

h|l831DCR`s;G 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�S?^jBS>^j}zD|-M^0+YsP44CX5Eibs752eu$j4 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 TlKcS200000NkvXXu0mjfh2Wdw diff --git a/demo/thumbs/filters-002.png b/demo/thumbs/filters-002.png index 9129e7c31e3fbf9902a0d0b23a71f87adf3c9a40..bb4b9e0766ab37118c76165617d86147b7b0eaee 100644 GIT binary patch literal 325090 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

JQh`gHG1q2xDJs*ruZ!*UyX+$xS*gppn5H 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

LQjX*yrGy-X)xJQ~?*KNt*%@QGWR&cRI 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

<-L z?TA9Mzj^C9X5l3h@|$E`CgQRG-05Oz86#Ey8YQ-k&p{IchiSp4$6vlf@Hm3v@^^1y z-j`wuvYvitNnd(^yd2@>&Os!FnNpVAgQ7aSApEpldPLG3!SK^oVzWk5%dg!XTEQeC z&>=9EdGkVh895{&K}4d{(KrOqpN?H%^!7+|hDh`Qfr> zpvn`=q3^&SD7%l=es)SIuo1eTo{VQXc5976v6FduC>D~^3su3(iz>{Oz)BKp6(^o>7QDCv0m zb-ASfV}3vuoDX^P{>SHb+jd#+1WXqEW*KXJ0sr-SM4I^b$h$WW#_T z9}S>HhQ)ahX5BUDOBw~#I*!0z!^1WDsbSGN1Q@#`KSDGhHCUeMO616-HGT0HvD#UIb1>Kq|RD*;C(gq4xg#&9&mmGuw$T>O;ShA&J{NXDcK4uPrA zvwF2SBI*OV4@Ntu3f~kO^XCuKidC%F((34#b?h2p@pGwR!+r&icTPvLV9O?51E=!k zYUvIAej88CrVn;l8q`-*&mmGBsLZm@lJh@a`jh9z6|p2P1Jx!^(h2i_$HDQeECKv) zlf9xIAne5v@Twr=s}5%i@n$vENa-klWKa0!$;2X^>NyAqW?qpN5Tu}}gRAlFtU_>-+T;qvC(ppWSAw4}E9XoCZnVj5P0 zh_?(>-QjO@(cnyoo;exVCI)O85Wl4ooL_RD8^ygQ9?ag(S;JVI$FGM6%vxS;V!7qFEWotDop;-CV)$X)(34SGl;BbxE#6T} zD+FTJ#;9FG91vq3g|cj~#NCA714CNrySqet`Kn?hPVkrpX2*^BjJpyeRD;hMDd0Gz zQVm0bvN=c9VNg|_NX{ zs5W#ZK)To_9(d?UMy)(_9Ps6NbNh%oq}OBtgMqsvW$*PfA-8k zarE;|aUP z&$uL|f5>yeC@j)1K-0Lr)mqSPL>vMWlA%f)?xc^JMlkT9Q0Wny)3Jp6!;;jSfj%nM z)Js)7&~k2)JGCwyAi@;*C^M908PJ*_@UQ9yNRE$Se0Rw5c1$1f|ET)PxF*2$?E!<0 z9^KstQUmE2HM&H)L|W;V9I138AR#TOv~)-}NT<@>NWVMro^$@6_HDoGx%cd@>$>lU z9`SV=r}>q_t3kt1ff$8u#rX_M7vw^M%(A6krzyP1X?2fY@;*~w7S`Q*pvo4nJW;+< zQ1P0w;%2{0R&tgA>+PV}{hJ!Lnf>Wf)In>AnkjlHOTasfB7;~-OnYL_xj_Y&&)m8cH>ER>T=9JPc+?92x*@4PV4-_5j83JFpk z5J5>87_LaT>dmbG^0Aj*C`BHYa+y!>zFn?G+m_Lc%JpQpK%b%g^KIBnC8_F}GZQ1l zZb^Bs?22#N$kf>`*Li^u$0?B7H(Xq;8%rnO;{rEgp;m_5%)hMYMwqBd%_TqiQCPRy zsg(pLojSc3?r-xt=d&UFdfD_x_unjgS23cVf((^z2V!4MBFXd&s_!VJAZ< zDt6c4bBbf>$rfA6;^oaQ_uh$Hoc_gq-=j*;j%TH2FfgNY2+o@7I4QQrC&s%v zm(Xms6bIIUu}`ez+F9DDEbQOB7n!!VGw!XZR^q1vkS%yQV!-4 zj`;LTHsl_8D>Bs|-KO)y{f@PVxFc1TuC@fkI9FfbIf0bK6L{Y~jrGg?g}%{-OEYQC z>u^#>dw)&^B6s*MZdx(_2q!&wex2LK+rig>zP9D@%@}2jdx(}(1B!g4&>%1zt>YCs zS{-`Xl1`XJ&;ptg{Zz(V!8=p5mqi#don^24U3k9Jl8x66)BK?zrkG}hXHbfCpV3TW z#lKuQFcNKV0pztVgp5;_fX0XWPmh)h_y|T*H)afk;0*M&;H|kRV)BAtx9C|PwgO}c#UqY>f765g4AMrvwtI?A87$A)}I<_c60>iYD3$|E{x}DN}Z_a

  • 7I;absCPVk8L&}?a_ z(}c!kUHQykvXF`gEyB2(%w0MMJvwq)DNdx5B66fT+5;v?B+In1b2s;QSBu`Kpr+#> zOa)Hgp`Hkhoo3?;x>_`iuUOI1y^I!+)+XFq5bvArd<$l|IyBv2N<6z62H*!+7HGRG z71W(IdA#gji_(;`;xRWm9+MJ_5@}>=>?u?>@NCE~WBEb7;!gzF$Y>jD+HOnOS%HE6 z9Z#yp0e#@3{}bwaee52N+=;*D`WTo3G)nO+O%+ZC|G}S5Rx|vro?kbtlL1on{n)-n zf2Bo4soRNdpIaZEN&{{-9U{JUt#@eBaK^}c*s-G}=L!RoBi|-)eAO6-z_`=s$#VPv z+%35K`TglS3Y{E}3zSUy!#qs0$eNyj`CU;r#G-yT|0}QfFpBw#Rz z2U+)ToSujYjAhCK!_AJjRx}|`FO-4dIGC4_i*ilYW4c4hKg@-Li*rDwA_ZLeV{BPZ z;RG>Jbt;Y<&kfrw-@0qlF}jJioYC!;nD_I_eGh^$Bor9JzyJKxU@XH`OVuDjrYAPS zLg9kmnzo+&XAQ;u>YFk@48}xvveR>IPguS2dvY*08u0+IgNy*z`m-YbNw0&b9aqKe z=bmT)aJ-_lbkO7#{Rc`~r~QWaxxV zGCCI(o4ZBYRWcdbb`gn4f$A_cU=c=Mx?bB0qjlfD~xVU^x(`{A| zlRn0`sWEm-0!%`^XzBh1E^&#H1;sv={rY67PwTg%1ccUl4zc%^Fwb7MK$a$3B9B#t zu7z!NqP3!wA}xAQ$9WCSa4i_!$rnKYr|7Gr;3voVIx%9r0Os#45ob^BPsDP7Y|w)q zO|IYk_DjSXCq;W{zCNFd40Df#rVF}`j%+!LV+gg+20Z{K`!q>|ckOr#T!JYN7V8w` zV!!rbmtkB^3ar1)-&nE0)9gi+B^G}xnHxdmS$(Om5cVtFLmHZH1)luNi1bwo)op2d zzyyhlK3KL_J=7r!?J9~{T+`r-qD(+c)MIdH-q|KGIi_fEf26&bJU-wlX+tQEAT>-~ zk+4)?9ifL{M7z_@byr{9v3>APd5N}CxEO;CcKQ3_HGhhGYV6o=L&ti+Q zG#Z*Cn*>!%>Orgj>&+PZ85r8!O?;0dKs|gZ{Fae~El)c6L-SV3ts=qu)=~FppBm|^ zH*Ldw_xvV1lDgIqV5}T67kwIeilU*}G-B=g(9%rOb8wOsG|Uwpyrt($G}yH-VLmL7 zDsn{bo2-}c6vc8E?~SiJy1E!>ss&7CKyW2bvz#nSrq0aNwQ|~0w0xI2dIpk#9}A^x zrH4Bk)daZfYh1z>i1GmvHHq-OhJ_YdQ9KCrWzOHEKM*Im{6lys=Efyg{}!*W#O=Fo zljLKI4mI742%6*zFEl$ur-V27E$9YzyE8ffmask zw@rzRUz6M*x=VO=+S{mzZNHnR^gM4_xv0NxS*fZiSozL>JosOy@xSNg;DGS;!Ckj^ zH?~FXGwL6wh!&Vj$7G@nh6ekFG8V2T%lXU)7I_WaRtA*>epfcNRP3#~!nblWc3&PG|u+D7HCS z6L`h>4OIEBD|jVns7NK>$;kZU)j^4MO>U|BamPT{q)k8L2r^>!8yfZIga+}bA<4x0 zXTPOt15KOwK(jY5XO^R9S#AOXUL=a=8F4&u7 zHz*XoTga6w5kJ97`uB3VewFN}ql}l#2pZW;0NQPDyyBJ38ohKQF>ddi5%R zJtYJZj5fo78W&7kC$z6B#N;K0F;KGpiR6vM54n(;OPjzi(hgXKKC0|*Bs>A^!Mc^f zET>2D&p-j!)4QlC-dKOxm}e*tN1peO7n|uZN#M~zN|I232}`5}A@kaL9zLTHwk#6P zuyiP`iXbat_?CbOSc<(H4M=M=p&{X4VMq960+NdpEufL+SYSK7$ezoSpLtE*# z24RBrwQ43Q7j?08636UW z2#Bd$HBM&)L>VH>0j7(z zLHl>h2u2%gNI>R9AbX6o?UhzZ5w-J%BbN*q^F(WkAjsTg*#@rVbtUAAOcVwawSHk6 zsA!r@a5PNm&iY8@#`>y(xXaeQ_T?F_HZm`akx{zDL^X={d%>JzE6N>ce1ejnTt)lk z3mm3BSE^m9b#iZni;XeBX5R=0MU`Ev6RlIZUH4@k*XAox3!Kv1F5E8U&Zu9>1k&%> zU|C^x;8|*i!yoR0O0iJ1C+gz<`3dNJG~ne?gVQ;kwFXo#A}x}0^mK0h{vEvhn50dqWCnuuzq6(i|fq=`-k63`-)=G|w-$S?-KbM^4|2Nk{PzPal@N@*ByqNh7oMe8AgcuP|W5Oi?RQV=*9@$og97MDbYDAd+YBd4BtF zNiga5)avCcG-NJbko{1M@ynV-yJ|L_sRX^jTGA_`fgz{bq>Q~9?@Vdc4-{?Avin(` zw@sL8s>bW5cW=q#)kpQzQB5Jmt1@pW=eekl5{_XFlAbSlN2ts`NMj?dl}YyI=0NXx zw$W0ENw)>J_=sx^t)s7k&dTD73by2cG#48rC(2>|Gj?UE zt;r%1;LT>lQ2UWC_=eulc}+kwJaoc~iqo*VliC1`JVpP#rCj_;UV5TU3Lh_*yzHAX z#1K@i)>L%*MA{Y7!AwOvCF{`kqaNnrg~DRJ&y{%5`npVcPWw$Nxhk53-#8j4d!w)w zj)S&LqcZikyTzSt7h_4!p1$nW%ce+&or}_tEe~tYdnw66g`O&58Xib!E-LWd?^Ua> z$NPr9(0i9MHZ@l)rW$T?WO$S;W&gJt&fgXgd8YrR9=*-7A3ILoxG_pt7iLEpgOu&i z=1o3QvfI%h6QIPy{$hteg_=lp=r0thD9EEK;>>$uQR*14^R613eJM+HI{JP^)dgJF zA_pOeBdmRI(c`8lRDb6_1-)OMvZ%}n7MLuxUFomzk^CTm&S~#Cg87L=@AmS_u<;D0 z$LHY#s!_`wk9f%h@qoUbZ&$Fk{vpzG9=;>C6~X41PdQCV{#G`ZS}A?-f%-#6j2PHo zO`P5(Kt!ks@(JI7QhXwruG)f>e_PNN=A_fVHggFxnMfgj$SyIwP}7nxq)><&5#3GP zbzlE1ekJ@jEovoOIvLJ`$&sr1M14aYgQXY{l4_EJ?M^!GpcxLlbuzQW&!<{#5PtZc zb?acg#34fXjX)Il&c9Y1e>_B!x%=KiH1J>nVeaB?=d1UzB!oIMC~iG$ng+d4dY};M zvp%E{mdxS8!jLt8B8@>7U(s-JqAOLZ7^qm6sKoUTMPe}AA~%yhf{kZLaqcg@*IZv# zXB>Hz9tY$`O|J>Agw~lEkPdoFE8;9)Z%5GGd}-aEnr%0CQ8C-0FG~yR4Y1%$c=txa z8Zh2J4fYet_pAkbYctS#;7>%Hyc1Kzp&QhkTuaKV$HlcB=y|`w$kpiw=eBfnS@gf0T1?`GsepJJ)PCufE5dP*gc9L6jv;m6uVR5_vp2xG4;*{u z_6z&`Z$Q&U(6z&PE)9?|j9qMqxg0Mx{-sL&51n{1Z^}4G2+;c`rOAwA;L5!!N-4o& z3;d2!jSc0u1#}?O#vhQ=_)j9A?Xq(_!nrZqdQ0cMAVrq}f=590d^Gk8C=O2(lT%Wf z7^}{N!|uaBnIWZ_N-@VX$r;WpcE4^9Mau5r!$p(hrXA(@F3zvqo4w{)ZtIesB(6X2 zRur}kyDFW-zlz7phP>Kcdokgs?@{(hoh>H@7-vLY?Z-ULD-#&#POBeNBG;W`l=pyK zrVZF`HZ|<@krVA3>3`XT|NgaHOe}J`k$1#+B+&7^*FJl{7ak)u$f^IIECBg;Do&*8 z<)6)@7*~iWKVAx@T*2YwApMf3^B*^HTX@!7!{s?FXmMUM_@T&TAe*RP+R^axF=GuhoRDLLd5|DNCE4$*!>ql zjrNQ5WW|HjZ(gA2g7B7n0S@-;@H+K9iZ@8mFl>jT6W>2W?ZEo$i!Of6)98taFE%lU zPi2QEO_FI&QCG0~8?x~zM>j#AhsLyD!cS;$>}xYcw$_vG!oMP)aR5(qsqe~*j9**% z?Dad3WcnPG9(wB98;k)(V5m^5 zvI`yTwn`L3s`#0;@cw1+s(9>Xl2)Z+?>5cF(_-cRrX8;m@q9EqEUgi>SMcw|2 zEm?Whxfaa=b5;tO79|D*MnT>#*Q2p?>FSEjxGy+V^RK6k-MiCvyBXhMxhh|Np;ne! zOU_8ZY974+QO&h6lOkj2YDY__x4?_hA9<4+T;(me<$kOB9}LUE6W(bS_!Tn~-4Gjw z7DCYpf_vKlIub$E!N$28&c`cgyQq%|RpPA64S#DIYTon%tU(5&Z)V-bGZXI;q~=wV z&DR%Ni{5muJ}$I|I13VSu{IQm%$2@ar_8}!#6cHpVp{|*s^zGFe6D<+5*QqWcz9;4 zcAm6Rf&!EkF)xG#&LH1y^`)LIa1{G6lX2oOQ4L40UJEHKrUPj`cymxw8Yb=!l z>0AH0ltg_Y=5N`a^z;jHt=EW}rYI)46#c*l{Dnlm4m6l|2vEYzR8Y5w!EdYP%(U`E zzi3RNsSdx@n#WXS$D=tl0-bc*P-BrelY%R+Bl1h>v?(e#d&3z8~#9$jq`j0hu_ftvXm@@$+~8Nf4wiXm6b#4cOB|lnk>7g*lU6NP$!cy)rx7B zf0TkRjfFdN+VUoJNTG>!&)Sm?EJ@~nm7NqyeQ|Cu;bT=FL& zsgTNu(*^5D34w04qF(@$gABz)!nWi;{VK5@tVOe}45UFk(bHHz%A`9JUUEI|eURXS zM>dl9;Fj*hOZq(})kfzED4?k2O)rD*pCedEZyI*H3Z-KLB=|PMz_Y{lnfM!n>D9DE z{VE1FmKq4f(b*?AC32Jp)~5&i%t(rU``1H|_0_eaWB7ffOrTS+qn=#c&lInMf9Nus zxa~ESyVkk4nTK|ukyStO*xLG@gH~=-aE`L0di(MO>QK}GLB(G!mfnze7I^G@`$Pku zuow|Z0V1ZntQfz5bmIBc3eSD4v4KzHFKfuc>%i$-r4i~$2_({F!A<}95^H8zPWVtf zm^!;a^#bI#6stdrm`E;J{E&l&jE#06uU|UYf|kX5g zmA9e9pR>&cmK$~x&dk#>e4o2g8Xa4mv$#1yba>SQV6j11w~{|3R+5g>R(gT+H>42TZAfDY#C+!p9~<&&zB|4zGF-gHEtTfLbEWx{ zd0S;zZ)A(Sh)nl#!uQ9cA^eIyn`#?VqO%bS;b%8!awIKS@@cR2a#>}mL5r# zHtb=V0fzBpA%njM7i@Y(?74Z3V&)@8hgOC}bQ4^a4Z_UcF}+wPQ|r=7!9Hj3!cD)1 zmThfu-$6P++~{zuz>PB3(RWVl^K)NAgnb>~-qGeC7ESM@Q+`hguNjJVI9vX$;e+D4 z_Q#E5#Yw;uAx|+^rY3{0g2oav@=A=6Movct5-(A@j?38@iso|sR?5Hvfs?v>a9N2l zR7hL`^Jgad!<5j8k;f9JO>W9W;PWg4VgF8LM#`1MFS?iLbt&zz%c*5`LG20n7a4iL z89y_#l73Z-L+zD?re0EB6@D?T1?bMBz!dH$jMHECfMy*&LAKzITfVP|qW5U)B>ohr zNI|RQUyGji_zaB;7?d*QT0{l5Hc(hqH~doy`~k>nouc_#V>aeZSX_RCr1{;->L;9w8SOa z4o#q@3wze1EKVScd8B_NgJoIaVjWey!{7UEo?8}VOptUTz^Xf7(^2-h3ptcC1c|}V z9L7$#>+jR_E!mLtAP*gQa=U!F7jWxvgnDE-^6p@dQDpoA?=u=A&ar>ZaAoJsw0Lex zEDrEd)i{^PPNRuAk+-yt>4P5geW?>cZ!poL`f|r`*ls)9oV&&uUbc8AODMLZ2=XX9 zvxH|1#zMG(=e;5~htY*_Q&Vh4IW20*l_7t0oU?G;`V*H^OosRmn{V75^FE{T=3JGF z1CK)Nd~Y4^s(0L2)0_CoMt+)cvvHlhlntu#xa@d|u;m`xSkooLOX|=VQF+umij{^RbHx5Oz`S%ve z&S(X(&%O^i9Sie$J(Kg5n|(+LN7p?;x6bZnr* z(~|jm7!rJbzTk-|upl5(cwH@OLm>p!6Z0(&XTM-jUgs7ISf6<=Z?f?Nyg_1=$yf<1 zWPImhjjM=dqpv=-21Fi_bg3$f3=jHm1BnOf>dN!c@tG?2D{LviIY3E_Ml8Qr8U~*K z%-3&@1lHPQv$O4No?%yH@p^;Ow~XeP0<2te^RgSJjzlF#IzqQ7#0_vP2hFbe+#hOW z!K~rI5AbP@alVtYFrhg`*|4!+O?-X5q-{>e%>Z9aQ`EcVG@le>`{@9on-qcFd2dIY zg-sEQw+Fs}9J!_ZOUs&>bk+7mmTed@HWE^D2SaB|Yg~p-xS=iHjtm3H7-bnrK$ZuS zmF-B)7er~VhR6-bflGBMPi_-tx9$}yt}T5_tmD1Lg>H^Pvw1^p$M)~l#@b4VJT})c zSq9-Djz#F>i()jItaNnGpm21sw*Su{&Vex}hL6Kxtbv9`fnpNe2d}(*rMM*kC*RBA zsPLxwWNUaOySV%y@3G6BFsEoT?#Iitnm^!nw9J=BU6<+~xJqlies0CeUkOSDzyLc9 z!$%#i-kui(mBc`7B#DIFlAyZrnpL*RI7??JngT{p*!qFjo7hvOzxX%)c-$m#^LjZ zT^ARy5=g`=2{1vL)cVb<$>&y->5Zj`qb>QNMI8`_8jo5FGpm?vVTG>hX!i++uh0Fw zDDTgl@evbtQ8WCVXxB-!BTB3>a~PvYwj+)gOgLV2?IK8ker1hBTbrl<_Ulftxhdt* z*w~Q|6d(SxqGkF1VwF-S4d^GE#r6Wt%UtNCcUtkdfn&LMblFuh$*H$i06?>MkVwfN z=rz3kZhcM!m6yUP3wER4c=Xl+AMeiDpj?40A2y;5iUR&Z?U+V!dsk%02fr@8%F`>} z_nEPx7)a}685Fp=DG4vrh+yLB=@J4Pgs{|>{4^blL$cXbGF+Pu6G%m)j8;i+o0dQ5 zvl1Cyj42-G4A{7@y6O~`>`XR@%ODE6`{UVZKV|Ywph^pJ2t|uR>h(tV9C8-0M{-eI zmX(F%DCN1UrQO(YU)ykU)64i<#K`!6@q7vRyio@#~IN|qBm(mJT_;Y2A zEeM8zgZ;UA^aWP(VjwUIgHEmZ6Me!V2JGC`N{`FmzQv+{*34oigD?Fhk@K zh#$2P$-n&Na(KSPQiFZ;VDErPYa+V{K?)&v3oC%)jeqYo+TK!Yh=mk*4vO1b<%kOg z`hW8mG4On>J3-Wq^xgWw-LR&aQYFRl=U)}I?WPJ8vULhypLkF35{?9TmC2el(p(o- zsB?8cq`*~oW&Baam5c}}1FYa5HGwKzNHyB_Vqxg9ehVaMGhr!eVb{E&YBbaP+r4!M^8$;Fw_)5Fk}w+ z17n!)fa=e08cQ?E?CxY@tm!@UoJ>A^>K;@RUCvEXjNcA`{lTf`?75zs-B#7GRL>)( zwK3_qmFXZxGkFSm2JA>{FGWv;6e}2UQzoEig&7V7X6rdf)ZLm&SAWP1Lc8+e^|HEu zCVe~C-`%Wn9ZWU$@p6uJEHt5(hbacRKGJ!JxV<*}*y5uIi1v>93r~_{TQgxD+6@%? zcXAx@dmRLb6;G`SeRy5?iAYrt9{#GvUG+dxJ0obJrmEvC?|+E>fAqx3ej}(ezWrm! z>$T_sK;Z^}Lv@|3pBOugU<665VNY#c^Zd`riHht!_el;84Al=A5Q3dbi)4X3Z!GZ( zVY%v?Yrm>XTEN{A&@EC40YWoGNGtjk1uNF`q#N&#T8w=!j(ti36eCmykWGKo8D%A! zF{(}f77^mx@;M*j>v5NU_2X|QI1oebSgFs1H}KXp6L?0cBiQ35LE8AuO?kd1g&~{h zq)wCLc|FD3K9|DX=MTZ;?s@GQp+@l|FeFr!py^{2VTpPi+9pw0<8uQPhr{uv*DcWPHk)!~{jxi@9`mFV6;9VXRh z^%Tcm`W`MeYD~6Pj}OjqDRzx)nS%@%A9}vAS71)^t_N2k8nTUeU&iO!I^CINo-ps> z37p;!yYBgzq!HF3`S2M9-=eLdYlBvOb181GBc6fVj5DzO!}_;&vxI*v^_Ul%8#!KO zg?OzPX8SVelIh~=IeoDE3ZAy^^)Rc?5y0KZB`(iX5w|mv>X2V6xDm8{=io)yxzC6` zU7|3|KIr$$ofrxv5p1upclKowb-W_7>{Sj%w4Fn2e6%}u4+IbQ7r>%#y;Mj^OW&rUv@HIwmyJQDP6-n{j`^W$Rm0uZSyB8m=(RH`ZkE>tLg!=M2`4T~If!Vw@@& zEhg$j`z(EoRlOXWV)Z%c;{@&CMDq-FeEwy2I{BICo(A_z)lAKfhku2E{VT^w7?I7wyt+y(-@IQ?0(*(R7C|%!Y-G5u zhK_X#(CScCg*f-2k--R0yg7oY>DP#GQbd9^FD$TX-TC5-$%NnC3v0&WB3+$slWLNP ziye>-bC>{iJklVlW|n?BBoea=R}X278|ra7_OS$n z>gpXn#CI&rDewvy7lU6tzkn?=4u!J#^I7xjeCmPiU>XG0Oj$@Jut|>V+vi7dIdQ+} zu56oN19;Z07mY`)#OqZI2+7zxP0O=j)z`5I-s1+EuipH1*zYz7oGDO#gJmKD0QC$# zzMpdCEios2udiPoM1rQ#O`j!837+N=0gd1Y^r&Rv-_W32Pa#d*Vzj*Lb6(MT)^sbn zuDE#h-DsPR8)ZgI;LY4l-V}!qig;{9f+{o)Ihfyt#sUYGJa41(#+TrV8GVWGyN_tP z&~rZJ$Qs0QfkdXe2*fB8rbn#&MVNZ@`J`n2i>aN=+DFvAxwoFVG9@)}!aaQ+OLC8^ z_ab;W2kzX^f2bXq5T{jJp`K4@D*+-Kc0+eOUy zeZsN#vnOO- zXWeeCuVW!uIy_nM8*Pxtib{;e^Rey2noxS65mRpX)*TU#P{WW%jP_8JGC zV&1Ub2cvuH1js}Pkq?0B>+vj|L)ohm0w)jbX8?l?=THK3*{}um(*;`=dR9{Wae1`Y z``?JVH@0B*ZbPCh;AWJBL*K(tR+QPmTcA(GF zS?n0`P$pVWQbF+mxi=&Q&ff9`chsRK`RyMTEbMTjS8jt&)aR^jo)p%?$pbcQDK_9t zx4#tY20QOORNS^Q=DO+qTwf4W91(c!MQ1&H-&j9t>G7k&{dWHv*K$-e_m%l1pxmS* z+HWVAyVLv5h?DMHVRmzy%CUE$bnqt>25+^ z=0^=ZxvMz~w+C9sB;vBa=S#lN*k4`ezw?!}etV!%n;RwYyB{ylYUmI7p86lk0#>YqW#>E(=V~BLK|5I}uJbEM47@nX5!qiYd~qOn{LU_Ch|HBCvO}Bg zQoY4yKwqcP`{(f5SZ)IpDD2C*EF=xW`P1&NTGl|2~_s)a-WuLc?p^K1Bh()LHcrL zeKpArF%GOhE9Rd#>+a5cy?7tIM^>m@LrJBa0NDguA#rVJVq?PERnJeu{XK3+e4W3O z$CZv3=L2xRsZ$%YbRR+^*J4EqeOnzeRIQ_w$aMXpk<-fMnFe+ zLq<9F>4f8Rbtum7m^`W$Y2B8yDhnJIwzgRx+&&W@qWifAaMf@vBdFnV(nvFYd}3pF zV&0UoF4vP5{#P;pEpJe+ZIx(M#GS+6N9q0FN7~Qij31uL=Z&iaxt#T`YfgM_^c)u= zuM{Tru`ya}CRvXG5Y&{(kXKl&c{F>tT>Q_Y>Cyji>#<1L%&#~`yhAEcZQ zkzGs0&wryq+#~kU%#gD{JRGnwAlvQ5jlQp{ zrmCvzoXIGf8{NE|C7Ax5$!k>WL6r9fKSu(;8+g99i@wJBCY-m_V@`craB`X4zjUua4k5_ymmU34S{_G^L6ae~$-g0_&nm+~yus zJ_@b2-Rm>54#5++Q8^*n1R)jW+@_2(WOXc&$^umi@#6(^#yl!w?*d+2E^#HVINOP9 zO_1p0$x(oR{{7xFDk(}uo*|g00U)5S1yeC7PT}!xkNIJf+<$%%qw}3DfKq&u^hWd3 zFZ%BBr2pUU`4X(7MD+6v58#CfXnYdeR-r^c~~ymx%kFO0CJ&4Z}LB`dv+Jm;I7&2JFJVuU`&*FJ1! zEVI4^5Gk&&`#Nrgr&Xu2c)CePWXBuy!N#$2z-yx|a_ z*iMGkTen*xwLxy#8S5%wagZ%62!J z|I+K^Niae8Kz=iV<)vxaC|cwjRh-ECfqb7<0CzAy~P|yE(!G%Arg$Gb%N|D zJlLTZg%SI?cBfKAAFdqGqJg8TDH3VP2+M-}c5IUElmm0VtvdTH@c`AUnS-N-F*+9M zZRNhAQD(522bZZ(CI_TDcex`1}hi?dKoW zG>->y<|&Fs}(wc6=Xv8?tj-75qH& zIKh#K)vjR`dS228*8gb^`Cr|`2;nr0ILjFwBId}+J8`+szXjK-sQT3Zx~f;;&Y&OQ zW7F&t3L&>387d#{$Y_UWtcYuVx&{1D-#<`CMS)*3hOfD4I=?<5ukto`z7O-f*1!D^ z8I=c*?fpxay3z6~`4O<>{19gd*g68<7H8l%^?772P)rYZ>AesGymu%sa9O)Q6doTz zB)bX3W>?bVn(G`S$pnvc*^>|j1-1PlUX^f)@A2h|8djevS6O`o>s{aSTgXFnK!~F% z=4@j*k7gxHR)`k0tRE?U1pO=ReMYf@s?u95mxP=M6H`82%Jdx8^*+>yg5vbblISreeI@CmPK#dlU34f6F#XQ1b~xG7 zla%Aqzlt+GPgC;KBcRMNV=cBSJ#Eb+$O3OZY`$XF`|h*}t>{a4tmua`!4l!KXh zAA|HDF2z5;8mpiTiGwcPP&2Srv>(e(H*XA3Ke?PVcrI@IjFjMfhCuQF7zhu?4g%?! z2Cs+Fd6M$Ya8!WzPgZ#ndc^Gy`c3IRM9-USFRsM)4rnnH&-BJMZ4#eGy%OV~0m-9E zGq3mrIriDaWNVB;oFz&$T0xX27AKQDWbNM+J?%jtio?Oq+DdBKMltjx}mE`VdlyHtOsk_}m> z;1&BxV}vA(bq26ELOA`~w_UoQTL~Vrs6qkJZEwM)`=2lc_+8J{O63f#kWUdis7Z`Q zzv(rl&EdL?@N=+qMNi5sfO(M4@_ic`Y@zuH-wDf zN4VMj3!(F{of(1&IdWJ9uuG*@(+FH^u-y+yuy*h<-u=bRV!+nw;%Jn@ zo3$y zwvk>CDkB*OQ)NY&ZDu_QXA2vp&WdJSfdyhqnd>yu1?W{sH^HM29RhC>cA&|t(fupu zf;SIPCN7P6+h_^EUilWm>1UGhX-zmO-Xeg#s3cq`NO@b>!k9NAr<4#yrsc8zc~>tk zIbtM`T`0v0eF&(9GK^f`|14|qt>}-m$#!?}NRQP8%b-7uitrJCLOiYgi^$=eYl!d5 zxlyR%z{ei?ezPBlZzyB7Vgvu!dv#sw^D}DZk!Yb;w6n5|Ix0vOQu5s|Q&)Zl4xB8O zIabgH#pz=iJ}YU|LDuxsiU`a+G(j@lB?Ud&%N-7c(;4cKv$2*^+{r&#9jO#Dl0W6v=t;r(gMYS#s@mhfUN~$1PlL=UWv0Jw zu^4+O2=dEh6yYrkVCA1#AB+fYzbdagKapAS33>HK;AWNF@!|1e+(iK4>+#uZpzZq% z2?RjL%55KCPB#ZM8RHY(^~3cMn){Ng=A}d^#--Q`|0TjUPM?{$sXYSb*vj*D{RZ(@ z${%PM*}`q3KVoh807kb2mjicL{_m7EE=4;~Qk`KUsXP6vqP)}K8TKM^p^hg38Gib9 z1fxvL*^k8SwIX`;D5^R$o3t#=%N&YBk=-t9O_F2?j#UApK9**0Ir8Ga$d9)mC_V$K zfVvaX|IBR6M}b>Gw?XpIMN<_(D#6psL&-{%xtH&$^z1KR(X(o*h@IqZBMHoYCFu~; zeT1KWhkv}fZy##DFIUT0NP}~!#HZoozr4Y$W<~~qWd(Pc+L3Gz_f87ku$gD;qaR!lfSGPN=iaK&gS;y29qM+j651r#o$@rw&h5hgxZ7r!`@zF#oxVFinkwjX>uJat`KVZR zHQRef!)?creNosQ)6TQ%{a|8uyqqXHyLV0f)Ch8 zBO(9wNc1(n(Bm7TdAipk<0yoi_)U_+kXZEk^K1&UeWfr<^H;rRI>B9W`Qx&=aZg9D zh390l&rXd@#KhF<@!SgbNT&v>##bw>>3LL+mAb|MKM@iaggBGGI5Kcy1{k6QgpUl7 z;W&aTky@NzGs<-^1%QCq%l-^A8_lhc*vB>leTj8$YJGhf%GrcnJ|=H_wtoZNZjKko zI-fRTL@9y%H>dle_P<-}0abe|0E*b?6NC=3)96fiu!y7gFX4^#w6?gVW_Ot~3C%L5 zYZ=iRnS0x(vlPw4SJZmgZ*e;2s|-6Nk`VL#2H}243Orw5sN3-US=#m&b{nXCkE%1w{86l`UKXbJ3@&1K8vs62B)Kh>uJUEo%fhRl zF#je@z4pGPzrqWv^9Y@{`xi`xb)H`~^&$%a960}sPRJ%Sfri;0iFl&LyOi|i>l{u>8 z#|{H)sAL=Wq8n>fGJAfHQ39nog8}~6WL>Rs%@?7rz4}ZHdUqe5Qq7RA%f5h1jX6~B zOmgp3XYXUJ(*c5A2pP+=8hr$;Y<^=u*4YtTysNXDoeLXvM8lt;ce(U!9)WaO(_KGlRI+}d1 zAvKxBMiI!Ka9FlVdWTg$vVSr^QX`)UwaNeQT$C;JMb`iF`JlKR)>*@O_O&z^r=ZAd zCbbM8Ka4GfY|H3I2TxJg@=pI}n0y6*83Ep}2dNyneuZL#?C$@7j6QA@zDFKLZuu9S zWMt73{**0*87vWk)!So+jdqUbaYeO?QE55y^RH+MWL|f|ioNZpqa#LEl!xm|*f>-n ziH$L#EgI!^>OGV0akJ?EQkhqt|U!*#g!GKOKHQhbBc%fQ?)Xv=i%j9%^uz0F?GeJR0Qe zE_$lu1t%C*y$+PgpO`-$Gi;Qyb8r%i+;?R2D~XG*g^9kndE8z7U0Yo~OS&BC@G#-# zvzj56hdHkIUZNNVVJ&(=$>TqZ6aPpK_QtNG!mgwmhM99~tG1daZ@>RC-g&yn)KBo$ zS|Hj_T?bbd^}~pVK`Il6qP#1+Sor#s&%F$2TXVS)yB7SXMRrA-S;J4s`{Hgl0>%oW zA)WG+G`ebuGg4*{RO#RUoyp&(XY2Tk`^Oek$n)}kC$9!8mgIpGe}@P`>=;=-I>^AZ zV1(u3$zcG9F{lln!@?Xik#fo>Ets7W5oq5TmucOV$(nj$FI)NEMpzoLPZr*mpQ$dT zID!r4#yN~YusS-PZiaf@d1j*9Z~qh(`z5Nm9TQTKE}9?jDsWzLj3GmH=Rv%DvF3Pu z>77KW@;+ZqTS@freH;Zhz4;LB--@eab}uOl{*6guh4P^Kl@{``mRj7m6``erVB`CL zUm9Q{peyv#zW0T^{CF9ekAaRJ3*#YTZ|HQ}=yp~Kk~bl<1m2{LOdRvQr@GF*Z;y-hRY%vCctc%1v8? zG_bFFy>LBCoLP(9DiLV><;k(|a&WP-sGa)WOMs12Fm@-S(2M(2 ze>Q|F?C$EZ_)TbP;d%9cPZ^i}$EgWQ4U7N$%G{@7>4IYedpfQ!V$tgG3-8G~>Y>u? zll%7rb#b%E9T9jO)CxF&-Pe4>t4iCMa>yzJ;;Nt}!q`ZEG(|3d$|c}(Pztd7)*T^w z7(xo@cn@7%6)_kPJ^mL?Zo&zm1`HrJSoI5#-Q+Jaon7{m#||9EYjPHJ|1D7Z>}k=5 zc2|inMoz7o+@3QL{gun<%oTzQ@`p&pg04sKo}BGiAShGBslkGFm)0g5wlfRWDM~^S znq@v?l&2#)j9EY8Z#V>)#!9tVNcIqy^a`9< z`-2h|gU5!Xhw8Q{U7Xj&?cHvrJqG&x55Aa8Q|#0p*c05FwTYaDr^sJI)NJo{6@EVm z8c4VoV=obxLrkV-#37|@2a~&RrJ&#z3y`xM-C|aGqa1wwW&QCpbI%ZXSC`!q=QaOt zQG#$^rx(lCHI6>5fM*KPxi};4TAt2M43w?;O&U8YXSF3#)!y0sZA;xP;vLJEJ$E<$ z$AYcIuEvX%7z;i!V;b`NUA7<>ddaFAGhw~&v=03vXCCL5F5?3Q08U=w`O}xVe}ybVDk!}~u5VtdZhnb<*PlsW85}Au^;v1U z&cAU0VBkUt1E8;1zc(thDztJ5r7Z99s=A|pn~Ly1cH+2MiSV1e$1xCzJYuIkMDem3 zMeqHiobcuo-8&dm*2J*cf4QWo*mi}fq^h{e`Rv8rFr#>;w~x0oni#qatXg(k@wrLA z;e2>$w=9|VNFg{;p83TrRbpRPHg|h|Z|7lnTehIX$`Dn|D9^-e#8gjsABcZ>{Y7Ud zd0hMIS-_T@qB7$2s1vAyhZK*Q&fudapr6gPDWf?(XEIGxlXgaEt}oV8D2x7$O$Tc&|bWDhOm7ju$wm?T?H? zh}rHp=H%RSzuuK|b$K0hmWxG?)FTUZ!ajzLC*sScrlz97Gdb8Tq8qP}(i@DBsO_1% zeCzKkslr5G-AjpQ_J?s0HwQR$eBR|L?eQfJxe*EYr5d5kjGJ*V9Cl@}I1KCqb>rrd z(L+YeXhqyCx{^EnPW2=)U54IrJKJ;+7Uc1cI-i)yU!nHvQvEl+vg;iT3iby42!)k}0`!329Y0-RV?#O*yL6yr|8N{< zXk@#(t3FCvYsQO7_pCM&t$aGG+I-)6f|e zJ;XpExdAaK`ExZEol&#}%t|ZZdK`+KggXc-dI)6Y3_B6`@IeYIx(o z)VTKN_LifFkEJQg)pK(KWV;LtqxF_*K6g#wMN&N<4fhbUNxA&TLGKP&5(&h9Bhp}w zJR2rI{;s_-!BJHOH4@djxrW;@lgw!?)fRrx{$6gVQW|3Mbb&fexi9c*rQDE6KtO_? zH&^~+Y#^l%kYsE{-IA#jCZn%fXY`+RodZ>Cq*Z?4R9!<&DR7)-iv_&#iZ>C| zaN~>`e?9n|kbMr}0d{rZYQ8y+_pPLv_;$8B*2A;d8tS_-9&Eo) zO-?Xxx3}!UDziXk@AYM20}EjSfA$Nmq)?wYtaK$1+`qojUPR)+42dJ~Cs6_t`dbhU zNJb5G@12=mPuy_`d5Kq-70?D$o@QJQJ>lv?*+-u%cDY=fXnLS&lLC1dM<>=qYZ1%C zHx6T@R)?4Is;29cHOuR)9mU{IivhUm~ZKK z?%=qWoT81A9LJwtAV_12e7@LzO9p%jXe~*CfL7V!gSMiN3D5$-=1L_NK!gt+Ca?u2 zK1(ECQB#K@v&=J^B-TJ)tf(k{Rzc0x+XRH2-t&85BF@qwKCV zOG|aOjMm=(DfkQFT@kqnUPB|aF9cIU*f`8Qp-DqmGV1;==Pnfqie!08rI4)zyHMfK zAE5Ko0`BVPzM+fj~EGNwi8N>ef&X#?f>g(S7AUgpJz{bViT6igEgFg z`0G3NyVaHgrDG|7;z9AMtK#%x(nO(|9f_4k>IfCR!VtKmI~j#Fvw7*_Ka)?X2O5fC z4SWjO=eMM?+_6^BKOOW2h&Ml>s~PL7Q%l<9pd5i~4xuA)FA;zryuO)q?HKWcqp?PY zw(nvrWy@*SiHKH)i0i%45(+>FAgUyMrB;ba&OL!zefy7&m=ZVJ=vs$s3LBuLJEXO~ zK8;9^b!J)<3}DyAlHD;_Uw4pMdEDkhOa`n<=s*dzZ~*6#fBi}2zSJ3pTAVDoqQ>?K zK`QLc-< z8jIqsrT`%{Q|wKY0wbxc+XP+Gq|t416Rd&nfh9OxOQ2p>MxFvWzt5>YXPT5~)}k?@ zzSHhh%wF+fyRb`ned6Iy?Qhxh?4;afpX)I6_*ttHAX2^5Z?FNXxin5I&z0Q|rLiHE z73U#!;VM?vI?7Pz%;lYwTNMgiTtcIlf|pyv`Q(i!VCg60Hbt<;H)7hNpG;F^s@Ijaqt1L6E>B)jha7^0>P#4+JA0VveRdtO#QMXRy~f_-z1cz z`X7%okqvX`&x3~sTD~NG^JD6FbqdEHSxe?-4!x>hTx1{a`r^YyBQfvUhKDvUJ3T*e z09fbb=N;NSSj?EteVD=cF`Qg~3mIqO_Q!lQ;5_MI5sxL1D18;Bq=QV`cw$YuJ`-cK z)IYNi@$u@lw~l7_tYr~t@09QO+MlrwYu}i+s+u2MpJAk?PD*ygR!O2<&YWNkMOhkv z#CoFf3&PE1XTq`btLj`>Xx?g(IO8Ggc`j<9kY1KEhw|4%@6|I;S*X83>eH+ZCAV9c zH=7$1$!0eAgtNvPuGQLf({l8gZH{QccRa+mlJ1AfrBA3^a1%kQE9toJZ2~sr`0;Kv z&+N_r-QUBIMgEXFUOJ9DAly)boAox|-GcJ^fcy(--6CTy-?8Zlu|yvoWo174VLDS| z91D&6c5rbm4Q$=8hHSm&F^z}3fu)5HI8ej$R=)??+3v?YX`uq{V?pKqxBO4(=$RV6TfOMLD7pd)+g&6PMSOujvI48d%`}val=y}%Az)?h2 z+6mpReUAr+#7a3w)-{<#33r!Ef^gt%^p0U0`Phvp z`9`u>q0JYJbxaRJm8hTq6QWRKe$b}xGMMGel%6TNSTD%pAFQ%Tf=SBNW%;8(uZ0@6 zrI+-cC)XFgb%!Gi-&?>HP9PVA~`Em`JO!y#b;5C)`Ara(lv)*msqx_z0E@FfH3l;6vLUI40` zUR09z3`%&nN;wG1%`w<&bO?zJikS&pO|m?m)3$#;*%cC{Pb{oEZ(~vV@@ATc=2;C;Pvpy)5_XNgncX8chpWf{wD|X>pHo6*n`=!fpNwer-0YwkM7SNHN>_89hq2W*3;qN*W zprcX5e7_8kLjd`^0InJ^mK40xYFrZEmCJ>z2ay=M$C;$s3JN5(@Q@t$F2NhvV97s# z^VJFy)Hh1)y9LZyW4-{PCzr^WicbSk9zaKF>iq3mKWx5!qX8fv163iv>tA*H!CVqP~MY?%%ycy2GkjP%K2XC3N-U_ zP?aJH;>$wzG{y%BBHA1c*B9Bstm5vuSyi@ktgtkw*6AyEVTAndnlt9iR5H+w+S+oz zIEP+ZJNsn;C6xs=`>jLe%wHjiFXz|Mg0{ z?we3U25DmBQd*L<`8lrp^<%7vdg&$eX#Wm+(Z^;E1$lt*1Yr9*8C8kf)zk(iR+9G= z>K`{3G|d>SrcQc%rjt@?rOm~hix_I>Bv_PYf7hb%CJ9*Q=Kq-f75+CFx3f!PTAQ?{ z@958|HLHjTtz5fZ%(bvNk(=ODriZhNq`G?Q485gYMT^zndNoa{-;@pNwcH~MF$FJC z3Om0ZosB>I<|gv>8^Bi|aUeDGhnf4*-Wv&q(fv=gQXq|ZlLkGF2?-RbL7t67%epRH zWFaP;h>VBlSW?Goa-G1B?t+HKcaAa0pRKIFnk>uEdg|6Qs99`G$Bpx_>sEUdmGXu6kK zUHb1P4?XY#Hf!dZWvY`C>lrvB-TKQH?uOUKxLdt;Utv8kU)geof!E_%|A~h*Hg5(= z0y!OJDLJuS)>{XY)OaGw=~~E9-jD{kZP(%Wi~s2FP*+eswy?YKC&*P^FgLG z2(bt+yRvlie8Qg-2_8oxMM$F7Ig4)tFX+J%@*U9uMWPj?sJrA<6D1FU#ASmk%Ur}| zrBXXwsVD1B6n3US=tUeFt2TD1E#J;jZ@oiMP3=u4X$_t;*E*^9a@+f;#7~gEKGn0- z_Qzd{6W|m0z@M22GLCIbHE!|AS|6q3nIEA8{R|xcgV%ICRsZfjR6OolZBSH#3G16Z zGu5(}fmm(zg63hx%KeGG@74WZSoA=-}^}` zv7A@oD>r|s95foHVz+odDa`>W}BGHs47|4pU;94!B{A$za$IPUyg8ozaW-8>;27wDB{C`nOx z-(^r&58ySyJ2pML%cpi2BNw(PGc8CLvQWQIrqJXU@MhxJfu!K63 z_0q6v12TqICX*s)i8-!0$#wm?w&PNq_q(ZRC$n(2KDiNF>7jx-KoKK@lR}s@%Y%}A zkAcIePc9?=Rd`4VBYEdBT!MLuK>ztg#Jq@y_r;ov@CL$}ux8Hutxx(DInI;=BT0@S z&LuK>SoqEoP*xF%BLMaCao}`o775olVAu*-M{HK6Bm1V)$B|_*vT!wGz`u`I{Y&`I zY$CN7fasG({#r{uja7YHb?KbPoi){rJbOYA6yV##0zBLC+SGy~R{x%R*&W$sgSt+g zYZlnKIk9L76gw2y*(nqJRQiJ;C#FX;>_56(_1XJ^_5W>XL$qdC2MKIcc z&9iW7TdS!)y|1Figv^nifp+V3GrnOiM=6o`Au!$a4MZ-=UX;G;EvAxwn2xX(LhbM< zDIX7d4?WtWKxkXX{-5kphi+a0(d_E01#Xfi)t>(7V*%UxMD?;pTORE42roZdEc1+L z(w=9NC8?n)#+PqbF#jQ~ub3x{)BM^B|8-V;)lQU3k&j;iVFR3KqoRzlfenBF3ah3F z9KieyaA0XB<047_=1UI1umbnc2bTyghm9Z$cI-Dr1Drr+kVZsr4qcq%LeF2SM{D%~ zdn1c3n1p~n&;)XWL96GK;~F&{_Rd*nm6%<}=4PILvl~kTC@va5maJksQpEA0Qz6{x zakpO-)d%63`jfB1VlbwpPmdF~X{fF-6jkvpfB(tf@pg|hlS(b+6JRS8EdtH|vU038 z)OhvwrtPLRa2DZmygHDWowxq-_TtP^nu_Y}ZJ8H3!X}ip;m@j0kjK#9YeH>T#$#FL z4T8w=!Nimti_69$?d!GYa#|pU7Qma=1y!=d+Q^~}DLPQHdNQsT=89tAM?KQ=<717! z*hFoyf%m&`85Ls=i*urcEsJ0HrJ4?7d&$XwCs%X%6!hfKcW&EP=;t3(z0QWd03P{} znv#=OG~Yt?!tc#UV5q?+vL6IxH;Xq{9x4GG#-!k7bMdd`eV(=?f1i2RpQRsegr9naKG>4u{pede)o;Wj>|7Dd8n< zzTQK>q{|o9tCk5`W3n^+*QthR+dylA??TwVgdYv(B?X5rgAT+|%86tFv!~Usg$bVPcg_GOLyT-YT z&~!NWRoz!1G%_8P=+aWC@g5Bq_$uvXs@rbVQq4_toK-g0%G65FkIgmI4dt859XTvi zi$1m=UYcToRK;j74Hwmg@zhHea83#}nIQ-QFis371WLCze*clz|0AZX;+6Un<37!; zAgzA=WUlP3i3u9rxZP|Pm zQ^lMRfuEn^iQV7oQ1dNn*41LYFD-!N?}PKP`&iKW9ZgI<*LQ{A;^F9$TEMsJi2gUo zK1%W|AinzBQjz2&k&>UK1EMcuXlt#nky?cnv<>)96$cyv9T(9lT4gEKA%{)I2uK z^Pe=i|e`Zr;YnS9>lX!=~%E0fl)BviwhfO4@n3f2-ZFveSPq)+fMY!hR4VxdZ*5% zb7{ae@^~U{{M>X2>N5GCC}k78iSE?TZ6tarP!>HrRsRwks$-;VLIj`Z1>C@iuxI{Q zb0N&1PYrBj<_hq0W%W5EQIG#zx!p-&Xv*}0Zq5xn!1ilgB>Gffvr}tFtIVp+UU6pm z6Aiix;wRC}OyBc3peTTy^^&G!CXPa=F z2I|q@c2qDv;(vb?Sy-Gl?T#PDct6yONt8Gp zK#;g&XDKnR7SpD4U-p9_JL{z9+&;8U&rlL`ERrJH-6@yRjLJmR@J&JuS=);>j(5K2 zRD|ZwlCi!~{R3i8wbl1}ym_Q=J^(g5O7QST4!REgLI!xh$5Hu;K@C1Zr$uz?el6v& z*p&E)n%kyak28(#_I(U7pTzl-s>>AO(tn>(Ik}s}qi0yZ{T=R8y%^3*gQhIZDnX!Z zz&693Sls6zMLoi#W}&HpWUi!ooof<)qq|{MUhPScZHp_69gj)y-4<1Mo{GZHXcc8x z`0Li}Gu(D#BoptsXuOd{wHN`v@ zh3f>pfrlpFK8&ppT>~pue0Be36LdDggiazh4r~vy*|lpeS|PaK$f1gaS|P91D|Ql4 z8p;B=zGW66L{$AIPBQ@8-1$>5!_@J872(gC0dON05pV;0fi+-(-N|=I&(M{mfSN>K z`kgL`C68iIJvX~Yc(PW)h>m7sn(^|GOFDOVttvTT_!C$?AzAw}lwUVj4Q#hOdpL+n z+0V}Ip0RXQ+q0T;1saN1%hzuX?=GpiMm(FFKmK5(@j3+h;MK$W(kMrd{}KgIi4w$e z6?~IIQ2gd2&QAl@WIWIrpuv_EbL23ok3OjgBY#v58WI=d_M>kN;3$KF2ZES^Jh50P z{yh!6y-Vqe(G+MfQd|zfSyxBO-_)4DHjYg)zTu-GY{KVmRqkGXG=|#rwTLzd#xWEY zahi_T7C|Ty@9*U&-aNE0)>8Ffp_+79Qk^s8{K>jzl|yyQNH)ai?A5}cRDS#B_$Zl5 zAAJ)L(N)%H{$M|q=vV?Aw-c6DP5Bv}V0q~je2-K@W=lOA57z|OaMA_A%~12r%`mK# zz0p;bx7JOLW0`U5VI7Z;*Y?^NIkVr(7JnglR9CIq&-Fy@YU8juK5k}@K`d$B0*Giq z5mKhzPC`!uKQtCaE#^MtYs7B>_K44K@zr^#G`vG>Fwid<6eSW6gJA2UR~T}ZScB_5 zhtUd(>R{Zs^g`5~KW=jN&BZiXhKoX=o4fUZ(4aQFDk#WVdCH;rK24QMD)gkR9fx&DC z^_D&@2Twkn3`@NK0kK|Vd4G1Q=8jU%@Sf0<|sv>aTdzTkKr4RcF;PwPO z#CgPJrx)Pvy=#A8AEtg`hk?6B z!K=QFn4V%#;!sP$^(Mf_`nN%WGS2{!mCw>t=kWZ^!YnXIlQtA_27bx!(JS5^aAT5fDpNlywJ-X_y5NSOD zahe*e_KH^lJ6C3T1o4YyVQ`>8j-^7IeK>}(fbe%7r2xX9D+TkNnaIalU9`1jeoJLS zP|z$Q9j)P$p!OK#So+bctErzFhQ6La65R;cb(z$Dd>@VTFRJDIItoTEOSDk-&?N{j zwVh5;(zOjN<$t*Du~eGJGHk`|OHFvz7l(g|Y`K5^F88C=HY2_Csxcc$sa^AS@g2wC z0rXM-P&Q%=2E@+W;hrYG$%a$j#KtJnY|mWSE~u zF4FvHFvS3aA{�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�!b64K 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 literal 109897 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

    Q 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%0DM< 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 G{Qe(j-t|NP literal 70856 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%0DHPib3wg!59fP6l^{dZ; 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

    8WGLqsEL5gv&P#GrwDX* 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 P0iJ7UBk)xuyXgM{d?1bp diff --git a/demo/thumbs/filters-005.png b/demo/thumbs/filters-005.png new file mode 100644 index 0000000000000000000000000000000000000000..b4b63fec4fc3c96f2a239ac58a40ecada63f3af1 GIT binary patch literal 241196 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

    Z8SBZ*j`syM_+r)9UKX zv2B)i-|NPo!uO-{BQ=rye&fLTsl_AtJ%!MD|4wo{;`@db8x-FcFplFZZin`_?< zNAl{@FCxEhSRo;$g95%r>q+L!fzU2wDNjgRkL{nzqj56^#?QS#z4*HJhJ%Qmm!91- z*9oIGPs9dd*vE#xS#m9g8g16zRk_#r#6hJ4iEF~E!QLs4nlJUZJMBXE&33{s?g=&gOX=I7_j2!?t?G1YM#-%;a#4Dxr>%;TTXR{l`#RFab7;l$ox`e>G;LnY zjE5s_1%xlO0mwCUgI4kt^lyAIADRcoNgDS8ry7FQ=h+k+Jp-#U5^$pdeVf~sH>K^YWUk}*(&S5pvlx$;LboHrMc5JRiAKLyJY$loT&LJS09Y|JBJmr?j2Suu`T-4X$B$awYu3z zsngPl{}#v`@LT}7*4UXB;C4Ejf`yuz)1Xj$T&qCGn)W(aU&q3H5Wdbq*P)T2wexE2 zxH|tpB=6M|q4U1>+PdJ|_YSMxSU7a46;G+2wnX!)jGAX!2WY9u6V+=?5U!N^j}>QFJz=4yTcWJs)$!z-f51d4*huY^mv& z@EuuL#zG$mHK)2>W^h=M)`qT!70n6o?#)TBm+GjuE~AXAvxd8LmY7!gT+%Q2?;ch> zGzR=&Vri1iH|?>YA1o&8XU6;`o52{_U_Tc9?yvR3?o0l?VHnT{Lip8vjpT%qHF`6!B7rysL* zf7OQ@<)0f?OyZ5fbg8~_h_kXbc2AFo>k8R^1KJ9P+pmM&}RcEDs6g|BDmb<6<(DiUaIt6BIT*&n^!-_!>cIILUn)$=3Q;pxQ2Y~rv@6nky9mTtuF-G;xgT6%rduiYv5;Q0ZZ z=CBmQllcBY1+U6^U+QzCHk-Dt$~O&6GQ82R3qCzFtk8_vtS>k_d1Qy!Rojf=(Ac-) zFoJzg2mK=K)B1C{m;=HPi8fVjvcTK@Cju`uS@j!!c|+rFf8m4m12&nvPx$1;yvC2l z)0Str2RC!~C?j>;W9kte`1CfvF8cJ$u)^u^VC@?FyI*=}x*oARD@PlY*F1nmyj@f7 zTcE~ia}Z+GMrIo?o9-j2fNyxKzcB3h40O*+W9#8x#Y4L`pQ@icio0*^Jt>V2pIyg= z^H>%iYvc{S*r4DO- ztz%E%MjZPZ;iRc&hLz{srw+Jvh)Tbh+$?OytNMw99j-H>FW&6Ap% z212bdcI2~m=E1+x&#pQ&e~g8>W&Q~7c4*60>pVbj@!ajH=pVg@wR#b?UCWiaU~n{+ zE+;3L;Kzd4J~ylo^OMPBvH)v#$#;i;svG*bulWPMZ+R8s?HNoS&uwX$IFFKlz?W#Z z`R^$Xxqr%!E#?~s(8T$8DRFVEQI}|t@MEPfD|NxukyuP<)$NR*Gcv}BXNFZRX$yid zF_pLQ1NLhEK>7}!)Hd}KT7QU#FMq%*ebV3aaB8X{ABpGAeDvf!@Yts-_zV9|e(!j= zyftvF=3k!v8EsaN-OuQx%%#DsHS->s_s{;r^ZE zf4Nh6)XiiOdIm{r6_6)8ilYtKe_8tpMw;-Mcn(uw~;@UMa2=K6arUdc6^ zD;g}=|1K{ynX_7Jr5R@?4u{sS$8UbtzrN#QgW@3%nS-s|QfaH0|lIXvy3`Km1ty z#M9&K$T@lXc=s%{ytH%EeYED{o<6z6K_vWN={xf==*BAc`@aTU<>_iYwS&|HUU5LQ zMTl5d=pD#O95P|BWP_q9k0%Ft|9kkk0fv*ln>rc{nrp+#hG@`nTcdgW_uxLzs2hRU z^X2}Id|mm_(+J}pveufeTh>ZRG>L-Rg&e@Zl-kpISWs#D92L?;GolcaP3;PhR2`lE>nx zQ}I{U^g;C!cSY|iS@o+&C-}YG^~gFr|NOt<<>0HRfBVmWt}e0omDz%S9KFN0cnE$N^Jq8XVr+b}>$T(6{!A^F?0Nc2 zye0gMKLxw9!|L9jSml(UP+ciqD1e-L(k-( zN+uX@LWG5f+v#4z@^Gr|iM1UFPuNr&BRQb2l);`j)oIt;km?&S7~aR*Xu=Q~YUZ%n zXE(EC>)d{W0A}FyohjHilp`dM-S7CA*T3=WOENd0SM#fSz$!hB5L`0i@?vwD+sJ!| z)l8xwvoOGB3OrlZ2al(zcxSM(y4U<*ZSD5j=;TYEiaBUHzs1c29hO$md@nM!aLJwRqVBv@bxH-2*rCf}Sh7W@OpR2xt6u zWbPeSj=?4h$>9MunHMmWYynSSN<2O0DeE1&;;^Q@9=(%17+B?|Q&GwbeQ`)73;M}a z^RP3-3m?`sUtL!ZOY$FoXKb}k0xT)zvZMtBPEIOo^#M6F7U4h>yj)z6qp zIzcDTRa+hM@hJAG)PJc*SOss~-{k-Mh82=;o7IyCa;I%JXV1pRiW5&+q0!o* zrGx6O{M)AB<;BCz_`^mP;9ub{H^=urz>+$g!N@su^4fufeZ=kZmY)0xi&G<0;@~>j z-Q{X_`Rn58KSq@NWxrUXXULi<`2~9X`Az@Vv(ry=>Q~915?=3u>fxFY@>~;^boSyq zYpPe>BYf(!u2HOegxw&?=w(KcaIXn=w7c)Dw}0TZ*VabQ8XbWvv& z_sD5JmM1u)$4zAdkt^JZJ_-uGn4vmcZPg24K9cfMC1*rMa^|;FY zE8;yzQJ%x7)R;XyWrBjuA3T8$e$~aARHy-ojfkcngvvX*R^3=zoum_5{g&U-?H)Dd z)RtwteQ#>JYEOC9f4$dL1%1SOhm{7==g-E)fJbCj@M?1DJKtv1|Cq3uyAGH&5aT;byUv)OBGx&oit@xLgy`Qg4oKJIzupZQp&NUhw z^=q>ut~!*gjYrOY@TtoBsLfy3;In(+5EJl>jcbn={H+)DkdJ%nC0-$EJvQTqrHeUI z+cWEl8c$}lmUW#N<`?(<3l>)b)_Cq{NUFcJUYzh~u9X|cyv+9YX;zzAy1cFUpP+|J z9RK+x#toZ$j!MIdO_(vUIWLVX`c-Hg>Z{3-eM(Kf1wQpVuH}pwi&2-hswW|Lot`Xh zDX*?G88%&Im|bgAre5R{U;jzGQN7(~HVYr9GM>r?w$&G~(jTlX4Y=Ny>gknf@rgfw z#|I_U*nSUMqFwY#&1Uj5Hr3aLop=5V7Fh-+HVk?uc@yT62<-8#hmaU17K{Oqad~QJ zuf^xd8eIAfxNx!X6<55dgogJOTjre3gj}>5E?EI1uUvSgO|6l)*4Kg^iZK)zM>ZfJ z%k%Ekzff-a-_^7iD%)%s9*tno&} z=9@V6oUzIoEBTQ%{ev;aKse$6^#I~!svqiu;s@68tEidFH(+BW>#2z%_l^8p8M|NRU&y07uvniRhP(k5#U#!m z&wzechvX4-yf5WS>q;9e8#nwVkK%yGtC=@^Z9Vdf7*T8gAL=vwDT1&R)4rVhX!|9knOqu~!Ndg6W>WRBpsu1y?l_(ZcoV;_e=tyzGnMF&se6@O8M zUr|+jEQqHer9PKwB<71htxQj6AqXb9Q8`>Z}wC*s^=~ItU1C( ze%&*yyi2pl;i#s&kuNg3GU?3Ch)&9s!r^5K5RDB5|M&k2pIG(6m1OV4)306|xU@De z5__p>PY;jT{KV#Rv7t&_DLpp!L})K!Zj8LmOB!g>9J3EPY6d(!KdzPTt-+_d!2=!o z)hTd4?Ny3vRUCUAetb}QHMuIr1$yooR_4+y@bj$ViNxL!2Xyx8MT~e?`L}XLsJLmMPJZtwJFE-)jFV0gq=~^L14w;TlCKm63(6}&)V=~ z>)A?r9R3mw_|spqwsDslvmHW?-H5XK5?}9dzxWq{lf4BC#_YvJ+Ep{V?#BjI?Y`KW z?2TXyiU_!QG5rl9l^gXD@WmkP+9sh|UKn|&0 zXlu5|5OsBBygo;4wjgPJ?fGGYj{gz{c;H*_i@bnbw`4=J>iMlL_{DcoCF2=5YdgT= ze%C`<%2&~FAh79b>|B!udEj&p9ACiWUCmuMf7U(aT-c}+^+DIJu8T;;Rth1duG!JqL(;@}@a7oMWjc2xu7Wo~qBg-FxpUIQ)cci;s6`_PZ(OSFD~t1>67KU7fA#H75A4euuU4XS~Ll?JPDV`C{XPzMz-5OuyG?ZLB;a zLfYjXI;;$NPS8K&$fj|hZDmHv1KIdXGU~3^cD87<{qqE69T6%;H{sGuOR!;Tytf4==aZWm*^RkX>yLN+hp>{|JBUD8)OFZgQdcCR*M&B2rgkI=A; zbT1dcsjtj6aT+gmS{^+c%`Ml|u|xWLik13LaIY`=q;!ijwh}Ax3E?c1M}4=f)~2QR z?1O&fA^t1sgCF#I)KBx+8o}P;dX<;%U$1;8-}+%S8*rz?MK&h;Q}&CF83O!kH73SD zXjEL?o}L77VfDp*=I7WGm8x^stwxa977eAG1pZP37wPg+{n52bFfWQr>+>K_%{uTz z-z27!uM(G~sUDc)-tr|^xDcJG<`{#t_**1XmNf3i-YbMPG*|JYt4ZdzWAxGdPKOmcVYN*zh z`oQL7dAvP%nIk}XMf<(A(s8aShG2uS!JOJrp5%%)4%opyyj4f!rT>hFu_Z-eK_10n zt@*Pw?n|>eYsZ;Snz$yWe)ZPx zHH*{IKl`@M&rKTf)Q?7MFcfWsBCHpHy9o znLHk3U3j!vT&XVZur=$WBllfTR!)GgM4>3~=8MI{y~2wH6bBV9Hs4XVX(H*88T^Si zJY7X!&tG||%h_6gUIjbw12EalxZ4}eTUcjJ9MV~w1$E%L^3pg&&&ij4@N?i~XD)KO zJnPt~Ne7urHKX|fukM+13#oG!LZ5w)>WcB8{`iIhyB4L^9`|6u`l*+(g`Z8ucd&mt zv!{G&*G%NscUXNO>9IgcMZ!X&U*NMi(kk#T4he0{_$Qe7GMB9WTYlSc z+J0p{DCqnSKKVeK7M^^t42AuklhoKbpfuKkXhM(hCZT;nS;CBd9^~*dHZD2yQzH}F zmf!8HAe-Xc?ZiE5f-;0V-Gaz(eMRnpvv@1)?IEl0(@@#|Wya;{M!fDjJZt4Bfa2hSK7EA?hNf_Q)u%*VZ_NVw&}8}l zI;G*Ito!;jsBoFt7zy=)J37*ZGC4{9QjaJ56b?Q}95LtN=X?IJ-X_(^xnP1c-*nAE}&xj%6QvvF=5ag^p=?|ZwFU8WBv>GNte}W_te2b$9;f| zflx@@OHX#k#WP2)y|cJ-2A;ldhdUYR-xIbvU9xQ7`DFFtgr@`ODGnAsd6Tfeh!>s> zTrZVAQ6b%<5fr>TX#=g7dc_kvBnvNl1Ya}}}%6Wc~7T_`9 z1eu=LXp3+gj>>6$z@Xgf6f%56?$AN}fm51lFRgR_RQLGVCC-rNNLW(SgI}RT?chA9 z6KkFiamxFW_1Y&Z2K?#ZkZ?VWPy3_xd;QvrhEFkv3N(xJYir_cj=V(N@BDbeih~Py z@=zD{IUa-TXaXB8;wTc~_79K3r_`jhd2>)@GRG#9JJ9D<@MVkfOnL=I2g2@9$_Ms5 z&#+AA2b|oQnCqPnBK8G+kWKPrP(762^`;LadM1=B!R*YoI)QIVS4l45i!sozg6x(n zTayLm9ewsGuiuSLaoe{D98Rq7EiT4+eABS$Kje?S`o(**;nKj`p9ue+;vS1FSzvt- zCc?#qS2IuvJ4)*{L%Cl53BI+%Y9`1Dr<)=VB(CX0i6Iqli9zwWDEo`e=D)&l;2I=0 z7RAM(M8O?`4?O%zFzDG{gt$z4@wUsgUF74!Lgw69coBD9w6z(i{+TuO0%!C=<16re z91S0N9*#4N74S50lz*gty?TPYzUb3H4z;1HsyK`k5!P(_$A_J~UJQHJ)(#@t-RiNV zf^~S%5r>t*2f$K%ha^{Lo%Vy?VMF8I?gG!8fAs@ePhSz!ln3>E?YVmVy|_}1&GvBh zv)6|~zH46tu1wyb<4yLr`sVrN9W?mx16n=-q2aLUXz*-69*uk+4{_v)p9J?|6LGpG z6L5SJw+}UL2}}NxJ_1j^jtD=@Tk!R0S`B~jHI-KnB{8p_EH8X2_?1|BUh&D>YtV`F z)ci@|0N}nG?lEv6QO@p(FTomrPTS(kar;wYNqNHOxq*)3+mC}*%LSgk`s-mg+;h&! z$IgYP)5CSDyPNIWu+mGVK`Q?42x|J(ryAdrH0B1rVU4%?NgSc)8yibTJ1$B@Yje^; zrt6+27KfA3y+45+UrBL*S-#A{xsAp#r{Q_2S)Xy{c%dGoCaOxrBA=B~kqk zK|KdlL{k>cZ~j`LIzkAHdok(H$Hi7pTI)VbEpt9fjW3FRI+_w zV$)PPtl7NCPdfRjKMpEvIE+ZxE@JYJ=)_ONb}`e_A<@0?Dt@tq4hrkTi>leviIy*oZZuJ zr~%E=Mg3{H4VV);LyYJ9+>p=C9R&R0zB}lt8P=gSPCo#c=%4xkGWyw+`{w zvS?hAV+<(w$w?c3?QUr;A$ZnOSf=3zyuS7!#Sanq%F6X2$ef$FUzh2tFtM*D5A*j4X{J!4gOWsURT znGn`$t!3+qY)f~bU;70MIL9CXZ+5mL9-oCi`qbyK)}K9Z)#f4%?&L6O97=%1fmzol z;ZGoNQF)*ry=DcXU`?;lo5$fU81l1kAcZ$clbq9m3IHZh@qxSYj${G!j&3^MK zZ@@<*-|*0r;!xj=y+qpmr42&Ty}iv1d27&<*#_+HH{*4bc(M*#L|IEa6t6LNTNG_KJA_r{l?HbwH)AmwX3)Ja~oOIl4n{U+kh)FV^V_tR-wpRrC&BlBw4yKms5 zEptieW_9R^0l zX~xHj7hJft1r|;sCPv!@{-#okPUZuIxR#iqmzkof(;4 z-9Lp-&MH2Y#5&2HCqBnIJ83wl25JV?_TlZQM{47zdp64S^(q zTL%pNkvb|Xa46JCJr2ti)U}^k!LkN>#gn^bXAfYJU-8mQbFL05&n9F=J`N;lbeRZw zl|N(X*ie?bIz+ly=ri?q34J+}UT*xX%FB)NXgWN+);fk1-e`LAN}u4Ptz!s*1+@x# z;t{!Hnd<|d4gBC~tad+-rhVoI&3jtQ@W{db1}_J#%5hB}?Gxc)8M(;wanP_j;?4(o z&c$8yGo1$p6m>%nbrDCY10MVbZpkY76trQD{3&k62=&a!cF6qm|AtowU&iup|JT1B z!L0}~(|+RyzJB19ECBpd0;V;8hBbI*RGd#-m;jWyXLDS>TEPcky#F5Y9g~>dSrc*-k<>|S;+OoIiUY+v4z2qIpWLn6^1tR9(*_kVQDZSwoO+$ z*X-Zs^nJmZAG$Xl3{Lt&oxb!7upQ^~xhJa*=U$M)!vz-Hf%)tT4a2^zM`$Rerc%ON z9l!fmW*`kDcxOJ8#HPi1wNRrmcW@hip-~E+%}&LNH5HgLzoHNt@7AzW)6SHQZ=wzO zNIwZ{s+flw&oqsL3IoUvp<{pK^1vM?sbj+&Phepm@2V$rNN0m8)WhisuO~-`y0H~? z6H?mlYxo<_=i1kRa2n1bm{LIC`D0(9Fl&RRlova^xc79K23JyfJD$G93wgV>?=XN| zja+WaTe@@l%M?N8Xs-3Np)q2B;H^z_YnZ-lHn>Xu_@Z^Jjg{OhZBXY4?t?kzLxvA* zhxciKWb(%_%6~cHz-R2WO{|X~7jnT55AiJT&H;13$D7rt+9sckp@g@5gZpd43Qp1a zn;aaBr;q(1U-iOI4J{iDhnB^^VNc)QGCbdqlTjZ=2Ys!MaW4b?_zLQ9CJmp{S#1q9 ztJ@%k28p4R4W@v%`@_P575j=+Rg2m3F4}KHT!xlBb){U++OlV0_s|=1p=Z+j;bYh( z<`%i%>n9E>Jqz&YUf070#{{nZ%!&c^*c{>Q(RY>S)+C4DxC%x0ck`bf#v=2I@oFr; z@_7cd>AyMOyPwCW<|7Q^B8E-mARo=-ggct*HmJe?Vh%JfDyM7k3Lly=8l?`V<7Z;K zAn*3-JLSaEQe*R}x zwm>z&Q$zt#3d-aC;kfw!P0594IF~<#QPD5_sto9-<}9$gf!G4>McS-+n&g4y@MwDBZh& z&uY*8;Dlk6f4!7aus?}4eX{=9eNt!^J$J9fQ;OM`cw`%WTsyE(6Y0YM&asly?2NAj zj5zqF9_(q`Lh=Al8gU+kF1~b4Tqm6S=a%502GeQm#CE~)ldcyavf|-|xBm{_3;g`! zT+n9Cuf$%FgzYOkG^fA*hV}L{Be;e^5t|kpLg}vXEfuf+_{SaY| zjO-bgo{O$)x_Zx}m#<=LZdgH~4Tb?%jD0gH8&su0ZQ+&ph)3a%%24)Cg|=C6|CT)N z{_yY1Y=f$NSZQc^EQJP8szo-&Q?p}km@5pu@X}BCp807U+QW;*002M$NklmL zMA;SD5j&Q*knfBQxlDP?C~2el*LBPZ&mwV~h0%}SIAkpu&i*aWgRo!nQO-4A1H$E= zgDi#i=He^)T*B816*T)U=>fh~xHZ`lt>#}z<|p8p*P5@4ov_Ax2hG^UCuqDe6w+YW z?Q*aX7Tw|90fatzI#U_y$(kb>vfP=!OGW+UwUGC|#Yedn4Usmf^DU6)i+ekIcSmF_ zul-j)X7Vw6E_>Zw`tZ@|@BFaR;v6X+$`QiR5&6!*y4e=kJ~aqleipBBhK(blmAAle z#OJrrKYEGgtvw^j{I#qxw-&bKZlL3naQ0P?*Z?gKuDveZ;UfIJJK#Ij;m*fT-Zfp@ zFaK1&`cs=vt+hv}%@SUD9$u$At@Su^*C@ zpI)+@w{pEQX4ndKW(QUNM1>)C{M-uWbGmWJxigkO?t{*(p*eMs(P75XZLEK8%lk_B zIZqDD_SeX9-mB`1x~Om8YY(w?b2v7*LQY4{euQ_>70W*VGb?I>vkVZB1w=gg06iS} z36=keHSGcpCVpm6F{D#-AOVm?iKc?JHWyukxAd}dCB7AS&lY2Ve){b3(Z2E%r?QIc zTyrqRT(kDVIVU`Dv`Zg5b$78*cVNcQz%Nn27dud(tMsG=n)_lrAWGd*&-OGG24A3^ zYEAsoe+v()w&8}=;A`Uk3|cs|OWbGT^BC0CDc7@ZWM_0JVeLlDs+>a)Un4nHIm+J% z=l)Xge}?}egfAwH5cr-Tkdz)i+PNE!98&P*%Al%-vZ86C&}a3G$`&rwP>j|lb!rTX zBR_E!W43|B%g(yn&)jV=YP+J}B^kf?HJs(;U;&;3Z2N(^<=pp$JEM9i$)V%MMy3S! zuO7J{xeLrCWLt9J)fig*^ha$F*DFi@70~m;=si8*u#QYk7_s7(^@=l2gNk|FrSyzT zwN^A>2{U=^$cvi!$A8cL7a?n&tl$ZP>~WfWJ-iy>-D^_-cbjwdv#?!a2a*@!ik=Z! z+UsyFV^KNJp2aCY*Mynk^Cr8A4Sesl4fl>#Q>WAmI5Swd6GqJ6t%ZJX51M zZEhu5&!@yY(ya6j_sUVGmp?gX7LsE_xo1ni8`_coR7YCJSbMeN=(F`nmZZ0qJA937 zzmlYa7Od&5$wIC(KQ%Qi+Vx>Y3nR{IQby!x>kgSXb1L0g`YJukv4 zeJ$Ix7y0mm`TS=sE%EHhujF%Pqp7jUkOq~WwbWl~5~3+J2*J5c2YQ0u_^&?f`b$Ho zgioK!AuoQZ>A0rXPu|36YKPRKCi1aV%Pp`x%f3My*@ZlF^?9T`X z{L&h1c3W2QU{%tF#< zA)7k&&gvPKL-W%HX!f;y!e{yoyWA@TUSBnR%4gPS0NMmH@?cGt^u&L9Xa7WN?Nysj z=FFbUQk;sHb+m^)nj}71o7d*^t{d_0F>^o>5^u!MTd^I9c7K-GFq-RLnI2u12fDB7 zSDmA}_++E?t@^OWU3Km&h7I3f%U+aGIbDM}?7bSu^mv=m7(E>~)w-jElwMB#YrtL78PMdY>31Qv087*2@aD;XJb@|wKT@aSIJkVuVi$`hZ^#pN=gF+ zQsnoZkk}Mz!^G-7^dKfDF4pu8Yr6NS5`eF1a3rj=pbe1ZULC&WGFzPc89`R%$=bTV z!at#6k7&PElx~^%}4kX~W22YL-h}z+cH6Hfc03zWA$a@v+GY-J?#@A9|sCEs( z9{0NMNJSZauCR2GH0NCc&oOO(Z>?g_y-Njtd%u;<(-Uy?BZ_1hA2Kln6- z<`~uuD;6=K`lH3ENg zEvzkG_n@zPu~FB~i8SzX9X&8-pV8L2nEk3c2XGv$;Vux4np0onnqNnmn4(_ZIY6#Q z40<|i@|NH3YqC%HSF#U3@gDUd$e_0P(lv1j+WVRa`@-IN?)Q7mdIz`K8TvYqaYD&R ztRuY8ec`okSkVatjh6y4WKNtqn`nH_v-`8(p7DXf!dt58*7FV2MOmF?wAip|2> z&Bz!!I(T$IWsDA=m9_lidtO#;+{95EX~1(GY5Un{I0|J@KN%0UuFL=7JL4yvY*vNOSE`G0FlnUBKgj95Tk2{l^!qxU=V~btZQ-PRZERS9b4hMQ^ zC||0*9e*?___x-_lTRgIvYHSn#bXV5K(2*#Xi2?m*us4 z@@;3I*Ff`!>4$K(It?nlD;Z~D!0__16@0j-``xqk#~OzjORJjR2Nv}fc^PjlCq?0B2y36LYChW}Fgb)Z z*%#4<|CuEeAm1}_aB$dxLp*d^+Ke5_s9xfRpfiY)yf?rS@%T^^P`Hr#7A|+$bAj!k zvU^u?4Y}9usU~c#+x@N+Uk&C{?tLXCPY1Wby5+;u(1ON zd+%lOlp|CbZ48P(*84Eo{XPAhDa%Qavin0(zDj&fV@tGMWH48`A=yz6^jjOkc4-M4 zcw7CnJ)>M@OY4?i`a^l{TXHQr^%=g|Cvd7sb-C-eHBG(~+y`R!&#wyppY#HOoQ?3i zO8SuZ3@g~~4WO5=FP?Q=r@}3K+O-zFW^Z|V_x#kgQm3^I8+?;y?a>d?0m*YZKMpKy zxVly)*VpL+cc@ZcU3Z8+%F^9bQjK2BFZJ*&x$lXZGBw_kKHwo=qFbG63o=&D?ybDt zt3FG+X|Dq&t$Du)dAB-zfDU~(MQVRpcqShs=ht+u&T!wbf?WhsN&pJ$!9d~8@XNap zB_${@78zlQw+CM;T;h9lw0Nv8?D=lVf?kZ1gPl#3`yQoj9$rp6aPakr#X%eR6_5Rz z*Y+1~o4QJOpea~kNR62}uJC#!^$Ba0~TadADunl^Eq&h967*O7o^?m(~QxFkP`zkgWO4vsgn#LF4Z} zw)HmyPtC^llYUr(oqPDDzIir0T&McP1|4dLgc6?g8ic-HdD>u zQk&HQ?p^0yYu$rruk>|bPac@llH)hw?;lp4<2?!SnGOaaatS-uwd?7y}__3xg z#Z%YquyBqeJ!8^G-jOMBo*Chkl5wHW3@iG{0x1<3`92JX4weIl&Ais|8P^CeWoBT{ zC7}QG8&KaZy9>{fgQu4Nqsiw(P4RF!>SDdMVlZ?LB*5+Kx$VOX@x{hz^rWqqql7~P zllRHzLW4`nI~LTLY*u7?cq-zF1e=~N`a(vJhcrOt_jr}Aa#)j}Q0X2{>AmZkeOE{M z2@7?f)p5`Lb!`-orKhU`dqN||;W(4@^x`wa3W2gXo(TGijgl;zxu%{?9XMSpkFGhS z6nDpZ)J~1R6&Lfx^PPwX7c>r+iY$3hM|`S^Ysx4dxPm`fGuUOlulA0?6o$p$@E;ax zBMHNcant@42wl{Nf8!5t;$|BR{h?m$bxpd3D|nFmLjIFE(tGStsE3z&Ap?HwRZiF7 z`N*q0u;7kYqbuBu9|FC4(wupQKyUGQau;!*8CL4FEgq$r5T|PThG-(bS#9?2yiCenLws@`VmA%@fo|1i!mohz&xt0d7 z{mf?*PG8@3=;9@1%cEH!t-=%B+nP}i;jYEue+)`1h^P1dtZ}zX7Ym8U(6LkOMzyGIZp-B78la(GQ z)_fP;oFu3nsF+Q(CpXf_Eid;N5~V>g8FEw1vq^uf@KxWubKTEmWKhv9y@c^{+4BV> z&dR}`WT_O;;a4)(acBrHeAq5IIReyLiM(6m5sv0kb94B;{haLB@52{QSUpc!;&5qi3;%*>uK64rF|@YLiPOO2;V!;}5~b1dsmML%jo>!WE# z7@{2NsG?ukKeGJHutKOziiLNk!5;jKty%*w4FXTb!_D|Z84R4#&>@dPYkx#m^-Qd_ z8TW`|Ae=5?s2humgTv!BMyy=gvlb0M2a@_hTx3OEnKxpLdN0@9*0}Js;PLD8#zAa* zhn5vB#BAA$`(Am==j8=F9=>RNfI$0%CDE%sEcJi;I+}HzYRvIH)v!bBMKyJ_a@T8U zlJ9fFiiZk#cM@2D7wn|30835XHh&z5$LrxH4=;*ApX%h^g9SV3GEk<#m(YmSz7w&& zXkG{-p1yiBcy4uoT&knJ9#bxM1M#buP&W}z9@NoZON<9l-}G-C+@GxEDT=<*ZnQ-@ zVRE4GgvWcB_?$)U-ax)bhvk9Jl5EW$-Rt2|UfL%l&B7Ml^54GS1{Tb)*6bR4)&ka- zUZ|T=Za`-3t<&1{Hnj8B81?%Bwi8sq+cQVMHi4vtlQ`n={K)GKdcboNa6J+L=$^Ke;iaga7y;c<27=~ z5Kq36o)J8CiVO-?-yoHWnD|ohi`w(jv3+I=m~alXW9c(?OS(#UYg6~M4_Un9S9hqD zTD>S;_^3nmA8Q>r2i9Am-tvEM@EAt;IYy!d+wt#%A-`b|F@D6vxYAk&7S}Y681$|X zZ()r`@{q(Vt|m{Kg-O|hh5B=+oheuQ>qFI_&RK~U)={smlMDJ*iGJp{0j>8e9*e)a z*8+vEK|94KDmH2i9;^vrqxM=ks9=YF)NC%MX;aKpGq&BQB3~vX8_6MLc@c#pF7>I3 zPdOMex>lL!M>uyrae2BuUn$4IRq}_nr~`ZQDsHPi9XyoG;i={#8FFZ7gquwI6?@dR zG#A?6xX2rz{mnt#kHI^kI@6l>%<3XOF&cZGeNRT^N7peoyWLUUHlCL4QT;7_hMqpC z?0D3dch*L1dK*6sX-uQ}C|I8TZNPU7D+IMD5ivhZFbh?aMqI<*scC34md2{8t82=W ziG#-CNv}c5)_7_(`d_nMu%QjObWw&b5q&7w(=ej#aBgYvm^B8A=hJDx75LQFst#vduN_oa*BpR6(UHo@>g0k89Fa zz!|+QpVhBBd{+IT7QFh-SQc)MdfAnZ zCW3X)lMNBIv2cC1fdQk#=WJ|yLfpRA<9g!?xGer-a4~KSDh#i)-A%)GZd=2PLrtE> z&YlclG`|qD`(9O9d<`M;5;oXlKiJPc^@bjq7SEIP{p;S+`L1?ltE+mwuC`gz_nu)j zTi~_mEDeQCJA{^J-)D`1O|`(A&}{4pVHVWW+niM#G9@|BZi!cQj;=jBjHySL<&~IP z7m(+{r>Y)vk%tY+3WQpKO};Jp%D$)*zOe2H9YZnJy$NHz{mQz-7*N}Q3X2%e{K^bjMmlBQGptxhosKuzSdfGeh=;vPHVQmziqcezcC``fpzsM+e0(B7HBRaqv-;i@; zH5RN-@6rqF`#8`n9#Zs>9l#fWYW$kl~a2bGtFWcRqeHL0Js#j_hji-?@e0FPoEoptwTbdv6ep~wWiMZ{ z&)OiQMq4kTPT`Bb$=Uq9mtHtjZ%zsmQmRgCEfsr#4V8q(#2N#WgGOv#OAO=r3sm+0#G@ zxacpGd349f_EnEVm__x*jqRQH#0Gh=?j5525AuuXS`;3XO z*C_1i%j|i9A`5MWO@>!_S(kWHGZtRE%m#~`H~8G2`2;-dMVqLb@KzlqUjpaQD_(f$ z*P+wW0ACUh8Wi7Q8DcvPEbvAf6*_pbSH~xO-yqkkcnrl+w z;S$j-Oyf4x^Pn0XG$)0EXxSE4cgZ*j4HGW{Am4`N*g^;1HJ`{6*f30Z;h>~AoOr$i zHKTeN18nFEJj$oE+M0PF^mq^5+oxiW=Y-qiL|*ir_?U+s0sGMo^8&fV>@Q-x!Iio^TbgUyQe2cdh8DIn_3N3oxV!XPJ9huh zVP(CX-SaRBsVDC7!@>oh5NgdAG-<#z??Uj_bh$zuNb03-!Vb~o4`dLBd7)_80I@C> zF=Y$3sUxZi4xk!`Poyki=@%%_1hpZvVM42}vDb!aX`t(i zdKKrbTY9Wa&4-#z+99-hYkNlq&G2*?)HmpZoFfYoUY?HlRJET!=vrsGk898yFZc*v z)eDj6`)=nH2kBreyfXW&G4KYRp1!l1&f#$u%rS^T?UNdC@rg9h_ArYpZ1X1YJ)dIMNFcO-~zNmP^{CtP^{+c~d^fCA|Ts_NcnmK$9Jw{VoW- z@hM}kg{03}&@NzlBI%H`s-nC_%09-rKkW;;Yq@=miLZMKg9=)t?vE#|hD^zN$R~#5 z_TF=;Ic9zcp$Bxl6$gClMZKeP(Ay(J{WU*&^iY0;moj%j_@e%V4@0cyyG*7!F6EVY z!bwNwpR6Vg4vQf`O@6NeE2oJjD9N4|80ZsEq8gZaU9z0!5d>xnuR>ObV zOZLGZzUJdse#B>RKZha@&x!Sj$AhGM zkh&?yy#sBNb68?C2H%Ny&n56N|I96YQe^>ml2r z4SM-jQf*B?DM#qZL|(0JtZP1r5bwj&fep=Zw0Y(n!`K>9pG)VUJS}VS-Zz+3 zAJ*Ixmi!=|uwkZ3rmZT|4Mf;wj(Xy_@hidZdb*IS`C-+QoJHsJ*Z&s=&fbjpy?Iov z7u>N`{8UI@G%vkySnHn6jr>>ON?q0u`b=o)&Yq16kZZDeIMOUck@6jBh*R>~EaKhg z$j2N79DK-dQTdub)F-Ut8<%K*^XEHpAL@K0A1x1)J&%#~9G|lK2UcuYo<4))eTeY| z8o%N*Y}@&rkOmRY&G~tmHc*IM?Gq#N;I;f-a|93Zgz(jSS$(rSp4?R&ebabaI&U0U zEz?)&^TVoj$X7kv<$1yE5Q#$zJn>U#xY&HbuW)!tj(882n!7a3%&wj}83UNBsErJQqMMO{+Yv%0e!ZNmjmV~7QJq&To>PtOQA>=O?D$u}2hnznIf_IG*! zLoev8z0`)TDWmfAkB~ebR5_1MoM)4?J0a~7_S(8>V0HD}ULPI4`C$cRJWN8zz!Frt z9J@Bzv#DTsZC?|H%adLBP7l~D302I)37t(0kZU1tOY!+cdjL`Nt6-aX1(}VMFp3~2 z%nM;8gg^FJBfq7Y{it6w;liL>{RU6culc7Bxa7UH3%>AXqlfO*uOq)Qq-JVa9fRK? z&XfnCaZnMaf5Hj5;v4*2YYwR==28Y0@g+FgSfOV`hUckJ<+&z=e)3{%U&?1`Z`s5D zS`40_pBh-Bev0qch7}KzP!z9T;WPgA;X4vUPN9@@_|koaROr#h+o?r zUx{RXHsnQBdkJ0ix6Pe#un`h!aaZ$}Y1!?Ue6YE*vd%vG} zbr4dXG>a$Qf$%rQu@_DB)8TbdHCr~1^iLIm$Kz9;uueW2Jioe2=tAM!nCw2v@3BOh zUizf`Sb!(;S$mMP??WucQHn*_9$C^4<}eQ1y>|WPVuzEu30mQ0bL6qr@~t%Hc2tM@ zKpm>0$XY|J zHC)vxeDM?MezD2o9xifVi{JV}1s00EIG}V7UaJRti?ce--saKn4f}aZn`)Oh<+i?q zrZOI#@_{e4Ztuu4l75 zclj}#bQtN=RkV}E;@j8;Tk^^*IMfXK?ydT5@*VG>+6S-lgND781Kz$oS>>^MmG;zn zg%67dRy=d*tf9;3 zix(@LXFA)!Qo3x+9iLF3viGI>vBrxqHcnn-!u?KxC;D^Y>%izYYBRo%pX-+5JPkGY zO26RvmDe6umkRRMY?G&?5VD>;?8gy9$2gYZNhcKY9uK`yvLxZ zifQw58d8)sP3okNI(ELTk?i(EQKZIl57EqdW5k&+GB1-c|nsfwg6saP;BOqOxOYgldO%VRPne)#5CMTK6l+*4__BoqO z^0mB~$#;{XrCpxFJvqzrH2cNuVT6SV`c7VI_w`daykBhc5nebaJ% zDbt3>`Y)|NIyFbfCizoZONO~5KVxJ%^RoYRmqOG?s36Rpek z@}$7!#3&&scGRnoFOMg$41!T!)K9s}nO7vg(D(r(Xxw47>Q6i?!cpH@b)_Nk0?^|e zP;qv0qC+xx*!jFhA!!jaEy{PJqmuPAU?&f{k#GH1Y011Lqtln@JY@$;eatsysHeEG zT=d{eJ73~QVRl?pZqxg&Ejg)v(Qa+5Rv9~bLq~axk=bf*)*18}Yz$+)|7Zj4m)B`t z%MO;cX%se-r;SEuv^y;Kb3_N!PVbUBlt;dyoDQYL{n(}AF-(VK zZaB@!7($R1A+;TCD1OLK%UblAJcm;;WW>NON4}lcl3OLRZ7U_iV@IZbLLhb7G4Qr| zNMqQ6bXrOJ< zwyjequd#hnpm9RK8+s2ItF7nD+!t_IHNpg+=}?w`(Ie)|vd9}CThg&Bxg0m6M1mwc zN0}xAJ5^rm*i8TNMi%*b$!<;m;bviHPS)V1&!guLuGYOhG*V&*qB|qsbIg1i zUKEFP++}4_r%QGfSyB%8TexIm>dccb<&eHxah_eBu))+dxnJZxS4I__-UIuME5nk~ zHZ!v7L4$cmSm=!SlN}$^ER&sA?lw*sT;&@lh!q4P!8kLH6)fcqlKwm z>~utJL{>(TOpDxm87ik$H!n7hx)amn9x8_~dF&YVK%N~)XXo?UYc~mWJmjcECKg`c z9x?X`Iwbu=XIQpFwC_8qLZ(CMLU>ZUC9x+h^~$;-%`(OiK^mDy(XKp}4aXQ*n0NUl zM_Cyx5@(mm3cP4;WYyz_^NzF%fEel!^k1U9F$;KPu^CmN0}Jg8C3A<;tW!wGRoVnc zXKiG#{;qPAx$>!;ytuaMs+Q%+F0u!_Exo|93XW_8n!#Ag^3jmi7gL7KpULL}A)gSP zZ%-Sx{Q>BD9`KyI@{PQJjd5v@M+S?Xab6!&MIMx}K2kPh$!i+p(&3^beJ5j=EuGXy z*{p91qbmLGs{3t0X{F-kM^-%o5f57O%hn$cwEa+%BFV>eiD$}$gn6;ux#rP!sSKSK zJFc#%q(gCG!LkrTT>L)1GIA+{JW>zyNMprSabz3Vu_ZoxS@7&o7MSEcZQGb!7ykvD zPWxr8NSu++7GJ)RQQ|pbr)TTVyUx{}$7q#7H}z8{Vy0O}Hs2&g*9or#MCG#0GKQtcF@0eL|Juf+eozIw$zQXfnM9F7X z%7(3>GNla3XV+KCm$D^~r0Hh5mo`v$8ne$WvHN}nteP2FK`{+SqsoS@U{vEQyg6OA zx$;5`Kz$K9+@U2(`rv=NGe^B;-R*Li%yL&*uc}0wsGqjk`6y=@X*&>0Cxf(o4V5yF zCfKyhFBNB2XX%kx=6XmHrh3eD5AXS*qUx!tvV44H`yAOPuok|)06L}Kvbre0iI}<> zHzBjE4C=PyvMUBl>TS+hK`|Q@F)LEipvK8zhiy*-wpE#{ZM<&X5-2-ubn14;F3V{X zXEJ05xMa#TfXg6wNKChAJ`=+TvY zhP9%h`@D6MK#}q?<o10(s$BG*@4P*Cv{ep%}(6c$yb#Nz9wXb$S8xcl;`2=gwv`6qvSP? zC+|KsjtcLW*s&yW>X=&3ae6I;yH^qlf-*_jUzFu@@#fXpmQQ{=1|9P#kFhMX<#qF# z_H|PybxACk=ZuH$EoX6s%x0YxDncL`S1_t^mONVsKI1&vmSO3;syc?s4pFA-$m|xc zrvp#bvpz+1DT60bMh13G~D~z_PhvuEtAb@G(=!-!|qHPxLv3Uun}Vr7Nxjc7%EWSyFpFO8&Z=wn)z4{F-33-Pq`OVqDfXGMcx z0F08?C5-ADQrM55u8Zpd?i)M1Wr*Ez+j@)2C4Fe8-wB!04w(+MN%9O*x^*wNnJhYx zWZ{GuNoiu^s7S-OO-PqB^6V(v@7VN^%^#{|mv^G7(ANz;ov=MbW?p-R@N1gpwp)@4 zCFq0P2n_%%VHwyoI&qiNU|!Wup8PIgs>+nIe0GC|x zX<={sdn-}cZ%NtTz&1~va?OSe@=1Bflh?UI0t=}pkbGdt8m?!vBP*Z^18F4UrW+bM zx)oZskH}FKJ8>B^4gBp6oY&oIn@~N{W*3ibcM-iyM!)9;K7(A24oAgwVbuaQa)pwK3=B?H1DhcI)1WIkRH?!Z=!6=p>wx8_$)>7 z6&ylc8F^Z4*?A7gRp!de)7Q^s`csRLg+X*qbX0vmvXcEvr||E@v(LVfHg}^Q)HUF7 z^UlfzNGBTIrKbaV=0UeRzYgf>OObY`ZR5alJHKvaD7T6n*pkO@m-%c5T_|l8JG;bV zrUDDjwvvttW|eYOgZzhRQ5$rlZUfvm7QxqadFPxJ|AJtHGj6&D-H>N@THVmu4IQqI z8hP?ZJ6yCZD;qZ{%hv5{D>@(OW}3Wt_W0zHw;$p>`(dB>kUcY{t)EfbQI)PvozAvX zeFEgxv8yx)B^hWN=!^DQ^?LC&)p`naFS}8kpl-Zp&uk++mR@Jz! zY!^T5w)0sRpPejc?4#>deyCmg8Qe{bviO}>I+E)4Gunhcm&1cx_CIxW)Zs0<7dk1s zNcVu2cg9(vA@Ji3Goavv%=HgU)$9%p9k$GqX;-CW2VX?%;_r5zv{&k8y&0n}Nc-r? zn^)%|UdrfEOs8a?N6UuPQCayxmvuW_m!k<%+#<^BU)cXt(ZPCww+ermI)u{piyfi% zc7U!k&WeWehQW0No2Ya@W@pS!6|vp|*?Ub?9W7j!E zrjG_Xq#hq#lljz_D^u=Bkq{b3#g17%tIW%l*Fa$%J)yjzbh0|=tE%ux8BM4A&7P*~ z7a*@Q-&s+ybWjm&qSBq%*Ma%+VU_H_ah*q-R|ejG3AB@OC+w2AG2Kahb{(kG&JVek z&nW3#c`TE0FFW-j8(Gd++8vUv$`>NL3QfP+Q>6|yc{)3?qHzGa39y@xL7RqiT&1Iw z9Ul07GC=1m>nBWMr>v80Th%&*@=uh{lO^*_XWTwbC`sDVO+AZs<>WaNmetV#Z0hj00T(l>BG6f9 zg+`7IUA1lU`OtCk2g=Zn%%)>!ikM}LA-A7H6LvNsqX~>)2W?@R*O1RN%VZwXg~79d zZ6RNW3F?koLYzq*9q7O6@HYWpuk|-khX!PH)>#4MIzW@Zj*JFC>MIfKv_gz>{betm zlav9uER*@YN|&jp&&DQX_+&SkFYT0R=)kp|$9%@Fa+I|~W`96tw#CAkh5Uip)H4~P ztIgKHj3#VsLPnsukt`p9&NwSJuze#kKi{UIQt~q%Dj6Orb~228wL&>*=ujB@cvx=p zfu3dLB@JWd4|>dcGPdi3e3qf^@@La_>RMt>TdL@y?JnM;=MK+T5sfXkU!KW4J5ZKa zZr3UAx-33m8R$vQSE%U2hv1ND~IJ|5)fVH7IECm+vg-m}JM+s9uvKTlVP ztRjAtH*Ir>U6H171UloaXeMub+%UYU7?UO>_T6k%WQFK!f(D(2-Er90EI$nh4R)f`RG?n@ku$ZbkQ?a zRPK_Qm*;!7^LXqs*yOScdF+F1o6L)&JVYmvs%KuB5s;v~G99ZF>*KTYsYmh-=QQh&nCYVWb_*luflY|(=#=$By6m&2 zSq3in>gdZKxC%ytfk5Y-6}0fCp@TtOHrPCrSyoP6dUhrIOv53ybfb_0>u@@l8ym7CdDX&2_3he%(hNzUa6Eaib zRsy<)Q+rs|t8&>LXT?UY3qIwbrc5)gQu{JI=tx34lTf+rAY~lNOFC&6({@bSevf5m zE7Q{MrrSWuMw)G5=l9~;g#q$h7)aVydN-w~|B9YDSuUR?nQzxUugs?H#x?AwO{{~w zX1cB|P01;;L)NE=b_A7o$5|0jG(z2m;LS*x-MWF;8Q3xH2#LWfe<3`1G_uo@Y4T7P zuNk{&S=P%~+Ql^Srd{?m^P7&ThjG*LUGkty{)ho+neXGX^Fhz&%`Wp@%V)`c&U`%m zkPo|QudD-XlVx>nrH-<4Tztr5K4Z#d9qfFTkI=Zg&Z-HJdGq-iw8;jRods-12Y_J5 zNpALkb}ll`QdGZ!UAAp5X*NwLpG#IZ@`x*R5jUBZ{!;w5<$Z zBZdYFkv2*e*y}4Jon3BUlWve>)Je7-(>ZlbJ_0VW0+9Id+2pk^Zt59>{7{`fTVy_E z+4j*PxcUpp-^p|@b$7B}U6kG3kri(yRIqO2@dj*CW(#=pu%k0zhky>k{Cp%x;24ZjL<9bl)=d!&_p55jWE1CAmEc=Xw(A$o{r#m#C&v7Vy9vx-5 z>fy@EljSR`BBzL_sN84E2+QxDvyx7w%nhGMYd5mgVV9L?*z~ZvkPe}Q+)AW&hm|M9 z)rptk&yyX?>LDQSCANvoqx8Ho(jfLYbMuE*nH7M1PVnsTC-vBA(%boUuA7tzS+dWN z={h!6GThZ$dYrU3!GylI+j2+CrN2D0^4Z8T4Z;Oi)=s&VqUIx;6= zPG%D_a>Q3EvN5%=PS+!^ z?jgE~1MP)8)*(;!2rTQ)$f{G|L#}LOG$8XrZWK?0nRi!j$)8KVD~~qW zc6Fi?bm_PAY&-1ok$Bx?Td=*oIF@)<)p{=5KY}lLT!`0}oC5o~%^?jcYFb{N(vZF- zgeFf%H|vvUM<11S-dVBHZ1C;tDxg3%}bmJ zfu5ZbVmr<2DssW&>bRtys&YHU=d!m`x*Cw1bl8XaJMOyeSJuV?{1Qjy7*z#40~lG+ zL8Wqh&m8gtWCm3avV3}i1UQIj8)Bv%WHD>-5a`Z3D;F-j=|gVTGB+J)DchyDPF|G` zstQk@jlNE+X+3#1lr8hwTvkq(>DhsIS#7(z0{l`3V{`I3U~HGSuG5hfpB)dK$qu2( z0`ROCrZyPA{>b&v=7{2>oP>P&L# z{ZG3Ymz73)7?SA&*mBo}|ECAJ>Ovh&(x4ZV17E0P($ z&dSyCfL7-Fc%^)%!B>W!eBF*^{YvUaC)vbb_1@05Wly0FiL+fFR~wQ>@|CGO`2%^p zBPyG}=$X;a0I+c4<>D=TW^4lruK66gbQQ4nMKSQGVtXErRpj*r7-2>{aL2eXLW`=q z3oO_`vN4cmzGYmgOL^1CG=#`&>SF9uqV2+TNKimWV|QRa#*&?q5ksD;9ih*bCh}SL zCS++Dg-)bEPtxhOMhm>pWc!1EtHaXH*{LrCXPYLp{iXeESD9Ck&eYFEE1xH(iG!pU zm>8L)C5?-RWlhIT>Js%z`;{i;+jTE1TiR#Ks(RfCnN@A+AYXS!R;Y-paRD|0%9u78 z)_*QuizMTi>@s=H2F}x`>Dxb;ltN0RW#`s#2VcU9?vPgKglQN$PNxGQK~C)L$n)+S z?YP?Xx!OwBNtWl>(^e#9v=tU-ceK_?yz_lkdx?eZKN4c0pzpKA#O8%&$7K>fSpmS$Vs$2(q0od5{h%hpZwx z$O@$cZC)tqxKM7>*w=aT`?<{3`MUBtR0njb@~3dvpdEN`+4;QI`{+>yvoh1PX=a54 zu#i7nM2Y(#aUhQR*)maId2jpbZ|AqJla+va(S==3Jt5B)X{*L{b@*&YzWi0SuP&d@ zKFG~0b8_t$wg3P?07*naROuyFN`5Sjy^0pWjHo$t$WYFw${e4#v#a&7VCo;b!7}5JFtvAc6sgV07nHK z5)XM_Gr#B=F?I&(s$C}`K-wkKf+Q%(XWS)&7*LRlhGl~i+jX$72c;eXcJ^ju41%Czot)4Snk;Jz=*#l>Y+)Pu z%3Jw~V<{j)v25!ia+jk558IWoOAgBzyJ+k@7iJbe>KVM4g7SeO?`z`8JkSsm#>|t~ z$ddtOdF7I}YPt#etZ$yZ#G(m(RqC3jH?Pd6E3d9To&n77jkB^F#J=_c>7(Nf%9wPF zZF!`#^PSfv{>nt>gU-h4aGYZ8%ql##jHa$bY@vg4b+{Gn2ysA3=M4qAT|(LsG`{=5 zva{{o70N@fu;kRbY~g9@X-0e{?msGKeM9ge4{6EEe8w#2btmFZ=y1tI9ewreM7=^~ z!d92PdHkqH6}~)~eOlHVXJvy?rGcaj-h6C0l$B|~0$S6FN_~TrE^;PxIs;Irv>nii z+xJY~wO!_^YbxJU9-Lj%!I}3)t*Oaios!V5FRuHcbGGfG&7H6fy85NwtY=YN1qar# z3U84;eOBHZXXUzSd2_kST%gIuk-W$cmEn?GHLs|HvYkSa6RB#4%~xa>>23R%?~1!* zyBS?*{fvz%?8MprY-?VF2zgcR11-BThh>Z{|6j7ep~7g2s)z@#iHn`ja>m4~h>rAC zV%k!Lw=9oOm#m*mmz7_K-lx}>U!+U&`RZLHV*tvlIV%ZHnM#K65$q6J=q5eWp?tR8 zkON*Pe?TXO4qQ40cK(d1kJplxWxa~~$rg=4#yLq$q@zMR$+nm6# zM~>aqoD~FC0j221kmWM%s{m-E9Ww3X@#P2b7XH;uN960&`phY$tJ`RA5ADmx79$P) zLwmE$U9sJ^0c~otm}||K+GDpVv2rq2%QVi}*ji&m1=SLtB2z%y&4Bv(bkgpo?P2@- z^fs+8L|$H9%i2l$JeeUj4G2wjXH}43mm}wW?Fv;tUvuYB& zrW=VjxP1e(^rU}rH(7@eS?B=sI>Ed$mweJQcG2`QZ>v`4E!%@>X&2j{u`H{V9&%V_ zUBC&{O^5}@lBJ0+iHUH#L1!+CLB<$zM}+#2ycZ=Q-Urg|dq zmzv5f=k!{IBCvsZGi$*mMsBrjRps!4>E+zdF`$2z{IW0gqCA&~Z80gbnP$C^-(U=E zW5ptO4f0MzVqjj@z4?*ldZ4>j-qZszz|)c?#VIxSc)HH6q;cSn{On3$W0W4-GhUX4 zy{Q_3`zkq`?`mCCB&p<3+&*pl#D$`O*meLm1^Ccn*Z~yIrBJkQW17txJ5R$?knE@? z%p_hssdbskG^Lq2hM%_C{}4PM#VyOKy|s9(K*H-&a_AZs7=qikQMXma#x<^PWZ7wP z@GAY-iCfTBk1He_<7~nE`h%8H7+SfU&-7O?)3oq2q1*nz%v#qhnh^E}pGuG26bMoC|*{e3+B5-k*S}?Oeou~ zaZXz5y$C=esymt9RcyVEOs>oy7uj*gJ(C+mu#E3=asHbF`(Hntl_mHI zMe$S1VBS()WqOYBe5s0OIa->zY<4N9O=s){u|_gcHws02^YUY^3$H=z$$NNcmKq~z zIv?nV&FXFLmD+kT5Lg(7J+%8KO#!GOE`i=^2OavBvf-0)r)E;IpWv-K zlI`}}t102WKR3e#HqaIXT+rxcr|69TVrrv16drOvsQXTmVDjk zKHmPx*Wd{)bp{Gt3jB(6*FoAgNR)@iW5Hm=H1?!;Pz)vb&Jkcy`k@=%Ds+6d-3AA@ z<%B3xaw@1eB5rc{Mn{~ks=$t(z|1sdz5b9{iwU2nS9GVz(o7%UYDuz~qmD zF_Q4}&{@4DcTDKxYmoxzxXaFC=#Xcu$=K_!lV(|X%cN$qDk#QVbPHx93SR`y{2q7= zE^_TrR2OL@5Bi)i5=X*u&D5L9i!MG~sqjucN(UrJ>}W`ftEVfbv_~D$E&-b(tm0#g z6!q;%abL~AWwi3HUxQF5k_g0>5u-np(@~_>=G%!`#7Di4DM43=r^plh6?oi3%+m~> z-senT`@`4zljtmQTXxucheo2E{pXObhw!uL0J~Do8{!eMJykZd#r>kQnr-!_3YFMbK2Wfle}e97)d^(sd5Q}63OSmP?)EzIId3is z+9IWlJSLGGu4SXed0}A%VNS!Nx6`-hm7aa#E@|>TJP^u~b^WSSoYxn^qB>PV#EFtA z@#8VlUw7x5PJ%}Sy)^A7w)Pu_xE6HGJPzI`OW$$nNo&I4Z>3JcX-60Z+$#U_aNSBy zR-QuXrKpfO%_6YJ?tA_9H%}SBL~E7Z>Z{AFbFDQn9XRc43mX5*x6;1%_GyG)+vn=BTCZSEsql;I66JH_Rfr*;7{2yA7feSAJz%6T zeb{=q7$n<#6R^q;nLz|sQ4xAX_a)6IRHj-jsZJSf$MAY;!H%89hW;5>6>lJ`77G|u zAf#RgC+SvX{|e1#rYnCk+7)LrIWUs-VZ~z*BXJ*K90tbE-B&pvc2w+*K!^_Q=DB10 zi^@G&mxH;)E~N~3T?g5j^U1D)j4k-81|}z?YD?jHDRIwe*gQ4A4LQGG0Ou84j!q}< z4_u<6)Uj}bgMn4HB$=K@+Oe86c7==W=?~#9Y1q9AC{r|Y+P$*1S)6-Eom^)ew$nTw zaulB5=2(c)l1G6dQ$&+p*h|L4Df0zP2^tOLPKDVuk7|1YYN=ceZ)RJT(~_#&#w{}) z)zz4PWinNE!Dynsnp>iGpM-0LcwjAEi0J{OT!o63YA;DoLnU3kg&s8ahfZVAjAKK{ z2vLf1ql$}%b-_KBBgL}$0w#49RA$N_f&oi2Ow;^fLvD-5e_$8TkUZ?^-mMJPR`=E0 zR?4aL^Xj;UmoY$946;XBxi0z_s1--GnqE~nnRFsjQGuwgMc#IHyTiEj@a_IyGzyf6bn)K@-kTZCIC#3m8b1ow7exw+Yb(!6af`e64%!-VX z&|bf31_9_{8zIepxmEZHi(Z!(q|#AIN&~oaAKtkU_ZeRLO?Ph%LskB^BtJ#BZhIwYqOr6K?fryy4n^v#F~tKq6~m4ID^cdDHmH0Pf`v?&7(7&d=^xH-QSGL z?LPJaV+24KKcfOmiAYuy`sIeC`~;BGVyxiAnZ>je`9~9jME!$!s}w#0@eWplB}5@t z4~i8v)5YtVNvdw0UwybuJ#j@DwN7wHL&FGBS5c0MGfhhG7!@pvhohd36!FcDeiAP; zq{+)!a5W4=bce^P(L1){v89XXqor$)mzI<^bC>&O#-}A5;aj-68BRLsy`C zHtj*8jIl$GOVbH9lEn52-ntwJRu#HDitB{ATGrs;ox-r=p^T~YSY5>hrPCr!dfN5k z$VGyqb>uG?I#+jWlbJ~#kCAODNElO_i*BWTs>tFYGkNw)@> zy0W>phFJsYXOSKHa*FRy!qZC2m=*;2FG_RqV^KpG#!EYO0k(%;x88RXR_?5fo0e{y zBc|;;`Eue#I8S&SNhphA?Ma-UW*AF)=Um>PK@OHMe1jYz-?&zWxbQBPhY;-&8kVh= zLYilO|4GOO~@NQ89`XGR%oV=oW+Aq<`9 zRwK9>3^rEHxn+|C6mSCXdI!WuTHiCMZWjuL00UV4LVAx82m3q3Pt$a-%_Yd*w_2S4}^g5rurz|5G5^f8Q{V;}WBI^W4Y1Ae4IuN-2|nBpSn_V6rpi7#;PfFIHv9YFRbz=@c#N&F?z?p?9a_NHy|kzLGo zl~@uH$Pkv%Mv)i9Bih=l-Y2UP$LA_Q#NMPAXXWKpkU-CNTorg2H=EeR#r2!+vmvuz z$>kIXy;~@Mz!^^)Wj(FSNs4lf5qsO^-S%XTwTT{aF%m+?yHb0wH5O6S7emEyEm6FW z5Onfe)1V<9)8RM`0cetzs>{-Jjh_Lpbu5AY4Lj)h|h#B}CBy4m&t zVCjgyKjDrC#g3wux_+sg4T0K{QK48VBNucCPrN_bL*G9?K01oZAA z=t*gnd>sXd`o(ty=jLI6e?L?|JE2^%)J0hRW zd38G_PZnO%D_K-eM>@qmt*rgPlYabjuV6_XNjYjRec_lyF94g4WwUAtswB%`zHGrY zthWG_Y6^(&jj%c}g`JAu_Zp2U(ni?BMsjKpCbgMq;ala%u`PmYx(Xp=9zPV6p2Bp% z0>NLM$4c4OKVvP?yo%CX7&Bmmerzxa4jH4QI9Dvj>8|>yuPDR#w#nx%p@@TZS)*Xz zl*2RcX|FSWr&6)uv*8vhg;jOCBsv9QczsVED^n$NfY(@I|L4QOOL@5aEnc6Thbt+s zHXhbu`AlM&Rl8y`%S5}(EC_pnu$se7gH^=`1igj7mIKn=5Zz@0UXLdNEsL-j4F+3dPiW>jc}b6#ffThI~cB zwKp)0&(U0ST1f+iDtAg6CZRiT7lshv*PAw+9U@}aMLJqSfkrYvPV^_$N}RQHz0?|! zq1R!x#wMKRNXN*c{JyTj`@?+=?KO{}eKHqK7y0o0@2%KX)t)WjUvZm(bO=&*&3P*< zXHQ8ag@wDKRwy&pFEkV>Hf#;36ne9^J+PD&ALNU@%c0U4oQn)^dB_5_$H7c2DE?xo zh$cSjFU%qshgINmb5}*1>_EgbC8obgKdN zj4ML3Z5e)G&GefCFfUy|j0%cm|MdHyw!v`bK}!hZs>TN6tmz&;Hsp$359MiyjD38fY?Kh)GbJ(2@PNIiHxv`(Gw5)nDdMgTWhKpw z_f6lfN?m4HQ7rRLp~IfNnX48$BArDm#OFlGu6W$Npjnv?9E{bb0mte z#M1(04Hp;AJ`gaok<3fOY9>u)+gvj*H}oFTVs*cvn)-U-YD}w3>W+HRDrGqt&FY;; z&+;S9JPlB6OSQ0?Jf%_`wyRihM#-@h3+y{}$N1V-l4dvyXto?r%_CoYRMU*Vyc9BF zo-$!XKaX8JlVET1$=5{VKxQ6 zAfC(}e;SZT!;t5#gjLCkSS#3tpXH21-^;};tz2Gf>D_cg-rw$7e`!3`;;`*&m>qJ^ zoAaGW-Dc9MEZW-^(v~nUK0s+wvwd&!0^7e|UJDWlJ6FU+7yUsg$Oj*Dhd1C1R!l%Z5vqNrg0968b`nC%xernCZK#AMaNJe% zdau-AN!?Hph?XUG0M|?_D{iTa9J=Rr9eEfda&$QmfTd>P0rsP z3%F%XryMy6$tMtgm&8_68#zfaI3M&zu!>_tV#?sw>m5S}+aFd^Pa)=7o;g{-yVkIb z2KrrJmkgbhRi?L$_!o;Q{HE3KM8At<5!h@*lXwONPi@z`;B#GUx#eNIyFWq<4#}sDk!TT?H>cOqpxgJgV;kciyK&{2025 zMv+?4N;Z_wTnxE5pY2+j`#Ne${zmjmrk7Maic-hc*EB^2Ho+vuOl@aZ4Z^@L%E(c2d? z>5VCUaV`$qY8p1Gq{C&GR9Z8eRPXzMl&~%AO8o7*ubU1X>tHpDz{7#Vn~m5Cc5mWpNEOxPEQe+cx@StN^P9YTVN5+H!$qr z^er84y(Sjt(@hYM7Dtu7*}}#TmdK)M*|u0^b|uun8NfL-0xU}*7ecr8+MRjNh5fGIu94e$ z5j|ju&=A3+7j;oCn4ByVH)m*|R%eNNn#q}WgIvo@`j1*8?!ec1yTyrq&kRR(kSMZ< zAB|x=?YyBvhn+oFukN`i^Db%!PgUt0ZteO?=W0|Edm2m~_@Rf-n^qG4r3-EM~c^X6N=1 zVZX%|wN$JPKspAtLComHOwck^1@5uZybJ1vR^$=p#BPY|@3>e4HD9Y94yj`7&QclP z9BjyT5~AzA!C3|@%;KhFXjOTAr7Wi&#zOK1CweLLVo6ei_2E0?)pPuxd(PvovWAk@ z7c*TQOC&gOY0h}khLgeV0pIsK*dN#3gbN#q_Y`@UIiFHEPMK=xYM6sVf~-LS zhyqBY2}=MVwzu-R&;b6lsddptySSLmGR?AHOt+5geTjO9XiGQ2!^+kbp$408K?vW8{z|LLU)$O=b|;r@O;uWY6C<=R!@canPz=v(=JDbDn{N%?#2WY&0r7t)>Y$QSH%e zN!DzdAPI#0QooW6_)N*(67Vs^^(a*9DK9^xHV_JS=Ya64$Fs)iyj|ANujbyfLI|5_ zj0q4f)8^VAu<17=mo6&TR&kmljH)PeQ(;ND5EIZD6z3lTeB$i>g3%oJuCpQmiA1*N zt-GW;xQczG;Q4#0znNK&t==`rtg9!ny1Dj%Pw;?;hf*;!XC9V03-QVpI`SsooeWKZ zBOAbo+jr5;SQCOr=lm!D@Vc6<35t=HSHLdZCngEodoSAaP#8|1R3Rk~c9LvSvyTOa zCar@ObOXJ@>!{ACY8Z;XP{TqUs7{YYeg96+2P*8AGQ^)kboH?11VSny+liA-zde=i zuUF&#A(kE{%DU^{@20P1f`yBu_WAo%#bNPpCnq(Z zcy?M`yl~V{h!OyJfr>g6E5y+Gfl?PJo%ko}f8Suj!%u2qi7|gBql3o_2=7Fdqy|Fp zd=YvNBoS$0pNM{hl|?NJElvLYfOrG-lf{Q_dwZqw9 zt0mpw`&j1tUv-Fo%fag3cqRU|1~2BLi#pvSa`{e9Ss{ z?N#;tf7RjQ!pgYXOiRT7XM{z;ybtU$b>f!*&&y=KS&JMWUeq+u?>@IR z&-wN9{TJcmpA`%Q-q-sU2Yxw^mD2Hg@km()J{xM#=i8f>yvlD03L+F`Ub$Z==oCIt z;{+&qgn(IsOq$R0$Y#wf^z4A`kCtoKRvk*E2<-;oacTbkCi~rQ1P;O&DdL76`)ii1_lWYo1Wnl{v}A z{S1?K{+Sq*Q_BmHyIXwFVtQ%`*_HFfN#gSosTFT;GK?jToyO8Mrud#vaEWbv%R%bCiDyQD-cw?}U1!;Q#` zE&1#>(%3?EJ!K!?fN_hV%=TMVfiwnq;Ou3Lh{B53ber`_$nIEpmgjxREcxYF_8{5I znAbsk3neGG@&KH}#jEEs^vk-2i9y9+*MBIpF1gK*IDYfs#hx7+3bg1>V0-?Hr-Y_`3p*rTM1;Hc0Vq-I zRYRHneG?Qy(B2x@tq@up3+M+x^l+9x%W;U>x6LkBc9atuSaH_>1`bQ(3uGhPp|0KS z%UchX6uTU>+|}qriLY%F31m+0Dnr-{uNNH*pySNXC3&?@VuajbobW=<>ZctK*#V%L z9}!$<6;0dP)_D<<`zY=%882O4RHZTs9iLX*hM#uYx}6NP<;z<)zF0RjS*R!oUljmv z_C!iQ@apJ+-Ma6rn@NgP1jwt}p1=BHgI18{)0y76VCH1LI9r3uJCgR3I6%pgmosz< z5a$>{N!#|zor41rgTiO$Q-BbBmPGko@`oAH``ts!@yA&$>wA)7ZVG^e48*oMW65~F z@`px_pV|}j=jBY#i>IcX;C`=lycvXJW~vw8&kXwqeN~!NGnh z*#SHWQI2N>Nrcg-s-vahAJ9evgXpOR8o@G2Hos}E9QQM{58wtfU!h+}debrBxungG zn=4e5hUdd2zmh?y!HrCLL&1_$BkSy^a^9w+k>S}kzBP!eh_~B^=!QuGyQU*`XsGYn zEm+)Dc|O|@{NA(iVqhh5KL9PCAa^>UZ(HN++jHDd3m>+=OM7346bYI~!0mPqWYR!LFE` zfvY11tvcPYTGtFRs>mEFjfAc(e3S#;6-b_YhVkdqbjR@w*MR))fuv)G{qM`cDI!!K&U**VaEj#$eK;xb_88#t zDe}a%Lfk~W+_X}7@6YW!iYZ$+MWL04C(19=>^~VZjg>#l)~TdV60S}=01??c6edo^ z?56$XjD`Iok_j~$^&K;tPj?=o@ZHb%Q)dWvb&ZO?um4zezr(5zIH_Y7+T?;ZCbDzI ztjp+BmRDKAohq!`>^zEbwYff{5p7Mi7MQ*0#a`G=-!o)b(jM=nXs`>O2R1*I3e03- zjBSH?;m1WPTlHX9kzrWxjE|P}jRDn1fxBe~{;YmKsGWa7)m1Uro{&JJ9`o;8xwUK) zXJ;gvr+Xi=HL|@vA8M&D1B#!&dWu=BP&Pf_L6@JN6?`7g`-?6^Yg;Z9G)hu)d=?*n zJbsd$Of2+Shm6*w)JhUE+TN0$Ueo$H7V(VDDLGo*bt+Fq*f^H1UN12d4~gS5 z^;qNA5%Vk`iTZUSB2~9FhsGv8yS7L5%jehmRDh;NeXnJ}P99L~gf(^5n0#$Xr`+s> zd5iN^5YF0*6dZmXUeVHymZ=@+DTEJpbPyFFbMMAudYq@t3W4R7wz7b8@Y<1Yu&25} z<}8#->XMx^r&+-Skug%lm?7Qf^(9I-XvvYi`H{9nyhy)qm&z}|@kl}Nwg9LlFbZ*b z@VQ+@>62FYv9?X)U9e`f3VPB*r?Y!BLPEKn;$|J2eLm^XYr`0E*c6?pfsQWgyW}1fG!M_G z?e;)`?mD|808GZ-u2kNp_D4}^zP_WmfihjL5_~5fDmjNm;`eMDIG^hWp$y?FziC_cF|siy$|gqitrT@9z(EOaRBG9xDOUg`=e*sz8+ayVg^0i zxA-)w>6}8fM;>EFel(up3O5-cO^$?Qk?%a*oIJ2v8ynNnJ$g_8S zw^)+J^JUrK#Vpjq`#Q*a%oz~ObD7cFAckF&6G zQk}9~^9&ybB*|;~6$yhyGiMdyN=hXCyME@;Z{3sAQFCK1TAK?DcG1C@@wYgB)P_)+ z?q1KgQFxpZvz8q<&>_uM5phku*n!h2zmYEK%`pF)^x?{uR_Xp1m>-1}kj)Q4gZ?lY zUTIW4v}vjEl!~pQY<&{trU>e=Ichenj`_-Nw$l)ahYsWrBNr*(#4x0M2HJtbH zJ`|~K@bq_l&}S_=*0D@Sf~sy(zSSTmkpn8V1igim0O{;|QPJ5&?cwr1&q?gWQUeOH z++fSIKu_JlfKcp|{2fU>Y#}+Y+F(yp`blDSK!PgE+>eV#ERA~At7TLWU=QIi3v{FL zMvJv~shFE)B7V{>S;O}d0rynyQf zWjkM{V*`nbG7HE8wVZB$xR=;=Q;(!awR}>b$P({b*qR+QG%l~!__Ud`6DG*QxMqH8 zJ0cW)*y?{1WH5EQYWmSf!1yT}>*n#na}F*Bo$jRaB>s^;NF-x*GT%H3dE@ul zV=v4uOn>bX-Ezt)boxTZy%O*X1=HQ|eEy~Uex)DKmIh~3nxYa&XMz&y&EiTda7g@C zE{=jk5@Y$r(5u$cpC@Y4vE#v~Li zhrQ0r;i0s;1?ifm(Di9Q^quY4)d~yhT?INou#gCwh9z&!YtUbbm(caQ9;Xk9_$R{x z>bNx-SJaRuqU>R*c6D}+PJ`cE>%aI@M8``6)DUA7tG-3SG54$=oiuGwnwuG47<%GC z%5Qtzn8SQ-G^hQ^DUK)XlHj4gBar>s)c`pk^9HWcb_`> z0@x3{E+us+ED4QAIF>QZ1FMkJ`+9?^31dDm1)n!O47A^+;lr9G%e7nQGvM z1nP<)D#iEn&eJ~qYM{=2aHFVc8x}*#vw5Q6>J?YC*#~{JP7}cr}?4z^yPS(*Vbm)!oY+Rn^4d2Q|vEJ;*Gb=Jd7NX+-$cwQFrWzL4?7_2+r<9|CGrLwYQ zFZ%|zi1&zc?)^3!arKUZN`2F}??FB)?U+e7AMi|sN8I;!qQEK0rha$+_4@Mbv!^XO zXFJW3`Dr;pvExM3M$g7{-E>!@6l$9CvUDYGPu5fL;|`)w7^(n8P5zxk#3?~%?Li-; zbhN$J>WiAxbVB-p6hG9fHn5!Nh&5O-M-O{NYa>Xr0<*XAlcrht4ZF0|!NC;8&6-O)-9z~ zb9&LV{CgW@dXR5^FsZ%mxfh%rCCn14odgeLd0>vf)JU%aOm9`Ju;2&YE8nC? zsg9SE2kXb>&C#KcIhcY}w=?i-c=t<-DKH`r{}k03!+fl|)S4Y#R#3Qy%b{TKrph5O zlJT3RRtyr#!Ydy3;EApCRMwubK{-ShJMYGg#IV!)P_MIDJUT~~#C|GdH8CZDa~~su z#jSKP_Ovc`_Vv5Yf74Fl`;v-a0$wDDiWsrIY|T-gRak(SxFkQ(q;PQGFQUu8C@1_QBVPElKfK;ieHeZB!WYK3hD4VJ z$4>5FhUljN8PBY3Dj^iug4>-gR_*-r``w45VcEAIUAD0_cm;}<1wH09d3^@0QV-}@ z?f6=p*2O2)s3qB1)*ED~d~V}cWlp|?tl(9N&EUU`==0CX6m1s@b z<{)Pg_I>)-)ID5yM^k$LUyK$sbZ@$h696d)RF8kW8IBkNp8hb*>}&02e7M}C47x2k zlJcp*=bd?)6J6uleFv_@iRncyH0!n!5z*6oN`=hA%Z%7xYXuA21beQY?-m=ck2s*x z#3bL|KO1mo=684fd7umxBt3ErZ#J?BA^y(@mAK(_5ahUiLJ5FA0vrk(t<61HZb~qb z<~hhjth4&{Z6ER){Kg*6(N1-WFcbe)3-!^A?;7h(dJkd8!{sTd$HJT2^-7Aes$E*% zre9L%*tom&=dDGHI~k)<$eg4-cZOAs;pQc?DO^--Db9s`1-AzOdTogq5a6l~imB@- z6m-A_Oi@f*IS}VO^6?vd8we#ol-KSX7fH8S_$H^o|7Fu|={xK|?gzW3wJejjBFK7n z;O&ugeE=b?X$Dq}<4CV^`DNS>KlwHzHeUGW^){SolX*uLl%C)BJi4+(-N*oD%F%2| z@m1pgAf7%A$HW+Vaj7xN^)!`mj}7Lx%h0Owi91GpLkSEA;sx0^r(q7y6Jhtk>g0zp zXY*@MYDOkH0OYLVzkyuZjqtir=N{69h!utUz+>y}qT_hFaTa-GK3$a>wmd1!B|ZxG zF9*ei-KcU!&FWmka`LpKIt3UX!f{)@0_6d8M_1=V&XuG}fVpfqmH3G#^TUx!T+)j^ zz&{Fih5pwth;ozGI{mmA{S4a{PsN*8% zfga;QCWDSy{W6|)&J+76B$6Q)OvPh%)jMKt3teA{^ z%3$wrpLl;o&w0J>MxzU!AnyL(xa`ru_jGFwnyiV#hK7d(UP2X9Gs_=5$$4PZ*^(c3 zBUvCB)q~`?HArfp)ziA$)sn~U2TI|`{*z61$_cx1^6IyGD`<8}Nzf(iGMM>}N+oas z{E&0MrCs)3SK?4|9WL$~`wXxg2*u2muIqjI$2~uu;t~^%efisC-6!U9x*bQmILtJ* zp70;?n$lGEc46CB9@>Bw)JT$_xCj>VgPn(iMI$kRZ=;!`-RwI=ZcULS!|4<`NKMns zM`jrA;g*R7ie{f+Vgzqp*~^(lOA zpC#)v;3bvUd-chW!V#!Rs-h_1!uB>$-yD69uFW&;RH8yP(Po4j<}$e7j1^XAq;$#S zpTVR18QsxVP0525y-<`bytqP9j6eR^l&->ADg08J0UFa91)<6f5##@Zuiqt6FgL_o8UZ>I>8~rF8mN)8=b#oURgd113C$gs_U7Rp!Xc|!)Bei{*~=#rT5)a z1{_*6JX^4E_%GMqBY^KQHl^>v;Gd#|TsYh_$57@NU%fG}?%B3@67q=^_b`hE_5VOq zapcqY&IfL$TKq7BUahq)Dg8ccBzr?Xn|E*Ng6J(1LN~yB@bFdyg_Ufn;iZT_TWB_zd`1I@0PttlVbt3 zo4Cz`bKBQNuOQ?PV{LG5BHoQI8;FO2OzkiZ!hG}2sqBx}Q{jA~$t2^@*nm2J0=QX^ zGsdw0OHWC$0-;_~VOQO@qllpJ3DzDw+s_jMDx2dW6d`V#SF_zMEEXf#*e3%mHC3xc>$aC9@C?^n0#4>9fBA@ zx}|E34}Q2^^OiYinV_-6@g`aYFl>$Awmn5#9vd4S=l@cbaQ=wTrWm^yn|Qu5R|X4l zcqf+mSX-`ZnA}jYVl0~u#x*jrK%Aey`QTQ!AgfELqrp&8Fz~3QL)nX>K2_U&F@%d2 zb~7F^G{q$3Pe3tw+QD$o&V0*LpCNMYUyQ5mmI>mz*!&DLG;?)_c&e96sP6OIpB!}+4spm?=u}#9G-IR+WaNZ zqdRSkkGH+F_*vTk>uom_@?Dl5H%FY6ySVP`$OTq|=bwDWc)Xb>brDOVo6(AHTRS{l z=6{8uXj)uJ_2_Ob1>y$(KaKLlN~0Wym3DE@`+9o;_r5uXwI#Bh>sFnXD>poyg0O=Vj8id=s0LIb z#VsjscRNN2sizEz0a;ug1`i>OaA%YglfZOcb}mT;_~vx#((Y@bNHmQ z4ls8^{c*}jGP*-AjLBh>>WcF3TYn(|Rpqk-FM!+H)2Fr1qaSRcs3#gLjJrCoBH_O4 zeBWb{w)y*9A4!K9?Dq%hfNJ+yJh$gzh%FN$dE%=IzNl514ZA;LY$XzVmv^U_BaO5u zdF+t{a}VOt6S0++5N!TtY1Rg)C|+A2*ZDxeZz^bgZF;GYww$CeNCd=wzuU zX+(d!j{L9dAo7@lOp*IgZO119tiW4K=n-AQs1<#|o_lo|)hbTg`4m~7(nea8k6%kH zjgDl8p@?^?0hvW(p0Fr!K02UQkaS2=vT2yzl{eM>G>C$Vvh5*$M(gR%@0>)QcfPyO z0%wuuPW-6p&cF!2!+4AsjxL&Lhi`)WZeQB8$}v^s!MYv!l6o{_UoL2|7~T5V69+ku zexIPTWw@CJ>zoW5A)9RkR#8@8ATtRCegJ6-Z{H zfPEGFs|IVCQvR;`;LnEN!32^lkri=KhOd(C>3_e5u-L`*z9GFc&oE)wL_|GL)9QOy z_OZu9fnDe+VQ}m(iM-dt?~$!#EavxpJ68I>g*2uZIX1&R33y+VA2r>TwAQsuWgK(c zISJLpv!v1*FX>l!xe>{DLoVLW`S3h5;e_T zqHhnLigYeItL-84G+DyUP%5Y2%7}3_E_O`|)^zf_>R$9_M70t+_D^Pg0vdIF+|~O1B2{yOO9@`37HM za=>R94-J~R9$$SSE1O|JnC|2=@T~PPi1>w%DrYoZ#A5#U4X7vi*QD4=TSFYQVOGLN zixy!Ky%@KX({Bah>|cV8XO$tWR*9q*moPCm?NN}_dpWpsGOEdPy~C=Hp?^{VLKHOc zkrCNPwxa|bg$W44Fk0fA9y zA;?WI=|aR|8DU=_l4tshLuE^tOL17?pGQ6KgI_yzs60M zbhR4v9LR(|)IFiXv=ypa(umlXNwkBlAO&d+c(Fa0`)ForqGqA8z+-Il<~3~A@dS2$ zj4e}Nu_UNP{gdVs!->HnJUyJ|0ko$C-bRua!*5#NMfmw<@cUANkLq^~EC|`xD_tMI zSyn;Br8>i!0kgzwvLV4R@i}*H&DRHXr zb;{RtXV|81W-=ljM^4bFK_zF5C*;&Ny|han$K7H_hu80KU{xY=r0uvidXq_&&PXNH zqz%KACAb;e^Lk@P-Ht;F3Tn&8jo|Fpd?5|goA^;ZCrFdRDCPqtJy{(ICZh! z^8Y3EOTeomiJop4L4n! zoa^s`DmdZi)Bc^?yXt!{dRG@-71Zcal^xO;=MRkXT zKa962gk8i|oiU01GI<)$CUEIge>3T|_?e=mPb`Y5IAf}5U~`I_joVfYWJ(_`(YEG! z%zByIXurgblX>ph^t4KLl;2VN@a-O^R(+ZDzb)!}^$Jf<`je>YKeyinH{kuQ7S@#j zBo&(L&q(2tkj@sA=&2No`FxgHi`5HDTX4XgS@6PPM)!$97ZbA#Od`Nd-`s>sNh1T^ zJ(%cd#qbpM>BgX&?e5u+rA!XDwvZIfGqdYK@HTqSjx$a#18aEmRy+H4e^8HyVcB#& z;r~tU;UGrEyy96Wg1QRctT=TvYub+oQ6ccY1G`mwc<^&@x)SI7Uz!MK=8dqqeXWV4 z3H(>oK>UZhCXqu7ud0vvBcUB1N-4DdhOEfA#CujB=crVKVh`Q86ZhNBs}iv3az)WM z*L)SC{SNg^xFp~gc;APP(fa?QeC&lgWo`;^u&9^Vhk3-WaDQ-N0Ve2}c?E#(O#$yO zQRw^J3?8q)D%w!G2%Mk0!w_M3=Q=gV#Az8a%8sSgKYuCD2gVrjV2$bwgW|mgWSda6IXA=hYPKYA=IgR(cm4^nL$Z0e0;{!W zmcsPMYZ;N4&kRE^rw{!Za-i7et$`$LG;$56o{;&>*p&0*H@p?)wRNPDqnpdMYkEFq z87?)_DtbBIj}iKFzUlm?crt6%@133~<}{ci+iryK&*<6$Prrcr)!fps?1=R3jGW(~ zsBd(^oiy**l?YNE$D8;52fHj$1G*@+_OaIx`}n^j#%(!huy?1c1B6Wp+r)!0VYxgi z=KXFdMt<$EC2q?52)5OK7bYs#awDdAYoNW%Pzm-ZHNiKecDpHDvH>gaGgd+H7+7P1 zN3xr5rDGE#9EoY=8T(NB7d~%lw2<4yye28U*;wA50FQD~6#QGFVbL%mJc3Zo0V1{B zaMqnOcP5y;K$ra0U6?@*Ywgt4-93*MUWJ<`U9j5e3S9Lu`3Bo?3t zwMNKamDvU&TYhbW;IjS^QeBf76k4Iv&$Io{`5q#+=m zgVQi!Yu0IB6$plodYlefEUq6nbAv|4Bdh5I$!C!TYz!M@ohIdZ?@Xm#zgqlI!e^9u zz6;>N_WBg(I#w>}xe$ux+V@|YTyscgm4o`<+#ph+W6S#46P*n1P?FKE@sdK%1o9@D43YH3y*!J2jB zauqctX3Iga>i50ZXB3PveX%~T~D#BH`TP%@ai>Y)#vg?Z! zS~goZ3YDY6@hi}mjwtzjv=ejr&i&ek;*9#GthaH8kuQ0cMeg?osjIlm0pHnwjF=5WfX_@c1 zycaN6LORO&3*%n$afF9#WFMYePBW8(Na+5>)UY{7{g*Nt9mt2e={y`cqAR4(*!od3 zuOZ1TYA^WjbF?DViqHC>7QWMO`-nMVg0!(mX zositB9)2?LLb;+>*U~jI`c=D`t)`+N63w|Wsr|-?VHft3L}P$_3$j zbi4*H?X1sP>#C80ILAK-R9u9_L@(b<4eruYG%m*awU{-n zJrJi>Ka-_bD?DbzLtBumM6Wh^1^WQku-x=H741GnpQYYrIVZ?ahQx7WSUj5+iZZ6S zmNh3T84Z3}GV*HeNeNU7cs!QtwDR#bzlfhg3bb;-B|l>9%KLs;Xc@XG5@Y1c#q|it zA8jp@Lk>qebCs{>DXb6OIeXDJ_^B1kzPweZW^-U=`&5#3o}n)OOO%q?!!L|T)YC+m zlSSQ$Va(p*(i>7R$r4KH8pVaom#oD_wI7({$Qh0kUH-KJKN;8ABqznjCyYF;a;tps ze`sk|GUxg93;NI(<}>v5;fpui=xrZ>b* z6lL|hh3Uz!`A`UgQ20B$W3<>?G5l3_)|dl2pm@naB#q)}WP?@_h+CynU(vwmj>%VN zXh($GUqstzzD=1PppyMUbT zN#iH^K?)g-N7Ta-Qo{nT>-UN=f+mD(2ht+%DQWox^+*z({jQrUrU!C>&^J<$(h)SD zSiBth))`MBLvKl2;xyjkd-u)ZTW~g@H>r{S`W$fPXu`zqX@*ByGX_?8p#ETx+23oQiF^IImWdKSU8lP-})P8amv^LSN8`}x@-$3+yz+2f)kHe^IKExAKSGdE7_ z5*q(j_YxO4#MSTBdY;R-R+{=MlRTons~dgYr>^LUL~7d|+uVJ_hQc?j1$9-K|;YJdfzjLv;!a7m8&r!-5ja zmW?ML9=7KJqNCOVL%KLvg$TX~T4wsnPm?+*=JX*x;L%_FDi-xa{h0Q>GWqts%Y>rbm&WbYCrpOXg_a3=9@X-vh z9}W$C{*S(IYJ#)<=dqMqus4f*_cjFKUybd&%a@Nvvp_1K10N5c>nExm{lImly~=0! zIIEHDo6X9blQ8RY9jw6Jy~K1qu2i;R*TEo~e81@w{RjK?ye8gOzosE}{5l+))7f=F zT#tFjKiP6BY{8Xv5ql9@!!8{UpGqQM<%jmXS^JRQrr27$I#)H3k7Ry3X*PaWI(O_(Iba=@^BXtE;n*9X=bo1o8VtGSGP`ReWY+q zg4E$pL}nUkK%*kFr*^#~FWmWnes7=9kzLi_fAcT2z-(3Dwxx~{SM8cC_hms+{^#2p zBC`aZ*)0Xe0jiEv>(ci@&|0`CWaOt7HpP*>w&sH5)JRIs88@1bvN*h@$ zn@?|dGiKXRmhsAj3T+M?&+(B}A+d_`U{p!{v94Kozb$yor8P~+K=RYhJ(Lmq@;b@f zeq|GYIvj|e7ZxV=veWjZz!%@Gv1&X-WD2BzZK6mIX^vV!p+z0K9`Fyy;9odnZIJBx z`SG6YO;4%dh|o>7w=vUmSIf^U?GPDyg`b3IkL+ZLSp;mVj_BXy5RKC}>4+u5g7&-+ z=fbI9nUKWTe4P-L0^=VcSINKM^=|3wRhGeudI7-M2LKcF zr2ln+12bd9Aw)i%;xdttlS6 zOft1Rm2;o#B>eYiu^EDg7&aRNIi8v?HK*JMts9k?!glezqHCPFiSqt?%KsfXSkNt! zk99fF{j12M1_%@{&TJ)a0Bg|T5Gt;IwyfDYr1n~Yd{i#(mwh9{Ipc7jbWi6kb?1O? zm{bdCUStl?u@W%uC^;-U#lajoKOzU(Va^@|T?xE&V^toES1T_)$7~%uNy<_gjv`iD z;cKipl{2PRovP5-`o>w%5M%Q!mRH0AVWl$|k24?M$MZBBYaRz~8#THA&XJ8c^B44; zYn6z$;w{xeo`U*L$BZ`HnLaE!lq1?evY-(~NE4b;8Qlve*K5=YNNhgrNWc literal 71660 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 N002ovPDHLkV1g=ik5B*r diff --git a/demo/thumbs/filters-007.png b/demo/thumbs/filters-007.png index e1c8f4de45ecb4be935f4c68cdc1ee1d3dd75c8d..8e02e0f93a2893332e246dca5080cffd4a5ad05a 100644 GIT binary patch literal 313264 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

    KGOygKCWc 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 z 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�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

    )~V8bxc_bgIw!m5d<+ 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¬HlozM+ zz=A*GJJnki3yVv!iq|IFeCt-S&Qnk9?q7X1FJ;nSwY?Y`9p>PMl+qL0M2zXVgtMtl%WV1xqr3NJH z0YCxAtzYj}Z%B`5%92#wxc&8Nv7ll1M$g4aTJIsY4Vc*uqhNPA#~P>FElThslUnFflKTt3(|c zqsSb%na?eauu+6Dnir$6!nSrH&i5NX41$iK19EOmHLK@DM_o}qi>0%m>bV3Z@z>-yy{FaP62Xwg{1Gr52Crk&!aV zz-1rP)H?pv>+Oq)b-hE&y{(U{7}+Qcs&(ni070(XHlPK>=A&#UzFi8(-oboiUj6}I^&Q47&!)(`?Ca9O@e&~Atuq@hk@@4_)J zpMe-pe)aRulAm(Re( zHo&H=6yU0Qh*_o%WUA70Gd1(FjtlYhRvNxEmh!;11JW26dR`@CfLMS+{LZ<>-xTuY z=2Yc_eExlUG(K-8p_dwwxke9l4Xcv-La_-v z31969(4%_WX45vu`~pS*wlv zg@KXKlg#^#RNy$f2&hEhL4CNMp&dRZAy0*Ru0{6Y>|plG-|WoNSFBti*W1IMU{qaQ zgM1!9G1cc;#kt~!nHn(%!G}Dshx-1=&i>ij4)> zn>7KIW~)H00B&SKz1}`OIe#Z7mx2&ei}iV0oFNw0CLU&dwmzSEyCr=mcb$$0pq)zp z`*9m~v&u5?GU$r)WfLWgHW?-GjT${7)_uoGm>a=DB@WQ;BeVJ?Q zHS9esRI8+$jXBS8s`2o;P$criY^U5617bT%VIygK6sj&(mYTAqM2x_LW~OTeT1UXa zB}fge4ax(bb}1e0c!t_|TvkpKCkwl&xR-cv+_&6@85u1<(*0t5*PH9Jw;$inE;CBA zSeW+b*WZ4fw&cy+jp&@*h$YrY+x#|+t91zo0d}U1ZcwZJ!2?Dw18 zSHd>`_s?lx%)qYB(tAqqwAfeL3!gWCmBOoWca=LaU{!Ikk+t+itCOhA6d>a#U3!)> zCmN6R4lt^sta1MlLsar|)Q3~^P*h>xD1NqSpj!{Ceet{B)pmb0jO}6qSX73kE=){}bY5N5;AVws> zO~7v+*a-`K$fY20C<$3B8;krDT&H(D!^z^;m*U10NcE9a=@wLRion2_t@Xm zxm+#EunveZ-v`LBum-dmn`{I|--Ve0Ij+v5mB{krNoaRvF|Rt)03bdBm1a%jrkWL_ z%JbZ@uLd`6+Xff+*fJnG-;aB6WNBhno+<15c=PTcIkyR@@c?v%d;2>d!>+4lVlCwv zPyW}`s%URkP~f(S8yhl(c@O1?DG#Mh>QYHS%t*$ES4%b5KyxE1S}XRYVXyWk9YCF1 zYD6PYZ0_bg$-DP36C4%j>$Cz1scb~zev)VR@#7aIVi6;k z?xZbl;}WC{C)^-T(IzvX1=#$*&CIwRYyVr{%w3Sp=H!N9VqJo3bK|RObLV2X{=%Oy z|6&01Bg<*(0Jm#U`lyqef!Efj&vAoxzu6Cn8Je5PttcOA7#O54AM41#YKQ#kxL32U zdHhSZyIie+mIuhZRDgM5fg0AsFI|jG&oenfHS9^cF?vA)?y8+Ly?V*DditqnkXK

    IAI&$lyrYO^{Iu7}_E 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 z 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 w|FnDNd!M!M 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 diff --git a/demo/thumbs/filters-009.png b/demo/thumbs/filters-009.png index ef7c438fe813af281933837d07bc8898c1a5c64d..28bbe6d801b6bfcac4d5172faca583acda6317f0 100644 GIT binary patch literal 226912 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 GU|A!=EZ& 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'XwG$))o>&!Q4 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 z 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 literal 50142 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

    ^qJR@dI5)MYz!<5w(@5 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

    h?a8-6jPl2B;Ar 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%0A;9m9h{JI!ljbU*e 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

    3gh_b~qkO}yHCYMgKRsq`rPeRReJ+UTf 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

    Mv&lqYE&;p%D+C|{ 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 E0~hgBKL7v# literal 0 HcmV?d00001 diff --git a/demo/thumbs/filters-012.png b/demo/thumbs/filters-012.png index f24510cca4811acdd4d5685343b60a9e131a2a08..2d7fe1540a0db946788dd218baff49bb162c5bdf 100644 GIT binary patch literal 342442 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

    !z)p!_8DG@39Qfb_r- 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

    D~a`9Yd#rADT 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

    +

    Particles and physics demos

    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 diff --git a/demo/thumbs/filters-011.png b/demo/thumbs/filters-011.png new file mode 100644 index 0000000000000000000000000000000000000000..9b81c7765fe4492fdda34979e5706b093e2f2062 GIT binary patch literal 152957 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

  • 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

    diff --git a/demo/filters-001.js b/demo/filters-001.js index 51618c980..9d5a2df9e 100644 --- a/demo/filters-001.js +++ b/demo/filters-001.js @@ -26,6 +26,7 @@ let blurFilter = scrawl.makeFilter({ radius: 10, includeAlpha: false, passes: 1, + step: 1, }); @@ -62,6 +63,7 @@ let report = function () { testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} radius: ${blurFilter.radius} + step: ${blurFilter.step} passes: ${blurFilter.passes}`; }; }(); @@ -92,6 +94,7 @@ scrawl.observeAndUpdate({ radius: ['radius', 'round'], passes: ['passes', 'round'], + step: ['step', 'round'], includeRed: ['includeRed', 'boolean'], includeGreen: ['includeGreen', 'boolean'], @@ -108,6 +111,7 @@ scrawl.observeAndUpdate({ // Setup form document.querySelector('#radius').value = 10; document.querySelector('#passes').value = 1; +document.querySelector('#step').value = 1; document.querySelector('#includeRed').options.selectedIndex = 1; document.querySelector('#includeGreen').options.selectedIndex = 1; document.querySelector('#includeBlue').options.selectedIndex = 1; diff --git a/demo/filters-015.html b/demo/filters-015.html index 888823599..39b5d3552 100644 --- a/demo/filters-015.html +++ b/demo/filters-015.html @@ -20,7 +20,7 @@

    Scrawl-canvas v8 - Filters test 015

    -

    Using assets in the filter stream; filter compositing

    +

    Filter blend operation

    @@ -61,13 +61,18 @@

    Using assets in the filter stream; filter compositing

    -
    Opacity
    +
    Offset - X
    +
    + +
    Offset - Y
    +
    + diff --git a/demo/filters-015.js b/demo/filters-015.js index cb6a84e20..62763694a 100644 --- a/demo/filters-015.js +++ b/demo/filters-015.js @@ -67,6 +67,10 @@ scrawl.makeWheel({ strokeStyle: 'yellow', lineWidth: 10, method: 'fillThenDraw', + + delta: { + roll: -0.3, + }, }); @@ -100,8 +104,8 @@ scrawl.makeFilter({ asset: 'iris', - width: 400, - height: 400, + width: 200, + height: 200, copyX: '25%', copyY: 100, @@ -119,10 +123,22 @@ let composeFilter = scrawl.makeFilter({ lineIn: 'star', lineMix: 'source', + offsetX: 30, + offsetY: 30, + compose: 'source-over', }); // Display the filter in a Block entity +scrawl.makeGradient({ + name: 'linear', + endX: '100%', +}) +.updateColor(0, 'blue') +.updateColor(495, 'red') +.updateColor(500, 'yellow') +.updateColor(505, 'red') +.updateColor(999, 'green'); scrawl.makeBlock({ @@ -133,6 +149,8 @@ scrawl.makeBlock({ roll: -20, lineWidth: 10, + fillStyle: 'linear', + lockFillStyleToEntity: true, strokeStyle: 'coral', method: 'fillThenDraw', @@ -188,6 +206,8 @@ scrawl.observeAndUpdate({ destination: ['lineMix', 'raw'], composite: ['compose', 'raw'], opacity: ['opacity', 'float'], + 'offset-x': ['offsetX', 'round'], + 'offset-y': ['offsetY', 'round'], }, }); @@ -196,6 +216,8 @@ document.querySelector('#source').options.selectedIndex = 2; document.querySelector('#destination').options.selectedIndex = 0; document.querySelector('#composite').options.selectedIndex = 0; document.querySelector('#opacity').value = 1; +document.querySelector('#offset-x').value = 30; +document.querySelector('#offset-y').value = 30; // #### Development and testing diff --git a/demo/filters-016.html b/demo/filters-016.html new file mode 100644 index 000000000..074bfec06 --- /dev/null +++ b/demo/filters-016.html @@ -0,0 +1,105 @@ + + + + + + + + Demo Filters 016 + + + + + + +

    Scrawl-canvas v8 - Filters test 016

    +

    Using assets in the filter stream; filter compositing

    + +
    + +
    Blend source
    +
    + +
    + +
    Blend destination
    +
    + +
    + +
    Blend operation
    +
    + +
    + +
    Opacity
    +
    + +
    Offset - X
    +
    + +
    Offset - Y
    +
    + +
    + + + + + +

    + +
    +

    Test purpose

    + +
      +
    • Create a test Picture entity
    • +
    • Create an areaAlpha filter and apply it to the test entity
    • +
    • Update filter attributes and observe the effect they have on the entity
    • +
    + +

    Annotated code

    +
    + + + + + + diff --git a/demo/filters-016.js b/demo/filters-016.js new file mode 100644 index 000000000..3aedcbb77 --- /dev/null +++ b/demo/filters-016.js @@ -0,0 +1,225 @@ +// # Demo Filters 016 +// Filter blend operation + +// [Run code](../../demo/filters-016.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +canvas.setBase({ + compileOrder: 1, +}); + +// Create the assets +scrawl.importDomImage('.flowers'); + +canvas.buildCell({ + + name: 'star-cell', + dimensions: [400, 400], + shown: false, +}); + +scrawl.makeStar({ + + name: 'my-star', + group: 'star-cell', + + radius1: 200, + radius2: 100, + + roll: 60, + + points: 4, + + start: ['center', 'center'], + handle: ['center', 'center'], + + fillStyle: 'blue', + strokeStyle: 'red', + lineWidth: 10, + method: 'fillThenDraw', +}); + +canvas.buildCell({ + + name: 'wheel-cell', + dimensions: [400, 400], + shown: false, +}); + +scrawl.makeWheel({ + + name: 'my-wheel', + group: 'wheel-cell', + + radius: 150, + + startAngle: 30, + endAngle: -30, + includeCenter: true, + + start: ['center', 'center'], + handle: ['center', 'center'], + + fillStyle: 'green', + strokeStyle: 'yellow', + lineWidth: 10, + method: 'fillThenDraw', + + delta: { + roll: -0.3, + }, +}); + + +// Create the filters +scrawl.makeFilter({ + + name: 'star-filter', + method: 'image', + + asset: 'star-cell', + + width: 400, + height: 400, + + copyWidth: 400, + copyHeight: 400, + + lineOut: 'star', + +}).clone({ + + name: 'wheel-filter', + asset: 'wheel-cell', + lineOut: 'wheel', +}); + +scrawl.makeFilter({ + + name: 'flower-filter', + method: 'image', + + asset: 'iris', + + width: 200, + height: 200, + + copyX: '25%', + copyY: 100, + copyWidth: '50%', + copyHeight: 200, + + lineOut: 'flower', +}); + +let composeFilter = scrawl.makeFilter({ + + name: 'block-filter', + method: 'blend', + + lineIn: 'source', + lineMix: 'star', + + offsetX: 30, + offsetY: 30, + + compose: 'normal', +}); + +// Display the filter in a Block entity + +scrawl.makeGradient({ + name: 'linear', + endX: '100%', +}) +.updateColor(0, 'blue') +.updateColor(495, 'red') +.updateColor(500, 'yellow') +.updateColor(505, 'red') +.updateColor(999, 'green'); + +scrawl.makeBlock({ + + name: 'display-block', + start: ['center', 'center'], + handle: ['center', 'center'], + dimensions: ['90%', '90%'], + roll: -20, + + lineWidth: 10, + fillStyle: 'linear', + lockFillStyleToEntity: true, + strokeStyle: 'coral', + method: 'fillThenDraw', + + // Load in the three image filters, then the compose filter to combine two of them + // + the results display in a Block entity! + filters: ['star-filter', 'wheel-filter', 'flower-filter', 'block-filter'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: composeFilter, + + useNativeListener: true, + preventDefault: true, + + updates: { + + source: ['lineIn', 'raw'], + destination: ['lineMix', 'raw'], + blend: ['blend', 'raw'], + opacity: ['opacity', 'float'], + 'offset-x': ['offsetX', 'round'], + 'offset-y': ['offsetY', 'round'], + }, +}); + +// Setup form +document.querySelector('#source').options.selectedIndex = 0; +document.querySelector('#destination').options.selectedIndex = 2; +document.querySelector('#blend').options.selectedIndex = 0; +document.querySelector('#opacity').value = 1; +document.querySelector('#offset-x').value = 30; +document.querySelector('#offset-y').value = 30; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/index.html b/demo/index.html index 653e7a4ab..8cd1cde68 100644 --- a/demo/index.html +++ b/demo/index.html @@ -217,7 +217,7 @@

    Canvas tests

    Filters functionality tests

    -

    To be aware: CSS and SVG based filters (see demos Filters 011 to 015, below) are not currently supported by all browsers (specifically: Safari); Scrawl-canvas native filters (demos Filters 001 to 010) should work in all environments that support Web Worker functionality.

    +

    To be aware: CSS and SVG based filters (see demos Filters 051 onwards, below) are not currently supported by all browsers (specifically: Safari); Scrawl-canvas native filters (demos Filters below 050) should work in all environments that support Web Worker functionality.

    @@ -263,6 +263,12 @@

    Filters functionality tests

    Filters 014 - Parameters for: areaAlpha filter
    +
    +
    Filters 015 - Using assets in the filter stream; filter compositing
    + +
    +
    Filters 016 - Filter blend operation
    +
    Filters 051 - Canvas engine filter strings (based on CSS filters)
    diff --git a/source/factory/filter.js b/source/factory/filter.js index c11ac89da..620cf46d3 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -180,6 +180,7 @@ let defaultAttributes = { passes: 1, processVertical: true, processHorizontal: true, + step: 1, // The `matrix` method requires a weights attribute - an array of 9 numbers (also known as a __kernel__) in the following format: @@ -329,6 +330,21 @@ P.setDelta = function (items = {}) { const setActionsArray = { + alphaToChannels: function (f) { + f.actions = [{ + action: 'alpha-to-channels', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + opacity: (f.opacity != null) ? f.opacity : 1, + includeRed: (f.includeRed != null) ? f.includeRed : true, + includeGreen: (f.includeGreen != null) ? f.includeGreen : true, + includeBlue: (f.includeBlue != null) ? f.includeBlue : true, + excludeRed: (f.excludeRed != null) ? f.excludeRed : true, + excludeGreen: (f.excludeGreen != null) ? f.excludeGreen : true, + excludeBlue: (f.excludeBlue != null) ? f.excludeBlue : true, + }]; + }, + areaAlpha: function (f) { f.actions = [{ action: 'area-alpha', @@ -345,6 +361,19 @@ const setActionsArray = { }]; }, + blend: function (f) { + f.actions = [{ + action: 'blend', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + lineMix: (f.lineMix != null) ? f.lineMix : '', + blend: (f.blend != null) ? f.blend : 'normal', + offsetX: (f.offsetX != null) ? f.offsetX : 0, + offsetY: (f.offsetY != null) ? f.offsetY : 0, + opacity: (f.opacity != null) ? f.opacity : 1, + }]; + }, + blue: function (f) { f.actions = [{ action: 'average-channels', @@ -370,7 +399,7 @@ const setActionsArray = { processVertical: (f.processVertical != null) ? f.processVertical : true, radius: (f.radius != null) ? f.radius : 1, passes: (f.passes != null) ? f.passes : 1, - isGaussian: false, + step: (f.step != null) ? f.step : 1, }]; }, @@ -426,6 +455,18 @@ const setActionsArray = { }]; }, + channelsToAlpha: function (f) { + f.actions = [{ + action: 'channels-to-alpha', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + opacity: (f.opacity != null) ? f.opacity : 1, + includeRed: (f.includeRed != null) ? f.includeRed : true, + includeGreen: (f.includeGreen != null) ? f.includeGreen : true, + includeBlue: (f.includeBlue != null) ? f.includeBlue : true, + }]; + }, + chroma: function (f) { f.actions = [{ action: 'chroma', @@ -457,6 +498,8 @@ const setActionsArray = { lineOut: (f.lineOut != null) ? f.lineOut : '', lineMix: (f.lineMix != null) ? f.lineMix : '', compose: (f.compose != null) ? f.compose : 'source-over', + offsetX: (f.offsetX != null) ? f.offsetX : 0, + offsetY: (f.offsetY != null) ? f.offsetY : 0, opacity: (f.opacity != null) ? f.opacity : 1, }]; }, @@ -479,10 +522,10 @@ const setActionsArray = { lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - mWidth: 3, - mHeight: 3, - mX: 1, - mY: 1, + width: 3, + height: 3, + offsetX: 1, + offsetY: 1, includeRed: true, includeGreen: true, includeBlue: true, @@ -497,10 +540,10 @@ const setActionsArray = { lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - mWidth: 3, - mHeight: 3, - mX: 1, - mY: 1, + width: 3, + height: 3, + offsetX: 1, + offsetY: 1, includeRed: true, includeGreen: true, includeBlue: true, @@ -522,24 +565,6 @@ const setActionsArray = { }]; }, - gaussianBlur: function (f) { - f.actions = [{ - action: 'blur', - lineIn: (f.lineIn != null) ? f.lineIn : '', - lineOut: (f.lineOut != null) ? f.lineOut : '', - opacity: (f.opacity != null) ? f.opacity : 1, - includeRed: (f.includeRed != null) ? f.includeRed : true, - includeGreen: (f.includeGreen != null) ? f.includeGreen : true, - includeBlue: (f.includeBlue != null) ? f.includeBlue : true, - includeAlpha: (f.includeAlpha != null) ? f.includeAlpha : false, - processHorizontal: (f.processHorizontal != null) ? f.processHorizontal : true, - processVertical: (f.processVertical != null) ? f.processVertical : true, - radius: (f.radius != null) ? f.radius : 1, - passes: (f.passes != null) ? f.passes : 1, - isGaussian: true, - }]; - }, - gray: function (f) { f.actions = [{ action: 'average-channels', @@ -617,10 +642,10 @@ const setActionsArray = { lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - mWidth: 3, - mHeight: 3, - mX: 1, - mY: 1, + width: 3, + height: 3, + offsetX: 1, + offsetY: 1, includeRed: (f.includeRed != null) ? f.includeRed : true, includeGreen: (f.includeGreen != null) ? f.includeGreen : true, includeBlue: (f.includeBlue != null) ? f.includeBlue : true, @@ -635,10 +660,10 @@ const setActionsArray = { lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - mWidth: 5, - mHeight: 5, - mX: 2, - mY: 2, + width: 5, + height: 5, + offsetX: 2, + offsetY: 2, includeRed: (f.includeRed != null) ? f.includeRed : true, includeGreen: (f.includeGreen != null) ? f.includeGreen : true, includeBlue: (f.includeBlue != null) ? f.includeBlue : true, @@ -758,10 +783,10 @@ const setActionsArray = { lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - mWidth: 3, - mHeight: 3, - mX: 1, - mY: 1, + width: 3, + height: 3, + offsetX: 1, + offsetY: 1, includeRed: true, includeGreen: true, includeBlue: true, diff --git a/source/mixin/filter.js b/source/mixin/filter.js index f3d6afe98..7b853eb13 100644 --- a/source/mixin/filter.js +++ b/source/mixin/filter.js @@ -219,8 +219,8 @@ export default function (P = {}) { engine = cell.engine, canvas = cell.element; - canvas.width = width; - canvas.height = height; + canvas.width = destWidth; + canvas.height = destHeight; engine.setTransform(1, 0, 0, 1, 0, 0); engine.globalCompositeOperation = 'source-over'; @@ -228,9 +228,9 @@ export default function (P = {}) { let src = img.source || img.element; - engine.drawImage(src, copyX, copyY, copyWidth, copyHeight, 0, 0, width, height); + engine.drawImage(src, copyX, copyY, copyWidth, copyHeight, 0, 0, destWidth, destHeight); - obj.assetData = engine.getImageData(0, 0, width, height); + obj.assetData = engine.getImageData(0, 0, destWidth, destHeight); releaseCell(cell); } diff --git a/source/worker/new-filter.js b/source/worker/new-filter.js index 4e7db7d51..0b2fc88fe 100644 --- a/source/worker/new-filter.js +++ b/source/worker/new-filter.js @@ -640,8 +640,8 @@ const theBigActionsObject = { for (let i = 0; i < len; i++) { outR[i] = (includeRed) ? inA[i] : ((excludeRed) ? 0 : inR[i]); - outR[i] = (includeGreen) ? inA[i] : ((excludeGreen) ? 0 : inG[i]); - outR[i] = (includeBlue) ? inA[i] : ((excludeBlue) ? 0 : inB[i]); + outG[i] = (includeGreen) ? inA[i] : ((excludeGreen) ? 0 : inG[i]); + outB[i] = (includeBlue) ? inA[i] : ((excludeBlue) ? 0 : inB[i]); } outA.fill(255, 0, outA.length - 1); @@ -751,245 +751,359 @@ const theBigActionsObject = { let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); - const copyPixel = function (pos, channel) { + const copyPixel = function (fromPos, toPos, channel) { - outR[pos] = channel.r[pos]; - outG[pos] = channel.g[pos]; - outB[pos] = channel.b[pos]; - outA[pos] = channel.a[pos]; + outR[toPos] = channel.r[fromPos]; + outG[toPos] = channel.g[fromPos]; + outB[toPos] = channel.b[fromPos]; + outA[toPos] = channel.a[fromPos]; }; - const calculateOverPixel = function (pos, sR, sG, sB, sA, dR, dG, dB, dA) { + const getLinePositions = function (x, y) { - const calcPixel = function (aCol, aAlp, bCol, bAlp) { + let ix = x, + iy = y, + mx = x - offsetX, + my = y - offsetY; - return ((aCol * aAlp) + ((bCol * bAlp) * (1 - aAlp))) / (aAlp + (bAlp * (1 - aAlp))); - } + let mPos = -1, + iPos = (iy * iWidth) + ix; - let sUnit = sA / 255, - dUnit = dA / 255; + if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; - outR[pos] = calcPixel(sR, sUnit, dR, dUnit); - outG[pos] = calcPixel(sG, sUnit, dG, dUnit); - outB[pos] = calcPixel(sB, sUnit, dB, dUnit); + return [iPos, mPos]; + }; - outA[pos] = (sUnit + (dUnit * (1 - sUnit))) * 255; + const getChannelNormals = function (i, m) { + + return [ + input.r[i] / 255, + input.g[i] / 255, + input.b[i] / 255, + input.a[i] / 255, + mix.r[m] / 255, + mix.g[m] / 255, + mix.b[m] / 255, + mix.a[m] / 255 + ]; }; - switch (compose) { + const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255; - case 'multiply' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - outR[i] = ((inR[i] / 255) * (mixR[i] / 255)) * 255; - outG[i] = ((inG[i] / 255) * (mixG[i] / 255)) * 255; - outB[i] = ((inB[i] / 255) * (mixB[i] / 255)) * 255; - outA[i] = inA[i]; + switch (blend) { + + case 'color-burn' : + const colorburnCalc = (din, dmix) => { + if (dmix == 1) return 255; + else if (din == 0) return 0; + return (1 - Math.min(1, ((1 - dmix) / din ))) * 255; + }; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = colorburnCalc(dinR, dmixR); + outG[iPos] = colorburnCalc(dinG, dmixG); + outB[iPos] = colorburnCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'screen' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - - let nInR = inR[i] / 255, - nMixR = mixR[i] / 255, - nInG = inG[i] / 255, - nMixG = mixG[i] / 255, - nInB = inB[i] / 255, - nMixB = mixB[i] / 255; - - outR[i] = (nMixR + (nInR - (nMixR * nInR))) * 255; - outG[i] = (nMixG + (nInG - (nMixG * nInG))) * 255; - outB[i] = (nMixB + (nInB - (nMixB * nInB))) * 255; - outA[i] = inA[i]; + case 'color-dodge' : + const colordodgeCalc = (din, dmix) => { + if (dmix == 0) return 0; + else if (din == 1) return 255; + return Math.min(1, (dmix / (1 - din))) * 255; + }; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = colordodgeCalc(dinR, dmixR); + outG[iPos] = colordodgeCalc(dinG, dmixG); + outB[iPos] = colordodgeCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'overlay' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - - let nInR = inR[i] / 255, - nMixR = mixR[i] / 255, - nInG = inG[i] / 255, - nMixG = mixG[i] / 255, - nInB = inB[i] / 255, - nMixB = mixB[i] / 255; - - outR[i] = (nInR >= 0.5) ? (nInR * nMixR) * 255 : (nMixR + (nInR - (nMixR * nInR))) * 255; - outG[i] = (nInG >= 0.5) ? (nInG * nMixG) * 255 : (nMixG + (nInG - (nMixG * nInG))) * 255; - outB[i] = (nInB >= 0.5) ? (nInB * nMixB) * 255 : (nMixB + (nInB - (nMixB * nInB))) * 255; - outA[i] = inA[i]; + case 'darken' : + const darkenCalc = (din, dmix) => (din < dmix) ? din : dmix; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + outR[iPos] = darkenCalc(inR[iPos], mixR[mPos]); + outG[iPos] = darkenCalc(inG[iPos], mixG[mPos]); + outB[iPos] = darkenCalc(inB[iPos], mixB[mPos]); + outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255); + } } - else copyPixel(i, mix); } break; - case 'darken' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - outR[i] = (inR[i] < mixR[i]) ? inR[i] : mixR[i]; - outG[i] = (inG[i] < mixG[i]) ? inG[i] : mixG[i]; - outB[i] = (inB[i] < mixB[i]) ? inB[i] : mixB[i]; - outA[i] = inA[i]; + case 'difference' : + const differenceCalc = (din, dmix) => Math.abs(din - dmix) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = differenceCalc(dinR, dmixR); + outG[iPos] = differenceCalc(dinG, dmixG); + outB[iPos] = differenceCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'lighten' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - outR[i] = (inR[i] > mixR[i]) ? inR[i] : mixR[i]; - outG[i] = (inG[i] > mixG[i]) ? inG[i] : mixG[i]; - outB[i] = (inB[i] > mixB[i]) ? inB[i] : mixB[i]; - outA[i] = inA[i]; + case 'exclusion' : + const exclusionCalc = (din, dmix) => (din + dmix - (2 * dmix * din)) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = exclusionCalc(dinR, dmixR); + outG[iPos] = exclusionCalc(dinG, dmixG); + outB[iPos] = exclusionCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'color-dodge' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - - let nInR = inR[i] / 255, - nMixR = mixR[i] / 255, - nInG = inG[i] / 255, - nMixG = mixG[i] / 255, - nInB = inB[i] / 255, - nMixB = mixB[i] / 255; + case 'hard-light' : + const hardlightCalc = (din, dmix) => (din <= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - if (nMixR == 0) outR[i] = 0; - else if (nInR == 1) outR[i] = 255; - else outR[i] = Math.min(1, (nMixR / (1 - nInR))) * 255; + let [iPos, mPos] = getLinePositions(x, y); - if (nMixG == 0) outG[i] = 0; - else if (nInG == 1) outG[i] = 255; - else outG[i] = Math.min(1, (nMixG / (1 - nInG))) * 255; + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - if (nMixB == 0) outB[i] = 0; - else if (nInB == 1) outB[i] = 255; - else outB[i] = Math.min(1, (nMixB / (1 - nInB))) * 255; + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - outA[i] = inA[i]; + outR[iPos] = hardlightCalc(dinR, dmixR); + outG[iPos] = hardlightCalc(dinG, dmixG); + outB[iPos] = hardlightCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'color-burn' : - for (let i = 0; i < len; i++) { - if (inA[i]) { + case 'lighten' : + const lightenCalc = (din, dmix) => (din > dmix) ? din : dmix; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - let nInR = inR[i] / 255, - nMixR = mixR[i] / 255, - nInG = inG[i] / 255, - nMixG = mixG[i] / 255, - nInB = inB[i] / 255, - nMixB = mixB[i] / 255; + let [iPos, mPos] = getLinePositions(x, y); - if (nMixR == 1) outR[i] = 255; - else if (nInR == 0) outR[i] = 0; - else outR[i] = (1 - Math.min(1, ((1 - nMixR) / nInR ))) * 255; + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - if (nMixG == 1) outG[i] = 255; - else if (nInG == 0) outG[i] = 0; - else outG[i] = (1 - Math.min(1, ((1 - nMixG) / nInG ))) * 255; + outR[iPos] = lightenCalc(inR[iPos], mixR[mPos]); + outG[iPos] = lightenCalc(inG[iPos], mixG[mPos]); + outB[iPos] = lightenCalc(inB[iPos], mixB[mPos]); + outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255); + } + } + } + break; - if (nMixB == 1) outB[i] = 255; - else if (nInB == 0) outB[i] = 0; - else outB[i] = (1 - Math.min(1, ((1 - nMixB) / nInB ))) * 255; + case 'lighter' : + const lighterCalc = (din, dmix) => (din + dmix) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - outA[i] = inA[i]; + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = lighterCalc(dinR, dmixR); + outG[iPos] = lighterCalc(dinG, dmixG); + outB[iPos] = lighterCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'hard-light' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - - let nInR = inR[i] / 255, - nMixR = mixR[i] / 255, - nInG = inG[i] / 255, - nMixG = mixG[i] / 255, - nInB = inB[i] / 255, - nMixB = mixB[i] / 255; - - outR[i] = (nInR <= 0.5) ? (nInR * nMixR) * 255 : (nMixR + (nInR - (nMixR * nInR))) * 255; - outG[i] = (nInG <= 0.5) ? (nInG * nMixG) * 255 : (nMixG + (nInG - (nMixG * nInG))) * 255; - outB[i] = (nInB <= 0.5) ? (nInB * nMixB) * 255 : (nMixB + (nInB - (nMixB * nInB))) * 255; - outA[i] = inA[i]; + case 'multiply' : + const multiplyCalc = (din, dmix) => din * dmix * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = multiplyCalc(dinR, dmixR); + outG[iPos] = multiplyCalc(dinG, dmixG); + outB[iPos] = multiplyCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'soft-light' : - copyOver(input, output); + case 'overlay' : + const overlayCalc = (din, dmix) => (din >= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = overlayCalc(dinR, dmixR); + outG[iPos] = overlayCalc(dinG, dmixG); + outB[iPos] = overlayCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } break; - case 'difference' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - outR[i] = Math.abs(inR[i] - mixR[i]); - outG[i] = Math.abs(inG[i] - mixG[i]); - outB[i] = Math.abs(inB[i] - mixB[i]); - outA[i] = inA[i]; + case 'screen' : + const screenCalc = (din, dmix) => (dmix + (din - (dmix * din))) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = screenCalc(dinR, dmixR); + outG[iPos] = screenCalc(dinG, dmixG); + outB[iPos] = screenCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'exclusion' : - for (let i = 0; i < len; i++) { - if (inA[i]) { - - let nInR = inR[i] / 255, - nMixR = mixR[i] / 255, - nInG = inG[i] / 255, - nMixG = mixG[i] / 255, - nInB = inB[i] / 255, - nMixB = mixB[i] / 255; - - outR[i] = (nInR + nMixR - (2 * nMixR * nInR)) * 255; - outG[i] = (nInG + nMixG - (2 * nMixG * nInG)) * 255; - outB[i] = (nInB + nMixB - (2 * nMixB * nInB)) * 255; - outA[i] = inA[i]; + case 'soft-light' : + const softlightCalc = (din, dmix) => { + + let d = (dmix <= 0.25) ? + ((((16 * dmix) - 12) * dmix) + 4) * dmix : + Math.sqrt(dmix); + + if (din <= 0.5) return (dmix - ((1 - (2 * din)) * dmix * (1 - dmix))) * 255; + return (dmix + (((2 * din) - 1) * (d - dmix))) * 255; + }; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + outR[iPos] = softlightCalc(dinR, dmixR); + outG[iPos] = softlightCalc(dinG, dmixG); + outB[iPos] = softlightCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else copyPixel(i, mix); } break; - case 'hue' : + case 'color' : copyOver(input, output); break; - case 'saturation' : + case 'hue' : copyOver(input, output); break; - case 'color' : + case 'luminosity' : copyOver(input, output); break; - case 'luminosity' : + case 'saturation' : copyOver(input, output); break; - case 'normal' : default: - for (let i = 0; i < len; i++) { - if (inA[i] == 1) copyPixel(i, input); - else if (inA[i] > 0) calculateOverPixel(i, inR[i], inG[i], inB[i], inA[i], mixR[i], mixG[i], mixB[i], mixA[i]); - else if (mixA[i] > 0) copyPixel(i, mix); + const normalCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = normalCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = normalCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = normalCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = alphaCalc(dinA, dmixA) + } + } } } if (lineOut) processResults(output, work, 1 - opacity); @@ -1002,7 +1116,7 @@ const theBigActionsObject = { let len = input.r.length; - let {opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, isGaussian, lineOut} = requirements; + let {opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, step, lineOut} = requirements; let horizontalBlurGrid, verticalBlurGrid; @@ -1020,18 +1134,18 @@ const theBigActionsObject = { const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; - const getValue = function (flag, gridStore, step, holdChannel, alpha) { + const getValue = function (flag, gridStore, pos, holdChannel, alpha) { if (flag) { - let h = gridStore[step], + let h = gridStore[pos], l = h.length, counter = 0, total = 0; if (alpha) { - for (let t = 0; t < l; t++) { + for (let t = 0; t < l; t += step) { if (alpha[h[t]]) { @@ -1046,7 +1160,7 @@ const theBigActionsObject = { } return total / l; } - return holdChannel[step]; + return holdChannel[pos]; } if (!passes || (!processHorizontal && !processVertical)) copyOver(input, output); @@ -1225,31 +1339,6 @@ const theBigActionsObject = { let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); - const copyPixel = function (pos, channel) { - - outR[pos] = channel.r[pos]; - outG[pos] = channel.g[pos]; - outB[pos] = channel.b[pos]; - outA[pos] = channel.a[pos]; - }; - - const calculateOverPixel = function (pos, sR, sG, sB, sA, dR, dG, dB, dA) { - - const calcPixel = function (aCol, aAlp, bCol, bAlp) { - - return ((aCol * aAlp) + ((bCol * bAlp) * (1 - aAlp))) / (aAlp + (bAlp * (1 - aAlp))); - } - - let sUnit = sA / 255, - dUnit = dA / 255; - - outR[pos] = calcPixel(sR, sUnit, dR, dUnit); - outG[pos] = calcPixel(sG, sUnit, dG, dUnit); - outB[pos] = calcPixel(sB, sUnit, dB, dUnit); - - outA[pos] = (sUnit + (dUnit * (1 - sUnit))) * 255; - }; - switch (compose) { case 'source-only' : @@ -1257,21 +1346,41 @@ const theBigActionsObject = { break; case 'source-atop' : + const sAtopCalc = (Cs, As, Cb, Ab) => (As * Cs * Ab) + (Ab * Cb * (1 - As)); for (let i = 0; i < len; i++) { - if (inA[i] > 0 && mixA[i] > 0) copyPixel(i, input); - else if (mixA[i] > 0) copyPixel(i, mix); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = sAtopCalc(inR[i], dinA, mixR[i], dmixA); + outG[i] = sAtopCalc(inG[i], dinA, mixG[i], dmixA); + outB[i] = sAtopCalc(inB[i], dinA, mixB[i], dmixA); + outA[i] = ((dinA * dmixA) + (dmixA * (1 - dinA))) * 255; } break; case 'source-in' : + const sInCalc = (Cs, As, Ab) => As * Cs * Ab; for (let i = 0; i < len; i++) { - if (inA[i] > 0 && mixA[i] > 0) copyPixel(i, input); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = sInCalc(inR[i], dinA, dmixA); + outG[i] = sInCalc(inG[i], dinA, dmixA); + outB[i] = sInCalc(inB[i], dinA, dmixA); + outA[i] = dinA * dmixA * 255; } break; case 'source-out' : + const sOutCalc = (Cs, As, Ab) => As * Cs * (1 - Ab); for (let i = 0; i < len; i++) { - if (inA[i] > 0 && mixA[i] == 0) copyPixel(i, input); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = sOutCalc(inR[i], dinA, dmixA); + outG[i] = sOutCalc(inG[i], dinA, dmixA); + outB[i] = sOutCalc(inB[i], dinA, dmixA); + outA[i] = dinA * (1 - dmixA) * 255; } break; @@ -1280,29 +1389,54 @@ const theBigActionsObject = { break; case 'destination-atop' : + const dAtopCalc = (Cs, As, Cb, Ab) => (As * Cs * (1 - Ab)) + (Ab * Cb * As); for (let i = 0; i < len; i++) { - if (inA[i] > 0 && mixA[i] > 0) copyPixel(i, mix); - else if (inA[i] > 0) copyPixel(i, input); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = dAtopCalc(inR[i], dinA, mixR[i], dmixA); + outG[i] = dAtopCalc(inG[i], dinA, mixG[i], dmixA); + outB[i] = dAtopCalc(inB[i], dinA, mixB[i], dmixA); + outA[i] = ((dinA * (1 - dmixA)) + (dmixA * dinA)) * 255; } break; case 'destination-over' : + const dOverCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); for (let i = 0; i < len; i++) { - if (mixA[i] == 1) copyPixel(i, mix); - else if (mixA[i] > 0) calculateOverPixel(i, mixR[i], mixG[i], mixB[i], mixA[i], inR[i], inG[i], inB[i], inA[i]); - else if (inA[i] > 0) copyPixel(i, input); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = dOverCalc(mixR[i], dmixA, inR[i], dinA); + outG[i] = dOverCalc(mixG[i], dmixA, inG[i], dinA); + outB[i] = dOverCalc(mixB[i], dmixA, inB[i], dinA); + outA[i] = (dmixA + (dinA * (1 - dmixA))) * 255; } break; case 'destination-in' : + const dInCalc = (Cs, As, Ab) => As * Cs * Ab; for (let i = 0; i < len; i++) { - if (inA[i] > 0 && mixA[i] > 0) copyPixel(i, mix); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = dInCalc(mixR[i], dmixA, dinA); + outG[i] = dInCalc(mixG[i], dmixA, dinA); + outB[i] = dInCalc(mixB[i], dmixA, dinA); + outA[i] = dinA * dmixA * 255; } break; case 'destination-out' : + const dOutCalc = (Cb, As, Ab) => Ab * Cb * (1 - As); for (let i = 0; i < len; i++) { - if (inA[i] == 0 && mixA[i] > 0) copyPixel(i, mix); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = dOutCalc(mixR[i], dinA, dmixA); + outG[i] = dOutCalc(mixG[i], dinA, dmixA); + outB[i] = dOutCalc(mixB[i], dinA, dmixA); + outA[i] = dmixA * (1 - dinA) * 255; } break; @@ -1310,29 +1444,29 @@ const theBigActionsObject = { break; case 'xor' : + const xorCalc = (Cs, As, Cb, Ab) => (As * Cs * (1 - Ab)) + (Ab * Cb * (1 - As)); for (let i = 0; i < len; i++) { - if (inA[i] > 0 && mixA[i] == 0) copyPixel(i, input); - else if (inA[i] == 0 && mixA[i] > 0) copyPixel(i, mix); - } - break; + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; - case 'lighter' : - for (let i = 0; i < len; i++) { - outR[i] = inR[i] + mixR[i]; - outG[i] = inG[i] + mixG[i]; - outB[i] = inB[i] + mixB[i]; - outA[i] = inA[i] + mixA[i]; + outR[i] = xorCalc(inR[i], dinA, mixR[i], dmixA); + outG[i] = xorCalc(inG[i], dinA, mixG[i], dmixA); + outB[i] = xorCalc(inB[i], dinA, mixB[i], dmixA); + outA[i] = ((dinA * (1 - dmixA)) + (dmixA * (1 - dinA))) * 255; } break; - // case 'source-over' : default: + const sOverCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); for (let i = 0; i < len; i++) { - if (inA[i] == 1) copyPixel(i, input); - else if (inA[i] > 0) calculateOverPixel(i, inR[i], inG[i], inB[i], inA[i], mixR[i], mixG[i], mixB[i], mixA[i]); - else if (mixA[i] > 0) copyPixel(i, mix); + let dinA = inA[i] / 255, + dmixA = mixA[i] / 255; + + outR[i] = sOverCalc(inR[i], dinA, mixR[i], dmixA); + outG[i] = sOverCalc(inG[i], dinA, mixG[i], dmixA); + outB[i] = sOverCalc(inB[i], dinA, mixB[i], dmixA); + outA[i] = (dinA + (dmixA * (1 - dinA))) * 255; } - // break; } if (lineOut) processResults(output, work, 1 - opacity); else processResults(work, output, opacity); @@ -1451,21 +1585,21 @@ const theBigActionsObject = { let len = input.r.length; - let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, mWidth, mHeight, mX, mY, weights, lineOut} = requirements; + let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, width, height, offsetX, offsetY, weights, lineOut} = requirements; // if (grid == null) { - if (mWidth == null || mWidth < 1) mWidth = 3; - if (mHeight == null || mHeight < 1) mHeight = 3; - if (mX == null || mX < 0) mX = 1; - if (mY == null || mY < 0) mY = 1; + if (width == null || width < 1) width = 3; + if (height == null || height < 1) height = 3; + if (offsetX == null || offsetX < 0) offsetX = 1; + if (offsetY == null || offsetY < 0) offsetY = 1; - grid = buildMatrixGrid(mWidth, mHeight, mX, mY, input.a); + grid = buildMatrixGrid(width, height, offsetX, offsetY, input.a); // } if (weights == null) { - weights = [].fill(0, 0, (mWidth * mHeight) - 1); + weights = [].fill(0, 0, (width * height) - 1); weights[Math.floor(weights.length / 2) + 1] = 1; } From 75e95e86a22a9115463758e31730ada0527ad5fd Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Sat, 16 Jan 2021 14:56:30 +0000 Subject: [PATCH 09/28] initial work on filter blend and composition completed --- demo/filters-015.html | 2 +- demo/filters-016.html | 2 +- demo/thumbs/filters-015.webp | Bin 0 -> 24408 bytes demo/thumbs/filters-016.webp | Bin 0 -> 23958 bytes source/worker/new-filter.js | 516 +++++++++++++++++++++++++++++------ 5 files changed, 432 insertions(+), 88 deletions(-) create mode 100644 demo/thumbs/filters-015.webp create mode 100644 demo/thumbs/filters-016.webp diff --git a/demo/filters-015.html b/demo/filters-015.html index 39b5d3552..c454752b1 100644 --- a/demo/filters-015.html +++ b/demo/filters-015.html @@ -20,7 +20,7 @@

    Scrawl-canvas v8 - Filters test 015

    -

    Filter blend operation

    +

    Using assets in the filter stream; filter compositing

    diff --git a/demo/filters-016.html b/demo/filters-016.html index 074bfec06..c5eb1aba6 100644 --- a/demo/filters-016.html +++ b/demo/filters-016.html @@ -20,7 +20,7 @@

    Scrawl-canvas v8 - Filters test 016

    -

    Using assets in the filter stream; filter compositing

    +

    Filter blend operation

    diff --git a/demo/thumbs/filters-015.webp b/demo/thumbs/filters-015.webp new file mode 100644 index 0000000000000000000000000000000000000000..4bce7cda7ebd8e5d3e770686c8038429a544689c GIT binary patch literal 24408 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

    UYf2fi7j89#bE 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 PPX}m-4R(nE;CTE$t`dEh literal 0 HcmV?d00001 diff --git a/source/worker/new-filter.js b/source/worker/new-filter.js index 0b2fc88fe..174cba4a7 100644 --- a/source/worker/new-filter.js +++ b/source/worker/new-filter.js @@ -790,6 +790,134 @@ const theBigActionsObject = { const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255; +/* // Lum(C) = 0.3 x Cred + 0.59 x Cgreen + 0.11 x Cblue + const getLuminosity = (r, g, b) => (0.3 * r) + (0.59 * g) + (0.11 * b); + + // SetLum(C, l) + // d = l - Lum(C) + // Cred = Cred + d + // Cgreen = Cgreen + d + // Cblue = Cblue + d + // return ClipColor(C) + const setLuminosity = (r, g, b, l) => { + + let d = l - getLuminosity(r, g, b); + + r += d; + g += d; + b += d; + + return clipColor(r, g, b); + }; + + // ClipColor(C) + // L = Lum(C) + // n = min(Cred, Cgreen, Cblue) + // x = max(Cred, Cgreen, Cblue) + // if(n < 0) + // C = L + (((C - L) * L) / (L - n)) + + // if(x > 1) + // C = L + (((C - L) * (1 - L)) / (x - L)) + + // return C + const clipColor = (r, g, b) => { + + let l = getLuminosity(r, g, b); + + let n = Math.min(r, g, b), + x = Math.max(r, g, b); + + if (n < 0) { + r = l + (((r - l) * l) / (l - n)); + g = l + (((g - l) * l) / (l - n)); + b = l + (((b - l) * l) / (l - n)); + } + + if (x > 1) { + r = l + (((r - l) * (1 - l)) / (x - l)); + g = l + (((g - l) * (1 - l)) / (x - l)); + b = l + (((b - l) * (1 - l)) / (x - l)); + } + + return [r, g, b]; + } + + // Sat(C) = max(Cred, Cgreen, Cblue) - min(Cred, Cgreen, Cblue) + const getSaturation = (r, g, b) => Math.max(r, g, b) - Math.min(r, g, b); +*/ + + const getHSLfromRGB = function (dr, dg, db) { + + // let dr = r / 255, + // dg = g / 255, + // db = b / 255; + + let minColor = Math.min(dr, dg, db), + maxColor = Math.max(dr, dg, db); + + let lum = (minColor + maxColor) / 2; + + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); + else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); + else hue = 4 + ((dr - dg) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; + }; + + const getRGBfromHSL = function (h, s, l) { + + if (!s) { + + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } + + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + let r = calculator(tr, tempLum1, tempLum2) * 255, + g = calculator(tg, tempLum1, tempLum2) * 255, + b = calculator(tb, tempLum1, tempLum2) * 255; + + return [r, g, b]; + }; + switch (blend) { case 'color-burn' : @@ -805,6 +933,7 @@ const theBigActionsObject = { if (mPos < 0) copyPixel(iPos, iPos, input); else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); else { let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); @@ -831,6 +960,7 @@ const theBigActionsObject = { if (mPos < 0) copyPixel(iPos, iPos, input); else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); else { let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); @@ -853,6 +983,7 @@ const theBigActionsObject = { if (mPos < 0) copyPixel(iPos, iPos, input); else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); else { outR[iPos] = darkenCalc(inR[iPos], mixR[mPos]); @@ -981,6 +1112,7 @@ const theBigActionsObject = { if (mPos < 0) copyPixel(iPos, iPos, input); else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); else { let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); @@ -1055,6 +1187,7 @@ const theBigActionsObject = { if (mPos < 0) copyPixel(iPos, iPos, input); else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); else { let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); @@ -1069,19 +1202,123 @@ const theBigActionsObject = { break; case 'color' : - copyOver(input, output); + const colorCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(iH, iS, mL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = colorCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } break; case 'hue' : - copyOver(input, output); + const hueCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(iH, mS, mL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = hueCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } break; case 'luminosity' : - copyOver(input, output); + const luminosityCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(mH, mS, iL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = luminosityCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } break; case 'saturation' : - copyOver(input, output); + const saturationCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(mH, iS, mL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = saturationCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } break; default: @@ -1339,6 +1576,29 @@ const theBigActionsObject = { let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); + const copyPixel = function (fromPos, toPos, channel) { + + outR[toPos] = channel.r[fromPos]; + outG[toPos] = channel.g[fromPos]; + outB[toPos] = channel.b[fromPos]; + outA[toPos] = channel.a[fromPos]; + }; + + const getLinePositions = function (x, y) { + + let ix = x, + iy = y, + mx = x - offsetX, + my = y - offsetY; + + let mPos = -1, + iPos = (iy * iWidth) + ix; + + if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; + + return [iPos, mPos]; + }; + switch (compose) { case 'source-only' : @@ -1346,97 +1606,163 @@ const theBigActionsObject = { break; case 'source-atop' : - const sAtopCalc = (Cs, As, Cb, Ab) => (As * Cs * Ab) + (Ab * Cb * (1 - As)); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = sAtopCalc(inR[i], dinA, mixR[i], dmixA); - outG[i] = sAtopCalc(inG[i], dinA, mixG[i], dmixA); - outB[i] = sAtopCalc(inB[i], dinA, mixB[i], dmixA); - outA[i] = ((dinA * dmixA) + (dmixA * (1 - dinA))) * 255; + const sAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * mAlpha) + (mAlpha * mColor * (1 - iAlpha)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = sAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = sAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * dmixA) + (dmixA * (1 - dinA))) * 255; + } + } } break; case 'source-in' : - const sInCalc = (Cs, As, Ab) => As * Cs * Ab; - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = sInCalc(inR[i], dinA, dmixA); - outG[i] = sInCalc(inG[i], dinA, dmixA); - outB[i] = sInCalc(inB[i], dinA, dmixA); - outA[i] = dinA * dmixA * 255; + const sInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sInCalc(inR[iPos], dinA, dmixA); + outG[iPos] = sInCalc(inG[iPos], dinA, dmixA); + outB[iPos] = sInCalc(inB[iPos], dinA, dmixA); + outA[iPos] = dinA * dmixA * 255; + } + } } break; case 'source-out' : - const sOutCalc = (Cs, As, Ab) => As * Cs * (1 - Ab); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = sOutCalc(inR[i], dinA, dmixA); - outG[i] = sOutCalc(inG[i], dinA, dmixA); - outB[i] = sOutCalc(inB[i], dinA, dmixA); - outA[i] = dinA * (1 - dmixA) * 255; + const sOutCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * (1 - mAlpha); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sOutCalc(inR[iPos], dinA, dmixA); + outG[iPos] = sOutCalc(inG[iPos], dinA, dmixA); + outB[iPos] = sOutCalc(inB[iPos], dinA, dmixA); + outA[iPos] = dinA * (1 - dmixA) * 255; + } + } } break; case 'destination-only' : - copyOver(mix, output); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) copyPixel(mPos, iPos, mix); + } + } break; case 'destination-atop' : - const dAtopCalc = (Cs, As, Cb, Ab) => (As * Cs * (1 - Ab)) + (Ab * Cb * As); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = dAtopCalc(inR[i], dinA, mixR[i], dmixA); - outG[i] = dAtopCalc(inG[i], dinA, mixG[i], dmixA); - outB[i] = dAtopCalc(inB[i], dinA, mixB[i], dmixA); - outA[i] = ((dinA * (1 - dmixA)) + (dmixA * dinA)) * 255; + const dAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * iAlpha); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = dAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = dAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * dinA)) * 255; + } + } } break; case 'destination-over' : - const dOverCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = dOverCalc(mixR[i], dmixA, inR[i], dinA); - outG[i] = dOverCalc(mixG[i], dmixA, inG[i], dinA); - outB[i] = dOverCalc(mixB[i], dmixA, inB[i], dinA); - outA[i] = (dmixA + (dinA * (1 - dmixA))) * 255; + const dOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dOverCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = dOverCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = dOverCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * (1 - dmixA)) + dmixA) * 255; + } + } } break; case 'destination-in' : - const dInCalc = (Cs, As, Ab) => As * Cs * Ab; - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = dInCalc(mixR[i], dmixA, dinA); - outG[i] = dInCalc(mixG[i], dmixA, dinA); - outB[i] = dInCalc(mixB[i], dmixA, dinA); - outA[i] = dinA * dmixA * 255; + const dInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dInCalc(mixR[mPos], dmixA, dinA); + outG[iPos] = dInCalc(mixG[mPos], dmixA, dinA); + outB[iPos] = dInCalc(mixB[mPos], dmixA, dinA); + outA[iPos] = dinA * dmixA * 255; + } + } } break; case 'destination-out' : - const dOutCalc = (Cb, As, Ab) => Ab * Cb * (1 - As); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = dOutCalc(mixR[i], dinA, dmixA); - outG[i] = dOutCalc(mixG[i], dinA, dmixA); - outB[i] = dOutCalc(mixB[i], dinA, dmixA); - outA[i] = dmixA * (1 - dinA) * 255; + const dOutCalc = (mColor, iAlpha, mAlpha) => mAlpha * mColor * (1 - iAlpha); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dOutCalc(mixR[mPos], dinA, dmixA); + outG[iPos] = dOutCalc(mixG[mPos], dinA, dmixA); + outB[iPos] = dOutCalc(mixB[mPos], dinA, dmixA); + outA[iPos] = dmixA * (1 - dinA) * 255; + } + } } break; @@ -1444,28 +1770,46 @@ const theBigActionsObject = { break; case 'xor' : - const xorCalc = (Cs, As, Cb, Ab) => (As * Cs * (1 - Ab)) + (Ab * Cb * (1 - As)); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = xorCalc(inR[i], dinA, mixR[i], dmixA); - outG[i] = xorCalc(inG[i], dinA, mixG[i], dmixA); - outB[i] = xorCalc(inB[i], dinA, mixB[i], dmixA); - outA[i] = ((dinA * (1 - dmixA)) + (dmixA * (1 - dinA))) * 255; + const xorCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * (1 - iAlpha)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = xorCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = xorCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = xorCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * (1 - dinA))) * 255; + } + } } break; default: - const sOverCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); - for (let i = 0; i < len; i++) { - let dinA = inA[i] / 255, - dmixA = mixA[i] / 255; - - outR[i] = sOverCalc(inR[i], dinA, mixR[i], dmixA); - outG[i] = sOverCalc(inG[i], dinA, mixG[i], dmixA); - outB[i] = sOverCalc(inB[i], dinA, mixB[i], dmixA); - outA[i] = (dinA + (dmixA * (1 - dinA))) * 255; + const sOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor) + (mAlpha * mColor * (1 - iAlpha)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sOverCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = sOverCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = sOverCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = (dinA + (dmixA * (1 - dinA))) * 255; + } + } } } if (lineOut) processResults(output, work, 1 - opacity); From af42c437bbd970497198f4a0b316014aa87a8f6a Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Sat, 16 Jan 2021 21:03:02 +0000 Subject: [PATCH 10/28] first tests at more complex filters --- demo/canvas-007.html | 5 +- demo/canvas-007.js | 65 +++++++- source/factory/filter.js | 13 ++ source/worker/new-filter.js | 324 ++++++++++++++++++++++-------------- 4 files changed, 270 insertions(+), 137 deletions(-) diff --git a/demo/canvas-007.html b/demo/canvas-007.html index a1a1d90a8..3798b93ab 100644 --- a/demo/canvas-007.html +++ b/demo/canvas-007.html @@ -27,6 +27,7 @@

    Apply filters at the entity, group and cell level

    diff --git a/demo/canvas-007.js b/demo/canvas-007.js index 83aa05520..67d00d77c 100644 --- a/demo/canvas-007.js +++ b/demo/canvas-007.js @@ -262,14 +262,6 @@ scrawl.makeFilter({ passes: 2, }); -// __GaussianBlur__ filter -scrawl.makeFilter({ - name: 'gaussianBlur', - method: 'gaussianBlur', - radius: 6, - passes: 2, -}); - // __AreaAlpha__ filter scrawl.makeFilter({ name: 'areaAlpha', @@ -316,6 +308,63 @@ scrawl.makeFilter({ transparentAt: 0.5, }); +scrawl.makeFilter({ + name: 'dropShadow', + actions: [ + { + action: 'blur', + lineIn: 'source-alpha', + lineOut: 'shadow', + radius: 4, + includeAlpha: true, + }, + { + action: 'compose', + lineIn: 'source', + lineMix: 'shadow', + offsetX: 6, + offsetY: 6, + } + ], +}); + +scrawl.makeFilter({ + name: 'redBorder', + actions: [ + { + action: 'blur', + lineIn: 'source-alpha', + lineOut: 'shadow', + radius: 6, + includeAlpha: true, + }, + { + action: 'binary', + lineIn: 'shadow', + lineOut: 'shadow', + alpha: 1, + }, + { + action: 'flood', + lineIn: 'shadow', + lineOut: 'red-flood', + red: 255, + }, + { + action: 'compose', + lineIn: 'shadow', + lineMix: 'red-flood', + lineOut: 'colorized', + compose: 'destination-in', + }, + { + action: 'compose', + lineIn: 'source', + lineMix: 'colorized', + } + ], +}); + // #### Scene animation // Function to display frames-per-second data, and other information relevant to the demo diff --git a/source/factory/filter.js b/source/factory/filter.js index 620cf46d3..c5439d22b 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -361,6 +361,19 @@ const setActionsArray = { }]; }, + binary: function (f) { + f.actions = [{ + action: 'binary', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + opacity: (f.opacity != null) ? f.opacity : 1, + red: (f.red != null) ? f.red : 0, + green: (f.green != null) ? f.green : 0, + blue: (f.blue != null) ? f.blue : 0, + alpha: (f.alpha != null) ? f.alpha : 0, + }]; + }, + blend: function (f) { f.actions = [{ action: 'blend', diff --git a/source/worker/new-filter.js b/source/worker/new-filter.js index 174cba4a7..fc76b8568 100644 --- a/source/worker/new-filter.js +++ b/source/worker/new-filter.js @@ -94,24 +94,6 @@ const knit = function () { // #### Messaging and error handling onmessage = function (msg) { -/* -msg contains a data attribute, representing the message packet, with the following structure: - -{ - image: { - width: Number - height: Number - data: [] - }, - filters: [] - Array -} - -We need to amend the msg.img.data Array in line with the requirements set out in the filters Array and return the entire packet. - -We need to respect existing filter requests, while converting them to use the new ways - -*/ - packet = msg.data; packetFiltersArray = packet.filters; @@ -476,7 +458,6 @@ const checkChannelLevelsParameters = function (f) { const cacheOutput = function (name, obj, caller) { - if (cache[name]) throw new Error('Duplicate name encountered when trying to cache output from', caller); cache[name] = obj; }; @@ -632,7 +613,15 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; + let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == excludeRed) excludeRed = true; + if (null == excludeGreen) excludeGreen = true; + if (null == excludeBlue) excludeBlue = true; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -657,6 +646,15 @@ const theBigActionsObject = { let {opacity, tileWidth, tileHeight, offsetX, offsetY, gutterWidth, gutterHeight, areaAlphaLevels, lineOut} = requirements; + if (null == opacity) opacity = 1; + if (null == tileWidth) tileWidth = 1; + if (null == tileHeight) tileHeight = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + if (null == gutterWidth) gutterWidth = 1; + if (null == gutterHeight) gutterHeight = 1; + if (null == areaAlphaLevels) areaAlphaLevels = [255,0,0,0]; + let tiles = buildAlphaTileSets(tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels); if (!Array.isArray(areaAlphaLevels)) areaAlphaLevels = [255,0,0,0]; @@ -688,7 +686,15 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; + let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == excludeRed) excludeRed = false; + if (null == excludeGreen) excludeGreen = false; + if (null == excludeBlue) excludeBlue = false; let divisor = 0; if (includeRed) divisor++; @@ -737,13 +743,54 @@ const theBigActionsObject = { else processResults(work, output, opacity); }, + 'binary': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, red, green, blue, alpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 0; + if (null == green) green = 0; + if (null == blue) blue = 0; + if (null == alpha) alpha = 0; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + if (red) outR[i] = (inR[i] > red) ? 255 : 0; + else outR[i] = inR[i]; + + if (green) outG[i] = (inG[i] > green) ? 255 : 0; + else outG[i] = inG[i]; + + if (blue) outB[i] = (inB[i] > blue) ? 255 : 0; + else outB[i] = inB[i]; + + if (alpha) outA[i] = (inA[i] > alpha) ? 255 : 0; + else outA[i] = inA[i]; + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + 'blend': function (requirements) { let [input, output, mix] = getInputAndOutputChannels(requirements); let len = output.r.length; - const {opacity, blend, offsetX, offsetY, lineOut} = requirements; + let {opacity, blend, offsetX, offsetY, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == blend) blend = ''; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -790,69 +837,8 @@ const theBigActionsObject = { const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255; -/* // Lum(C) = 0.3 x Cred + 0.59 x Cgreen + 0.11 x Cblue - const getLuminosity = (r, g, b) => (0.3 * r) + (0.59 * g) + (0.11 * b); - - // SetLum(C, l) - // d = l - Lum(C) - // Cred = Cred + d - // Cgreen = Cgreen + d - // Cblue = Cblue + d - // return ClipColor(C) - const setLuminosity = (r, g, b, l) => { - - let d = l - getLuminosity(r, g, b); - - r += d; - g += d; - b += d; - - return clipColor(r, g, b); - }; - - // ClipColor(C) - // L = Lum(C) - // n = min(Cred, Cgreen, Cblue) - // x = max(Cred, Cgreen, Cblue) - // if(n < 0) - // C = L + (((C - L) * L) / (L - n)) - - // if(x > 1) - // C = L + (((C - L) * (1 - L)) / (x - L)) - - // return C - const clipColor = (r, g, b) => { - - let l = getLuminosity(r, g, b); - - let n = Math.min(r, g, b), - x = Math.max(r, g, b); - - if (n < 0) { - r = l + (((r - l) * l) / (l - n)); - g = l + (((g - l) * l) / (l - n)); - b = l + (((b - l) * l) / (l - n)); - } - - if (x > 1) { - r = l + (((r - l) * (1 - l)) / (x - l)); - g = l + (((g - l) * (1 - l)) / (x - l)); - b = l + (((b - l) * (1 - l)) / (x - l)); - } - - return [r, g, b]; - } - - // Sat(C) = max(Cred, Cgreen, Cblue) - min(Cred, Cgreen, Cblue) - const getSaturation = (r, g, b) => Math.max(r, g, b) - Math.min(r, g, b); -*/ - const getHSLfromRGB = function (dr, dg, db) { - // let dr = r / 255, - // dg = g / 255, - // db = b / 255; - let minColor = Math.min(dr, dg, db), maxColor = Math.max(dr, dg, db); @@ -1355,6 +1341,17 @@ const theBigActionsObject = { let {opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, step, lineOut} = requirements; + if (null == opacity) opacity = 1; + if (null == radius) radius = 0; + if (null == passes) passes = 1; + if (null == processVertical) processVertical = true; + if (null == processHorizontal) processHorizontal = true; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + if (null == step) step = 1; + let horizontalBlurGrid, verticalBlurGrid; // Any required precalculations @@ -1414,7 +1411,7 @@ const theBigActionsObject = { for (let k = 0; k < len; k++) { - if (holdA[k]) { + if (includeAlpha || holdA[k]) { outR[k] = getValue(includeRed, horizontalBlurGrid, k, holdR, holdA); outG[k] = getValue(includeGreen, horizontalBlurGrid, k, holdG, holdA); @@ -1429,7 +1426,7 @@ const theBigActionsObject = { for (let k = 0; k < len; k++) { - if (holdA[k]) { + if (includeAlpha || holdA[k]) { outR[k] = getValue(includeRed, verticalBlurGrid, k, holdR, holdA); outG[k] = getValue(includeGreen, verticalBlurGrid, k, holdG, holdA); @@ -1451,7 +1448,12 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, includeRed, includeGreen, includeBlue, lineOut} = requirements; + let {opacity, includeRed, includeGreen, includeBlue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; let divisor = 0; if (includeRed) divisor++; @@ -1491,7 +1493,10 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, ranges, lineOut} = requirements; + let {opacity, ranges, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == ranges) ranges = []; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -1532,7 +1537,14 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, red, green, blue, opaqueAt, transparentAt, lineOut} = requirements; + let {opacity, red, green, blue, opaqueAt, transparentAt, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 0; + if (null == green) green = 255; + if (null == blue) blue = 0; + if (null == opaqueAt) opaqueAt = 1; + if (null == transparentAt) transparentAt = 0; const maxDiff = Math.max(((red + green + blue) / 3), (((255 - red) + (255 - green) + (255 - blue)) / 3)), transparent = transparentAt * maxDiff, @@ -1568,7 +1580,12 @@ const theBigActionsObject = { let len = output.r.length; - const {opacity, compose, offsetX, offsetY, lineOut} = requirements; + let {opacity, compose, offsetX, offsetY, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == compose) compose = ''; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -1823,12 +1840,13 @@ const theBigActionsObject = { let len = input.r.length, floor = Math.floor; - const {opacity, red, green, blue, alpha, lineOut} = requirements; + let {opacity, red, green, blue, alpha, lineOut} = requirements; - if (red == null) red = 0; - if (green == null) green = 0; - if (blue == null) blue = 0; - if (alpha == null) alpha = 255; + if (null == opacity) opacity = 1; + if (null == red) red = 0; + if (null == green) green = 0; + if (null == blue) blue = 0; + if (null == alpha) alpha = 255; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -1847,7 +1865,9 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, lineOut} = requirements; + let {opacity, lineOut} = requirements; + + if (null == opacity) opacity = 1; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -1872,7 +1892,13 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; + let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -1907,7 +1933,13 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, red, green, blue, alpha, lineOut} = requirements; + let {opacity, red, green, blue, alpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = [0]; + if (null == green) green = [0]; + if (null == blue) blue = [0]; + if (null == alpha) alpha = [255]; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -1931,22 +1963,22 @@ const theBigActionsObject = { let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, width, height, offsetX, offsetY, weights, lineOut} = requirements; - // if (grid == null) { - - if (width == null || width < 1) width = 3; - if (height == null || height < 1) height = 3; - if (offsetX == null || offsetX < 0) offsetX = 1; - if (offsetY == null || offsetY < 0) offsetY = 1; - - grid = buildMatrixGrid(width, height, offsetX, offsetY, input.a); - // } - - if (weights == null) { - + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + if (null == width || width < 1) width = 3; + if (null == height || height < 1) height = 3; + if (null == offsetX) offsetX = 1; + if (null == offsetY) offsetY = 1; + if (null == weights) { weights = [].fill(0, 0, (width * height) - 1); weights[Math.floor(weights.length / 2) + 1] = 1; } + grid = buildMatrixGrid(width, height, offsetX, offsetY, input.a); + const doCalculations = function (inChannel, matrix) { let val = 0; @@ -1990,10 +2022,12 @@ const theBigActionsObject = { let {opacity, red, green, blue, alpha, saturation, lineOut} = requirements; - if (red == null) red = 1; - if (green == null) green = 1; - if (blue == null) blue = 1; - if (alpha == null) alpha = 1; + if (null == opacity) opacity = 1; + if (null == red) red = 1; + if (null == green) green = 1; + if (null == blue) blue = 1; + if (null == alpha) alpha = 1; + if (null == saturation) saturation = false; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -2024,7 +2058,11 @@ const theBigActionsObject = { let [input, output] = getInputAndOutputChannels(requirements); - const {opacity, offsetX, offsetY, lineOut} = requirements; + let {opacity, offsetX, offsetY, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -2091,6 +2129,16 @@ const theBigActionsObject = { let {opacity, tileWidth, tileHeight, offsetX, offsetY, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + if (null == tileWidth) tileWidth = 1; + if (null == tileHeight) tileHeight = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + const tiles = buildImageTileSets(tileWidth, tileHeight, offsetX, offsetY); // Do filter work @@ -2154,7 +2202,14 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, includeRed, includeGreen, includeBlue, includeAlpha, level, lineOut} = requirements; + let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, level, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = false; + if (null == includeGreen) includeGreen = false; + if (null == includeBlue) includeBlue = false; + if (null == includeAlpha) includeAlpha = false; + if (null == level) level = 0; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -2177,7 +2232,12 @@ const theBigActionsObject = { let len = input.r.length, floor = Math.floor; - const {opacity, red, green, blue, lineOut} = requirements; + let {opacity, red, green, blue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 1; + if (null == green) green = 1; + if (null == blue) blue = 1; if (red == null) red = 1; if (green == null) green = 1; @@ -2203,7 +2263,12 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, low, high, level, lineOut} = requirements; + let {opacity, low, high, level, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == low) low = [0,0,0]; + if (null == high) high = [255,255,255]; + if (null == level) level = 128; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -2240,17 +2305,18 @@ const theBigActionsObject = { let len = input.r.length; - const {opacity, redInRed, redInGreen, redInBlue, greenInRed, greenInGreen, greenInBlue, blueInRed, blueInGreen, blueInBlue, lineOut} = requirements; + let {opacity, redInRed, redInGreen, redInBlue, greenInRed, greenInGreen, greenInBlue, blueInRed, blueInGreen, blueInBlue, lineOut} = requirements; - if (redInRed == null) redInRed = 1; - if (redInGreen == null) redInGreen = 0; - if (redInBlue == null) redInBlue = 0; - if (greenInRed == null) greenInRed = 0; - if (greenInGreen == null) greenInGreen = 1; - if (greenInBlue == null) greenInBlue = 0; - if (blueInRed == null) blueInRed = 0; - if (blueInGreen == null) blueInGreen = 0; - if (blueInBlue == null) blueInBlue = 1; + if (null == opacity) opacity = 1; + if (null == redInRed) redInRed = 1; + if (null == redInGreen) redInGreen = 0; + if (null == redInBlue) redInBlue = 0; + if (null == greenInRed) greenInRed = 0; + if (null == greenInGreen) greenInGreen = 1; + if (null == greenInBlue) greenInBlue = 0; + if (null == blueInRed) blueInRed = 0; + if (null == blueInGreen) blueInGreen = 0; + if (null == blueInBlue) blueInBlue = 1; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -2275,7 +2341,9 @@ const theBigActionsObject = { let [input, output] = getInputAndOutputChannels(requirements); - const {opacity, lineOut} = requirements; + let {opacity, lineOut} = requirements; + + if (null == opacity) opacity = 1; copyOver(input, output); From ee50d3b453b4d7dfd69cb42da0c6da65d90fae32 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Mon, 18 Jan 2021 18:38:52 +0000 Subject: [PATCH 11/28] displacement filter - initial work --- demo/canvas-007.html | 7 + demo/canvas-007.js | 63 +++- demo/filters-017.html | 75 +++++ demo/filters-017.js | 134 ++++++++ demo/filters-018.html | 61 ++++ demo/filters-018.js | 103 ++++++ demo/img/perlin-noise-texture.png | Bin 0 -> 76526 bytes demo/index.html | 3 + source/factory/color.js | 179 ++++++++-- source/factory/filter.js | 76 ++++- source/factory/noise.js | 522 ++++++++++++++++++++++++++++++ source/scrawl.js | 9 + source/worker/new-filter.js | 501 ++++++++++++++++++++++------ 13 files changed, 1603 insertions(+), 130 deletions(-) create mode 100644 demo/filters-017.html create mode 100644 demo/filters-017.js create mode 100644 demo/filters-018.html create mode 100644 demo/filters-018.js create mode 100644 demo/img/perlin-noise-texture.png create mode 100644 source/factory/noise.js diff --git a/demo/canvas-007.html b/demo/canvas-007.html index 3798b93ab..688853cbb 100644 --- a/demo/canvas-007.html +++ b/demo/canvas-007.html @@ -38,6 +38,8 @@

    Apply filters at the entity, group and cell level

    + + @@ -49,15 +51,18 @@

    Apply filters at the entity, group and cell level

    + + +
    @@ -101,6 +106,8 @@

    Notes

    Annotated code

    + + diff --git a/demo/canvas-007.js b/demo/canvas-007.js index 67d00d77c..392fc198c 100644 --- a/demo/canvas-007.js +++ b/demo/canvas-007.js @@ -8,6 +8,8 @@ import scrawl from '../source/scrawl.js' // #### Scene setup let canvas = scrawl.library.artefact.mycanvas; +scrawl.importDomImage('.map'); + canvas.set({ fit: 'fill', backgroundColor: 'lightgray', @@ -169,6 +171,24 @@ scrawl.makeFilter({ }).clone({ name: 'yellow', method: 'yellow', + +// __Edge detect__ filter +}).clone({ + name: 'edgeDetect', + method: 'edgeDetect', + +// __Sharpen__ filter +}).clone({ + name: 'sharpen', + method: 'sharpen', +}); + +// __Emboss__ filter +scrawl.makeFilter({ + name: 'emboss', + method: 'emboss', + angle: 225, + strength: 4, }); // __Chroma__ (green screen) filter @@ -244,6 +264,16 @@ scrawl.makeFilter({ opacity: 0.5, }); +// __Offset Channels__ filter +scrawl.makeFilter({ + name: 'offsetChannels', + method: 'offsetChannels', + offsetRedX: -12, + offsetGreenY: 12, + offsetBlueX: 3, + offsetBlueY: -3, +}); + // __Pixellate__ filter scrawl.makeFilter({ name: 'pixelate', @@ -315,7 +345,11 @@ scrawl.makeFilter({ action: 'blur', lineIn: 'source-alpha', lineOut: 'shadow', - radius: 4, + radius: 2, + passes: 2, + includeRed: false, + includeGreen: false, + includeBlue: false, includeAlpha: true, }, { @@ -335,7 +369,11 @@ scrawl.makeFilter({ action: 'blur', lineIn: 'source-alpha', lineOut: 'shadow', - radius: 6, + radius: 3, + passes: 2, + includeRed: false, + includeGreen: false, + includeBlue: false, includeAlpha: true, }, { @@ -365,6 +403,27 @@ scrawl.makeFilter({ ], }); +scrawl.makeFilter({ + name: 'noise', + actions: [ + { + action: 'process-image', + asset: 'perlin', + width: 500, + height: 500, + copyWidth: 500, + copyHeight: 500, + lineOut: 'map', + }, + { + action: 'displace', + lineMix: 'map', + scaleX: 20, + scaleY: 30, + } + ], +}); + // #### Scene animation // Function to display frames-per-second data, and other information relevant to the demo diff --git a/demo/filters-017.html b/demo/filters-017.html new file mode 100644 index 000000000..ab77556cd --- /dev/null +++ b/demo/filters-017.html @@ -0,0 +1,75 @@ + + + + + + + + Demo Filters 017 + + + + + + +

    Scrawl-canvas v8 - Filters test 017

    +

    Parameters for: displace filter

    + +
    + +
    Scale X
    +
    + +
    Scale Y
    +
    + +
    Offset X
    +
    + +
    Offset Y
    +
    + +
    Transparent edges
    +
    + +
    + +
    Opacity
    +
    + +
    + + + + + + +

    + +
    +

    Test purpose

    + +
      +
    • Create a test Picture entity
    • +
    • Create an areaAlpha filter and apply it to the test entity
    • +
    • Update filter attributes and observe the effect they have on the entity
    • +
    + +

    Annotated code

    +
    + + + + + + diff --git a/demo/filters-017.js b/demo/filters-017.js new file mode 100644 index 000000000..b0d1fd2a0 --- /dev/null +++ b/demo/filters-017.js @@ -0,0 +1,134 @@ +// # Demo Filters 017 +// Filter parameters: displace + +// [Run code](../../demo/filters-017.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +// Create the filter +scrawl.makeFilter({ + + name: 'noise', + method: 'image', + + asset: 'perlin', + + width: 500, + height: 500, + + copyWidth: '100%', + copyHeight: '100%', + + lineOut: 'map', +}); + +const myFilter = scrawl.makeFilter({ + + name: 'displace', + method: 'displace', + + lineMix: 'map', + + offsetX: 0, + offsetY: 0, + + scaleX: 1, + scaleY: 1, +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['noise', 'displace'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let scale_x = document.querySelector('#scale_x'), + scale_y = document.querySelector('#scale_y'), + offset_x = document.querySelector('#offset_x'), + offset_y = document.querySelector('#offset_y'), + opacity = document.querySelector('#opacity'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Scales - x: ${scale_x.value} y: ${scale_y.value} + Offsets - x: ${offset_x.value} y: ${offset_y.value} + Opacity - ${opacity.value}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: myFilter, + + useNativeListener: true, + preventDefault: true, + + updates: { + + offset_x: ['offsetX', 'round'], + offset_y: ['offsetY', 'round'], + scale_x: ['scaleX', 'float'], + scale_y: ['scaleY', 'float'], + transparent_edges: ['transparentEdges', 'boolean'], + opacity: ['opacity', 'float'], + }, +}); + +// Setup form +document.querySelector('#offset_x').value = 0; +document.querySelector('#offset_y').value = 0; +document.querySelector('#scale_x').value = 1; +document.querySelector('#scale_y').value = 1; +document.querySelector('#opacity').value = 1; +document.querySelector('#transparent_edges').options.selectedIndex = 0; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/filters-018.html b/demo/filters-018.html new file mode 100644 index 000000000..23c22b264 --- /dev/null +++ b/demo/filters-018.html @@ -0,0 +1,61 @@ + + + + + + + + Demo Filters 018 + + + + + + +

    Scrawl-canvas v8 - Filters test 018

    +

    Parameters for: emboss filter

    + +
    + +
    Angle
    +
    + +
    Strength
    +
    + +
    Opacity
    +
    + +
    + + + + + + +

    + +
    +

    Test purpose

    + +
      +
    • Create a test Picture entity
    • +
    • Create an areaAlpha filter and apply it to the test entity
    • +
    • Update filter attributes and observe the effect they have on the entity
    • +
    + +

    Annotated code

    +
    + + + + + + diff --git a/demo/filters-018.js b/demo/filters-018.js new file mode 100644 index 000000000..129f0ed01 --- /dev/null +++ b/demo/filters-018.js @@ -0,0 +1,103 @@ +// # Demo Filters 018 +// Filter parameters: emboss + +// [Run code](../../demo/filters-018.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +// Create the filter +const myFilter = scrawl.makeFilter({ + + name: 'emboss', + method: 'emboss', + angle: 225, + strength: 3, +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['emboss'], +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let strength = document.querySelector('#strength'), + angle = document.querySelector('#angle'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Angle - ${angle.value}° + Strength - ${strength.value} + Opacity - ${opacity.value}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: myFilter, + + useNativeListener: true, + preventDefault: true, + + updates: { + + strength: ['strength', 'float'], + angle: ['angle', 'float'], + opacity: ['opacity', 'float'], + }, +}); + +// Setup form +document.querySelector('#strength').value = 3; +document.querySelector('#angle').value = 225; +document.querySelector('#opacity').value = 1; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/img/perlin-noise-texture.png b/demo/img/perlin-noise-texture.png new file mode 100644 index 0000000000000000000000000000000000000000..49bd82589fb1381c0f83118d964a3358130ef3d1 GIT binary patch literal 76526 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ï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 TIDvGX00000NkvXXu0mjfYMrAL literal 0 HcmV?d00001 diff --git a/demo/index.html b/demo/index.html index 8cd1cde68..1f43e1ca9 100644 --- a/demo/index.html +++ b/demo/index.html @@ -269,6 +269,9 @@

    Filters functionality tests

    Filters 016 - Filter blend operation
    +
    +
    Filters 017 - Parameters for: displace filter
    +
    Filters 051 - Canvas engine filter strings (based on CSS filters)
    diff --git a/source/factory/color.js b/source/factory/color.js index b975bf709..62e213704 100644 --- a/source/factory/color.js +++ b/source/factory/color.js @@ -491,15 +491,15 @@ P.convert = function (items) { if (/%/.test(items)) { - r = round((temp[0] / 100) * 255); - g = round((temp[1] / 100) * 255); - b = round((temp[2] / 100) * 255); + r = round((parseFloat(temp[0]) / 100) * 255); + g = round((parseFloat(temp[1]) / 100) * 255); + b = round((parseFloat(temp[2]) / 100) * 255); } else { - r = round(temp[0]); - g = round(temp[1]); - b = round(temp[2]); + r = round(parseFloat(temp[0])); + g = round(parseFloat(temp[1])); + b = round(parseFloat(temp[2])); } } else if (/rgba\(/.test(items)) { @@ -508,31 +508,24 @@ P.convert = function (items) { if (/%/.test(items)) { - r = round((temp[0] / 100) * 255); - g = round((temp[1] / 100) * 255); - b = round((temp[2] / 100) * 255); - a = temp[3] / 100; + r = round((parseFloat(temp[0]) / 100) * 255); + g = round((parseFloat(temp[1]) / 100) * 255); + b = round((parseFloat(temp[2]) / 100) * 255); + a = parseFloat(temp[3]) / 100; } else { - r = round(temp[0]); - g = round(temp[1]); - b = round(temp[2]); + r = round(parseFloat(temp[0])); + g = round(parseFloat(temp[1])); + b = round(parseFloat(temp[2])); a = temp[3]; } } else if (/hsl\(/.test(items) || /hsla\(/.test(items)) { - // the spec explanation can be found here https://developer.mozilla.org/en-US/docs/Web/CSS/color_value - // - // see http://www.niwa.nu/2013/05/math-behind-colorspace-conversions-rgb-hsl/ for one way we can approach converting hsl values to rgb - // - // currently, knock down to transparent black - r = 0; - g = 0; - b = 0; - a = 0; + temp = items.match(/([0-9.]+\b)/g); + this.setFromHSL(parseFloat(temp[0]), parseFloat(temp[1]), parseFloat(temp[2]), parseFloat(temp[3])); } else if (items === 'transparent') { @@ -566,6 +559,148 @@ P.convert = function (items) { }; +P.getHSLfromRGB = function (dr, dg, db) { + + let minColor = Math.min(dr, dg, db), + maxColor = Math.max(dr, dg, db); + + let lum = (minColor + maxColor) / 2; + + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); + else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); + else hue = 4 + ((dr - dg) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; +}; + +P.getHSL = function () { + + let {r, g, b} = this; + + let minColor = Math.min(r, g, b), + maxColor = Math.max(r, g, b); + + let lum = (minColor + maxColor) / 2; + + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === r) hue = (g - b) / (maxColor - minColor); + else if (maxColor === g) hue = 2 + ((b - r) / (maxColor - minColor)); + else hue = 4 + ((r - g) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; +}; + +P.getRGBfromHSL = function (h, s, l, a) { + + if (!s) { + + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } + + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + let r = calculator(tr, tempLum1, tempLum2) * 255, + g = calculator(tg, tempLum1, tempLum2) * 255, + b = calculator(tb, tempLum1, tempLum2) * 255; + + if (null == a) return [r, g, b]; + + return [r, g, b, a * 255]; +}; + +P.setFromHSL = function (h, s, l, a) { + + if (!s) { + + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } + + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + this.r = calculator(tr, tempLum1, tempLum2) * 255, + this.g = calculator(tg, tempLum1, tempLum2) * 255, + this.b = calculator(tb, tempLum1, tempLum2) * 255; + + if (null != a) { + + this.a = a * 255; + } +}; + + // Color keywords harvested from https://developer.mozilla.org/en/docs/Web/CSS/color_value P.colorLibrary = { aliceblue: 'f0f8ff', diff --git a/source/factory/filter.js b/source/factory/filter.js index c5439d22b..ebfe5cb0e 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -95,6 +95,18 @@ let defaultAttributes = { excludeBlue: false, excludeAlpha: true, + strength: 1, + angle: 0, + + offsetRedX: 0, + offsetRedY: 0, + offsetGreenX: 0, + offsetGreenY: 0, + offsetBlueX: 0, + offsetBlueY: 0, + offsetAlphaX: 0, + offsetAlphaY: 0, + actions: null, gutterWidth: 1, @@ -116,7 +128,12 @@ let defaultAttributes = { copyX: 0, copyY: 0, - + channelX: 'red', + channelY: 'green', + scaleX: 1, + scaleY: 1, + transparentEdges: false, + // All filters need to set out their __method__. For preset methods, a method string (eg 'grayscale', 'sepia') is sufficient. Bespoke methods require a function method: '', @@ -529,6 +546,23 @@ const setActionsArray = { }]; }, + displace: function (f) { + f.actions = [{ + action: 'displace', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + lineMix: (f.lineMix != null) ? f.lineMix : '', + opacity: (f.opacity != null) ? f.opacity : 1, + channelX: (f.channelX != null) ? f.channelX : 'red', + channelY: (f.channelY != null) ? f.channelY : 'green', + offsetX: (f.offsetX != null) ? f.offsetX : 0, + offsetY: (f.offsetY != null) ? f.offsetY : 0, + scaleX: (f.scaleX != null) ? f.scaleX : 1, + scaleY: (f.scaleY != null) ? f.scaleY : 1, + transparentEdges: (f.transparentEdges != null) ? f.transparentEdges : false, + }]; + }, + edgeDetect: function (f) { f.actions = [{ action: 'matrix', @@ -549,19 +583,12 @@ const setActionsArray = { emboss: function (f) { f.actions = [{ - action: 'matrix', + action: 'emboss', lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - width: 3, - height: 3, - offsetX: 1, - offsetY: 1, - includeRed: true, - includeGreen: true, - includeBlue: true, - includeAlpha: false, - weights: [-2,-1,0,-1,1,1,0,1,2], + angle: (f.angle != null) ? f.angle : 0, + strength: (f.strength != null) ? f.strength : 1, }]; }, @@ -724,8 +751,31 @@ const setActionsArray = { lineIn: (f.lineIn != null) ? f.lineIn : '', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, - offsetX: (f.offsetX != null) ? f.offsetX : 0, - offsetY: (f.offsetY != null) ? f.offsetY : 0, + offsetRedX: (f.offsetX != null) ? f.offsetX : 0, + offsetRedY: (f.offsetY != null) ? f.offsetY : 0, + offsetGreenX: (f.offsetX != null) ? f.offsetX : 0, + offsetGreenY: (f.offsetY != null) ? f.offsetY : 0, + offsetBlueX: (f.offsetX != null) ? f.offsetX : 0, + offsetBlueY: (f.offsetY != null) ? f.offsetY : 0, + offsetAlphaX: (f.offsetX != null) ? f.offsetX : 0, + offsetAlphaY: (f.offsetY != null) ? f.offsetY : 0, + }]; + }, + + offsetChannels: function (f) { + f.actions = [{ + action: 'offset', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + opacity: (f.opacity != null) ? f.opacity : 1, + offsetRedX: (f.offsetRedX != null) ? f.offsetRedX : 0, + offsetRedY: (f.offsetRedY != null) ? f.offsetRedY : 0, + offsetGreenX: (f.offsetGreenX != null) ? f.offsetGreenX : 0, + offsetGreenY: (f.offsetGreenY != null) ? f.offsetGreenY : 0, + offsetBlueX: (f.offsetBlueX != null) ? f.offsetBlueX : 0, + offsetBlueY: (f.offsetBlueY != null) ? f.offsetBlueY : 0, + offsetAlphaX: (f.offsetAlphaX != null) ? f.offsetAlphaX : 0, + offsetAlphaY: (f.offsetAlphaY != null) ? f.offsetAlphaY : 0, }]; }, diff --git a/source/factory/noise.js b/source/factory/noise.js new file mode 100644 index 000000000..fca235c61 --- /dev/null +++ b/source/factory/noise.js @@ -0,0 +1,522 @@ +// # Noise factory +// TODO: documentatiomn + + +// #### Demos: +// + TODO: demos + + +// #### Imports +import { constructors } from '../core/library.js'; +import { mergeOver } from '../core/utilities.js'; + +import baseMix from '../mixin/base.js'; +import assetMix from '../mixin/asset.js'; +// import patternMix from '../mixin/pattern.js'; + + +// #### Noise constructor +const Noise = function (items = {}) { + + this.makeName(items.name); + this.register(); + + let mycanvas = document.createElement('canvas'); + mycanvas.id = this.name; + + mycanvas.width = 300; + mycanvas.height = 150; + + this.installElement(mycanvas); + + this.set(this.defs); + this.set(items); + + return this; +}; + + +// #### Noise prototype +let P = Noise.prototype = Object.create(Object.prototype); +P.type = 'Noise'; +P.lib = 'asset'; +P.isArtefact = false; +P.isAsset = true; + + +// #### Mixins +// + [base](../mixin/base.html) +// + [entity](../mixin/entity.html) +P = baseMix(P); +P = assetMix(P); + + +// #### Noise attributes +let defaultAttributes = { + +}; +P.defs = mergeOver(P.defs, defaultAttributes); + + +// #### Packet management +// No additional packet functionality required + + +// #### Clone management +// No additional clone functionality required + + +// #### Kill management +// No additional kill functionality required + + +// #### Get, Set, deltaSet +let G = P.getters, + S = P.setters, + D = P.deltaSetters; + + + +// #### Prototype functions + +// `installElement` - internal function, used by the constructor +P.installElement = function (element) { + + this.element = element; + this.engine = this.element.getContext('2d'); + + return this; +}; + +// https://github.com/garycourt/murmurhash-js/blob/master/murmurhash3_gc.js +/** + * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011) + * + * @author Gary Court + * @see http://github.com/garycourt/murmurhash-js + * @author Austin Appleby + * @see http://sites.google.com/site/murmurhash/ + * + * @param {string} key ASCII only + * @param {number} seed Positive integer only + * @return {number} 32-bit positive integer hash + */ +P.murmurhash3_32_gc = function (key, seed = 12345) { + + var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i; + + remainder = key.length & 3; // key.length % 4 + bytes = key.length - remainder; + h1 = seed; + c1 = 0xcc9e2d51; + c2 = 0x1b873593; + i = 0; + + while (i < bytes) { + k1 = + ((key.charCodeAt(i) & 0xff)) | + ((key.charCodeAt(++i) & 0xff) << 8) | + ((key.charCodeAt(++i) & 0xff) << 16) | + ((key.charCodeAt(++i) & 0xff) << 24); + ++i; + + k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff; + + h1 ^= k1; + h1 = (h1 << 13) | (h1 >>> 19); + h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff; + h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16)); + } + + k1 = 0; + + switch (remainder) { + case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16; + case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8; + case 1: k1 ^= (key.charCodeAt(i) & 0xff); + + k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff; + k1 = (k1 << 15) | (k1 >>> 17); + k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff; + h1 ^= k1; + } + + h1 ^= key.length; + + h1 ^= h1 >>> 16; + h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff; + h1 ^= h1 >>> 13; + h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff; + h1 ^= h1 >>> 16; + + return h1 >>> 0; +}; + +// PSEUDO-RANDOM NUMBER GENERATOR +// + https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript/47593316 +P.mulberry32 = function (a) { + + return function() { + + a |= 0; a = a + 0x6D2B79F5 | 0; + var t = Math.imul(a ^ a >>> 15, 1 | a); + t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t; + + return ((t ^ t >>> 14) >>> 0) / 4294967296; + } +} + +P.grad3 = [[1, 1, 0], [-1, 1, 0], [1, -1, 0], [-1, -1, 0], [1, 0, 1], [-1, 0, 1], [1, 0, -1], [-1, 0, -1], [0, 1, 1], [0, -1, 1], [0, 1, -1], [0, -1, -1]]; + + + + +// #### Factory +// ``` +// TODO +// ``` +const makeNoise = function (items) { + return new Noise(items); +}; + +constructors.Noise = Noise; + + +// #### Exports +export { + makeNoise, +}; + + + + + + + +// SIMPLEX NOISE +// From http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf +// - The code in that paper is written in Java and, the author says, not tweaked for speed + +// const SimplexNoise = function (p) { + +// this.perm = p; + +// this.seedstring = 'HELLO WORLD', + +// let i; + +// if (!Array.isArray(p) || !p.substring) p = []; +// if (p.substring) { + +// seedstring = p; +// p = []; +// }; + +// if (p.length != 512) { + +// p.length = 0; + +// let randomizerseed = this.murmurhash3_32_gc(seedstring), +// randomizer = new mulberry32(randomizerseed); + +// for (i = 0; i < 256; i++) { + +// p.push(randomizer()); +// } +// let perm = []; + +// for (i = 0; i < 512; i++) { + +// perm[i] = p[i & 255]; +// } + +// this.perm = perm; +// } +// }; + +// let P = SimplexNoise.prototype = Object.create(Object.prototype); + +// P.getPerm = function () { + +// return this.perm; +// }; + +// P.getSeedstring = function () { + +// return this.seedstring; +// }; + +// P.dot = function (g, x = 0, y = 0, z = 0, w = 0) { + +// let [gx, gy, gz, gw] = g; + +// if (null == gz) return (gx * x) + (gy * y); +// if (null == gw) return (gx * x) + (gy * y) + (gz * z); +// return (gx * x) + (gy * y) + (gz * z) + (gw * w); +// }; + +// P.noise = function (xin, yin) { + +// let n0, n1, n2; + +// const F2 = 0.5 * (Math.sqrt(3) - 1); + +// const s = (xin + yin) * F2; + +// let i = Math.floor(xin + s), +// j = Math.floor(yin + s); + +// const G2 = (3.0 - Math.sqrt(3)) / 6; + +// let t = (i + j) * G2, +// X0 = i - t, +// Y0 = j - t, +// x0 = xin - X0, +// y0 = yin - Y0; + +// let i1, j1; + +// if(x0 > y0) { +// i1 = 1; +// j1 = 0; +// } +// else { +// i1 = 0; +// j1 = 1; +// } + +// let x1 = x0 - i1 + G2, +// y1 = y0 - j1 + G2, +// x2 = x0 - 1 + (2.0 * G2), +// y2 = y0 - 1 + (2.0 * G2); + +// let ii = i & 255, +// jj = j & 255, +// perm = this.perm, +// gi0 = perm[ii + perm[jj]] % 12, +// gi1 = perm[ii + i1 + perm[jj + j1]] % 12, +// gi2 = perm[ii + 1 + perm[jj + 1]] % 12; + +// // Calculate the contribution from the three corners +// double t0 = 0.5 - x0*x0-y0*y0; +// if(t0<0) n0 = 0.0; +// else { +// t0 *= t0; +// n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient +// } + +// double t1 = 0.5 - x1*x1-y1*y1; +// if(t1<0) n1 = 0.0; +// else { +// t1 *= t1; +// n1 = t1 * t1 * dot(grad3[gi1], x1, y1); +// } + +// double t2 = 0.5 - x2*x2-y2*y2; +// if(t2<0) n2 = 0.0; +// else { +// t2 *= t2; +// n2 = t2 * t2 * dot(grad3[gi2], x2, y2); +// } + +// // Add contributions from each corner to get the final noise value. +// // The result is scaled to return values in the interval [-1,1]. +// return 70.0 * (n0 + n1 + n2); +// } + +// public static double noise(double xin, double yin) { + +// double n0, n1, n2; // Noise contributions from the three corners + +// // Skew the input space to determine which simplex cell we're in +// final double F2 = 0.5*(Math.sqrt(3.0)-1.0); +// double s = (xin+yin)*F2; // Hairy factor for 2D +// int i = fastfloor(xin+s); +// int j = fastfloor(yin+s); + +// final double G2 = (3.0-Math.sqrt(3.0))/6.0; +// double t = (i+j)*G2; +// double X0 = i-t; // Unskew the cell origin back to (x,y) space +// double Y0 = j-t; +// double x0 = xin-X0; // The x,y distances from the cell origin +// double y0 = yin-Y0; + +// // For the 2D case, the simplex shape is an equilateral triangle. +// // Determine which simplex we are in. +// int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords +// if(x0>y0) {i1=1; j1=0;} // lower triangle, XY order: (0,0)->(1,0)->(1,1) +// else {i1=0; j1=1;} // upper triangle, YX order: (0,0)->(0,1)->(1,1) + +// // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and +// // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where +// // c = (3-sqrt(3))/6 + +// double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords +// double y1 = y0 - j1 + G2; +// double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords +// double y2 = y0 - 1.0 + 2.0 * G2; + +// // Work out the hashed gradient indices of the three simplex corners +// int ii = i & 255; +// int jj = j & 255; +// int gi0 = perm[ii+perm[jj]] % 12; +// int gi1 = perm[ii+i1+perm[jj+j1]] % 12; +// int gi2 = perm[ii+1+perm[jj+1]] % 12; + +// // Calculate the contribution from the three corners +// double t0 = 0.5 - x0*x0-y0*y0; +// if(t0<0) n0 = 0.0; +// else { +// t0 *= t0; +// n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient +// } + +// double t1 = 0.5 - x1*x1-y1*y1; +// if(t1<0) n1 = 0.0; +// else { +// t1 *= t1; +// n1 = t1 * t1 * dot(grad3[gi1], x1, y1); +// } + +// double t2 = 0.5 - x2*x2-y2*y2; +// if(t2<0) n2 = 0.0; +// else { +// t2 *= t2; +// n2 = t2 * t2 * dot(grad3[gi2], x2, y2); +// } + +// // Add contributions from each corner to get the final noise value. +// // The result is scaled to return values in the interval [-1,1]. +// return 70.0 * (n0 + n1 + n2); + + +/* +public class SimplexNoise { // Simplex noise in 2D, 3D and 4D + + private static int grad3[][] = {{1,1,0},{-1,1,0},{1,-1,0},{-1,-1,0}, + {1,0,1},{-1,0,1},{1,0,-1},{-1,0,-1}, + {0,1,1},{0,-1,1},{0,1,-1},{0,-1,-1}}; + + // private static int grad4[][]= {{0,1,1,1}, {0,1,1,-1}, {0,1,-1,1}, {0,1,-1,-1}, + // {0,-1,1,1}, {0,-1,1,-1}, {0,-1,-1,1}, {0,-1,-1,-1}, + // {1,0,1,1}, {1,0,1,-1}, {1,0,-1,1}, {1,0,-1,-1}, + // {-1,0,1,1}, {-1,0,1,-1}, {-1,0,-1,1}, {-1,0,-1,-1}, + // {1,1,0,1}, {1,1,0,-1}, {1,-1,0,1}, {1,-1,0,-1}, + // {-1,1,0,1}, {-1,1,0,-1}, {-1,-1,0,1}, {-1,-1,0,-1}, + // {1,1,1,0}, {1,1,-1,0}, {1,-1,1,0}, {1,-1,-1,0}, + // {-1,1,1,0}, {-1,1,-1,0}, {-1,-1,1,0}, {-1,-1,-1,0}}; + + private static int p[] = {151,160,137,91,90,15, + 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, + 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, + 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, + 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, + 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, + 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, + 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, + 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, + 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, + 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, + 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, + 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180}; + + // To remove the need for index wrapping, double the permutation table length + private static int perm[] = new int[512]; + static { for(int i=0; i<512; i++) perm[i]=p[i & 255]; } + + // A lookup table to traverse the simplex around a given point in 4D. + // Details can be found where this table is used, in the 4D noise method. + // private static int simplex[][] = { + // {0,1,2,3},{0,1,3,2},{0,0,0,0},{0,2,3,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,2,3,0}, + // {0,2,1,3},{0,0,0,0},{0,3,1,2},{0,3,2,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,3,2,0}, + // {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, + // {1,2,0,3},{0,0,0,0},{1,3,0,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,3,0,1},{2,3,1,0}, + // {1,0,2,3},{1,0,3,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,0,3,1},{0,0,0,0},{2,1,3,0}, + // {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, + // {2,0,1,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,0,1,2},{3,0,2,1},{0,0,0,0},{3,1,2,0}, + // {2,1,0,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,1,0,2},{0,0,0,0},{3,2,0,1},{3,2,1,0}}; + + // This method is a *lot* faster than using (int)Math.floor(x) + private static int fastfloor(double x) { + return x>0 ? (int)x : (int)x-1; + } + + private static double dot(int g[], double x, double y) { + return g[0]*x + g[1]*y; } + + private static double dot(int g[], double x, double y, double z) { + return g[0]*x + g[1]*y + g[2]*z; } + + private static double dot(int g[], double x, double y, double z, double w) { + return g[0]*x + g[1]*y + g[2]*z + g[3]*w; } + +// 2D simplex noise +public static double noise(double xin, double yin) { + + double n0, n1, n2; // Noise contributions from the three corners + + // Skew the input space to determine which simplex cell we're in + final double F2 = 0.5*(Math.sqrt(3.0)-1.0); + double s = (xin+yin)*F2; // Hairy factor for 2D + int i = fastfloor(xin+s); + int j = fastfloor(yin+s); + + final double G2 = (3.0-Math.sqrt(3.0))/6.0; + double t = (i+j)*G2; + double X0 = i-t; // Unskew the cell origin back to (x,y) space + double Y0 = j-t; + double x0 = xin-X0; // The x,y distances from the cell origin + double y0 = yin-Y0; + + // For the 2D case, the simplex shape is an equilateral triangle. + // Determine which simplex we are in. + int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords + if(x0>y0) {i1=1; j1=0;} // lower triangle, XY order: (0,0)->(1,0)->(1,1) + else {i1=0; j1=1;} // upper triangle, YX order: (0,0)->(0,1)->(1,1) + + // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and + // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where + // c = (3-sqrt(3))/6 + + double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords + double y1 = y0 - j1 + G2; + double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords + double y2 = y0 - 1.0 + 2.0 * G2; + + // Work out the hashed gradient indices of the three simplex corners + int ii = i & 255; + int jj = j & 255; + int gi0 = perm[ii+perm[jj]] % 12; + int gi1 = perm[ii+i1+perm[jj+j1]] % 12; + int gi2 = perm[ii+1+perm[jj+1]] % 12; + + // Calculate the contribution from the three corners + double t0 = 0.5 - x0*x0-y0*y0; + if(t0<0) n0 = 0.0; + else { + t0 *= t0; + n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient + } + + double t1 = 0.5 - x1*x1-y1*y1; + if(t1<0) n1 = 0.0; + else { + t1 *= t1; + n1 = t1 * t1 * dot(grad3[gi1], x1, y1); + } + + double t2 = 0.5 - x2*x2-y2*y2; + if(t2<0) n2 = 0.0; + else { + t2 *= t2; + n2 = t2 * t2 * dot(grad3[gi2], x2, y2); + } + + // Add contributions from each corner to get the final noise value. + // The result is scaled to return values in the interval [-1,1]. + return 70.0 * (n0 + n1 + n2); +} + */ + diff --git a/source/scrawl.js b/source/scrawl.js index b22ce9aee..4efc1ee29 100644 --- a/source/scrawl.js +++ b/source/scrawl.js @@ -166,6 +166,11 @@ import { } from './factory/net.js'; +import { + makeNoise, +} from './factory/noise.js'; + + import { makeOval, } from './factory/oval.js'; @@ -420,6 +425,10 @@ export default { makeNet, + // factory/noise.js + makeNoise, + + // factory/oval.js makeOval, diff --git a/source/worker/new-filter.js b/source/worker/new-filter.js index fc76b8568..d9cbd0842 100644 --- a/source/worker/new-filter.js +++ b/source/worker/new-filter.js @@ -16,7 +16,8 @@ let packet, packetFiltersArray; let source, work, cache, actions; -let workstore = {}; +let workstore = {}, + workstoreLastAccessed = {}; const createResultObject = function (len) { @@ -97,7 +98,18 @@ onmessage = function (msg) { packet = msg.data; packetFiltersArray = packet.filters; - if (Object.keys(workstore).length > 100) workstore = {}; + // If something in the workstore hasn't been accessed for more than 3 seconds, we probably don't need it anymore + let workstoreKeys = Object.keys(workstore), + workstoreChoke = Date.now() - 3000; + + workstoreKeys.forEach(k => { + + if (workstoreLastAccessed[k] < workstoreChoke) { + + delete workstore[k]; + delete workstoreLastAccessed[k]; + } + }); cache = {}; actions = []; @@ -112,6 +124,7 @@ onmessage = function (msg) { actions.forEach(a => theBigActionsObject[a.action] && theBigActionsObject[a.action](a)); knit(); } + postMessage(packet); }; @@ -127,7 +140,11 @@ const buildImageGrid = function (data) { if (data && data.width && data.height) { - if (workstore[`grid-${data.width}-${data.height}`]) return workstore[`grid-${data.width}-${data.height}`]; + let name = `grid-${data.width}-${data.height}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } let grid = [], counter = 0; @@ -143,7 +160,8 @@ const buildImageGrid = function (data) { } grid.push(row); } - workstore[`grid-${data.width}-${data.height}`] = grid; + workstore[name] = grid; + workstoreLastAccessed[name] = Date.now(); return grid; } return false; @@ -183,7 +201,11 @@ const buildAlphaTileSets = function (tileWidth, tileHeight, gutterWidth, gutterH if (offsetY < 0) offsetY = 0; if (offsetY >= aHeight) offsetY = aHeight - 1; - if (workstore[`alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`]) return workstore[`alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`]; + let name = `alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } let tiles = [], hold, i, iz, j, jz, x, xz, y, yz; @@ -237,7 +259,8 @@ const buildAlphaTileSets = function (tileWidth, tileHeight, gutterWidth, gutterH tiles.push([].concat(hold)); } } - workstore[`alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`] = tiles; + workstore[name] = tiles; + workstoreLastAccessed[name] = Date.now(); return tiles; } return false; @@ -267,7 +290,11 @@ const buildImageTileSets = function (tileWidth, tileHeight, offsetX, offsetY, da if (offsetY < 0) offsetY = 0; if (offsetY >= tileHeight) offsetY = tileHeight - 1; - if (workstore[`imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`]) return workstore[`imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`]; + let name = `imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } let tiles = []; @@ -290,7 +317,8 @@ const buildImageTileSets = function (tileWidth, tileHeight, offsetX, offsetY, da if (hold.length) tiles.push(hold); } } - workstore[`imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`] = tiles; + workstore[name] = tiles; + workstoreLastAccessed[name] = Date.now(); return tiles; } return false; @@ -303,7 +331,11 @@ const buildHorizontalBlur = function (grid, radius, alpha) { let gridHeight = grid.length, gridWidth = grid[0].length; - if (workstore[`blur-h-${gridWidth}-${gridHeight}-${radius}`]) return workstore[`blur-h-${gridWidth}-${gridHeight}-${radius}`]; + let name = `blur-h-${gridWidth}-${gridHeight}-${radius}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } let horizontalBlur = [], cell; @@ -321,7 +353,8 @@ const buildHorizontalBlur = function (grid, radius, alpha) { horizontalBlur[(y * gridHeight) + x] = cellsToProcess; } } - workstore[`blur-h-${gridWidth}-${gridHeight}-${radius}`] = horizontalBlur; + workstore[name] = horizontalBlur; + workstoreLastAccessed[name] = Date.now(); return horizontalBlur; }; @@ -332,7 +365,11 @@ const buildVerticalBlur = function (grid, radius, alpha) { let gridHeight = grid.length, gridWidth = grid[0].length; - if (workstore[`blur-v-${gridWidth}-${gridHeight}-${radius}`]) return workstore[`blur-v-${gridWidth}-${gridHeight}-${radius}`]; + let name = `blur-v-${gridWidth}-${gridHeight}-${radius}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } let verticalBlur = [], cell; @@ -350,7 +387,8 @@ const buildVerticalBlur = function (grid, radius, alpha) { verticalBlur[(y * gridHeight) + x] = cellsToProcess; } } - workstore[`blur-v-${gridWidth}-${gridHeight}-${radius}`] = verticalBlur; + workstore[name] = verticalBlur; + workstoreLastAccessed[name] = Date.now(); return verticalBlur; }; @@ -370,7 +408,11 @@ const buildMatrixGrid = function (mWidth, mHeight, mX, mY, alpha, data) { let iWidth = data.width, iHeight = data.height; - if (workstore[`matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`]) return workstore[`matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`]; + let name = `matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } let dataLength = data.data.length, x, xz, y, yz, i, iz, @@ -405,7 +447,8 @@ const buildMatrixGrid = function (mWidth, mHeight, mX, mY, alpha, data) { grid.push(cell); } } - workstore[`matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`] = grid; + workstore[name] = grid; + workstoreLastAccessed[name] = Date.now(); return grid; }; @@ -605,6 +648,73 @@ const processResults = function (store, incoming, ratio) { } }; +const getHSLfromRGB = function (dr, dg, db) { + + let minColor = Math.min(dr, dg, db), + maxColor = Math.max(dr, dg, db); + + let lum = (minColor + maxColor) / 2; + + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); + else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); + else hue = 4 + ((dr - dg) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; +}; + +const getRGBfromHSL = function (h, s, l) { + + if (!s) { + + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } + + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + let r = calculator(tr, tempLum1, tempLum2) * 255, + g = calculator(tg, tempLum1, tempLum2) * 255, + b = calculator(tb, tempLum1, tempLum2) * 255; + + return [r, g, b]; +}; + const theBigActionsObject = { 'alpha-to-channels': function (requirements) { @@ -837,73 +947,6 @@ const theBigActionsObject = { const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255; - const getHSLfromRGB = function (dr, dg, db) { - - let minColor = Math.min(dr, dg, db), - maxColor = Math.max(dr, dg, db); - - let lum = (minColor + maxColor) / 2; - - let sat = 0; - - if (minColor !== maxColor) { - - if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); - else sat = (maxColor - minColor) / (2 - maxColor - minColor); - } - - let hue = 0; - - if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); - else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); - else hue = 4 + ((dr - dg) / (maxColor - minColor)); - - hue *= 60; - - if (hue < 0) hue += 360; - - return [hue, sat, lum]; - }; - - const getRGBfromHSL = function (h, s, l) { - - if (!s) { - - let gray = Math.floor(l * 255); - return [gray, gray, gray]; - } - - let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), - tempLum2 = (2 * l) - tempLum1; - - const calculator = function (t, l1, l2) { - - if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); - if (t * 2 < 1) return l1; - if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); - return l2; - }; - - h /= 360; - - let tr = h + 0.333, - tg = h, - tb = h - 0.333; - - if (tr < 0) tr += 1; - if (tr > 1) tr -= 1; - if (tg < 0) tg += 1; - if (tg > 1) tg -= 1; - if (tb < 0) tb += 1; - if (tb > 1) tb -= 1; - - let r = calculator(tr, tempLum1, tempLum2) * 255, - g = calculator(tg, tempLum1, tempLum2) * 255, - b = calculator(tb, tempLum1, tempLum2) * 255; - - return [r, g, b]; - }; - switch (blend) { case 'color-burn' : @@ -1833,6 +1876,231 @@ const theBigActionsObject = { else processResults(work, output, opacity); }, + 'displace': function (requirements) { + + let [input, output, mix] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, channelX, channelY, scaleX, scaleY, offsetX, offsetY, transparentEdges, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == channelX) channelX = 'red'; + if (null == channelY) channelY = 'green'; + if (null == scaleX) scaleX = 1; + if (null == scaleY) scaleY = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + if (null == transparentEdges) transparentEdges = false; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; + + if (channelX == 'red') channelX = mixR; + else if (channelX == 'green') channelX = mixG; + else if (channelX == 'blue') channelX = mixB; + else channelX = mixA; + + if (channelY == 'red') channelY = mixR; + else if (channelY == 'green') channelY = mixG; + else if (channelY == 'blue') channelY = mixB; + else channelY = mixA; + + let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); + + const copyPixel = function (fromPos, toPos, channel) { + + if (fromPos < 0) outA[toPos] = 0; + else { + + outR[toPos] = channel.r[fromPos]; + outG[toPos] = channel.g[fromPos]; + outB[toPos] = channel.b[fromPos]; + outA[toPos] = channel.a[fromPos]; + } + }; + + const getLinePositions = function (x, y) { + + let ix = x, + iy = y, + mx = x + offsetX, + my = y + offsetY; + + let mPos = -1, + iPos = (iy * iWidth) + ix; + + if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; + + return [iPos, mPos]; + }; + + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dx = Math.floor(x + ((127 - channelX[mPos]) / 127) * scaleX); + let dy = Math.floor(y + ((127 - channelY[mPos]) / 127) * scaleY); + let dPos; + + if (!transparentEdges) { + + if (dx < 0) dx = 0; + if (dx >= iWidth) dx = iWidth - 1; + if (dy < 0) dy = 0; + if (dy >= iHeight) dy = iHeight - 1; + + dPos = (dy * iWidth) + dx; + } + else { + + if (dx < 0 || dx >= iWidth || dy < 0 || dy >= iHeight) dPos = -1; + else dPos = (dy * iWidth) + dx; + } + + copyPixel(dPos, iPos, input); + } + else copyPixel(iPos, iPos, input); + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'emboss': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, strength, angle, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == strength) strength = 1; + if (null == angle) angle = true; + + strength = Math.abs(strength); + + while (angle < 0) { + angle += 360; + } + + angle = angle % 360; + + // build weights Array ... `angle == 0` is pointing directly to the east (right of origin) + let slices = Math.floor(angle / 45), + remains = ((angle % 45) / 45) * strength, + weights = new Array(9); + + weights = weights.fill(0, 0, 9); + weights[4] = 1; + + if (slices == 0) { + weights[5] = strength - remains; + weights[8] = remains; + weights[3] = -weights[5]; + weights[0] = -weights[8]; + } + else if (slices == 1) { + weights[8] = strength - remains; + weights[7] = remains; + weights[0] = -weights[8]; + weights[1] = -weights[7]; + } + else if (slices == 2) { + weights[7] = strength - remains; + weights[6] = remains; + weights[1] = -weights[7]; + weights[2] = -weights[6]; + } + else if (slices == 3) { + weights[6] = strength - remains; + weights[3] = remains; + weights[2] = -weights[6]; + weights[5] = -weights[3]; + } + else if (slices == 4) { + weights[3] = strength - remains; + weights[0] = remains; + weights[5] = -weights[3]; + weights[8] = -weights[0]; + } + else if (slices == 5) { + weights[0] = strength - remains; + weights[1] = remains; + weights[8] = -weights[0]; + weights[7] = -weights[1]; + } + else if (slices == 6) { + weights[1] = strength - remains; + weights[2] = remains; + weights[7] = -weights[1]; + weights[6] = -weights[2]; + } + else { + weights[2] = strength - remains; + weights[5] = remains; + weights[6] = -weights[2]; + weights[3] = -weights[5]; + } + + const hold = createResultObject(len); + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + const {r:holdR, g:holdG, b:holdB, a:holdA} = hold; + + // Need to grayscale the input before processing it + for (let i = 0; i < len; i++) { + + let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); + + outR[i] = gray; + outG[i] = gray; + outB[i] = gray; + outA[i] = inA[i]; + } + + grid = buildMatrixGrid(3, 3, 1, 1, hold.a); + + const doCalculations = function (inChannel, matrix) { + + let val = 0; + + for (let m = 0, mz = matrix.length; m < mz; m++) { + + if (weights[m]) val += (inChannel[matrix[m]] * weights[m]); + } + return val; + } + + for (let i = 0; i < len; i++) { + + let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); + + holdR[i] = gray; + holdG[i] = gray; + holdB[i] = gray; + holdA[i] = inA[i]; + } + + for (let i = 0; i < len; i++) { + + if (holdA[i]) { + + outR[i] = doCalculations(holdR, grid[i]); + outG[i] = doCalculations(holdG, grid[i]); + outB[i] = doCalculations(holdB, grid[i]); + outA[i] = holdA[i]; + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + 'flood': function (requirements) { let [input, output] = getInputAndOutputChannels(requirements); @@ -2058,11 +2326,21 @@ const theBigActionsObject = { let [input, output] = getInputAndOutputChannels(requirements); - let {opacity, offsetX, offsetY, lineOut} = requirements; + let {opacity, offsetRedX, offsetRedY, offsetGreenX, offsetGreenY, offsetBlueX, offsetBlueY, offsetAlphaX, offsetAlphaY, lineOut} = requirements; if (null == opacity) opacity = 1; - if (null == offsetX) offsetX = 0; - if (null == offsetY) offsetY = 0; + if (null == offsetRedX) offsetRedX = 0; + if (null == offsetRedY) offsetRedY = 0; + if (null == offsetGreenX) offsetGreenX = 0; + if (null == offsetGreenY) offsetGreenY = 0; + if (null == offsetBlueX) offsetBlueX = 0; + if (null == offsetBlueY) offsetBlueY = 0; + if (null == offsetAlphaX) offsetAlphaX = 0; + if (null == offsetAlphaY) offsetAlphaY = 0; + + let simpleoffset = false; + + if (offsetRedX == offsetGreenX && offsetRedX == offsetBlueX && offsetRedX == offsetAlphaX && offsetRedY == offsetGreenY && offsetRedY == offsetBlueY && offsetRedY == offsetAlphaY) simpleoffset = true; const {r:inR, g:inG, b:inB, a:inA} = input; const {r:outR, g:outG, b:outB, a:outA} = output; @@ -2070,7 +2348,7 @@ const theBigActionsObject = { let grid = buildImageGrid(), gWidth = grid[0].length, gHeight = grid.length, - dx, dy, inCell, outCell; + drx, dry, dgx, dgy, dbx, dby, dax, day, inCell, outCell; for (let y = 0; y < gHeight; y++) { for (let x = 0; x < gWidth; x++) { @@ -2079,17 +2357,54 @@ const theBigActionsObject = { if (inA[inCell]) { - dx = x + offsetX; - dy = y + offsetY; + if (simpleoffset) { - if (dx >= 0 && dx < gWidth && dy >= 0 && dy < gHeight) { + drx = x + offsetRedX; + dry = y + offsetRedY; - outCell = grid[dy][dx]; + if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) { + + outCell = grid[dry][drx]; + outR[outCell] = inR[inCell]; + outG[outCell] = inG[inCell]; + outB[outCell] = inB[inCell]; + outA[outCell] = inA[inCell]; + } + } + else { - outR[outCell] = inR[inCell]; - outG[outCell] = inG[inCell]; - outB[outCell] = inB[inCell]; - outA[outCell] = inA[inCell]; + drx = x + offsetRedX; + dry = y + offsetRedY; + dgx = x + offsetGreenX; + dgy = y + offsetGreenY; + dbx = x + offsetBlueX; + dby = y + offsetBlueY; + dax = x + offsetAlphaX; + day = y + offsetAlphaY; + + if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) { + + outCell = grid[dry][drx]; + outR[outCell] = inR[inCell]; + } + + if (dgx >= 0 && dgx < gWidth && dgy >= 0 && dgy < gHeight) { + + outCell = grid[dgy][dgx]; + outG[outCell] = inG[inCell]; + } + + if (dbx >= 0 && dbx < gWidth && dby >= 0 && dby < gHeight) { + + outCell = grid[dby][dbx]; + outB[outCell] = inB[inCell]; + } + + if (dax >= 0 && dax < gWidth && day >= 0 && day < gHeight) { + + outCell = grid[day][dax]; + outA[outCell] = inA[inCell]; + } } } } From 559731a78545fa9d5844fb9bd6f5d055652b670a Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Wed, 20 Jan 2021 19:55:53 +0000 Subject: [PATCH 12/28] Noise assets - perlin noise generators --- demo/canvas-007.html | 3 + demo/canvas-007.js | 3 +- demo/filters-019.html | 176 +++++ demo/filters-019.js | 245 +++++++ demo/index.html | 6 + demo/thumbs/canvas-007.webp | Bin 16436 -> 20896 bytes demo/thumbs/filters-017.webp | Bin 0 -> 29282 bytes demo/thumbs/filters-018.webp | Bin 0 -> 36000 bytes demo/thumbs/filters-019.webp | Bin 0 -> 37566 bytes docs/index.html | 52 +- source/core/utilities.js | 300 ++++++++ source/factory/noise.js | 1251 ++++++++++++++++++++++++---------- source/mixin/filter.js | 5 + source/mixin/pattern.js | 2 +- 14 files changed, 1624 insertions(+), 419 deletions(-) create mode 100644 demo/filters-019.html create mode 100644 demo/filters-019.js create mode 100644 demo/thumbs/filters-017.webp create mode 100644 demo/thumbs/filters-018.webp create mode 100644 demo/thumbs/filters-019.webp diff --git a/demo/canvas-007.html b/demo/canvas-007.html index 688853cbb..469b8eff6 100644 --- a/demo/canvas-007.html +++ b/demo/canvas-007.html @@ -13,6 +13,9 @@ .controls { grid-template-columns: 1fr 2fr 1fr 2fr; } + img { + display: none; + } diff --git a/demo/canvas-007.js b/demo/canvas-007.js index 392fc198c..327745953 100644 --- a/demo/canvas-007.js +++ b/demo/canvas-007.js @@ -12,7 +12,7 @@ scrawl.importDomImage('.map'); canvas.set({ fit: 'fill', - backgroundColor: 'lightgray', + backgroundColor: 'beige', css: { border: '1px solid black' } @@ -420,6 +420,7 @@ scrawl.makeFilter({ lineMix: 'map', scaleX: 20, scaleY: 30, + transparentEdges: true, } ], }); diff --git a/demo/filters-019.html b/demo/filters-019.html new file mode 100644 index 000000000..91973ed27 --- /dev/null +++ b/demo/filters-019.html @@ -0,0 +1,176 @@ + + + + + + + + Demo Filters 019 + + + + + + +

    Scrawl-canvas v8 - Filters test 019

    +

    Using a Noise asset with a displace filter

    + +
    + +
    Canvas width
    +
    + +
    Canvas height
    +
    + +
    Noise function
    +
    + +
    + +
    Color output
    +
    + +
    + +
    Monochrome start
    +
    + +
    Monochrome range
    +
    + +
    Gradient start
    +
    + +
    Gradient end
    +
    + +
    Hue start
    +
    + +
    Hue range
    +
    + +
    Saturation
    +
    + +
    Luminosity
    +
    + +
    Octave function
    +
    + +
    + +
    Octaves
    +
    + +
    Sum function
    +
    + +
    + +
    Sine Frequency Coefficient
    +
    + +
    Smoothing
    +
    + +
    + +
    Presets
    +
    + +
    + +
    Scale
    +
    + +
    Size
    +
    + +
    Random seed
    +
    + +
    Persistence
    +
    + +
    Lacunarity
    +
    + +
    Modular Amplitude
    +
    + +
    + +
    + + +
    + + + +

    + +
    +

    Test purpose

    + +
      +
    • Create a test Picture entity
    • +
    • Create an areaAlpha filter and apply it to the test entity
    • +
    • Update filter attributes and observe the effect they have on the entity
    • +
    + +

    Annotated code

    +
    + + + + + + diff --git a/demo/filters-019.js b/demo/filters-019.js new file mode 100644 index 000000000..033e358e8 --- /dev/null +++ b/demo/filters-019.js @@ -0,0 +1,245 @@ +// # Demo Filters 019 +// Using a Noise asset with a displace filter + +// [Run code](../../demo/filters-019.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas, + noiseCanvas = scrawl.library.canvas['noise-canvas']; + +scrawl.importDomImage('.flowers'); + + +let noiseAsset = scrawl.makeNoise({ + + name: 'my-noise-generator', + width: 400, + height: 400, + + noiseFunction: 'simplex', +}); + +// Create the filter +scrawl.makeFilter({ + + name: 'noise', + method: 'image', + + asset: 'my-noise-generator', + + width: 400, + height: 400, + + copyWidth: '100%', + copyHeight: '100%', + + lineOut: 'map', +}); + +scrawl.makeFilter({ + + name: 'displace', + method: 'displace', + + lineMix: 'map', + + scaleX: 20, + scaleY: 20, + + transparentEdges: true, +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['noise', 'displace'], +}); + +scrawl.makePicture({ + + name: 'noisecanvas-display', + group: noiseCanvas.base.name, + + width: '100%', + height: '100%', + copyWidth: '100%', + copyHeight: '100%', + + asset: 'my-noise-generator', +}); + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testMessage = document.querySelector('#reportmessage'), + width = document.querySelector('#width'), + height = document.querySelector('#height'), + octaves = document.querySelector('#octaves'), + sineFrequencyCoeff = document.querySelector('#sineFrequencyCoeff'), + scale = document.querySelector('#scale'), + size = document.querySelector('#size'), + persistence = document.querySelector('#persistence'), + lacunarity = document.querySelector('#lacunarity'), + monochromeStart = document.querySelector('#monochromeStart'), + monochromeRange = document.querySelector('#monochromeRange'), + hueStart = document.querySelector('#hueStart'), + hueRange = document.querySelector('#hueRange'), + saturation = document.querySelector('#saturation'), + luminosity = document.querySelector('#luminosity'), + modularAmplitude = document.querySelector('#modularAmplitude'); + + return function () { + + testMessage.textContent = `Dimensions: width - ${width.value}, height - ${height.value} +Color (monochrome): start: ${monochromeStart.value}; range: ${monochromeRange.value} +Color (hue): start: ${hueStart.value}; range: ${hueRange.value}; saturation: ${saturation.value}; luminosity: ${luminosity.value} +Scale: ${scale.value}; Size: ${size.value} +Octaves: ${octaves.value}; Sine frequency coefficient: ${sineFrequencyCoeff.value} +Persistence: ${persistence.value}; Lacunarity: ${lacunarity.value}; Modular amplitude: ${modularAmplitude.value}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: [canvas, noiseCanvas], + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: noiseAsset, + + useNativeListener: true, + preventDefault: true, + + updates: { + + width: ['width', 'round'], + height: ['height', 'round'], + noiseFunction: ['noiseFunction', 'raw'], + color: ['color', 'raw'], + gradientStart: ['gradientStart', 'raw'], + gradientEnd: ['gradientEnd', 'raw'], + octaveFunction: ['octaveFunction', 'raw'], + octaves: ['octaves', 'round'], + sumFunction: ['sumFunction', 'raw'], + sineFrequencyCoeff: ['sineFrequencyCoeff', 'float'], + smoothing: ['smoothing', 'float'], + scale: ['scale', 'round'], + size: ['size', 'round'], + seed: ['seed', 'raw'], + persistence: ['persistence', 'float'], + lacunarity: ['lacunarity', 'round'], + modularAmplitude: ['modularAmplitude', 'float'], + monochromeStart: ['monochromeStart', 'round'], + monochromeRange: ['monochromeRange', 'round'], + hueStart: ['hueStart', 'float'], + hueRange: ['hueRange', 'float'], + saturation: ['saturation', 'float'], + luminosity: ['luminosity', 'float'], + }, +}); + +scrawl.addNativeListener(['input', 'change'], function (e) { + + let val = e.target.value; + + if (null != val) { + + let oFunc = document.querySelector('#octaveFunction'), + oct = document.querySelector('#octaves'), + sFunc = document.querySelector('#sumFunction'); + + switch (val) { + + case 'plain' : + noiseAsset.presetTo(val); + oct.value = 1; + oFunc.options.selectedIndex = 0; + sFunc.options.selectedIndex = 0; + break; + + case 'clouds' : + noiseAsset.presetTo(val); + oct.value = 5; + oFunc.options.selectedIndex = 0; + sFunc.options.selectedIndex = 0; + break; + + case 'turbulence' : + noiseAsset.presetTo(val); + oct.value = 5; + oFunc.options.selectedIndex = 1; + sFunc.options.selectedIndex = 0; + break; + + case 'marble' : + noiseAsset.presetTo(val); + oct.value = 5; + oFunc.options.selectedIndex = 1; + sFunc.options.selectedIndex = 1; + break; + + case 'wood' : + noiseAsset.presetTo(val); + oct.value = 1; + oFunc.options.selectedIndex = 0; + sFunc.options.selectedIndex = 2; + break; + } + } +}, '#presets'); + +// Setup form +document.querySelector('#width').value = 400; +document.querySelector('#height').value = 400; +document.querySelector('#noiseFunction').options.selectedIndex = 1; +document.querySelector('#color').options.selectedIndex = 0; +document.querySelector('#gradientStart').value = '#ff0000'; +document.querySelector('#gradientEnd').value = '#00ff00'; +document.querySelector('#octaveFunction').options.selectedIndex = 0; +document.querySelector('#octaves').value = 1; +document.querySelector('#sumFunction').options.selectedIndex = 0; +document.querySelector('#sineFrequencyCoeff').value = 1; +document.querySelector('#smoothing').options.selectedIndex = 3; +document.querySelector('#scale').value = 50; +document.querySelector('#size').value = 256; +document.querySelector('#seed').value = 'noize'; +document.querySelector('#persistence').value = 0.5; +document.querySelector('#lacunarity').value = 2; +document.querySelector('#modularAmplitude').value = 5; +document.querySelector('#presets').options.selectedIndex = 0; +document.querySelector('#monochromeStart').value = 0; +document.querySelector('#monochromeRange').value = 255; +document.querySelector('#hueStart').value = 0; +document.querySelector('#hueRange').value = 120; +document.querySelector('#saturation').value = 100; +document.querySelector('#luminosity').value = 50; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/index.html b/demo/index.html index 1f43e1ca9..0490a4feb 100644 --- a/demo/index.html +++ b/demo/index.html @@ -272,6 +272,12 @@

    Filters functionality tests

    Filters 017 - Parameters for: displace filter
    +
    +
    Filters 018 - Parameters for: emboss filter
    + +
    +
    Filters 019 - Using a Noise asset with a displace filter
    +
    Filters 051 - Canvas engine filter strings (based on CSS filters)
    diff --git a/demo/thumbs/canvas-007.webp b/demo/thumbs/canvas-007.webp index b49d5b7c6a5d5e0f76aa501e681b096372afd932..0e8b5c9f4de50529fe1cf83532291821de97f05d 100644 GIT binary patch delta 16683 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 Y!~&Xs{qz&Uj*Q2VJN;oHFHZQs06mwsfB*mh diff --git a/demo/thumbs/filters-017.webp b/demo/thumbs/filters-017.webp new file mode 100644 index 0000000000000000000000000000000000000000..e2cce8418f83c18e3ff7c553e65eb6068dbb6512 GIT binary patch literal 29282 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 literal 0 HcmV?d00001 diff --git a/demo/thumbs/filters-018.webp b/demo/thumbs/filters-018.webp new file mode 100644 index 0000000000000000000000000000000000000000..4c14e672ec75bad8981961d07ee56f16dd0b1efa GIT binary patch literal 36000 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

    -4XOntxw-8he}mYZRgpAE^hWsPfs zSx3{Fev8j!K3WqW8T+VF{eCB{esit28ILRKNh~J(n0k&G_4ld9YJsF@j;E7ZjJ$mX zz{C)%^^k>LC+8I0PRqmcEM6l1*EGLavv=}g0R5l5bC!IcR(5>eSfRQzA`KI7#hO55$CI9%`iHL zJw~C7jpF_@381@st=$+=uYM1%Q@VRlTh_ky{5yJBwzd)8cEoIH91CT>Nx14&q}kNj zK1=;O>Lrw&#$WcY>4))T0Y3J!A2Y*<%llw~nBuk%PWKyl`dHx3TMZWOVVt%aE!@MOL~U`cDoSDn7`VUc zuJH>;(%cs#%QHp|9x)VFUg+lDh;7x{LUFBt?~R>#(AVGD1&`glt-~neeHzmNCoW4J zFj*@|VsN-p`~eLR0j$t-#MuHV3~Wf{&&?`+Scr3EUJ}4S8)H&nl1`c-$^q5L3*~^~ zMLy_nlDi8iHT1yOsZjLNCnzH=M~p&glk7%vucjn@FveP#1!X8ORl(_$WB7v8Kqqs% zb>5PZYC9{)*G}X|b{xA>*Ffq1`#g>8gI=qPHii!{+737pz_?kh#0}-eK4Vu7fcBWZ zlvVIp3%p_C51(Hj4tD@6tTzl?ez9HmO}dJc=-_xt`_4UObgA@r|K5tL48z9&HEBK| zA<7iapLS$1eJ3QYX~UO{@fZG@3-b*=?fAls4v(KAv)2@mon{oq!Y;hBA#Jee7@Wb;Z!VtJR6Q#PP`<9}DUI=64J`CfPJ&BO zJxm93x*zeWd|ySrMdYn+R{P{DS(7!R8i--4#xI{3r#Mq=sm+TMt1k$Ug~{{?Xb(11t^pxhN)^=0HzzpUsw6= z>D5DT`yFkZX!&pSLL>Emn<|rHG$B(r0g*FQWHg#3_&v{ZLbe1rmM)bl>0tM7ocle| zkuMO=0ePiU7LKW8s~6a0$ApvKe>sRFh}>?dk0Vi8bwy-Vv9KKxdb0cO;h6pK4}hkB z0b&VV(h29`>EmUH?e)Ea>l+g9hcnz`wK{YkcYvI@@~!%~ zgU?d`1EKlw=3g<$u)LzTzi;7Vf+w?5A@Qu!ToX4x>mkx}`CX5hd+VtOp^x^{AQ&u{ zE*bBFR<-!&$d=PX#JxVnxBwWUWt2TF38f(>GS>#efnyBKlgccmsmud$rg9f237NxY zk9lQ)eXH=Eh&)#*FiJ|NVcI-vE4P{EVM>?2){Q5kVc}9{D~0~ZH2zd?|GC;yDGabB zI!80?BsIDwM1}#YBb4C}Y=pD$CeqW5kR#P?u9!{KI=yJ0V`R?l}-h!Gl?qK@kP6X9sAu#E$-GYk7yT3gWw=`F?^*( z^-B~tttwcc)I4QzO0_CRg(o3qdKfr4uhaUvJZ1LZk|qqzmHc641$@3^;+Fqvg8jY- z1nLIBGKX;?M*xPVjG{1TJH$@QyRyhQMkeq2cE=y>NnyeTLo0e0cPdEQJkVz2%p@W*lw8C#BwM)fC*s~5%>3$o=vO-H_ zZ9F`?A7dqOt{(Y2`nm6P`n267I&u?vlSNoS$q^v9N;tu4V$}kH;t`iOHXaE^4jsn2 zEwyM;c3>FR`~qoOUTAY7#%ksN#K{%jdq4=^EN=6$hPIj(bu%s=EAmBk@rYUGv4piW zwAai2${@%1QOeiJ&G)Y4dr_W3cm&9O&juhn&-;(>Y!k3Mms*Eg;tH>Lm>6@2w5^4|+eiHTZZ&xvRM-}yxS2jXW#U6o%?2!m#O z=1tv_=325kn+gm#*-+*MV!-cjKcpE3cS1aOY0BfNGFfYd0DNSx2~`cQs4pxA1{*q1 zS(`PofoLW{;VT(0Sb{fIK*Z1sAR~SbS%1_PWv3>?E*=VnqD|_7QFssjkbH}OxA(9& zJAl!X0<(;P=r?y8TEs0k5AV`cs_>{-VcdnD4(_;qLG8e*q*Sv)OgIp*5%XZwCCj2^ z0WPG|1|mgrXjsXkS63Co3P>~)4X)^JXj|`a=PBjX?e&R=9m_PJ(sv3CA!4A3J(zo# z(`qI(jK&Tp!j)L~4Vfv~!U05_!Ih@?+jRU5*g=6M%Fs2QmdC}FB~q<^A?R4RMjkR& zHbQBNlyO8Pi*0`fSsr<<{zphGm$iMp=8WJ--^@4qQnG5bLpWtX$QBi6c%RuvQQIm> z;R`%l#;1JPHI=d_RpR@{)eo5Yai`doQvYELnMd4;oE_V9F?fAb<3-2u9$Wu8!*()b zydRpu#rA62JLm%pHOQJTd6pG!QDmX8v-SqTKw7y;iKoQGc`yq&sr@k+IeN!$Xw(I6 z=OPisj`3k`H5oHCuE4Tq?S?v5eE+BNYH|h@HylSgR9e*DSUR6ZE{I?n7-&s&JL^&_ z@`+cWOP*baZ5MA`>+*0*PXloD;5#AqcLaFb{gNXq>)WAdwM znGiewiuW+zl|Px!;-;;$eV{I&=Ch{I)Xgr_i|{KH4WutcIB>$XBXne;+To=51gpJ> z)Ovb)R%cs%hT{RtKHoQysIZno(f_i`yk1@7_d^+l#!*wL`(db zhFQ7TZv}-vLF9`^nu+QZsPquq44pcUXwPpVft|g^@6HyZ#PK!u2<4S1>0z(4pXaC7F%?sxugq)e#;W(1# zQ`(HN{>`O|5)L3;>LH^Nn>^rZ%!E1vLUF@D_uJ)YIT!C00TE`*;!nmFfuuzzvDjCT3(M)h+h%?E&5h0upEUM!&^+!cObr3*W3*{m?#K zVvcBN-M}kqGX*ebaqA^-FjEqNebSs$J&WRLj`-D03&J>>v{r$&3|up5u_(|<=JKFTuF_qQcc;GUlwp*<84tHJy=g?;gVE>qM)CdL0LZZeFPzAeuzoLv_Aaf(f(RDk`E&V??;i8rbdeWNepkgQR)yWBb@4j~hB z1lJSSEafn|#cBC1gDjEZ9L{O4!-?KpW9a@+G5^h9f~l(vd(V{K4d`i`YpOC0;i(4M ze05d{(}dUn8&&7Rnq!tcAE0GAwr8O`#pZBxkg~G+Qoe?T)swiRmff-!+RKn6W=PRY z(lN!)6gUvfB05UpWRXeE`C~5_06JBdX3Yz0NCO)q+Kaz-8biSDSuLHsevMCX{GGnI znPX7OSa7qtm2Y`q6?T>Wklm+C=OV44t3|fQt1x$(@v$>0pOUmeU8xjMX;HVXXe0y^ zOJNqY$~RrGLPRjNBv-0fF~&z^2O`!V71}C5|Cf6aCPzD!r8^aQPPetvGfnwe4TVR9 zCC6%oeYwFc4`X%%_GP8ROuLx*U!(-@ZYnf2w?2SuYw3y`83~ULYGGcQ zi?lI%-y^?xBMa4yL@~9Ta~-1q_cwO;*2$p{0>!ZcoMv_W>*&0?e483?f1mg-9IM)@ zhMAGUR0WzSe0D+o>gL?5D|)m_iM?6|>Dca1IBT-Di;W*eRwpGaQ82^vY!#jVbQNN5t#`yTx^ zX2mN1h`hNT98d0Xa&*}vS+aYi6rEi;i1_?eB80Je}NkpFeRn;4P}xI#B~)NmJq zL#&_re9@Iy49KdZfPM{WAD&t?F`%X7(m4K>nfUUI>C%-hp=eJpD~L}S#w6-=z`tA5 zBK#&YgH?O(VjL^^TvsbP4I}+RHAV*i#t;Mz9|nJtO+|jh)u_}RtlG8GcS)3VumzHB zab|xk7kwz?LMausq52zE2&js7MUmLnrpI9o*I$Zld#=P!)tiCE`XW4>+fllJ$Ba6|3 z)I-D~woPZDq56j6#fPq(J9xxkKYKD8$H=XXYaO5l7`2kpwX^dsW+JJQ3XXB2;4JU8 zxB_WowZ7QsBozsC?Z2egQ{?nYwzKksXxdms;f2wc8U))U4hf~MC=x+dm6RPABHSnO zq#mG%C1TuGCaAMO@^9P<8HP>yQqaq!d&0`V0f3bx#yzdHj--9&_!duh*D6=kiE}`i zdc>H&j@ST@E`;gt5`(0Lt{>zVQUKC@1;18|2e8MPGwvMgKNx^e|DFqvG}W#diFT1g z_3A3bOi1WkDbzczJhP62L~?R_b8*p+fFe_2-5xu>?nL3xdzrVf-@s`#RLb%$ft!$r zNzh(2NwA~COM4wV|IA_h`#Db2dI8B?EkGQq_R*W3D7OUo>8koGWrYw#wE#KQN7ifB zU-T9l*AG#<({4CH#{n}u>zcLx&s*J}k33AL5{tMWt%N_kJMP%Kb!^gk9lIP!P{teR z7#IKP@evP){PvL4z}tKC2FRAP9ph9{m#wKT#w*@u%~qFn>C77ODGeM<FMWVl@8xK`K=}|?22=p+Em5@2rHt|N;msxCKciYq}%|Ly*kwNR>Xq_J$S9} zh4R$y=lfi3e*HQxq@7BQ&5B-TK036VPXCRU#Je>_2(ecm99|rcTB1ikF+H|SQhU;Q zTT73|R=#PE;A@6Gn}|9?+MWZXEs2d5{;0q%?(ByTt+J30p{cS%KzBuV#{%4K<-v1E zpDpC5p-F$V_N{mC!ul@pNN^?bJaPJ|-9 zk9Fm@tays#1SR^V+Fb0uwG?1OQqIVqHoIdXWr)Ht2yL=BDZQd`#UNG%J_hFB4a3k^ zTygA^y!OS^h*3oRd(x)oH^nMj(c^*CunQ-_;`GB~KZ-`M0zr2NT|(a(zBGEe9!e6Z zsIoV|sTt7AFx%=rNVZ`gtT!y{JzqW&S!^t{J3);>Vort+W3W1dQ4{8(~50xC}(CMI=IOW(mk(RhM++;3?C>*$|k3! zOoOP-3WQO^9V2zSI?I(B=nuEt<{al3rNww_=RqI>qtWxu9@gXy1fiMX(|E$Xp|$!~ zXciF|=kSTmfhSBl1=#o1s!e;0@*swcXAWlU(=#Rx#k4K%>@T$lgT_P1!0*mkB~jk` zZYpaP%y6P{j9~lNTsGQl<*dv0gG}H^T@J34!2vgOaaS+#zuM?o)oqhG3z7#rdafT{ zG_Z&w#FR&dZK^b5-Kd)HI*?RtKmCIF@1ZK)+>d%<=?z%oo$RI|<@AT_hEGqEBKiM3L5K%vVb3 z10Ywg>RW`rMC@rga8tOW9nyRg8_V+ItTar4Sh7l}nRLPT-()lZQ`NDdvYJhR-iiqq zu`LaD`;G^&HG_KB7GfRXi?3)^OhB{oF4>U~oStxiq_RSIKP(#5eqk7{PptC_u-Chl z98@%Xfc`Kf9+n{)GMDYk-mO-{Sb^W_MIO;{WAcm*K~7|xs>EUz{EkZ_S8+b6 z&1TYm_Iphll;)rrONOq)3KBwbp_Wu190Q1*GB6L=eA+ME;OSqNHdPk0w`v>Y!4^Hz zWJ*9YCbSqnLuGO)UJ%e8B<1EO&f;XR zYM*X>bFYFv!4v8Er(i1BeAz8UmV45KSsk>!YMHhhW$o=PJ4`tV^X5u)yi%5f#+1+A<57WQguXKHIb|Ks|gHfQ(B ztGzo{QNmkKl;oYCMsJlz36gL-HRC~jy7=)4^=z5JD`Th$=0iRd0&+Nd%&kwI+sV9W zF=UdapTB6=?o#|Mh~$)_FB3%Ks$3ZnW&Y6}s=w1uHcL8YQnQ_5n6;eR;q;Hl*#T}4 zDrk$;@1itfe6Ew%w2O%&f^qHDY2(ZwmLZ_L;iE`=Lq9}a8zlidxPoXE_rJgBgfI?--TZE1qu|7>z{>#i7OjRay zhUg{$>hMlC>k%+1<<*(wbX&&xahJ9LKJ-U9jCQV)BrB>yp|t36G~9jrvzvU6P8w4s z9?yu^B}ohy+=a*hw(xI`fPT@E63t*+(C$>5qQQ$+2GX) zGwLZwARANc1eeF$^)eU^ZD+X*4x^ocdXa8q0o13P&00>gkliZZpb|?IBGQNL1uvda z<9275$9@XoCOv8;FiNA8vsOGk|G0@Pe3G=_x8rPp|2&z{&{t~I~nya5Z*qi0bQ6k;FcP4o~JZ3^umYynVn)p@4_S5veU zw_P--9uOJ1JMHd{=KVO=D=yyAU5YT0TFRBe!8UhRhB~AqOaDWrYe^Y`1=AHHXtBr@64JM%$k>8 z+<&~*<35P3k6rK*MX{6QZb)#ju}-?WvvmHTd`?6jFJqS^P?3$UW1pBcv{h`?S-(V! zcU~2AxKS}`iwlN$627EwcUqa~IxuyP2 z+FL(T(-MQ749Oiuq4JQbf|RS*T6yezh8&Kgk-^sSkcIDhj8Sbk`mDiqEk0!(Z0kdX zmtr$t>&003MRK@olV`Uo=d&{G1VNI(dQHKW_7^w3I8Ar?qhJYfK3F0hfP5UaE#4P{ z9zA|e>;avi*0zWu`6@$X5g{@JtC@nY>Nl4Sy7W3I2!ivYV|`G%UEY)1FZ>ino)9wYOJ@kgb)y;oB%Mu6!*C-8c}Er0x9mk` z6vG-{3E-B9i?TNu@l;Xk;@bq(nemg>vEwI2#PS9sR;-O{-H)Mrf$OYBiQqZ-+xaEm z2EuKInc*poQ~qSlk(F@njJ_?&F>}^CEp#8YMRp+wT<;q45UCzZSbA0sidn zr=)88Im_S{;TH(|dgm>t7ekN~qQ@43tYieuK_w6?vPi@>30GwMXaa;BV z+-Ngia=crQL0vOzVGKitFH?%)ncpq=duJ3b;8|G&ZZucITa7zrzUU7m8mq5EUgwOd zbjJVh`u?8np&R#7ATF4dMSmc|85{5&^iYPtsNQi_zD_scVsd(vnmluzU24r~O5@ii zV+m0?HHcL+1XroqvVE*os%!KU^hNpjYxxB6Kca3WZY`(Hk25W6JaJT;Zfja_XCBQtX{w2Rt*kg)EkE8 zIb>WmdNhMCT9rTeB=old36s5x$Mh~L4Ft2TxcxG?jD`*UA8xhgN`?m=UD=TlI`fp> z9&ULOUnH7Zf4eYpCLFQ<_~#n_{P0|_JG4{0^5crWzgs6ZP+yPX)&fDKoD8v9TnN$@ zof$89k7SZLI(Lo|=3xMymizTZkZ_(+Q~CI9 znq8ku2FRFzZ>=-g(d^^04b+e;!dpNgD5-rU`fjc5oXw26@o8!Po*6wA!sEXFh_P5$ zuIM%F)$uWa-=-0d{Qk@AyA5Zu0K7Lb6&cFAk}<6qfNJlT0cQPZ(X8=@yWK}aoT@!K zO;ynvn>UJDkrMDnf!r@d3_Jz_E9xF8wc8neG3dHUxM5B)P)QguXqdkq&4Uo3 z?10Z>aB}IeQlr~%_#pWC1Ckzd8=LJ!wAQ&IRf3uCV;}g+DRvtV||OhI{$PE_;&CNAZ{`Ip4qTy&}<`}Sc0fx zh+f7*qCGZGL7UW|@&2@p(NP=I)|?A4sR>8~B4d7eKYXkk;|?YHeH1N*xhyD03z=_P z?nKz4*o5(OxU#Iaq{HtjvA=sSu2VD%^#JTG)P_G>hl*x`B1D0B@Rp6w_(?G_{y{7{ zZ;31(*q?78-^8C=^YZz9jWSb`%d0G6I-p8h3L{E$3E($KKf6Z~xw*AVI^Rz3={0(imZlA8V4PidzOtFNe!sPP31#Gb36_&(a+iNQBGdmMv=E zdoy-u6U2B_X8;*+7XKm@C-)tn<%HU%*3$yR(P%Zz&=tPM7B4Hn0Uy?>NA$z2^l&1v zrU(ZV4;M1O`9ZWy%cd>C)Q|8yJaiZVnA#|1n~aGj8h5+O?%CDxI=3-#$pPbEm(XK< z!4(Gcd;4$M8qlqik^U*!PajHo$QHXRXgi50Ty7QmT@QB1<0zq%Pe{*AQh0yjctKXN zk5u*u-}G|klc9}kh_~z=YbrS2`+8OEU66W^mguC}!Pl)y3R21EZQ4tb0eNzu*sOu& z>2C3e((rG!&5vTC{R~d4BO7BsRct66#wYpoOFZ*VN*kE;U9>Srq6xzp4X}4`*4b?= zDls36I}8HBk$YOl-yS}+QZwQ*`H-^xCX7?Qb2%3xR@q@B9B!=d4HO(G1e7cnJX)M1 zr(t@%1U3B?0lj-;fD^&My2dQhYUF}MYi4dI_9em}>JvgPTo1N-t+LJPaAG=4NZjNs z9WClcEr;61P2J}x&xCwJ`u4FXl9!X?qyLi3$Dait0ZHhHO;8fVP-6kLCZm)iN!Jqm z;NjqVbYAEMP?Xs3y5t8VkFSp0X7c0Ld^3bwJS`)~i_xPP!XJ$)EZ=Pbs}QrBQbe1% zGN2cp2L2fNABt@)t(Gl#1<-Df&gY(SR^qVQn3cR#JPXi++2~_M+W$zZf`-a<)}x74 z*XRkkl7DM;Drt~&ZY$%bA}ZOs#X!GDvi)pRHqPFl|bKPq#_xQ-S9wT zb5dfL!MKtM?S(^O=MTt`cm zhJeyk5J}br>FPD|g`|NsHw|5+ISGG3nS+r;oo2^j>uJ?h8Zb_1PmfNd8sHP>5#=FH zal6XLY}te;@>XFEQb~DDJn3*Cy;WpSXi~UyaV1Am7Gl9SR7P}d3MxN^qspj5MSM4Qk|cx09`rxMRjC^VAW+jMKzn&qWBVERdh$YCARTR3j#wl( z5CA6WzSA66v0zacJCKFAk}q`NT83Y^abM}UTuFf1GnEIfmb=l}Ox^Zfw?YQ!Fd!DRJ1-Wr}R|~8b04f(_stubAqN=${FkxHZ%}STgU>qc=PX&8MQpxO}ePT^_ zz-1k*u3*O`urFq7>va0qzFMiKkB#MP8FPk$UnmZsPtAutd2rzRF^*SkOD~O<;7;Wh zY#uePdyAo%3a3Y7DoG_(yjAVQRHj-haiXUeO*FrXLG9zG{j#DlH%}IHaJ0Q2o|_4{ zi9c9j@alB?#7klFO$1_wG4kBNK7dPo$^95pn6Xx{OS;I({;{%?8!UEg)8u@@%ty zQKc*VRA+BZ?OM*VD}}Y<3ix>WQqJ>Zzma693J^zkmIfheq@@z;wDBLAU=YJ(b}06&UlX@=xNczjY4O8jQx5i7``H3TVBEo_|Qaj&OdlzOhGHYy-}fpBJ`HN z)!33)N6ezL%5_yDK&zvBF1=Jm3r1QjBFEM~+9kS9C{EeSF#+(j(4EpIzE9|{V8XhM z#@2TiM*|$n=v6Z3AH>^yV+O*6&rddL?hhG9zr_|vIGuO#$9k{Zr%sxnUN#wZrMu{y z0oICRTT9~RAo&n{&={HzKq2kk9sXf%Jkar$tN>P`NcMJ#+n<;IdgxPKvZsHy9R|YB zU`lDe&eLyO@NkPN!PE)ju*EDPx7der@?fxn9FxzVlwlI&W@mZdpOT+g3-Oa0bX@o> zPfUZJ9)5g^He$>iIV)I#(aM11fQ{g0EPBKL1C1IY&7zk3=5-Di`N}Rla)UWX`@mp0 z*ba>z^;c7eeYS{2@1DNNkOw^_Ch^8*QmIDfNE-XmB=g1ds^iPlvtNl3VNI?cZ(goL zd;dOvv2F0gJ-T=HyxJ$3I%yCV4f&eF#Wx_da=IR{nbLR;;x4)GEPoo!ar?==kXbzd zoj`IYi7GH7pvK7lfYHZsjKK+UUR3H}^N?LH=!)E#JD{TONU+tPviT`LcUoCR6@8`^ z(8*|Kd4-Jj<-(IBcawcYSj8C#>G%Cy3=hd>J{LUA=wozJ>~X$9_k05~ZrzNf5oGx$ zh1S)im@U_V&&_F|bXI2BkvFE9y@se3WwLmrmZ#wEU7tq+5vt%6TwF~5I3V5Hxbht9 zW;?$rPey^#zNxt^A^$3!(>T9WKrOl7!M&TgIw~Vn#*-9{xscx*yrNv*ssqE}l}r;p z;m>APAT1MiYdps*(y7NPP=3y6KA0P_x8iQNsc)^}jsc+kLFDw$n}cy}kRi=Q%dZ9! zlo3qdf&|Vnuqh&1716Q6@Gol`CxO^qKNEC)RsgV7eXqfy{fd*Mx zTg?^yqXEDct@VF#3Um+=>jV-}Mi43ccipD6vRpSZkLqkc4Q*)5F+N=c*tGLt+!oy` z7bUXS8xINy4y0q1K8G4VE^FPwYV|jYR_rNAHB&cp84HUoUb?TheZV|s%7paWRc;*d ztp@r4CHnm39^Z@=iNUeLCmHCClP_#E>dhW4eq73jOBRC+$mr`&LxD|+aKMLs|4CJf zHASzF*T6|jEu$z*w|Hsw_X^=P=1#A(lR#HGVhevOnX=T)=f4%pjW+k19fsBpsyQYf zLz^#OQFbA+xTN+=bcW~odD!;>DPQnyWGJW+le9#Oub?*7NXaKD>FRE-UGOcM3&d6^E>4^Oi(;7AZ@6r$HJ@KQ!1RzWVp=5JF;S~t_ zP0GqUD_x{lIc?l8q{a`DrZuhZ!Il6vVM@(m@E96J6QOhJ@Z-ONV0{M0+$iFf{)>Ts z@4-F)>NC|ngN4-{h{`*Xcm1&QQg%Z&8qFmd3nlt6pexjc5=g~?Q2sl5*_YQ-|9W@W zo4~)njfi)YuD5@3>7X=%Xq@xv7wsa}?zYgc>*223uaXtaYxgVmxsH{m3%mf+;KvNz zbF+9Jo`4~j(Me3#;b}@I)ZE%btR3)Ve{J@OO<9nC1}-#~Pss5%P}0=w_iP>Um;2$6B%R4X(H!DftcM*YuM zV0rqUqI%CB{YF+OShXh;1ZJL(QXDseIQJ|GD9mBvt#|SyrS}V7F3d$QFNwoG(&^4e z>iU5QP?$HZhy2gNnKRI%uF=G4aRqa=v)$|FDNnP}S;d~W4WBcPeH9&H7)l{Wta4T4 zs5*$EMu7QKHyfIEq+}f_X)D{Si=y{sx4%?PIVVrRuJ*m+kz2ta+(tn?w~{CUWE6z_Ga<+1$Sm4;hCIOC2dqFN z99-o;7X73UlMK5j^k3)bG8=~e+oLC#5Q#Bn(tS6FbDw@v=65p9M=mMv6c%i{2ci$o zS^N{4l#jV~=d(tpuCGpASl1Vr+~{fO1UK?MrhVlDo^|iKe?SK$#OA89I9tinRqxf67Nswo7Si zsds#He_J|!)T2r(svdLTSXQTxpzfmVuIo&!zKN^5%I+-F4kI8j|%|K`s-n@PFRQ_y_{L2nPHqV6L& z6vF)AGazSfEdo^*+26*XrMZrChfHC4plIj@Gu+)lgbzsPrir$6QJ1W&C35UdbW@=T1*ya)zDaiR zo*^~XNj5*Z`#CIh{sgP4RSD&d+f+_sQT@UN@1F|imCX=YV+M;xrEzC*T02KLda%M= z)|9m6t0J7;dS#JF!>D^khxJy8`K&X60q+<3!2w?$YwsI0WrLEIYR(C)w%EeR?QsDh z^5cD&Tz2TA4wrc{I9SRuve0xwqu0D(${P)bs+#GCfrdmlU-6|i&G8=g-GJRo_IkHP z?Ct1U9*q4aQULQMc0ONly*Wq}(QHxL5w7J!>+xObJ zu_+Ll(Us8(Tql;`G28|Ce~BK`%qcmEpwmnX5v7Ae1VQ-1sa`5$)lJf^xzO7>0n@|H zWG*=NV0=zeX5vnB>%U&!>&nWJx!ZNH#z{08+xvKc`#v$ISY@#MMv#b2RYH(~jCL0I ziF%vO1SeK!J_hcZQ4VWBqCRFxnAWt@IBPTxs~Oy0n7xE$X%7-INyN$2Q%3FuJn4PU zlW)wuI&MKvz##Q^Bad2$)qF)qoD_5)< z!j?>&Rn}RlJYbE4V528?HAD24$8eA4u7}&TM?`KQd@Nv{Bpf(}>fETMfd#BcCZs|B zsQP`AGp436s+pigApgCq3h)(T8XU)*{I^EqR$Y}mJjG*!ct&I9C3nQR1_cPz3NZ1HBCrLoL<)vf$f zkK|XJiZOvhsF+hwSb^x$zTQ#e6Qz~Djj>;uraiO35#`4!||!g)7$Kl0hvAA#z5GY^5z}z_$_H2si%zmS=$?sf}S@6Gddl z!P_i>`OqtV7SByO1>PJH%hO;(G}qzibZd*a&ISx9~pFpVt zc#Ydzk*NRMnUjaaR=`oJjRY}mN!S}{cxrBHcqjH4MulF#9)By+;XGlOrQA*X>_yVq zJ-FKQ2gZb-#!Z$DIIBYj(dRSktL%qyv#sXpKiM#jrpkRCb8y3_#7V!lJ5cx9L1TQf z+_n(;x$O(yUv2cCgj{cYczlJX?5j{uQK8IH^d9&>_B0I@yKTT|7w&&odR(a)VjCpH zEVYq}B;Pr1RN6o$aDXHo7zM1g(d)w$aSW_|=b4QyAY3 z(t%L6fC=iAJKbh3G*1;1vRiKj;^cMleXy1w5jLt?jHg5CTK1%O$zZ9}2!=M}NwqWu z+CkBj<)O3Y0n{>wbeZ6;Ld$%5^sgg3G=c#C>Gu0i9cdhpBp(PEYM{NY9D8(6TEnfW zD!R~?p^(pP0~JMadpi}qv(xRMfI}T++?;t}?BcHZVqhdz4e`#(h|-EtK@`CKXO96&dcYnaP97>Qaq5KmbZ9;kj#*TG43rR6c272=jU^O+!HB<`YxPM!_O} z&Ey8M@$+@NWR1a|w_aq)dztEi*cl=6rI(uczyDi;?Y(teRNdMzJV>{6hlEHolyrA@ zH#2m1BOr)Kr!>;t9RiY)0@B^x9l|$w$GOk*p6B<)zu(!qm}{?f^{TyBZIVzvAE{_q zIJ2lG0phDEq#sBoGwI7~jk&q6p^i&s@4;4EHxKq+d|EtW-575|IS6J8+gZlc&`Zc< zyx97)8+R%g<Awhe<0krAtFQZ7lNHyl+fVaLWq0yW zpTTDNFBG9v1i%mClH=fnwJn6+n8{6a!Dc;A+Ik+9n;z1hLq7hnFU>eFmxH@$UwNjk zdn^;zB+|C9qy^7Z#^_e!{xo+J#1pSwv)NP}OF}vscu5d?1b3xQP@#4CvNtdla9nJK zra#(HWPI?M6(p?zJwkr@MT`zU{*JE623KmBR9(WQ5%C&pEntDW#M2^VTz4MZ-AO}F zQy{`f1vXL7a_(y(lP$Cgoo?h2C1)oO+vmDMt!&KlkgKs%?%V=+a>%So1k#HywR?p>m}-9agtfgsBO0le68dF3=*d z0mbm+Xj5yQS&N9eV3rDQ4399~+k184@v`PdIg@IjMWkY|Pzl^1tBqURAT`R)5=36$ z`x>0_jXU~tn6``8T)M<;R$RcAqD0VzJgUL*!VrDv;Jek`hR77GSJ<10Ep2&^=Nl_>2}LPFg{E6KgkiK>nV`tEHl z;650ZBvgY?mQAyz#($lBPCm8|F@K6XDk7m_9Llf=Wzb)j3cc=4g|qGMIK z@kgRzlIiRDrsKAf0V7wGpPd~bOooM9ni_gWVDJ;K;-H$^sXYZscvL=2Mi6Fh8PSFy zyDEm=`b+6&S|Y;2C9I2vI`hqzp%){U*BMExXQ~~a2KFZxS7{5}F%YDeA(N32If-B&HUTTFQE=7}qkSrh;?9IhT~{4m0~~1Ok;ZHm#&;J@k6k z+?e<^H=NcoO^xz*4UMGEuF-iosfdSg9&^8ebp9O&Sr~UDns8=wTIdm7(|q8o%X@AIt~D5^%9*kAGr}B+@w{K z?AOB!Y;hwj<^(|g&M|U`y~k;^yZ7dluF_a{Rl`(&^k{o6+-dd$jrO7c7^d{rJfi*G zN_B$#h!_o-=KJ-EptZEab>EBmiNr(&Iwb+2Z>vcwSUWh5HUOp1#xe&Zy{-G{m#fNy zI|#j4R(G%L(C~RHzw8?5I!+?Er~TAtapV0YeuUpE!mX6lal%;>g*3Y;{rmv74*zI_S;;Hy~5XQ0Mc*PqIPv5x~G2#!R!Y zcRBeGdYoo z;nafDA@`R}z)rb{a%GOdLu6(qPR+t3OtbUXLTr=~321lOq2g^Csf&E(c~86&i0wnp zHi+x3L?4p#%QgTBE^iXJ=sOZSP;ME?ox3XEaX6)%%m>kr9xFGK2K`_rNQiQQXS?ca z>3;t$LTX7FNG0<_M;o={IGOspVie2zzF+h(j<()qT8jD&#S#Wq^&3OpmvSF6eK@?d z#_&8y^)9<;+kn+IY5*C|mBC@YlXwM^%R~&F6xT-Ljvw_-v~V6qb6IEaItX`7Bv4a% zC2N?z`A-PrfD(^8*L6R;s3pm2jlAS;RT`EYyNQ0`9Px54&qv@0hpwuOVQW!!x+~;W z*BBEH<jtz+gwiU?ceX0_1>{{>N*$m~?)vhAW$=N2dP|1gTH@V9 zg|LqhtuSDQbb9z64y3`9pNvh~SG3BJadf%bs=-^vku`sg=z&FIWwi5x+Y^2$xcis0 zgrO$a3&sm5M2qVf_Kd;qOr%CrloRXFYG%gbFJ#@5y=AgJOkaE|GS-MEx^uG(N2sxQ z?5i=Ner)hE$wcR&Tp$feq#s4^eZFu!<5pR+INuIi@Ap3`Xw7E5`FP(X4u{fPHp=jW(^n;b)oQO zUBpVbs|^;IBsg_CpjONPHk!6(%Q^=mgEv#pUi$c3v{%tPaMuV(Y!Df$ z<_r?q$$@!bGeQbO73a!9ag26J-}Y8&hRx)STN4CSRtPpMeK6=4q9-_@?JY0z_ zGD=%~`*O?uZ* z{E-7kHR4zHHbT+>R>>e~ApwWQA@zhQReqe2;cDTm7{qkCVhM{Qqh^~XD}7J zEOuYa`w70{)hJ_rZeq{Yn9Jq;iv76@H(Zk@MUl6kzc7k#M#ng&P}5D#dig%V{0c)i zQIo>_Al&&;6p9f;RgXytWA*9up8K4Mcv#rN%Dt%V$T9 zq!VJ%sV^hcrZ>%7Z>g(mh;8-@u0n=;?IkCu_NNc~EXQ_)RxSMvMI{ zdWLhDmD%i)zI@T0^5>dKjX=5$C~M20=N*U(N@>HX?MaEm zHhdqoj?5{&F#V8DiGAL4&GpL2K%#AZB0sq@_8@P65P@PO%d>K$!e82VZc$e-+7b6t zk8F(UDb6v?Wh#Y5p=}H^nM1VComt3d=~oZR&=Qhca58c)1v}vGu*hS94wb>5sxyCx z!7ZlNO`ND{5y~4H#CB}359;~ZU%HC*!k9P09%$1#BEtB4V&M{+S*H~h<)-OUAtviY zTqB*9?^bA8BY7qBz^h}#$9tq3(d7U`xI1ML)M4+J?c%Nm1-J&FKWbKb0|;57+Y>8O zP&Ns+7qINa_EjU0WMX%;+M+$gjF=5iTL@5~)ljvHY{4F(yGG#?jy2NO1qH}UR$wo9081tgeR=Tb1VUzqdq;FGVC$mHpl z@EpW>`WjiMm*E-#GXX7*ay7X0^iP9hwD0sH><08c9awwyN%6&4@%KOp=W$kYZ>!GY zH2Sc5zvxnL7pX$9eS0V(>%hD*!abQ@1c+D_aok@QU6WO`8K&3z=}ef^DLHvF%7y`} zgf?fAU=bzQF9@ymv^=StAAvDwe?Y2;=Rakbcisz|fUwT0&KRP2Xs0H0DCamn6Q54` zI!>t8!xE}VPOtkbl4_ywkB+V{LIL@L_OK&*YXS1vp0r#)Qa%`mAG?|zkD4wA-Xz~2 zoyK|Sz~PcWZ}-kPO}z~DFpbgG;%be*FI!&8;SBLb6x2UW79)_Dw4 zH>iw!)O;zSUdhq=M6BYshxGsGdchssu_S5RY?zf^T2iVOZ+J%^g7Q|BTz`$TwGfq|a-DLtwxY#-`%&R2GYfiT;7hJI~} z$T`+*(ZlRp-9Gu~E?ykoAD-CkM&IoYsooN(CN|OgS}xS{WOpFmDR%@;Ad-1tLAP3K zj$)2$X5grKH4FzVVoDc!_>4!@mi61$h%yYduEu}h6vcZI+=xK{`9~)`!hLq7i0<-4 zmJ^j;?P;8SR{~o!_p8imO)x;;j98vxgtL#VSRk@3Piw!6Qt812M(W9=g3=O2RXqs|yZe|%PnflC=Kd|S$ zCr8WNDs0@VP5V5rDAW*NEGnj>b-uwzvDlCv?qzbc!uJh;5VQUR%Gb;bW-3YFRvb`- z+`AoQr04Y&Nnpu3097`hx+mj~V$S@CAFvU%Hx&joL{9#?3vAN}6WmmcY)H!0zV-E| z_Eb>Pd1P#dIPQZYc1^t;xKBuqB&H;*=6>Ik+HFAws7tjPX9{@tVFHAw` z?izOs=1Zc?(jzs?DuL^dMWuAy*!Z~-bAIVGyxAGHgAV_+W>4Jmk%tLHiP2uU)1;$G zR4{?Aak&2u03{|YuhYaoYgICEuaKB~>Lj$l>2w=$?6r{;M^T~(fC(bi2*{E7$mz}| zr2?1i#W9RfK$|t=01(%bmMEtO0Hmeq00@v%7$E@)1^@+t`XK@8PnaJP@d64O01b(= zg9Jh-*xxuV5SZvs*arf?f#5vTzJLTE)C&MA&Qc-Ywgq1~5f+CQ~>X7ZPIC=eL>Pc7ge zIB@@fasGs#t$=#*hn1Mmw12{>bdUtd^@ny(GfyjkmogI45)eVpibDQ8%>zUM2yk%l zaIgsQ@bHL;2uLW{s3^$DC=I-I?74$whWVmE5jQ*Vo|ULAYhBce5vY0q-0ZpjNdzr zA>mT7uTq~roA%qX|7V5;{(rLUZ^Qm&*Bk%^8VZtm&=>$g!1Z03cj4^rSZPucup`_7 zISn+KvhAa8?COitFiVNb0IqZz(4-_lX%qO|S%95d1Dz$QjiHavTG>y&fuT^2D^H~A zNM)lVa)R(URyWo;gI%cHK>+i}|EBTBai*5%;rnQv&=jt39~K0Z8z>7<*rwYIDUNta zYHNDXMuFdsjXq@@c&jCR+r2}}u`#ty{q%9sJW{Eb^VWm7(pnQvbmMx_ILs_F$#Cf_ zuxFOA9tefq?)%ADY6W9ID08BXR~d4`)W%PrhRpA&==NB>%aoXTwTQDhzxKe3gZ3ST*4O?@ChOfA+OJWUT(3@E2&J$q;d6v__9o+i-EnQDj6YUsb znk^dpA@2R@qJ8Cu3P)~&PFTkdy%R4-T?2b0CK8Sleecit9>}0$vZfh7c=lx+a!DO z8E8|)R@`mjw;R}`-Vw_J2c#@40?M8JS!gTr7%}UZv>qKyO`F2Inf;Smb?Kbeu8m=L z@WHtl@R~4qd{CFA{A68kA*(vhF?V(5sKo`z#oQGaEE zy(D$AHc}(_Ees#@&B_yi?q|L%igWjvOxVt%dWdiqnh6=k?pP<{&r;OV@tQa4D*FK$ z!sNunj?r{xr)Z&Z2nI{)@!ix2#v6fZe*Ubd$GUhr3YosF@~-A6%VES!d7dW+t#1jqb9O-hDLV6mb4>RZvfjmz(SS#$n$AX2&?8|vp}xxur! zP;%O<1R)-mGmg6UUv`~f&&G}Mj`}cO zwvfGm?j)tM4*PYv$mbXxz5YMcA*&Q;5?u=H%XTg^D*e2X@i#35d!p zy*W9{J**0SPY-;VA?iXozf_0*!Nnx@%LJp_fIHV&-;gKYqxm^|#p)=J#j=`!x!Ski`w46+~ z9Sm}G1Ence=yAF6FCgruNz8RK7ur5WG1f8oe-pI>VSF@Nk`P*+F1U#rDUA?bCZ`Ar zbk3uGx`RILI5q}@VQU1U!%V|k!486)N;p~evSEOg-gh~rnRhlhNlWwH28BQ zptRyf(Ix5*N%v8r7F>rVF*Xpo(}hwh45Q9`Bgx)=2dC}7TwCUFM8`Z|)UatkN$^v( zy~#fP2_Pc)H(_et&C!JB&)ljybJjQ1S_NqEdTPrjk(T}!DAiAZc1vZg8$*SOirm(^ zI;kxO3DFa_9kw3VB4civqn}&#DP@mR1CzIjRSo*X?G1W&WcO%#3iekF60ohs#2Z{$j@-d;*~N z6|tti*HpJ1cpLN3JgImiTH26w&uT}9oqjlvbCr*Q^ z{WA{zJA@ISwuZpVhRU-c>n6w`X}|RGBS!&s+N}~6mmY{v#p9DJ?0}iU&DTD~Mi%{L zQS2;G37Vt&6JV8pTyTfh{+6)CarK62^W2Vo=XD(ZA_YCMue|sZ0HG}E*9%6$<8e)O z?jM_adwF-Wy~|<1*b;x&-euPO)b&AmO*L<1O}FS5>Q_D$k&R``4SG)imnXn7PK^1= zJumWgTYVMAP#5uAXo&ADe}(wpZuuV<168xPzLpnQGu~g4;HV~D*SE*e%pb7@z4M(a zo7IyR__YDqajuSG>L9oo^U$MT86xF=`zd^#c$%L^eNwZnb(q>357K5{pbRuD?@8WI z4vZFARq8dDXN>oP=2AV@x41`q0T=t4t&XL77R~H$Ilr+Ua*4J%0qdeJDtIezK9%Yj zu(L^;g>o%cM*8#QX#mG!XJ?)O*47dn&Uv05n_Zk9Wi5ysO|@Z`CP2QJBVdDi|Bml| zWKvH`pcIbJ2h|4=0l{>0kJLV|uTj*MwYa5mSyZi{m<)6;zol0$?$h}@+A=op&9?22 zx-;DcE{8ocxFKyikNK|)|K29U8^u;h#27o+EOM|T#)hA(vLDTU$Qf7IJhl^ng88w{ zUX}>qb(89)<}bMdG`lh{l8WT@%-i*R|7FPsYtAb}Vt*^`BXP9_R>n%D@beZ93Xclq z3|y8`#ApZXzNsq1z6^>Gi7>-zhM<`HoQd)ulSYRU@lWuV_ieuZw-&_#W!WX_s3Cb7Fe^mpt_S`8OZeh&(e0P|F{D z!e6b=T<)qJe5JWb5q4+*&M}1ED=}z2D99t_YB^KRSyaG$SSJhJZ1Rwtkyg$i=kxWm zx={R(LI2Z75oh1gG2{C zVvGz)j#{QeW*2>fGhG+VU)fY)dQJd>4#CWAz4QyLMT1#ko8aw6q^gP{iWXF7MMC%> zhT89BOxGwwnoZm7UX6W=Hoj>rm!UuAt`7)eW(G=y-JN#;QyFO!b9JpLm)t{|KS-nD$$Rr+_$o~k^D_3Qxtvxi6EvmcfNQe^+!Mi7yNGKo|QQ)6+9yLaXzIYxzgx(#ZHW@OLf265gmo< z-iVhU0R4V1spl%#Z}Z@x?n;G5MO=H$SLrcmB`{_6qsIzy?cpj(tQv?=tw`^V`C^sk!ruguN+~zAQseLv+IdykWR}^MdwaglY<`<1d!3pm12~>;7Kqm#RPI(UNSII=p@=R` zp-T`SOBr2)*6LPXcC|R)oW|PE`{+98Aw8Mb77!x((rrC*t-&^JZs5mP7J)++s&V%I z)k#qEeCzyt6nz>jLkCu7R^Pgk$JJ(jrt5vc^YJA+Ujb45T$$HxA9KY)63n&48&3elhkn6eeH?HWrPfEx z*;kaTne7c#RB@RjiIn%hvZA|5-O=E0Ibf>cP0*YKt_34$jbEAT&p<^YK3F@(E)4h$ z6Nayd>6SZnpZ=mN4dEZ_My8{P7y_o5((KAIgkdBj!bFEj>KXZ8?lpoXx-iaBf@uiu zw(DNQq@=N0c@d9MSNGvlem5K0vbi(o>f}(_jGgPIdr^E;nRTJQ*`8-1%+{(Rw-K5X zH7FPT7MI_jZi{0-JD76uF@N6i${k_=P|x+yNqcyYHLBq|ll1oyYf-TuU7GO=+^w~N4{t=thl*Qm9j`xZkFFc!oP^o)kjQ1WW>eGr z^qI-dh^<_2+KpEhcOfKJ?A}>2M4P8DeSPS4XKQuFn|FRu66#fJR2_Et1o)_e(8>>8 z)qzL<1jwrMWUsnKLHHgKKpZ(4AwRU)G&0|i#9!gufL$duT5b^7K^w()PgqkV#K`<5 zLJ`SH;JrHadbhZQfCb{(7aJ-I4>w`l28s;P0)<8EqGqE07`IJcC_USpTAc+Zwm`SE zi>($8<2vV{UPn22Q5I)pS8|lhZS@DCZ?N@1kj)2Euk-##mqHz`1|R@bh`rwwJphyA zRlg9(a|L-M8)?XIT3cgx{7Ue-;FHFNGa*o-e9*Z?sINEuVl}HdDz}qLDGLn&{=sU8|HoK%WVi1DIc3^fCUN%=KU}P4HRYp8)$4S@TpG zrkraBoU76_q(KuE94a`PjTYTD>qcnU8x5*a-O++PW5$p%a^7;1dJKY9N#nb5s0Nf+ zWL^Az^@Qtz_4~FbfcP)#u(l>!1?%~Q`#2f5s4M4yJ5AxzWh$k;w@6Qby;We*==E3e zM|nNl^g(?F+^aQ_ypXkGDS_6t*1O2FCI;PWN)y{obz-DE*LrJg70IJzH^I?W4Gxt2 zJSx5o0GdBi;1Wk;(xB@=Mz>ik=Ib&0_tUJFxqf@<{e70+e#todnegh-)<}!OpBnBb zx8!q$3tC^!b5h$$!<_h9Px}!_estAt916so*=<41Jbke2@t&r&^TNSa*2Q&r0$|^s zw9^0D&m+6p*NhkYW)acC2~vjidi#P{)9xS2;C~6wJO)m#;o-^KmjhbqG0R4*2_7Vz z7V64qW9ODu&eQ{e7Z;_C9rl=WX(;SsWQsaFc9eLDDpWot56f~I)a8QpjOicffOl&- z#xDoY48@irc{H_&9Getjg-H_ztYpMCY_}bI(c4@&54Z9PC6wFLa48F{ERfMD5u{W{ z92_qS%c&VW7Sq3kjAi7a2^v@%kRk8Y1Zx{0yTy~lM2z=80S;mD*B7E`IRsJlca-L& zUFN$;Qp1fsQ1Bh_@2?N_*-h3NWu&^MS2f4ge?q-V8i*sl=rbI}v6hK*g&gut0o$>D zqsaYedRDLi>&wFdf`X%_qJ5>d@uDy5J6xr}lFg;JQ+OGXPq_3-$U2{wxnS_?TdRLC*o?d=r>%E~P-t7HB4Sd{0ZCC?vSsb0zwXs|NvIziEx3(pJWq?CD7 zkd$_ZZ?cx>6ms>rhNsFa#eAp3@l0;8vwN2T=&K}nusm8DAWGeemZtJV8Vn~u;98&g z$?0Byr6HjkxDEB*q3^L;^?)ZJ?Ogjh>H0%g@7fu9P3<`b3YDqV8?v8K{Zr~RU=T{z zsovIdSK`%RcM>N12=Ad`g5-ANGThsLtBvhT3HF1DJV00A<~;3@qmhEt4- zE@hHFl2L=~FnW~{<~6O60E^|tR?+7U*yjo0wq%z(9v6+salDMZ0lbmca=jOEzndOC zJV%@_nvcR#-K~Cy9CG-87~oWtBp+ z4zh2vRva_E4r)h{sB0J!IrB6DtsU!jP{dfB`21Cx_}{J6Oss@#e7MnOIA?TCMmy`FJd9be%zRDobM6=Yy7OqUot^Gcm4 zQjOWruD#4)nw^BG$IInhTbTIm$yqFgjke>Y@BO(h?wvyV>LH=W#XN^ZG7F8MpGwD> z0Zac+L_BHc0bz5Q zs$U}})p{(!_<&O8K>@@$1%6=0gG;#ra!AU7zMNdSNOns-;$r$j#=WDKLf!>j>EJJ^xbZLG-P3d*Mqxy%h%ci!qW(w%$9=3R?<~iYeiXu?TeGFBr<>PW z(X0_UZ)5uNm{*!>{hgO<*>;=spmyh$Zzdg;ZIh*w(B=9AoK?KL(?TCf@qmm^$Gc3Q zE3%_Vj{@0Jo!xw`Rc%p{;&X~uP*vAXTA=H-WQAjzE^vf{J6abv*+7x#mPDYsZuU7Y+BA~BgZ~0U>o0hn5nQ_oddRoiGzT$_ za<~Wt>5eY?l;`<0{La9T1DieaAI}y^>AA|rSd?&=MAnOX0qgrWs)w!8j0cXAz6IUe z9xsHJy~}lDez-i)zq)QcY=X2kU(_~yn#`1Az0x+)?$Kq+co%>%4VXVO^O7;xp7*&&1`@#O1qZAA$YoH-wsJe`Yqju#WfLcv za)F&4#H-TTi|?^owg;!1$NJNlD0CTRkvzrp7t%*^#eJVI7F}r1!NOoId#<>^pWM=vVD6p#MNBbLpKesEKAB zbg2>x^3RiUAZE9|tf%5jR2@Or z8Sz*P=RRknFEoPZy5^8Mv7OjRiVe(B6Im;Pv`Y z!g=d|c>?t5wASP5rUOmlxF`ws;ES#+v~DUfS}DT1$_CcwLn;WX;!{mCZ$XO!b@7iB z)J^6xCvww-QE5Z|HJ^_d)(73LdKCnDE^zdDg(mvf7N|hQ6lYjj9eY}_z?*4C%Qb$5 z-fqU)s(29ubbK3ML7p5i<5pEUXGI|}**2aP&VW?(8xwp1)h}3kq)!%Ea)*BNE^f2h zy3GUXKBG&87D>c3OEAPvQg>>D$h+?pP8RvXTQWfb0UeJN!rwQhEOfbyEshEtWFFSu zz!-n*^`vy)*K!}%)f<4}JpYb#k~PpxOlRzFW4j)1{YD)+RbO~< zYLKaz5#x#vHtxrYD8pCxF7kWtEftYwr$G#f!iUU z{r${U(s(hrU7P66NdU|kte4>u+;n$D5yFJo>;Se&>YV9ms)V>yCzKf3LKZL6zS zJdKE9@$q-(o60zXUoCG)d)ghI^A@4;w_N1wi(M0v%*_q5m#31_q;AayMJxpc%0mwG zSeF}*lNi6mZD^S+2Zin8h$$BbL*w6mBsfl4Iks(0bqs$=?W!Ws{#d*;MXlw+o8QzH zk)HjsyQ(*5$j9jcs!ur6YN*Y~h2FRpEXgbGB&Av<1*j5tP{gObiL|0WTb{)#%DAto^N_TE#vrTCI)4T)bG-6$Fo-F4aPG}%_`SNpsBpSLrnh;KWdt^GkP7@_plQ#e zpQfDWUeo-fLga(UC*??7$X9%B;JFBFG(#*kYjpJ4E2Rcz4u9NZENHg*Fi*ADGcbJ; z`$%QN-$O*c&EMiu=J~T>A+Kp!SsWYNp&duUhuIGO;a7!^KeA@n9QwtqDJAcZNB<4Y zS|2TkuXyz^nJK4grqkA%A0f})=3m2%Gny!OhfM_`19gdvcHifS_5&SnG*wqy2$(Le zJ&rWcnN&s&Dd{2s+hhutJ<`bY->H&cfqYNP1>bK>%de71pp05NqOc_=Yh&6sD>_N@ zxsc}9=GhrZbXne!eU{&WkaR?qA6(#j!p5O1T%Yc$e*F~g)E13wabT zSf`iu{h>W4$*S|EI~Kjw_k(?z{A%jz8nR)n6kk(A0)iggjN~FQ8c*7Igj55F;vz;@ zpZ9h%Mgr?ip6q(Y>~Tt}K4SKb!JdC@t9Q1=nrJ6%2vlE%R|EfHVt_gS#a`mc7rGB_ z+tJ(57Q3@n|oPEYzLhZ2tV(j%C*=_=l$a<$+4Y0jnfk0fP*pb^;gW);6S+-Hrr~&# z?0f+K;l%;`(i}i=dpx(wt!cWTC1LQ^(Olp&js#?BQiBSxlPac1AcvxU%QlBNXu8cC zy`%J&aE6A8&+wkZV@OWJrIR$7-+E2}{)=#V5oG*7#x&gDtDHB!f!{6cP05?{wQA7w)0!%TOgf6>bL$+{owXUf1Yhkm-o`1^`94UCBqD$+ZR`8KY((0S{qs{)Vj6 z*D@E%3HDiFV+kv%KmtzL!qnRsSzHZqZupbuQ34RMKrj#MmXuV2(BaJZlHb`B?K=YG zpa2m!jAhFu$`)&Oj{+J>)K>FTs!KkN?0vi_#ITn=TYzCUC&wLNI9lE2luqlM->lkg z3|TwD&ho1M%TsV&Pw;@Yup{f7(+yuy4jVLR&TbtEHe{x~|KNWw@>x{mKePSZ@e z?ou`{Np!aMpk4M(I~(6^-UZvl1Wiy1Ca6!mj#6q!{_?qxSE9e4hzLz`^alvN!mEjo zO-GAQ6EAyj>qUdMkpeJ0C~X^>hIEpxXgHgZ67E!_`hgmlMjhJ>}C&(+;< zU0Vr@DU}7w%wi(3qrP9jo3APQ0(Ts6r`qZXy^Dj1DuDZ@UPnFf1!TIm#J1g+i4wA` zztrIUckOiMj~BB?jAi9!&1`k8UBd!KMu0A3Nz%p#db-1&Znrm3y*M-I<%&D>^eRos z|rJZSaF-K{5gA}!`v{#kt zy%S#gR<_A8+zpZ&>ht=|21TB(Z1k{o+Nv~shok4^tlMgdN4NI&uW3vJvm%4o?HFeq zl1{g4BIz}C0yb*#j9J1ur6EJJGW|dMBTr|2-O;Rbrwj*A4kOw{9p)SPMWPSetR{C1EM%CPMNwzT)m z6({MIr9%t?bn&fBqqxWe-@y%F@=vuq0dV~LSq1O*1Y;@$zt%S=Zc;Zm6%Rlf*!Z1rsP`GEu4UeKHOn;PyEf6LC#WQ?EKi-!^ZdUIqs&q7&zMnC!E>LTe|rWD)esz>tA>>s*P z*of0vXEI%Iip24Z-N2csI|b#*km-LPqyrz+0`1+k`-8->uGTNMpTaNqwbUm(Wb>9E z;O{0U>_0clpHt>TMm2KxSsox0$mEdzbieRXqVev4@852>N=}LEzEZySHh!Id#5}40 z4jsV=Z3K9n_5|R0XPNT;{f8DhO(MOwjMIWLiDz?5)_vzpKCO2J1L*K^6Ipi?63G@M zpA8}!HIQ449EA9N&*-F>n^`+vSqEF9cmv|_%`PuFGMN&p;aK?)!rs|Yg&S?e`qkl- zC!=;@UMsgy+I~Cpa?JF*EOM#BJ|k5jR08xSGcz6?gB1Nc25?aLG35o7V~qetfb!5Cx~ z|0or*6hraXm8CZ=d{xZ1KFpqWJ88EC=_AX_dB~I!Z~hZt6zd7#n?(&d+jOOv4-J2G9rhn~C`SO1hWpSl~Zb})N-QxeZ?vf9b&Grwcg4eS- zvr_!wkrZKvkOc^Tdxh*D_JYZ;Sh>RJ8~!QJ{~vnt#|J@V|D7deWPc0MIJnriMuj}% ziL{)i#d@iWq$)tpKMF4&R8tnWvGaeL1!zGQ%BrD5KA0}(;b3fP4R#?n0h?Re@lzbP zv{R5C*_qgxSQy1UEZtZsAUvEvW;`ll5`S`l z-0@RbxVSj*Ff+TmyED17G1)trGXuG~xtUp5nORvGAsCF#o^~$A9*lO*lz(v$13Q~K zSvt5_+S`#ob2K)wcXi>XfXM%?7$n71+yfHvC+p|?-;AAIK+MvR8+M2x5Cmpc78Wi> z7FI@9?q}WqFv`|JUjA=NJ7=cfCNi1Y+cJ9?J1_&8SeR{X|HgK95qJBSod1aJtmf$e zW>x_^+q*iMg2mmyb}p2E33IS>P`ah@qn{bGTzxn$41m$r8eZ1I)s1YRtmMXaX|hU}Oieax-#q z7@IPhfjNxLI6*AjKp^{H^omZFkkV~z^G|)A`G6pNSWVt?fH*ncGIE=;L-a5Mu`_ZT zzcprL;WA_6Ff-*g19EaukU#sIM_5UkpMsT%<uZAqDoC*YCCJ6yzXN9tj91V@L_Iv^6#d zGrNOL94N@2JfLU5`%EH`-6&|mGhrT+W$!6d<#i}SjHpj1U7cDcT%&rx8bMw zdtLlr_5X?W7rhFkv2u2C@|6DH)c!YwKgyyMgu>p*^G{i-V8=fp8%y%v zb(hE3^w}N!6wZ)`0T9KXk){^LcIIG6dkCo~f1p|ZhqB1cZp_6F<^VBrflMG}2xP_% zDa$6TjNBkL6Be)u8|WPFhVvH7`xiIPzb1+I)NbqEbLwQ zn4i661Nmz4AJ8AP%>RM&Z^VCeEq_r!`m1N~@9s~4{J+8p?wr$(CZQHhO+qP}ncCtw}*=XbJ#@6-i{XF+`9Pi(+rq8K!x~h7r z=2uV8w5p7xWM?V>pd}%ytf|bc4GRDO;QwI?02l=T{`C+C3jzSk#ef13+G)TTK#&4H zLbN36&u}m~3)EMpc`&a8%*Ym!F?EbUT)qZKvK+qqcz8epG3!lK0#ey)h{YvMxRYzM#e#N zL9Ib^K$#ng@13uqcO|!=wV|<~bs)sI*D=_e(-YGWFt_RTdklC0-1GwpV*ReTyaPf3 zsowYZ_REy6hAx9{g3`Z$@37x?Uv1x9XH_3V#YnFovxGzsdwo&DJSSb8Zu2wDX81Z@FHzRA9a-is=RPKW*gbAfCh zYJaC5jPCZIf%8GFZ!q5`UtZrzuSSpipTLD6An@v?2Dtx=>n{{=$b)HX=yQrs|M#gT z_}|~dkiuYOPA1d)v*0?-(^~>}>D->&$i)mh^M?5b&?LSrNgX?VQ4d}85y|C}waSPA zMkeq=iq~(l>VkPUlbKJTX;d?QcPxIJyD1?bva`E2Ed#)xoq(*uO+)w~TBV$gh8@W3FoW^;ZO(Z^T9hPaEgg zLlua8GH!5vJXrB9F+#nVCbK3~hFm4e~+4*uVK*CRIf~!M=aYA%$^)r}gMJgn-7Js|a zjSALbfS#yu5=weD!Ns?L!PYB4qS5FyB@{8#b*X#kxCyEIH^UEA*VB@|wds2gsGKoey;R7oh?71?e_0gm9-+qye zYCOzaDoG75(M>w6{fAGNk;pg_LQ=r6n zW|g++oyy$sS@5Ro>n{Si-S;E``F+kFZpBGO_{+N$-e<>9MAo>){&iA^shMyzwRBtL zCjPDSOeM$}GW;AWZG$>0fgwFM7p}PhL872w(tkq2CQ!ak<#EU$#t=2JOb4awmwmX3 z)YP!!6WwcM0rf9{eD?So5DRgzoETQ}+YM~lQiTGa^EA`m6pyu!Q}!TDEjqV+jY zQO@SRxkzY`cz2N5e1?QD5of1nXy%BNlvqXp>q51xB8w8gQpkU(Yx;%{;#5oXPW@dV z70Bux7j_b{|Kh<1hdJ!NX_uMITOILEalmCPxk1`VAGsX4z!mEz5yJco%DZn}9$0eC zfeY5|w~WPwJAA=wG6Kz2*S%-iqp-B$vW%|9|0Zb$d;`aqh5t~CF6Xrc6Ro~M1o^{X zV=9^aV3+E>dSq&9tl4>6$a`8@wIg>=@;mM5T4l1+UJ@`)^Qb<1MLi6Pu{bLA=oa{; ziK>9FUGPq7XpT~x^?_wIP_WbjGsFtRZ)iW`6T8Tu4IEgqUEt1*KWAp1j+@`PGzo&e zzoK;>pRkdXp|45u*F-csHP<4;Ly?}|5QnmGi67GTr}N_asFJP&W$}Iuls?X$!P>z! z8-||5<5(^w`u;Lr6+MTgd`|L9c_U=nAJN$w;Q@Q`X|?2Gkf5|@M+-u43G+vi>VFoD z4`o&kKTkB^cYNPZd>E_zw)4fyb5QIjUV(FK@!^`G&$WrNPKE*H zak*gmY*%AzLQ@A^DEKYRmM)gv1s-_ zAiIj14f*pjCGHc8tf*k!z;PcGfB+)QqyH*1Y_VDvj`dIfn;k+~mhu)^r?<9A5 z+b?PyO8Dy(qDY|%^nhu~-$9@9qB1ndqDl=WE9$|Oz6Q&Od>EGX<5??ey7c(OFP^r9 zJ7zcab-OT{hsUB)dKIth8@l!dF?OqIEi^s!WddX~I#ps=tUP2G0IPprDO{{1gnF$q zz&mY5C@28SjlOQg3vB$Ro&vuahK$}h9mJBy*{A(1>d2OV*NvW9eSTLL zHgprhSI1uDe5@c7%WRiACs?8j&Au30RK%_v&3B)pm{_&Cq@trB{7d#_2;PxnHix-=K~cxCC>zCI+z@q080wXY3z)XETE*yrJ% zE6VnBz#)Bl$4Q5wU;6i>Y&o99N;BEx=V3pG?%sJRnqWt4Ugv7Q`*Pkwq2^rw_Q*g9RMs= zV8)f|(IohJ2iq}=N4ba7uIJ*97BDUJ|u7_(n>FA&aeLKP=Y*I ztIMRO18!_5)R#H zh_U-K_R@)12jn{&*8q2zqFgbZnuGRx7}1YEXYh48Ql^On5hx8>e`>uLt#q*t5s2Iq zjrGUHvXgn`FGspO*w0^g(}QB(5wTDIjaw(3$wm?%qQkVV%@w2Wbcety~( z*EJx`{lyI&vwaETY8l`;%3|j0g^dW){TjL9Am_eLW~^E`GaemWkz0BP8XmSma}_*p zE)r$=-fG_i=SHrU@>#I9A#6DUTD2cO8j=rHANAMxt%ltE*d>0-4yvumm}e!!hz*!r z^;=J&g7SnZ$RJ^RbL8)sm>5!LZ;TZiAF`{ExF~DL*e|q&UK87c1G~y*Kpun_b;9pS zY=%-!8tu_lxVS?EfyjFH7&1kx^dUH#dAYP4Lq6m|NKrP%j+(zmQjPlSip}3b0?xC7 zG2apzoQMIe)B=LHL^FM4+W1V>8YTHjLGL7tV%#xi$%)^jm0>MmuQl#+Ewz|&_+#w3 z9I6_1u*>i;F+~i>c!jDr6txAv2U3% zpnf|_9|c#^( zbabCZPw&D#ToS+#*>AH#2hPwz)+su;e1ehe>`&v6zj|6kUE~@NAqUv^(xuO$*xb;~ zvRfldjUlq<<|1mXpa?r`nb6e93a|9K?XvB&v9_Ilk|vWO6OfdydN|yfw&+rn_4Zr0 z5+6()rCb;a1JS6v%ib?m)Z#8<_EHQAeg!LU-K3>hkCd!f;S{T7E zve5in&Y1&Q!bF@Z!X5XxfcJRt08;XXut9}(8ngqp?eP_3>QB|an7Soqi7>qdvA8b3 zT87PIas{i}mnBFRP?}#c8x4x-qD&{#>-}a|1&W*5N0ruXLQ6R98Upq+{vt@Mq=@aW zPK5F{H;bY6?{(QZ&TP);f-lx?XOp$WV{XU=B;n^MjN`wyu%`LJO1(n-MPmzdqrI3D6t_qs=U-Tp4j8 z7X#44+3)Uwds-l0!t^LXQ4)6juf3t=DcF#()Q0<9FoUhnlSEnf!>ZyOmoJbJx!hkH zqkIJy#j-_ZM~-R|qw~|NSQPZV{7vt+Pu=2i_(-|KpR?4&1V+L+v3IUOu6A1HipkWX zKJeV0F(>Y)EPZQ6F}g%&9?l_HTY*D<)`zC+hZ&jn@45x7z0URTFP zEohe6rK~)d-|XDEUH$Ig+}7?KQ)@8roPaHw)8-&_;>z1l@u$!VNrhpp zzYk|cM|4u9)#hJ<-#9A^O=ejcA|r;r2kR8NAuYk`NdCno5k+W!3ws#-StPwL9ZZ?G z9A?iZAl7bCV#g$}Ukk{@@HQftf9{Mcm8 zs>6~b5K6z_w5q2nKg$64-NWNh({6K})+t(wv{aEaWmw{!9~Zq%TlOVte7C|3;-gby z2~donyu0az!*``O&O1x*q5fiUIxW7#HK>-!%rYGX3Jf`c=eD+eXUr$m<&?K0AeS>2 z4A{H-1@Ym29=Nd!t%PrujnYG2&Oww#ITFWm>BBQg?}+s`<=fhgWC@cTc1>Q`cwk#U z%9_C-&pqaS_+)|rKEFBscma=O?L^aM+Pk7HmO~%C2 z^eFa`{bXJLXp$19f%R2^p1yJSrmt5H)s3+5Nn0m!9;6--bR?>9avJ-qE?uJG0rVBP zLmjLIm9pv{1hE-$Y1_k~qkWc7j*uxyo#QvbSfZHEO!exE>iCO(baC}2%d)$h8tH!a zG;;Oq>15ROw}a()6vMK!jZO)^;LHY*MKHvjD4s^xYv}YK`hnsW!iO9)t>Y8yx;=wQw*jDgC3}rL9@|^)d+Q`?dl4) zPHd^eo=?&&3K|^$;DvR|*6S<-r~T0LoYJtp!)3vgiI*URb1^N1B<a;m%oG0jQMQ z-gV4`T8+KVdlL2MaJJ4oUMFu_DB3puw5!UR$1!F$!Zk; z69*x)>3Rzz!5_sygx||@=^O&c?lC0A@ndj9^xg#rLz-}wLY=|4<+Ne8wYnO`&jZBR z($Ra<`%=^am#KbuMx3H8BIFbtTv=vzbpDB}ln+iLpp^2oOQ(=g36ktR&2Ha3UwMpV z5ec}N2PTK~=-uPAOE5n>u$%e73_wy?#JOg5ZjkV6xU{KcEF%sy$gZoYt*`iRNNQB znhV5yj3o1*Xx+t41a+pIscSi||F~P9*h6&x(qEj=W&E7e&;Znv41(;*cyAqAN<Nk}F zWu&v-JKX+S1C&tuZsuqVF|$Gt$m_Lc;%~8DrcIV%7e{4RqQw_Gz~&Q%glR6LnpUlG zc%Jw4$4WDxS@3ALmv}xyu+wKL17NuVe=C8ctEJ*tzUwBJH#!(h#Q)RdqRuQ+B92_fO&0U$OBX zn&VC^Q@Pi!CT7i5_oJ6aA-@-eLOrR!TFfM-LEzGY^1&vC*PPCO-Nf9 zm&k?M;Yk%dxo$t^zB}zfmJj^;EsQ2nsyDwcZY)))&f}i@y_=xuX(z2|tP}EIfFwDqQEXZ|=Rr&eFV3-DLI?Li^01S>rcP)D`{@kLzNTW%o!r%?I9vtpq9AT=Kk zo}YKEDls${Xnc>tfB?21S2T{`>N@!Zf{$Jjt$+az6(5+Ps99@&9A4kl`1elUY#$t5 z-dRD3-d@!?>z1MPGgaUX35HAJK(W}pU3p_vlK5pT2pv*Cd;9 zz~j~Iy{5GsW|Yf|!5y8nSr^iS#IWbO5ajY5iG@bp!>wOvhok>F4&OcH-Wp17$c7>6 zq90-=ba?g5aoTcXY(2M1BD2Mh($>vy!mz3xeQUj*U`=U8Y+0t#rQ!FLUzZ)Vl3>E@ z27OGd;AF0W_R$uLQwB5|>u`A%3eo^YC@*biF|#8!5^+L<5T{pOL426xlhSAcTAx9o zX4PZPN=MiWgZA{ z&{EG*;F%hS3_k$C9aPAyRyw7GX^d{X^^E;4U2<-DTKLC!>F*?0BmNc5NGTig7rc}0 zc!!ch0<3ITR4et%1@l7t&-zKkA$}3z*BQEan>|Dx>HF58L};731P3{d0m_fc#CM$T z93J<$JJpdj0`azAt17f{Q1orS$<%=sJV0%kxtj@Bx-u{X_SgiNMk za0!xjC<=-{IyLqr^DXnzD_C;9UU=QzM(?|0Y0eUZS*&fRP(5al-Ti*jU;_fp+p z!bTbkZm>f*zBYR}W0Eg~M(XMK<>si}ANncK)BdS8VjswlL&?XOAp4<^&w5~PDb&qwu|&I zP--A2cJ1Lg=6>CN4YbG4JqXZr8`^FOlUK;dM7hSL2*lnM;8`gZ|c!gFrWD&f927 z288!5G|c{M*o_*hq$O3-#CcK_ZOoFEVx6(h&VK1uSNnK&o^{oFx->E)yPol#60F+v z7*PS6Eo1uwn`2I6ENzJhvid;m+ukD`p1kIM^M_OP5_*Pr39ckYd!Hmny;B|1(E7~t zI5E-tzIVNVTpH|c5)TI~pzaF9@ZpHN4oR$C3nsQ|*m%<#^T)>5WX*+}dv_hkVuCZ{ z>138e@~^ROui3<4kl}{+vsVk9`p5oMw=g^kxYp-Z7TrL&aRzD0v!MqcHX=*oZ69je z0fifZejdkoU7-ZRbY7Hz>6rj>V>TBor1ps)p4@z0Ny#H*Qgr^}HfLPL`+(}!X!IPQ zB#)YnCls0yY`Dl?f#ka*ToZfFt!ikBL(i19mC!g(fCDCu2smER3pKDJoE&*-P5H)O z1B1P}+>qt8zG+uNP2gR-FG@b;VrKp0f(ttMnh8f$X=>4I1JAt82;wCq`@4lh_&l3e z`~l?)fsAXqlVHv-SI+DkhRhSp*+cnqlw5p;mS{;sGoVu*W={)oB{mhKCda!N*00BI ztRw4c%9%(wA%zsPD17X<4H5W^X)s!nZrCT!Y9TdM^zzalTGkA5vUS{xILdy>PX3x*$(3;b((nMGV_llK@ zc%HNU0+4yB(s|1^JWuH`&&A!tiGTXpo#6ot>L`<=ewBB=r|Y*(i2InrMf+UQd8ula zgCm8jF}EOrWxSRFFXhZrWma=^IoPmU1(ZFg~eS`p*@CFRQqthwPMd9>@?+!b{E$7vZ(z=x~y+|AaC6@;=pafGqy|<0^MlY z_ibcrJM%0nb4JabkPx+6wejO{yGDmME11JGj66{ApkE=fQ8lo!Nf>&E#=;GjDVBTJ zhry9S>QX)D_6XS6Rg5M&QyyK;30A^YNE=7TNEG0gMLS5pjztDEaNS*l9wY1BQLs5rS?K~$v z`NQS)ne`+raLx3OdP<}ugVwuR9X8bLu}y5!L~tPCTk|*mSfVXLxBGqyOshxyJhOjY zG+!>$-{L@6B?Xz2CVdCzz)w!WK-6**C!M?LlhZ&eJm^+#Hozv|l?&mSzPAR4RBa~u z+YA=Tq4ivlmeS3>q?x1OMma|6)Nphx>cyD12OTg<_P~8CZwuzg*jl7O!Pl>eq=n8` zeqewaO~lgkz2mSRVkln6TPa@bHx zsE?+ zhLGr$e?P;44A7`cc;D2L1h;C+ODS4nGu?y1z)FYACK3iZ!G)I5FNijB;luDIF*Gkx zzGeD>Wf^+}SiZ!{9miw~O?<%c=dIx358(#|#&x%7H)Jby1mYV^k0CU2>UJ~~g0(cG7MZ*lvxBofLg<07sXP<82b+$7`?DLMwhH7am4fi5?SB z`UZmzwR2JF(w(#GV;Rkgr3&!#jNz#>W7(^flR{5#iYdh{x;)w4XdAS^qH(6opEihp z7^gA_5_8d13UK5TVMa*y>Cd$X9@ucJz3?skHa9b{=X||aJ3$Mm-GMHhT8FRHSkP-< zi?IeSb~Fw6m%(oD9_efiO;FSlvsm?Wcf?lOn8#nfYZ{-FYV*VzjYc(;KH7OSRz8DO z>gk#)SH29hZ!AtMKfKTn6QB`#((+g3&k<(krS};pUI$Jw_HH94;M{sdO(wK`WJo%& zZhAlZS|%G1HmlL4Jefen;-S=-2r|Rn&qUqx0kMNMjGp^+a&kjr|+@fXBNzfmOk^rNfj28o^c0$*MHJ7SyPd0lNSC|$a*+sZ1M zv>^(?ez#WQRe|<>y45ovcjuola5zt-0r~!+i zqlnexN=y`4n*^)YeCJ@2RVMMDRWF&k7`p7E6dUvo#pPxKkCN* zcI83bKT%U-5BI^YPygCjbbzsn%=n(N1t(c8Vys9SkS5Zf>FFyLYPAMo)`M*C#lY|muao#(P2To6W64l;q^XQ1juq>VW}_-G;bV#hR(+n>#6{?|g2Fi5= zIZ99}`ZUf>o<;T!fKfu(3bKQBRfcteLt)W5s#oqNFw7Jq&UB#ewVMmT)N+Q;FptI< zV^39pl`z4F$2tqktJ5vy7}7p7V-~~ZtvvDn&}~uP^*!T`#Ah-zFy5MHLx&w?cxN|2 zm;7y*9F{;Sl=HhTDC1u)(c^CH`^**pBbYF8TV&hv zd8vt>H4|Kj(^6-Pj`KZv_A0?ORQEO+l2FJsO{Es7jH^Acq1gA@Gx3^!W>-%8$xf)a zGULh2u{9i_d-}6Prs>soHTz79QB*iLYdFDe&)he*$`_;NdUQY{y=UTnM01Q2B!WBB zs~~QM5b2O4_;4VXnbt_1V^9a^!m>9u0O9SVt|JNs!}&veo!wmB@Q;yR&CYP@=aO;M zjZ%c1tbO3h`N#{Ts!NTK&_BGJj*%{S#`$7*J{1|oSKaM*iQ{WmdfYW$G58+fFkY|tjx6cR{Ofh< z#OjCBu8ScBlE^`Ew8GD*#d*2e#dgkNjL^8dm}IC|9#mZ{zdFtL#`-3tA1eFTGR+arPAow)s*U01V7BB|Awsi)UKxWq3v>3!QCa75!t3-c z6O!yws_CjK^|b9?yvA${qp6>i(h6QRsY7YhQpcI2kZUVKaptPD8KaRx3}?fN`yjaw3aJ&}C`qaVOFL8G;!qM&d5Q9+Z_ z_lN=}%w^lt>T$(^J^$#4!XjYC9ighE{GUq*BUlL$jxNmw*}>&_sSt>X&^VKC#lQQ} z05E=$pZtMuJv}Qzl;098kqJaguKV#xhdyZ^8VXsP(yoW6inm?|nfN-Jn8t;9 z0y5J>?Q79a43DGrkFz*q-JazjEU|?tE054j;o86Y!AtKsFI97y7G7#6Yb*242Xkqk2Zvz|ct$TcLJmzLYN~Fr z3p>0F%}jPM2`Xc(=~an~v-icmw`pked}#ZVvk0Wws;8ApAjUZVFAhJ}C3DE|Q<(Oc zHbabv)tjIKV=!S2u+}yDd)OwBbbccJPwfU!Lv0x+@F)%6ppKd51+zbe@2G^(R$)O5 zW@R6~kc-#)%onXLrf{u8iJHOQWV+(iSNPC3_xp)kab*QMmcj?Oh zO#pW0tLnJk3I~Tt)|F&0zOJJu-uPZOo?6BokcQ#%*e{(CnZ62_U)iniFmc^$IOvbohq{N&VVXsg#6i!~J+=l6IY;Fu+Y zc+APjGrg<|LiV3_Dk$ymn^Z(%;NEkQG?qk4b)ss@`UIK;_jV7afhm+4tre3RWy#Kq zjPW44ON5Rpl`Z*Jdb?#j*-~5|r26?-AaI%T?y-|czNA3)w&f4CCsRs2AK*Amwv?o; z6km2r)Xk5rk8G6U6eDCJdMZsq`tGp0<&#ZQ8actL%k0q+4LBmRY5p?(VYgkmVfED8 zi^3va@X(Tl^gF*NE(JApc0lSD-T#dODISH*)Y64Ok@X7MyflV~u}!Ex>em%kQXO~x zX=tU*uX!X#(~nbWd~eoG-EYR9rye2R7PJfJC92ypqcYL!qfw}M*neyL^CdV8l77WQ zs8Z0Usj*l*q+NnGVwZYpi}}-1pi{n`M37%l;&PUwT&g9&xY$I~r6=_b;7T|~wC?GB zF*YrV$^Yic>o)hyd55yS&*2T=9zy$wJu;Y{Y5_mb{xThuQW9me;!jNU(M6`QKC*;- z5`MEkwqO@2w)>0hdxqxy+&qEt_|DAD09Tuhmkbkf-*eFx`?y4rBQ2DW_N;333bNyIimOFKK{8&vn)JF9+) zDj1b=5q(O09TE--7RnRM*C-gCDvV?M4CdW)!G{(h#(E+ z`x`syY4}94qPx@noNGC_;I2m|Uq3^`TbLr8Q;>U&*aM5I&B7L`Ui08D z*E|Ib&-4HvL67tG#<;bo*7AlaCn*V1rmP=h|Kua+J~T-kui}RU9uG#^O#v%Bes8r> zPf%Oq&zQRj5?vzLzLmKRU+M#|JNSD2h`fxSMTkT8%A*mE{%?tcuJjsg0xI{mRN^Xb zG`D{Hi!>41?-^#feqRxl^l9W>1(jmx5hYfOC5a9%&ITH(dQUV>No)Z1+q_56;a+^< zUpvoR-tI6TU$U}O>cTQV)pLumdJm!weD)LUML7ySd6BKyuIsmbTVwVyN(^Te;%Xiv zJ-Bkcu%&)YKH@FZh{%+cce{7JTH_SRw&ZA!(jp9P%*iHMH;3=Dhfr z?Tc>APOa-T_Drk*gh;!i)^y~_BfSQ&tLpQ4eR=m#zxbS5!J+#tCcN{!B7ec;+K}8x z9z2t5X}kuOjZQwkasfPukzK$#w}Kau9U9##9zf_;#VOn_YQM?X{yNa@oQ-C-FKZVMbAnVtD{QINzp7SJI z1E`;!kRfAy;EIdF4TVg`F6VAOiq0|l$hY5{ZadBTDfHT@e&q%reT{k@ilTcj zqtGyvsZ|B`ui!>MKGbuW^2N;ik5!L8v)_VTf#3_Z z0d&}`3q~${%T^p} zf^HhBXfoVXj5Ttb5uZr@Yj&WPfmXY=2P#RZ#+Wu8{MT0}tlfN+8 z^~jmU<(WSE#}6MDXUk&S;}{2y!>pP;_elRHtmn2INDcuYgCjuZet3y|k#Se|^hr8R zcuD5|<#W~k2?5EI=`-4IHd*;BpnZeTuaE`@q=U25opfVK~9Z7B;m>eo6Op`-CK0)cRt&f3r z{rm=&)OlSyj!QlHZ__Q0B%b&9Z@G;!XFp%Txd>R{nP^jxT%lvOL%2wx2vpG-|DXeF z-X)h}7_fH^ACVxF)gwxzs>O~P{)9FCqneA@Q-DRVIEAO3YL96#ycL7rRAJ{MNt#4b z98F7vuP8y}^^q(GXQXtK)vBOee|?jK_%qnu9#2ZWO4N1YGU5IE&7#liN96m{6ucGP zT3y*wpiB|oBHA`M!}+HV?(w9cg=2ubs=eB*Z?&GxjGDz3yBV)-#C@PglvLA2N57fY zdM;>@`Rb#>S59Ow6th;lrhePiK|0Iune2kK_6#i}MBjeqPWw_&YD=Jvl~Z$+v$xz)Izq-@sQB}OZG;ix8!kDg7ZLrL8Fk#b4oKwbUu_h z0R-}s)+PIdA$~$k3t5*SDN+&47!kwWCSB)Ps6%ts$b#mR+w?u?j#NyMUDaQ}`m-S? z7Krd_yaNqZq1Dc|R(}{+bi#g7o<-a2XR4`RND!fM>-eyL0i%8~A04;1RmDG_H9INa zsA!0c`8|BYOsQJ5V<6|ncZiYOc&uPDBz`cPPl}8%^|Q&ftl1#P8p?is0cyvMa~*4U zbAnX6ci%M)b5{LD#1HLJ)w~h+rWT zqovG?pee6w8LJx@xQe2CsPT>Y0CH{Y@|0(U&{Q0K{rd3+N8&in`K=$`rI6oQt4FB& zG$K+s2?w2-@r zB2Jd^K=4Zec94#-_U0ILp(KiZE!cTAmwOjS5y8VTb9J{4${>^2kkMGc<$UF@9I~(9 zoc$R#uG_5A7?)_hBJ#zbt7%n=TA#^@(ovxlO?(Obqj+Usd;Tea^KR1y(h9;rurLxu8ne634$dgS{y|xG1im zSm2J%>6#=fe?_O`INFXU!G2DP@wxuxcV!7W>yQf2?rbyNU9gkpH(z_nPc}=`z9FFM zf)*Iu5&}I#wc;|oj_h03qqx4lkSi0SF-a|vi)-Yi5+yJF-mriQ>^T^;Z)FDE@S7!cwpWn3x&ED}V6cd*?MxFt-=bE_&bwFN3^SEdgS>l6DObV~YpXf|}o< z5!4IW1hAgA^pv|Ued^;PpJ94(Cuwsj@BX^$uJT3WHsAkB_CddB7>^Ca7DGYhVmq{a z2_(Fa7?<-r{~}K49G>b5HiZgXu8^bGB^yK{RjKXSl?&t7>4W7;F9FgUJZP>4|B-%j z;5ao0Gx{^&@v3Kqmh&4Aj$ph zmxLHuS`51L`1E?0og5=;Q8|R%U$#2PlQx1-+_RQ)pBMRP^@polXR5Jr2xWBD?w?j;L9?sUe4I^Tvk= zOgfv+nkvYwR5!yCrtm<~B<`q+;6l$2iA}*Oq87M8Ctr(218pYB5Zb|n@ zt2tvuBDNq&Y&)vlCyiW#mgk{OarX((x*<&7T=pBq9HZTjC#FN#NLJR-d@I_DnC=OfP~{W*X5oU6d>9`J{SIiOGleP*bXuRQ zAkiwF7GJHV4jftJh0>h&7UBK!TelcR13wtbDqR;?LdC)a5O_9l5Ln(T#f$!$U|#Li zd%^-qZhvnnn{8+Y?=YKC9?8*z2F<_w)3L8NuCIQyD_c}Cwfzlww{vzM3-SDO^;Wox zr+LZc3zs8Q-}Y8!@eUBmu!dx!vQ7tEwpN&!hJ+We3bQCuf)BFUf$o;mg$AC5EAs^} zg!KHxTrM8VrJFpu(w`(nyy0U*t~~Y>>7AQ2Qk?Zzps}ui0By?7o+%!wwyP*CP7r~$ zly_GEHL49N^x06{&h=*fppVOK&KkG3jVYuqeh{{|B`4y=Wt*>7)uOZM=lP0k0k}dP z0JqMfW&BOkn>W|Yvp>&qi~X2v{qi)wuQr-zo=ut<<7dXWc-NmJGSS$}I3}l8N>SN) z?Ml61Xpgf8x$M5IL_2A*Jq1p%lxft=Gd?Z3**L87O5x$>?D8y8{LX1-T<>r*rMw)F zG+zQ;EjfE0S}=brRg?kN6H_qS#k2is(R-}pk76&>T=a(x8A^K`Zc(F$U%t>*ZXR-Y zysw#BTEV*GC~-)@#Fu3(uRK-Q(SaE_}VLRy}X3XPqhvf#`s zRs4^pdFRHQdioDS}@=F&3}%b`h1* zy$b^SM;AaTcEPq@bGF$G4qN`w24qvLAj%)0xCK{5!5Az8egI=ZO6XGpjc;dzZ0|RnmnvSS{;M+$olc4 zGm%z%VT1mT%fdL7s9jzdOp^^CUSD~FnF-ThXf(#U_oQd1Xln*l2U1n_s5out8&m(4 zv*~O8rr1q(>`{Hc3Qh@20QKh+veQ($_TWz#YH^gab03=L z2#%rn2BGN!YKI<5EP}WLMD`KLe9po|XTLpYj(Be!j)IkrwF-17j0Jir-l46YJ3wva zgG~z$GZkK?PCsHbHMauWN05?Q`7c-=}nyYPi;<9;7TFOU4j5tC&v7q z>=ddc>zha_5fynz#B{8TR}WA3#0eR@f+xHxG!Fm+S!+XJ;>?LxkB=8_>80+W{1~&L z6}Ad)_d;9Ik8&gk)>$3J{d_Hm=U(9LzMji0_{Qe+7h`zmqFkTS z9_s`%dDYZXq9moZ&?Lio-f64{&otA32~s>@EgxC1ioX7OX|2n9H(Rs4CiEULd{yl z^;WZ{&Te68RO^`1LxTtgEH#e}18MIC1MgsrWBLTjq1(FPTxr^MLEDB zfcW2b^ZyFQsVh3(D<;PxKJ3jy4~*d2_oqGoKbwTMjAXkw03ahn3xNK2{SP4E0FZxd z`X504%g6q4P!KQx*gx&~54a!@|KsESkK_H9`~TzA|9t)v3;GW%AfNz*e>(ghSpRYK zfBN5cctGVpK>yDn{g3^}`~S3*jDj*TD*qyHrO?*!ZdhykD>A)z24prN3kU|^tO;n5M`;o#tLP|=Xk32=!B32^c8 ziOCtMh)LHUa`RD+xXc>;G>7 z4g*l20dFAxiX{brqJV&*fB?qS^dBos6ZEZjeb4&?tlDKJoQ zFbD{6@PF2Te|7*k3Ir+%iwGo|iU|~{3p#5^N(nTXXv+wO>dGxSo2hFk3@j!VHV!TY zB^5OdEjtG%7dH>Dn7D+bl(dYjn!1LjmbQ+rnYo3fm9>qno4bdnm$#2^Sa?KaRCG*i zYFhgL$Jtv)wfS_7qG_Q(X$uvgP~6>JQ{0L}a41&XT~kVnyF0}R?ha{jr?^9L4Q_!D zZhr6kecyT4y?5Pp&&eNo=9$c%nJu&T?3q22q~w&;wDi3Eg2JNW5=d!nU427iQ*%pe zS9ecuU;n`1(B#zg%txEiL3^E)c8KrB3oxZIlG&#Af9Pw`D%Ca?); zc-Cpp{z2_unEn4l?A!klX8(iO|H5k#@Dl9_ig{>n06@Ua9b@H4a~Hwg8>I_!q!)At z*!PttFaN*OF`SQp-3X)^!s@946Yzgt{`=?u_o7dZf4@n+M5C*P`AM3&{0Q>`dv6C) z{jIs~v$>2OB}RMqRfanb$@{&N^atTU?J~v%|H<2zyM%qNQzWJk{gMx6hEp$|-J5$; z#LfLYR3vCJ5gihLd9eLwu-Oe@20_?zsl1Y8E^AH;?=uA?^-ao)ST0ZChOpXWyk%h@ z;j5)2=i~l;haIqY$xEz1rEy~T6W(}{T~F6gEatI7*=;ZCa|e>jCTdE1I&kxf?C(%v z-^3nZ3~&t@580%Z*L|-2_Nj!^F97b=GlEbn;~4#^FK%+jn_oOROGxL8p<+RiSQ0>H+gX=udH6p6@Y^R$6xr9?$+2Vfd|^ zXo*oO`*S~ej?8DFIkDM)l+C3ZN>>mgUGr_oSF1kGB&|tKWVQG(9guh%q<{vrk3{qe zT#-T*>^doGqlM);nQ4b%5@l1F<`2%B%_)jdX0+~3l`i=Y#ZEB6>YSX=nZTT(3C7F;HQT;>$W5U>z z|KEc1zaeA)S=4%{H-t%he&Z{tw79cdfEtCsmJMQ8~)#S@Lb!h&gf<7j?bpU0~F z1Qsd^6(ZJcQcM0t22(u5Yl}%r=K;CtjkX`?u?UdPKz7xhJ=fgwNf)b8Y<8)=!q0jr zSi2Yra90N7=`0SJW^Z6^k!lqHCa}*k>e<%f?UeLg^^P%`8@!UPxy@efiI19qyMQGr zGD6uH^6pv!C{i)5ou*oYFW~l%0I)Rqf23_sz%0P|ReDhk|P4U0Xcuo6dr|lz%8u(J-(g5aPB7bL68=QIM zS!{?%B^fbGcpd>TzDGc|*+qGlRk0Gc=O~qvia3|L-_BHT}97yQaK0jltq6w#6{TgZFFVL%l z?COY-%N~0r9WK5d_6#h3RAJG@;Rx-^@_X!a~%6C#C=5S)HI8tExOR z*k;?eY zQ+X%vjsvogULU?K^lvTyMu(10w7EvtD*Z(B$sdrx;*friMTRNW)fc-bn$UHQNtA9p zUqT|on>DrY|7Kh&A;0-JjD?5qg8$<;;D4l{zHp02z*p!w-Pv*HrJJU<@FU=PaLOY9 zn7np#sXl+(*ss-YyEj~L-9l+gur>cbIeLwm<3y&-JE7X&SMq-MRtzo1q_hILR5M8|J1my<=2zGj zEG0N(1h+uZW!AjIQl?5v;^P!PpjW%WCk{LEQV9~8Z$h^KE%teuMneg#+hXM0E*yw$Od(P;HQ?vLD7!-N^saF z`XhkJnDP;@@CfMazn$0u-UDyu9|0d!i?M{elzfEIf{9LeZ}K?v_F$8Je;z2w*Oif7 zli)pa+ebiv?5$Sl>z{Etv7{c`B<3!-RSg&fi@6TR!8r04A-A&-C>+j?c>V}T8&&6_ zW|kTC$%9_wBs~H?-W%Va0=x2Zx_zYf@XILxB-^IHky;Iw?$A z0KG)3d_pW05tL(O%RB(S2A|X*c_WHntff8dTy{jJv`@nG=F-R!m&UU>@A@p%c39QV z$scm=kHArij%e`x8=psjm!>baHuS(|Q({rcf3NkA)R5*#!JD97%g(?;x$S~C!e-Vi z+`ZQR;hRWrWM18uQ`mH+j-desYbJA`!4MZxWn{bcn8^#Q7!xoP>ezRZQYi!$3iIPE zKrO_*iDX+giy0~a;~Mc;m3g`p$_ocYW^N*w1pIh?$4rVn*2~%gdV~Z&OK{pIT?h)*UUR?Jn3N zEvRMv2na)QIwMJV-|<)O!;b>+cvQ{3=LHl7_RfB8S7*cov*Q4RJ7>)BLJtF;IKoVrrT zVeAi=%p(a&i*qMmh6;qMetG6&zCF3$AH+s+h%wPJ-jIk26tMO6wY6OB9(B{nn`>?X11+1Es_qoUk8aQ zA?r+I1`|GHT0ZJYGSjea$afL(^7sAoMc4v|C+eiGpf?WpEN!(i%aBy zJlH(z{YiNKUulNFhZ-GoTh`wi$&|*Jw3)pV9s%Rz2)BtH6%+vYYzh=G^&g<=Z(jaQ zZ1TftL8;FQ{Z?Lr!*fyI$bw5vHOY}2q}L;0vnYlO4BvbNM5oW_Yq|btbn!2I1RQEa zC9gJC0%28;0KJsD9LIsG@@}MGKK1_tsD5g(44*?j))|Qsy9)X13>Ek~{R85kDz5Q? zDd*IO_2AuUxd2nVS{RKR#D0wJ_2fg|pG^2$@Y*=CLH=29Rd#CN?{RP7-OQ*6zO_mk z^+1`@bonkZ&1$#O)fjk=_e*C>8FlkLPc+(R{7tGRaDyFmcl@eou)_KbU^LGl;$oAG z(R2}D!SwbKkdu@4trb}-iDt<_ojZu(!LtY zGmi@2G|gN#6 z`RI%BL2mBcrVQCU^>$`L}4tHynbbX@F5CvX` zZq4d@TN%F@rJoO*vo%GhS?%XUG|2>JYrJ4%-50;BIsfiDt{Yr!`NX}+F#Ht^55mbO zN0weu&i!*eg~l+m_c1H{^6hSJUEhR*6q zt}#l-TSz95#yyKcT?EPJ&#AodLnN3^uDMy1^ETKsNL4ya^yrEkI%kVT8_~42EY4|{ ztNyrSPODja;-CyKqvJh3%1G|u-lJrpLiU;&MZXd9n>iHy>O6oq`sev(j{tWllShh+ zU@ih0R``J8^~D9|!xaj7NZu3~kGZvdmWsd^l$e9W`jLkLS`H(Ccn56qsKV*E*~Em# z@>U0tMP|QI1{S6IJRPNU0m1=MC{w!CPL5;xwPXFZC&^!=R$9v1js5lJeQ|}#o6v6Z zbk>`#6S#`ZF1`zN_qeX@Fe*{i~W9yv{Nxz6VVpI!UKm5LN>Yfu^i z3mNI;`p&FKoA=9-Qgxj~?5EJ;%xAnqz!RcINk~r!u}7WRISfSc)!q&QNv~l*_W_u=*5uASPRP|pdjjm>=6*b2DV&Ab$knWbNUGQLB4PUyny3AAb{(d zH;brzMxYS?e?56&w-h(NNS2m|9Mtdv#y$epx{-Jx%2~l5j^B#D$T=;|fPr@tbFz3B zpB9@6II3IC-F;lPhi(iTFK~g!d!Y}P;I78{3|D)*fw7n|mk_EJy?q|?+Y84Vh?YtU zNC-#dj?�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

  • mixin/asset.js
  • mixin/assetConsumer.js
  • factory/imageAsset.js
  • +
  • factory/noise.js
  • factory/spriteAsset.js
  • factory/videoAsset.js
  • +
  • Note that Cells can also be used as assets
  • Styles

    @@ -235,6 +237,12 @@

    Filters demos

  • Filters-011 Parameters for: chromakey filter
  • Filters-012 Parameters for: matrix, matrix5 filters
  • Filters-013 Parameters for: flood filter
  • +
  • Filters-014 Parameters for: areaAlpha filter
  • +
  • Filters-015 Using assets in the filter stream; filter compositing
  • +
  • Filters-016 Filter blend operation
  • +
  • Filters-017 Parameters for: displace filter
  • +
  • Filters-018 Parameters for: emboss filter
  • +
  • Filters-019 Using a Noise asset with a displace filter
  • Filters-051 Canvas engine filter strings (based on CSS filters)
  • Filters-052 SVG-based filter example: gaussian blur
  • Filters-053 SVG-based filter example: posterize
  • @@ -242,50 +250,6 @@

    Filters demos

  • Filters-055 SVG-based filter example: noise
  • -

    Particles and physics demos

    • Particles-001 Emitter entity, and Particle World, basic functionality
    • diff --git a/source/core/utilities.js b/source/core/utilities.js index 5c632da90..8bb7431cc 100644 --- a/source/core/utilities.js +++ b/source/core/utilities.js @@ -104,6 +104,7 @@ const correctForZero = (item) => { // __λ functions__ helps us avoid errors when invoking a function attribute settable by the coder const λnull = () => {}; +const λfirstArg = function (a) { return a; }; const λthis = function () { return this; }; const λpromise = () => Promise.resolve(true); @@ -297,12 +298,310 @@ const xtGet = (...args) => args.find(item => typeof item != 'undefined'); const xto = (...args) => (args.find(item => typeof item != 'undefined')) ? true : false; +// Seedable random numbers +// The following code has been lifted in its entirety from https://github.com/skratchdot/random-seed + +/* + * random-seed + * https://github.com/skratchdot/random-seed + * + * This code was originally written by Steve Gibson and can be found here: + * + * https://www.grc.com/otg/uheprng.htm + * + * It was slightly modified for use in node, to pass jshint, and a few additional + * helper functions were added. + * + * Copyright (c) 2013 skratchdot + * Dual Licensed under the MIT license and the original GRC copyright/license + * included below. + */ +/* ============================================================================ + Gibson Research Corporation + UHEPRNG - Ultra High Entropy Pseudo-Random Number Generator + ============================================================================ + LICENSE AND COPYRIGHT: THIS CODE IS HEREBY RELEASED INTO THE PUBLIC DOMAIN + Gibson Research Corporation releases and disclaims ALL RIGHTS AND TITLE IN + THIS CODE OR ANY DERIVATIVES. Anyone may be freely use it for any purpose. + ============================================================================ + This is GRC's cryptographically strong PRNG (pseudo-random number generator) + for JavaScript. It is driven by 1536 bits of entropy, stored in an array of + 48, 32-bit JavaScript variables. Since many applications of this generator, + including ours with the "Off The Grid" Latin Square generator, may require + the deteriministic re-generation of a sequence of PRNs, this PRNG's initial + entropic state can be read and written as a static whole, and incrementally + evolved by pouring new source entropy into the generator's internal state. + ---------------------------------------------------------------------------- + ENDLESS THANKS are due Johannes Baagoe for his careful development of highly + robust JavaScript implementations of JS PRNGs. This work was based upon his + JavaScript "Alea" PRNG which is based upon the extremely robust Multiply- + With-Carry (MWC) PRNG invented by George Marsaglia. MWC Algorithm References: + http://www.GRC.com/otg/Marsaglia_PRNGs.pdf + http://www.GRC.com/otg/Marsaglia_MWC_Generators.pdf + ---------------------------------------------------------------------------- + The quality of this algorithm's pseudo-random numbers have been verified by + multiple independent researchers. It handily passes the fermilab.ch tests as + well as the "diehard" and "dieharder" test suites. For individuals wishing + to further verify the quality of this algorithm's pseudo-random numbers, a + 256-megabyte file of this algorithm's output may be downloaded from GRC.com, + and a Microsoft Windows scripting host (WSH) version of this algorithm may be + downloaded and run from the Windows command prompt to generate unique files + of any size: + The Fermilab "ENT" tests: http://fourmilab.ch/random/ + The 256-megabyte sample PRN file at GRC: https://www.GRC.com/otg/uheprng.bin + The Windows scripting host version: https://www.GRC.com/otg/wsh-uheprng.js + ---------------------------------------------------------------------------- + Qualifying MWC multipliers are: 187884, 686118, 898134, 1104375, 1250205, + 1460910 and 1768863. (We use the largest one that's < 2^21) + ============================================================================ */ + + +/* ============================================================================ +This is based upon Johannes Baagoe's carefully designed and efficient hash +function for use with JavaScript. It has a proven "avalanche" effect such +that every bit of the input affects every bit of the output 50% of the time, +which is good. See: http://baagoe.com/en/RandomMusings/hash/avalanche.xhtml +============================================================================ +*/ +var Mash = function () { + var n = 0xefc8249d; + var mash = function (data) { + if (data) { + data = data.toString(); + for (var i = 0; i < data.length; i++) { + n += data.charCodeAt(i); + var h = 0.02519603282416938 * n; + n = h >>> 0; + h -= n; + h *= n; + n = h >>> 0; + h -= n; + n += h * 0x100000000; // 2^32 + } + return (n >>> 0) * 2.3283064365386963e-10; // 2^-32 + } else { + n = 0xefc8249d; + } + }; + return mash; +}; + +var uheprng = function (seed) { + return (function () { + var o = 48; // set the 'order' number of ENTROPY-holding 32-bit values + var c = 1; // init the 'carry' used by the multiply-with-carry (MWC) algorithm + var p = o; // init the 'phase' (max-1) of the intermediate variable pointer + var s = new Array(o); // declare our intermediate variables array + var i; // general purpose local + var j; // general purpose local + var k = 0; // general purpose local + + // when our "uheprng" is initially invoked our PRNG state is initialized from the + // browser's own local PRNG. This is okay since although its generator might not + // be wonderful, it's useful for establishing large startup entropy for our usage. + var mash = new Mash(); // get a pointer to our high-performance "Mash" hash + + // fill the array with initial mash hash values + for (i = 0; i < o; i++) { + s[i] = mash(Math.random()); + } + + // this PRIVATE (internal access only) function is the heart of the multiply-with-carry + // (MWC) PRNG algorithm. When called it returns a pseudo-random number in the form of a + // 32-bit JavaScript fraction (0.0 to <1.0) it is a PRIVATE function used by the default + // [0-1] return function, and by the random 'string(n)' function which returns 'n' + // characters from 33 to 126. + var rawprng = function () { + if (++p >= o) { + p = 0; + } + var t = 1768863 * s[p] + c * 2.3283064365386963e-10; // 2^-32 + return s[p] = t - (c = t | 0); + }; + + // this EXPORTED function is the default function returned by this library. + // The values returned are integers in the range from 0 to range-1. We first + // obtain two 32-bit fractions (from rawprng) to synthesize a single high + // resolution 53-bit prng (0 to <1), then we multiply this by the caller's + // "range" param and take the "floor" to return a equally probable integer. + var random = function (range) { + return Math.floor(range * (rawprng() + (rawprng() * 0x200000 | 0) * 1.1102230246251565e-16)); // 2^-53 + }; + + // this EXPORTED function 'string(n)' returns a pseudo-random string of + // 'n' printable characters ranging from chr(33) to chr(126) inclusive. + random.string = function (count) { + var i; + var s = ''; + for (i = 0; i < count; i++) { + s += String.fromCharCode(33 + random(94)); + } + return s; + }; + + // this PRIVATE "hash" function is used to evolve the generator's internal + // entropy state. It is also called by the EXPORTED addEntropy() function + // which is used to pour entropy into the PRNG. + var hash = function () { + var args = Array.prototype.slice.call(arguments); + for (i = 0; i < args.length; i++) { + for (j = 0; j < o; j++) { + s[j] -= mash(args[i]); + if (s[j] < 0) { + s[j] += 1; + } + } + } + }; + + // this EXPORTED "clean string" function removes leading and trailing spaces and non-printing + // control characters, including any embedded carriage-return (CR) and line-feed (LF) characters, + // from any string it is handed. this is also used by the 'hashstring' function (below) to help + // users always obtain the same EFFECTIVE uheprng seeding key. + random.cleanString = function (inStr) { + inStr = inStr.replace(/(^\s*)|(\s*$)/gi, ''); // remove any/all leading spaces + inStr = inStr.replace(/[\x00-\x1F]/gi, ''); // remove any/all control characters + inStr = inStr.replace(/\n /, '\n'); // remove any/all trailing spaces + return inStr; // return the cleaned up result + }; + + // this EXPORTED "hash string" function hashes the provided character string after first removing + // any leading or trailing spaces and ignoring any embedded carriage returns (CR) or Line Feeds (LF) + random.hashString = function (inStr) { + inStr = random.cleanString(inStr); + mash(inStr); // use the string to evolve the 'mash' state + for (i = 0; i < inStr.length; i++) { // scan through the characters in our string + k = inStr.charCodeAt(i); // get the character code at the location + for (j = 0; j < o; j++) { // "mash" it into the UHEPRNG state + s[j] -= mash(k); + if (s[j] < 0) { + s[j] += 1; + } + } + } + }; + + // this EXPORTED function allows you to seed the random generator. + random.seed = function (seed) { + if (typeof seed === 'undefined' || seed === null) { + seed = Math.random(); + } + if (typeof seed !== 'string') { + seed = stringify(seed, function (key, value) { + if (typeof value === 'function') { + return (value).toString(); + } + return value; + }); + } + random.initState(); + random.hashString(seed); + }; + + // this handy exported function is used to add entropy to our uheprng at any time + random.addEntropy = function ( /* accept zero or more arguments */ ) { + var args = []; + for (i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + hash((k++) + (new Date().getTime()) + args.join('') + Math.random()); + }; + + // if we want to provide a deterministic startup context for our PRNG, + // but without directly setting the internal state variables, this allows + // us to initialize the mash hash and PRNG's internal state before providing + // some hashing input + random.initState = function () { + mash(); // pass a null arg to force mash hash to init + for (i = 0; i < o; i++) { + s[i] = mash(' '); // fill the array with initial mash hash values + } + c = 1; // init our multiply-with-carry carry + p = o; // init our phase + }; + + // we use this (optional) exported function to signal the JavaScript interpreter + // that we're finished using the "Mash" hash function so that it can free up the + // local "instance variables" is will have been maintaining. It's not strictly + // necessary, of course, but it's good JavaScript citizenship. + random.done = function () { + mash = null; + }; + + // if we called "uheprng" with a seed value, then execute random.seed() before returning + if (typeof seed !== 'undefined') { + random.seed(seed); + } + + // Returns a random integer between 0 (inclusive) and range (exclusive) + random.range = function (range) { + return random(range); + }; + + // Returns a random float between 0 (inclusive) and 1 (exclusive) + random.random = function () { + return random(Number.MAX_VALUE - 1) / Number.MAX_VALUE; + }; + + // Returns a random float between min (inclusive) and max (exclusive) + random.floatBetween = function (min, max) { + return random.random() * (max - min) + min; + }; + + // Returns a random integer between min (inclusive) and max (inclusive) + random.intBetween = function (min, max) { + return Math.floor(random.random() * (max - min + 1)) + min; + }; + + // when our main outer "uheprng" function is called, after setting up our + // initial variables and entropic state, we return an "instance pointer" + // to the internal anonymous function which can then be used to access + // the uheprng's various exported functions. As with the ".done" function + // above, we should set the returned value to 'null' once we're finished + // using any of these functions. + return random; + }()); +}; + +// ... And this code comes from https://github.com/moll/json-stringify-safe +function stringify(obj, replacer, spaces, cycleReplacer) { + return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces) +} + +function serializer(replacer, cycleReplacer) { + var stack = [], keys = [] + + if (cycleReplacer == null) cycleReplacer = function(key, value) { + if (stack[0] === value) return "[Circular ~]" + return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]" + } + + return function(key, value) { + if (stack.length > 0) { + var thisPos = stack.indexOf(this) + ~thisPos ? stack.splice(thisPos + 1) : stack.push(this) + ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key) + if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value) + } + else stack.push(value) + + return replacer == null ? value : replacer.call(this, key, value) + } +} + +const seededRandomNumberGenerator = function (seed) { + + return new uheprng(seed); +}; + + // #### Exports export { addStrings, convertTime, correctForZero, λnull, + λfirstArg, λthis, λpromise, generateUuid, @@ -319,6 +618,7 @@ export { mergeOver, pushUnique, removeItem, + seededRandomNumberGenerator, xt, xta, xtGet, diff --git a/source/factory/noise.js b/source/factory/noise.js index fca235c61..6d7cbd8b6 100644 --- a/source/factory/noise.js +++ b/source/factory/noise.js @@ -8,11 +8,13 @@ // #### Imports import { constructors } from '../core/library.js'; -import { mergeOver } from '../core/utilities.js'; +import { mergeOver, λnull, λthis, λfirstArg, removeItem, seededRandomNumberGenerator } from '../core/utilities.js'; + +import { makeColor } from './color.js'; import baseMix from '../mixin/base.js'; import assetMix from '../mixin/asset.js'; -// import patternMix from '../mixin/pattern.js'; +import patternMix from '../mixin/pattern.js'; // #### Noise constructor @@ -24,14 +26,28 @@ const Noise = function (items = {}) { let mycanvas = document.createElement('canvas'); mycanvas.id = this.name; - mycanvas.width = 300; - mycanvas.height = 150; - this.installElement(mycanvas); + this.perm = []; + this.permMod8 = []; + this.values = []; + this.grad = []; + + this.subscribers = []; + + this.colorFactory = makeColor({ + name: `${this.name}-color-factory`, + minimumColor: items.gradientStart || 'red', + maximumColor: items.gradientEnd || 'green', + }); + this.set(this.defs); this.set(items); + if (items.subscribe) this.subscribers.push(items.subscribe); + + this.dirtyOutput = true; + return this; }; @@ -49,21 +65,60 @@ P.isAsset = true; // + [entity](../mixin/entity.html) P = baseMix(P); P = assetMix(P); +P = patternMix(P); // #### Noise attributes let defaultAttributes = { + width: 300, + height: 150, + + seed: 'noize', + noiseFunction: 'perlin_improved', + smoothing: 'quintic', + scale: 50, + size: 256, + octaves: 1, + persistence: 0.5, + lacunarity: 2, + independent: false, + octaveFunction: 'none', + sumFunction: 'none', + sineFrequencyCoeff: 1, + modularAmplitude: 5, + + color: 'monochrome', + + monochromeStart: 0, + monochromeRange: 255, + + hueStart: 0, + hueRange: 120, + saturation: 100, + luminosity: 50, + + gradientStart: '#ff0000', + gradientEnd: '#00ff00', }; P.defs = mergeOver(P.defs, defaultAttributes); +delete P.defs.source; +delete P.defs.sourceLoaded; // #### Packet management -// No additional packet functionality required +// This functionality is disabled for Cell objects +P.stringifyFunction = λnull; +P.processPacketOut = λnull; +P.finalizePacketOut = λnull; +P.saveAsPacket = function () { + + return `[${this.name}, ${this.type}, ${this.lib}, {}]` +}; // #### Clone management -// No additional clone functionality required +P.clone = λthis; // #### Kill management @@ -75,9 +130,279 @@ let G = P.getters, S = P.setters, D = P.deltaSetters; +// __source__ +S.source = λnull; + +// __subscribers__ - we disable the ability to set the subscribers Array directly. Picture entitys and Pattern styles will manage their subscription to the asset using their subscribe() and unsubscribe() functions. Filters will check for updates every time they run +S.subscribers = λnull; + +S.octaveFunction = function (item) { + + this.octaveFunction = this.octaveFunctions[item] || λfirstArg; + this.dirtyNoise = true; + this.dirtyOutput = true; +}; + +S.sumFunction = function (item) { + + this.sumFunction = this.sumFunctions[item] || λfirstArg; + this.dirtyNoise = true; + this.dirtyOutput = true; +}; + +S.smoothing = function (item) { + + this.smoothing = this.smoothingFunctions[item] || λfirstArg; + this.dirtyNoise = true; + this.dirtyOutput = true; +}; + +S.noiseFunction = function (item) { + + this.noiseFunction = this.noiseFunctions[item] || this.noiseFunctions['simplex']; + this.dirtyNoise = true; + this.dirtyOutput = true; +}; + +S.octaves = function (item) { + + if (item.toFixed) { + + this.octaves = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.seed = function (item) { + + if (item.substring) { + + this.seed = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +P.supportedColorSchemes = ['monochrome', 'gradient', 'hue']; +S.color = function (item) { + + if (this.supportedColorSchemes.indexOf(item) >= 0) { + + this.color = item; + this.dirtyOutput = true; + } +}; + +S.scale = function (item) { + + if (item.toFixed) { + + this.scale = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.size = function (item) { + + if (item.toFixed) { + + this.size = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.persistence = function (item) { + + if (item.toFixed) { + + this.persistence = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.lacunarity = function (item) { + + if (item.toFixed) { + + this.lacunarity = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.independent = function (item) { + + this.independent = !!item; + this.dirtyNoise = true; + this.dirtyOutput = true; +}; + +S.gradientStart = function (item) { + + if (item.substring) { + + this.colorFactory.setMinimumColor(item); + this.dirtyOutput = true; + } +}; + +S.gradientEnd = function (item) { + + if (item.substring) { + + this.colorFactory.setMaximumColor(item); + this.dirtyOutput = true; + } +}; + +S.monochromeStart = function (item) { + + if (item.toFixed && item >= 0 && item < 256) { + + this.monochromeStart = Math.floor(item); + this.dirtyOutput = true; + } +}; + +S.monochromeRange = function (item) { + + if (item.toFixed && item >= 0 && item < 256) { + + this.monochromeRange = Math.floor(item); + this.dirtyOutput = true; + } +}; + +S.hueStart = function (item) { + + if (item.toFixed) { + + this.hueStart = Math.floor(item); + this.dirtyOutput = true; + } +}; + +S.hueRange = function (item) { + + if (item.toFixed) { + + this.hueRange = Math.floor(item); + this.dirtyOutput = true; + } +}; + +S.saturation = function (item) { + + if (item.toFixed && item >= 0 && item <= 100) { + + this.saturation = Math.floor(item); + this.dirtyOutput = true; + } +}; + +S.luminosity = function (item) { + + if (item.toFixed && item >= 0 && item <= 100) { + + this.luminosity = Math.floor(item); + this.dirtyOutput = true; + } +}; + +S.sineFrequencyCoeff = function (item) { + + if (item.toFixed) { + + this.sineFrequencyCoeff = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.modularAmplitude = function (item) { + + if (item.toFixed) { + + this.modularAmplitude = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.width = function (item) { + + if (item.toFixed) { + + this.width = item; + this.sourceNaturalWidth = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; + +S.height = function (item) { + + if (item.toFixed) { + + this.height = item; + this.sourceNaturalHeight = item; + this.dirtyNoise = true; + this.dirtyOutput = true; + } +}; // #### Prototype functions +P.presetTo = function (preset) { + + if (preset.substring) { + + this.dirtyNoise = true; + this.dirtyOutput = true; + + switch (preset) { + + case 'plain' : + this.octaves = 1; + this.octaveFunction = λfirstArg; + this.sumFunction = λfirstArg; + break; + + case 'clouds' : + this.octaves = 5; + this.octaveFunction = λfirstArg; + this.sumFunction = λfirstArg; + break; + + case 'turbulence' : + this.octaves = 5; + this.octaveFunction = this.octaveFunctions['absolute']; + this.sumFunction = λfirstArg; + break; + + case 'marble' : + this.octaves = 5; + this.octaveFunction = this.octaveFunctions['absolute']; + this.sumFunction = this.sumFunctions['sine']; + break; + + case 'wood' : + this.octaves = 1; + this.octaveFunction = λfirstArg; + this.sumFunction = this.sumFunctions['modular']; + break; + + default : + this.octaves = 1; + this.octaveFunction = λfirstArg; + this.sumFunction = λfirstArg; + } + } +} // `installElement` - internal function, used by the constructor P.installElement = function (element) { @@ -88,435 +413,615 @@ P.installElement = function (element) { return this; }; -// https://github.com/garycourt/murmurhash-js/blob/master/murmurhash3_gc.js -/** - * JS Implementation of MurmurHash3 (r136) (as of May 20, 2011) - * - * @author Gary Court - * @see http://github.com/garycourt/murmurhash-js - * @author Austin Appleby - * @see http://sites.google.com/site/murmurhash/ - * - * @param {string} key ASCII only - * @param {number} seed Positive integer only - * @return {number} 32-bit positive integer hash - */ -P.murmurhash3_32_gc = function (key, seed = 12345) { - - var remainder, bytes, h1, h1b, c1, c1b, c2, c2b, k1, i; - - remainder = key.length & 3; // key.length % 4 - bytes = key.length - remainder; - h1 = seed; - c1 = 0xcc9e2d51; - c2 = 0x1b873593; - i = 0; - - while (i < bytes) { - k1 = - ((key.charCodeAt(i) & 0xff)) | - ((key.charCodeAt(++i) & 0xff) << 8) | - ((key.charCodeAt(++i) & 0xff) << 16) | - ((key.charCodeAt(++i) & 0xff) << 24); - ++i; - - k1 = ((((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16))) & 0xffffffff; - k1 = (k1 << 15) | (k1 >>> 17); - k1 = ((((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16))) & 0xffffffff; - - h1 ^= k1; - h1 = (h1 << 13) | (h1 >>> 19); - h1b = ((((h1 & 0xffff) * 5) + ((((h1 >>> 16) * 5) & 0xffff) << 16))) & 0xffffffff; - h1 = (((h1b & 0xffff) + 0x6b64) + ((((h1b >>> 16) + 0xe654) & 0xffff) << 16)); - } - - k1 = 0; - - switch (remainder) { - case 3: k1 ^= (key.charCodeAt(i + 2) & 0xff) << 16; - case 2: k1 ^= (key.charCodeAt(i + 1) & 0xff) << 8; - case 1: k1 ^= (key.charCodeAt(i) & 0xff); - - k1 = (((k1 & 0xffff) * c1) + ((((k1 >>> 16) * c1) & 0xffff) << 16)) & 0xffffffff; - k1 = (k1 << 15) | (k1 >>> 17); - k1 = (((k1 & 0xffff) * c2) + ((((k1 >>> 16) * c2) & 0xffff) << 16)) & 0xffffffff; - h1 ^= k1; - } - - h1 ^= key.length; +P.checkSource = function (width, height) { + + this.notifySubscribers(); +}; - h1 ^= h1 >>> 16; - h1 = (((h1 & 0xffff) * 0x85ebca6b) + ((((h1 >>> 16) * 0x85ebca6b) & 0xffff) << 16)) & 0xffffffff; - h1 ^= h1 >>> 13; - h1 = ((((h1 & 0xffff) * 0xc2b2ae35) + ((((h1 >>> 16) * 0xc2b2ae35) & 0xffff) << 16))) & 0xffffffff; - h1 ^= h1 >>> 16; +// `getData` +P.getData = function (entity, cell) { - return h1 >>> 0; + this.checkSource(this.width, this.height); + + return this.buildStyle(cell); }; -// PSEUDO-RANDOM NUMBER GENERATOR -// + https://stackoverflow.com/questions/521295/seeding-the-random-number-generator-in-javascript/47593316 -P.mulberry32 = function (a) { +// `notifySubscribers` - Subscriber notification in the asset factories will happen when something changes with the image. Changes vary across the different types of asset: +// + __imageAsset__ - needs to update its subscribers when an image completes loading - or, for <img> sources with srcset (and sizes) attributes, when the image completes a reload of its source data. +// + __spriteAsset__ - will also update its subscribers each time it moves to a new sprite image frame, if the sprite is being animated +// + __videoAsset__ - will update its subscribers for every RAF tick while the video is playing, or if the video is halted and seeks to a different time in the video play stream. +// +// All notifications are push; the notification is achieved by setting various attributes and flags in each subscriber. +P.notifySubscribers = function () { - return function() { + if (this.dirtyOutput || this.dirtyNoise) this.cleanOutput(); - a |= 0; a = a + 0x6D2B79F5 | 0; - var t = Math.imul(a ^ a >>> 15, 1 | a); - t = t + Math.imul(t ^ t >>> 7, 61 | t) ^ t; + this.subscribers.forEach(sub => this.notifySubscriber(sub), this); +}; - return ((t ^ t >>> 14) >>> 0) / 4294967296; - } -} +P.notifySubscriber = function (sub) { -P.grad3 = [[1, 1, 0], [-1, 1, 0], [1, -1, 0], [-1, -1, 0], [1, 0, 1], [-1, 0, 1], [1, 0, -1], [-1, 0, -1], [0, 1, 1], [0, -1, 1], [0, 1, -1], [0, -1, -1]]; + sub.sourceNaturalWidth = this.width; + sub.sourceNaturalHeight = this.height; + sub.sourceLoaded = true; + sub.source = this.element; + sub.dirtyImage = true; + sub.dirtyCopyStart = true; + sub.dirtyCopyDimensions = true; + sub.dirtyImageSubscribers = true; +}; +// Much of the following code comes from the "canvas-noise" GitHub repository +// - https://github.com/lencinhaus/canvas-noise +// - Written by https://github.com/lencinhaus (who has been inactive on GitHub since 2015) +P.cleanOutput = function () { -// #### Factory -// ``` -// TODO -// ``` -const makeNoise = function (items) { - return new Noise(items); + if (this.dirtyNoise) this.cleanNoise(); + if (this.dirtyOutput) this.paintCanvas(); }; -constructors.Noise = Noise; +P.cleanNoise = function () { + if (this.dirtyNoise) { -// #### Exports -export { - makeNoise, + this.dirtyNoise = false; + + let {noiseFunction, seed, width, height, element, engine, octaves, lacunarity, persistence, scale, octaveFunction, sumFunction} = this; + + if (noiseFunction && noiseFunction.init) { + + // Seed our pseudo-random number generator + this.rndEngine = seededRandomNumberGenerator(seed); + + // Generate the permutations table(s) + this.generatePermutationTable(); + + // Initialize the appropriate noise function + noiseFunction.init.call(this); + + let x, y, o, i, iz, + noiseValues = [], + scaledX, scaledY, + noise, amplitude, frequency, octave; + + // Prepare the noiseValues 2d array + for (y = 0; y < height; y++) { + + noiseValues[y] = []; + + for (x = 0; x < width; x++) { + + noiseValues[y][x] = []; + } + } + + // Calculate a relative scale, and setup min/max variables + let relativeScale = Math.pow(width, -scale / 100); + + let max = -1000, + min = 1000; + + // This is the core of the calculation, performed for each cell in the noiseValues 2d array + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + + scaledX = x * relativeScale; + scaledY = y * relativeScale; + + // Amplitude and frequency will update once per octave calculation; noise is the sum of all octave results + noise = 0; + amplitude = 1; + frequency = 1; + + + for (o = 0; o < octaves; o++) { + + // call the appropriate noise function + let octave = noiseFunction.noise.call(this, scaledX * frequency, scaledY * frequency); + + // update octave with a post-calculation octaveFunction, if required + octave = octaveFunction(octave, scaledX, scaledY, o + 1); + + octave *= amplitude; + + noise += octave; + + frequency *= lacunarity; + + amplitude *= persistence; + } + noiseValues[y][x] = noise; + + min = Math.min(min, noise); + max = Math.max(max, noise); + } + } + + // Calculate the span of numbers generated - we need to get all the results in the range 0 to 1 + let noiseSpan = max - min; + + for (y = 0; y < height; y++) { + for (x = 0; x < width; x++) { + + scaledX = x * relativeScale; + scaledY = y * relativeScale; + + // Clamp the cell's noise value to between 0 and 1, then update it with the post-calculation sumFunction, if required + let v0 = noiseValues[y][x], + v1 = (v0 - min) / noiseSpan, + v2 = sumFunction.call(this, v1, scaledX, scaledY); + + noiseValues[y][x] = v2; + } + } + this.noiseValues = noiseValues; + } + else this.dirtyNoise = true; + } }; +P.paintCanvas = function () { + if (this.dirtyOutput) { + this.dirtyOutput = false; + let {noiseValues, element, engine, width, height, color, colorFactory, monochromeStart, monochromeRange, hueStart, hueRange, saturation, luminosity} = this; + // Noise values will be calculated in the cleanNoise function, but just in case this function gets invoked directly before the 2d array has been created ... + if (null != noiseValues) { + // Update the Canvas element's dimensions - this will also clear the canvas display + element.width = width; + element.height = height; -// SIMPLEX NOISE -// From http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf -// - The code in that paper is written in Java and, the author says, not tweaked for speed + // Rebuild the display, pixel-by-pixel + switch (color) { -// const SimplexNoise = function (p) { + case 'hue' : -// this.perm = p; + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { -// this.seedstring = 'HELLO WORLD', - -// let i; + engine.fillStyle = `hsl(${(hueStart + (noiseValues[y][x] * hueRange)) % 360}, ${saturation}%, ${luminosity}%)`; + engine.fillRect(x, y, 1, 1); + } + } + break; + + case 'gradient' : + + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { + + engine.fillStyle = colorFactory.getRangeColor(noiseValues[y][x]); + engine.fillRect(x, y, 1, 1); + } + } + break; -// if (!Array.isArray(p) || !p.substring) p = []; -// if (p.substring) { + // The default color preference is monochrome + default : -// seedstring = p; -// p = []; -// }; + if (monochromeStart + monochromeRange > 255) monochromeRange = 255 - monochromeStart; -// if (p.length != 512) { + for (let y = 0; y < height; y++) { + for (let x = 0; x < width; x++) { -// p.length = 0; + let gray = Math.floor(monochromeStart + (noiseValues[y][x] * monochromeRange)); -// let randomizerseed = this.murmurhash3_32_gc(seedstring), -// randomizer = new mulberry32(randomizerseed); + engine.fillStyle = `rgb(${gray}, ${gray}, ${gray})`; -// for (i = 0; i < 256; i++) { + engine.fillRect(x, y, 1, 1); + } + } + } + } + else this.dirtyOutput = true; + } +}; + + +P.F = 0.5 * (Math.sqrt(3) - 1); +P.G = (3 - Math.sqrt(3)) / 6; +P.perlinGrad = [[1, 1], [-1, 1], [1, -1], [-1, -1], [1, 0], [-1, 0], [0, 1], [0, -1]]; -// p.push(randomizer()); -// } -// let perm = []; +P.noiseFunctions = { -// for (i = 0; i < 512; i++) { + 'perlin_classic': { -// perm[i] = p[i & 255]; -// } + init: function () { -// this.perm = perm; -// } -// }; + const {grad, size, rndEngine} = this; -// let P = SimplexNoise.prototype = Object.create(Object.prototype); + let dist; + + grad.length = 0; -// P.getPerm = function () { + for(let i = 0; i < size; i++) { -// return this.perm; -// }; + grad[i] = [(rndEngine.random() * 2) - 1, (rndEngine.random() * 2) - 1]; + dist = Math.sqrt(grad[i][0] * grad[i][0] + grad[i][1] * grad[i][1]); + grad[i][0] /= dist; + grad[i][1] /= dist; + } + }, -// P.getSeedstring = function () { + noise: function (x, y) { -// return this.seedstring; -// }; + const {size, perm, grad, smoothing, interpolate} = this; -// P.dot = function (g, x = 0, y = 0, z = 0, w = 0) { + let a, b, u, v; -// let [gx, gy, gz, gw] = g; + let bx0 = Math.floor(x) % size, + bx1 = (bx0 + 1) % size, -// if (null == gz) return (gx * x) + (gy * y); -// if (null == gw) return (gx * x) + (gy * y) + (gz * z); -// return (gx * x) + (gy * y) + (gz * z) + (gw * w); -// }; + rx0 = x - Math.floor(x), + rx1 = rx0 - 1, -// P.noise = function (xin, yin) { + by0 = Math.floor(y) % size, + by1 = (by0 + 1) % size, -// let n0, n1, n2; + ry0 = y - Math.floor(y), + ry1 = ry0 - 1, -// const F2 = 0.5 * (Math.sqrt(3) - 1); + i = perm[bx0], + j = perm[bx1], -// const s = (xin + yin) * F2; + b00 = perm[i + by0], + b10 = perm[j + by0], + b01 = perm[i + by1], + b11 = perm[j + by1], -// let i = Math.floor(xin + s), -// j = Math.floor(yin + s); + sx = smoothing(rx0), + sy = smoothing(ry0); + + u = rx0 * grad[b00][0] + ry0 * grad[b00][1]; + v = rx1 * grad[b10][0] + ry0 * grad[b10][1]; + a = interpolate(sx, u, v); + + u = rx0 * grad[b01][0] + ry1 * grad[b01][1]; + v = rx1 * grad[b11][0] + ry1 * grad[b11][1]; + b = interpolate(sx, u, v); + + return 0.5 * (1 + interpolate(sy, a, b)); + }, + }, + + 'perlin_improved': { + + init: λnull, + + noise: function (x, y) { + + const {size, perm, permMod8, perlinGrad, smoothing, interpolate} = this; + + let a, b, u, v; + + let bx0 = Math.floor(x) % size, + bx1 = (bx0 + 1) % size; + + let rx0 = x - Math.floor(x), + rx1 = rx0 - 1; + + let by0 = Math.floor(y) % size, + by1 = (by0 + 1) % size; + + let ry0 = y - Math.floor(y), + ry1 = ry0 - 1; + + let i = perm[bx0], + j = perm[bx1]; + + let b00 = permMod8[i + by0], + b10 = permMod8[j + by0], + b01 = permMod8[i + by1], + b11 = permMod8[j + by1]; + + let sx = smoothing(rx0), + sy = smoothing(ry0); + + u = rx0 * perlinGrad[b00][0] + ry0 * perlinGrad[b00][1]; + v = rx1 * perlinGrad[b10][0] + ry0 * perlinGrad[b10][1]; + a = interpolate(sx, u, v); + + u = rx0 * perlinGrad[b01][0] + ry1 * perlinGrad[b01][1]; + v = rx1 * perlinGrad[b11][0] + ry1 * perlinGrad[b11][1]; + b = interpolate(sx, u, v); + + return 0.5 * (1 + interpolate(sy, a, b)); + } + }, + + 'simplex': { + + init: λnull, + + noise: function (x, y) { + + let n0, n1, n2, s, i, j, t, X0, Y0, x0, y0, i1, j1, x1, x2, y1, y2, ii, jj, gi0, gi1, gi2, t0, t1, t2; + + const {F, G, size, perlinGrad, perm, permMod8} = this; + + s = (x + y) * F; + i = Math.floor(x + s); + j = Math.floor(y + s); + t = (i + j) * G; + + X0 = i - t; + Y0 = j - t; + x0 = x - X0; + y0 = y - Y0; + + if (x0 > y0) { + i1 = 1; + j1 = 0; + } + else { + i1 = 0; + j1 = 1; + } + + x1 = x0 - i1 + G; + y1 = y0 - j1 + G; + x2 = x0 - 1 + 2 * G; + y2 = y0 - 1 + 2 * G; + + ii = i % size; + jj = j % size; + + gi0 = permMod8[ii + perm[jj]]; + gi1 = permMod8[ii + i1 + perm[jj + j1]]; + gi2 = permMod8[ii + 1 + perm[jj + 1]]; + + t0 = 0.5 - x0 * x0 - y0 * y0; + if (t0 < 0) n0 = 0; + else { + t0 *= t0; + n0 = t0 * t0 * (perlinGrad[gi0][0] * x0 + perlinGrad[gi0][1] * y0); + } + + t1 = 0.5 - x1 * x1 - y1 * y1; + if (t1 < 0) n1 = 0; + else { + t1 *= t1; + n1 = t1 * t1 * (perlinGrad[gi1][0] * x1 + perlinGrad[gi1][1] * y1); + } + + t2 = 0.5 - x2 * x2 - y2 * y2; + if (t2 < 0) n2 = 0; + else { + t2 *= t2; + n2 = t2 * t2 * (perlinGrad[gi2][0] * x2 + perlinGrad[gi2][1] * y2); + } + + return 0.5 + 35 * (n0 + n1 + n2); + }, + }, + + 'value': { + + init: function () { + + const {values, size, rndEngine} = this; + + values.length = 0; + + for(let i = 0; i < size; i++) { + + values[i] = values[i + size] = rndEngine.random(); + } + }, + + noise: function (x, y) { + + const {values, size, perm, smoothing, interpolate} = this; + + let x0 = Math.floor(x) % size, + y0 = Math.floor(y) % size, + x1 = (x0 + 1) % size, + y1 = (y0 + 1) % size, + vx = x - Math.floor(x), + vy = y - Math.floor(y), + sx = smoothing(vx), + sy = smoothing(vy), + i = perm[x0], + j = perm[x1], + p00 = perm[i + y0], + p10 = perm[j + y0], + p01 = perm[i + y1], + p11 = perm[j + y1], + i1 = interpolate(sx, values[p00], values[p10]), + i2 = interpolate(sx, values[p01], values[p11]); + + return interpolate(sy, i1, i2); + }, + }, +}; + +P.update = function (data) { -// const G2 = (3.0 - Math.sqrt(3)) / 6; +}; -// let t = (i + j) * G2, -// X0 = i - t, -// Y0 = j - t, -// x0 = xin - X0, -// y0 = yin - Y0; +P.generatePermutationTable = function () { -// let i1, j1; + const {perm, permMod8, rndEngine, size} = this; -// if(x0 > y0) { -// i1 = 1; -// j1 = 0; -// } -// else { -// i1 = 0; -// j1 = 1; -// } + perm.length = 0; + permMod8.length = 0; -// let x1 = x0 - i1 + G2, -// y1 = y0 - j1 + G2, -// x2 = x0 - 1 + (2.0 * G2), -// y2 = y0 - 1 + (2.0 * G2); + let i, j, k; -// let ii = i & 255, -// jj = j & 255, -// perm = this.perm, -// gi0 = perm[ii + perm[jj]] % 12, -// gi1 = perm[ii + i1 + perm[jj + j1]] % 12, -// gi2 = perm[ii + 1 + perm[jj + 1]] % 12; + for(i = 0; i < size; i++) { -// // Calculate the contribution from the three corners -// double t0 = 0.5 - x0*x0-y0*y0; -// if(t0<0) n0 = 0.0; -// else { -// t0 *= t0; -// n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient -// } - -// double t1 = 0.5 - x1*x1-y1*y1; -// if(t1<0) n1 = 0.0; -// else { -// t1 *= t1; -// n1 = t1 * t1 * dot(grad3[gi1], x1, y1); -// } - -// double t2 = 0.5 - x2*x2-y2*y2; -// if(t2<0) n2 = 0.0; -// else { -// t2 *= t2; -// n2 = t2 * t2 * dot(grad3[gi2], x2, y2); -// } - -// // Add contributions from each corner to get the final noise value. -// // The result is scaled to return values in the interval [-1,1]. -// return 70.0 * (n0 + n1 + n2); -// } - -// public static double noise(double xin, double yin) { - -// double n0, n1, n2; // Noise contributions from the three corners - -// // Skew the input space to determine which simplex cell we're in -// final double F2 = 0.5*(Math.sqrt(3.0)-1.0); -// double s = (xin+yin)*F2; // Hairy factor for 2D -// int i = fastfloor(xin+s); -// int j = fastfloor(yin+s); - -// final double G2 = (3.0-Math.sqrt(3.0))/6.0; -// double t = (i+j)*G2; -// double X0 = i-t; // Unskew the cell origin back to (x,y) space -// double Y0 = j-t; -// double x0 = xin-X0; // The x,y distances from the cell origin -// double y0 = yin-Y0; - -// // For the 2D case, the simplex shape is an equilateral triangle. -// // Determine which simplex we are in. -// int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords -// if(x0>y0) {i1=1; j1=0;} // lower triangle, XY order: (0,0)->(1,0)->(1,1) -// else {i1=0; j1=1;} // upper triangle, YX order: (0,0)->(0,1)->(1,1) - -// // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and -// // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where -// // c = (3-sqrt(3))/6 - -// double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords -// double y1 = y0 - j1 + G2; -// double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords -// double y2 = y0 - 1.0 + 2.0 * G2; - -// // Work out the hashed gradient indices of the three simplex corners -// int ii = i & 255; -// int jj = j & 255; -// int gi0 = perm[ii+perm[jj]] % 12; -// int gi1 = perm[ii+i1+perm[jj+j1]] % 12; -// int gi2 = perm[ii+1+perm[jj+1]] % 12; - -// // Calculate the contribution from the three corners -// double t0 = 0.5 - x0*x0-y0*y0; -// if(t0<0) n0 = 0.0; -// else { -// t0 *= t0; -// n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient -// } - -// double t1 = 0.5 - x1*x1-y1*y1; -// if(t1<0) n1 = 0.0; -// else { -// t1 *= t1; -// n1 = t1 * t1 * dot(grad3[gi1], x1, y1); -// } - -// double t2 = 0.5 - x2*x2-y2*y2; -// if(t2<0) n2 = 0.0; -// else { -// t2 *= t2; -// n2 = t2 * t2 * dot(grad3[gi2], x2, y2); -// } - -// // Add contributions from each corner to get the final noise value. -// // The result is scaled to return values in the interval [-1,1]. -// return 70.0 * (n0 + n1 + n2); - - -/* -public class SimplexNoise { // Simplex noise in 2D, 3D and 4D - - private static int grad3[][] = {{1,1,0},{-1,1,0},{1,-1,0},{-1,-1,0}, - {1,0,1},{-1,0,1},{1,0,-1},{-1,0,-1}, - {0,1,1},{0,-1,1},{0,1,-1},{0,-1,-1}}; - - // private static int grad4[][]= {{0,1,1,1}, {0,1,1,-1}, {0,1,-1,1}, {0,1,-1,-1}, - // {0,-1,1,1}, {0,-1,1,-1}, {0,-1,-1,1}, {0,-1,-1,-1}, - // {1,0,1,1}, {1,0,1,-1}, {1,0,-1,1}, {1,0,-1,-1}, - // {-1,0,1,1}, {-1,0,1,-1}, {-1,0,-1,1}, {-1,0,-1,-1}, - // {1,1,0,1}, {1,1,0,-1}, {1,-1,0,1}, {1,-1,0,-1}, - // {-1,1,0,1}, {-1,1,0,-1}, {-1,-1,0,1}, {-1,-1,0,-1}, - // {1,1,1,0}, {1,1,-1,0}, {1,-1,1,0}, {1,-1,-1,0}, - // {-1,1,1,0}, {-1,1,-1,0}, {-1,-1,1,0}, {-1,-1,-1,0}}; - - private static int p[] = {151,160,137,91,90,15, - 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, - 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, - 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, - 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, - 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, - 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, - 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, - 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, - 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, - 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, - 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, - 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180}; - - // To remove the need for index wrapping, double the permutation table length - private static int perm[] = new int[512]; - static { for(int i=0; i<512; i++) perm[i]=p[i & 255]; } - - // A lookup table to traverse the simplex around a given point in 4D. - // Details can be found where this table is used, in the 4D noise method. - // private static int simplex[][] = { - // {0,1,2,3},{0,1,3,2},{0,0,0,0},{0,2,3,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,2,3,0}, - // {0,2,1,3},{0,0,0,0},{0,3,1,2},{0,3,2,1},{0,0,0,0},{0,0,0,0},{0,0,0,0},{1,3,2,0}, - // {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, - // {1,2,0,3},{0,0,0,0},{1,3,0,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,3,0,1},{2,3,1,0}, - // {1,0,2,3},{1,0,3,2},{0,0,0,0},{0,0,0,0},{0,0,0,0},{2,0,3,1},{0,0,0,0},{2,1,3,0}, - // {0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}, - // {2,0,1,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,0,1,2},{3,0,2,1},{0,0,0,0},{3,1,2,0}, - // {2,1,0,3},{0,0,0,0},{0,0,0,0},{0,0,0,0},{3,1,0,2},{0,0,0,0},{3,2,0,1},{3,2,1,0}}; - - // This method is a *lot* faster than using (int)Math.floor(x) - private static int fastfloor(double x) { - return x>0 ? (int)x : (int)x-1; - } - - private static double dot(int g[], double x, double y) { - return g[0]*x + g[1]*y; } - - private static double dot(int g[], double x, double y, double z) { - return g[0]*x + g[1]*y + g[2]*z; } - - private static double dot(int g[], double x, double y, double z, double w) { - return g[0]*x + g[1]*y + g[2]*z + g[3]*w; } - -// 2D simplex noise -public static double noise(double xin, double yin) { - - double n0, n1, n2; // Noise contributions from the three corners - - // Skew the input space to determine which simplex cell we're in - final double F2 = 0.5*(Math.sqrt(3.0)-1.0); - double s = (xin+yin)*F2; // Hairy factor for 2D - int i = fastfloor(xin+s); - int j = fastfloor(yin+s); - - final double G2 = (3.0-Math.sqrt(3.0))/6.0; - double t = (i+j)*G2; - double X0 = i-t; // Unskew the cell origin back to (x,y) space - double Y0 = j-t; - double x0 = xin-X0; // The x,y distances from the cell origin - double y0 = yin-Y0; - - // For the 2D case, the simplex shape is an equilateral triangle. - // Determine which simplex we are in. - int i1, j1; // Offsets for second (middle) corner of simplex in (i,j) coords - if(x0>y0) {i1=1; j1=0;} // lower triangle, XY order: (0,0)->(1,0)->(1,1) - else {i1=0; j1=1;} // upper triangle, YX order: (0,0)->(0,1)->(1,1) - - // A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and - // a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where - // c = (3-sqrt(3))/6 - - double x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords - double y1 = y0 - j1 + G2; - double x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords - double y2 = y0 - 1.0 + 2.0 * G2; - - // Work out the hashed gradient indices of the three simplex corners - int ii = i & 255; - int jj = j & 255; - int gi0 = perm[ii+perm[jj]] % 12; - int gi1 = perm[ii+i1+perm[jj+j1]] % 12; - int gi2 = perm[ii+1+perm[jj+1]] % 12; - - // Calculate the contribution from the three corners - double t0 = 0.5 - x0*x0-y0*y0; - if(t0<0) n0 = 0.0; - else { - t0 *= t0; - n0 = t0 * t0 * dot(grad3[gi0], x0, y0); // (x,y) of grad3 used for 2D gradient + perm[i] = i; } + + while (--i) { - double t1 = 0.5 - x1*x1-y1*y1; - if(t1<0) n1 = 0.0; - else { - t1 *= t1; - n1 = t1 * t1 * dot(grad3[gi1], x1, y1); + j = Math.floor(rndEngine.random() * size); + k = perm[i]; + perm[i] = perm[j]; + perm[j] = k; + } + + for(i = 0; i < size; i++) { + + perm[i + size] = perm[i]; + permMod8[i] = permMod8[i + size] = perm[i] % 8; + } +}; + +// color conversion +P.hslToRgb = function (values) { + + const [h, s, l] = values; + + let r, g, b, p, q; + + const hue2rgb = function (u, v, t) { + + if (t < 0) t += 1; + if (t > 1) t -= 1; + + if (t < 1/6) return u + (v - u) * 6 * t; + if (t < 1/2) return v; + if (t < 2/3) return u + (v - u) * (2/3 - t) * 6; + return u; } - double t2 = 0.5 - x2*x2-y2*y2; - if(t2<0) n2 = 0.0; + if (s == 0) { + r = l; + g = l; + b = l; + } else { - t2 *= t2; - n2 = t2 * t2 * dot(grad3[gi2], x2, y2); + + q = (l < 0.5) ? l * (1 + s) : l + s - l * s; + p = 2 * l - q; + + r = hue2rgb(p, q, h + 1/3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1/3); } - // Add contributions from each corner to get the final noise value. - // The result is scaled to return values in the interval [-1,1]. - return 70.0 * (n0 + n1 + n2); + return [r, g, b]; } - */ +P.hsvToRgb = function (values) { + + const [h, s, v] = values; + + let r, g, b; + + let i = Math.floor(h * 6), + f = h * 6 - i, + p = v * (1 - s), + q = v * (1 - f * s), + t = v * (1 - (1 - f) * s); + + switch(i % 6){ + + case 0: + r = v, g = t, b = p; + break; + + case 1: + r = q, g = v, b = p; + break; + + case 2: + r = p, g = v, b = t; + break; + + case 3: + r = p, g = q, b = v; + break; + + case 4: + r = t, g = p, b = v; + break; + + case 5: + r = v, g = p, b = q; + break; + + } + + return [r, g, b]; +}; + +P.rgbHexToComponents = function (rgb) { + + let r = parseInt(rgb.substr(0, 2), 16), + g = parseInt(rgb.substr(2, 2), 16), + b = parseInt(rgb.substr(4, 2), 16); + + return [r, g, b]; +}; + +P.octaveFunctions = { + + absolute: function (octave) { + + return Math.abs((octave * 2) - 1) + }, +}; + +P.sumFunctions = { + + sine: function (sum, scaledX) { + + return .5 + (Math.sin(scaledX * this.sineFrequencyCoeff + sum) / 2); + }, + + modular: function(sum) { + + let g = sum * this.modularAmplitude; + return g - Math.floor(g); + }, +}; + +P.smoothingFunctions = { + + none: λfirstArg, + + cosine: function(t) { + + return .5 * (1 + Math.cos((1 - t) * Math.PI)); + }, + + hermite: function(t) { + + return t * t * (-t * 2 + 3); + }, + + quintic: function(t) { + + return t * t * t * (t * (t * 6 - 15) + 10); + }, +}; + +P.interpolate = function (t, a, b) { + + return a + t * (b - a); +}; + + +// #### Factory +// ``` +// TODO +// ``` +const makeNoise = function (items) { + return new Noise(items); +}; + +constructors.Noise = Noise; + + +// #### Exports +export { + makeNoise, +}; diff --git a/source/mixin/filter.js b/source/mixin/filter.js index 7b853eb13..b314500c5 100644 --- a/source/mixin/filter.js +++ b/source/mixin/filter.js @@ -162,6 +162,11 @@ export default function (P = {}) { if (img) { + if (img.type === 'Noise') { + + img.checkSource(); + } + let width = img.sourceNaturalWidth || img.sourceNaturalDimensions[0] || img.currentDimensions[0], height = img.sourceNaturalHeight || img.sourceNaturalDimensions[1] || img.currentDimensions[1]; diff --git a/source/mixin/pattern.js b/source/mixin/pattern.js index 81110a024..185bce634 100644 --- a/source/mixin/pattern.js +++ b/source/mixin/pattern.js @@ -110,7 +110,7 @@ export default function (P = {}) { repeat = this.repeat, engine = mycell.engine; - if (this.type === 'Cell') { + if (this.type === 'Cell' || this.type === 'Noise') { source = this.element; loaded = true; From d5265cc45ce3d5557a1c7ceaea57f9258a1df41d Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Thu, 21 Jan 2021 14:51:18 +0000 Subject: [PATCH 13/28] new filter - clamp-channels --- demo/canvas-007.js | 3 +- demo/filters-018.html | 33 + demo/filters-018.js | 22 + demo/filters-020.html | 72 + demo/filters-020.js | 121 ++ demo/index.html | 3 + demo/thumbs/filters-020.webp | Bin 0 -> 24962 bytes docs/index.html | 1 + source/factory/filter.js | 158 +- source/worker/filter-string.js | 16 + source/worker/filter-stringed.js | 1055 ---------- source/worker/filter.js | 3123 ++++++++++++++++++++++-------- source/worker/filter_canvas.js | 1123 ----------- source/worker/new-filter.js | 2668 ------------------------- 14 files changed, 2672 insertions(+), 5726 deletions(-) create mode 100644 demo/filters-020.html create mode 100644 demo/filters-020.js create mode 100644 demo/thumbs/filters-020.webp create mode 100644 source/worker/filter-string.js delete mode 100644 source/worker/filter-stringed.js delete mode 100644 source/worker/filter_canvas.js delete mode 100644 source/worker/new-filter.js diff --git a/demo/canvas-007.js b/demo/canvas-007.js index 327745953..a44e66962 100644 --- a/demo/canvas-007.js +++ b/demo/canvas-007.js @@ -188,7 +188,8 @@ scrawl.makeFilter({ name: 'emboss', method: 'emboss', angle: 225, - strength: 4, + strength: 10, + tolerance: 50, }); // __Chroma__ (green screen) filter diff --git a/demo/filters-018.html b/demo/filters-018.html index 23c22b264..b4990ea4b 100644 --- a/demo/filters-018.html +++ b/demo/filters-018.html @@ -30,9 +30,42 @@

      Parameters for: emboss filter

      Strength
      +
      Use natural grayscale
      +
      + +
      + +
      Smoothing
      +
      + +
      Clamp
      +
      +
      Opacity
      +
      Post-process results
      +
      + +
      + +
      Tolerance
      +
      + +
      Keep changed areas
      +
      + +
      +
    diff --git a/demo/filters-018.js b/demo/filters-018.js index 129f0ed01..d9000b2a3 100644 --- a/demo/filters-018.js +++ b/demo/filters-018.js @@ -9,6 +9,10 @@ const canvas = scrawl.library.canvas.mycanvas; scrawl.importDomImage('.flowers'); +canvas.setBase({ + backgroundColor: 'red', +}); + // Create the filter const myFilter = scrawl.makeFilter({ @@ -17,6 +21,12 @@ const myFilter = scrawl.makeFilter({ method: 'emboss', angle: 225, strength: 3, + smoothing: 0, + tolerance: 0, + clamp: 0, + postProcessResults: true, + useNaturalGrayscale: false, + keepOnlyChangedAreas: false, }); @@ -89,6 +99,12 @@ scrawl.observeAndUpdate({ strength: ['strength', 'float'], angle: ['angle', 'float'], + smoothing: ['smoothing', 'round'], + tolerance: ['tolerance', 'round'], + clamp: ['clamp', 'round'], + postProcessResults: ['postProcessResults', 'boolean'], + useNaturalGrayscale: ['useNaturalGrayscale', 'boolean'], + keepOnlyChangedAreas: ['keepOnlyChangedAreas', 'boolean'], opacity: ['opacity', 'float'], }, }); @@ -96,6 +112,12 @@ scrawl.observeAndUpdate({ // Setup form document.querySelector('#strength').value = 3; document.querySelector('#angle').value = 225; +document.querySelector('#smoothing').value = 0; +document.querySelector('#tolerance').value = 0; +document.querySelector('#clamp').value = 0; +document.querySelector('#postProcessResults').options.selectedIndex = 1; +document.querySelector('#useNaturalGrayscale').options.selectedIndex = 0; +document.querySelector('#keepOnlyChangedAreas').options.selectedIndex = 0; document.querySelector('#opacity').value = 1; diff --git a/demo/filters-020.html b/demo/filters-020.html new file mode 100644 index 000000000..de111ccdd --- /dev/null +++ b/demo/filters-020.html @@ -0,0 +1,72 @@ + + + + + + + + Demo Filters 020 + + + + + + +

    Scrawl-canvas v8 - Filters test 020

    +

    Parameters for: clampChannels filter

    + +
    + +
    Low red
    +
    + +
    High red
    +
    + +
    Low green
    +
    + +
    High green
    +
    + +
    Low blue
    +
    + +
    High blue
    +
    + +
    Opacity
    +
    + +
    + + + + + +

    + +
    +

    Test purpose

    + +
      +
    • Create a test Picture entity
    • +
    • Create an areaAlpha filter and apply it to the test entity
    • +
    • Update filter attributes and observe the effect they have on the entity
    • +
    + +

    Annotated code

    +
    + + + + + + diff --git a/demo/filters-020.js b/demo/filters-020.js new file mode 100644 index 000000000..c43ae3df5 --- /dev/null +++ b/demo/filters-020.js @@ -0,0 +1,121 @@ +// # Demo Filters 020 +// Parameters for: clampChannels filter + +// [Run code](../../demo/filters-020.html) +import scrawl from '../source/scrawl.js'; + +// #### Scene setup +const canvas = scrawl.library.canvas.mycanvas; + +scrawl.importDomImage('.flowers'); + + +const myFilter = scrawl.makeFilter({ + + name: 'clamp', + method: 'clampChannels', + + lowRed: 0, + lowGreen: 0, + lowBlue: 0, + highRed: 255, + highGreen: 255, + highBlue: 255, + opacity: 1, +}); + + +// Create the target entity +scrawl.makePicture({ + + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['clamp'], +}); + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, + testMessage = document.querySelector('#reportmessage'); + + let lowRed = document.querySelector('#low-red'), + lowGreen = document.querySelector('#low-green'), + lowBlue = document.querySelector('#low-blue'), + highRed = document.querySelector('#high-red'), + highGreen = document.querySelector('#high-green'), + highBlue = document.querySelector('#high-blue'), + opacity = document.querySelector('#opacity'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Red: ${lowRed.value} - ${highRed.value} + Green: ${lowGreen.value} - ${highGreen.value} + Blue: ${lowBlue.value} - ${highBlue.value} + Opacity - ${opacity.value}`; + }; +}(); + + +// Create the Display cycle animation +const demoAnimation = scrawl.makeRender({ + + name: "demo-animation", + target: canvas, + afterShow: report, +}); + + +// #### User interaction +// Setup form observer functionality +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: myFilter, + + useNativeListener: true, + preventDefault: true, + + updates: { + + 'low-red': ['lowRed', 'round'], + 'low-green': ['lowGreen', 'round'], + 'low-blue': ['lowBlue', 'round'], + 'high-red': ['highRed', 'round'], + 'high-green': ['highGreen', 'round'], + 'high-blue': ['highBlue', 'round'], + 'opacity': ['opacity', 'float'], + }, +}); + +// Setup form +document.querySelector('#low-red').value = 0; +document.querySelector('#low-green').value = 0; +document.querySelector('#low-blue').value = 0; +document.querySelector('#high-red').value = 255; +document.querySelector('#high-green').value = 255; +document.querySelector('#high-blue').value = 255; +document.querySelector('#opacity').value = 1; + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/index.html b/demo/index.html index 0490a4feb..43c2fe4b6 100644 --- a/demo/index.html +++ b/demo/index.html @@ -278,6 +278,9 @@

    Filters functionality tests

    Filters 019 - Using a Noise asset with a displace filter
    +
    +
    Filters 020 - Parameters for: clampChannels filter
    +
    Filters 051 - Canvas engine filter strings (based on CSS filters)
    diff --git a/demo/thumbs/filters-020.webp b/demo/thumbs/filters-020.webp new file mode 100644 index 0000000000000000000000000000000000000000..bf23cc60a3ad9c1421c86425e82d9a364def2065 GIT binary patch literal 24962 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 literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index 6c5ae2579..e357d7e12 100644 --- a/docs/index.html +++ b/docs/index.html @@ -243,6 +243,7 @@

    Filters demos

  • Filters-017 Parameters for: displace filter
  • Filters-018 Parameters for: emboss filter
  • Filters-019 Using a Noise asset with a displace filter
  • +
  • Filters-020 Parameters for: clampChannels filter
  • Filters-051 Canvas engine filter strings (based on CSS filters)
  • Filters-052 SVG-based filter example: gaussian blur
  • Filters-053 SVG-based filter example: posterize
  • diff --git a/source/factory/filter.js b/source/factory/filter.js index ebfe5cb0e..0655a16fb 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -97,6 +97,12 @@ let defaultAttributes = { strength: 1, angle: 0, + useNaturalGrayscale: false, + keepOnlyChangedAreas: false, + postProcessResults: true, + smoothing: 0, + tolerance: 0, + clamp: 0, offsetRedX: 0, offsetRedY: 0, @@ -521,6 +527,21 @@ const setActionsArray = { }]; }, + clampChannels: function (f) { + f.actions = [{ + action: 'clamp-channels', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: (f.lineOut != null) ? f.lineOut : '', + opacity: (f.opacity != null) ? f.opacity : 1, + lowRed: (f.lowRed != null) ? f.lowRed : 0, + lowGreen: (f.lowGreen != null) ? f.lowGreen : 0, + lowBlue: (f.lowBlue != null) ? f.lowBlue : 0, + highRed: (f.highRed != null) ? f.highRed : 255, + highGreen: (f.highGreen != null) ? f.highGreen : 255, + highBlue: (f.highBlue != null) ? f.highBlue : 255, + }]; + }, + compose: function (f) { f.actions = [{ action: 'compose', @@ -582,14 +603,58 @@ const setActionsArray = { }, emboss: function (f) { - f.actions = [{ + const actions = []; + if (f.useNaturalGrayscale) { + actions.push({ + action: 'grayscale', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: 'emboss-work', + }); + } + else { + actions.push({ + action: 'average-channels', + lineIn: (f.lineIn != null) ? f.lineIn : '', + lineOut: 'emboss-work', + includeRed: true, + includeGreen: true, + includeBlue: true, + }); + } + if (f.clamp) { + actions.push({ + action: 'clamp-channels', + lineIn: 'emboss-work', + lineOut: 'emboss-work', + lowRed: 0 + f.clamp, + lowGreen: 0 + f.clamp, + lowBlue: 0 + f.clamp, + highRed: 255 - f.clamp, + highGreen: 255 - f.clamp, + highBlue: 255 - f.clamp, + }); + } + if (f.smoothing) { + actions.push({ + action: 'blur', + lineIn: 'emboss-work', + lineOut: 'emboss-work', + radius: f.smoothing, + passes: 2, + }); + } + actions.push({ action: 'emboss', - lineIn: (f.lineIn != null) ? f.lineIn : '', + lineIn: 'emboss-work', lineOut: (f.lineOut != null) ? f.lineOut : '', opacity: (f.opacity != null) ? f.opacity : 1, angle: (f.angle != null) ? f.angle : 0, strength: (f.strength != null) ? f.strength : 1, - }]; + tolerance: (f.tolerance != null) ? f.tolerance : 0, + keepOnlyChangedAreas: (f.keepOnlyChangedAreas != null) ? f.keepOnlyChangedAreas : false, + postProcessResults: (f.postProcessResults != null) ? f.postProcessResults : true, + }); + f.actions = actions; }, flood: function (f) { @@ -930,9 +995,10 @@ const setActionsArray = { const filterPool = []; // `Exported function` __requestFilterWorker__ +import { filterUrl } from '../worker/filter-string.js'; const requestFilterWorker = function () { - if (!filterPool.length) filterPool.push(buildFilterWorker()); + if (!filterPool.length) filterPool.push(new Worker(filterUrl)); return filterPool.shift(); }; @@ -943,43 +1009,6 @@ const releaseFilterWorker = function (f) { filterPool.push(f); }; -// #### IMPORTANT! -// + Almost all modern browsers support import.meta.url -// + Toolchain bundlers generally DO NOT SUPPORT import.meta.url -// + The workaround is to gather all web worker code into a single file, string it, and build an url from that string. Yes, it is ugly. No, there is no viable production-ready alternative to the following. -// -// For use in a website that does not use webpack, rollup, parcel, etc in their toolchain -// + Comment out all the lines marked 'BUNDLED SITE' -// + Uncomment the lines marked 'MODERN SITE' -// -// By default, Scrawl-canvas is distributed in a bundler-safe form - -// BUNDLED SITE -// import { filterUrl } from '../worker/filter-stringed.js'; - -// __buildFilterWorker__ - create a new filter web worker -const buildFilterWorker = function () { - - // MODERN SITE - let path = import.meta.url.slice(0, -('factory/filter.js'.length)); - - // MODERN SITE - let filterUrl = (window.scrawlEnvironmentOffscreenCanvasSupported) ? - - // MODERN SITE - // `${path}worker/filter_canvas.js` : - // `${path}worker/filter.js` : - `${path}worker/new-filter.js` : - - // MODERN SITE - // `${path}worker/filter.js`; - `${path}worker/new-filter.js`; - - // MODERN and BUNDLED SITE - return new Worker(filterUrl); -}; - - // `Exported function` __actionFilterWorker__ - send a task to the filter web worker, and retrieve the resulting image. This function returns a Promise. const actionFilterWorker = function (worker, items) { @@ -1004,53 +1033,6 @@ const actionFilterWorker = function (worker, items) { // #### Factory // ``` -// scrawl.makeFilter({ -// -// name: 'my-grayscale-filter', -// method: 'grayscale', -// -// }).clone({ -// -// name: 'my-sepia-filter', -// method: 'sepia', -// }); -// -// scrawl.makeFilter({ -// -// name: 'my-chroma-filter', -// method: 'chroma', -// ranges: [[0, 0, 0, 80, 80, 80], [180, 180, 180, 255, 255, 255]], -// }); -// -// scrawl.makeFilter({ -// -// name: 'venetian-blinds-filter', -// method: 'userDefined', -// -// level: 9, -// -// userDefined: ` -// let i, iz, j, jz, -// level = filter.level || 6, -// halfLevel = level / 2, -// yw, transparent, pos; -// -// for (i = localY, iz = localY + localHeight; i < iz; i++) { -// -// transparent = (i % level > halfLevel) ? true : false; -// -// if (transparent) { -// -// yw = (i * iWidth) + 3; -// -// for (j = localX, jz = localX + localWidth; j < jz; j ++) { -// -// pos = yw + (j * 4); -// data[pos] = 0; -// } -// } -// }`, -// }); // ``` const makeFilter = function (items) { diff --git a/source/worker/filter-string.js b/source/worker/filter-string.js new file mode 100644 index 000000000..5a516c0e3 --- /dev/null +++ b/source/worker/filter-string.js @@ -0,0 +1,16 @@ +// Compressed using https://javascript-minifier.com/ + +const filterCode = function () { + return 'let packet,packetFiltersArray,source,work,cache,actions,workstore={},workstoreLastAccessed={};const createResultObject=function(e){return{r:new Uint8ClampedArray(e),g:new Uint8ClampedArray(e),b:new Uint8ClampedArray(e),a:new Uint8ClampedArray(e)}},unknit=function(e){let t=e.data,l=Math.floor(t.length/4);source=createResultObject(l),e.channels=source;let n=source.r,r=source.g,o=source.b,s=source.a,u=(work=createResultObject(l)).r,a=work.g,c=work.b,i=work.a,f=0;for(let e=0,l=t.length;e{workstoreLastAccessed[e]actions.push(...e.actions)),actions.length&&(unknit(cache.source),actions.forEach(e=>theBigActionsObject[e.action]&&theBigActionsObject[e.action](e)),knit()),postMessage(packet)},onerror=function(e){console.log("error"+e.message),postMessage(packet)};const buildImageGrid=function(e){if(e||(e=cache.source),e&&e.width&&e.height){let t=`grid-${e.width}-${e.height}`;if(workstore[t])return workstoreLastAccessed[t]=Date.now(),workstore[t];let l=[],n=0;for(let t=0,r=e.height;t=s&&(e=s-l-1),t+(n=n.toFixed&&!isNaN(n)?n:1)>=a&&(t=a-n-1),e<1&&(e=1),t<1&&(t=1),e+l>=s&&(l=s-e-1),t+n>=a&&(n=a-t-1);let c=e+l,i=t+n;(r=r.toFixed&&!isNaN(r)?r:0)<0&&(r=0),r>=c&&(r=c-1),(o=o.toFixed&&!isNaN(o)?o:0)<0&&(o=0),o>=i&&(o=i-1);let f=`alphatileset-${s}-${a}-${e}-${t}-${l}-${n}-${r}-${o}`;if(workstore[f])return workstoreLastAccessed[f]=Date.now(),workstore[f];let h,g,p,d,b,k,w,R=[];for(d=o-i,b=a;d=0&&k=0&&t=0&&k=0&&t=0&&k=0&&t=0&&k=0&&t=o&&(e=o-1),(t=t.toFixed&&!isNaN(t)?t:1)<1&&(t=1),t>=s&&(t=s-1),(l=l.toFixed&&!isNaN(l)?l:0)<0&&(l=0),l>=e&&(l=e-1),(n=n.toFixed&&!isNaN(n)?n:0)<0&&(n=0),n>=t&&(n=t-1);let u=`imagetileset-${o}-${s}-${e}-${t}-${l}-${n}`;if(workstore[u])return workstoreLastAccessed[u]=Date.now(),workstore[u];let a=[];for(let r=n-t,u=s;r=0&&y=0&&t=0&&n=0&&s=e&&(l=e-1),null==n||n<0?n=0:n>=t&&(n=t-1);let s=o.width,u=o.height,a=`matrix-${s}-${u}-${e}-${t}-${l}-${n}`;if(workstore[a])return workstoreLastAccessed[a]=Date.now(),workstore[a];let c,i,f,h,g,p,d=o.data.length,b=[],k=[];for(f=-n,h=t-n;f=d&&(l-=d),t.push(l)}k.push(t)}return workstore[a]=k,workstoreLastAccessed[a]=Date.now(),k},checkChannelLevelsParameters=function(e){const t=function(e,t=!1){if(e.toFixed)return e<0?[[0,255,0]]:e>255?[[0,255,255]]:isNaN(e)?t?[[0,255,255]]:[[0,255,0]]:[[0,255,e]];if(e.substring&&(e=e.split(",")),Array.isArray(e)){if(!e.length)return e;if(Array.isArray(e[0]))return e;if((e=e.map(e=>parseInt(e,10))).sort((e,t)=>e-t),1==e.length)return[[0,255,e[0]]];let t,l,n=[];for(let r=0,o=e.length;r0){antiRatio=1-l;for(let e=0,t=n.length;e1&&(s-=1),u<0&&(u+=1),u>1&&(u-=1),a<0&&(a+=1),a>1&&(a-=1),[255*o(s,n,r),255*o(u,n,r),255*o(a,n,r)]},theBigActionsObject={"alpha-to-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,excludeRed:a,excludeGreen:c,excludeBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0),null==a&&(a=!0),null==c&&(c=!0),null==i&&(i=!0);const{r:h,g:g,b:p,a:d}=t,{r:b,g:k,b:w,a:R}=l;for(let e=0;e{for(let l=0,n=e.length;lo?255:0:i[e],d[e]=s?f[e]>s?255:0:f[e],b[e]=u?h[e]>u?255:0:h[e],k[e]=a?g[e]>a?255:0:g[e];c?processResults(l,work,1-r):processResults(work,l,r)},blend:function(e){let[t,l,n]=getInputAndOutputChannels(e),{opacity:r,blend:o,offsetX:s,offsetY:u,lineOut:a}=(l.r.length,e);null==r&&(r=1),null==o&&(o=""),null==s&&(s=0),null==u&&(u=0);const{r:c,g:i,b:f,a:h}=t,{r:g,g:p,b:d,a:b}=l,{r:k,g:w,b:R,a:O}=n;let[A,y,I,m,M,x]=getInputAndOutputDimensions(e);const B=function(e,t,l){g[t]=l.r[e],p[t]=l.g[e],d[t]=l.b[e],b[t]=l.a[e]},G=function(e,t){let l=e-s,n=t-u,r=-1;return l>=0&&l=0&&n255*(e+t*(1-e));switch(o){case"color-burn":const e=(e,t)=>1==t?255:0==e?0:255*(1-Math.min(1,(1-t)/e));for(let l=0;l0==t?0:1==e?255:255*Math.min(1,t/(1-e));for(let e=0;ee255*Math.abs(e-t);for(let e=0;e255*(e+t-2*t*e);for(let e=0;ee<=.5?e*t*255:255*(t+(e-t*e));for(let e=0;ee>t?e:t;for(let e=0;e255*(e+t);for(let e=0;ee*t*255;for(let e=0;ee>=.5?e*t*255:255*(t+(e-t*e));for(let e=0;e255*(t+(e-t*e));for(let e=0;e{let l=t<=.25?((16*t-12)*t+4)*t:Math.sqrt(t);return e<=.5?255*(t-(1-2*e)*t*(1-t)):255*(t+(2*e-1)*(l-t))};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(s,u,f)};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(s,i,f)};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(c,i,a)};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(c,u,f)};for(let e=0;et*e+n*l*(1-t);for(let e=0;e=e&&l<=a&&n>=s&&n<=c&&r>=u&&r<=f){t=!0;break}}h[e]=u[e],g[e]=a[e],p[e]=c[e],d[e]=t?0:f[e]}s?processResults(l,work,1-r):processResults(work,l,r)},"clamp-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,lowRed:o,lowGreen:s,lowBlue:u,highRed:a,highGreen:c,highBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=255),null==c&&(c=255),null==i&&(i=255);const h=a-o,g=c-s,p=i-u,{r:d,g:b,b:k,a:w}=t,{r:R,g:O,b:A,a:y}=l;for(let e=0;eg?255:(n-h)/p*255},{r:b,g:k,b:w,a:R}=t,{r:O,g:A,b:y,a:I}=l;for(let e=0;e=0&&l=0&&nt*e*n+n*l*(1-t);for(let t=0;t=0){let t=h[n]/255,l=O[r]/255;g[n]=e(c[n],t,k[r],l),p[n]=e(i[n],t,w[r],l),d[n]=e(f[n],t,R[r],l),b[n]=255*(t*l+l*(1-t))}}break;case"source-in":const r=(e,t,l)=>t*e*l;for(let e=0;e=0){let e=h[l]/255,t=O[n]/255;g[l]=r(c[l],e,t),p[l]=r(i[l],e,t),d[l]=r(f[l],e,t),b[l]=e*t*255}}break;case"source-out":const s=(e,t,l)=>t*e*(1-l);for(let e=0;e=0&&B(r,l,n)}break;case"destination-atop":const u=(e,t,l,n)=>t*e*(1-n)+n*l*t;for(let e=0;et*e*(1-n)+n*l;for(let e=0;et*e*l;for(let e=0;e=0){let e=h[l]/255,t=O[n]/255;g[l]=I(k[n],t,e),p[l]=I(w[n],t,e),d[l]=I(R[n],t,e),b[l]=e*t*255}}break;case"destination-out":const m=(e,t,l)=>l*e*(1-t);for(let e=0;e=0){let e=h[l]/255,t=O[n]/255;g[l]=m(k[n],e,t),p[l]=m(w[n],e,t),d[l]=m(R[n],e,t),b[l]=t*(1-e)*255}}break;case"clear":break;case"xor":const M=(e,t,l,n)=>t*e*(1-n)+n*l*(1-t);for(let e=0;et*e+n*l*(1-t);for(let e=0;e=0&&l=0&&n=0){let c,i=Math.floor(l+(127-o[r])/127*u),h=Math.floor(e+(127-s[r])/127*a);f?c=i<0||i>=M||h<0||h>=x?-1:h*M+i:(i<0&&(i=0),i>=M&&(i=M-1),h<0&&(h=0),h>=x&&(h=x-1),c=h*M+i),$(c,n,t)}else $(n,n,t)}h?processResults(l,work,1-r):processResults(work,l,r)},emboss:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,strength:o,angle:s,tolerance:u,keepOnlyChangedAreas:a,postProcessResults:c,lineOut:i}=e;for(null==r&&(r=1),null==o&&(o=1),null==s&&(s=0),null==u&&(u=0),null==a&&(a=!1),null==c&&(c=!1),o=Math.abs(o);s<0;)s+=360;s%=360;let f=Math.floor(s/45),h=s%45/45*o,g=new Array(9);(g=g.fill(0,0,9))[4]=1,0==f?(g[5]=o-h,g[8]=h,g[3]=-g[5],g[0]=-g[8]):1==f?(g[8]=o-h,g[7]=h,g[0]=-g[8],g[1]=-g[7]):2==f?(g[7]=o-h,g[6]=h,g[1]=-g[7],g[2]=-g[6]):3==f?(g[6]=o-h,g[3]=h,g[2]=-g[6],g[5]=-g[3]):4==f?(g[3]=o-h,g[0]=h,g[5]=-g[3],g[8]=-g[0]):5==f?(g[0]=o-h,g[1]=h,g[8]=-g[0],g[7]=-g[1]):6==f?(g[1]=o-h,g[2]=h,g[7]=-g[1],g[6]=-g[2]):(g[2]=o-h,g[5]=h,g[6]=-g[2],g[3]=-g[5]);const{r:p,g:d,b:b,a:k}=t,{r:w,g:R,b:O,a:A}=l;grid=buildMatrixGrid(3,3,1,1);const y=function(e,t){let l=0;for(let n=0,r=t.length;n=p[e]-u&&w[e]<=p[e]+u&&R[e]>=d[e]-u&&R[e]<=d[e]+u&&O[e]>=b[e]-u&&O[e]<=b[e]+u&&(a?A[e]=0:(w[e]=127,R[e]=127,O[e]=127)));i?processResults(l,work,1-r):processResults(work,l,r)},flood:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,red:o,green:s,blue:u,alpha:a,lineOut:c}=(Math.floor,e);null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=255);const{r:i,g:f,b:h,a:g}=l;i.fill(o,0,n-1),f.fill(s,0,n-1),h.fill(u,0,n-1),g.fill(a,0,n-1),c?processResults(l,work,1-r):processResults(work,l,r)},grayscale:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,lineOut:o}=e;null==r&&(r=1);const{r:s,g:u,b:a,a:c}=t,{r:i,g:f,b:h,a:g}=l;for(let e=0;e=n&&e<=r)return o}};let[l,n]=getInputAndOutputChannels(e),r=l.r.length,{opacity:o,red:s,green:u,blue:a,alpha:c,lineOut:i}=e;null==o&&(o=1),null==s&&(s=[0]),null==u&&(u=[0]),null==a&&(a=[0]),null==c&&(c=[255]);const{r:f,g:h,b:g,a:p}=l,{r:d,g:b,b:k,a:w}=n;for(let e=0;e=0&&y=0&&I=0&&y=0&&I=0&&m=0&&M=0&&x=0&&B=0&&G=0&&Ct+e[l],0);n=Math.floor(n/l.length);for(let e=0,r=l.length;e{i?t(b,O,e):l(b,O,e),f?t(k,A,e):l(k,A,e),h?t(w,y,e):l(w,y,e),g?t(R,I,e):l(R,I,e)}),p?processResults(r,work,1-o):processResults(work,r,o)},"process-image":function(e){const{assetData:t,lineOut:l}=e;if(l&&l.substring&&l.length&&t&&t.width&&t.height&&t.data){let e=t.data,n=e.length,r=createResultObject(n/4),o=r.r,s=r.g,u=r.b,a=r.a,c=0;for(let t=0;t maxX) ? x : maxX; - maxY = (y > maxY) ? y : maxY; - } - - localX = minX; - localY = minY; - localWidth = maxX - minX; - localHeight = maxY - minY; -}; - -const getTiles = function () { - - let i, iz, j, jz, x, xz, y, yz, startX, startY, pos, - hold = [], - tileWidth = filter.tileWidth || 1, - tileHeight = filter.tileHeight || 1, - offsetX = filter.offsetX, - offsetY = filter.offsetY, - w = image.width, - h = image.height; - - if (Array.isArray(tiles)) tiles.length = 0; - else tiles = []; - - offsetX = (offsetX >= tileWidth) ? tileWidth - 1 : offsetX; - offsetY = (offsetY >= tileHeight) ? tileHeight - 1 : offsetY; - - startX = (offsetX) ? offsetX - tileWidth : 0; - startY = (offsetY) ? offsetY - tileHeight : 0; - - for (j = startY, jz = h + tileHeight; j < jz; j += tileHeight) { - - for (i = startX, iz = w + tileWidth; i < iz; i += tileWidth) { - - hold.length = 0; - - for (y = j, yz = j + tileHeight; y < yz; y++) { - - if (y >= 0 && y < h) { - - for (x = i, xz = i + tileWidth; x < xz; x++) { - - if (x >= 0 && x < w) { - - pos = (y * iWidth) + (x * 4); - - if (data[pos + 3]) hold.push(pos); - } - } - } - } - if (hold.length) tiles.push([].concat(hold)); - } - } -}; - -const average = function (c) { - - let a = 0, - k, kz, - l = c.length; - - if (l) { - - for (k = 0, kz = l; k < kz; k++) { - - a +=c[k]; - } - return a / l; - } - return 0; -}; - -const checkBounds = function (p) { - - let len = data.length; - - if (p < 0) p += len; - if (p >= len) p -= len; - return p; -}; - -const actions = { - - - userDefined: function () {}, - - grayscale: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]); - data[pos] = data[pos + 1] = data[pos + 2] = gray; - } - }, - - sepia: function () { - - let i, iz, pos, r, g, b; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - r = data[pos]; - g = data[pos + 1]; - b = data[pos + 2]; - - data[pos] = (r * 0.393) + (g * 0.769) + (b * 0.189); - data[pos + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168); - data[pos + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131); - } - }, - - invert: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 255 - data[pos]; - - pos++; - data[pos] = 255 - data[pos]; - - pos++; - data[pos] = 255 - data[pos]; - } - }, - - red: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos + 1] = 0; - data[pos + 2] = 0; - } - }, - - green: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 0; - data[pos + 2] = 0; - } - }, - - blue: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 0; - data[pos + 1] = 0; - } - }, - - notred: function() { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 0; - } - }, - - notgreen: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos + 1] = 0; - } - }, - - notblue: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos + 2] = 0; - } - }, - - cyan: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (data[pos + 1] + data[pos + 2]) / 2; - - data[pos] = 0; - data[pos + 1] = gray; - data[pos + 2] = gray; - } - }, - - magenta: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (data[pos] + data[pos + 2]) / 2; - - data[pos] = gray; - data[pos + 1] = 0; - data[pos + 2] = gray; - } - }, - - yellow: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (data[pos] + data[pos + 1]) / 2; - - data[pos] = gray; - data[pos + 1] = gray; - data[pos + 2] = 0; - } - }, - - brightness: function () { - - let i, iz, pos, - level = filter.level || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] *= level; - - pos++; - data[pos] *= level; - - pos++; - data[pos] *= level; - } - }, - - saturation: function () { - - let i, iz, pos, - level = filter.level || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 127 + ((data[pos] - 127) * level); - - pos++; - data[pos] = 127 + ((data[pos] - 127) * level); - - pos++; - data[pos] = 127 + ((data[pos] - 127) * level); - } - }, - - threshold: function () { - - let i, iz, pos, gray, test, - level = filter.level || 0, - lowRed = filter.lowRed, - lowGreen = filter.lowGreen, - lowBlue = filter.lowBlue, - highRed = filter.highRed, - highGreen = filter.highGreen, - highBlue = filter.highBlue; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]); - test = (gray > level) ? true : false; - - if (test) { - - data[pos] = highRed; - data[pos + 1] = highGreen; - data[pos + 2] = highBlue; - } - else { - - data[pos] = lowRed; - data[pos + 1] = lowGreen; - data[pos + 2] = lowBlue; - } - - } - }, - - channels: function () { - - let i, iz, pos, - red = filter.red || 0, - green = filter.green || 0, - blue = filter.blue || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - data[pos] *= red; - data[pos + 1] *= green; - data[pos + 2] *= blue; - } - }, - - channelstep: function () { - - let i, iz, pos, - red = filter.red || 1, - green = filter.green || 1, - blue = filter.blue || 1, - floor = Math.floor; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = floor(data[pos] / red) * red; - - pos++; - data[pos] = floor(data[pos] / green) * green; - - pos++; - data[pos] = floor(data[pos] / blue) * blue; - } - }, - - tint: function () { - - let i, iz, pos, r, g, b, - redInRed = filter.redInRed || 0, - redInGreen = filter.redInGreen || 0, - redInBlue = filter.redInBlue || 0, - greenInRed = filter.greenInRed || 0, - greenInGreen = filter.greenInGreen || 0, - greenInBlue = filter.greenInBlue || 0, - blueInRed = filter.blueInRed || 0, - blueInGreen = filter.blueInGreen || 0, - blueInBlue = filter.blueInBlue || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - r = data[pos]; - g = data[pos + 1]; - b = data[pos + 2]; - - data[pos] = (r * redInRed) + (g * greenInRed) + (b * blueInRed); - data[pos + 1] = (r * redInGreen) + (g * greenInGreen) + (b * blueInGreen); - data[pos + 2] = (r * redInBlue) + (g * greenInBlue) + (b * blueInBlue); - } - }, - - chroma: function () { - - let pos, posA, - ranges = filter.ranges, - range, min, max, val, - i, iz, j, jz, flag; - - for (j = 0, jz = cache.length; j < jz; j++) { - - flag = false; - - for (i = 0, iz = ranges.length; i < iz; i++) { - - posA = cache[j] + 3; - range = ranges[i]; - min = range[2]; - pos = posA - 1; - val = data[pos]; - - if (val >= min) { - - max = range[5]; - - if (val <= max) { - - min = range[1]; - pos--; - val = data[pos]; - - if (val >= min) { - - max = range[4]; - - if (val <= max) { - - min = range[0]; - pos--; - val = data[pos]; - - if (val >= min) { - - max = range[3]; - - if (val <= max) { - flag = true; - break; - } - } - } - } - } - } - } - if (flag) data[posA] = 0; - } - }, - - pixelate: function () { - - let i, iz, j, jz, pos, r, g, b, a, tile, len; - - getTiles(); - - for (i = 0, iz = tiles.length; i < iz; i++) { - - tile = tiles[i]; - r = g = b = a = 0; - len = tile.length; - - if (len) { - - for (j = 0, jz = len; j < jz; j++) { - - pos = tile[j]; - - r += data[pos]; - g += data[pos + 1]; - b += data[pos + 2]; - a += data[pos + 3]; - } - - r /= len; - g /= len; - b /= len; - a /= len; - - for (j = 0, jz = len; j < jz; j++) { - - pos = tile[j]; - - data[pos] = r; - data[pos + 1] = g; - data[pos + 2] = b; - data[pos + 3] = a; - } - } - } - }, - - blur: function () { - - if (data.slice) { - - let radius = filter.radius || 1, - alpha = filter.includeAlpha || false, - shrink = filter.shrinkingRadius || false, - passes = filter.passes || 1, - vertical = filter.processVertical, - horizontal = filter.processHorizontal, - len = data.length, - imageWidth = image.width, - imageHeight = image.height, - tempDataTo, tempDataFrom, - i, iz, index; - - let processPass = function () { - - let j, jz; - - if (vertical) { - - tempDataFrom = tempDataTo.slice(); - - for (j = localX * 4, jz = (localX + localWidth) * 4; j < jz; j++) { - - if (alpha) processColumn(j); - else { - - if (j % 4 !== 3) processColumn(j); - } - } - } - - if (horizontal) { - - tempDataFrom = tempDataTo.slice(); - - for (j = localY, jz = localY + localHeight; j < jz; j++) { - - if (alpha) processRowWithAlpha(j); - else processRowNoAlpha(j); - } - } - }; - - let processColumn = function (col) { - - let pos, avg, val, cagePointer, y, yz, q, dataPointer, - vLead = radius * iWidth, - cage = [], - cageLen; - - for (y = -radius, yz = radius; y < yz; y++) { - - pos = col + (y * iWidth); - pos = checkBounds(pos, len); - cage.push(tempDataFrom[pos]); - } - - tempDataTo[col] = avg = average(cage); - - cageLen = cage.length; - - for (q = 0; q < cageLen; q++) { - - cage[q] /= cageLen; - } - - cagePointer = 0; - - for (y = 1; y < imageHeight; y++) { - - avg -= cage[cagePointer]; - - dataPointer = col + (y * iWidth); - pos = dataPointer + vLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; - - avg += val; - cage[cagePointer] = val; - tempDataTo[dataPointer] = avg; - - cagePointer++; - - if (cagePointer === cageLen) cagePointer = 0; - } - }; - - let processRowWithAlpha = function (row) { - - let pos, val, x, xz, q, avgQ, cageQ, rowPosX, - avg = [], - cage = [[], [], [], []], - rowPos = row * iWidth, - hLead = radius * 4, - dataPointer, cagePointer, cageLen; - - q = 0; - - for (x = -radius * 4, xz = radius * 4; x < xz; x++) { - - pos = rowPos + x; - pos = checkBounds(pos, len); - - cage[q].push(tempDataFrom[pos]); - - q++; - if (q === 4) q = 0; - } - - tempDataTo[rowPos] = avg[0] = average(cage[0]); - tempDataTo[rowPos + 1] = avg[1] = average(cage[1]); - tempDataTo[rowPos + 2] = avg[2] = average(cage[2]); - tempDataTo[rowPos + 3] = avg[3] = average(cage[3]); - - cageLen = cage[0].length; - - for (q = 0; q < 4; q++) { - - for (x = 0; x < cageLen; x++) { - - cage[q][x] /= cageLen; - } - } - cagePointer = 0; - - for (x = 1; x < imageWidth; x++) { - - rowPosX = rowPos + (x * 4); - - for (q = 0; q < 4; q++) { - - avgQ = avg[q]; - cageQ = cage[q]; - avgQ -= cageQ[cagePointer]; - - dataPointer = rowPosX + q; - pos = dataPointer + hLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; - - avgQ += val; - tempDataTo[dataPointer] = avgQ; - avg[q] = avgQ; - cageQ[cagePointer] = val; - } - - cagePointer++; - - if (cagePointer === cageLen) cagePointer = 0; - } - }; - - let processRowNoAlpha = function (row) { - - let pos, val, x, xz, q, avgQ, cageQ, rowPosX, - avg = [], - hLead = radius * 4, - cage = [[], [], []], - rowPos = row * iWidth, - dataPointer, cagePointer, cageLen; - - q = 0; - - for (x = -radius * 4, xz = radius * 4; x < xz; x++) { - - if (q < 3) { - - pos = rowPos + x; - pos = checkBounds(pos, len); - cage[q].push(tempDataFrom[pos]); - q++; - } - else q = 0; - } - - tempDataTo[rowPos] = avg[0] = average(cage[0]); - tempDataTo[rowPos + 1] = avg[1] = average(cage[1]); - tempDataTo[rowPos + 2] = avg[2] = average(cage[2]); - - cageLen = cage[0].length; - - for (q = 0; q < 3; q++) { - - cageQ = cage[q]; - - for (x = 0; x < cageLen; x++) { - - cageQ[x] /= cageLen; - } - } - cagePointer = 0; - - for (x = 1; x < imageWidth; x++) { - - rowPosX = rowPos + (x * 4); - - for (q = 0; q < 3; q++) { - - avgQ = avg[q]; - cageQ = cage[q]; - avgQ -= cageQ[cagePointer]; - - dataPointer = rowPosX + q; - pos = dataPointer + hLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; - - avgQ += val; - tempDataTo[dataPointer] = avgQ; - avg[q] = avgQ; - cageQ[cagePointer] = val; - } - - cagePointer++; - if (cagePointer === cageLen) cagePointer = 0; - } - }; - - tempDataTo = data.slice(); - - for (i = 0; i < passes; i++) { - - processPass(); - - if (shrink) { - - radius = Math.ceil(radius * 0.3); - radius = (radius < 1) ? 1 : radius; - } - } - - for (i = 0, iz = cache.length; i < iz; i++) { - - index = cache[i]; - data[index] = tempDataTo[index]; - - index++; - data[index] = tempDataTo[index]; - - index++; - data[index] = tempDataTo[index]; - - if (alpha) { - - index++; - data[index] = tempDataTo[index]; - } - } - } - }, - - matrix: function () { - - let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos, - len = data.length, - alpha = filter.includeAlpha || false, - offset = [], - weights = filter.weights || [0, 0, 0, 0, 1, 0, 0, 0, 0], - tempCache = [], - cursor = 0; - - offset[0] = -iWidth - 4; - offset[1] = -iWidth; - offset[2] = -iWidth + 4; - offset[3] = -4; - offset[4] = 0; - offset[5] = 4; - offset[6] = iWidth - 4; - offset[7] = iWidth; - offset[8] = iWidth + 4; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - sumR = sumG = sumB = sumA = 0; - - for (j = 0, jz = offset.length; j < jz; j++) { - - pos = homePos + offset[j]; - - if (pos >= 0 && pos < len) { - - weight = weights[j]; - sumR += data[pos] * weight; - - pos++; - sumG += data[pos] * weight; - - pos++; - sumB += data[pos] * weight; - - if (alpha) { - - pos++; - sumA += data[pos] * weight; - } - } - } - - tempCache[cursor] = sumR; - cursor++; - - tempCache[cursor] = sumG; - cursor++; - - tempCache[cursor] = sumB; - cursor++; - - if (alpha) { - - tempCache[cursor] = sumA; - cursor++; - } - } - - cursor = 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - if (alpha) { - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - } - } - }, - - matrix5: function () { - - let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos, - len = data.length, - alpha = filter.includeAlpha || false, - offset = [], - weights = filter.weights || [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - tempCache = [], - iWidth2 = iWidth * 2, - cursor = 0; - - offset[0] = -iWidth2 - 8; - offset[1] = -iWidth2 - 4; - offset[2] = -iWidth2; - offset[3] = -iWidth2 + 4; - offset[4] = -iWidth2 + 8; - offset[5] = -iWidth - 8; - offset[6] = -iWidth - 4; - offset[7] = -iWidth; - offset[8] = -iWidth + 4; - offset[9] = -iWidth + 8; - offset[10] = -8; - offset[11] = -4; - offset[12] = 0; - offset[13] = 4; - offset[14] = 8; - offset[15] = iWidth - 8; - offset[16] = iWidth - 4; - offset[17] = iWidth; - offset[18] = iWidth + 4; - offset[19] = iWidth + 8; - offset[20] = iWidth2 - 8; - offset[21] = iWidth2 - 4; - offset[22] = iWidth2; - offset[23] = iWidth2 + 4; - offset[24] = iWidth2 + 8; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - sumR = sumG = sumB = sumA = 0; - - for (j = 0, jz = offset.length; j < jz; j++) { - - pos = homePos + offset[j]; - - if (pos >= 0 && pos < len) { - - weight = weights[j]; - sumR += data[pos] * weight; - - pos++; - sumG += data[pos] * weight; - - pos++; - sumB += data[pos] * weight; - - if (alpha) { - - pos++; - sumA += data[pos] * weight; - } - } - } - - tempCache[cursor] = sumR; - cursor++; - - tempCache[cursor] = sumG; - cursor++; - - tempCache[cursor] = sumB; - cursor++; - - if (alpha) { - - tempCache[cursor] = sumA; - cursor++; - } - } - - cursor = 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - if (alpha) { - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - } - } - }, -};` -}; - - -const filterUrl = URL.createObjectURL( - - new Blob([ filterCode() ], { type: 'text/javascript' }) -); - - -// #### Exports -export { - filterUrl, -}; diff --git a/source/worker/filter.js b/source/worker/filter.js index 0cfbb8a5b..f2b75f6c8 100644 --- a/source/worker/filter.js +++ b/source/worker/filter.js @@ -1,96 +1,111 @@ -// # Filter worker -// A long-running web worker which, when not in use, gets stored in the filter pool defined in the [filter factory](../factory/filter.html) -// -// TODO: we've had to move all the code from this module into a new, [comment-free module](./filter-stringed.html) file because tools like [CreateReactApp](https://reactjs.org/docs/create-a-new-react-app.html#create-react-app) - which uses [Webpack](https://webpack.js.org/) as its bundler of choice - breaks when we `yarn add scrawl-canvas` to a project. -// + The root of the issue is that [Babel](https://babeljs.io/) currently breaks when it encounters the `import.meta` attribute. -// + Babel do supply a plugin which is supposed to address this issue: [babel-plugin-syntax-import-meta](https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-import-meta). But trying to add this to a Webpack configuration - particularly as implemented by create-react-app - is, at best, a nightmare. -// -// __NOTE: any changes to filter code need to be replicated in both files!__ +let packet, packetFiltersArray; +let source, work, cache, actions; -// #### Demos: -// + [Canvas-007](../../demo/canvas-007.html) - Apply filters at the entity, group and cell level -// + [Canvas-020](../../demo/canvas-020.html) - Testing createImageFromXXX functionality -// + [Canvas-027](../../demo/canvas-027.html) - Video control and manipulation; chroma-based hit zone -// + [Component-004](../../demo/component-004.html) - Scrawl-canvas packets; save and load a range of different entitys +let workstore = {}, + workstoreLastAccessed = {}; +const createResultObject = function (len) { + return { + r: new Uint8ClampedArray(len), + g: new Uint8ClampedArray(len), + b: new Uint8ClampedArray(len), + a: new Uint8ClampedArray(len), + }; +}; -// #### Imports -// None used +const unknit = function (iData) { + let imageData = iData.data; -// #### Polyfills -// TypedArray.slice() [polyfill](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice) - for blur filter -if (!Uint8Array.prototype.slice) { - Object.defineProperty(Uint8Array.prototype, 'slice', { - value: function (begin, end) { - return new Uint8Array(Array.prototype.slice.call(this, begin, end)); - } - }); -} + let len = Math.floor(imageData.length / 4); + + + source = createResultObject(len); + iData.channels = source; + + let sourceRed = source.r, + sourceGreen = source.g, + sourceBlue = source.b, + sourceAlpha = source.a; + + work = createResultObject(len); + + let workRed = work.r, + workGreen = work.g, + workBlue = work.b, + workAlpha = work.a; + let counter = 0; -// #### Worker-wide variables -// The following variables are defined here so that all filter functions - including user-defined filters - can make use of them: + for (let i = 0, iz = imageData.length; i < iz; i += 4) { -// __packet__ - the `e.data` object sent to the web worker from the main code -let packet; + sourceRed[counter] = imageData[i]; + sourceGreen[counter] = imageData[i + 1]; + sourceBlue[counter] = imageData[i + 2]; + sourceAlpha[counter] = imageData[i + 3]; -// __image__ - the `ImageData` object -let image; + workRed[counter] = imageData[i]; + workGreen[counter] = imageData[i + 1]; + workBlue[counter] = imageData[i + 2]; + workAlpha[counter] = imageData[i + 3]; -// __iWidth__ - convenience variable - `image.width * 4` (to cope with moving through the data array by pixel) -let iWidth; + counter++; + } +}; -// __data__ - the `Uint8ClampedArray` data component of the ImageData object -let data; +const knit = function () { -// __cache__ - an Array of all the starting (ie: red channel) indexes for pixels whose alpha channel is > 0 (and thus not transparent) - speeds up things for pixel-by-pixel filters that don't need to process transparent pixels. Generated by running the web worker's `getCache` function -let cache; + let imageData = packet.image.data; -// __tiles__ - the output from running the web worker's `getTiles` function. This effectively divides the image data into a grid of blocks which can be further processed by a filter -let tiles; + let workRed = work.r, + workGreen = work.g, + workBlue = work.b, + workAlpha = work.a; -// __localX__, __localY__, __localWidth__, __localHeight__ - the start coordinates and dimensions of the box enclosing all the non-transparent pixels in the supplied image data array. Used mainly by the blur filter - but any filter (including user-defined filters) that needs to include transparent pixel values in its calculations, but would waste time processing non-visible areas of the image, can make use of these variables -let localX; -let localY; -let localWidth; -let localHeight; + let counter = 0; -// __filters__ - the filter objects Array sent to the web worker from the main code -let filters; + for (let i = 0, iz = imageData.length; i < iz; i += 4) { -// __filter__ - the current filter object being processed by the web worker - holds all the settings required for that filter function, for example `filter.level` for the brightness, saturation and threshold filter functions -let filter; + imageData[i] = workRed[counter]; + imageData[i + 1] = workGreen[counter]; + imageData[i + 2] = workBlue[counter]; + imageData[i + 3] = workAlpha[counter]; + + counter++; + } +}; -// __action__ - internal processing variable -let action; +onmessage = function (msg) { + packet = msg.data; + packetFiltersArray = packet.filters; -// #### Messaging and error handling -onmessage = function (e) { + let workstoreKeys = Object.keys(workstore), + workstoreChoke = Date.now() - 3000; - let i, iz; + workstoreKeys.forEach(k => { - packet = e.data; - image = packet.image; - iWidth = image.width * 4; - data = image.data; - filters = packet.filters; + if (workstoreLastAccessed[k] < workstoreChoke) { - getCache(); - getLocal(); + delete workstore[k]; + delete workstoreLastAccessed[k]; + } + }); - for (i = 0, iz = filters.length; i < iz; i++) { + cache = {}; + actions = []; - filter = filters[i]; + cache.source = packet.image; - if (filter.method === 'userDefined' && filter.userDefined) actions.userDefined = new Function(filter.userDefined); + packetFiltersArray.forEach(f => actions.push(...f.actions)); - action = actions[filter.method]; + if (actions.length) { - if (action) action(); + unknit(cache.source); + actions.forEach(a => theBigActionsObject[a.action] && theBigActionsObject[a.action](a)); + knit(); } postMessage(packet); @@ -102,1034 +117,2560 @@ onerror = function (e) { postMessage(packet); }; -// __getCache__ - function that fills the `cache` worker variable with the starting index position of each non-transparent pixel in the current image's Uint8ClampedArray Array -const getCache = function () { +const buildImageGrid = function (data) { + + if (!data) data = cache.source; - let i, iz; + if (data && data.width && data.height) { - if (Array.isArray(cache)) cache.length = 0; - else cache = []; + let name = `grid-${data.width}-${data.height}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } - for (i = 0, iz = data.length; i < iz; i += 4) { + let grid = [], + counter = 0; - if (data[i + 3]) cache.push(i); - } -}; + for (let y = 0, yz = data.height; y < yz; y++) { -// __getLocal__ - function that populates the `localX`, `localY`, `localWidth`, `localHeight` worker variables with relevant values for the current image data -const getLocal = function () { + let row = []; - let i, iz, w, h, minX, minY, maxX, maxY, x, y, val, - floor = Math.floor; + for (let x = 0, xz = data.width; x < xz; x++) { + + row.push(counter); + counter++; + } + grid.push(row); + } + workstore[name] = grid; + workstoreLastAccessed[name] = Date.now(); + return grid; + } + return false; +}; - w = image.width; - h = image.height; - minX = w; - minY = h; - maxX = 0; - maxY = 0; +const buildAlphaTileSets = function (tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels, data) { - for (i = 0, iz = cache.length; i < iz; i++) { + if (!data) data = cache.source; - val = cache[i] / 4; - y = floor(val / w); - x = val % w; - minX = (x < minX) ? x : minX; - minY = (y < minY) ? y : minY; - maxX = (x > maxX) ? x : maxX; - maxY = (y > maxY) ? y : maxY; - } + if (data && data.width && data.height) { - localX = minX; - localY = minY; - localWidth = maxX - minX; - localHeight = maxY - minY; -}; + let iWidth = data.width, + iHeight = data.height; -// __getTiles__ - function that populates the `tiles` worker Array with relevant values for the current image data -const getTiles = function () { + tileWidth = (tileWidth.toFixed && !isNaN(tileWidth)) ? tileWidth : 1; + tileHeight = (tileHeight.toFixed && !isNaN(tileHeight)) ? tileHeight : 1; + gutterWidth = (gutterWidth.toFixed && !isNaN(gutterWidth)) ? gutterWidth : 1; + gutterHeight = (gutterHeight.toFixed && !isNaN(gutterHeight)) ? gutterHeight : 1; + offsetX = (offsetX.toFixed && !isNaN(offsetX)) ? offsetX : 0; + offsetY = (offsetY.toFixed && !isNaN(offsetY)) ? offsetY : 0; - let i, iz, j, jz, x, xz, y, yz, startX, startY, pos, - hold = [], - tileWidth = filter.tileWidth || 1, - tileHeight = filter.tileHeight || 1, - offsetX = filter.offsetX, - offsetY = filter.offsetY, - w = image.width, - h = image.height; + if (tileWidth < 1) tileWidth = 1; + if (tileHeight < 1) tileHeight = 1; + if (tileWidth + gutterWidth >= iWidth) tileWidth = iWidth - gutterWidth - 1; + if (tileHeight + gutterHeight >= iHeight) tileHeight = iHeight - gutterHeight - 1; - if (Array.isArray(tiles)) tiles.length = 0; - else tiles = []; + if (tileWidth < 1) tileWidth = 1; + if (tileHeight < 1) tileHeight = 1; + if (tileWidth + gutterWidth >= iWidth) gutterWidth = iWidth - tileWidth - 1; + if (tileHeight + gutterHeight >= iHeight) gutterHeight = iHeight - tileHeight - 1; - offsetX = (offsetX >= tileWidth) ? tileWidth - 1 : offsetX; - offsetY = (offsetY >= tileHeight) ? tileHeight - 1 : offsetY; + let aWidth = tileWidth + gutterWidth, + aHeight = tileHeight + gutterHeight; - startX = (offsetX) ? offsetX - tileWidth : 0; - startY = (offsetY) ? offsetY - tileHeight : 0; + if (offsetX < 0) offsetX = 0; + if (offsetX >= aWidth) offsetX = aWidth - 1; + if (offsetY < 0) offsetY = 0; + if (offsetY >= aHeight) offsetY = aHeight - 1; - for (j = startY, jz = h + tileHeight; j < jz; j += tileHeight) { + let name = `alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } - for (i = startX, iz = w + tileWidth; i < iz; i += tileWidth) { + let tiles = [], + hold, i, iz, j, jz, x, xz, y, yz; - hold.length = 0; - - for (y = j, yz = j + tileHeight; y < yz; y++) { + for (j = offsetY - aHeight, jz = iHeight; j < jz; j += aHeight) { - if (y >= 0 && y < h) { + for (i = offsetX - aWidth, iz = iWidth; i < iz; i += aWidth) { - for (x = i, xz = i + tileWidth; x < xz; x++) { + hold = []; + for (y = j, yz = j + tileHeight; y < yz; y++) { + if (y >= 0 && y < iHeight) { + for (let x = i, xz = i + tileWidth; x < xz; x++) { + if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); + } + } + } + tiles.push([].concat(hold)); - if (x >= 0 && x < w) { + hold = []; + for (y = j + tileHeight, yz = j + tileHeight + gutterHeight; y < yz; y++) { + if (y >= 0 && y < iHeight) { + for (let x = i, xz = i + tileWidth; x < xz; x++) { + if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); + } + } + } + tiles.push([].concat(hold)); - pos = (y * iWidth) + (x * 4); + hold = []; + for (y = j, yz = j + tileHeight; y < yz; y++) { + if (y >= 0 && y < iHeight) { + for (let x = i + tileWidth, xz = i + tileWidth + gutterWidth; x < xz; x++) { + if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); + } + } + } + tiles.push([].concat(hold)); - if (data[pos + 3]) hold.push(pos); + hold = []; + for (y = j + tileHeight, yz = j + tileHeight + gutterHeight; y < yz; y++) { + if (y >= 0 && y < iHeight) { + for (let x = i + tileWidth, xz = i + tileWidth + gutterWidth; x < xz; x++) { + if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); } } } + tiles.push([].concat(hold)); } - if (hold.length) tiles.push([].concat(hold)); } + workstore[name] = tiles; + workstoreLastAccessed[name] = Date.now(); + return tiles; } + return false; + }; - -// __average__ - Returns the average of values in an array -const average = function (c) { +const buildImageTileSets = function (tileWidth, tileHeight, offsetX, offsetY, data) { + + if (!data) data = cache.source; + + if (data && data.width && data.height) { - let a = 0, - k, kz, - l = c.length; + let iWidth = data.width, + iHeight = data.height; - if (l) { + tileWidth = (tileWidth.toFixed && !isNaN(tileWidth)) ? tileWidth : 1; + tileHeight = (tileHeight.toFixed && !isNaN(tileHeight)) ? tileHeight : 1; + offsetX = (offsetX.toFixed && !isNaN(offsetX)) ? offsetX : 0; + offsetY = (offsetY.toFixed && !isNaN(offsetY)) ? offsetY : 0; - for (k = 0, kz = l; k < kz; k++) { + if (tileWidth < 1) tileWidth = 1; + if (tileWidth >= iWidth) tileWidth = iWidth - 1; + if (tileHeight < 1) tileHeight = 1; + if (tileHeight >= iHeight) tileHeight = iHeight - 1; + if (offsetX < 0) offsetX = 0; + if (offsetX >= tileWidth) offsetX = tileWidth - 1; + if (offsetY < 0) offsetY = 0; + if (offsetY >= tileHeight) offsetY = tileHeight - 1; - a +=c[k]; + let name = `imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; } - return a / l; - } - return 0; -}; - -// __checkBounds__ - Checks that a position cursor is within the bounds of the data array -const checkBounds = function (p) { + let tiles = []; - let len = data.length; + for (let j = offsetY - tileHeight, jz = iHeight; j < jz; j += tileHeight) { - if (p < 0) p += len; - if (p >= len) p -= len; - return p; -}; + for (let i = offsetX - tileWidth, iz = iWidth; i < iz; i += tileWidth) { + let hold = []; + + for (y = j, yz = j + tileHeight; y < yz; y++) { -// All the pre-defined filter functions are held as attributes to the __actions object__ -const actions = { + if (y >= 0 && y < iHeight) { + for (let x = i, xz = i + tileWidth; x < xz; x++) { -// __userDefined__ - requires a String function in the `filter.userDefined` attribute, which will be generated into a working function by the web worker - such filters can make use of any other filter attributes (for example: `filter.level`) alongside the dedicated userDefined attributes `filter.udVariable0 - filter.udVariable9` - userDefined: function () {}, + if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); + } + } + } + if (hold.length) tiles.push(hold); + } + } + workstore[name] = tiles; + workstoreLastAccessed[name] = Date.now(); + return tiles; + } + return false; +}; +const buildHorizontalBlur = function (grid, radius, alpha) { -// __grayscale__ - desaturates the image - grayscale: function () { + if (!radius || !radius.toFixed || isNaN(radius)) radius = 0; - let i, iz, pos, gray; + let gridHeight = grid.length, + gridWidth = grid[0].length; - for (i = 0, iz = cache.length; i < iz; i++) { + let name = `blur-h-${gridWidth}-${gridHeight}-${radius}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } - pos = cache[i]; - gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]); - data[pos] = data[pos + 1] = data[pos + 2] = gray; - } - }, + let horizontalBlur = [], + cell; + for (let y = 0; y < gridHeight; y++) { -// __sepia__ - desaturates the image, then 'antiques' it by adding back some yellow tone - sepia: function () { + for (let x = 0; x < gridWidth; x++) { - let i, iz, pos, r, g, b; + let cellsToProcess = []; - for (i = 0, iz = cache.length; i < iz; i++) { + for (let c = x - radius, cz = x + radius + 1; c < cz; c++) { - pos = cache[i]; - - r = data[pos]; - g = data[pos + 1]; - b = data[pos + 2]; - - data[pos] = (r * 0.393) + (g * 0.769) + (b * 0.189); - data[pos + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168); - data[pos + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131); + if (c >= 0 && c < gridWidth) cellsToProcess.push(grid[y][c]); + } + horizontalBlur[(y * gridHeight) + x] = cellsToProcess; } - }, + } + workstore[name] = horizontalBlur; + workstoreLastAccessed[name] = Date.now(); + return horizontalBlur; +}; +const buildVerticalBlur = function (grid, radius, alpha) { -// __invert__ - turns white into black, and similar across the spectrum - invert: function () { + if (!radius || !radius.toFixed || isNaN(radius)) radius = 0; - let i, iz, pos; + let gridHeight = grid.length, + gridWidth = grid[0].length; - for (i = 0, iz = cache.length; i < iz; i++) { + let name = `blur-v-${gridWidth}-${gridHeight}-${radius}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } - pos = cache[i]; - data[pos] = 255 - data[pos]; - - pos++; - data[pos] = 255 - data[pos]; - - pos++; - data[pos] = 255 - data[pos]; - } - }, + let verticalBlur = [], + cell; + for (let x = 0; x < gridWidth; x++) { -// __red__ - suppresses the image's green and blue channels - red: function () { + for (let y = 0; y < gridHeight; y++) { - let i, iz, pos; + let cellsToProcess = []; - for (i = 0, iz = cache.length; i < iz; i++) { + for (let c = y - radius, cz = y + radius + 1; c < cz; c++) { - pos = cache[i]; - data[pos + 1] = 0; - data[pos + 2] = 0; + if (c >= 0 && c < gridHeight) cellsToProcess.push(grid[c][x]); + } + verticalBlur[(y * gridHeight) + x] = cellsToProcess; } - }, + } + workstore[name] = verticalBlur; + workstoreLastAccessed[name] = Date.now(); + return verticalBlur; +}; +const buildMatrixGrid = function (mWidth, mHeight, mX, mY, alpha, data) { -// __green__ - suppresses the image's red and blue channels - green: function () { + if (!data) data = cache.source; - let i, iz, pos; + if (mWidth == null || mWidth < 1) mWidth = 1; + if (mHeight == null || mHeight < 1) mHeight = 1; - for (i = 0, iz = cache.length; i < iz; i++) { + if (mX == null || mX < 0) mX = 0; + else if (mX >= mWidth) mX = mWidth - 1; - pos = cache[i]; - data[pos] = 0; - data[pos + 2] = 0; - } - }, + if (mY == null || mY < 0) mY = 0; + else if (mY >= mHeight) mY = mHeight - 1; + + let iWidth = data.width, + iHeight = data.height; + let name = `matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`; + if (workstore[name]) { + workstoreLastAccessed[name] = Date.now(); + return workstore[name]; + } -// __blue__ - suppresses the image's red and green channels - blue: function () { + let dataLength = data.data.length, + x, xz, y, yz, i, iz, + cellsTemplate = [], + grid = []; - let i, iz, pos; + for (y = -mY, yz = mHeight - mY; y < yz; y++) { - for (i = 0, iz = cache.length; i < iz; i++) { + for (x = -mX, xz = mWidth - mX; x < xz; x++) { - pos = cache[i]; - data[pos] = 0; - data[pos + 1] = 0; + cellsTemplate.push((y * iWidth) + x); } - }, + } + + for (y = 0; y < iHeight; y++) { + for (x = 0; x < iWidth; x++) { + + let pos = (y * iWidth) + x; + let cell = []; -// __notred__ - suppresses the image's red channel - notred: function() { + for (i = 0, iz = cellsTemplate.length; i < iz; i++) { - let i, iz, pos; + let val = pos + cellsTemplate[i]; - for (i = 0, iz = cache.length; i < iz; i++) { + if (val < 0) val += dataLength; + else if (val >= dataLength) val -= dataLength; - pos = cache[i]; - data[pos] = 0; + cell.push(val); + } + grid.push(cell); } - }, - + } + workstore[name] = grid; + workstoreLastAccessed[name] = Date.now(); + return grid; +}; -// __notgreen__ - suppresses the image's green channel - notgreen: function () { +const checkChannelLevelsParameters = function (f) { - let i, iz, pos; + const doCheck = function (v, isHigh = false) { - for (i = 0, iz = cache.length; i < iz; i++) { + if (v.toFixed) { + if (v < 0) return [[0, 255, 0]]; + if (v > 255) return [[0, 255, 255]]; + if (isNaN(v)) return (isHigh) ? [[0, 255, 255]] : [[0, 255, 0]]; + return [[0, 255, v]]; + } - pos = cache[i]; - data[pos + 1] = 0; + if (v.substring) { + v = v.split(','); } - }, + if (Array.isArray(v)) { -// __notblue__ - suppresses the image's blue channel - notblue: function () { + if (!v.length) return v; + if (Array.isArray(v[0])) return v; - let i, iz, pos; + v = v.map(s => parseInt(s, 10)); + v.sort((a, b) => a - b); - for (i = 0, iz = cache.length; i < iz; i++) { + if (v.length == 1) return [[0, 255, v[0]]]; - pos = cache[i]; - data[pos + 2] = 0; - } - }, + let res = [], + starts, ends; + for (let i = 0, iz = v.length; i < iz; i++) { -// __cyan__ - averages the image's blue and green channels, and suppresses the red channel - cyan: function () { + starts = 0; + ends = 255; + if (i != 0) starts = Math.ceil(v[i - 1] + ((v[i] - v[i - 1]) / 2)); + if (i != iz - 1) ends = Math.floor(v[i] + ((v[i + 1] - v[i]) / 2)); + + res.push([starts, ends, v[i]]); + } + return res; + } + return (isHigh) ? [[0, 255, 255]] : [[0, 255, 0]]; + } + f.red = doCheck(f.red); + f.green = doCheck(f.green); + f.blue = doCheck(f.blue); + f.alpha = doCheck(f.alpha, true); +}; - let i, iz, pos, gray; +const cacheOutput = function (name, obj, caller) { - for (i = 0, iz = cache.length; i < iz; i++) { + cache[name] = obj; +}; - pos = cache[i]; - - gray = (data[pos + 1] + data[pos + 2]) / 2; - - data[pos] = 0; - data[pos + 1] = gray; - data[pos + 2] = gray; - } - }, +const copyOver = function (f, t) { + let {r:fromR, g:fromG, b:fromB, a:fromA } = f; + let {r:toR, g:toG, b:toB, a:toA } = t; -// __magenta__ - averages the image's red and blue channels, and suppresses the green channel - magenta: function () { + for (let i = 0; i < fromR.length; i++) { - let i, iz, pos, gray; + toR[i] = fromR[i]; + toG[i] = fromG[i]; + toB[i] = fromB[i]; + toA[i] = fromA[i]; + } +}; - for (i = 0, iz = cache.length; i < iz; i++) { +const getInputAndOutputDimensions = function (requirements) { - pos = cache[i]; + let data = cache.source, + results = []; - gray = (data[pos] + data[pos + 2]) / 2; + if (requirements.lineIn && requirements.lineIn != 'source' && requirements.lineIn != 'source-alpha' && cache[requirements.lineIn]) { - data[pos] = gray; - data[pos + 1] = 0; - data[pos + 2] = gray; - } - }, + data = cache[requirements.lineIn]; + } + results.push(data.width, data.height); + if (requirements.lineOut && cache[requirements.lineOut]) { -// __yellow__ - averages the image's red and green channels, and suppresses the blue channel - yellow: function () { + data = cache[requirements.lineOut]; + } + results.push(data.width, data.height); - let i, iz, pos, gray; + data = cache.source; - for (i = 0, iz = cache.length; i < iz; i++) { + if (requirements.lineMix && requirements.lineMix != 'source' && requirements.lineMix != 'source-alpha' && cache[requirements.lineMix]) { - pos = cache[i]; - - gray = (data[pos] + data[pos + 1]) / 2; - - data[pos] = gray; - data[pos + 1] = gray; - data[pos + 2] = 0; - } - }, + data = cache[requirements.lineMix]; + } + results.push(data.width, data.height); + return results; +}; -// __brightness__ - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute - brightness: function () { +const getInputAndOutputChannels = function (requirements) { - let i, iz, pos, - level = filter.level || 0; + let lineIn = work; + let len = lineIn.r.length; + let data = cache.source; - for (i = 0, iz = cache.length; i < iz; i++) { + if (requirements.lineIn) { - pos = cache[i]; - data[pos] *= level; - - pos++; - data[pos] *= level; - - pos++; - data[pos] *= level; - } - }, + if (requirements.lineIn == 'source') lineIn = data.channels; + else if (requirements.lineIn == 'source-alpha') { + lineIn = createResultObject(len); -// __saturation__ - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute, then normalizes the result - saturation: function () { + let destAlpha = lineIn.a, + sourceAlpha = data.channels.a; - let i, iz, pos, - level = filter.level || 0; + for (let i = 0; i < len; i++) { - for (i = 0, iz = cache.length; i < iz; i++) { + destAlpha[i] = sourceAlpha[i]; + } + } + else if (cache[requirements.lineIn]) { - pos = cache[i]; - data[pos] = 127 + ((data[pos] - 127) * level); - - pos++; - data[pos] = 127 + ((data[pos] - 127) * level); - - pos++; - data[pos] = 127 + ((data[pos] - 127) * level); + data = cache[requirements.lineIn]; + lineIn = data.channels; } - }, + } + let lineMix = false; -// __threshold__ - desaturates each pixel then tests it against filter.level value; those pixels below the level are set to the filter.lowRGB values while the rest are set to the filter.highRGB values - threshold: function () { + if (requirements.lineMix) { - let i, iz, pos, gray, test, - level = filter.level || 0, - lowRed = filter.lowRed, - lowGreen = filter.lowGreen, - lowBlue = filter.lowBlue, - highRed = filter.highRed, - highGreen = filter.highGreen, - highBlue = filter.highBlue; + if (requirements.lineMix == 'source') lineMix = cache.source.channels; + else if (requirements.lineMix == 'source-alpha') { - for (i = 0, iz = cache.length; i < iz; i++) { + lineMix = createResultObject(len); - pos = cache[i]; - - gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]); - test = (gray > level) ? true : false; - - if (test) { + let destAlpha = lineMix.a, + sourceAlpha = cache.source.channels.a; - data[pos] = highRed; - data[pos + 1] = highGreen; - data[pos + 2] = highBlue; - } - else { + for (let i = 0; i < len; i++) { - data[pos] = lowRed; - data[pos + 1] = lowGreen; - data[pos + 2] = lowBlue; + destAlpha[i] = sourceAlpha[i]; } - } - }, - + else if (cache[requirements.lineMix]) lineMix = cache[requirements.lineMix].channels; + } -// __channels__ - multiply each pixel's channel values by the values set in the filter.RGB attributes - channels: function () { + let lineOut; - let i, iz, pos, - red = filter.red || 0, - green = filter.green || 0, - blue = filter.blue || 0; + if (requirements.lineOut) { - for (i = 0, iz = cache.length; i < iz; i++) { + if (cache[requirements.lineOut]) lineOut = cache[requirements.lineOut].channels; + else { - pos = cache[i]; - - data[pos] *= red; - data[pos + 1] *= green; - data[pos + 2] *= blue; + lineOut = createResultObject(len); + cache[requirements.lineOut] = { + width: data.width, + height: data.height, + channels: lineOut, + }; } - }, + } + else lineOut = createResultObject(len); + return [lineIn, lineOut, lineMix]; +}; -// __channelstep__ - divide, floor, and then multiply each pixel's channel values by the values set in the filter.RGB attributes - channelstep: function () { +const processResults = function (store, incoming, ratio) { - let i, iz, pos, - red = filter.red || 1, - green = filter.green || 1, - blue = filter.blue || 1, - floor = Math.floor; + let sR = store.r, + sG = store.g, + sB = store.b, + sA = store.a; - for (i = 0, iz = cache.length; i < iz; i++) { + let iR = incoming.r, + iG = incoming.g, + iB = incoming.b, + iA = incoming.a; - pos = cache[i]; - data[pos] = floor(data[pos] / red) * red; - - pos++; - data[pos] = floor(data[pos] / green) * green; - - pos++; - data[pos] = floor(data[pos] / blue) * blue; - } - }, + if (ratio === 1) copyOver(incoming, store); + else if (ratio > 0) { + antiRatio = 1 - ratio; -// __tint__ - a more fine-grained form of the channels filter - tint: function () { + for (let i = 0, iz = sR.length; i < iz; i++) { - let i, iz, pos, r, g, b, - redInRed = filter.redInRed || 0, - redInGreen = filter.redInGreen || 0, - redInBlue = filter.redInBlue || 0, - greenInRed = filter.greenInRed || 0, - greenInGreen = filter.greenInGreen || 0, - greenInBlue = filter.greenInBlue || 0, - blueInRed = filter.blueInRed || 0, - blueInGreen = filter.blueInGreen || 0, - blueInBlue = filter.blueInBlue || 0; + sR[i] = Math.floor((sR[i] * antiRatio) + (iR[i] * ratio)); + sG[i] = Math.floor((sG[i] * antiRatio) + (iG[i] * ratio)); + sB[i] = Math.floor((sB[i] * antiRatio) + (iB[i] * ratio)); + sA[i] = Math.floor((sA[i] * antiRatio) + (iA[i] * ratio)); + } + } +}; - for (i = 0, iz = cache.length; i < iz; i++) { +const getHSLfromRGB = function (dr, dg, db) { - pos = cache[i]; - - r = data[pos]; - g = data[pos + 1]; - b = data[pos + 2]; - - data[pos] = (r * redInRed) + (g * greenInRed) + (b * blueInRed); - data[pos + 1] = (r * redInGreen) + (g * greenInGreen) + (b * blueInGreen); - data[pos + 2] = (r * redInBlue) + (g * greenInBlue) + (b * blueInBlue); - } - }, + let minColor = Math.min(dr, dg, db), + maxColor = Math.max(dr, dg, db); + let lum = (minColor + maxColor) / 2; -// __chroma__ - will evaluate each pixel against a range array; pixels that fall within the range are set to transparent + let sat = 0; -// The __ranges__ attribute needs to be an array of arrays with the following format: + if (minColor !== maxColor) { -// [[minRed, minGreen, minBlue, maxRed, maxGreen, maxBlue], etc] + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } -// ... multiple ranges can be defined - for instance to key out the lightest and darkest hues: + let hue = 0; -// ranges: [[0, 0, 0, 80, 80, 80], [180, 180, 180, 255, 255, 255]] - chroma: function () { + if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); + else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); + else hue = 4 + ((dr - dg) / (maxColor - minColor)); - let pos, posA, - ranges = filter.ranges, - range, min, max, val, - i, iz, j, jz, flag; + hue *= 60; - for (j = 0, jz = cache.length; j < jz; j++) { + if (hue < 0) hue += 360; - flag = false; + return [hue, sat, lum]; +}; - for (i = 0, iz = ranges.length; i < iz; i++) { +const getRGBfromHSL = function (h, s, l) { - posA = cache[j] + 3; - range = ranges[i]; - min = range[2]; - pos = posA - 1; - val = data[pos]; + if (!s) { - if (val >= min) { + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } - max = range[5]; + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; - if (val <= max) { + const calculator = function (t, l1, l2) { - min = range[1]; - pos--; - val = data[pos]; + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; - if (val >= min) { + h /= 360; - max = range[4]; + let tr = h + 0.333, + tg = h, + tb = h - 0.333; - if (val <= max) { + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; - min = range[0]; - pos--; - val = data[pos]; + let r = calculator(tr, tempLum1, tempLum2) * 255, + g = calculator(tg, tempLum1, tempLum2) * 255, + b = calculator(tb, tempLum1, tempLum2) * 255; - if (val >= min) { + return [r, g, b]; +}; - max = range[3]; +const theBigActionsObject = { - if (val <= max) { - flag = true; - break; - } - } - } - } - } - } - } - if (flag) data[posA] = 0; - } - }, + 'alpha-to-channels': function (requirements) { + let [input, output] = getInputAndOutputChannels(requirements); -// __pixelate__ - create tiles - whose dimensions and positions are determined by values set in the filter tileWidth, tileHeight, offsetX and offsetY attributes - across the image and then average the pixels in each tile to a single color - pixelate: function () { + let len = input.r.length; - let i, iz, j, jz, pos, r, g, b, a, tile, len; + let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; - getTiles(); + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == excludeRed) excludeRed = true; + if (null == excludeGreen) excludeGreen = true; + if (null == excludeBlue) excludeBlue = true; - for (i = 0, iz = tiles.length; i < iz; i++) { + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; - tile = tiles[i]; - r = g = b = a = 0; - len = tile.length; + for (let i = 0; i < len; i++) { - if (len) { + outR[i] = (includeRed) ? inA[i] : ((excludeRed) ? 0 : inR[i]); + outG[i] = (includeGreen) ? inA[i] : ((excludeGreen) ? 0 : inG[i]); + outB[i] = (includeBlue) ? inA[i] : ((excludeBlue) ? 0 : inB[i]); + } + outA.fill(255, 0, outA.length - 1); - for (j = 0, jz = len; j < jz; j++) { + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, - pos = tile[j]; + 'area-alpha': function (requirements) { - r += data[pos]; - g += data[pos + 1]; - b += data[pos + 2]; - a += data[pos + 3]; - } + let [input, output] = getInputAndOutputChannels(requirements); - r /= len; - g /= len; - b /= len; - a /= len; + let len = input.r.length; - for (j = 0, jz = len; j < jz; j++) { + let {opacity, tileWidth, tileHeight, offsetX, offsetY, gutterWidth, gutterHeight, areaAlphaLevels, lineOut} = requirements; - pos = tile[j]; + if (null == opacity) opacity = 1; + if (null == tileWidth) tileWidth = 1; + if (null == tileHeight) tileHeight = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + if (null == gutterWidth) gutterWidth = 1; + if (null == gutterHeight) gutterHeight = 1; + if (null == areaAlphaLevels) areaAlphaLevels = [255,0,0,0]; - data[pos] = r; - data[pos + 1] = g; - data[pos + 2] = b; - data[pos + 3] = a; - } - } - } - }, + let tiles = buildAlphaTileSets(tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels); + if (!Array.isArray(areaAlphaLevels)) areaAlphaLevels = [255,0,0,0]; -// __blur__ - creates a blurred image. Note: can be slow across larger images! The degree of the blur - which does not follow conventional algorithms such as gaussian - is determined by the filter attribute values for radius (number), passes (number) and shrink (boolean) - blur: function () { + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; - if (data.slice) { + for (let i = 0; i < len; i++) { + outR[i] = inR[i]; + outG[i] = inG[i]; + outB[i] = inB[i]; + } + tiles.forEach((t, index) => { - let radius = filter.radius || 1, - alpha = filter.includeAlpha || false, - shrink = filter.shrinkingRadius || false, - passes = filter.passes || 1, - vertical = filter.processVertical, - horizontal = filter.processHorizontal, - len = data.length, - imageWidth = image.width, - imageHeight = image.height, - tempDataTo, tempDataFrom, - i, iz, index; + for (let j = 0, jz = t.length; j < jz; j++) { - let processPass = function () { + if (inA[t[j]]) outA[t[j]] = areaAlphaLevels[index % 4]; + } + }); - let j, jz; + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, - if (vertical) { + 'average-channels': function (requirements) { - tempDataFrom = tempDataTo.slice(); + let [input, output] = getInputAndOutputChannels(requirements); - for (j = localX * 4, jz = (localX + localWidth) * 4; j < jz; j++) { + let len = input.r.length; - if (alpha) processColumn(j); - else { + let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; - if (j % 4 !== 3) processColumn(j); - } - } - } + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == excludeRed) excludeRed = false; + if (null == excludeGreen) excludeGreen = false; + if (null == excludeBlue) excludeBlue = false; - if (horizontal) { + let divisor = 0; + if (includeRed) divisor++; + if (includeGreen) divisor++; + if (includeBlue) divisor++; - tempDataFrom = tempDataTo.slice(); + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; - for (j = localY, jz = localY + localHeight; j < jz; j++) { + for (let i = 0; i < len; i++) { - if (alpha) processRowWithAlpha(j); - else processRowNoAlpha(j); - } - } - }; + if (inA[i]) { + + if (divisor) { - let processColumn = function (col) { + let avg = 0; - let pos, avg, val, cagePointer, y, yz, q, dataPointer, - vLead = radius * iWidth, - cage = [], - cageLen; + if (includeRed) avg += inR[i]; + if (includeGreen) avg += inG[i]; + if (includeBlue) avg += inB[i]; - for (y = -radius, yz = radius; y < yz; y++) { + avg = Math.floor(avg / divisor); - pos = col + (y * iWidth); - pos = checkBounds(pos, len); - cage.push(tempDataFrom[pos]); + outR[i] = (excludeRed) ? 0 : avg; + outG[i] = (excludeGreen) ? 0 : avg; + outB[i] = (excludeBlue) ? 0 : avg; + outA[i] = inA[i]; } + else { + + outR[i] = (excludeRed) ? 0 : inR[i]; + outG[i] = (excludeGreen) ? 0 : inG[i]; + outB[i] = (excludeBlue) ? 0 : inB[i]; + outA[i] = inA[i]; + } + } + else { + + outR[i] = inR[i]; + outG[i] = inG[i]; + outB[i] = inB[i]; + outA[i] = inA[i]; + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, - tempDataTo[col] = avg = average(cage); + 'binary': function (requirements) { - cageLen = cage.length; + let [input, output] = getInputAndOutputChannels(requirements); - for (q = 0; q < cageLen; q++) { + let len = input.r.length; - cage[q] /= cageLen; - } + let {opacity, red, green, blue, alpha, lineOut} = requirements; - cagePointer = 0; + if (null == opacity) opacity = 1; + if (null == red) red = 0; + if (null == green) green = 0; + if (null == blue) blue = 0; + if (null == alpha) alpha = 0; - for (y = 1; y < imageHeight; y++) { + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; - avg -= cage[cagePointer]; + for (let i = 0; i < len; i++) { - dataPointer = col + (y * iWidth); - pos = dataPointer + vLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; + if (red) outR[i] = (inR[i] > red) ? 255 : 0; + else outR[i] = inR[i]; - avg += val; - cage[cagePointer] = val; - tempDataTo[dataPointer] = avg; + if (green) outG[i] = (inG[i] > green) ? 255 : 0; + else outG[i] = inG[i]; - cagePointer++; + if (blue) outB[i] = (inB[i] > blue) ? 255 : 0; + else outB[i] = inB[i]; - if (cagePointer === cageLen) cagePointer = 0; - } - }; + if (alpha) outA[i] = (inA[i] > alpha) ? 255 : 0; + else outA[i] = inA[i]; + } - let processRowWithAlpha = function (row) { + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, - let pos, val, x, xz, q, avgQ, cageQ, rowPosX, - avg = [], - cage = [[], [], [], []], - rowPos = row * iWidth, - hLead = radius * 4, - dataPointer, cagePointer, cageLen; + 'blend': function (requirements) { - q = 0; + let [input, output, mix] = getInputAndOutputChannels(requirements); - for (x = -radius * 4, xz = radius * 4; x < xz; x++) { + let len = output.r.length; - pos = rowPos + x; - pos = checkBounds(pos, len); - - cage[q].push(tempDataFrom[pos]); - - q++; - if (q === 4) q = 0; - } + let {opacity, blend, offsetX, offsetY, lineOut} = requirements; - tempDataTo[rowPos] = avg[0] = average(cage[0]); - tempDataTo[rowPos + 1] = avg[1] = average(cage[1]); - tempDataTo[rowPos + 2] = avg[2] = average(cage[2]); - tempDataTo[rowPos + 3] = avg[3] = average(cage[3]); + if (null == opacity) opacity = 1; + if (null == blend) blend = ''; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; - cageLen = cage[0].length; + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; - for (q = 0; q < 4; q++) { + let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); - for (x = 0; x < cageLen; x++) { + const copyPixel = function (fromPos, toPos, channel) { - cage[q][x] /= cageLen; - } - } - cagePointer = 0; + outR[toPos] = channel.r[fromPos]; + outG[toPos] = channel.g[fromPos]; + outB[toPos] = channel.b[fromPos]; + outA[toPos] = channel.a[fromPos]; + }; - for (x = 1; x < imageWidth; x++) { + const getLinePositions = function (x, y) { - rowPosX = rowPos + (x * 4); + let ix = x, + iy = y, + mx = x - offsetX, + my = y - offsetY; - for (q = 0; q < 4; q++) { + let mPos = -1, + iPos = (iy * iWidth) + ix; - avgQ = avg[q]; - cageQ = cage[q]; - avgQ -= cageQ[cagePointer]; + if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; - dataPointer = rowPosX + q; - pos = dataPointer + hLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; + return [iPos, mPos]; + }; - avgQ += val; - tempDataTo[dataPointer] = avgQ; - avg[q] = avgQ; - cageQ[cagePointer] = val; - } + const getChannelNormals = function (i, m) { - cagePointer++; + return [ + input.r[i] / 255, + input.g[i] / 255, + input.b[i] / 255, + input.a[i] / 255, + mix.r[m] / 255, + mix.g[m] / 255, + mix.b[m] / 255, + mix.a[m] / 255 + ]; + }; - if (cagePointer === cageLen) cagePointer = 0; - } - }; + const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255; - let processRowNoAlpha = function (row) { + switch (blend) { - let pos, val, x, xz, q, avgQ, cageQ, rowPosX, - avg = [], - hLead = radius * 4, - cage = [[], [], []], - rowPos = row * iWidth, - dataPointer, cagePointer, cageLen; + case 'color-burn' : + const colorburnCalc = (din, dmix) => { + if (dmix == 1) return 255; + else if (din == 0) return 0; + return (1 - Math.min(1, ((1 - dmix) / din ))) * 255; + }; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - q = 0; + let [iPos, mPos] = getLinePositions(x, y); - for (x = -radius * 4, xz = radius * 4; x < xz; x++) { + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { - if (q < 3) { + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - pos = rowPos + x; - pos = checkBounds(pos, len); - cage[q].push(tempDataFrom[pos]); - q++; + outR[iPos] = colorburnCalc(dinR, dmixR); + outG[iPos] = colorburnCalc(dinG, dmixG); + outB[iPos] = colorburnCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - else q = 0; } + break; + + case 'color-dodge' : + const colordodgeCalc = (din, dmix) => { + if (dmix == 0) return 0; + else if (din == 1) return 255; + return Math.min(1, (dmix / (1 - din))) * 255; + }; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - tempDataTo[rowPos] = avg[0] = average(cage[0]); - tempDataTo[rowPos + 1] = avg[1] = average(cage[1]); - tempDataTo[rowPos + 2] = avg[2] = average(cage[2]); + outR[iPos] = colordodgeCalc(dinR, dmixR); + outG[iPos] = colordodgeCalc(dinG, dmixG); + outB[iPos] = colordodgeCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - cageLen = cage[0].length; + case 'darken' : + const darkenCalc = (din, dmix) => (din < dmix) ? din : dmix; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - for (q = 0; q < 3; q++) { + let [iPos, mPos] = getLinePositions(x, y); - cageQ = cage[q]; - - for (x = 0; x < cageLen; x++) { + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { - cageQ[x] /= cageLen; + outR[iPos] = darkenCalc(inR[iPos], mixR[mPos]); + outG[iPos] = darkenCalc(inG[iPos], mixG[mPos]); + outB[iPos] = darkenCalc(inB[iPos], mixB[mPos]); + outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255); + } } } - cagePointer = 0; - - for (x = 1; x < imageWidth; x++) { + break; - rowPosX = rowPos + (x * 4); + case 'difference' : + const differenceCalc = (din, dmix) => Math.abs(din - dmix) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - for (q = 0; q < 3; q++) { + let [iPos, mPos] = getLinePositions(x, y); - avgQ = avg[q]; - cageQ = cage[q]; - avgQ -= cageQ[cagePointer]; + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - dataPointer = rowPosX + q; - pos = dataPointer + hLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - avgQ += val; - tempDataTo[dataPointer] = avgQ; - avg[q] = avgQ; - cageQ[cagePointer] = val; + outR[iPos] = differenceCalc(dinR, dmixR); + outG[iPos] = differenceCalc(dinG, dmixG); + outB[iPos] = differenceCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } - - cagePointer++; - if (cagePointer === cageLen) cagePointer = 0; } - }; + break; - tempDataTo = data.slice(); + case 'exclusion' : + const exclusionCalc = (din, dmix) => (din + dmix - (2 * dmix * din)) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - for (i = 0; i < passes; i++) { + let [iPos, mPos] = getLinePositions(x, y); - processPass(); - - if (shrink) { + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - radius = Math.ceil(radius * 0.3); - radius = (radius < 1) ? 1 : radius; - } - } + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - for (i = 0, iz = cache.length; i < iz; i++) { + outR[iPos] = exclusionCalc(dinR, dmixR); + outG[iPos] = exclusionCalc(dinG, dmixG); + outB[iPos] = exclusionCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - index = cache[i]; - data[index] = tempDataTo[index]; - - index++; - data[index] = tempDataTo[index]; - - index++; - data[index] = tempDataTo[index]; - - if (alpha) { + case 'hard-light' : + const hardlightCalc = (din, dmix) => (din <= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - index++; - data[index] = tempDataTo[index]; - } - } - } - }, + let [iPos, mPos] = getLinePositions(x, y); + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { -// __matrix__ - apply a 3x3 matrix transform to each of the image's pixels - matrix: function () { + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos, - len = data.length, - alpha = filter.includeAlpha || false, - offset = [], - weights = filter.weights || [0, 0, 0, 0, 1, 0, 0, 0, 0], - tempCache = [], - cursor = 0; + outR[iPos] = hardlightCalc(dinR, dmixR); + outG[iPos] = hardlightCalc(dinG, dmixG); + outB[iPos] = hardlightCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - offset[0] = -iWidth - 4; - offset[1] = -iWidth; - offset[2] = -iWidth + 4; - offset[3] = -4; - offset[4] = 0; - offset[5] = 4; - offset[6] = iWidth - 4; - offset[7] = iWidth; - offset[8] = iWidth + 4; + case 'lighten' : + const lightenCalc = (din, dmix) => (din > dmix) ? din : dmix; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - for (i = 0, iz = cache.length; i < iz; i++) { + let [iPos, mPos] = getLinePositions(x, y); - homePos = cache[i]; - sumR = sumG = sumB = sumA = 0; - - for (j = 0, jz = offset.length; j < jz; j++) { + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - pos = homePos + offset[j]; - - if (pos >= 0 && pos < len) { - - weight = weights[j]; - sumR += data[pos] * weight; - - pos++; - sumG += data[pos] * weight; - - pos++; - sumB += data[pos] * weight; - - if (alpha) { - - pos++; - sumA += data[pos] * weight; + outR[iPos] = lightenCalc(inR[iPos], mixR[mPos]); + outG[iPos] = lightenCalc(inG[iPos], mixG[mPos]); + outB[iPos] = lightenCalc(inB[iPos], mixB[mPos]); + outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255); + } } } - } + break; - tempCache[cursor] = sumR; - cursor++; + case 'lighter' : + const lighterCalc = (din, dmix) => (din + dmix) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - tempCache[cursor] = sumG; - cursor++; + let [iPos, mPos] = getLinePositions(x, y); - tempCache[cursor] = sumB; - cursor++; + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - if (alpha) { + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - tempCache[cursor] = sumA; - cursor++; - } - } + outR[iPos] = lighterCalc(dinR, dmixR); + outG[iPos] = lighterCalc(dinG, dmixG); + outB[iPos] = lighterCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - cursor = 0; + case 'multiply' : + const multiplyCalc = (din, dmix) => din * dmix * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - for (i = 0, iz = cache.length; i < iz; i++) { + let [iPos, mPos] = getLinePositions(x, y); - homePos = cache[i]; - data[homePos] = tempCache[cursor]; - cursor++; + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; + outR[iPos] = multiplyCalc(dinR, dmixR); + outG[iPos] = multiplyCalc(dinG, dmixG); + outB[iPos] = multiplyCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - if (alpha) { + case 'overlay' : + const overlayCalc = (din, dmix) => (din >= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - } - } - }, + let [iPos, mPos] = getLinePositions(x, y); + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { -// __matrix5__ - apply a 5x5 matrix transform to each of the image's pixels - - matrix5: function () { - - let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos, - len = data.length, - alpha = filter.includeAlpha || false, - offset = [], - weights = filter.weights || [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - tempCache = [], - iWidth2 = iWidth * 2, - cursor = 0; - - offset[0] = -iWidth2 - 8; - offset[1] = -iWidth2 - 4; - offset[2] = -iWidth2; - offset[3] = -iWidth2 + 4; - offset[4] = -iWidth2 + 8; - offset[5] = -iWidth - 8; - offset[6] = -iWidth - 4; - offset[7] = -iWidth; - offset[8] = -iWidth + 4; - offset[9] = -iWidth + 8; - offset[10] = -8; - offset[11] = -4; - offset[12] = 0; - offset[13] = 4; - offset[14] = 8; - offset[15] = iWidth - 8; - offset[16] = iWidth - 4; - offset[17] = iWidth; - offset[18] = iWidth + 4; - offset[19] = iWidth + 8; - offset[20] = iWidth2 - 8; - offset[21] = iWidth2 - 4; - offset[22] = iWidth2; - offset[23] = iWidth2 + 4; - offset[24] = iWidth2 + 8; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - sumR = sumG = sumB = sumA = 0; - - for (j = 0, jz = offset.length; j < jz; j++) { + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - pos = homePos + offset[j]; - - if (pos >= 0 && pos < len) { + outR[iPos] = overlayCalc(dinR, dmixR); + outG[iPos] = overlayCalc(dinG, dmixG); + outB[iPos] = overlayCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - weight = weights[j]; - sumR += data[pos] * weight; + case 'screen' : + const screenCalc = (din, dmix) => (dmix + (din - (dmix * din))) * 255; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - pos++; - sumG += data[pos] * weight; + let [iPos, mPos] = getLinePositions(x, y); - pos++; - sumB += data[pos] * weight; + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { - if (alpha) { + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - pos++; - sumA += data[pos] * weight; + outR[iPos] = screenCalc(dinR, dmixR); + outG[iPos] = screenCalc(dinG, dmixG); + outB[iPos] = screenCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } } } - } + break; - tempCache[cursor] = sumR; - cursor++; + case 'soft-light' : + const softlightCalc = (din, dmix) => { - tempCache[cursor] = sumG; - cursor++; + let d = (dmix <= 0.25) ? + ((((16 * dmix) - 12) * dmix) + 4) * dmix : + Math.sqrt(dmix); - tempCache[cursor] = sumB; - cursor++; + if (din <= 0.5) return (dmix - ((1 - (2 * din)) * dmix * (1 - dmix))) * 255; + return (dmix + (((2 * din) - 1) * (d - dmix))) * 255; + }; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { - if (alpha) { + let [iPos, mPos] = getLinePositions(x, y); - tempCache[cursor] = sumA; - cursor++; - } - } + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { - cursor = 0; + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - for (i = 0, iz = cache.length; i < iz; i++) { + outR[iPos] = softlightCalc(dinR, dmixR); + outG[iPos] = softlightCalc(dinG, dmixG); + outB[iPos] = softlightCalc(dinB, dmixB); + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; - homePos = cache[i]; - data[homePos] = tempCache[cursor]; - cursor++; + case 'color' : + const colorCalc = (iR, iG, iB, mR, mG, mB) => { - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; + return getRGBfromHSL(iH, iS, mL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = colorCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; + + case 'hue' : + const hueCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(iH, mS, mL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = hueCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; + + case 'luminosity' : + const luminosityCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(mH, mS, iL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = luminosityCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; + + case 'saturation' : + const saturationCalc = (iR, iG, iB, mR, mG, mB) => { + + let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); + let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); + + return getRGBfromHSL(mH, iS, mL); + } + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else if (!mixA[mPos]) copyPixel(iPos, iPos, input); + else { + + let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); + + let [cr, cg, cb] = saturationCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); + outR[iPos] = cr; + outG[iPos] = cg; + outB[iPos] = cb; + outA[iPos] = alphaCalc(dinA, dmixA); + } + } + } + break; + + default: + const normalCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else if (!inA[iPos]) copyPixel(mPos, iPos, mix); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = normalCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = normalCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = normalCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = alphaCalc(dinA, dmixA) + } + } + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'blur': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, step, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == radius) radius = 0; + if (null == passes) passes = 1; + if (null == processVertical) processVertical = true; + if (null == processHorizontal) processHorizontal = true; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + if (null == step) step = 1; + + let horizontalBlurGrid, verticalBlurGrid; + + if (processHorizontal || processVertical) { + + let grid = buildImageGrid(); + + if (processHorizontal) horizontalBlurGrid = buildHorizontalBlur(grid, radius, input.a); + + if (processVertical) verticalBlurGrid = buildVerticalBlur(grid, radius, input.a); + } + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + const getValue = function (flag, gridStore, pos, holdChannel, alpha) { + + if (flag) { + + let h = gridStore[pos], + l = h.length, + counter = 0, + total = 0; + + if (alpha) { + + for (let t = 0; t < l; t += step) { + + if (alpha[h[t]]) { + + total += holdChannel[h[t]]; + counter++; + } + } + return total / counter; + } + for (let t = 0; t < l; t++) { + total += holdChannel[h[t]]; + } + return total / l; + } + return holdChannel[pos]; + } + + if (!passes || (!processHorizontal && !processVertical)) copyOver(input, output); + else { + + const hold = createResultObject(len); + const {r:holdR, g:holdG, b:holdB, a:holdA} = hold; + + copyOver(input, hold); + + for (let pass = 0; pass < passes; pass++) { + + if (processHorizontal) { + + for (let k = 0; k < len; k++) { + + if (includeAlpha || holdA[k]) { + + outR[k] = getValue(includeRed, horizontalBlurGrid, k, holdR, holdA); + outG[k] = getValue(includeGreen, horizontalBlurGrid, k, holdG, holdA); + outB[k] = getValue(includeBlue, horizontalBlurGrid, k, holdB, holdA); + outA[k] = getValue(includeAlpha, horizontalBlurGrid, k, holdA, false); + } + } + if (processVertical || pass < passes - 1) copyOver(output, hold); + } + + if (processVertical) { + + for (let k = 0; k < len; k++) { + + if (includeAlpha || holdA[k]) { + + outR[k] = getValue(includeRed, verticalBlurGrid, k, holdR, holdA); + outG[k] = getValue(includeGreen, verticalBlurGrid, k, holdG, holdA); + outB[k] = getValue(includeBlue, verticalBlurGrid, k, holdB, holdA); + outA[k] = getValue(includeAlpha, verticalBlurGrid, k, holdA, false); + } + } + if (pass < passes - 1) copyOver(output, hold); + } + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'channels-to-alpha': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, includeRed, includeGreen, includeBlue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + + let divisor = 0; + if (includeRed) divisor++; + if (includeGreen) divisor++; + if (includeBlue) divisor++; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + outR[i] = inR[i]; + outG[i] = inG[i]; + outB[i] = inB[i]; + + if (divisor) { + + let avg = 0; + + if (includeRed) avg += inR[i]; + if (includeGreen) avg += inG[i]; + if (includeBlue) avg += inB[i]; + + avg = Math.floor(avg / divisor); + + outA[i] = avg; + } + else outA[i] = inA[i]; + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'chroma': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, ranges, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == ranges) ranges = []; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let j = 0; j < len; j++) { + + let flag = false; + + let r = inR[j], + g = inG[j], + b = inB[j]; + + for (i = 0, iz = ranges.length; i < iz; i++) { + + let range = ranges[i]; + + let [minR, minG, minB, maxR, maxG, maxB] = ranges[i]; + + if (r >= minR && r <= maxR && g >= minG && g <= maxG && b >= minB && b <= maxB) { + flag = true; + break; + } + + } + outR[j] = inR[j]; + outG[j] = inG[j]; + outB[j] = inB[j]; + outA[j] = (flag) ? 0 : inA[j]; + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'clamp-channels': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == lowRed) lowRed = 0; + if (null == lowGreen) lowGreen = 0; + if (null == lowBlue) lowBlue = 0; + if (null == highRed) highRed = 255; + if (null == highGreen) highGreen = 255; + if (null == highBlue) highBlue = 255; + + const dR = highRed - lowRed, + dG = highGreen - lowGreen, + dB = highBlue - lowBlue; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + if (inA[i]) { + + let r = inR[i] / 255, + g = inG[i] / 255, + b = inB[i] / 255; + + outR[i] = lowRed + (r * dR); + outG[i] = lowGreen + (g * dG); + outB[i] = lowBlue + (b * dB); + outA[i] = inA[i]; + } + else { + outR[i] = inR[i]; + outG[i] = inG[i]; + outB[i] = inB[i]; + outA[i] = inA[i]; + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'colors-to-alpha': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, red, green, blue, opaqueAt, transparentAt, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 0; + if (null == green) green = 255; + if (null == blue) blue = 0; + if (null == opaqueAt) opaqueAt = 1; + if (null == transparentAt) transparentAt = 0; + + const maxDiff = Math.max(((red + green + blue) / 3), (((255 - red) + (255 - green) + (255 - blue)) / 3)), + transparent = transparentAt * maxDiff, + opaque = opaqueAt * maxDiff, + range = opaque - transparent; + + const getValue = function (r, g, b) { + + let diff = (Math.abs(red - r) + Math.abs(green - g) + Math.abs(blue - b)) / 3; + + if (diff < transparent) return 0; + if (diff > opaque) return 255; + return ((diff - transparent) / range) * 255; + }; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + outR[i] = inR[i]; + outG[i] = inG[i]; + outB[i] = inB[i]; + outA[i] = getValue(inR[i], inG[i], inB[i]); + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'compose': function (requirements) { + + let [input, output, mix] = getInputAndOutputChannels(requirements); + + let len = output.r.length; + + let {opacity, compose, offsetX, offsetY, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == compose) compose = ''; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; + + let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); + + const copyPixel = function (fromPos, toPos, channel) { + + outR[toPos] = channel.r[fromPos]; + outG[toPos] = channel.g[fromPos]; + outB[toPos] = channel.b[fromPos]; + outA[toPos] = channel.a[fromPos]; + }; + + const getLinePositions = function (x, y) { + + let ix = x, + iy = y, + mx = x - offsetX, + my = y - offsetY; + + let mPos = -1, + iPos = (iy * iWidth) + ix; + + if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; + + return [iPos, mPos]; + }; + + switch (compose) { + + case 'source-only' : + copyOver(input, output); + break; + + case 'source-atop' : + const sAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * mAlpha) + (mAlpha * mColor * (1 - iAlpha)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = sAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = sAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * dmixA) + (dmixA * (1 - dinA))) * 255; + } + } + } + break; + + case 'source-in' : + const sInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sInCalc(inR[iPos], dinA, dmixA); + outG[iPos] = sInCalc(inG[iPos], dinA, dmixA); + outB[iPos] = sInCalc(inB[iPos], dinA, dmixA); + outA[iPos] = dinA * dmixA * 255; + } + } + } + break; + + case 'source-out' : + const sOutCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * (1 - mAlpha); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sOutCalc(inR[iPos], dinA, dmixA); + outG[iPos] = sOutCalc(inG[iPos], dinA, dmixA); + outB[iPos] = sOutCalc(inB[iPos], dinA, dmixA); + outA[iPos] = dinA * (1 - dmixA) * 255; + } + } + } + break; + + case 'destination-only' : + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) copyPixel(mPos, iPos, mix); + } + } + break; + + case 'destination-atop' : + const dAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * iAlpha); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = dAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = dAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * dinA)) * 255; + } + } + } + break; + + case 'destination-over' : + const dOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dOverCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = dOverCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = dOverCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * (1 - dmixA)) + dmixA) * 255; + } + } + } + break; + + case 'destination-in' : + const dInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha; + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dInCalc(mixR[mPos], dmixA, dinA); + outG[iPos] = dInCalc(mixG[mPos], dmixA, dinA); + outB[iPos] = dInCalc(mixB[mPos], dmixA, dinA); + outA[iPos] = dinA * dmixA * 255; + } + } + } + break; + + case 'destination-out' : + const dOutCalc = (mColor, iAlpha, mAlpha) => mAlpha * mColor * (1 - iAlpha); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = dOutCalc(mixR[mPos], dinA, dmixA); + outG[iPos] = dOutCalc(mixG[mPos], dinA, dmixA); + outB[iPos] = dOutCalc(mixB[mPos], dinA, dmixA); + outA[iPos] = dmixA * (1 - dinA) * 255; + } + } + } + break; + + case 'clear' : + break; + + case 'xor' : + const xorCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * (1 - iAlpha)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = xorCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = xorCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = xorCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * (1 - dinA))) * 255; + } + } + } + break; + + default: + const sOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor) + (mAlpha * mColor * (1 - iAlpha)); + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos < 0) copyPixel(iPos, iPos, input); + else { + + let dinA = inA[iPos] / 255, + dmixA = mixA[mPos] / 255; + + outR[iPos] = sOverCalc(inR[iPos], dinA, mixR[mPos], dmixA); + outG[iPos] = sOverCalc(inG[iPos], dinA, mixG[mPos], dmixA); + outB[iPos] = sOverCalc(inB[iPos], dinA, mixB[mPos], dmixA); + outA[iPos] = (dinA + (dmixA * (1 - dinA))) * 255; + } + } + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'displace': function (requirements) { + + let [input, output, mix] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, channelX, channelY, scaleX, scaleY, offsetX, offsetY, transparentEdges, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == channelX) channelX = 'red'; + if (null == channelY) channelY = 'green'; + if (null == scaleX) scaleX = 1; + if (null == scaleY) scaleY = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + if (null == transparentEdges) transparentEdges = false; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; + + if (channelX == 'red') channelX = mixR; + else if (channelX == 'green') channelX = mixG; + else if (channelX == 'blue') channelX = mixB; + else channelX = mixA; + + if (channelY == 'red') channelY = mixR; + else if (channelY == 'green') channelY = mixG; + else if (channelY == 'blue') channelY = mixB; + else channelY = mixA; + + let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); + + const copyPixel = function (fromPos, toPos, channel) { + + if (fromPos < 0) outA[toPos] = 0; + else { + + outR[toPos] = channel.r[fromPos]; + outG[toPos] = channel.g[fromPos]; + outB[toPos] = channel.b[fromPos]; + outA[toPos] = channel.a[fromPos]; + } + }; + + const getLinePositions = function (x, y) { + + let ix = x, + iy = y, + mx = x + offsetX, + my = y + offsetY; + + let mPos = -1, + iPos = (iy * iWidth) + ix; + + if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; + + return [iPos, mPos]; + }; + + for (let y = 0; y < iHeight; y++) { + for (let x = 0; x < iWidth; x++) { + + let [iPos, mPos] = getLinePositions(x, y); + + if (mPos >= 0) { + + let dx = Math.floor(x + ((127 - channelX[mPos]) / 127) * scaleX); + let dy = Math.floor(y + ((127 - channelY[mPos]) / 127) * scaleY); + let dPos; + + if (!transparentEdges) { + + if (dx < 0) dx = 0; + if (dx >= iWidth) dx = iWidth - 1; + if (dy < 0) dy = 0; + if (dy >= iHeight) dy = iHeight - 1; + + dPos = (dy * iWidth) + dx; + } + else { + + if (dx < 0 || dx >= iWidth || dy < 0 || dy >= iHeight) dPos = -1; + else dPos = (dy * iWidth) + dx; + } + + copyPixel(dPos, iPos, input); + } + else copyPixel(iPos, iPos, input); + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, - if (alpha) { - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; + 'emboss': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, strength, angle, tolerance, keepOnlyChangedAreas, postProcessResults, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == strength) strength = 1; + if (null == angle) angle = 0; + if (null == tolerance) tolerance = 0; + if (null == keepOnlyChangedAreas) keepOnlyChangedAreas = false; + if (null == postProcessResults) postProcessResults = false; + + strength = Math.abs(strength); + + while (angle < 0) { + angle += 360; + } + + angle = angle % 360; + + let slices = Math.floor(angle / 45), + remains = ((angle % 45) / 45) * strength, + weights = new Array(9); + + weights = weights.fill(0, 0, 9); + weights[4] = 1; + + if (slices == 0) { + weights[5] = strength - remains; + weights[8] = remains; + weights[3] = -weights[5]; + weights[0] = -weights[8]; + } + else if (slices == 1) { + weights[8] = strength - remains; + weights[7] = remains; + weights[0] = -weights[8]; + weights[1] = -weights[7]; + } + else if (slices == 2) { + weights[7] = strength - remains; + weights[6] = remains; + weights[1] = -weights[7]; + weights[2] = -weights[6]; + } + else if (slices == 3) { + weights[6] = strength - remains; + weights[3] = remains; + weights[2] = -weights[6]; + weights[5] = -weights[3]; + } + else if (slices == 4) { + weights[3] = strength - remains; + weights[0] = remains; + weights[5] = -weights[3]; + weights[8] = -weights[0]; + } + else if (slices == 5) { + weights[0] = strength - remains; + weights[1] = remains; + weights[8] = -weights[0]; + weights[7] = -weights[1]; + } + else if (slices == 6) { + weights[1] = strength - remains; + weights[2] = remains; + weights[7] = -weights[1]; + weights[6] = -weights[2]; + } + else { + weights[2] = strength - remains; + weights[5] = remains; + weights[6] = -weights[2]; + weights[3] = -weights[5]; + } + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + grid = buildMatrixGrid(3, 3, 1, 1, inA); + + const doCalculations = function (inChannel, matrix) { + + let val = 0; + + for (let m = 0, mz = matrix.length; m < mz; m++) { + + if (weights[m]) val += (inChannel[matrix[m]] * weights[m]); + } + return val; + } + + for (let i = 0; i < len; i++) { + + if (inA[i]) { + + outR[i] = doCalculations(inR, grid[i]); + outG[i] = doCalculations(inG, grid[i]); + outB[i] = doCalculations(inB, grid[i]); + outA[i] = inA[i]; + + if (postProcessResults) { + + if (outR[i] >= inR[i] - tolerance && outR[i] <= inR[i] + tolerance && + outG[i] >= inG[i] - tolerance && outG[i] <= inG[i] + tolerance && + outB[i] >= inB[i] - tolerance && outB[i] <= inB[i] + tolerance) { + + if (keepOnlyChangedAreas) outA[i] = 0; + else { + outR[i] = 127; + outG[i] = 127; + outB[i] = 127; + } + } + } + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'flood': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length, + floor = Math.floor; + + let {opacity, red, green, blue, alpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 0; + if (null == green) green = 0; + if (null == blue) blue = 0; + if (null == alpha) alpha = 255; + + const {r:outR, g:outG, b:outB, a:outA} = output; + + outR.fill(red, 0, len - 1); + outG.fill(green, 0, len - 1); + outB.fill(blue, 0, len - 1); + outA.fill(alpha, 0, len - 1); + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'grayscale': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, lineOut} = requirements; + + if (null == opacity) opacity = 1; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); + + outR[i] = gray; + outG[i] = gray; + outB[i] = gray; + outA[i] = inA[i]; + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'invert-channels': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + outR[i] = (includeRed) ? 255 - inR[i] : inR[i]; + outG[i] = (includeGreen) ? 255 - inG[i] : inG[i]; + outB[i] = (includeBlue) ? 255 - inB[i] : inB[i]; + outA[i] = (includeAlpha) ? 255 - inA[i] : inA[i]; + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'lock-channels-to-levels': function (requirements) { + + checkChannelLevelsParameters(requirements) + + const getValue = function (val, levels) { + + if (!levels.length) return val; + + for (let i = 0, iz = levels.length; i < iz; i++) { + + let [start, end, level] = levels[i]; + if (val >= start && val <= end) return level; + } + }; + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, red, green, blue, alpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = [0]; + if (null == green) green = [0]; + if (null == blue) blue = [0]; + if (null == alpha) alpha = [255]; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + outR[i] = getValue(inR[i], red); + outG[i] = getValue(inG[i], green); + outB[i] = getValue(inB[i], blue); + outA[i] = getValue(inA[i], alpha); + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'matrix': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, width, height, offsetX, offsetY, weights, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + if (null == width || width < 1) width = 3; + if (null == height || height < 1) height = 3; + if (null == offsetX) offsetX = 1; + if (null == offsetY) offsetY = 1; + if (null == weights) { + weights = [].fill(0, 0, (width * height) - 1); + weights[Math.floor(weights.length / 2) + 1] = 1; + } + + grid = buildMatrixGrid(width, height, offsetX, offsetY, input.a); + + const doCalculations = function (inChannel, matrix) { + + let val = 0; + + for (let m = 0, mz = matrix.length; m < mz; m++) { + + if (weights[m]) val += (inChannel[matrix[m]] * weights[m]); + } + return val; + } + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + if (inA[i]) { + + if (includeRed) outR[i] = doCalculations(inR, grid[i]); + else outR[i] = inR[i]; + + if (includeGreen) outG[i] = doCalculations(inG, grid[i]); + else outG[i] = inG[i]; + + if (includeBlue) outB[i] = doCalculations(inB, grid[i]); + else outB[i] = inB[i]; + + if (includeAlpha) outA[i] = doCalculations(inA, grid[i]); + else outA[i] = inA[i]; + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'modulate-channels': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, red, green, blue, alpha, saturation, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 1; + if (null == green) green = 1; + if (null == blue) blue = 1; + if (null == alpha) alpha = 1; + if (null == saturation) saturation = false; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + if (saturation) { + + for (let i = 0; i < len; i++) { + outR[i] = 127 + ((inR[i] - 127) * red); + outG[i] = 127 + ((inG[i] - 127) * green); + outB[i] = 127 + ((inB[i] - 127) * blue); + outA[i] = 127 + ((inA[i] - 127) * alpha); + } + } + else { + + for (let i = 0; i < len; i++) { + outR[i] = inR[i] * red; + outG[i] = inG[i] * green; + outB[i] = inB[i] * blue; + outA[i] = inA[i] * alpha; + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'offset': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let {opacity, offsetRedX, offsetRedY, offsetGreenX, offsetGreenY, offsetBlueX, offsetBlueY, offsetAlphaX, offsetAlphaY, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == offsetRedX) offsetRedX = 0; + if (null == offsetRedY) offsetRedY = 0; + if (null == offsetGreenX) offsetGreenX = 0; + if (null == offsetGreenY) offsetGreenY = 0; + if (null == offsetBlueX) offsetBlueX = 0; + if (null == offsetBlueY) offsetBlueY = 0; + if (null == offsetAlphaX) offsetAlphaX = 0; + if (null == offsetAlphaY) offsetAlphaY = 0; + + let simpleoffset = false; + + if (offsetRedX == offsetGreenX && offsetRedX == offsetBlueX && offsetRedX == offsetAlphaX && offsetRedY == offsetGreenY && offsetRedY == offsetBlueY && offsetRedY == offsetAlphaY) simpleoffset = true; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + let grid = buildImageGrid(), + gWidth = grid[0].length, + gHeight = grid.length, + drx, dry, dgx, dgy, dbx, dby, dax, day, inCell, outCell; + + for (let y = 0; y < gHeight; y++) { + for (let x = 0; x < gWidth; x++) { + + inCell = grid[y][x]; + + if (inA[inCell]) { + + if (simpleoffset) { + + drx = x + offsetRedX; + dry = y + offsetRedY; + + if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) { + + outCell = grid[dry][drx]; + outR[outCell] = inR[inCell]; + outG[outCell] = inG[inCell]; + outB[outCell] = inB[inCell]; + outA[outCell] = inA[inCell]; + } + } + else { + + drx = x + offsetRedX; + dry = y + offsetRedY; + dgx = x + offsetGreenX; + dgy = y + offsetGreenY; + dbx = x + offsetBlueX; + dby = y + offsetBlueY; + dax = x + offsetAlphaX; + day = y + offsetAlphaY; + + if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) { + + outCell = grid[dry][drx]; + outR[outCell] = inR[inCell]; + } + + if (dgx >= 0 && dgx < gWidth && dgy >= 0 && dgy < gHeight) { + + outCell = grid[dgy][dgx]; + outG[outCell] = inG[inCell]; + } + + if (dbx >= 0 && dbx < gWidth && dby >= 0 && dby < gHeight) { + + outCell = grid[dby][dbx]; + outB[outCell] = inB[inCell]; + } + + if (dax >= 0 && dax < gWidth && day >= 0 && day < gHeight) { + + outCell = grid[day][dax]; + outA[outCell] = inA[inCell]; + } + } + } + } + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'pixelate': function (requirements) { + + const doCalculations = function (inChannel, outChannel, tile) { + + let avg = tile.reduce((a, v) => a + inChannel[v], 0); + + avg = Math.floor(avg / tile.length); + + for (let i = 0, iz = tile.length; i < iz; i++) { + + outChannel[tile[i]] = avg; + } + } + + const setOutValueToInValue = function (inChannel, outChannel, tile) { + + let cell; + + for (let i = 0, iz = tile.length; i < iz; i++) { + + cell = tile[i]; + outChannel[cell] = inChannel[cell]; + } + }; + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, tileWidth, tileHeight, offsetX, offsetY, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = true; + if (null == includeGreen) includeGreen = true; + if (null == includeBlue) includeBlue = true; + if (null == includeAlpha) includeAlpha = false; + if (null == tileWidth) tileWidth = 1; + if (null == tileHeight) tileHeight = 1; + if (null == offsetX) offsetX = 0; + if (null == offsetY) offsetY = 0; + + const tiles = buildImageTileSets(tileWidth, tileHeight, offsetX, offsetY); + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + tiles.forEach(t => { + if (includeRed) doCalculations(inR, outR, t); + else setOutValueToInValue(inR, outR, t); + + if (includeGreen) doCalculations(inG, outG, t); + else setOutValueToInValue(inG, outG, t); + + if (includeBlue) doCalculations(inB, outB, t); + else setOutValueToInValue(inB, outB, t); + + if (includeAlpha) doCalculations(inA, outA, t); + else setOutValueToInValue(inA, outA, t); + }) + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'process-image': function (requirements) { + + const {assetData, lineOut} = requirements; + + if (lineOut && lineOut.substring && lineOut.length && assetData && assetData.width && assetData.height && assetData.data) { + + let d = assetData.data; + let len = d.length; + + let res = createResultObject(len / 4); + + let r = res.r, + g = res.g, + b = res.b, + a = res.a; + + let counter = 0; + + for (let i = 0; i < len; i += 4) { + + r[counter] = d[i]; + g[counter] = d[i + 1]; + b[counter] = d[i + 2]; + a[counter] = d[i + 3]; + + counter++; + } + assetData.channels = res; + + cache[lineOut] = assetData; + } + }, + + 'set-channel-to-level': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, level, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == includeRed) includeRed = false; + if (null == includeGreen) includeGreen = false; + if (null == includeBlue) includeBlue = false; + if (null == includeAlpha) includeAlpha = false; + if (null == level) level = 0; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + outR[i] = (includeRed) ? level : inR[i]; + outG[i] = (includeGreen) ? level : inG[i]; + outB[i] = (includeBlue) ? level : inB[i]; + outA[i] = (includeAlpha) ? level : inA[i]; + } + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'step-channels': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length, + floor = Math.floor; + + let {opacity, red, green, blue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = 1; + if (null == green) green = 1; + if (null == blue) blue = 1; + + if (red == null) red = 1; + if (green == null) green = 1; + if (blue == null) blue = 1; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + outR[i] = floor(inR[i] / red) * red; + outG[i] = floor(inG[i] / green) * green; + outB[i] = floor(inB[i] / blue) * blue; + outA[i] = inA[i]; + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'threshold': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, low, high, level, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == low) low = [0,0,0]; + if (null == high) high = [255,255,255]; + if (null == level) level = 128; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + let [lowR, lowG, lowB] = low; + let [highR, highG, highB] = high; + + for (let i = 0; i < len; i++) { + + let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); + + if (gray < level) { + + outR[i] = lowR; + outG[i] = lowG; + outB[i] = lowB; + } + else { + + outR[i] = highR; + outG[i] = highG; + outB[i] = highB; } + outA[i] = inA[i]; + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'tint-channels': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, redInRed, redInGreen, redInBlue, greenInRed, greenInGreen, greenInBlue, blueInRed, blueInGreen, blueInBlue, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == redInRed) redInRed = 1; + if (null == redInGreen) redInGreen = 0; + if (null == redInBlue) redInBlue = 0; + if (null == greenInRed) greenInRed = 0; + if (null == greenInGreen) greenInGreen = 1; + if (null == greenInBlue) greenInBlue = 0; + if (null == blueInRed) blueInRed = 0; + if (null == blueInGreen) blueInGreen = 0; + if (null == blueInBlue) blueInBlue = 1; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + + let r = inR[i], + g = inG[i], + b = inB[i]; + + outR[i] = Math.floor((r * redInRed) + (g * greenInRed) + (b * blueInRed)); + outG[i] = Math.floor((r * redInGreen) + (g * greenInGreen) + (b * blueInGreen)); + outB[i] = Math.floor((r * redInBlue) + (g * greenInBlue) + (b * blueInBlue)); + outA[i] = inA[i]; } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + }, + + 'user-defined-legacy': function (requirements) { + + let [input, output] = getInputAndOutputChannels(requirements); + + let {opacity, lineOut} = requirements; + + if (null == opacity) opacity = 1; + + copyOver(input, output); + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); }, }; diff --git a/source/worker/filter_canvas.js b/source/worker/filter_canvas.js deleted file mode 100644 index ae29ae752..000000000 --- a/source/worker/filter_canvas.js +++ /dev/null @@ -1,1123 +0,0 @@ -// # Filter worker -// A long-running web worker which, when not in use, gets stored in the filter pool defined in the [filter factory](../factory/filter.html) -// -// TODO: at the moment the code in this file replicates exactly the code in the worker/filter.js file. However at some point we will be writing filters that can make use of offscreen canvases ... in this file! - - -// #### Imports -// None used - - -// #### Polyfills -// TypedArray.slice() [polyfill](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice) - for blur filter -if (!Uint8Array.prototype.slice) { - Object.defineProperty(Uint8Array.prototype, 'slice', { - value: function (begin, end) { - return new Uint8Array(Array.prototype.slice.call(this, begin, end)); - } - }); -} - - -// #### Worker-wide variables -// The following variables are defined here so that all filter functions - including user-defined filters - can make use of them: - -// __packet__ - the `e.data` object sent to the web worker from the main code -let packet; - -// __image__ - the `ImageData` object -let image; - -// __iWidth__ - convenience variable - `image.width * 4` (to cope with moving through the data array by pixel) -let iWidth; - -// __data__ - the `Uint8ClampedArray` data component of the ImageData object -let data; - -// __cache__ - an Array of all the starting (ie: red channel) indexes for pixels whose alpha channel is > 0 (and thus not transparent) - speeds up things for pixel-by-pixel filters that don't need to process transparent pixels. Generated by running the web worker's `getCache` function -let cache; - -// __tiles__ - the output from running the web worker's `getTiles` function. This effectively divides the image data into a grid of blocks which can be further processed by a filter -let tiles; - -// __localX__, __localY__, __localWidth__, __localHeight__ - the start coordinates and dimensions of the box enclosing all the non-transparent pixels in the supplied image data array. Used mainly by the blur filter - but any filter (including user-defined filters) that needs to include transparent pixel values in its calculations, but would waste time processing non-visible areas of the image, can make use of these variables -let localX; -let localY; -let localWidth; -let localHeight; - -// __filters__ - the filter objects Array sent to the web worker from the main code -let filters; - -// __filter__ - the current filter object being processed by the web worker - holds all the settings required for that filter function, for example `filter.level` for the brightness, saturation and threshold filter functions -let filter; - -// __action__ - internal processing variable -let action; - - -// #### Messaging and error handling -onmessage = function (e) { - - let i, iz; - - packet = e.data; - image = packet.image; - iWidth = image.width * 4; - data = image.data; - filters = packet.filters; - - getCache(); - getLocal(); - - for (i = 0, iz = filters.length; i < iz; i++) { - - filter = filters[i]; - - if (filter.method === 'userDefined' && filter.userDefined) actions.userDefined = new Function(filter.userDefined); - - action = actions[filter.method]; - - if (action) action(); - } - - postMessage(packet); -}; - -onerror = function (e) { - - console.log('error' + e.message); - postMessage(packet); -}; - -// __getCache__ - function that fills the `cache` worker variable with the starting index position of each non-transparent pixel in the current image's Uint8ClampedArray Array -const getCache = function () { - - let i, iz; - - if (Array.isArray(cache)) cache.length = 0; - else cache = []; - - for (i = 0, iz = data.length; i < iz; i += 4) { - - if (data[i + 3]) cache.push(i); - } -}; - -// __getLocal__ - function that populates the `localX`, `localY`, `localWidth`, `localHeight` worker variables with relevant values for the current image data -const getLocal = function () { - - let i, iz, w, h, minX, minY, maxX, maxY, x, y, val, - floor = Math.floor; - - w = image.width; - h = image.height; - minX = w; - minY = h; - maxX = 0; - maxY = 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - val = cache[i] / 4; - y = floor(val / w); - x = val % w; - minX = (x < minX) ? x : minX; - minY = (y < minY) ? y : minY; - maxX = (x > maxX) ? x : maxX; - maxY = (y > maxY) ? y : maxY; - } - - localX = minX; - localY = minY; - localWidth = maxX - minX; - localHeight = maxY - minY; -}; - -// __getTiles__ - function that populates the `tiles` worker Array with relevant values for the current image data -const getTiles = function () { - - let i, iz, j, jz, x, xz, y, yz, startX, startY, pos, - hold = [], - tileWidth = filter.tileWidth || 1, - tileHeight = filter.tileHeight || 1, - offsetX = filter.offsetX, - offsetY = filter.offsetY, - w = image.width, - h = image.height; - - if (Array.isArray(tiles)) tiles.length = 0; - else tiles = []; - - offsetX = (offsetX >= tileWidth) ? tileWidth - 1 : offsetX; - offsetY = (offsetY >= tileHeight) ? tileHeight - 1 : offsetY; - - startX = (offsetX) ? offsetX - tileWidth : 0; - startY = (offsetY) ? offsetY - tileHeight : 0; - - for (j = startY, jz = h + tileHeight; j < jz; j += tileHeight) { - - for (i = startX, iz = w + tileWidth; i < iz; i += tileWidth) { - - hold.length = 0; - - for (y = j, yz = j + tileHeight; y < yz; y++) { - - if (y >= 0 && y < h) { - - for (x = i, xz = i + tileWidth; x < xz; x++) { - - if (x >= 0 && x < w) { - - pos = (y * iWidth) + (x * 4); - - if (data[pos + 3]) hold.push(pos); - } - } - } - } - if (hold.length) tiles.push([].concat(hold)); - } - } -}; - - -// __average__ - Returns the average of values in an array -const average = function (c) { - - let a = 0, - k, kz, - l = c.length; - - if (l) { - - for (k = 0, kz = l; k < kz; k++) { - - a +=c[k]; - } - return a / l; - } - return 0; -}; - - -// __checkBounds__ - Checks that a position cursor is within the bounds of the data array -const checkBounds = function (p) { - - let len = data.length; - - if (p < 0) p += len; - if (p >= len) p -= len; - return p; -}; - - -// All the pre-defined filter functions are held as attributes to the __actions object__ -const actions = { - - -// __userDefined__ - requires a String function in the `filter.userDefined` attribute, which will be generated into a working function by the web worker - such filters can make use of any other filter attributes (for example: `filter.level`) alongside the dedicated userDefined attributes `filter.udVariable0 - filter.udVariable9` - userDefined: function () {}, - - -// __grayscale__ - desaturates the image - grayscale: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]); - data[pos] = data[pos + 1] = data[pos + 2] = gray; - } - }, - - -// __sepia__ - desaturates the image, then 'antiques' it by adding back some yellow tone - sepia: function () { - - let i, iz, pos, r, g, b; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - r = data[pos]; - g = data[pos + 1]; - b = data[pos + 2]; - - data[pos] = (r * 0.393) + (g * 0.769) + (b * 0.189); - data[pos + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168); - data[pos + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131); - } - }, - - -// __invert__ - turns white into black, and similar across the spectrum - invert: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 255 - data[pos]; - - pos++; - data[pos] = 255 - data[pos]; - - pos++; - data[pos] = 255 - data[pos]; - } - }, - - -// __red__ - suppresses the image's green and blue channels - red: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos + 1] = 0; - data[pos + 2] = 0; - } - }, - - -// __green__ - suppresses the image's red and blue channels - green: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 0; - data[pos + 2] = 0; - } - }, - - -// __blue__ - suppresses the image's red and green channels - blue: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 0; - data[pos + 1] = 0; - } - }, - - -// __notred__ - suppresses the image's red channel - notred: function() { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 0; - } - }, - - -// __notgreen__ - suppresses the image's green channel - notgreen: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos + 1] = 0; - } - }, - - -// __notblue__ - suppresses the image's blue channel - notblue: function () { - - let i, iz, pos; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos + 2] = 0; - } - }, - - -// __cyan__ - averages the image's blue and green channels, and suppresses the red channel - cyan: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (data[pos + 1] + data[pos + 2]) / 2; - - data[pos] = 0; - data[pos + 1] = gray; - data[pos + 2] = gray; - } - }, - - -// __magenta__ - averages the image's red and blue channels, and suppresses the green channel - magenta: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (data[pos] + data[pos + 2]) / 2; - - data[pos] = gray; - data[pos + 1] = 0; - data[pos + 2] = gray; - } - }, - - -// __yellow__ - averages the image's red and green channels, and suppresses the blue channel - yellow: function () { - - let i, iz, pos, gray; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (data[pos] + data[pos + 1]) / 2; - - data[pos] = gray; - data[pos + 1] = gray; - data[pos + 2] = 0; - } - }, - - -// __brightness__ - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute - brightness: function () { - - let i, iz, pos, - level = filter.level || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] *= level; - - pos++; - data[pos] *= level; - - pos++; - data[pos] *= level; - } - }, - - -// __saturation__ - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute, then normalizes the result - saturation: function () { - - let i, iz, pos, - level = filter.level || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = 127 + ((data[pos] - 127) * level); - - pos++; - data[pos] = 127 + ((data[pos] - 127) * level); - - pos++; - data[pos] = 127 + ((data[pos] - 127) * level); - } - }, - - -// __threshold__ - desaturates each pixel then tests it against filter.level value; those pixels below the level are set to the filter.lowRGB values while the rest are set to the filter.highRGB values - threshold: function () { - - let i, iz, pos, gray, test, - level = filter.level || 0, - lowRed = filter.lowRed, - lowGreen = filter.lowGreen, - lowBlue = filter.lowBlue, - highRed = filter.highRed, - highGreen = filter.highGreen, - highBlue = filter.highBlue; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]); - test = (gray > level) ? true : false; - - if (test) { - - data[pos] = highRed; - data[pos + 1] = highGreen; - data[pos + 2] = highBlue; - } - else { - - data[pos] = lowRed; - data[pos + 1] = lowGreen; - data[pos + 2] = lowBlue; - } - - } - }, - - -// __channels__ - multiply each pixel's channel values by the values set in the filter.RGB attributes - channels: function () { - - let i, iz, pos, - red = filter.red || 0, - green = filter.green || 0, - blue = filter.blue || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - data[pos] *= red; - data[pos + 1] *= green; - data[pos + 2] *= blue; - } - }, - - -// __channelstep__ - divide, floor, and then multiply each pixel's channel values by the values set in the filter.RGB attributes - channelstep: function () { - - let i, iz, pos, - red = filter.red || 1, - green = filter.green || 1, - blue = filter.blue || 1, - floor = Math.floor; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - data[pos] = floor(data[pos] / red) * red; - - pos++; - data[pos] = floor(data[pos] / green) * green; - - pos++; - data[pos] = floor(data[pos] / blue) * blue; - } - }, - - -// __tint__ - a more fine-grained form of the channels filter - tint: function () { - - let i, iz, pos, r, g, b, - redInRed = filter.redInRed || 0, - redInGreen = filter.redInGreen || 0, - redInBlue = filter.redInBlue || 0, - greenInRed = filter.greenInRed || 0, - greenInGreen = filter.greenInGreen || 0, - greenInBlue = filter.greenInBlue || 0, - blueInRed = filter.blueInRed || 0, - blueInGreen = filter.blueInGreen || 0, - blueInBlue = filter.blueInBlue || 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - pos = cache[i]; - - r = data[pos]; - g = data[pos + 1]; - b = data[pos + 2]; - - data[pos] = (r * redInRed) + (g * greenInRed) + (b * blueInRed); - data[pos + 1] = (r * redInGreen) + (g * greenInGreen) + (b * blueInGreen); - data[pos + 2] = (r * redInBlue) + (g * greenInBlue) + (b * blueInBlue); - } - }, - - -// __chroma__ - will evaluate each pixel against a range array; pixels that fall within the range are set to transparent - -// The __ranges__ attribute needs to be an array of arrays with the following format: - -// [[minRed, minGreen, minBlue, maxRed, maxGreen, maxBlue], etc] - -// ... multiple ranges can be defined - for instance to key out the lightest and darkest hues: - -// ranges: [[0, 0, 0, 80, 80, 80], [180, 180, 180, 255, 255, 255]] - chroma: function () { - - let pos, posA, - ranges = filter.ranges, - range, min, max, val, - i, iz, j, jz, flag; - - for (j = 0, jz = cache.length; j < jz; j++) { - - flag = false; - - for (i = 0, iz = ranges.length; i < iz; i++) { - - posA = cache[j] + 3; - range = ranges[i]; - min = range[2]; - pos = posA - 1; - val = data[pos]; - - if (val >= min) { - - max = range[5]; - - if (val <= max) { - - min = range[1]; - pos--; - val = data[pos]; - - if (val >= min) { - - max = range[4]; - - if (val <= max) { - - min = range[0]; - pos--; - val = data[pos]; - - if (val >= min) { - - max = range[3]; - - if (val <= max) { - flag = true; - break; - } - } - } - } - } - } - } - if (flag) data[posA] = 0; - } - }, - - -// __pixelate__ - create tiles - whose dimensions and positions are determined by values set in the filter tileWidth, tileHeight, offsetX and offsetY attributes - across the image and then average the pixels in each tile to a single color - pixelate: function () { - - let i, iz, j, jz, pos, r, g, b, a, tile, len; - - getTiles(); - - for (i = 0, iz = tiles.length; i < iz; i++) { - - tile = tiles[i]; - r = g = b = a = 0; - len = tile.length; - - if (len) { - - for (j = 0, jz = len; j < jz; j++) { - - pos = tile[j]; - - r += data[pos]; - g += data[pos + 1]; - b += data[pos + 2]; - a += data[pos + 3]; - } - - r /= len; - g /= len; - b /= len; - a /= len; - - for (j = 0, jz = len; j < jz; j++) { - - pos = tile[j]; - - data[pos] = r; - data[pos + 1] = g; - data[pos + 2] = b; - data[pos + 3] = a; - } - } - } - }, - - -// __blur__ - creates a blurred image. Note: can be slow across larger images! The degree of the blur - which does not follow conventional algorithms such as gaussian - is determined by the filter attribute values for radius (number), passes (number) and shrink (boolean) - blur: function () { - - if (data.slice) { - - let radius = filter.radius || 1, - alpha = filter.includeAlpha || false, - shrink = filter.shrinkingRadius || false, - passes = filter.passes || 1, - vertical = filter.processVertical, - horizontal = filter.processHorizontal, - len = data.length, - imageWidth = image.width, - imageHeight = image.height, - tempDataTo, tempDataFrom, - i, iz, index; - - let processPass = function () { - - let j, jz; - - if (vertical) { - - tempDataFrom = tempDataTo.slice(); - - for (j = localX * 4, jz = (localX + localWidth) * 4; j < jz; j++) { - - if (alpha) processColumn(j); - else { - - if (j % 4 !== 3) processColumn(j); - } - } - } - - if (horizontal) { - - tempDataFrom = tempDataTo.slice(); - - for (j = localY, jz = localY + localHeight; j < jz; j++) { - - if (alpha) processRowWithAlpha(j); - else processRowNoAlpha(j); - } - } - }; - - let processColumn = function (col) { - - let pos, avg, val, cagePointer, y, yz, q, dataPointer, - vLead = radius * iWidth, - cage = [], - cageLen; - - for (y = -radius, yz = radius; y < yz; y++) { - - pos = col + (y * iWidth); - pos = checkBounds(pos, len); - cage.push(tempDataFrom[pos]); - } - - tempDataTo[col] = avg = average(cage); - - cageLen = cage.length; - - for (q = 0; q < cageLen; q++) { - - cage[q] /= cageLen; - } - - cagePointer = 0; - - for (y = 1; y < imageHeight; y++) { - - avg -= cage[cagePointer]; - - dataPointer = col + (y * iWidth); - pos = dataPointer + vLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; - - avg += val; - cage[cagePointer] = val; - tempDataTo[dataPointer] = avg; - - cagePointer++; - - if (cagePointer === cageLen) cagePointer = 0; - } - }; - - let processRowWithAlpha = function (row) { - - let pos, val, x, xz, q, avgQ, cageQ, rowPosX, - avg = [], - cage = [[], [], [], []], - rowPos = row * iWidth, - hLead = radius * 4, - dataPointer, cagePointer, cageLen; - - q = 0; - - for (x = -radius * 4, xz = radius * 4; x < xz; x++) { - - pos = rowPos + x; - pos = checkBounds(pos, len); - - cage[q].push(tempDataFrom[pos]); - - q++; - if (q === 4) q = 0; - } - - tempDataTo[rowPos] = avg[0] = average(cage[0]); - tempDataTo[rowPos + 1] = avg[1] = average(cage[1]); - tempDataTo[rowPos + 2] = avg[2] = average(cage[2]); - tempDataTo[rowPos + 3] = avg[3] = average(cage[3]); - - cageLen = cage[0].length; - - for (q = 0; q < 4; q++) { - - for (x = 0; x < cageLen; x++) { - - cage[q][x] /= cageLen; - } - } - cagePointer = 0; - - for (x = 1; x < imageWidth; x++) { - - rowPosX = rowPos + (x * 4); - - for (q = 0; q < 4; q++) { - - avgQ = avg[q]; - cageQ = cage[q]; - avgQ -= cageQ[cagePointer]; - - dataPointer = rowPosX + q; - pos = dataPointer + hLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; - - avgQ += val; - tempDataTo[dataPointer] = avgQ; - avg[q] = avgQ; - cageQ[cagePointer] = val; - } - - cagePointer++; - - if (cagePointer === cageLen) cagePointer = 0; - } - }; - - let processRowNoAlpha = function (row) { - - let pos, val, x, xz, q, avgQ, cageQ, rowPosX, - avg = [], - hLead = radius * 4, - cage = [[], [], []], - rowPos = row * iWidth, - dataPointer, cagePointer, cageLen; - - q = 0; - - for (x = -radius * 4, xz = radius * 4; x < xz; x++) { - - if (q < 3) { - - pos = rowPos + x; - pos = checkBounds(pos, len); - cage[q].push(tempDataFrom[pos]); - q++; - } - else q = 0; - } - - tempDataTo[rowPos] = avg[0] = average(cage[0]); - tempDataTo[rowPos + 1] = avg[1] = average(cage[1]); - tempDataTo[rowPos + 2] = avg[2] = average(cage[2]); - - cageLen = cage[0].length; - - for (q = 0; q < 3; q++) { - - cageQ = cage[q]; - - for (x = 0; x < cageLen; x++) { - - cageQ[x] /= cageLen; - } - } - cagePointer = 0; - - for (x = 1; x < imageWidth; x++) { - - rowPosX = rowPos + (x * 4); - - for (q = 0; q < 3; q++) { - - avgQ = avg[q]; - cageQ = cage[q]; - avgQ -= cageQ[cagePointer]; - - dataPointer = rowPosX + q; - pos = dataPointer + hLead; - pos = checkBounds(pos, len); - val = tempDataFrom[pos] / cageLen; - - avgQ += val; - tempDataTo[dataPointer] = avgQ; - avg[q] = avgQ; - cageQ[cagePointer] = val; - } - - cagePointer++; - if (cagePointer === cageLen) cagePointer = 0; - } - }; - - tempDataTo = data.slice(); - - for (i = 0; i < passes; i++) { - - processPass(); - - if (shrink) { - - radius = Math.ceil(radius * 0.3); - radius = (radius < 1) ? 1 : radius; - } - } - - for (i = 0, iz = cache.length; i < iz; i++) { - - index = cache[i]; - data[index] = tempDataTo[index]; - - index++; - data[index] = tempDataTo[index]; - - index++; - data[index] = tempDataTo[index]; - - if (alpha) { - - index++; - data[index] = tempDataTo[index]; - } - } - } - }, - - -// __matrix__ - apply a 3x3 matrix transform to each of the image's pixels - matrix: function () { - - let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos, - len = data.length, - alpha = filter.includeAlpha || false, - offset = [], - weights = filter.weights || [0, 0, 0, 0, 1, 0, 0, 0, 0], - tempCache = [], - cursor = 0; - - offset[0] = -iWidth - 4; - offset[1] = -iWidth; - offset[2] = -iWidth + 4; - offset[3] = -4; - offset[4] = 0; - offset[5] = 4; - offset[6] = iWidth - 4; - offset[7] = iWidth; - offset[8] = iWidth + 4; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - sumR = sumG = sumB = sumA = 0; - - for (j = 0, jz = offset.length; j < jz; j++) { - - pos = homePos + offset[j]; - - if (pos >= 0 && pos < len) { - - weight = weights[j]; - sumR += data[pos] * weight; - - pos++; - sumG += data[pos] * weight; - - pos++; - sumB += data[pos] * weight; - - if (alpha) { - - pos++; - sumA += data[pos] * weight; - } - } - } - - tempCache[cursor] = sumR; - cursor++; - - tempCache[cursor] = sumG; - cursor++; - - tempCache[cursor] = sumB; - cursor++; - - if (alpha) { - - tempCache[cursor] = sumA; - cursor++; - } - } - - cursor = 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - if (alpha) { - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - } - } - }, - - -// __matrix5__ - apply a 5x5 matrix transform to each of the image's pixels - - matrix5: function () { - - let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos, - len = data.length, - alpha = filter.includeAlpha || false, - offset = [], - weights = filter.weights || [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - tempCache = [], - iWidth2 = iWidth * 2, - cursor = 0; - - offset[0] = -iWidth2 - 8; - offset[1] = -iWidth2 - 4; - offset[2] = -iWidth2; - offset[3] = -iWidth2 + 4; - offset[4] = -iWidth2 + 8; - offset[5] = -iWidth - 8; - offset[6] = -iWidth - 4; - offset[7] = -iWidth; - offset[8] = -iWidth + 4; - offset[9] = -iWidth + 8; - offset[10] = -8; - offset[11] = -4; - offset[12] = 0; - offset[13] = 4; - offset[14] = 8; - offset[15] = iWidth - 8; - offset[16] = iWidth - 4; - offset[17] = iWidth; - offset[18] = iWidth + 4; - offset[19] = iWidth + 8; - offset[20] = iWidth2 - 8; - offset[21] = iWidth2 - 4; - offset[22] = iWidth2; - offset[23] = iWidth2 + 4; - offset[24] = iWidth2 + 8; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - sumR = sumG = sumB = sumA = 0; - - for (j = 0, jz = offset.length; j < jz; j++) { - - pos = homePos + offset[j]; - - if (pos >= 0 && pos < len) { - - weight = weights[j]; - sumR += data[pos] * weight; - - pos++; - sumG += data[pos] * weight; - - pos++; - sumB += data[pos] * weight; - - if (alpha) { - - pos++; - sumA += data[pos] * weight; - } - } - } - - tempCache[cursor] = sumR; - cursor++; - - tempCache[cursor] = sumG; - cursor++; - - tempCache[cursor] = sumB; - cursor++; - - if (alpha) { - - tempCache[cursor] = sumA; - cursor++; - } - } - - cursor = 0; - - for (i = 0, iz = cache.length; i < iz; i++) { - - homePos = cache[i]; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - - if (alpha) { - - homePos++; - data[homePos] = tempCache[cursor]; - cursor++; - } - } - }, -}; diff --git a/source/worker/new-filter.js b/source/worker/new-filter.js deleted file mode 100644 index d9cbd0842..000000000 --- a/source/worker/new-filter.js +++ /dev/null @@ -1,2668 +0,0 @@ -// # Filter worker -// A long-running web worker which, when not in use, gets stored in the filter pool defined in the [filter factory](../factory/filter.html) -// -// TODO: documentation - - -// #### Demos: -// + TODO: list demos with links - - -// #### Imports -// None used - - -let packet, packetFiltersArray; - -let source, work, cache, actions; - -let workstore = {}, - workstoreLastAccessed = {}; - -const createResultObject = function (len) { - - return { - r: new Uint8ClampedArray(len), - g: new Uint8ClampedArray(len), - b: new Uint8ClampedArray(len), - a: new Uint8ClampedArray(len), - }; -}; - -const unknit = function (iData) { - - let imageData = iData.data; - - let len = Math.floor(imageData.length / 4); - - - source = createResultObject(len); - iData.channels = source; - - let sourceRed = source.r, - sourceGreen = source.g, - sourceBlue = source.b, - sourceAlpha = source.a; - - work = createResultObject(len); - - let workRed = work.r, - workGreen = work.g, - workBlue = work.b, - workAlpha = work.a; - - let counter = 0; - - for (let i = 0, iz = imageData.length; i < iz; i += 4) { - - sourceRed[counter] = imageData[i]; - sourceGreen[counter] = imageData[i + 1]; - sourceBlue[counter] = imageData[i + 2]; - sourceAlpha[counter] = imageData[i + 3]; - - workRed[counter] = imageData[i]; - workGreen[counter] = imageData[i + 1]; - workBlue[counter] = imageData[i + 2]; - workAlpha[counter] = imageData[i + 3]; - - counter++; - } -}; - -const knit = function () { - - let imageData = packet.image.data; - - let workRed = work.r, - workGreen = work.g, - workBlue = work.b, - workAlpha = work.a; - - let counter = 0; - - for (let i = 0, iz = imageData.length; i < iz; i += 4) { - - imageData[i] = workRed[counter]; - imageData[i + 1] = workGreen[counter]; - imageData[i + 2] = workBlue[counter]; - imageData[i + 3] = workAlpha[counter]; - - counter++; - } -}; - - -// #### Messaging and error handling -onmessage = function (msg) { - - packet = msg.data; - packetFiltersArray = packet.filters; - - // If something in the workstore hasn't been accessed for more than 3 seconds, we probably don't need it anymore - let workstoreKeys = Object.keys(workstore), - workstoreChoke = Date.now() - 3000; - - workstoreKeys.forEach(k => { - - if (workstoreLastAccessed[k] < workstoreChoke) { - - delete workstore[k]; - delete workstoreLastAccessed[k]; - } - }); - - cache = {}; - actions = []; - - cache.source = packet.image; - - packetFiltersArray.forEach(f => actions.push(...f.actions)); - - if (actions.length) { - - unknit(cache.source); - actions.forEach(a => theBigActionsObject[a.action] && theBigActionsObject[a.action](a)); - knit(); - } - - postMessage(packet); -}; - -onerror = function (e) { - - console.log('error' + e.message); - postMessage(packet); -}; - -const buildImageGrid = function (data) { - - if (!data) data = cache.source; - - if (data && data.width && data.height) { - - let name = `grid-${data.width}-${data.height}`; - if (workstore[name]) { - workstoreLastAccessed[name] = Date.now(); - return workstore[name]; - } - - let grid = [], - counter = 0; - - for (let y = 0, yz = data.height; y < yz; y++) { - - let row = []; - - for (let x = 0, xz = data.width; x < xz; x++) { - - row.push(counter); - counter++; - } - grid.push(row); - } - workstore[name] = grid; - workstoreLastAccessed[name] = Date.now(); - return grid; - } - return false; -}; - -const buildAlphaTileSets = function (tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels, data) { - - if (!data) data = cache.source; - - if (data && data.width && data.height) { - - let iWidth = data.width, - iHeight = data.height; - - tileWidth = (tileWidth.toFixed && !isNaN(tileWidth)) ? tileWidth : 1; - tileHeight = (tileHeight.toFixed && !isNaN(tileHeight)) ? tileHeight : 1; - gutterWidth = (gutterWidth.toFixed && !isNaN(gutterWidth)) ? gutterWidth : 1; - gutterHeight = (gutterHeight.toFixed && !isNaN(gutterHeight)) ? gutterHeight : 1; - offsetX = (offsetX.toFixed && !isNaN(offsetX)) ? offsetX : 0; - offsetY = (offsetY.toFixed && !isNaN(offsetY)) ? offsetY : 0; - - if (tileWidth < 1) tileWidth = 1; - if (tileHeight < 1) tileHeight = 1; - if (tileWidth + gutterWidth >= iWidth) tileWidth = iWidth - gutterWidth - 1; - if (tileHeight + gutterHeight >= iHeight) tileHeight = iHeight - gutterHeight - 1; - - if (tileWidth < 1) tileWidth = 1; - if (tileHeight < 1) tileHeight = 1; - if (tileWidth + gutterWidth >= iWidth) gutterWidth = iWidth - tileWidth - 1; - if (tileHeight + gutterHeight >= iHeight) gutterHeight = iHeight - tileHeight - 1; - - let aWidth = tileWidth + gutterWidth, - aHeight = tileHeight + gutterHeight; - - if (offsetX < 0) offsetX = 0; - if (offsetX >= aWidth) offsetX = aWidth - 1; - if (offsetY < 0) offsetY = 0; - if (offsetY >= aHeight) offsetY = aHeight - 1; - - let name = `alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`; - if (workstore[name]) { - workstoreLastAccessed[name] = Date.now(); - return workstore[name]; - } - - let tiles = [], - hold, i, iz, j, jz, x, xz, y, yz; - - for (j = offsetY - aHeight, jz = iHeight; j < jz; j += aHeight) { - - for (i = offsetX - aWidth, iz = iWidth; i < iz; i += aWidth) { - - // from 0, 0: tileWidth x tileHeight - hold = []; - for (y = j, yz = j + tileHeight; y < yz; y++) { - if (y >= 0 && y < iHeight) { - for (let x = i, xz = i + tileWidth; x < xz; x++) { - if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); - } - } - } - tiles.push([].concat(hold)); - - // from tileWidth, 0: gutterWidth x tileHeight - hold = []; - for (y = j + tileHeight, yz = j + tileHeight + gutterHeight; y < yz; y++) { - if (y >= 0 && y < iHeight) { - for (let x = i, xz = i + tileWidth; x < xz; x++) { - if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); - } - } - } - tiles.push([].concat(hold)); - - // from 0, tileheight: tileWidth x gutterHeight - hold = []; - for (y = j, yz = j + tileHeight; y < yz; y++) { - if (y >= 0 && y < iHeight) { - for (let x = i + tileWidth, xz = i + tileWidth + gutterWidth; x < xz; x++) { - if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); - } - } - } - tiles.push([].concat(hold)); - - // from tileWidth, tileHeight: gutterWidth x gutterHeight - hold = []; - for (y = j + tileHeight, yz = j + tileHeight + gutterHeight; y < yz; y++) { - if (y >= 0 && y < iHeight) { - for (let x = i + tileWidth, xz = i + tileWidth + gutterWidth; x < xz; x++) { - if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); - } - } - } - tiles.push([].concat(hold)); - } - } - workstore[name] = tiles; - workstoreLastAccessed[name] = Date.now(); - return tiles; - } - return false; - -}; - -const buildImageTileSets = function (tileWidth, tileHeight, offsetX, offsetY, data) { - - if (!data) data = cache.source; - - if (data && data.width && data.height) { - - let iWidth = data.width, - iHeight = data.height; - - tileWidth = (tileWidth.toFixed && !isNaN(tileWidth)) ? tileWidth : 1; - tileHeight = (tileHeight.toFixed && !isNaN(tileHeight)) ? tileHeight : 1; - offsetX = (offsetX.toFixed && !isNaN(offsetX)) ? offsetX : 0; - offsetY = (offsetY.toFixed && !isNaN(offsetY)) ? offsetY : 0; - - if (tileWidth < 1) tileWidth = 1; - if (tileWidth >= iWidth) tileWidth = iWidth - 1; - if (tileHeight < 1) tileHeight = 1; - if (tileHeight >= iHeight) tileHeight = iHeight - 1; - if (offsetX < 0) offsetX = 0; - if (offsetX >= tileWidth) offsetX = tileWidth - 1; - if (offsetY < 0) offsetY = 0; - if (offsetY >= tileHeight) offsetY = tileHeight - 1; - - let name = `imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`; - if (workstore[name]) { - workstoreLastAccessed[name] = Date.now(); - return workstore[name]; - } - - let tiles = []; - - for (let j = offsetY - tileHeight, jz = iHeight; j < jz; j += tileHeight) { - - for (let i = offsetX - tileWidth, iz = iWidth; i < iz; i += tileWidth) { - - let hold = []; - - for (y = j, yz = j + tileHeight; y < yz; y++) { - - if (y >= 0 && y < iHeight) { - - for (let x = i, xz = i + tileWidth; x < xz; x++) { - - if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x); - } - } - } - if (hold.length) tiles.push(hold); - } - } - workstore[name] = tiles; - workstoreLastAccessed[name] = Date.now(); - return tiles; - } - return false; -}; - -const buildHorizontalBlur = function (grid, radius, alpha) { - - if (!radius || !radius.toFixed || isNaN(radius)) radius = 0; - - let gridHeight = grid.length, - gridWidth = grid[0].length; - - let name = `blur-h-${gridWidth}-${gridHeight}-${radius}`; - if (workstore[name]) { - workstoreLastAccessed[name] = Date.now(); - return workstore[name]; - } - - let horizontalBlur = [], - cell; - - for (let y = 0; y < gridHeight; y++) { - - for (let x = 0; x < gridWidth; x++) { - - let cellsToProcess = []; - - for (let c = x - radius, cz = x + radius + 1; c < cz; c++) { - - if (c >= 0 && c < gridWidth) cellsToProcess.push(grid[y][c]); - } - horizontalBlur[(y * gridHeight) + x] = cellsToProcess; - } - } - workstore[name] = horizontalBlur; - workstoreLastAccessed[name] = Date.now(); - return horizontalBlur; -}; - -const buildVerticalBlur = function (grid, radius, alpha) { - - if (!radius || !radius.toFixed || isNaN(radius)) radius = 0; - - let gridHeight = grid.length, - gridWidth = grid[0].length; - - let name = `blur-v-${gridWidth}-${gridHeight}-${radius}`; - if (workstore[name]) { - workstoreLastAccessed[name] = Date.now(); - return workstore[name]; - } - - let verticalBlur = [], - cell; - - for (let x = 0; x < gridWidth; x++) { - - for (let y = 0; y < gridHeight; y++) { - - let cellsToProcess = []; - - for (let c = y - radius, cz = y + radius + 1; c < cz; c++) { - - if (c >= 0 && c < gridHeight) cellsToProcess.push(grid[c][x]); - } - verticalBlur[(y * gridHeight) + x] = cellsToProcess; - } - } - workstore[name] = verticalBlur; - workstoreLastAccessed[name] = Date.now(); - return verticalBlur; -}; - -const buildMatrixGrid = function (mWidth, mHeight, mX, mY, alpha, data) { - - if (!data) data = cache.source; - - if (mWidth == null || mWidth < 1) mWidth = 1; - if (mHeight == null || mHeight < 1) mHeight = 1; - - if (mX == null || mX < 0) mX = 0; - else if (mX >= mWidth) mX = mWidth - 1; - - if (mY == null || mY < 0) mY = 0; - else if (mY >= mHeight) mY = mHeight - 1; - - let iWidth = data.width, - iHeight = data.height; - - let name = `matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`; - if (workstore[name]) { - workstoreLastAccessed[name] = Date.now(); - return workstore[name]; - } - - let dataLength = data.data.length, - x, xz, y, yz, i, iz, - cellsTemplate = [], - grid = []; - - for (y = -mY, yz = mHeight - mY; y < yz; y++) { - - for (x = -mX, xz = mWidth - mX; x < xz; x++) { - - cellsTemplate.push((y * iWidth) + x); - } - } - - for (y = 0; y < iHeight; y++) { - - for (x = 0; x < iWidth; x++) { - - let pos = (y * iWidth) + x; - let cell = []; - - // process template - for (i = 0, iz = cellsTemplate.length; i < iz; i++) { - - let val = pos + cellsTemplate[i]; - - if (val < 0) val += dataLength; - else if (val >= dataLength) val -= dataLength; - - cell.push(val); - } - grid.push(cell); - } - } - workstore[name] = grid; - workstoreLastAccessed[name] = Date.now(); - return grid; -}; - -const checkChannelLevelsParameters = function (f) { - - const doCheck = function (v, isHigh = false) { - - if (v.toFixed) { - if (v < 0) return [[0, 255, 0]]; - if (v > 255) return [[0, 255, 255]]; - if (isNaN(v)) return (isHigh) ? [[0, 255, 255]] : [[0, 255, 0]]; - return [[0, 255, v]]; - } - - if (v.substring) { - v = v.split(','); - } - - if (Array.isArray(v)) { - - if (!v.length) return v; - if (Array.isArray(v[0])) return v; - - v = v.map(s => parseInt(s, 10)); - v.sort((a, b) => a - b); - - if (v.length == 1) return [[0, 255, v[0]]]; - - let res = [], - starts, ends; - - for (let i = 0, iz = v.length; i < iz; i++) { - - starts = 0; - ends = 255; - if (i != 0) starts = Math.ceil(v[i - 1] + ((v[i] - v[i - 1]) / 2)); - if (i != iz - 1) ends = Math.floor(v[i] + ((v[i + 1] - v[i]) / 2)); - - res.push([starts, ends, v[i]]); - } - return res; - } - return (isHigh) ? [[0, 255, 255]] : [[0, 255, 0]]; - } - f.red = doCheck(f.red); - f.green = doCheck(f.green); - f.blue = doCheck(f.blue); - f.alpha = doCheck(f.alpha, true); -}; - -const cacheOutput = function (name, obj, caller) { - - cache[name] = obj; -}; - -const copyOver = function (f, t) { - - let {r:fromR, g:fromG, b:fromB, a:fromA } = f; - let {r:toR, g:toG, b:toB, a:toA } = t; - - for (let i = 0; i < fromR.length; i++) { - - toR[i] = fromR[i]; - toG[i] = fromG[i]; - toB[i] = fromB[i]; - toA[i] = fromA[i]; - } -}; - -const getInputAndOutputDimensions = function (requirements) { - - let data = cache.source, - results = []; - - if (requirements.lineIn && requirements.lineIn != 'source' && requirements.lineIn != 'source-alpha' && cache[requirements.lineIn]) { - - data = cache[requirements.lineIn]; - } - results.push(data.width, data.height); - - if (requirements.lineOut && cache[requirements.lineOut]) { - - data = cache[requirements.lineOut]; - } - results.push(data.width, data.height); - - data = cache.source; - - if (requirements.lineMix && requirements.lineMix != 'source' && requirements.lineMix != 'source-alpha' && cache[requirements.lineMix]) { - - data = cache[requirements.lineMix]; - } - results.push(data.width, data.height); - - return results; -}; - -const getInputAndOutputChannels = function (requirements) { - - let lineIn = work; - let len = lineIn.r.length; - let data = cache.source; - - if (requirements.lineIn) { - - if (requirements.lineIn == 'source') { - - // data = cache.source; - lineIn = data.channels; - } - - else if (requirements.lineIn == 'source-alpha') { - - // data = cache.source; - lineIn = createResultObject(len); - - let destAlpha = lineIn.a, - sourceAlpha = data.channels.a; - - for (let i = 0; i < len; i++) { - - destAlpha[i] = sourceAlpha[i]; - } - } - else if (cache[requirements.lineIn]) { - - data = cache[requirements.lineIn]; - lineIn = data.channels; - } - } - - let lineMix = false; - - if (requirements.lineMix) { - - if (requirements.lineMix == 'source') lineMix = cache.source.channels; - - else if (requirements.lineMix == 'source-alpha') { - - lineMix = createResultObject(len); - - let destAlpha = lineMix.a, - sourceAlpha = cache.source.channels.a; - - for (let i = 0; i < len; i++) { - - destAlpha[i] = sourceAlpha[i]; - } - } - else if (cache[requirements.lineMix]) lineMix = cache[requirements.lineMix].channels; - } - - let lineOut; - - if (requirements.lineOut) { - - if (cache[requirements.lineOut]) lineOut = cache[requirements.lineOut].channels; - else { - - lineOut = createResultObject(len); - cache[requirements.lineOut] = { - width: data.width, - height: data.height, - channels: lineOut, - }; - } - } - else lineOut = createResultObject(len); - - return [lineIn, lineOut, lineMix]; -}; - -const processResults = function (store, incoming, ratio) { - - let sR = store.r, - sG = store.g, - sB = store.b, - sA = store.a; - - let iR = incoming.r, - iG = incoming.g, - iB = incoming.b, - iA = incoming.a; - - if (ratio === 1) copyOver(incoming, store); - else if (ratio > 0) { - - antiRatio = 1 - ratio; - - for (let i = 0, iz = sR.length; i < iz; i++) { - - sR[i] = Math.floor((sR[i] * antiRatio) + (iR[i] * ratio)); - sG[i] = Math.floor((sG[i] * antiRatio) + (iG[i] * ratio)); - sB[i] = Math.floor((sB[i] * antiRatio) + (iB[i] * ratio)); - sA[i] = Math.floor((sA[i] * antiRatio) + (iA[i] * ratio)); - } - } -}; - -const getHSLfromRGB = function (dr, dg, db) { - - let minColor = Math.min(dr, dg, db), - maxColor = Math.max(dr, dg, db); - - let lum = (minColor + maxColor) / 2; - - let sat = 0; - - if (minColor !== maxColor) { - - if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); - else sat = (maxColor - minColor) / (2 - maxColor - minColor); - } - - let hue = 0; - - if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); - else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); - else hue = 4 + ((dr - dg) / (maxColor - minColor)); - - hue *= 60; - - if (hue < 0) hue += 360; - - return [hue, sat, lum]; -}; - -const getRGBfromHSL = function (h, s, l) { - - if (!s) { - - let gray = Math.floor(l * 255); - return [gray, gray, gray]; - } - - let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), - tempLum2 = (2 * l) - tempLum1; - - const calculator = function (t, l1, l2) { - - if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); - if (t * 2 < 1) return l1; - if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); - return l2; - }; - - h /= 360; - - let tr = h + 0.333, - tg = h, - tb = h - 0.333; - - if (tr < 0) tr += 1; - if (tr > 1) tr -= 1; - if (tg < 0) tg += 1; - if (tg > 1) tg -= 1; - if (tb < 0) tb += 1; - if (tb > 1) tb -= 1; - - let r = calculator(tr, tempLum1, tempLum2) * 255, - g = calculator(tg, tempLum1, tempLum2) * 255, - b = calculator(tb, tempLum1, tempLum2) * 255; - - return [r, g, b]; -}; - -const theBigActionsObject = { - - 'alpha-to-channels': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - if (null == excludeRed) excludeRed = true; - if (null == excludeGreen) excludeGreen = true; - if (null == excludeBlue) excludeBlue = true; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - outR[i] = (includeRed) ? inA[i] : ((excludeRed) ? 0 : inR[i]); - outG[i] = (includeGreen) ? inA[i] : ((excludeGreen) ? 0 : inG[i]); - outB[i] = (includeBlue) ? inA[i] : ((excludeBlue) ? 0 : inB[i]); - } - outA.fill(255, 0, outA.length - 1); - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'area-alpha': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, tileWidth, tileHeight, offsetX, offsetY, gutterWidth, gutterHeight, areaAlphaLevels, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == tileWidth) tileWidth = 1; - if (null == tileHeight) tileHeight = 1; - if (null == offsetX) offsetX = 0; - if (null == offsetY) offsetY = 0; - if (null == gutterWidth) gutterWidth = 1; - if (null == gutterHeight) gutterHeight = 1; - if (null == areaAlphaLevels) areaAlphaLevels = [255,0,0,0]; - - let tiles = buildAlphaTileSets(tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels); - - if (!Array.isArray(areaAlphaLevels)) areaAlphaLevels = [255,0,0,0]; - - // Do filter work - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - outR[i] = inR[i]; - outG[i] = inG[i]; - outB[i] = inB[i]; - } - tiles.forEach((t, index) => { - - for (let j = 0, jz = t.length; j < jz; j++) { - - if (inA[t[j]]) outA[t[j]] = areaAlphaLevels[index % 4]; - } - }); - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'average-channels': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - if (null == excludeRed) excludeRed = false; - if (null == excludeGreen) excludeGreen = false; - if (null == excludeBlue) excludeBlue = false; - - let divisor = 0; - if (includeRed) divisor++; - if (includeGreen) divisor++; - if (includeBlue) divisor++; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - if (inA[i]) { - - if (divisor) { - - let avg = 0; - - if (includeRed) avg += inR[i]; - if (includeGreen) avg += inG[i]; - if (includeBlue) avg += inB[i]; - - avg = Math.floor(avg / divisor); - - outR[i] = (excludeRed) ? 0 : avg; - outG[i] = (excludeGreen) ? 0 : avg; - outB[i] = (excludeBlue) ? 0 : avg; - outA[i] = inA[i]; - } - else { - - outR[i] = (excludeRed) ? 0 : inR[i]; - outG[i] = (excludeGreen) ? 0 : inG[i]; - outB[i] = (excludeBlue) ? 0 : inB[i]; - outA[i] = inA[i]; - } - } - else { - - outR[i] = inR[i]; - outG[i] = inG[i]; - outB[i] = inB[i]; - outA[i] = inA[i]; - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'binary': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, red, green, blue, alpha, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == red) red = 0; - if (null == green) green = 0; - if (null == blue) blue = 0; - if (null == alpha) alpha = 0; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - if (red) outR[i] = (inR[i] > red) ? 255 : 0; - else outR[i] = inR[i]; - - if (green) outG[i] = (inG[i] > green) ? 255 : 0; - else outG[i] = inG[i]; - - if (blue) outB[i] = (inB[i] > blue) ? 255 : 0; - else outB[i] = inB[i]; - - if (alpha) outA[i] = (inA[i] > alpha) ? 255 : 0; - else outA[i] = inA[i]; - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'blend': function (requirements) { - - let [input, output, mix] = getInputAndOutputChannels(requirements); - - let len = output.r.length; - - let {opacity, blend, offsetX, offsetY, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == blend) blend = ''; - if (null == offsetX) offsetX = 0; - if (null == offsetY) offsetY = 0; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; - - let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); - - const copyPixel = function (fromPos, toPos, channel) { - - outR[toPos] = channel.r[fromPos]; - outG[toPos] = channel.g[fromPos]; - outB[toPos] = channel.b[fromPos]; - outA[toPos] = channel.a[fromPos]; - }; - - const getLinePositions = function (x, y) { - - let ix = x, - iy = y, - mx = x - offsetX, - my = y - offsetY; - - let mPos = -1, - iPos = (iy * iWidth) + ix; - - if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; - - return [iPos, mPos]; - }; - - const getChannelNormals = function (i, m) { - - return [ - input.r[i] / 255, - input.g[i] / 255, - input.b[i] / 255, - input.a[i] / 255, - mix.r[m] / 255, - mix.g[m] / 255, - mix.b[m] / 255, - mix.a[m] / 255 - ]; - }; - - const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255; - - switch (blend) { - - case 'color-burn' : - const colorburnCalc = (din, dmix) => { - if (dmix == 1) return 255; - else if (din == 0) return 0; - return (1 - Math.min(1, ((1 - dmix) / din ))) * 255; - }; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = colorburnCalc(dinR, dmixR); - outG[iPos] = colorburnCalc(dinG, dmixG); - outB[iPos] = colorburnCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'color-dodge' : - const colordodgeCalc = (din, dmix) => { - if (dmix == 0) return 0; - else if (din == 1) return 255; - return Math.min(1, (dmix / (1 - din))) * 255; - }; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = colordodgeCalc(dinR, dmixR); - outG[iPos] = colordodgeCalc(dinG, dmixG); - outB[iPos] = colordodgeCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'darken' : - const darkenCalc = (din, dmix) => (din < dmix) ? din : dmix; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - outR[iPos] = darkenCalc(inR[iPos], mixR[mPos]); - outG[iPos] = darkenCalc(inG[iPos], mixG[mPos]); - outB[iPos] = darkenCalc(inB[iPos], mixB[mPos]); - outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255); - } - } - } - break; - - case 'difference' : - const differenceCalc = (din, dmix) => Math.abs(din - dmix) * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = differenceCalc(dinR, dmixR); - outG[iPos] = differenceCalc(dinG, dmixG); - outB[iPos] = differenceCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'exclusion' : - const exclusionCalc = (din, dmix) => (din + dmix - (2 * dmix * din)) * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = exclusionCalc(dinR, dmixR); - outG[iPos] = exclusionCalc(dinG, dmixG); - outB[iPos] = exclusionCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'hard-light' : - const hardlightCalc = (din, dmix) => (din <= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = hardlightCalc(dinR, dmixR); - outG[iPos] = hardlightCalc(dinG, dmixG); - outB[iPos] = hardlightCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'lighten' : - const lightenCalc = (din, dmix) => (din > dmix) ? din : dmix; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - outR[iPos] = lightenCalc(inR[iPos], mixR[mPos]); - outG[iPos] = lightenCalc(inG[iPos], mixG[mPos]); - outB[iPos] = lightenCalc(inB[iPos], mixB[mPos]); - outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255); - } - } - } - break; - - case 'lighter' : - const lighterCalc = (din, dmix) => (din + dmix) * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = lighterCalc(dinR, dmixR); - outG[iPos] = lighterCalc(dinG, dmixG); - outB[iPos] = lighterCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'multiply' : - const multiplyCalc = (din, dmix) => din * dmix * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = multiplyCalc(dinR, dmixR); - outG[iPos] = multiplyCalc(dinG, dmixG); - outB[iPos] = multiplyCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'overlay' : - const overlayCalc = (din, dmix) => (din >= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = overlayCalc(dinR, dmixR); - outG[iPos] = overlayCalc(dinG, dmixG); - outB[iPos] = overlayCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'screen' : - const screenCalc = (din, dmix) => (dmix + (din - (dmix * din))) * 255; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = screenCalc(dinR, dmixR); - outG[iPos] = screenCalc(dinG, dmixG); - outB[iPos] = screenCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'soft-light' : - const softlightCalc = (din, dmix) => { - - let d = (dmix <= 0.25) ? - ((((16 * dmix) - 12) * dmix) + 4) * dmix : - Math.sqrt(dmix); - - if (din <= 0.5) return (dmix - ((1 - (2 * din)) * dmix * (1 - dmix))) * 255; - return (dmix + (((2 * din) - 1) * (d - dmix))) * 255; - }; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - outR[iPos] = softlightCalc(dinR, dmixR); - outG[iPos] = softlightCalc(dinG, dmixG); - outB[iPos] = softlightCalc(dinB, dmixB); - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'color' : - const colorCalc = (iR, iG, iB, mR, mG, mB) => { - - let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); - let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); - - return getRGBfromHSL(iH, iS, mL); - } - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - let [cr, cg, cb] = colorCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); - outR[iPos] = cr; - outG[iPos] = cg; - outB[iPos] = cb; - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'hue' : - const hueCalc = (iR, iG, iB, mR, mG, mB) => { - - let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); - let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); - - return getRGBfromHSL(iH, mS, mL); - } - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - let [cr, cg, cb] = hueCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); - outR[iPos] = cr; - outG[iPos] = cg; - outB[iPos] = cb; - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'luminosity' : - const luminosityCalc = (iR, iG, iB, mR, mG, mB) => { - - let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); - let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); - - return getRGBfromHSL(mH, mS, iL); - } - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - let [cr, cg, cb] = luminosityCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); - outR[iPos] = cr; - outG[iPos] = cg; - outB[iPos] = cb; - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - case 'saturation' : - const saturationCalc = (iR, iG, iB, mR, mG, mB) => { - - let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB); - let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB); - - return getRGBfromHSL(mH, iS, mL); - } - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else if (!mixA[mPos]) copyPixel(iPos, iPos, input); - else { - - let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos); - - let [cr, cg, cb] = saturationCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB); - outR[iPos] = cr; - outG[iPos] = cg; - outB[iPos] = cb; - outA[iPos] = alphaCalc(dinA, dmixA); - } - } - } - break; - - default: - const normalCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As)); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else if (!inA[iPos]) copyPixel(mPos, iPos, mix); - else { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = normalCalc(inR[iPos], dinA, mixR[mPos], dmixA); - outG[iPos] = normalCalc(inG[iPos], dinA, mixG[mPos], dmixA); - outB[iPos] = normalCalc(inB[iPos], dinA, mixB[mPos], dmixA); - outA[iPos] = alphaCalc(dinA, dmixA) - } - } - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'blur': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, step, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == radius) radius = 0; - if (null == passes) passes = 1; - if (null == processVertical) processVertical = true; - if (null == processHorizontal) processHorizontal = true; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - if (null == includeAlpha) includeAlpha = false; - if (null == step) step = 1; - - let horizontalBlurGrid, verticalBlurGrid; - - // Any required precalculations - if (processHorizontal || processVertical) { - - let grid = buildImageGrid(); - - if (processHorizontal) horizontalBlurGrid = buildHorizontalBlur(grid, radius, input.a); - - if (processVertical) verticalBlurGrid = buildVerticalBlur(grid, radius, input.a); - } - - // Perform blur action - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - const getValue = function (flag, gridStore, pos, holdChannel, alpha) { - - if (flag) { - - let h = gridStore[pos], - l = h.length, - counter = 0, - total = 0; - - if (alpha) { - - for (let t = 0; t < l; t += step) { - - if (alpha[h[t]]) { - - total += holdChannel[h[t]]; - counter++; - } - } - return total / counter; - } - for (let t = 0; t < l; t++) { - total += holdChannel[h[t]]; - } - return total / l; - } - return holdChannel[pos]; - } - - if (!passes || (!processHorizontal && !processVertical)) copyOver(input, output); - else { - - const hold = createResultObject(len); - const {r:holdR, g:holdG, b:holdB, a:holdA} = hold; - - copyOver(input, hold); - - for (let pass = 0; pass < passes; pass++) { - - if (processHorizontal) { - - for (let k = 0; k < len; k++) { - - if (includeAlpha || holdA[k]) { - - outR[k] = getValue(includeRed, horizontalBlurGrid, k, holdR, holdA); - outG[k] = getValue(includeGreen, horizontalBlurGrid, k, holdG, holdA); - outB[k] = getValue(includeBlue, horizontalBlurGrid, k, holdB, holdA); - outA[k] = getValue(includeAlpha, horizontalBlurGrid, k, holdA, false); - } - } - if (processVertical || pass < passes - 1) copyOver(output, hold); - } - - if (processVertical) { - - for (let k = 0; k < len; k++) { - - if (includeAlpha || holdA[k]) { - - outR[k] = getValue(includeRed, verticalBlurGrid, k, holdR, holdA); - outG[k] = getValue(includeGreen, verticalBlurGrid, k, holdG, holdA); - outB[k] = getValue(includeBlue, verticalBlurGrid, k, holdB, holdA); - outA[k] = getValue(includeAlpha, verticalBlurGrid, k, holdA, false); - } - } - if (pass < passes - 1) copyOver(output, hold); - } - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'channels-to-alpha': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, includeRed, includeGreen, includeBlue, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - - let divisor = 0; - if (includeRed) divisor++; - if (includeGreen) divisor++; - if (includeBlue) divisor++; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - outR[i] = inR[i]; - outG[i] = inG[i]; - outB[i] = inB[i]; - - if (divisor) { - - let avg = 0; - - if (includeRed) avg += inR[i]; - if (includeGreen) avg += inG[i]; - if (includeBlue) avg += inB[i]; - - avg = Math.floor(avg / divisor); - - outA[i] = avg; - } - else outA[i] = inA[i]; - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'chroma': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, ranges, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == ranges) ranges = []; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let j = 0; j < len; j++) { - - let flag = false; - - let r = inR[j], - g = inG[j], - b = inB[j]; - - for (i = 0, iz = ranges.length; i < iz; i++) { - - let range = ranges[i]; - - let [minR, minG, minB, maxR, maxG, maxB] = ranges[i]; - - if (r >= minR && r <= maxR && g >= minG && g <= maxG && b >= minB && b <= maxB) { - flag = true; - break; - } - - } - outR[j] = inR[j]; - outG[j] = inG[j]; - outB[j] = inB[j]; - outA[j] = (flag) ? 0 : inA[j]; - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'colors-to-alpha': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, red, green, blue, opaqueAt, transparentAt, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == red) red = 0; - if (null == green) green = 255; - if (null == blue) blue = 0; - if (null == opaqueAt) opaqueAt = 1; - if (null == transparentAt) transparentAt = 0; - - const maxDiff = Math.max(((red + green + blue) / 3), (((255 - red) + (255 - green) + (255 - blue)) / 3)), - transparent = transparentAt * maxDiff, - opaque = opaqueAt * maxDiff, - range = opaque - transparent; - - const getValue = function (r, g, b) { - - let diff = (Math.abs(red - r) + Math.abs(green - g) + Math.abs(blue - b)) / 3; - - if (diff < transparent) return 0; - if (diff > opaque) return 255; - return ((diff - transparent) / range) * 255; - }; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - outR[i] = inR[i]; - outG[i] = inG[i]; - outB[i] = inB[i]; - outA[i] = getValue(inR[i], inG[i], inB[i]); - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'compose': function (requirements) { - - let [input, output, mix] = getInputAndOutputChannels(requirements); - - let len = output.r.length; - - let {opacity, compose, offsetX, offsetY, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == compose) compose = ''; - if (null == offsetX) offsetX = 0; - if (null == offsetY) offsetY = 0; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; - - let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); - - const copyPixel = function (fromPos, toPos, channel) { - - outR[toPos] = channel.r[fromPos]; - outG[toPos] = channel.g[fromPos]; - outB[toPos] = channel.b[fromPos]; - outA[toPos] = channel.a[fromPos]; - }; - - const getLinePositions = function (x, y) { - - let ix = x, - iy = y, - mx = x - offsetX, - my = y - offsetY; - - let mPos = -1, - iPos = (iy * iWidth) + ix; - - if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; - - return [iPos, mPos]; - }; - - switch (compose) { - - case 'source-only' : - copyOver(input, output); - break; - - case 'source-atop' : - const sAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * mAlpha) + (mAlpha * mColor * (1 - iAlpha)); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos >= 0) { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = sAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA); - outG[iPos] = sAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA); - outB[iPos] = sAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA); - outA[iPos] = ((dinA * dmixA) + (dmixA * (1 - dinA))) * 255; - } - } - } - break; - - case 'source-in' : - const sInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos >= 0) { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = sInCalc(inR[iPos], dinA, dmixA); - outG[iPos] = sInCalc(inG[iPos], dinA, dmixA); - outB[iPos] = sInCalc(inB[iPos], dinA, dmixA); - outA[iPos] = dinA * dmixA * 255; - } - } - } - break; - - case 'source-out' : - const sOutCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * (1 - mAlpha); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = sOutCalc(inR[iPos], dinA, dmixA); - outG[iPos] = sOutCalc(inG[iPos], dinA, dmixA); - outB[iPos] = sOutCalc(inB[iPos], dinA, dmixA); - outA[iPos] = dinA * (1 - dmixA) * 255; - } - } - } - break; - - case 'destination-only' : - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos >= 0) copyPixel(mPos, iPos, mix); - } - } - break; - - case 'destination-atop' : - const dAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * iAlpha); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = dAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA); - outG[iPos] = dAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA); - outB[iPos] = dAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA); - outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * dinA)) * 255; - } - } - } - break; - - case 'destination-over' : - const dOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = dOverCalc(inR[iPos], dinA, mixR[mPos], dmixA); - outG[iPos] = dOverCalc(inG[iPos], dinA, mixG[mPos], dmixA); - outB[iPos] = dOverCalc(inB[iPos], dinA, mixB[mPos], dmixA); - outA[iPos] = ((dinA * (1 - dmixA)) + dmixA) * 255; - } - } - } - break; - - case 'destination-in' : - const dInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha; - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos >= 0) { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = dInCalc(mixR[mPos], dmixA, dinA); - outG[iPos] = dInCalc(mixG[mPos], dmixA, dinA); - outB[iPos] = dInCalc(mixB[mPos], dmixA, dinA); - outA[iPos] = dinA * dmixA * 255; - } - } - } - break; - - case 'destination-out' : - const dOutCalc = (mColor, iAlpha, mAlpha) => mAlpha * mColor * (1 - iAlpha); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos >= 0) { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = dOutCalc(mixR[mPos], dinA, dmixA); - outG[iPos] = dOutCalc(mixG[mPos], dinA, dmixA); - outB[iPos] = dOutCalc(mixB[mPos], dinA, dmixA); - outA[iPos] = dmixA * (1 - dinA) * 255; - } - } - } - break; - - case 'clear' : - break; - - case 'xor' : - const xorCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * (1 - iAlpha)); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = xorCalc(inR[iPos], dinA, mixR[mPos], dmixA); - outG[iPos] = xorCalc(inG[iPos], dinA, mixG[mPos], dmixA); - outB[iPos] = xorCalc(inB[iPos], dinA, mixB[mPos], dmixA); - outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * (1 - dinA))) * 255; - } - } - } - break; - - default: - const sOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor) + (mAlpha * mColor * (1 - iAlpha)); - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos < 0) copyPixel(iPos, iPos, input); - else { - - let dinA = inA[iPos] / 255, - dmixA = mixA[mPos] / 255; - - outR[iPos] = sOverCalc(inR[iPos], dinA, mixR[mPos], dmixA); - outG[iPos] = sOverCalc(inG[iPos], dinA, mixG[mPos], dmixA); - outB[iPos] = sOverCalc(inB[iPos], dinA, mixB[mPos], dmixA); - outA[iPos] = (dinA + (dmixA * (1 - dinA))) * 255; - } - } - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'displace': function (requirements) { - - let [input, output, mix] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, channelX, channelY, scaleX, scaleY, offsetX, offsetY, transparentEdges, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == channelX) channelX = 'red'; - if (null == channelY) channelY = 'green'; - if (null == scaleX) scaleX = 1; - if (null == scaleY) scaleY = 1; - if (null == offsetX) offsetX = 0; - if (null == offsetY) offsetY = 0; - if (null == transparentEdges) transparentEdges = false; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - const {r:mixR, g:mixG, b:mixB, a:mixA} = mix; - - if (channelX == 'red') channelX = mixR; - else if (channelX == 'green') channelX = mixG; - else if (channelX == 'blue') channelX = mixB; - else channelX = mixA; - - if (channelY == 'red') channelY = mixR; - else if (channelY == 'green') channelY = mixG; - else if (channelY == 'blue') channelY = mixB; - else channelY = mixA; - - let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements); - - const copyPixel = function (fromPos, toPos, channel) { - - if (fromPos < 0) outA[toPos] = 0; - else { - - outR[toPos] = channel.r[fromPos]; - outG[toPos] = channel.g[fromPos]; - outB[toPos] = channel.b[fromPos]; - outA[toPos] = channel.a[fromPos]; - } - }; - - const getLinePositions = function (x, y) { - - let ix = x, - iy = y, - mx = x + offsetX, - my = y + offsetY; - - let mPos = -1, - iPos = (iy * iWidth) + ix; - - if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx; - - return [iPos, mPos]; - }; - - for (let y = 0; y < iHeight; y++) { - for (let x = 0; x < iWidth; x++) { - - let [iPos, mPos] = getLinePositions(x, y); - - if (mPos >= 0) { - - let dx = Math.floor(x + ((127 - channelX[mPos]) / 127) * scaleX); - let dy = Math.floor(y + ((127 - channelY[mPos]) / 127) * scaleY); - let dPos; - - if (!transparentEdges) { - - if (dx < 0) dx = 0; - if (dx >= iWidth) dx = iWidth - 1; - if (dy < 0) dy = 0; - if (dy >= iHeight) dy = iHeight - 1; - - dPos = (dy * iWidth) + dx; - } - else { - - if (dx < 0 || dx >= iWidth || dy < 0 || dy >= iHeight) dPos = -1; - else dPos = (dy * iWidth) + dx; - } - - copyPixel(dPos, iPos, input); - } - else copyPixel(iPos, iPos, input); - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'emboss': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, strength, angle, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == strength) strength = 1; - if (null == angle) angle = true; - - strength = Math.abs(strength); - - while (angle < 0) { - angle += 360; - } - - angle = angle % 360; - - // build weights Array ... `angle == 0` is pointing directly to the east (right of origin) - let slices = Math.floor(angle / 45), - remains = ((angle % 45) / 45) * strength, - weights = new Array(9); - - weights = weights.fill(0, 0, 9); - weights[4] = 1; - - if (slices == 0) { - weights[5] = strength - remains; - weights[8] = remains; - weights[3] = -weights[5]; - weights[0] = -weights[8]; - } - else if (slices == 1) { - weights[8] = strength - remains; - weights[7] = remains; - weights[0] = -weights[8]; - weights[1] = -weights[7]; - } - else if (slices == 2) { - weights[7] = strength - remains; - weights[6] = remains; - weights[1] = -weights[7]; - weights[2] = -weights[6]; - } - else if (slices == 3) { - weights[6] = strength - remains; - weights[3] = remains; - weights[2] = -weights[6]; - weights[5] = -weights[3]; - } - else if (slices == 4) { - weights[3] = strength - remains; - weights[0] = remains; - weights[5] = -weights[3]; - weights[8] = -weights[0]; - } - else if (slices == 5) { - weights[0] = strength - remains; - weights[1] = remains; - weights[8] = -weights[0]; - weights[7] = -weights[1]; - } - else if (slices == 6) { - weights[1] = strength - remains; - weights[2] = remains; - weights[7] = -weights[1]; - weights[6] = -weights[2]; - } - else { - weights[2] = strength - remains; - weights[5] = remains; - weights[6] = -weights[2]; - weights[3] = -weights[5]; - } - - const hold = createResultObject(len); - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - const {r:holdR, g:holdG, b:holdB, a:holdA} = hold; - - // Need to grayscale the input before processing it - for (let i = 0; i < len; i++) { - - let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); - - outR[i] = gray; - outG[i] = gray; - outB[i] = gray; - outA[i] = inA[i]; - } - - grid = buildMatrixGrid(3, 3, 1, 1, hold.a); - - const doCalculations = function (inChannel, matrix) { - - let val = 0; - - for (let m = 0, mz = matrix.length; m < mz; m++) { - - if (weights[m]) val += (inChannel[matrix[m]] * weights[m]); - } - return val; - } - - for (let i = 0; i < len; i++) { - - let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); - - holdR[i] = gray; - holdG[i] = gray; - holdB[i] = gray; - holdA[i] = inA[i]; - } - - for (let i = 0; i < len; i++) { - - if (holdA[i]) { - - outR[i] = doCalculations(holdR, grid[i]); - outG[i] = doCalculations(holdG, grid[i]); - outB[i] = doCalculations(holdB, grid[i]); - outA[i] = holdA[i]; - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'flood': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length, - floor = Math.floor; - - let {opacity, red, green, blue, alpha, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == red) red = 0; - if (null == green) green = 0; - if (null == blue) blue = 0; - if (null == alpha) alpha = 255; - - const {r:outR, g:outG, b:outB, a:outA} = output; - - outR.fill(red, 0, len - 1); - outG.fill(green, 0, len - 1); - outB.fill(blue, 0, len - 1); - outA.fill(alpha, 0, len - 1); - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'grayscale': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, lineOut} = requirements; - - if (null == opacity) opacity = 1; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); - - outR[i] = gray; - outG[i] = gray; - outB[i] = gray; - outA[i] = inA[i]; - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'invert-channels': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - if (null == includeAlpha) includeAlpha = false; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - outR[i] = (includeRed) ? 255 - inR[i] : inR[i]; - outG[i] = (includeGreen) ? 255 - inG[i] : inG[i]; - outB[i] = (includeBlue) ? 255 - inB[i] : inB[i]; - outA[i] = (includeAlpha) ? 255 - inA[i] : inA[i]; - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'lock-channels-to-levels': function (requirements) { - - checkChannelLevelsParameters(requirements) - - const getValue = function (val, levels) { - - if (!levels.length) return val; - - for (let i = 0, iz = levels.length; i < iz; i++) { - - let [start, end, level] = levels[i]; - if (val >= start && val <= end) return level; - } - }; - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, red, green, blue, alpha, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == red) red = [0]; - if (null == green) green = [0]; - if (null == blue) blue = [0]; - if (null == alpha) alpha = [255]; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - outR[i] = getValue(inR[i], red); - outG[i] = getValue(inG[i], green); - outB[i] = getValue(inB[i], blue); - outA[i] = getValue(inA[i], alpha); - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'matrix': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, width, height, offsetX, offsetY, weights, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - if (null == includeAlpha) includeAlpha = false; - if (null == width || width < 1) width = 3; - if (null == height || height < 1) height = 3; - if (null == offsetX) offsetX = 1; - if (null == offsetY) offsetY = 1; - if (null == weights) { - weights = [].fill(0, 0, (width * height) - 1); - weights[Math.floor(weights.length / 2) + 1] = 1; - } - - grid = buildMatrixGrid(width, height, offsetX, offsetY, input.a); - - const doCalculations = function (inChannel, matrix) { - - let val = 0; - - for (let m = 0, mz = matrix.length; m < mz; m++) { - - if (weights[m]) val += (inChannel[matrix[m]] * weights[m]); - } - return val; - } - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - if (inA[i]) { - - if (includeRed) outR[i] = doCalculations(inR, grid[i]); - else outR[i] = inR[i]; - - if (includeGreen) outG[i] = doCalculations(inG, grid[i]); - else outG[i] = inG[i]; - - if (includeBlue) outB[i] = doCalculations(inB, grid[i]); - else outB[i] = inB[i]; - - if (includeAlpha) outA[i] = doCalculations(inA, grid[i]); - else outA[i] = inA[i]; - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'modulate-channels': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, red, green, blue, alpha, saturation, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == red) red = 1; - if (null == green) green = 1; - if (null == blue) blue = 1; - if (null == alpha) alpha = 1; - if (null == saturation) saturation = false; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - if (saturation) { - - for (let i = 0; i < len; i++) { - outR[i] = 127 + ((inR[i] - 127) * red); - outG[i] = 127 + ((inG[i] - 127) * green); - outB[i] = 127 + ((inB[i] - 127) * blue); - outA[i] = 127 + ((inA[i] - 127) * alpha); - } - } - else { - - for (let i = 0; i < len; i++) { - outR[i] = inR[i] * red; - outG[i] = inG[i] * green; - outB[i] = inB[i] * blue; - outA[i] = inA[i] * alpha; - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'offset': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let {opacity, offsetRedX, offsetRedY, offsetGreenX, offsetGreenY, offsetBlueX, offsetBlueY, offsetAlphaX, offsetAlphaY, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == offsetRedX) offsetRedX = 0; - if (null == offsetRedY) offsetRedY = 0; - if (null == offsetGreenX) offsetGreenX = 0; - if (null == offsetGreenY) offsetGreenY = 0; - if (null == offsetBlueX) offsetBlueX = 0; - if (null == offsetBlueY) offsetBlueY = 0; - if (null == offsetAlphaX) offsetAlphaX = 0; - if (null == offsetAlphaY) offsetAlphaY = 0; - - let simpleoffset = false; - - if (offsetRedX == offsetGreenX && offsetRedX == offsetBlueX && offsetRedX == offsetAlphaX && offsetRedY == offsetGreenY && offsetRedY == offsetBlueY && offsetRedY == offsetAlphaY) simpleoffset = true; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - let grid = buildImageGrid(), - gWidth = grid[0].length, - gHeight = grid.length, - drx, dry, dgx, dgy, dbx, dby, dax, day, inCell, outCell; - - for (let y = 0; y < gHeight; y++) { - for (let x = 0; x < gWidth; x++) { - - inCell = grid[y][x]; - - if (inA[inCell]) { - - if (simpleoffset) { - - drx = x + offsetRedX; - dry = y + offsetRedY; - - if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) { - - outCell = grid[dry][drx]; - outR[outCell] = inR[inCell]; - outG[outCell] = inG[inCell]; - outB[outCell] = inB[inCell]; - outA[outCell] = inA[inCell]; - } - } - else { - - drx = x + offsetRedX; - dry = y + offsetRedY; - dgx = x + offsetGreenX; - dgy = y + offsetGreenY; - dbx = x + offsetBlueX; - dby = y + offsetBlueY; - dax = x + offsetAlphaX; - day = y + offsetAlphaY; - - if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) { - - outCell = grid[dry][drx]; - outR[outCell] = inR[inCell]; - } - - if (dgx >= 0 && dgx < gWidth && dgy >= 0 && dgy < gHeight) { - - outCell = grid[dgy][dgx]; - outG[outCell] = inG[inCell]; - } - - if (dbx >= 0 && dbx < gWidth && dby >= 0 && dby < gHeight) { - - outCell = grid[dby][dbx]; - outB[outCell] = inB[inCell]; - } - - if (dax >= 0 && dax < gWidth && day >= 0 && day < gHeight) { - - outCell = grid[day][dax]; - outA[outCell] = inA[inCell]; - } - } - } - } - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'pixelate': function (requirements) { - - const doCalculations = function (inChannel, outChannel, tile) { - - let avg = tile.reduce((a, v) => a + inChannel[v], 0); - - avg = Math.floor(avg / tile.length); - - for (let i = 0, iz = tile.length; i < iz; i++) { - - outChannel[tile[i]] = avg; - } - } - - const setOutValueToInValue = function (inChannel, outChannel, tile) { - - let cell; - - for (let i = 0, iz = tile.length; i < iz; i++) { - - cell = tile[i]; - outChannel[cell] = inChannel[cell]; - } - }; - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, tileWidth, tileHeight, offsetX, offsetY, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = true; - if (null == includeGreen) includeGreen = true; - if (null == includeBlue) includeBlue = true; - if (null == includeAlpha) includeAlpha = false; - if (null == tileWidth) tileWidth = 1; - if (null == tileHeight) tileHeight = 1; - if (null == offsetX) offsetX = 0; - if (null == offsetY) offsetY = 0; - - const tiles = buildImageTileSets(tileWidth, tileHeight, offsetX, offsetY); - - // Do filter work - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - tiles.forEach(t => { - if (includeRed) doCalculations(inR, outR, t); - else setOutValueToInValue(inR, outR, t); - - if (includeGreen) doCalculations(inG, outG, t); - else setOutValueToInValue(inG, outG, t); - - if (includeBlue) doCalculations(inB, outB, t); - else setOutValueToInValue(inB, outB, t); - - if (includeAlpha) doCalculations(inA, outA, t); - else setOutValueToInValue(inA, outA, t); - }) - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'process-image': function (requirements) { - - const {assetData, lineOut} = requirements; - - if (lineOut && lineOut.substring && lineOut.length && assetData && assetData.width && assetData.height && assetData.data) { - - let d = assetData.data; - let len = d.length; - - let res = createResultObject(len / 4); - - let r = res.r, - g = res.g, - b = res.b, - a = res.a; - - let counter = 0; - - for (let i = 0; i < len; i += 4) { - - r[counter] = d[i]; - g[counter] = d[i + 1]; - b[counter] = d[i + 2]; - a[counter] = d[i + 3]; - - counter++; - } - assetData.channels = res; - - cache[lineOut] = assetData; - } - }, - - 'set-channel-to-level': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, level, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == includeRed) includeRed = false; - if (null == includeGreen) includeGreen = false; - if (null == includeBlue) includeBlue = false; - if (null == includeAlpha) includeAlpha = false; - if (null == level) level = 0; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - outR[i] = (includeRed) ? level : inR[i]; - outG[i] = (includeGreen) ? level : inG[i]; - outB[i] = (includeBlue) ? level : inB[i]; - outA[i] = (includeAlpha) ? level : inA[i]; - } - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'step-channels': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length, - floor = Math.floor; - - let {opacity, red, green, blue, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == red) red = 1; - if (null == green) green = 1; - if (null == blue) blue = 1; - - if (red == null) red = 1; - if (green == null) green = 1; - if (blue == null) blue = 1; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - outR[i] = floor(inR[i] / red) * red; - outG[i] = floor(inG[i] / green) * green; - outB[i] = floor(inB[i] / blue) * blue; - outA[i] = inA[i]; - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'threshold': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, low, high, level, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == low) low = [0,0,0]; - if (null == high) high = [255,255,255]; - if (null == level) level = 128; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - let [lowR, lowG, lowB] = low; - let [highR, highG, highB] = high; - - for (let i = 0; i < len; i++) { - - let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i])); - - if (gray < level) { - - outR[i] = lowR; - outG[i] = lowG; - outB[i] = lowB; - } - else { - - outR[i] = highR; - outG[i] = highG; - outB[i] = highB; - } - outA[i] = inA[i]; - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'tint-channels': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let len = input.r.length; - - let {opacity, redInRed, redInGreen, redInBlue, greenInRed, greenInGreen, greenInBlue, blueInRed, blueInGreen, blueInBlue, lineOut} = requirements; - - if (null == opacity) opacity = 1; - if (null == redInRed) redInRed = 1; - if (null == redInGreen) redInGreen = 0; - if (null == redInBlue) redInBlue = 0; - if (null == greenInRed) greenInRed = 0; - if (null == greenInGreen) greenInGreen = 1; - if (null == greenInBlue) greenInBlue = 0; - if (null == blueInRed) blueInRed = 0; - if (null == blueInGreen) blueInGreen = 0; - if (null == blueInBlue) blueInBlue = 1; - - const {r:inR, g:inG, b:inB, a:inA} = input; - const {r:outR, g:outG, b:outB, a:outA} = output; - - for (let i = 0; i < len; i++) { - - let r = inR[i], - g = inG[i], - b = inB[i]; - - outR[i] = Math.floor((r * redInRed) + (g * greenInRed) + (b * blueInRed)); - outG[i] = Math.floor((r * redInGreen) + (g * greenInGreen) + (b * blueInGreen)); - outB[i] = Math.floor((r * redInBlue) + (g * greenInBlue) + (b * blueInBlue)); - outA[i] = inA[i]; - } - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, - - 'user-defined-legacy': function (requirements) { - - let [input, output] = getInputAndOutputChannels(requirements); - - let {opacity, lineOut} = requirements; - - if (null == opacity) opacity = 1; - - copyOver(input, output); - - if (lineOut) processResults(output, work, 1 - opacity); - else processResults(work, output, opacity); - }, -}; From 69f7bd78d23454a59aca7d3258fe6ced574ceb4f Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Thu, 21 Jan 2021 18:01:59 +0000 Subject: [PATCH 14/28] filter worker dev vs prod code --- source/factory/filter.js | 51 ++++++++++++++++++++++++++++++---------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/source/factory/filter.js b/source/factory/filter.js index 0655a16fb..ea99cc0ed 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -992,43 +992,68 @@ const setActionsArray = { // #### Filter webworker pool // Because starting a web worker is an expensive operation, and a number of different filters may be required to render displays across a number of different <canvas> elements in a web page, Scrawl-canvas operates a pool of web workers to perform work as-and-when required. -const filterPool = []; -// `Exported function` __requestFilterWorker__ +// START PRODUCTION CODE +const filterPool = []; import { filterUrl } from '../worker/filter-string.js'; -const requestFilterWorker = function () { +const requestFilterWorker = function () { if (!filterPool.length) filterPool.push(new Worker(filterUrl)); - return filterPool.shift(); }; -// `Exported function` __releaseFilterWorker__ - to avoid memory leaks, ___all requested filter workers MUST be released back to the filter pool as soon as their work has completed___. const releaseFilterWorker = function (f) { - filterPool.push(f); }; -// `Exported function` __actionFilterWorker__ - send a task to the filter web worker, and retrieve the resulting image. This function returns a Promise. const actionFilterWorker = function (worker, items) { - return new Promise((resolve, reject) => { - worker.onmessage = (e) => { - if (e && e.data && e.data.image) resolve(e.data.image); else resolve(false); }; - worker.onerror = (e) => { - console.log('error', e.lineno, e.message); resolve(false); }; - worker.postMessage(items); }); }; +// END PRODUCTION CODE + + +// START DEV CODE +// const filterPool = []; + +// const requestFilterWorker = function () { +// if (!filterPool.length) filterPool.push(buildFilterWorker()); +// return filterPool.shift(); +// }; + +// const buildFilterWorker = function () { +// let path = import.meta.url.slice(0, -('factory/filter.js'.length)); +// let filterUrl = `${path}worker/filter.js`; +// return new Worker(filterUrl); +// }; + +// const releaseFilterWorker = function (f) { +// filterPool.push(f); +// }; + +// const actionFilterWorker = function (worker, items) { +// return new Promise((resolve, reject) => { +// worker.onmessage = (e) => { +// if (e && e.data && e.data.image) resolve(e.data.image); +// else resolve(false); +// }; +// worker.onerror = (e) => { +// console.log('error', e.lineno, e.message); +// resolve(false); +// }; +// worker.postMessage(items); +// }); +// }; +// END DEV CODE // #### Factory From bedb7026fda97da802eca754fea2316ad55e2352 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Fri, 22 Jan 2021 15:39:01 +0000 Subject: [PATCH 15/28] New entity - mesh - added to library --- demo/index.html | 3 + demo/particles-007.html | 1 - demo/particles-007.js | 28 - demo/particles-008.html | 16 +- demo/particles-008.js | 65 +- demo/particles-009.html | 1 - demo/particles-009.js | 28 - demo/particles-011.html | 1 - demo/particles-011.js | 28 - demo/particles-016.html | 43 ++ demo/particles-016.js | 174 +++++ demo/thumbs/particles-016.webp | Bin 0 -> 23096 bytes docs/index.html | 1 + source/factory/mesh.js | 1209 ++++++++++++++++++++++++++++++++ source/scrawl.js | 9 + 15 files changed, 1515 insertions(+), 92 deletions(-) create mode 100644 demo/particles-016.html create mode 100644 demo/particles-016.js create mode 100644 demo/thumbs/particles-016.webp create mode 100644 source/factory/mesh.js diff --git a/demo/index.html b/demo/index.html index 43c2fe4b6..f31048aa6 100644 --- a/demo/index.html +++ b/demo/index.html @@ -345,6 +345,9 @@

    Particles and physics tests

    Particles 015 - Emitter functionality: generate from existing particle histories
    + +
    +
    Particles 016 - Mesh entitys

    Component tests (experimental!)

    diff --git a/demo/particles-007.html b/demo/particles-007.html index af5e8d182..2c34cdd27 100644 --- a/demo/particles-007.html +++ b/demo/particles-007.html @@ -44,7 +44,6 @@

    Particle Force objects: generation and functionality

    - diff --git a/demo/particles-007.js b/demo/particles-007.js index 086fc9ac0..766f79d80 100644 --- a/demo/particles-007.js +++ b/demo/particles-007.js @@ -55,34 +55,6 @@ scrawl.makeFilter({ weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1], }); -scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, -}); - // Create a Block entity which covers the entire canvas; this will act as the area in which particles will be generated by the Emitter entity scrawl.makeBlock({ diff --git a/demo/particles-008.html b/demo/particles-008.html index bf3981b6c..f47795fbd 100644 --- a/demo/particles-008.html +++ b/demo/particles-008.html @@ -15,6 +15,9 @@ canvas { margin: 0 auto; } + img { + display: none; + } @@ -40,7 +43,7 @@

    Note that physics models can be a little tempramental!

    Damper constant
    -
    +
    Particle mass
    @@ -58,8 +61,13 @@

    Note that physics models can be a little tempramental!

    Tick multiplier
    -
     
    -
     
    +
    Show image
    +
    + +
    @@ -85,6 +93,8 @@

    Test purpose

    + + diff --git a/demo/particles-008.js b/demo/particles-008.js index ad8b35702..9afb9482f 100644 --- a/demo/particles-008.js +++ b/demo/particles-008.js @@ -5,6 +5,10 @@ import scrawl from '../source/scrawl.js' +// Import image from DOM +scrawl.importDomImage('.flowers'); + + // #### Scene setup let canvas = scrawl.library.artefact.mycanvas; @@ -20,7 +24,7 @@ scrawl.makeLine({ endX: 'center', endY: 'bottom', - lineWidth: 16, + lineWidth: 8, lineCap: 'round', strokeStyle: 'brown', @@ -137,6 +141,7 @@ const myNet = scrawl.makeNet({ mass: 1, forces: ['gravity', 'wind'], engine: 'runge-kutta', + damperConstant: 5, // We can assign an artefact that we will be using for the particle animation, or we can define it here as part of the Net factory artefact: scrawl.makeWheel({ @@ -152,6 +157,8 @@ const myNet = scrawl.makeNet({ visibility: false, + globalAlpha: 1, + noUserInteraction: true, noPositionDependencies: true, noFilters: true, @@ -171,6 +178,35 @@ const myNet = scrawl.makeNet({ }, }); +scrawl.makePicture({ + + name: 'my-flower', + asset: 'iris', + + copyStartX: 0, + copyStartY: 0, + + copyWidth: '100%', + copyHeight: '100%', + + visibility: false, +}); + + +// ___The Loom entity definition___ +let myMesh = scrawl.makeMesh({ + + name: 'display-mesh', + + net: 'test-net', + source: 'my-flower', + + method: 'fillThenDraw', + + visibility: false, +}); + + // #### Scene animation // Function to display frames-per-second data, and other information relevant to the demo @@ -225,6 +261,30 @@ const updateSprings = function (e) { if (e.target.id === 'engine') myNet.set({ engine: e.target.value}); if (e.target.id === 'mass') myNet.set({ mass: parseFloat(e.target.value)}); if (e.target.id === 'tickMultiplier') myWorld.set({ tickMultiplier: parseFloat(e.target.value)}); + if (e.target.id === 'mesh') { + if (parseInt(e.target.value, 10)) { + myNet.set({ + showSprings: false, + }); + myNet.artefact.set({ + globalAlpha: 0, + }); + myMesh.set({ + visibility: true, + }); + } + else { + myNet.set({ + showSprings: true, + }); + myNet.artefact.set({ + globalAlpha: 1, + }); + myMesh.set({ + visibility: false, + }); + } + } myNet.restart(); } @@ -233,11 +293,12 @@ scrawl.addNativeListener(['input', 'change'], updateSprings, '.controlItem'); document.querySelector('#generate').value = 'weak-net'; document.querySelector('#springConstant').value = 50; -document.querySelector('#damperConstant').value = 10; +document.querySelector('#damperConstant').value = 5; document.querySelector('#restLength').value = 1; document.querySelector('#mass').value = 1; document.querySelector('#engine').value = 'runge-kutta'; document.querySelector('#tickMultiplier').value = 2; +document.querySelector('#mesh').value = '0'; // #### Development and testing diff --git a/demo/particles-009.html b/demo/particles-009.html index a6b5cc654..0c7befde7 100644 --- a/demo/particles-009.html +++ b/demo/particles-009.html @@ -33,7 +33,6 @@

    The yellow beads and the orange ball are draggable

    - diff --git a/demo/particles-009.js b/demo/particles-009.js index f21a14969..d15e32ae7 100644 --- a/demo/particles-009.js +++ b/demo/particles-009.js @@ -36,34 +36,6 @@ scrawl.makeFilter({ weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1], }); -scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, -}); - // For this Demo, we are creating a sheet and pinning its top row to a rail. This is the rail. scrawl.makeLine({ diff --git a/demo/particles-011.html b/demo/particles-011.html index a3b2968c6..216e1aa80 100644 --- a/demo/particles-011.html +++ b/demo/particles-011.html @@ -32,7 +32,6 @@

    Tracer entity: generation and functionality

    - diff --git a/demo/particles-011.js b/demo/particles-011.js index 360cb6d39..256944ed1 100644 --- a/demo/particles-011.js +++ b/demo/particles-011.js @@ -36,34 +36,6 @@ scrawl.makeFilter({ weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1], }); -scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, -}); - // Create a Shape entity to act as a path for our Tracer entitys scrawl.makeShape({ diff --git a/demo/particles-016.html b/demo/particles-016.html new file mode 100644 index 000000000..4866cdb72 --- /dev/null +++ b/demo/particles-016.html @@ -0,0 +1,43 @@ + + + + + + + + Demo Particles 016 + + + + + + +

    Scrawl-canvas v8 - Particles test 016

    +

    Mesh entitys

    +

    The red beads are draggable

    + + + +

    + +
    +

    Test purpose

    +
      +
    • TODO
    • +
    +

    Annotated code

    +
    + + + + + + + diff --git a/demo/particles-016.js b/demo/particles-016.js new file mode 100644 index 000000000..06173db08 --- /dev/null +++ b/demo/particles-016.js @@ -0,0 +1,174 @@ +// # Demo Particles 016 +// Mesh entitys + +// [Run code](../../demo/particles-016.html) +import scrawl from '../source/scrawl.js' + + +// #### Scene setup +let canvas = scrawl.library.artefact.mycanvas; + +canvas.setBase({ + backgroundColor: 'azure', +}); + +// Import image from DOM +scrawl.importDomImage('.flowers'); + + +// Every Mesh uses a Net entity +const myNet = scrawl.makeNet({ + + name: 'test-net', + order: 1, + + world: scrawl.makeWorld({ + name: 'demo-world', + }), + + start: [50, 50], + + generate: 'weak-net', + + postGenerate: function () { + + this.springs.forEach(s => { + + s.particleFromIsStatic = true; + s.particleToIsStatic = true; + }); + }, + + rows: 4, + columns: 6, + rowDistance: 100, + columnDistance: 100, + + showSprings: true, + showSpringsColor: 'rgba(255, 255, 255, 0.3)', + + forces: [], + + engine: 'euler', + + artefact: scrawl.makeWheel({ + + name: 'particle-wheel', + radius: 7, + + handle: ['center', 'center'], + + method: 'fillThenDraw', + fillStyle: 'rgba(200, 0, 0, 0.7)', + strokeStyle: 'white', + lineWidth: 2, + + visibility: false, + + noUserInteraction: true, + noPositionDependencies: true, + noFilters: true, + noDeltaUpdates: true, + }), + + stampAction: function (artefact, particle, host) { + + let [r, z, ...start] = particle.history[0]; + + artefact.simpleStamp(host, { + start, + fillStyle: particle.fill, + strokeStyle: particle.stroke, + }); + }, + + // Make all of the Net entity's Particles draggable + particlesAreDraggable: true, +}); + +// Every Mesh also needs a source image +const myPicture = scrawl.makePicture({ + + name: 'my-flower', + asset: 'iris', + + copyStartX: 0, + copyStartY: 0, + + copyWidth: '100%', + copyHeight: '100%', + + visibility: false, +}); + + +// ___The Loom entity definition___ +let myMesh = scrawl.makeMesh({ + + name: 'display-mesh', + + net: 'test-net', + source: 'my-flower', + + lineWidth: 2, + lineCap: 'round', + strokeStyle: 'orange', + + method: 'fillThenDraw', + + onEnter: function () { this.set({ lineWidth: 6 }) }, + onLeave: function () { this.set({ lineWidth: 2 }) }, +}); + + +// #### Scene animation +// Function to display frames-per-second data, and other information relevant to the demo +let report = function () { + + let testTicker = Date.now(), + testTime, testNow, dragging, + testMessage = document.querySelector('#reportmessage'); + + return function () { + + testNow = Date.now(); + testTime = testNow - testTicker; + testTicker = testNow; + + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`; + }; +}(); + +// Create the Display cycle animation +scrawl.makeRender({ + + name: 'demo-animation', + target: canvas, + afterShow: report, +}); + + +// #### User interaction + +// Mouse movement over and away from the Loom (emulates CSS element `hover` functionality) +let interactions = function () { canvas.cascadeEventAction('move') }; +scrawl.addListener('move', interactions, canvas.domElement); + + +// Make both the Net entity's Particles, and the big ball, draggable +scrawl.makeGroup({ + + name: 'my-draggable-group', + +}).addArtefacts('test-net'); + +scrawl.makeDragZone({ + + zone: canvas, + collisionGroup: 'my-draggable-group', + endOn: ['up', 'leave'], +}); + + +// #### Development and testing +console.log(scrawl.library); diff --git a/demo/thumbs/particles-016.webp b/demo/thumbs/particles-016.webp new file mode 100644 index 0000000000000000000000000000000000000000..6c337f4e7d8a1eb2505bacf5475733812e1477f4 GIT binary patch literal 23096 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

    kJfj2yQBMCFH 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 e%D_|xrZO;Particles and physics demos

  • Particles-013 Seasons greetings
  • Particles-014 Emitter functionality: generate from existing particles
  • Particles-015 Emitter functionality: generate from existing particle histories
  • +
  • Particles-016 Mesh entitys
  • Component demos

    diff --git a/source/factory/mesh.js b/source/factory/mesh.js new file mode 100644 index 000000000..b3f6ae5f2 --- /dev/null +++ b/source/factory/mesh.js @@ -0,0 +1,1209 @@ +// # Mesh factory +// TODO: documentation +// +// ___Note that this is experimental technology!___ +// + Current code does not use [position](./mixin/position.html) or [entity](./mixin/entity.html) mixins, meaning much of the code here has been copied over from those mixins (DRY issue). +// + TODO: clone functionality not yet tested. A possible use case is to clome a Mesh so they share the same Shape struts, but have different Picture sources and `from/toPathStart/End` cursor values - multiple images tracked and animated. + + +// #### Demos: +// + TODO: documentation + + +// #### Imports +import { constructors, artefact } from '../core/library.js'; +import { currentGroup } from '../core/document.js'; +import { mergeOver, mergeDiscard, pushUnique, λnull, λthis, xta } from '../core/utilities.js'; + +import { makeState } from '../factory/state.js'; +import { requestCell, releaseCell } from '../factory/cell.js'; + +import baseMix from '../mixin/base.js'; +import anchorMix from '../mixin/anchor.js'; + + +// #### Mesh constructor +const Mesh = function (items = {}) { + + this.makeName(items.name); + this.register(); + + this.set(this.defs); + + this.state = makeState(); + + if (!items.group) items.group = currentGroup; + + this.onEnter = λnull; + this.onLeave = λnull; + this.onDown = λnull; + this.onUp = λnull; + + this.delta = {}; + + this.set(items); + + this.fromPathData = []; + this.toPathData = []; + + this.watchFromPath = null; + this.watchIndex = -1; + this.engineInstructions = []; + this.engineDeltaLengths = []; + + return this; +}; + + +// #### Mesh prototype +let P = Mesh.prototype = Object.create(Object.prototype); +P.type = 'Mesh'; +P.lib = 'entity'; +P.isArtefact = true; +P.isAsset = false; + + +// #### Mixins +P = baseMix(P); +P = anchorMix(P); + + +// #### Mesh attributes +// + Attributes defined in the [base mixin](../mixin/base.html): __name__. +// + Attributes defined in the [anchor mixin](../mixin/anchor.html): __anchor__. +let defaultAttributes = { + +// __net__ - A Mesh entity requires a Net entity, set to generate a weak or strong net, to supply Particle objects to act as its mapping coordinates. + net: null, + +// __isHorizontalCopy__ - Boolean flag - Copying the source image to the output happens, by default, by rows - which effectively means the struts are on the left-hand and right-hand edges of the image. +// + To change this to columns (which sets the struts to the top and bottom edges of the image) set the attribute to `false` + isHorizontalCopy: true, + +// __source__ - The Picture entity source for this loom. For initialization and/or `set`, we can supply either the Picture entity itself, or its name-String value. +// + The content image displayed by the Mesh entity are set in the Picture entity, not the Mesh, and can be any artefact supported by the Picture (image, video, sprite, or a Cell artefact). +// + Note that any ___filters should be applied to the Picture entity___; Mesh entitys do not support filter functionality but will apply a Picture's filters to the source image as-and-where appropriate. + source: null, + +// __sourceIsVideoOrSprite__ - Boolean flag - If the Picture entity is hosting a video or sprite asset, we need to update the input on every frame. +// + It's easier to tell the Mesh entity to do this using a flag, rather than get the Picture entity to update all its Mesh subscribers on every display cycle. +// + For Pictures using image assets the flag must be set to `false` (the default); setting the flag to `true` will significantly degrade display and animation performance. + sourceIsVideoOrSprite: false, + +// The current Frame drawing process often leads to [moiré interference patterns](https://en.wikipedia.org/wiki/Moir%C3%A9_pattern) appearing in the resulting image. Scrawl-canvas uses a resize trick to blur out these patterns. +// +// __interferenceLoops__ (positive integer Number), __interferenceFactor__ (positive float Number) - The interferenceFactor attribute sets the resizing ratio; while he interferenceLoops attribute sets the number of times the image gets resized. +// + If inteference patterns still appear in the final image, tweak these values to see if a better output can be achieved. + interferenceLoops: 2, + interferenceFactor: 1.03, + +// The Mesh entity does not use the [position](./mixin/position.html) or [entity](./mixin/entity.html) mixins (used by most other entitys) as its positioning is entirely dependent on the position, rotation, scale etc of its constituent Shape path entity struts. +// +// It does, however, use these attributes (alongside their setters and getters): __visibility__, __order__, __delta__, __host__, __group__, __anchor__, __collides__. + visibility: true, + order: 0, + delta: null, + host: null, + group: null, + anchor: null, + +// __noCanvasEngineUpdates__ - Boolean flag - Canvas engine updates are required for the Mesh's border - strokeStyle and line styling; if a Mesh is to be drawn without a border, then setting this flag to `true` may help improve rendering efficiency. + noCanvasEngineUpdates: false, + + +// __noDeltaUpdates__ - Boolean flag - Mesh entitys support delta animation - achieved by updating the `...path` attributes by appropriate (and small!) values. If the Mesh is not going to be animated by delta values, setting the flag to `true` may help improve rendering efficiency. + noDeltaUpdates: false, + + +// __onEnter__, __onLeave__, __onDown__, __onUp__ - Mesh entitys support ___collision detection___, reporting a hit when a test coordinate falls within the Mesh's output image. As a result, Looms can also accept and act on the four __on__ functions - see [entity event listener functions](../mixin/entity.html#section-11) for more details. + onEnter: null, + onLeave: null, + onDown: null, + onUp: null, + + +// __noUserInteraction__ - Boolean flag - To switch off collision detection for a Mesh entity - which might help improve rendering efficiency - set the flag to `true`. + noUserInteraction: false, + + +// [Anchor objects](./anchor.html) can be assigned to Mesh entitys, meaning the following attributes are supported: +// + anchorDescription +// + anchorType +// + anchorTarget +// + anchorRel +// + anchorReferrerPolicy +// + anchorPing +// + anchorHreflang +// + anchorHref +// + anchorDownload +// +// And the anchor attributes can also be supplied as a key:value object assigned to the __anchor__ attribute: +// ``` +// anchor: { +// description +// download +// href +// hreflang +// ping +// referrerpolicy +// rel: +// target: +// anchorType +// clickAction: +// } +// ``` +// +// __method__ - All normal Scrawl-canvas entity stamping methods are supported. + method: 'fill', + + +// Mesh entitys support appropriate styling attributes, mainly for their stroke styles (used with the `draw`, `drawAndFill`, `fillAndDraw`, `drawThenFill` and `fillThenDraw` stamping methods). +// + These ___state___ attributes are stored directly on the object, rather than in a separate [State](./state.html) object. +// +// The following attributes are thus supported: +// +// Alpha and Composite operations will be applied to both the Mesh entity's border (the Shape entitys, with connecting lines between their paths' start and end points) and fill (the image displayed between the Mesh's struts) +// + __globalAlpha__ +// + __globalCompositeOperation__ +// +// All line attributes are supported +// + __lineWidth__ +// + __lineCap__ +// + __lineJoin__ +// + __lineDash__ +// + __lineDashOffset__ +// + __miterLimit__ +// +// The Mesh entity's strokeStyle can be any style supported by Scrawl-canvas - color strings, gradient objects, and pattern objects +// + __strokeStyle__ +// +// The shadow attributes will only be applied to the stroke (border), not to the Loom's fill (image) +// + __shadowOffsetX__ +// + __shadowOffsetY__ +// + __shadowBlur__ +// + __shadowColor__ +}; +P.defs = mergeOver(P.defs, defaultAttributes); + + +// #### Packet management +P.packetExclusions = pushUnique(P.packetExclusions, ['pathObject', 'state']); +P.packetExclusionsByRegex = pushUnique(P.packetExclusionsByRegex, ['^(local|dirty|current)', 'Subscriber$']); +P.packetCoordinates = pushUnique(P.packetCoordinates, []); +P.packetObjects = pushUnique(P.packetObjects, ['group', 'net', 'source']); +P.packetFunctions = pushUnique(P.packetFunctions, ['onEnter', 'onLeave', 'onDown', 'onUp']); + +P.processPacketOut = function (key, value, includes) { + + let result = true; + + if(includes.indexOf(key) < 0 && value === this.defs[key]) result = false; + + return result; +}; + +P.finalizePacketOut = function (copy, items) { + + let stateCopy = JSON.parse(this.state.saveAsPacket(items))[3]; + copy = mergeOver(copy, stateCopy); + + copy = this.handlePacketAnchor(copy, items); + + return copy; +}; + +P.handlePacketAnchor = function (copy, items) { + + if (this.anchor) { + + let a = JSON.parse(this.anchor.saveAsPacket(items))[3]; + copy.anchor = a; + } + return copy; +} + + +// #### Clone management +// TODO - this functionality is currently disabled, need to enable it and make it work properly +P.clone = λthis; + + +// #### Kill management +// No additional kill functionality required + + +// #### Get, Set, deltaSet +let G = P.getters, + S = P.setters, + D = P.deltaSetters; + +// __get__ - copied over from the entity mixin +P.get = function (item) { + + let getter = this.getters[item]; + + if (getter) return getter.call(this); + + else { + + let def = this.defs[item], + state = this.state, + val; + + if (typeof def != 'undefined') { + + val = this[item]; + return (typeof val != 'undefined') ? val : def; + } + + def = state.defs[item]; + + if (typeof def != 'undefined') { + + val = state[item]; + return (typeof val != 'undefined') ? val : def; + } + return undef; + } +}; + +// __set__ - copied over from the entity mixin. +P.set = function (items = {}) { + + if (Object.keys(items).length) { + + let setters = this.setters, + defs = this.defs, + state = this.state, + stateSetters = (state) ? state.setters : {}, + stateDefs = (state) ? state.defs : {}, + predefined, stateFlag; + + Object.entries(items).forEach(([key, value]) => { + + if (key && key !== 'name' && value != null) { + + predefined = setters[key]; + stateFlag = false; + + if (!predefined) { + + predefined = stateSetters[key]; + stateFlag = true; + } + + if (predefined) predefined.call(stateFlag ? this.state : this, value); + else if (typeof defs[key] !== 'undefined') this[key] = value; + else if (typeof stateDefs[key] !== 'undefined') state[key] = value; + } + }, this); + } + return this; +}; + +// __setDelta__ - copied over from the entity mixin. +P.setDelta = function (items = {}) { + + if (Object.keys(items).length) { + + let setters = this.deltaSetters, + defs = this.defs, + state = this.state, + stateSetters = (state) ? state.deltaSetters : {}, + stateDefs = (state) ? state.defs : {}, + predefined, stateFlag; + + Object.entries(items).forEach(([key, value]) => { + + if (key && key !== 'name' && value != null) { + + predefined = setters[key]; + stateFlag = false; + + if (!predefined) { + + predefined = stateSetters[key]; + stateFlag = true; + } + + if (predefined) predefined.call(stateFlag ? this.state : this, value); + else if (typeof defs[key] !== 'undefined') this[key] = addStrings(this[key], value); + else if (typeof stateDefs[key] !== 'undefined') state[key] = addStrings(state[key], value); + } + }, this); + } + return this; +}; + +// __host__, __getHost__ - copied over from the position mixin. +S.host = function (item) { + + if (item) { + + let host = artefact[item]; + + if (host && host.here) this.host = host.name; + else this.host = item; + } + else this.host = ''; +}; + +// __group__ - copied over from the position mixin. +G.group = function () { + + return (this.group) ? this.group.name : ''; +}; +S.group = function (item) { + + let g; + + if (item) { + + if (this.group && this.group.type === 'Group') this.group.removeArtefacts(this.name); + + if (item.substring) { + + g = group[item]; + + if (g) this.group = g; + else this.group = item; + } + else this.group = item; + } + + if (this.group && this.group.type === 'Group') this.group.addArtefacts(this.name); +}; + +// __getHere__ - returns current core position. +P.getHere = function () { + + return currentCorePosition; +}; + +// __delta__ - copied over from the position mixin. +S.delta = function (items = {}) { + + if (items) this.delta = mergeDiscard(this.delta, items); +}; + + +// __net__ +S.net = function (item) { + + if (item) { + + item = (item.substring) ? artefact[item] : item; + + if (item && item.type === 'Net') { + + this.net = item; + this.dirtyStart = true; + } + } +}; + +// __source__ +S.source = function (item) { + + item = (item.substring) ? artefact[item] : item; + + if (item && item.type === 'Picture') { + + let src = this.source; + + if (src && src.type === 'Picture') src.imageUnsubscribe(this.name); + + this.source = item; + item.imageSubscribe(this.name); + this.dirtyInput = true; + } +}; + +// __isHorizontalCopy__ +S.isHorizontalCopy = function (item) { + + this.isHorizontalCopy = (item) ? true : false; + this.dirtyPathData = true; +}; + + +// #### Prototype functions + +// `getHost` - copied over from the position mixin. +P.getHost = function () { + + if (this.currentHost) return this.currentHost; + else if (this.host) { + + let host = artefact[this.host]; + + if (host) { + + this.currentHost = host; + this.dirtyHost = true; + return this.currentHost; + } + } + return currentCorePosition; +}; + +// `updateByDelta`, `reverseByDelta` - copied over from the position mixin. +P.updateByDelta = function () { + + this.setDelta(this.delta); + + return this; +}; + +P.reverseByDelta = function () { + + let temp = {}; + + Object.entries(this.delta).forEach(([key, val]) => { + + if (val.substring) val = -(parseFloat(val)) + '%'; + else val = -val; + + temp[key] = val; + }); + + this.setDelta(temp); + + return this; +}; + +// `setDeltaValues` - copied over from the position mixin. +P.setDeltaValues = function (items = {}) { + + let delta = this.delta, + oldVal, action; + + Object.entries(items).forEach(([key, requirement]) => { + + if (xt(delta[key])) { + + action = requirement; + + oldVal = delta[key]; + + switch (action) { + + case 'reverse' : + if (oldVal.toFixed) delta[key] = -oldVal; + // TODO: reverse String% (and em, etc) values + break; + + case 'zero' : + if (oldVal.toFixed) delta[key] = 0; + // TODO: zero String% (and em, etc) values + break; + + case 'add' : + break; + + case 'subtract' : + break; + + case 'multiply' : + break; + + case 'divide' : + break; + } + } + }) + return this; +}; + +// Invalidate mid-init functionality +P.midInitActions = λnull; + +// Invalidating sensor functionality +P.cleanCollisionData = function () { + + return [0, []]; +}; +P.getSensors = function () { + + return []; +}; + +// #### Display cycle functionality + +// `prepareStamp` - function called as part of the Display cycle `compile` step. +// + This function is called before we get into the entity stamp promise cascade (thus it's a synchronous function). This is where we need to check whether we need to recalculate the path data which we'll use later to build the Loom entity's output image. +// + We only need to recalculate the path data on the initial render, and afterwards when the __dirtyPathData__ flag has been set. +// + If we perform the recalculation, then we need to make sure to set the __dirtyOutput__ flag, which will trigger the output image build. +P.prepareStamp = function() { + + this.badNet = true; + this.dirtyParticles = false; + + let {net, particlePositions} = this; + + if (net && net.particleStore && net.particleStore.length > 3) { + + let {rows, columns, particleStore} = net; + + if (rows && columns) { + + this.badNet = false; + this.rows = rows; + this.columns = columns; + + if (!particlePositions) particlePositions = []; + + // Sanity check + // + We will recalculate stuff if any of the net particles have moved since the last check. This is most simply done by constructing a string of all current particle position values and comparing it to the previous string. If they are the same, then we can use the stashed image construct, otherwise we build and stash a new image construct + + let checkPositions = []; + + particleStore.forEach(p => { + + let pos = p.position; + let {x, y} = pos; + + checkPositions.push([x, y]); + }); + let checkPositionsString = checkPositions.join(','), + particlePositionsString = particlePositions.join(','); + + if (particlePositionsString !== checkPositionsString) { + + this.particlePositions = checkPositions; + this.dirtyInput = true; + } + + if (this.sourceIsVideoOrSprite) this.dirtyInput = true; + } + } +}; + +// `setSourceDimension` - internal function called by `prepareStamp`. +// + We make the source dimensions a square of the longest row 'path' +// + This way, we can do a horizontal scan, or a vertical scan with no further calculation +// +// This function also: +// + Calculates the bounding box +// + Creates the perimeter path object +// + Stores the (relative) lengths of individual struts in each row +// +// TODO: consider drawing order of squares - is there a way we can predict which squares are going to be behind other squares ... +// + For instance by adding together the particle z values for each square, then filling in the lowest square first? +// + May also be a way of calculating a cull of squares so that we don't need to fill in squares entirely covered by other squares? +P.setSourceDimension = function () { + + if (!this.badNet) { + + const {columns, rows, particlePositions} = this; + + const results = [], + lengths = [], + xPos = [], + yPos = [], + top = [], + left = [], + right = [], + coords = [], + bottom = []; + + let x, xz, y, res, pos, coord, x0, x1, y0, y1, dx, dy, len, l, i, iz, j, jz; + + for (y = 0; y < rows; y++) { + + res = 0; + len = lengths[y] = []; + coord = coords[y] = []; + + for (x = 0, xz = columns - 1; x < xz; x++) { + + pos = (y * columns) + x; + + [x0, y0] = particlePositions[pos]; + [x1, y1] = particlePositions[pos + 1]; + + coord.push([x0, y0, x1, y1]); + + if (x === 0) { + + left.push([x0, y0]); + } + else if (x === xz - 1) { + + right.push([x1, y1]); + } + else if (y === 0) { + + top.push([x0, y0]); + + if (x === xz - 2) top.push([x1, y1]); + } + else if (y === rows - 1) { + + bottom.push([x0, y0]); + + if (x === xz - 2) bottom.push([x1, y1]); + } + + xPos.push(x0, x1); + yPos.push(y0, y1); + + dx = x1 - x0; + dy = y1 - y0; + + l = Math.sqrt((dx * dx) + (dy * dy)); + res += l; + len.push(l); + } + results.push(res); + } + this.sourceDimension = Math.max(...results); + + for (i = 0, iz = lengths.length; i < iz; i++) { + + l = results[i]; + len = lengths[i]; + coord = coords[i]; + + for (j = 0, jz = len.length; j < jz; j++) { + + if (l) len[j] = len[j] / l; + + coord[j].push(len[j]); + } + } + + this.struts = coords; + + let xMin = Math.min(...xPos), + yMin = Math.min(...yPos), + xMax = Math.max(...xPos), + yMax = Math.max(...yPos); + + this.boundingBox = [xMin, yMin, xMax - xMin, yMax - yMin]; + + left.reverse(); + bottom.reverse(); + + let p = `M${top[0][0]},${top[0][1]}L`; + + for (i = 1, iz = top.length; i < iz; i++) { + + [x, y] = top[i]; + p += `${x},${y} `; + } + for (i = 0, iz = right.length; i < iz; i++) { + + [x, y] = right[i]; + p += `${x},${y} `; + } + for (i = 0, iz = bottom.length; i < iz; i++) { + + [x, y] = bottom[i]; + p += `${x},${y} `; + } + for (i = 0, iz = left.length; i < iz; i++) { + + [x, y] = left[i]; + p += `${x},${y} `; + } + p += 'z'; + + this.pathObject = new Path2D(p); + } +}; + +// `simpleStamp` - Simple stamping is entirely synchronous +// + TODO: we may have to disable this functionality for the Loom entity, if we use a web worker for either the prepareStamp calculations, or to build the output image itself +P.simpleStamp = function (host, changes = {}) { + + if (host && host.type === 'Cell') { + + this.currentHost = host; + + if (changes) { + + this.set(changes); + this.prepareStamp(); + } + + this.regularStampSynchronousActions(); + } +}; + +// `stamp` - All entity stamping, except for simple stamps, goes through this function, which needs to return a Promise which will resolve in due course. +// + While other entitys have to worry about applying filters as part of the stamping process, this is not an issue for Loom entitys because filters are defined on, and applied to, the source Picture entity, not the Loom itself +// +// Here we check which dirty flags need actioning, and call a range of different functions to process the work. These flags are: +// + `dirtyInput` - the Picture entity has reported a change in its source, or copy attributes) +// + `dirtyOutput` - to render the cleaned input, or take account that the Loom paths' cursors have changed) +P.stamp = function (force = false, host, changes) { + + if (force) { + + if (host && host.type === 'Cell') this.currentHost = host; + + if (changes) { + + this.set(changes); + this.prepareStamp(); + } + return this.regularStamp(); + } + + if (this.visibility) { + + let self = this, + dirtyInput = this.dirtyInput; + + if (dirtyInput) { + + return new Promise((resolve, reject) => { + + self.cleanInput() + .catch(err => { + + // We don't need to completely reject if output is not clean + // + It should be enough to bale out of the stamp functionality and hope it resolves during the next RAF iteration + console.log(`${self.name} - cleanInput Error: source has a zero dimension`); + resolve(false); + }) + .then(res => { + + self.sourceImageData = res; + return self.cleanOutput(); + }) + .then(res => { + + self.output = res; + return self.regularStamp(); + }) + .then(res => { + + resolve(true); + }) + .catch(err => { + + reject(err); + }); + }) + } + else return this.regularStamp(); + } + else return Promise.resolve(false); +}; + +// #### Clean functions + +// `cleanInput` - internal function called by `stamp` +P.cleanInput = function () { + + let self = this; + + return new Promise((resolve, reject) => { + + self.dirtyInput = false; + + self.setSourceDimension(); + + let sourceDimension = self.sourceDimension; + + if (!sourceDimension) { + + self.dirtyInput = true; + reject(); + } + + let cell = requestCell(), + engine = cell.engine, + canvas = cell.element; + + canvas.width = sourceDimension; + canvas.height = sourceDimension; + engine.setTransform(1, 0, 0, 1, 0, 0); + + self.source.stamp(true, cell, { + startX: 0, + startY: 0, + handleX: 0, + handleY: 0, + offsetX: 0, + offsetY: 0, + roll: 0, + scale: 1, + + width: sourceDimension, + height: sourceDimension, + + method: 'fill', + }) + .then(res => { + + let sourceImageData = engine.getImageData(0, 0, sourceDimension, sourceDimension); + + releaseCell(cell); + resolve(sourceImageData); + }) + .catch(err => { + + releaseCell(cell); + reject(err); + }); + }); +}; + +// `cleanOutput` - internal function called by `stamp` +// + If you're not a fan of big functions, please look away now. +P.cleanOutput = function () { + + let self = this; + + return new Promise((resolve, reject) => { + + self.dirtyOutput = false; + + let {sourceDimension, sourceImageData, columns, rows, struts, boundingBox} = self; + + if (sourceImageData && rows - 1 > 0) { + + let [startX, startY, outputWidth, outputHeight] = boundingBox; + + outputWidth += startX; + outputHeight += startY; + + const inputCell = requestCell(), + inputEngine = inputCell.engine, + inputCanvas = inputCell.element; + + inputCanvas.width = sourceDimension; + inputCanvas.height = sourceDimension; + inputEngine.setTransform(1, 0, 0, 1, 0, 0); + inputEngine.putImageData(sourceImageData, 0, 0); + + const outputCell = requestCell(), + outputEngine = outputCell.engine, + outputCanvas = outputCell.element; + + outputCanvas.width = outputWidth; + outputCanvas.height = outputHeight; + outputEngine.globalAlpha = self.state.globalAlpha; + outputEngine.setTransform(1, 0, 0, 1, 0, 0); + + const inputStrutHeight = sourceDimension / (rows - 1), + inputStrutWidth = sourceDimension / (columns - 1); + + let topStruts, baseStruts, + maxLen, tStep, bStep, iStep, xtStep, ytStep, xbStep, ybStep, tx, ty, bx, by, sx, sy, + xLen, yLen, stripLength, stripAngle, + c, cz, r, rz, i, iz; + + for (r = 0, rz = rows - 1; r < rz; r++) { + // for (r = 1; r < 2; r++) { + + topStruts = struts[r]; + baseStruts = struts[r + 1]; + + for (c = 0, cz = columns - 1; c < cz; c++) { + // for (c = 1; c < 2; c++) { + + let [ltx, lty, rtx, rty, tLen] = topStruts[c]; + let [lbx, lby, rbx, rby, bLen] = baseStruts[c]; + + tLen *= sourceDimension; + bLen *= sourceDimension; + + maxLen = Math.max(tLen, bLen, inputStrutWidth); + + tStep = tLen / maxLen; + bStep = bLen / maxLen; + iStep = inputStrutWidth / maxLen; + + xtStep = (rtx - ltx) / maxLen; + ytStep = (rty - lty) / maxLen; + xbStep = (rbx - lbx) / maxLen; + ybStep = (rby - lby) / maxLen; + + for (i = 0; i < maxLen; i++) { + + tx = ltx + (xtStep * i); + ty = lty + (ytStep * i); + bx = lbx + (xbStep * i); + by = lby + (ybStep * i); + sy = r * inputStrutHeight; + sx = (c * inputStrutWidth) + (iStep * i); + + xLen = tx - bx; + yLen = ty - by; + stripLength = Math.sqrt((xLen * xLen) + (yLen * yLen)); + stripAngle = Math.asin(xLen / stripLength); + + outputEngine.setTransform(1, 0, 0, 1, tx, ty); + outputEngine.rotate(stripAngle); + + outputEngine.drawImage(inputCanvas, sx, sy, 1, inputStrutHeight, 0, 0, 1, stripLength); + } + } + } + + let iFactor = self.interferenceFactor, + iLoops = self.interferenceLoops, + + iWidth = Math.ceil(outputWidth * iFactor), + iHeight = Math.ceil(outputHeight * iFactor); + + inputCanvas.width = iWidth; + inputCanvas.height = iHeight; + + outputEngine.setTransform(1, 0, 0, 1, 0, 0); + inputEngine.setTransform(1, 0, 0, 1, 0, 0); + + for (let j = 0; j < iLoops; j++) { + + inputEngine.drawImage(outputCanvas, 0, 0, outputWidth, outputHeight, 0, 0, iWidth, iHeight); + outputEngine.drawImage(inputCanvas, 0, 0, iWidth, iHeight, 0, 0, outputWidth, outputHeight); + } + + let outputData = outputEngine.getImageData(0, 0, outputWidth, outputHeight); + + releaseCell(inputCell); + releaseCell(outputCell); + + self.dirtyTargetImage = true; + + resolve(outputData); + } + else reject(new Error(`${this.name} - cleanOutput Error: source has a zero dimension, or no data`)); + }); +}; + +// `regularStamp` - internal function called by `stamp` +P.regularStamp = function () { + + let self = this; + + return new Promise((resolve, reject) => { + + if (self.currentHost) { + + self.regularStampSynchronousActions(); + resolve(true); + } + reject(new Error(`${self.name} has no current host`)); + }); +}; + +// `regularStampSynchronousActions` - internal function called by `regularStamp` +P.regularStampSynchronousActions = function () { + + let dest = this.currentHost; + + if (dest) { + + let engine = dest.engine; + + if (!this.noCanvasEngineUpdates) dest.setEngine(this); + + this[this.method](engine); + } +}; + +// `getBoundingBox` - internal function called by `prepareStamp` and `cleanOutput` functions, as well as the various ___method___ functions. +// + Loom calculates its bounding box from the Shape path entitys associated with it +// + This function recalculates when presented with a `dirtyStart` flag - we rely on the Shape entitys to tell us when their paths have changed/updated +// + Results get stashed in the __boundingBox__ attribute for easier access, but all the method functions call this function just in case the box needs recalculating. +P.getBoundingBox = function () { + + return this.boundingBox; +}; + + +// ##### Stamp methods +// These 'method' functions stamp the Loom entity onto the canvas context supplied to them in the `engine` argument. + +// `fill` +P.fill = function (engine) { + + this.doFill(engine); +}; + +// `draw` +P.draw = function (engine) { + + this.doStroke(engine); +}; + +// `drawAndFill` +P.drawAndFill = function (engine) { + + this.doStroke(engine); + this.currentHost.clearShadow(); + this.doFill(engine); +}; + +// `fillAndDraw` +P.fillAndDraw = function (engine) { + + this.doFill(engine); + this.currentHost.clearShadow(); + this.doStroke(engine); +}; + +// `drawThenFill` +P.drawThenFill = function (engine) { + + this.doStroke(engine); + this.doFill(engine); +}; + +// `fillThenDraw` +P.fillThenDraw = function (engine) { + + this.doFill(engine); + this.doStroke(engine); +}; + +// `clear` +P.clear = function (engine) { + + let output = this.output, + canvas = (this.currentHost) ? this.currentHost.element : false, + gco = engine.globalCompositeOperation; + + if (output && canvas) { + + let tempCell = requestCell(), + tempEngine = tempCell.engine, + tempCanvas = tempCell.element; + + let w = canvas.width, + h = canvas.height; + + tempCanvas.width = w; + tempCanvas.height = h; + + tempEngine.putImageData(output, 0, 0); + engine.setTransform(1, 0, 0, 1, 0, 0); + engine.globalCompositeOperation = 'destination-out'; + engine.drawImage(tempCanvas, 0, 0); + engine.globalCompositeOperation = gco; + + releaseCell(tempCell); + } +}; + +// `none` +P.none = λnull; + + +// These __stroke__ and __fill__ functions handle most of the stuff that the method functions require to stamp the Loom entity onto a canvas cell. + +// `doStroke` +P.doStroke = function (engine) { + + engine.setTransform(1, 0, 0, 1, 0, 0); + engine.stroke(this.pathObject); +}; + +// `doFill` +// + Canvas API's `putImageData` function turns transparent pixels in the output into transparent in the host canvas - which is not what we want +// + Problem solved by putting output into a pool cell, then drawing it from there to the host cell +P.doFill = function (engine) { + + let output = this.output, + canvas = (this.currentHost) ? this.currentHost.element : false; + + if (output && canvas) { + + let tempCell = requestCell(), + tempEngine = tempCell.engine, + tempCanvas = tempCell.element; + + let w = canvas.width, + h = canvas.height; + + tempCanvas.width = w; + tempCanvas.height = h; + + tempEngine.putImageData(output, 0, 0); + engine.setTransform(1, 0, 0, 1, 0, 0); + engine.drawImage(tempCanvas, 0, 0); + + releaseCell(tempCell); + } +}; + + +// #### Collision functionality + +// `checkHit` +// + Overwrites mixin/position.js function +P.checkHit = function (items = [], mycell) { + + if (this.noUserInteraction) return false; + + if (!this.pathObject) return false; + + let tests = (!Array.isArray(items)) ? [items] : items, + poolCellFlag = false; + + if (!mycell) { + + mycell = requestCell(); + poolCellFlag = true; + } + + let engine = mycell.engine, + tx, ty; + + if (tests.some(test => { + + if (Array.isArray(test)) { + + tx = test[0]; + ty = test[1]; + } + else if (xta(test, test.x, test.y)) { + + tx = test.x; + ty = test.y; + } + else return false; + + if (!tx.toFixed || !ty.toFixed || isNaN(tx) || isNaN(ty)) return false; + + return engine.isPointInPath(this.pathObject, tx, ty, this.winding); + + }, this)) { + + let r = { + x: tx, + y: ty, + artefact: this + }; + + if (poolCellFlag) releaseCell(mycell); + + return r; + } + + if (poolCellFlag) releaseCell(mycell); + + return false; +}; + + +// #### Factory +// ``` +// TODO: documentation +// ``` +const makeMesh = function (items) { + return new Mesh(items); +}; + +constructors.Mesh = Mesh; + + +// #### Exports +export { + makeMesh, +}; diff --git a/source/scrawl.js b/source/scrawl.js index 4efc1ee29..fff1602eb 100644 --- a/source/scrawl.js +++ b/source/scrawl.js @@ -161,6 +161,11 @@ import { } from './factory/loom.js'; +import { + makeMesh, +} from './factory/mesh.js'; + + import { makeNet, } from './factory/net.js'; @@ -421,6 +426,10 @@ export default { makeLoom, + // factory/mesh.js + makeMesh, + + // factory/net.js makeNet, From d9c9baee86d3c0ecd4bedadb3b4b1abcf92d06b1 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Fri, 22 Jan 2021 19:31:03 +0000 Subject: [PATCH 16/28] fixed Mesh entity layout bug --- demo/particles-016.js | 2 +- source/factory/mesh.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/demo/particles-016.js b/demo/particles-016.js index 06173db08..28fbd1de4 100644 --- a/demo/particles-016.js +++ b/demo/particles-016.js @@ -111,7 +111,7 @@ let myMesh = scrawl.makeMesh({ source: 'my-flower', lineWidth: 2, - lineCap: 'round', + lineJoin: 'round', strokeStyle: 'orange', method: 'fillThenDraw', diff --git a/source/factory/mesh.js b/source/factory/mesh.js index b3f6ae5f2..19177ca58 100644 --- a/source/factory/mesh.js +++ b/source/factory/mesh.js @@ -860,6 +860,8 @@ P.cleanOutput = function () { return new Promise((resolve, reject) => { + const halfPi = Math.PI / 2; + self.dirtyOutput = false; let {sourceDimension, sourceImageData, columns, rows, struts, boundingBox} = self; @@ -935,7 +937,7 @@ P.cleanOutput = function () { xLen = tx - bx; yLen = ty - by; stripLength = Math.sqrt((xLen * xLen) + (yLen * yLen)); - stripAngle = Math.asin(xLen / stripLength); + stripAngle = Math.atan2(yLen, xLen) + halfPi; outputEngine.setTransform(1, 0, 0, 1, tx, ty); outputEngine.rotate(stripAngle); From 96523f699d7edaa0270eddc3f6c0560ddb548b26 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Sat, 23 Jan 2021 20:46:40 +0000 Subject: [PATCH 17/28] documenting new filters functionality --- demo/component-004.js | 38 +- demo/filters-001.js | 10 +- demo/filters-002.html | 1 + demo/filters-002.js | 4 +- demo/filters-003.html | 24 - demo/filters-003.js | 29 +- demo/filters-004.js | 9 +- demo/filters-005.js | 8 +- demo/filters-006.js | 12 +- demo/filters-007.html | 3 + demo/filters-007.js | 11 +- demo/filters-008.js | 6 +- demo/filters-009.js | 6 +- demo/filters-010.js | 9 +- demo/filters-011.js | 7 +- demo/filters-012.js | 8 +- demo/filters-013.js | 6 +- demo/filters-014.js | 6 +- demo/filters-015.html | 15 +- demo/filters-015.js | 8 +- demo/filters-016.html | 15 +- demo/filters-016.js | 8 +- demo/filters-017.html | 6 +- demo/filters-018.html | 2 +- demo/filters-018.js | 9 +- demo/filters-019.html | 7 +- demo/filters-020.html | 2 +- demo/{filters-051.html => filters-501.html} | 8 +- demo/{filters-051.js => filters-501.js} | 4 +- demo/{filters-052.html => filters-502.html} | 8 +- demo/{filters-052.js => filters-502.js} | 4 +- demo/{filters-053.html => filters-503.html} | 8 +- demo/{filters-053.js => filters-503.js} | 4 +- demo/{filters-054.html => filters-504.html} | 8 +- demo/{filters-054.js => filters-504.js} | 4 +- demo/{filters-055.html => filters-505.html} | 8 +- demo/{filters-055.js => filters-505.js} | 4 +- demo/index.html | 30 +- .../{filters-051.webp => filters-501.webp} | Bin .../{filters-052.webp => filters-502.webp} | Bin .../{filters-053.webp => filters-503.webp} | Bin .../{filters-054.webp => filters-504.webp} | Bin .../{filters-055.webp => filters-505.webp} | Bin docs/index.html | 14 +- source/factory/filter.js | 528 +++++++++++------- source/mixin/filter.js | 41 +- source/scrawl.js | 1 - source/worker/filter.js | 79 ++- 48 files changed, 601 insertions(+), 421 deletions(-) rename demo/{filters-051.html => filters-501.html} (90%) rename demo/{filters-051.js => filters-501.js} (98%) rename demo/{filters-052.html => filters-502.html} (88%) rename demo/{filters-052.js => filters-502.js} (97%) rename demo/{filters-053.html => filters-503.html} (93%) rename demo/{filters-053.js => filters-503.js} (98%) rename demo/{filters-054.html => filters-504.html} (91%) rename demo/{filters-054.js => filters-504.js} (98%) rename demo/{filters-055.html => filters-505.html} (92%) rename demo/{filters-055.js => filters-505.js} (98%) rename demo/thumbs/{filters-051.webp => filters-501.webp} (100%) rename demo/thumbs/{filters-052.webp => filters-502.webp} (100%) rename demo/thumbs/{filters-053.webp => filters-503.webp} (100%) rename demo/thumbs/{filters-054.webp => filters-504.webp} (100%) rename demo/thumbs/{filters-055.webp => filters-505.webp} (100%) diff --git a/demo/component-004.js b/demo/component-004.js index 9ee5f77d0..f65258a94 100644 --- a/demo/component-004.js +++ b/demo/component-004.js @@ -47,31 +47,17 @@ let mycolor = scrawl.makeColor({ // Setup Filter let myfilter = scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, + name: 'emboss', + method: 'emboss', + angle: 225, + strength: 3, + smoothing: 0, + tolerance: 0, + clamp: 0, + postProcessResults: true, + useNaturalGrayscale: false, + keepOnlyChangedAreas: false, }); // Test Block entity @@ -249,7 +235,7 @@ let myshape = scrawl.makeShape({ method: 'fillAndDraw', - filters: ['venetianBlinds'], + filters: ['emboss'], // svg outline of Japan from this source: // https://silhouettegarden.com/download/japan-silhouette/ @@ -707,7 +693,7 @@ let fixEntitys = () => { }); myshape.set({ - filters: 'venetianBlinds', + filters: 'emboss', }) }; diff --git a/demo/filters-001.js b/demo/filters-001.js index 9d5a2df9e..5ccf280f2 100644 --- a/demo/filters-001.js +++ b/demo/filters-001.js @@ -55,6 +55,11 @@ let report = function () { testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let radius = document.querySelector('#radius'), + passes = document.querySelector('#passes'), + step = document.querySelector('#step'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -62,9 +67,8 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - radius: ${blurFilter.radius} - step: ${blurFilter.step} - passes: ${blurFilter.passes}`; + Radius: ${radius.value}, Step: ${step.value}, Passes: ${passes.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-002.html b/demo/filters-002.html index 729d3fd7d..dd48facfe 100644 --- a/demo/filters-002.html +++ b/demo/filters-002.html @@ -41,6 +41,7 @@

    Test purpose

    • Create a test Picture entity
    • Create red, green, blue, cyan, magenta, yellow, notred, notgreen, notblue, grayscale, sepia and invert filters; apply them to the test entity
    • +
    • Update filter attribute and observe the effect it has on the entitys

    Annotated code

    diff --git a/demo/filters-002.js b/demo/filters-002.js index 03976aba3..5410f33da 100644 --- a/demo/filters-002.js +++ b/demo/filters-002.js @@ -228,6 +228,8 @@ let report = function () { testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -235,7 +237,7 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - opacity: ${filter.red.opacity}`; + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-003.html b/demo/filters-003.html index 41d74fc6d..9e87993d0 100644 --- a/demo/filters-003.html +++ b/demo/filters-003.html @@ -30,30 +30,6 @@

    Parameters for: brightness, saturation filters

    Level
    -
    Include red
    -
    - -
    - -
    Include green
    -
    - -
    - -
    Include blue
    -
    - -
    - diff --git a/demo/filters-003.js b/demo/filters-003.js index 48fc33728..f158e8c6c 100644 --- a/demo/filters-003.js +++ b/demo/filters-003.js @@ -79,6 +79,9 @@ let report = function () { testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let level = document.querySelector('#level'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -86,7 +89,8 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - level: ${filter.brightness.level}`; + Level: ${level.value} + Opacity: ${opacity.value}`; }; }(); @@ -101,18 +105,6 @@ const demoAnimation = scrawl.makeRender({ // #### User interaction -// scrawl.addNativeListener(['input', 'change'], (e) => { - -// levelFilters.forEach(f => f.set({ opacity: parseFloat(e.target.value) })); - -// }, '#opacity'); - -// scrawl.addNativeListener(['input', 'change'], (e) => { - -// levelFilters.forEach(f => f.set({ level: parseFloat(e.target.value) })); - -// }, '#level'); - scrawl.observeAndUpdate({ event: ['input', 'change'], @@ -124,10 +116,6 @@ scrawl.observeAndUpdate({ preventDefault: true, updates: { - - includeRed: ['includeRed', 'boolean'], - includeGreen: ['includeGreen', 'boolean'], - includeBlue: ['includeBlue', 'boolean'], opacity: ['opacity', 'float'], level: ['level', 'float'], }, @@ -144,19 +132,12 @@ scrawl.observeAndUpdate({ preventDefault: true, updates: { - - includeRed: ['includeRed', 'boolean'], - includeGreen: ['includeGreen', 'boolean'], - includeBlue: ['includeBlue', 'boolean'], opacity: ['opacity', 'float'], level: ['level', 'float'], }, }); // Setup form -document.querySelector('#includeRed').options.selectedIndex = 1; -document.querySelector('#includeGreen').options.selectedIndex = 1; -document.querySelector('#includeBlue').options.selectedIndex = 1; document.querySelector('#opacity').value = 1; document.querySelector('#level').value = 1; diff --git a/demo/filters-004.js b/demo/filters-004.js index 471c5b4fc..39b4aeaee 100644 --- a/demo/filters-004.js +++ b/demo/filters-004.js @@ -57,7 +57,8 @@ let report = function () { let lowCol = document.querySelector('#lowColor'), highCol = document.querySelector('#highColor'), - level = document.querySelector('#level'); + level = document.querySelector('#level'), + opacity = document.querySelector('#opacity'); return function () { @@ -66,9 +67,9 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - low color: ${lowCol.value} - high color: ${highCol.value} - level: ${level.value}`; + Low color: ${lowCol.value}, High color: ${highCol.value} + Level: ${level.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-005.js b/demo/filters-005.js index 0dccf8925..565436273 100644 --- a/demo/filters-005.js +++ b/demo/filters-005.js @@ -51,7 +51,8 @@ let report = function () { let red = document.querySelector('#red'), green = document.querySelector('#green'), - blue = document.querySelector('#blue'); + blue = document.querySelector('#blue'), + opacity = document.querySelector('#opacity'); return function () { @@ -60,9 +61,8 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: ${red.value} - green: ${green.value} - blue: ${blue.value}`; + Red: ${red.value}, Green: ${green.value}, Blue: ${blue.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-006.js b/demo/filters-006.js index 9f620afb5..7cd57f580 100644 --- a/demo/filters-006.js +++ b/demo/filters-006.js @@ -53,7 +53,8 @@ let report = function () { let red = document.querySelector('#red'), green = document.querySelector('#green'), alpha = document.querySelector('#alpha'), - blue = document.querySelector('#blue'); + blue = document.querySelector('#blue'), + opacity = document.querySelector('#opacity'); return function () { @@ -62,10 +63,11 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: [${red.value}] - green: [${green.value}] - blue: [${blue.value}] - alpha: [${alpha.value}]`; + Red: [${red.value}] + Green: [${green.value}] + Blue: [${blue.value}] + Alpha: [${alpha.value}] + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-007.html b/demo/filters-007.html index 1ee51ac2f..db230913b 100644 --- a/demo/filters-007.html +++ b/demo/filters-007.html @@ -33,6 +33,9 @@

    Parameters for: channels filter

    Blue
    +
    Alpha
    +
    +
    Opacity
    diff --git a/demo/filters-007.js b/demo/filters-007.js index 8c74a3b2b..1a9f46f17 100644 --- a/demo/filters-007.js +++ b/demo/filters-007.js @@ -51,7 +51,9 @@ let report = function () { let red = document.querySelector('#red'), green = document.querySelector('#green'), - blue = document.querySelector('#blue'); + blue = document.querySelector('#blue'), + alpha = document.querySelector('#alpha'), + opacity = document.querySelector('#opacity'); return function () { @@ -60,9 +62,8 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: ${red.value} - green: ${green.value} - blue: ${blue.value}`; + Red: ${red.value}, Green: ${green.value}, Blue: ${blue.value}, Alpha: ${alpha.value} + Opacity: ${opacity.value}`; }; }(); @@ -93,6 +94,7 @@ scrawl.observeAndUpdate({ red: ['red', 'float'], green: ['green', 'float'], blue: ['blue', 'float'], + alpha: ['alpha', 'float'], opacity: ['opacity', 'float'], }, }); @@ -101,6 +103,7 @@ scrawl.observeAndUpdate({ document.querySelector('#red').value = 1; document.querySelector('#green').value = 1; document.querySelector('#blue').value = 1; +document.querySelector('#alpha').value = 1; document.querySelector('#opacity').value = 1; diff --git a/demo/filters-008.js b/demo/filters-008.js index af24bbe0c..67dd88ecd 100644 --- a/demo/filters-008.js +++ b/demo/filters-008.js @@ -63,7 +63,8 @@ let report = function () { blueInGreen = document.querySelector('#blueInGreen'), redInBlue = document.querySelector('#redInBlue'), greenInBlue = document.querySelector('#greenInBlue'), - blueInBlue = document.querySelector('#blueInBlue'); + blueInBlue = document.querySelector('#blueInBlue'), + opacity = document.querySelector('#opacity'); return function () { @@ -74,7 +75,8 @@ let report = function () { testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} In Red - red: ${redInRed.value} green: ${greenInRed.value} blue: ${blueInRed.value} In Green - red: ${redInGreen.value} green: ${greenInGreen.value} blue: ${blueInGreen.value} - In Blue - red: ${redInBlue.value} green: ${greenInBlue.value} blue: ${blueInBlue.value}`; + In Blue - red: ${redInBlue.value} green: ${greenInBlue.value} blue: ${blueInBlue.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-009.js b/demo/filters-009.js index f1fe46196..8d425ee27 100644 --- a/demo/filters-009.js +++ b/demo/filters-009.js @@ -53,7 +53,8 @@ let report = function () { let tile_width = document.querySelector('#tile_width'), tile_height = document.querySelector('#tile_height'), offset_x = document.querySelector('#offset_x'), - offset_y = document.querySelector('#offset_y'); + offset_y = document.querySelector('#offset_y'), + opacity = document.querySelector('#opacity'); return function () { @@ -63,7 +64,8 @@ let report = function () { testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} Tile dimensions - width: ${tile_width.value} height: ${tile_height.value} - Offset - x: ${offset_x.value} y: ${offset_y.value}`; + Offset - x: ${offset_x.value} y: ${offset_y.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-010.js b/demo/filters-010.js index b9aeca6b6..00f1ac156 100644 --- a/demo/filters-010.js +++ b/demo/filters-010.js @@ -49,7 +49,8 @@ let report = function () { testMessage = document.querySelector('#reportmessage'); let lowCol = document.querySelector('#lowColor'), - highCol = document.querySelector('#highColor'); + highCol = document.querySelector('#highColor'), + opacity = document.querySelector('#opacity'); return function () { @@ -58,9 +59,9 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - low color: ${lowCol.value} - high color: ${highCol.value} - range: [${myFilter.ranges}]`; + (Low color: ${lowCol.value}, High color: ${highCol.value}) + Range: [${myFilter.ranges}] + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-011.js b/demo/filters-011.js index 0e1f4a82f..64fae409f 100644 --- a/demo/filters-011.js +++ b/demo/filters-011.js @@ -59,7 +59,8 @@ let report = function () { let col = document.querySelector('#color'), trans = document.querySelector('#transparentAt'), - opaq = document.querySelector('#opaqueAt'); + opaq = document.querySelector('#opaqueAt'), + opacity = document.querySelector('#opacity'); return function () { @@ -69,8 +70,8 @@ let report = function () { testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} Key color: ${col.value} - Transparent at: ${trans.value} - Opaque at: ${opaq.value}`; + Transparent at: ${trans.value}, Opaque at: ${opaq.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-012.js b/demo/filters-012.js index 19bbffbe5..925ecac95 100644 --- a/demo/filters-012.js +++ b/demo/filters-012.js @@ -55,8 +55,7 @@ let report = function () { testTime, testNow, testMessage = document.querySelector('#reportmessage'); - let lowCol = document.querySelector('#lowColor'), - highCol = document.querySelector('#highColor'); + let opacity = document.querySelector('#opacity'); return function () { @@ -65,8 +64,9 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - matrix3: ${matrix3.weights} - matrix5: ${matrix5.weights}`; + matrix3 weights array: ${matrix3.weights} + matrix5 weights array: ${matrix5.weights} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-013.js b/demo/filters-013.js index 63d2feb97..9f52b701c 100644 --- a/demo/filters-013.js +++ b/demo/filters-013.js @@ -50,7 +50,8 @@ let report = function () { testTime, testNow, testMessage = document.querySelector('#reportmessage'); - let flood = document.querySelector('#flood'); + let flood = document.querySelector('#flood'), + opacity = document.querySelector('#opacity'); return function () { @@ -59,7 +60,8 @@ let report = function () { testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - flood color: ${flood.value}`; + Flood color: ${flood.value} + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-014.js b/demo/filters-014.js index 03d717dab..d62511d37 100644 --- a/demo/filters-014.js +++ b/demo/filters-014.js @@ -62,7 +62,8 @@ let report = function () { alpha_2 = document.querySelector('#alpha_2'), alpha_3 = document.querySelector('#alpha_3'), offset_x = document.querySelector('#offset_x'), - offset_y = document.querySelector('#offset_y'); + offset_y = document.querySelector('#offset_y'), + opacity = document.querySelector('#opacity'); return function () { @@ -74,7 +75,8 @@ let report = function () { Tile dimensions - width: ${tile_width.value} height: ${tile_height.value} Gutter dimensions - width: ${gutter_width.value} height: ${gutter_height.value} Offset - x: ${offset_x.value} y: ${offset_y.value} - areaAlphaLevels: [${alpha_0.value}, ${alpha_1.value}, ${alpha_2.value}, ${alpha_3.value}]`; + areaAlphaLevels array: [${alpha_0.value}, ${alpha_1.value}, ${alpha_2.value}, ${alpha_3.value}] + Opacity: ${opacity.value}`; }; }(); diff --git a/demo/filters-015.html b/demo/filters-015.html index c454752b1..3a239bd28 100644 --- a/demo/filters-015.html +++ b/demo/filters-015.html @@ -24,7 +24,7 @@

    Using assets in the filter stream; filter compositing

    -
    Source
    +
    Line IN
    -
    Destination
    +
    Line MIX
    @@ -35,7 +35,7 @@

    Filter blend operation

    -
    Blend destination
    +
    Line MIX
    - -
    Canvas height
    -
    - -
    Noise function
    +
    Noise engine
    - + + @@ -64,48 +58,56 @@

    Using a Noise asset with a displace filter

    Monochrome range
    -
    +
    Gradient start
    -
    +
    Gradient end
    -
    +
    Hue start
    -
    +
    Hue range
    -
    +
    Saturation
    -
    +
    Luminosity
    -
    +
    -
    Octave function
    -
    +
    Octaves
    +
    + +
    Octave function
    +
    -
    Octaves
    -
    +
    Persistence
    +
    + +
    Lacunarity
    +
    Sum function
    Sine Frequency Coefficient
    -
    +
    Smoothing
    @@ -114,37 +116,57 @@

    Using a Noise asset with a displace filter

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    -
    Presets
    -
    - -
    +
    Modular Amplitude
    +
    -
    Scale
    -
    - -
    Size
    -
    +
    Canvas width
    +
    -
    Random seed
    -
    +
    Canvas height
    +
    -
    Persistence
    -
    +
    Scale
    +
    -
    Lacunarity
    -
    +
    Size
    +
    -
    Modular Amplitude
    -
    +
    Random seed
    +
    diff --git a/demo/filters-019.js b/demo/filters-019.js index 033e358e8..a5dd8c5ca 100644 --- a/demo/filters-019.js +++ b/demo/filters-019.js @@ -17,7 +17,7 @@ let noiseAsset = scrawl.makeNoise({ width: 400, height: 400, - noiseFunction: 'simplex', + noiseEngine: 'improved-perlin', }); // Create the filter @@ -140,7 +140,7 @@ scrawl.observeAndUpdate({ width: ['width', 'round'], height: ['height', 'round'], - noiseFunction: ['noiseFunction', 'raw'], + noiseEngine: ['noiseEngine', 'raw'], color: ['color', 'raw'], gradientStart: ['gradientStart', 'raw'], gradientEnd: ['gradientEnd', 'raw'], @@ -148,7 +148,7 @@ scrawl.observeAndUpdate({ octaves: ['octaves', 'round'], sumFunction: ['sumFunction', 'raw'], sineFrequencyCoeff: ['sineFrequencyCoeff', 'float'], - smoothing: ['smoothing', 'float'], + smoothing: ['smoothing', 'raw'], scale: ['scale', 'round'], size: ['size', 'round'], seed: ['seed', 'raw'], @@ -166,58 +166,102 @@ scrawl.observeAndUpdate({ scrawl.addNativeListener(['input', 'change'], function (e) { - let val = e.target.value; - - if (null != val) { - - let oFunc = document.querySelector('#octaveFunction'), - oct = document.querySelector('#octaves'), - sFunc = document.querySelector('#sumFunction'); - - switch (val) { - - case 'plain' : - noiseAsset.presetTo(val); - oct.value = 1; - oFunc.options.selectedIndex = 0; - sFunc.options.selectedIndex = 0; - break; - - case 'clouds' : - noiseAsset.presetTo(val); - oct.value = 5; - oFunc.options.selectedIndex = 0; - sFunc.options.selectedIndex = 0; - break; - - case 'turbulence' : - noiseAsset.presetTo(val); - oct.value = 5; - oFunc.options.selectedIndex = 1; - sFunc.options.selectedIndex = 0; - break; - - case 'marble' : - noiseAsset.presetTo(val); - oct.value = 5; - oFunc.options.selectedIndex = 1; - sFunc.options.selectedIndex = 1; - break; - - case 'wood' : - noiseAsset.presetTo(val); - oct.value = 1; - oFunc.options.selectedIndex = 0; - sFunc.options.selectedIndex = 2; - break; - } + let val = e.target.value, + sfc = document.querySelector('#sineFrequencyCoeff'), + ma = document.querySelector('#modularAmplitude'); + + if (val === 'sine' || val === 'sine-x' || val === 'sine-y') { + + sfc.removeAttribute('disabled'); + ma.setAttribute('disabled', 'true'); + } + else if (val === 'modular') { + + sfc.setAttribute('disabled', 'true'); + ma.removeAttribute('disabled'); + } + else { + + sfc.setAttribute('disabled', 'true'); + ma.setAttribute('disabled', 'true'); + } + +}, '#sumFunction'); + +scrawl.addNativeListener(['input', 'change'], function (e) { + + let val = e.target.value, + s = document.querySelector('#smoothing'); + + if (val === 'simplex') s.setAttribute('disabled', 'true'); + else s.removeAttribute('disabled'); + +}, '#noiseEngine'); + +scrawl.addNativeListener(['input', 'change'], function (e) { + + let val = parseFloat(e.target.value), + p = document.querySelector('#persistence'), + l = document.querySelector('#lacunarity'); + + if (val > 1) { + p.removeAttribute('disabled'); + l.removeAttribute('disabled'); + } + else { + p.setAttribute('disabled', 'true'); + l.setAttribute('disabled', 'true'); + } +}, '#octaves'); + +scrawl.addNativeListener(['input', 'change'], function (e) { + + let val = e.target.value, + ms = document.querySelector('#monochromeStart'), + mr = document.querySelector('#monochromeRange'), + gs = document.querySelector('#gradientStart'), + ge = document.querySelector('#gradientEnd'), + hs = document.querySelector('#hueStart'), + hr = document.querySelector('#hueRange'), + s = document.querySelector('#saturation'), + l = document.querySelector('#luminosity'); + + if (val === 'monochrome') { + ms.removeAttribute('disabled'); + mr.removeAttribute('disabled'); + gs.setAttribute('disabled', 'true'); + ge.setAttribute('disabled', 'true'); + hs.setAttribute('disabled', 'true'); + hr.setAttribute('disabled', 'true'); + s.setAttribute('disabled', 'true'); + l.setAttribute('disabled', 'true'); + } + else if (val === 'hue') { + hs.removeAttribute('disabled'); + hr.removeAttribute('disabled'); + s.removeAttribute('disabled'); + l.removeAttribute('disabled'); + ms.setAttribute('disabled', 'true'); + mr.setAttribute('disabled', 'true'); + gs.setAttribute('disabled', 'true'); + ge.setAttribute('disabled', 'true'); + } + else { + gs.removeAttribute('disabled'); + ge.removeAttribute('disabled'); + ms.setAttribute('disabled', 'true'); + mr.setAttribute('disabled', 'true'); + hs.setAttribute('disabled', 'true'); + hr.setAttribute('disabled', 'true'); + s.setAttribute('disabled', 'true'); + l.setAttribute('disabled', 'true'); } -}, '#presets'); +}, '#color'); // Setup form document.querySelector('#width').value = 400; document.querySelector('#height').value = 400; -document.querySelector('#noiseFunction').options.selectedIndex = 1; +document.querySelector('#noiseEngine').options.selectedIndex = 1; document.querySelector('#color').options.selectedIndex = 0; document.querySelector('#gradientStart').value = '#ff0000'; document.querySelector('#gradientEnd').value = '#00ff00'; @@ -232,7 +276,6 @@ document.querySelector('#seed').value = 'noize'; document.querySelector('#persistence').value = 0.5; document.querySelector('#lacunarity').value = 2; document.querySelector('#modularAmplitude').value = 5; -document.querySelector('#presets').options.selectedIndex = 0; document.querySelector('#monochromeStart').value = 0; document.querySelector('#monochromeRange').value = 255; document.querySelector('#hueStart').value = 0; diff --git a/source/core/utilities.js b/source/core/utilities.js index 8bb7431cc..92ef19305 100644 --- a/source/core/utilities.js +++ b/source/core/utilities.js @@ -131,6 +131,10 @@ const generateUniqueString = () => { return performance.now().toString(36) + Math.random().toString(36).substr(2); }; +// __interpolate__ clamp a value between a maximum and minimum value +const interpolate = function (val, min, max) { + return min + val * (max - min); +}; // __isa_boolean__ checks to make sure the argument is a boolean const isa_boolean = item => (typeof item === 'boolean') ? true : false; @@ -595,6 +599,107 @@ const seededRandomNumberGenerator = function (seed) { }; +// ##### Easing functions +// The following easing variations come from the [easings.net](https://easings.net/) web page +// + Note: the naming convention for easing is different in Scrawl-canvas. Easing out implies a speeding up, while easing in implies a slowing down. Think of a train easing into a station, and then easing out of it again as it continues its journey. +const easeOutSine = function (t) { return 1 - Math.cos((t * Math.PI) / 2) }; +const easeInSine = function (t) { return Math.sin((t * Math.PI) / 2) }; +const easeOutInSine = function (t) { return -(Math.cos(Math.PI * t) - 1) / 2 }; + +const easeOutQuad = function (t) { return t * t }; +const easeInQuad = function (t) { return 1 - ((1 - t) * (1 - t)) }; +const easeOutInQuad = function(t) { return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2 }; + +const easeOutCubic = function(t) { return t * t * t }; +const easeInCubic = function(t) { return 1 - Math.pow(1 - t, 3) }; +const easeOutInCubic = function(t) { return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2 }; + +const easeOutQuart = function(t) { return t * t * t * t }; +const easeInQuart = function(t) { return 1 - Math.pow(1 - t, 4) }; +const easeOutInQuart = function(t) { return t < 0.5 ? 8 * t * t * t * t : 1 - Math.pow(-2 * t + 2, 4) / 2 }; + +const easeOutQuint = function(t) { return t * t * t * t * t }; +const easeInQuint = function(t) { return 1 - Math.pow(1 - t, 5) }; +const easeOutInQuint = function(t) { return t < 0.5 ? 16 * t * t * t * t * t : 1 - Math.pow(-2 * t + 2, 5) / 2 }; + +const easeOutExpo = function(t) { return t === 0 ? 0 : Math.pow(2, 10 * t - 10) }; +const easeInExpo = function(t) { return t === 1 ? 1 : 1 - Math.pow(2, -10 * t) }; +const easeOutInExpo = function(t) { + if (t === 0 || t === 1) return t; + return t < 0.5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2; +}; + +const easeOutCirc = function(t) { return 1 - Math.sqrt(1 - Math.pow(t, 2)) }; +const easeInCirc = function(t) { return Math.sqrt(1 - Math.pow(t - 1, 2)) }; +const easeOutInCirc = function(t) { return t < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * t, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * t + 2, 2)) + 1) / 2 }; + +const easeOutBack = function(t) { return (2.70158 * t * t * t) - (1.70158 * t * t) }; +const easeInBack = function(t) { return 1 + (2.70158 * Math.pow(t - 1, 3)) + (1.70158 * Math.pow(t - 1, 2)) }; +const easeOutInBack = function(t) { + let c1 = 1.70158, c2 = c1 * 1.525; + return t < 0.5 ? (Math.pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2 : (Math.pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2; +}; + +const easeOutElastic = function(t) { + const c4 = (2 * Math.PI) / 3; + if (t === 0 || t === 1) return t; + return -Math.pow(2, 10 * t - 10) * Math.sin((t * 10 - 10.75) * c4); +}; + +const easeInElastic = function(t) { + const c4 = (2 * Math.PI) / 3; + if (t === 0 || t === 1) return t; + return Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1; +}; + +const easeOutInElastic = function(t) { + const c5 = (2 * Math.PI) / 4.5; + if (t === 0 || t === 1) return t; + return t < 0.5 ? + -(Math.pow(2, 20 * t - 10) * Math.sin((20 * t - 11.125) * c5)) / 2 : + (Math.pow(2, -20 * t + 10) * Math.sin((20 * t - 11.125) * c5)) / 2 + 1; +}; + +const easeOutBounce = function(t) { + t = 1 - t; + const n1 = 7.5625, d1 = 2.75; + if (t < 1 / d1) return 1 - (n1 * t * t); + if (t < 2 / d1) return 1 - (n1 * (t -= 1.5 / d1) * t + 0.75); + if (t < 2.5 / d1) return 1 - (n1 * (t -= 2.25 / d1) * t + 0.9375); + return 1 - (n1 * (t -= 2.625 / d1) * t + 0.984375); +}; + +const easeInBounce = function(t) { + const n1 = 7.5625, d1 = 2.75; + if (t < 1 / d1) return n1 * t * t; + if (t < 2 / d1) return n1 * (t -= 1.5 / d1) * t + 0.75; + if (t < 2.5 / d1) return n1 * (t -= 2.25 / d1) * t + 0.9375; + return n1 * (t -= 2.625 / d1) * t + 0.984375; +}; + +const easeOutInBounce = function(t) { + const n1 = 7.5625, d1 = 2.75; + let res; + if (t < 0.5) { + t = 1 - 2 * t; + if (t < 1 / d1) res = n1 * t * t; + else if (t < 2 / d1) res = n1 * (t -= 1.5 / d1) * t + 0.75; + else if (t < 2.5 / d1) res = n1 * (t -= 2.25 / d1) * t + 0.9375; + else res = n1 * (t -= 2.625 / d1) * t + 0.984375; + return (1 - res) / 2; + } + else { + t = 2 * t - 1; + if (t < 1 / d1) res = n1 * t * t; + else if (t < 2 / d1) res = n1 * (t -= 1.5 / d1) * t + 0.75; + else if (t < 2.5 / d1) res = n1 * (t -= 2.25 / d1) * t + 0.9375; + else res = n1 * (t -= 2.625 / d1) * t + 0.984375; + return (1 + res) / 2; + } +}; + + + // #### Exports export { addStrings, @@ -606,6 +711,7 @@ export { λpromise, generateUuid, generateUniqueString, + interpolate, isa_boolean, isa_canvas, isa_dom, @@ -623,4 +729,36 @@ export { xta, xtGet, xto, + + easeOutSine, + easeInSine, + easeOutInSine, + easeOutQuad, + easeInQuad, + easeOutInQuad, + easeOutCubic, + easeInCubic, + easeOutInCubic, + easeOutQuart, + easeInQuart, + easeOutInQuart, + easeOutQuint, + easeInQuint, + easeOutInQuint, + easeOutExpo, + easeInExpo, + easeOutInExpo, + easeOutCirc, + easeInCirc, + easeOutInCirc, + easeOutBack, + easeInBack, + easeOutInBack, + easeOutElastic, + easeInElastic, + easeOutInElastic, + easeOutBounce, + easeInBounce, + easeOutInBounce, }; + diff --git a/source/factory/cell.js b/source/factory/cell.js index ad1ca13eb..220ec0099 100644 --- a/source/factory/cell.js +++ b/source/factory/cell.js @@ -157,7 +157,7 @@ P = filterMix(P); // + Attributes defined in the [anchor mixin](../mixin/anchor.html): __anchor__. // + Attributes defined in the [filter mixin](../mixin/filter.html): __filters, isStencil__. // + Attributes defined in the [cascade mixin](../mixin/cascade.html): __groups__. -// + Attributes defined in the [pattern mixin](../mixin/pattern.html): __repeat__. +// + Attributes defined in the [pattern mixin](../mixin/pattern.html): __repeat, patternMatrix, matrixA, matrixB, matrixC, matrixD, matrixE, matrixF__. // + Attributes defined in the [asset mixin](../mixin/asset.html): __source, subscribers__. let defaultAttributes = { diff --git a/source/factory/color.js b/source/factory/color.js index 62e213704..cf651306f 100644 --- a/source/factory/color.js +++ b/source/factory/color.js @@ -21,7 +21,7 @@ // #### Imports import { constructors, entity } from '../core/library.js'; -import { mergeOver, xt, xtGet, isa_obj } from '../core/utilities.js'; +import { mergeOver, xt, xtGet, isa_obj, easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce } from '../core/utilities.js'; import baseMix from '../mixin/base.js'; @@ -98,6 +98,9 @@ let defaultAttributes = { // The __autoUpdate__ Boolean flag switches on color animation autoUpdate: false, +// The __easing__ attribute affects the `getRangeColor` function, applying an easing function to those requests. + easing: 'linear', + // ##### Non-retained argument attributes (for factory, clone, set functions) // __random__ - the factory function, and the clone function, can ask the Color object to set its initial channel values randomly by including this attribute in the argument object; if the attribute resolves to true, random color functionality is invoked to set the r, g and b channel attributes to appropriately random values. @@ -338,7 +341,7 @@ P.generateRandomColor = function (items = {}) { return this; }; -// `getRangeColor` - function which generates a color in the rtange between the minimum and maximum colors. +// `getRangeColor` - function which generates a color in the range between the minimum and maximum colors. // + when the argument is `0` the minimum color is returned; values below 0 are rounded up to 0 // + when the argument is `1` the maximum color is returned; values above 1 are rounded down to 1 // + values between `0` and `1` will return a blended color between the minimum and maximum colors @@ -349,7 +352,103 @@ P.getRangeColor = function (item) { let floor = Math.floor; - let {rMin, gMin, bMin, aMin, rMax, gMax, bMax, aMax} = this; + let {rMin, gMin, bMin, aMin, rMax, gMax, bMax, aMax, easing} = this; + + if (easing !== 'linear') { + + switch (easing) { + case 'easeOutSine' : + item = easeOutSine(item); + break; + case 'easeInSine' : + item = easeInSine(item); + break; + case 'easeOutInSine' : + item = easeOutInSine(item); + break; + case 'easeOutQuad' : + item = easeOutQuad(item); + break; + case 'easeInQuad' : + item = easeInQuad(item); + break; + case 'easeOutInQuad' : + item = easeOutInQuad(item); + break; + case 'easeOutCubic' : + item = easeOutCubic(item); + break; + case 'easeInCubic' : + item = easeInCubic(item); + break; + case 'easeOutInCubic' : + item = easeOutInCubic(item); + break; + case 'easeOutQuart' : + item = easeOutQuart(item); + break; + case 'easeInQuart' : + item = easeInQuart(item); + break; + case 'easeOutInQuart' : + item = easeOutInQuart(item); + break; + case 'easeOutQuint' : + item = easeOutQuint(item); + break; + case 'easeInQuint' : + item = easeInQuint(item); + break; + case 'easeOutInQuint' : + item = easeOutInQuint(item); + break; + case 'easeOutExpo' : + item = easeOutExpo(item); + break; + case 'easeInExpo' : + item = easeInExpo(item); + break; + case 'easeOutInExpo' : + item = easeOutInExpo(item); + break; + case 'easeOutCirc' : + item = easeOutCirc(item); + break; + case 'easeInCirc' : + item = easeInCirc(item); + break; + case 'easeOutInCirc' : + item = easeOutInCirc(item); + break; + case 'easeOutBack' : + item = easeOutBack(item); + break; + case 'easeInBack' : + item = easeInBack(item); + break; + case 'easeOutInBack' : + item = easeOutInBack(item); + break; + case 'easeOutElastic' : + item = easeOutElastic(item); + break; + case 'easeInElastic' : + item = easeInElastic(item); + break; + case 'easeOutInElastic' : + item = easeOutInElastic(item); + break; + case 'easeOutBounce' : + item = easeOutBounce(item); + break; + case 'easeInBounce' : + item = easeInBounce(item); + break; + case 'easeOutInBounce' : + item = easeOutInBounce(item); + break; + } + } if (item > 1) item = 1; else if (item < 0) item = 0; diff --git a/source/factory/noise.js b/source/factory/noise.js index 6d7cbd8b6..57febd638 100644 --- a/source/factory/noise.js +++ b/source/factory/noise.js @@ -1,14 +1,41 @@ // # Noise factory -// TODO: documentatiomn +// The purpose of the Noise asset is to give us a resource for generating noisy (semi-regular) maps. These can then be used directly as Picture or Pattern images, or uploaded to the filter worker object as part of a filter that uses displacement map functionality. + + +// #### Current functionality +// At the moment the Noise asset can generate Perlin-type noise, with engines supplied for: +// + Perlin (classic) +// + Perlin (improved) +// + Simplex - the default engine +// + Value +// +// These engines are supported by a number of settable (and thus animatable) attributes, including special functions for smoothing the engine output. Demo [Filters-019](../../demo/filters-019.html) has been set up to allow for experimenting with these attributes +// +// The noise generated will be output to a dedicated offscreen <canvas> element, which is the asset used by Picture entitys, Pattern styles and filters. The output image can be set to three color schemas: +// + __Monochrome__ (black - gray - white) +// + __Gradient__ - mediated by a Scrawl-canvas Color object +// + __Hue__ - where the engine output for each pixel is interpreted as the hue component of an HSL color +// +// (___NOTE:___ Perlin, Simplex and Value noise generator code based on code found in the [canvas-noise GitHub repository](https://github.com/lencinhaus/canvas-noise) written by [lencinhaus](https://github.com/lencinhaus). + + +// #### Possible future functionality +// There's no reason why the Noise asset cannot be extended to output other types of (semi-regular) noise data. For instance: +// + [Nearest neighbour interpolation](https://en.wikipedia.org/wiki/Nearest-neighbor_interpolation) - for tesselations, particularly with [unstructured grids](https://en.wikipedia.org/wiki/Unstructured_grid) +// + [Linear interpolation](https://en.wikipedia.org/wiki/Linear_interpolation) +// + [Bilinear interpolation](https://en.wikipedia.org/wiki/Bilinear_interpolation) +// + [Bicubic interpolation](https://en.wikipedia.org/wiki/Bicubic_interpolation) - and see also (this blog post)[https://jobtalle.com/cubic_noise.html] +// + Using non-rectangular [grids or meshes](https://en.wikipedia.org/wiki/Types_of_mesh) as a starting point for generating noise. For instance: [sunflower pattern](https://www.sciencemag.org/news/2016/05/sunflowers-show-complex-fibonacci-sequences) // #### Demos: -// + TODO: demos +// + [Canvas-044](../../demo/canvas-044.html) - Building more complex patterns +// + [Filters-019](../../demo/filters-019.html) - Using a Noise asset with a displace filter // #### Imports import { constructors } from '../core/library.js'; -import { mergeOver, λnull, λthis, λfirstArg, removeItem, seededRandomNumberGenerator } from '../core/utilities.js'; +import { mergeOver, λnull, λthis, λfirstArg, removeItem, seededRandomNumberGenerator, interpolate, easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce } from '../core/utilities.js'; import { makeColor } from './color.js'; @@ -25,7 +52,6 @@ const Noise = function (items = {}) { let mycanvas = document.createElement('canvas'); mycanvas.id = this.name; - this.installElement(mycanvas); this.perm = []; @@ -62,44 +88,78 @@ P.isAsset = true; // #### Mixins // + [base](../mixin/base.html) -// + [entity](../mixin/entity.html) +// + [asset](../mixin/asset.html) +// + [pattern](../mixin/pattern.html) P = baseMix(P); P = assetMix(P); P = patternMix(P); // #### Noise attributes +// + Attributes defined in the [base mixin](../mixin/base.html): __name__. +// + Attributes defined in the [asset mixin](../mixin/asset.html): __source, subscribers__. +// + Attributes defined in the [pattern mixin](../mixin/pattern.html): __repeat, patternMatrix, matrixA, matrixB, matrixC, matrixD, matrixE, matrixF__. let defaultAttributes = { + // The offscreen canvas dimensions, within which the noise will be generated, is set using the __width__ and __height__ attributes. These take Number values. width: 300, height: 150, - seed: 'noize', - noiseFunction: 'perlin_improved', - smoothing: 'quintic', - scale: 50, - size: 256, - octaves: 1, - persistence: 0.5, - lacunarity: 2, - independent: false, - octaveFunction: 'none', - sumFunction: 'none', - sineFrequencyCoeff: 1, - modularAmplitude: 5, - + // __color__ - String value determining how the generated noise will be output on the canvas. Currently recognised values are: `monochrome` (default), `gradient` and `hue` color: 'monochrome', + // When the `color` choice has been set to `monochrome` we can clamp the pixel values using the __monochromeStart__ and __monochromeRange__ attributes, both of which take integer Numbers. + // + Accepted monochromeStart values are 0 to 255 + // + Accepted monochromeRange values are -255 to 255 + // + Be aware that the monochromeRange value will be recalculated to make sure calculated pixel values remain in the 0-255 color channel range monochromeStart: 0, monochromeRange: 255, + // When the `color` choice has been set to `gradient` we can control the start and end colors of the gradient using the __gradientStart__ and __gradientEnd__ attributes + gradientStart: '#ff0000', + gradientEnd: '#00ff00', + + // When the `color` choice has been set to `hue` we can control the pixel colors (in terms of their HSL components) using the __hueStart__, __hueRange__, __saturation__ and __luminosity__ attributes: + // + `hueStart` - float Number value in degrees, will be clamped to between 0 and 360 + // + `hueRange` - float Number value in degrees, can be negative as well as positive + // + `saturation` - float Number value, between 0 and 100 + // + `luminosity` - float Number value, between 0 and 100 hueStart: 0, hueRange: 120, saturation: 100, luminosity: 50, - gradientStart: '#ff0000', - gradientEnd: '#00ff00', + // __noiseEngine__ - String - the currently supported noise engines String values are: `perlin`, `improved-perlin`, `simplex`, `value` + noiseEngine: 'simplex', + + // When a noise engine initializes it will create several Arrays of pseudo-random values. The __seed__ attribute is a String used to initialize the pseudo-random number generator, while the __size__ attribute is a Number (often a power of 2 value) which determines the lengths of the Arrays + seed: 'any_random_string_will_do', + size: 256, + + // The __scale__ attribute determines the relative scale of the noise calculation, which affects the noise output. Think of it as a rather idiosyncratic zoom factor + scale: 50, + + // Attributes used when calculating the noise map include: + // + __octaves__ - a positive integer Number - the more octives, the more naturalistic the output - values over 6 are rarely productive + // + __octaveFunction - a String identifying the function to be run at the end of each octave loop. Currently only `none` and `absolute` functions are supported + // + __persistance__ and __lacunarity__ values change at the conclusion of each octave loop; these attributes set their initial values + octaves: 1, + octaveFunction: 'none', + persistence: 0.5, + lacunarity: 2, + + // The __smoothing__ attribute - a String value - identifies the smoothing function that will be applied pixel noise values as they are calculated. There are a wide number of functions available, including: easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce, cosine, hermite, quintic (default) + smoothing: 'quintic', + + // Post-processing the noise map: The __sumFunction__ attribute - a String value - identifies the smoothing function that will be applied to the noise map once the noise calculations complete. + // + Permitted values include: `none`, `sine-x`, `sine-y`, `sine`, `modular` + // + __sineFrequencyCoeff__ - a Number - is used by sine-based sum functions + // + __modularAmplitude__ - a Number - is used by the modular sum function + sumFunction: 'none', + sineFrequencyCoeff: 1, + modularAmplitude: 5, + + }; P.defs = mergeOver(P.defs, defaultAttributes); @@ -157,9 +217,9 @@ S.smoothing = function (item) { this.dirtyOutput = true; }; -S.noiseFunction = function (item) { +S.noiseEngine = function (item) { - this.noiseFunction = this.noiseFunctions[item] || this.noiseFunctions['simplex']; + this.noiseEngine = this.noiseEngines[item] || this.noiseEngines['simplex']; this.dirtyNoise = true; this.dirtyOutput = true; }; @@ -234,13 +294,6 @@ S.lacunarity = function (item) { } }; -S.independent = function (item) { - - this.independent = !!item; - this.dirtyNoise = true; - this.dirtyOutput = true; -}; - S.gradientStart = function (item) { if (item.substring) { @@ -261,16 +314,16 @@ S.gradientEnd = function (item) { S.monochromeStart = function (item) { - if (item.toFixed && item >= 0 && item < 256) { + if (item.toFixed && item >= 0) { - this.monochromeStart = Math.floor(item); + this.monochromeStart = item % 360; this.dirtyOutput = true; } }; S.monochromeRange = function (item) { - if (item.toFixed && item >= 0 && item < 256) { + if (item.toFixed && item >= -255 && item < 256) { this.monochromeRange = Math.floor(item); this.dirtyOutput = true; @@ -281,7 +334,7 @@ S.hueStart = function (item) { if (item.toFixed) { - this.hueStart = Math.floor(item); + this.hueStart = item; this.dirtyOutput = true; } }; @@ -290,7 +343,7 @@ S.hueRange = function (item) { if (item.toFixed) { - this.hueRange = Math.floor(item); + this.hueRange = item; this.dirtyOutput = true; } }; @@ -357,53 +410,6 @@ S.height = function (item) { // #### Prototype functions -P.presetTo = function (preset) { - - if (preset.substring) { - - this.dirtyNoise = true; - this.dirtyOutput = true; - - switch (preset) { - - case 'plain' : - this.octaves = 1; - this.octaveFunction = λfirstArg; - this.sumFunction = λfirstArg; - break; - - case 'clouds' : - this.octaves = 5; - this.octaveFunction = λfirstArg; - this.sumFunction = λfirstArg; - break; - - case 'turbulence' : - this.octaves = 5; - this.octaveFunction = this.octaveFunctions['absolute']; - this.sumFunction = λfirstArg; - break; - - case 'marble' : - this.octaves = 5; - this.octaveFunction = this.octaveFunctions['absolute']; - this.sumFunction = this.sumFunctions['sine']; - break; - - case 'wood' : - this.octaves = 1; - this.octaveFunction = λfirstArg; - this.sumFunction = this.sumFunctions['modular']; - break; - - default : - this.octaves = 1; - this.octaveFunction = λfirstArg; - this.sumFunction = λfirstArg; - } - } -} - // `installElement` - internal function, used by the constructor P.installElement = function (element) { @@ -413,25 +419,25 @@ P.installElement = function (element) { return this; }; +// `checkSource` +// + Gets invoked by subscribers (who have a handle to the asset instance object) as part of the display cycle. +// + Noise assets will automatically pass this call onto `notifySubscribers`, where dirty flags get checked and rectified P.checkSource = function (width, height) { this.notifySubscribers(); }; -// `getData` +// `getData` function called by Cell objects when calculating required updates to its CanvasRenderingContext2D engine, specifically for an entity's __fillStyle__, __strokeStyle__ and __shadowColor__ attributes. +// + This is the point when we clean Scrawl-canvas assets which have told their subscribers that asset data/attributes have updated P.getData = function (entity, cell) { - this.checkSource(this.width, this.height); + // this.checkSource(this.width, this.height); + this.notifySubscribers(); return this.buildStyle(cell); }; -// `notifySubscribers` - Subscriber notification in the asset factories will happen when something changes with the image. Changes vary across the different types of asset: -// + __imageAsset__ - needs to update its subscribers when an image completes loading - or, for <img> sources with srcset (and sizes) attributes, when the image completes a reload of its source data. -// + __spriteAsset__ - will also update its subscribers each time it moves to a new sprite image frame, if the sprite is being animated -// + __videoAsset__ - will update its subscribers for every RAF tick while the video is playing, or if the video is halted and seeks to a different time in the video play stream. -// -// All notifications are push; the notification is achieved by setting various attributes and flags in each subscriber. +// `notifySubscribers`, `notifySubscriber` - overwrites the functions defined in mixin/asset.js P.notifySubscribers = function () { if (this.dirtyOutput || this.dirtyNoise) this.cleanOutput(); @@ -451,26 +457,23 @@ P.notifySubscriber = function (sub) { sub.dirtyImageSubscribers = true; }; - -// Much of the following code comes from the "canvas-noise" GitHub repository -// - https://github.com/lencinhaus/canvas-noise -// - Written by https://github.com/lencinhaus (who has been inactive on GitHub since 2015) - +// `cleanOutput` - internal function called by the `notifySubscribers` function P.cleanOutput = function () { if (this.dirtyNoise) this.cleanNoise(); if (this.dirtyOutput) this.paintCanvas(); }; +// `cleanNoise` - internal function called by the `cleanOutput` function P.cleanNoise = function () { if (this.dirtyNoise) { this.dirtyNoise = false; - let {noiseFunction, seed, width, height, element, engine, octaves, lacunarity, persistence, scale, octaveFunction, sumFunction} = this; + let {noiseEngine, seed, width, height, element, engine, octaves, lacunarity, persistence, scale, octaveFunction, sumFunction} = this; - if (noiseFunction && noiseFunction.init) { + if (noiseEngine && noiseEngine.init) { // Seed our pseudo-random number generator this.rndEngine = seededRandomNumberGenerator(seed); @@ -479,12 +482,12 @@ P.cleanNoise = function () { this.generatePermutationTable(); // Initialize the appropriate noise function - noiseFunction.init.call(this); + noiseEngine.init.call(this); let x, y, o, i, iz, noiseValues = [], scaledX, scaledY, - noise, amplitude, frequency, octave; + totalNoise, amplitude, frequency; // Prepare the noiseValues 2d array for (y = 0; y < height; y++) { @@ -492,7 +495,6 @@ P.cleanNoise = function () { noiseValues[y] = []; for (x = 0; x < width; x++) { - noiseValues[y][x] = []; } } @@ -507,35 +509,41 @@ P.cleanNoise = function () { for (y = 0; y < height; y++) { for (x = 0; x < width; x++) { + // We can modify the output by scaling it + // + Note that modifying the canvas dimensions (width, height) can also have a scaling effect scaledX = x * relativeScale; scaledY = y * relativeScale; - // Amplitude and frequency will update once per octave calculation; noise is the sum of all octave results - noise = 0; + // Amplitude and frequency will update once per octave calculation; totalNoise is the sum of all octave results + totalNoise = 0; amplitude = 1; frequency = 1; - + // The calculation will be performed at least once + // - For some reason the literature insists on calling these loops "octaves" for (o = 0; o < octaves; o++) { - // call the appropriate noise function - let octave = noiseFunction.noise.call(this, scaledX * frequency, scaledY * frequency); + // Call the appropriate getNoiseValue function + // + The result needs to be stored in a variable scoped locally to this loop iteration + let octaveNoise = noiseEngine.getNoiseValue.call(this, scaledX * frequency, scaledY * frequency); - // update octave with a post-calculation octaveFunction, if required - octave = octaveFunction(octave, scaledX, scaledY, o + 1); + // Update octave with a post-calculation octaveFunction, if required + octaveNoise = octaveFunction(octaveNoise, scaledX, scaledY, o + 1); - octave *= amplitude; - - noise += octave; + // Modify result by the current amplitude, and add to the running total + octaveNoise *= amplitude; + totalNoise += octaveNoise; + // Update the variables that change over multiple octave loops frequency *= lacunarity; - amplitude *= persistence; } - noiseValues[y][x] = noise; + // Update the noise value in its array + noiseValues[y][x] = totalNoise; - min = Math.min(min, noise); - max = Math.max(max, noise); + // ... and check for max/min spread of the generated values + min = Math.min(min, totalNoise); + max = Math.max(max, totalNoise); } } @@ -549,19 +557,18 @@ P.cleanNoise = function () { scaledY = y * relativeScale; // Clamp the cell's noise value to between 0 and 1, then update it with the post-calculation sumFunction, if required - let v0 = noiseValues[y][x], - v1 = (v0 - min) / noiseSpan, - v2 = sumFunction.call(this, v1, scaledX, scaledY); - - noiseValues[y][x] = v2; + let clampedVal = (noiseValues[y][x] - min) / noiseSpan; + noiseValues[y][x] = sumFunction.call(this, clampedVal, x * relativeScale, y * relativeScale); } } + // Update the cached noise values arrays this.noiseValues = noiseValues; } else this.dirtyNoise = true; } }; +// `paintCanvas` - internal function called by the `cleanOutput` function P.paintCanvas = function () { if (this.dirtyOutput) { @@ -605,7 +612,14 @@ P.paintCanvas = function () { // The default color preference is monochrome default : - if (monochromeStart + monochromeRange > 255) monochromeRange = 255 - monochromeStart; + if (monochromeRange > 0) { + + if (monochromeStart + monochromeRange > 255) monochromeRange = 255 - monochromeStart; + } + else if (monochromeRange < 0) { + + if (monochromeStart - monochromeRange < 0) monochromeRange = monochromeStart; + } for (let y = 0; y < height; y++) { for (let x = 0; x < width; x++) { @@ -623,14 +637,22 @@ P.paintCanvas = function () { } }; +// #### Noise generator functionality -P.F = 0.5 * (Math.sqrt(3) - 1); -P.G = (3 - Math.sqrt(3)) / 6; +// Convenience constants +// P.F = 0.5 * (Math.sqrt(3) - 1); +// P.G = (3 - Math.sqrt(3)) / 6; +P.simplexConstantF = 0.5 * (Math.sqrt(3) - 1); +P.simplexConstantG = (3 - Math.sqrt(3)) / 6; +P.simplexConstantDoubleG = ((3 - Math.sqrt(3)) / 6) * 2; P.perlinGrad = [[1, 1], [-1, 1], [1, -1], [-1, -1], [1, 0], [-1, 0], [0, 1], [0, -1]]; -P.noiseFunctions = { +// `noiseEngines` - a {key:object} object. Each named object contains two functions: +// + __init__ - invoked to prepare the engine for a bout of calculations - called by the `cleanNoise` function +// + __getNoiseValue__ - a function called on a per-pixel basis, which calculates the noise value for that pixel +P.noiseEngines = { - 'perlin_classic': { + 'perlin': { init: function () { @@ -649,33 +671,33 @@ P.noiseFunctions = { } }, - noise: function (x, y) { + getNoiseValue: function (x, y) { - const {size, perm, grad, smoothing, interpolate} = this; + const {size, perm, grad, smoothing} = this; let a, b, u, v; let bx0 = Math.floor(x) % size, - bx1 = (bx0 + 1) % size, + bx1 = (bx0 + 1) % size; - rx0 = x - Math.floor(x), - rx1 = rx0 - 1, + let rx0 = x - Math.floor(x), + rx1 = rx0 - 1; - by0 = Math.floor(y) % size, - by1 = (by0 + 1) % size, + let by0 = Math.floor(y) % size, + by1 = (by0 + 1) % size; - ry0 = y - Math.floor(y), - ry1 = ry0 - 1, + let ry0 = y - Math.floor(y), + ry1 = ry0 - 1; - i = perm[bx0], - j = perm[bx1], + let i = perm[bx0], + j = perm[bx1]; - b00 = perm[i + by0], + let b00 = perm[i + by0], b10 = perm[j + by0], b01 = perm[i + by1], - b11 = perm[j + by1], + b11 = perm[j + by1]; - sx = smoothing(rx0), + let sx = smoothing(rx0), sy = smoothing(ry0); u = rx0 * grad[b00][0] + ry0 * grad[b00][1]; @@ -690,13 +712,13 @@ P.noiseFunctions = { }, }, - 'perlin_improved': { + 'improved-perlin': { init: λnull, - noise: function (x, y) { + getNoiseValue: function (x, y) { - const {size, perm, permMod8, perlinGrad, smoothing, interpolate} = this; + const {size, perm, permMod8, perlinGrad, smoothing} = this; let a, b, u, v; @@ -739,65 +761,48 @@ P.noiseFunctions = { init: λnull, - noise: function (x, y) { + getNoiseValue: function (x, y) { - let n0, n1, n2, s, i, j, t, X0, Y0, x0, y0, i1, j1, x1, x2, y1, y2, ii, jj, gi0, gi1, gi2, t0, t1, t2; + const getCornerNoise = function (cx, cy, gridPos) { - const {F, G, size, perlinGrad, perm, permMod8} = this; - - s = (x + y) * F; - i = Math.floor(x + s); - j = Math.floor(y + s); - t = (i + j) * G; - - X0 = i - t; - Y0 = j - t; - x0 = x - X0; - y0 = y - Y0; - - if (x0 > y0) { - i1 = 1; - j1 = 0; - } - else { - i1 = 0; - j1 = 1; - } - - x1 = x0 - i1 + G; - y1 = y0 - j1 + G; - x2 = x0 - 1 + 2 * G; - y2 = y0 - 1 + 2 * G; - - ii = i % size; - jj = j % size; + let calc = 0.5 - (cx * cx) - (cy * cy); + if (calc < 0) return 0; - gi0 = permMod8[ii + perm[jj]]; - gi1 = permMod8[ii + i1 + perm[jj + j1]]; - gi2 = permMod8[ii + 1 + perm[jj + 1]]; + let [gx, gy] = perlinGrad[gridPos]; + return calc * calc * ((gx * cx) + (gy * cy)); + }; - t0 = 0.5 - x0 * x0 - y0 * y0; - if (t0 < 0) n0 = 0; - else { - t0 *= t0; - n0 = t0 * t0 * (perlinGrad[gi0][0] * x0 + perlinGrad[gi0][1] * y0); - } + const {simplexConstantF, simplexConstantG, simplexConstantDoubleG, size, perlinGrad, perm, permMod8} = this; - t1 = 0.5 - x1 * x1 - y1 * y1; - if (t1 < 0) n1 = 0; - else { - t1 *= t1; - n1 = t1 * t1 * (perlinGrad[gi1][0] * x1 + perlinGrad[gi1][1] * y1); - } + let summedCoordinates = (x + y) * simplexConstantF, + summedX = Math.floor(x + summedCoordinates), + summedY = Math.floor(y + summedCoordinates), + modifiedSummedCoordinates = (summedX + summedY) * simplexConstantG; + + let cornerX = x - (summedX - modifiedSummedCoordinates), + cornerY = y - (summedY - modifiedSummedCoordinates); - t2 = 0.5 - x2 * x2 - y2 * y2; - if (t2 < 0) n2 = 0; - else { - t2 *= t2; - n2 = t2 * t2 * (perlinGrad[gi2][0] * x2 + perlinGrad[gi2][1] * y2); + let remainderX = summedX % size, + remainderY = summedY % size; + + let pos = permMod8[remainderX + perm[remainderY]], + noise = getCornerNoise(cornerX, cornerY, pos); + + pos = permMod8[remainderX + 1 + perm[remainderY + 1]] + noise += getCornerNoise((cornerX - 1 + simplexConstantDoubleG), (cornerY - 1 + simplexConstantDoubleG), pos); + + let unitA = 0, + unitB = 1; + + if (cornerX > cornerY) { + unitA = 1; + unitB = 0; } - - return 0.5 + 35 * (n0 + n1 + n2); + + pos = permMod8[remainderX + unitA + perm[remainderY + unitB]]; + noise += getCornerNoise((cornerX - unitA + simplexConstantG), (cornerY - unitB + simplexConstantG), pos); + + return 0.5 + (35 * noise); }, }, @@ -815,9 +820,9 @@ P.noiseFunctions = { } }, - noise: function (x, y) { + getNoiseValue: function (x, y) { - const {values, size, perm, smoothing, interpolate} = this; + const {values, size, perm, smoothing} = this; let x0 = Math.floor(x) % size, y0 = Math.floor(y) % size, @@ -841,10 +846,9 @@ P.noiseFunctions = { }, }; -P.update = function (data) { - -}; - +// `generatePermutationTable` - internal function called by the `cleanNoise` function +// + The permutation tables get recalculated each time the noise data gets cleaned +// + `rndEngine` is a seedable pseudo-random number generator P.generatePermutationTable = function () { const {perm, permMod8, rndEngine, size} = this; @@ -874,145 +878,90 @@ P.generatePermutationTable = function () { } }; -// color conversion -P.hslToRgb = function (values) { - - const [h, s, l] = values; - - let r, g, b, p, q; - - const hue2rgb = function (u, v, t) { - - if (t < 0) t += 1; - if (t > 1) t -= 1; - - if (t < 1/6) return u + (v - u) * 6 * t; - if (t < 1/2) return v; - if (t < 2/3) return u + (v - u) * (2/3 - t) * 6; - return u; - } - - if (s == 0) { - r = l; - g = l; - b = l; - } - else { - - q = (l < 0.5) ? l * (1 + s) : l + s - l * s; - p = 2 * l - q; - - r = hue2rgb(p, q, h + 1/3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1/3); - } - - return [r, g, b]; -} - -P.hsvToRgb = function (values) { - - const [h, s, v] = values; - - let r, g, b; - - let i = Math.floor(h * 6), - f = h * 6 - i, - p = v * (1 - s), - q = v * (1 - f * s), - t = v * (1 - (1 - f) * s); - - switch(i % 6){ - - case 0: - r = v, g = t, b = p; - break; - - case 1: - r = q, g = v, b = p; - break; - - case 2: - r = p, g = v, b = t; - break; - - case 3: - r = p, g = q, b = v; - break; - - case 4: - r = t, g = p, b = v; - break; - - case 5: - r = v, g = p, b = q; - break; - - } - - return [r, g, b]; -}; - -P.rgbHexToComponents = function (rgb) { - - let r = parseInt(rgb.substr(0, 2), 16), - g = parseInt(rgb.substr(2, 2), 16), - b = parseInt(rgb.substr(4, 2), 16); - - return [r, g, b]; -}; - +// `octaveFunctions` - a {key:functions} object holding functions used to modify octave loop results +// + calling signature: `octaveFunction(octave, scaledX, scaledY, o + 1)` P.octaveFunctions = { - absolute: function (octave) { - - return Math.abs((octave * 2) - 1) - }, + none: λfirstArg, + absolute: function (octave) { return Math.abs((octave * 2) - 1) }, }; +// `sumFunctions` - a {key:functions} object holding functions used to modify noise values after their calculation has completed (post-processing) +// + calling signature: `sumFunction.call(this, clampedVal, x * relativeScale, y * relativeScale)` P.sumFunctions = { - sine: function (sum, scaledX) { - - return .5 + (Math.sin(scaledX * this.sineFrequencyCoeff + sum) / 2); - }, + none: λfirstArg, - modular: function(sum) { + 'sine-x': function (v, sx, sy) { return 0.5 + (Math.sin((sx * this.sineFrequencyCoeff) + v) / 2) }, + 'sine-y': function (v, sx, sy) { return 0.5 + (Math.sin((sy * this.sineFrequencyCoeff) + v) / 2) }, + sine: function (v, sx, sy) { return 0.5 + (Math.sin((sx * this.sineFrequencyCoeff) + v) / 4) + (Math.sin((sy * this.sineFrequencyCoeff) + v) / 4) }, - let g = sum * this.modularAmplitude; + modular: function(v) { + let g = v * this.modularAmplitude; return g - Math.floor(g); }, }; +// `smoothingFunctions` - a {key:function} object containing various ___fade functions___ which can be used to smooth calculated coordinate values so that they will ease towards integral values. +// + Used by the "perlin_classic", "perlin_improved" and "value" getNoiseValue functions; the "simplex" getNoiseValue function does away with the need for a smoothing operation. +// + calling signature: `smoothing(value)` P.smoothingFunctions = { + // __none__ - effectively linear - no smoothing gets performed none: λfirstArg, - cosine: function(t) { - - return .5 * (1 + Math.cos((1 - t) * Math.PI)); - }, - - hermite: function(t) { - - return t * t * (-t * 2 + 3); - }, - - quintic: function(t) { - - return t * t * t * (t * (t * 6 - 15) + 10); - }, -}; - -P.interpolate = function (t, a, b) { - - return a + t * (b - a); + easeOutSine, + easeInSine, + easeOutInSine, + easeOutQuad, + easeInQuad, + easeOutInQuad, + easeOutCubic, + easeInCubic, + easeOutInCubic, + easeOutQuart, + easeInQuart, + easeOutInQuart, + easeOutQuint, + easeInQuint, + easeOutInQuint, + easeOutExpo, + easeInExpo, + easeOutInExpo, + easeOutCirc, + easeInCirc, + easeOutInCirc, + easeOutBack, + easeInBack, + easeOutInBack, + easeOutElastic, + easeInElastic, + easeOutInElastic, + easeOutBounce, + easeInBounce, + easeOutInBounce, + + // __cosine__ - a cosine-based interpolator + cosine: function(t) { return .5 * (1 + Math.cos((1 - t) * Math.PI)) }, + + // __hermite__ - a cubic Hermite interpolator + hermite: function(t) { return t * t * (-t * 2 + 3) }, + + // __quintic__ - the original ease function used by Perlin + quintic: function(t) { return t * t * t * (t * (t * 6 - 15) + 10) }, }; // #### Factory // ``` -// TODO +// scrawl.makeNoise({ +// name: 'my-noise-generator', +// width: 50, +// height: 50, +// octaves: 5, +// scale: 2, +// noiseFunction: 'simplex', +// }); // ``` const makeNoise = function (items) { return new Noise(items); diff --git a/source/factory/pattern.js b/source/factory/pattern.js index 684c9b41f..d5e77a6d1 100644 --- a/source/factory/pattern.js +++ b/source/factory/pattern.js @@ -53,7 +53,7 @@ P = assetConsumerMix(P); // #### Pattern attributes // + Attributes defined in the [base mixin](../mixin/base.html): __name__. -// + Attributes defined in the [pattern mixin](../mixin/pattern.html): __repeat__. +// + Attributes defined in the [pattern mixin](../mixin/pattern.html): __repeat, patternMatrix, matrixA, matrixB, matrixC, matrixD, matrixE, matrixF__. // + Attributes defined in the [assetConsumer mixin](../mixin/assetConsumer.html): __asset, spriteTrack, imageSource, spriteSource, videoSource, source__. let defaultAttributes = {}; P.defs = mergeOver(P.defs, defaultAttributes); diff --git a/source/factory/tween.js b/source/factory/tween.js index b1e5be85c..d5c7e6798 100644 --- a/source/factory/tween.js +++ b/source/factory/tween.js @@ -38,7 +38,7 @@ // #### Imports import { constructors, animationtickers, radian } from '../core/library.js'; -import { mergeOver, pushUnique, xt, xtGet, xto, convertTime, λnull } from '../core/utilities.js'; +import { mergeOver, pushUnique, xt, xtGet, xto, convertTime, λnull, easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce } from '../core/utilities.js'; import { makeTicker } from './ticker.js'; @@ -591,7 +591,159 @@ P.engineActions = { linear: function (start, change, position) { return start + (position * change); - } + }, + +// The following easing functions have been taken from the [easings.net](https://easings.net/) web page: __easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce__ + + easeOutSine: function (start, change, position) { + + return start + (change * easeOutSine(position)); + }, + + easeInSine: function (start, change, position) { + + return start + (change * easeInSine(position)); + }, + + easeOutInSine: function (start, change, position) { + + return start + (change * easeOutInSine(position)); + }, + + easeOutQuad: function (start, change, position) { + + return start + (change * easeOutQuad(position)); + }, + + easeInQuad: function (start, change, position) { + + return start + (change * easeInQuad(position)); + }, + + easeOutInQuad: function (start, change, position) { + + return start + (change * easeOutInQuad(position)); + }, + + easeOutCubic: function (start, change, position) { + + return start + (change * easeOutCubic(position)); + }, + + easeInCubic: function (start, change, position) { + + return start + (change * easeInCubic(position)); + }, + + easeOutInCubic: function (start, change, position) { + + return start + (change * easeOutInCubic(position)); + }, + + easeOutQuart: function (start, change, position) { + + return start + (change * easeOutQuart(position)); + }, + + easeInQuart: function (start, change, position) { + + return start + (change * easeInQuart(position)); + }, + + easeOutInQuart: function (start, change, position) { + + return start + (change * easeOutInQuart(position)); + }, + + easeOutQuint: function (start, change, position) { + + return start + (change * easeOutQuint(position)); + }, + + easeInQuint: function (start, change, position) { + + return start + (change * easeInQuint(position)); + }, + + easeOutInQuint: function (start, change, position) { + + return start + (change * easeOutInQuint(position)); + }, + + easeOutExpo: function (start, change, position) { + + return start + (change * easeOutExpo(position)); + }, + + easeInExpo: function (start, change, position) { + + return start + (change * easeInExpo(position)); + }, + + easeOutInExpo: function (start, change, position) { + + return start + (change * easeOutInExpo(position)); + }, + + easeOutCirc: function (start, change, position) { + + return start + (change * easeOutCirc(position)); + }, + + easeInCirc: function (start, change, position) { + + return start + (change * easeInCirc(position)); + }, + + easeOutInCirc: function (start, change, position) { + + return start + (change * easeOutInCirc(position)); + }, + + easeOutBack: function (start, change, position) { + + return start + (change * easeOutBack(position)); + }, + + easeInBack: function (start, change, position) { + + return start + (change * easeInBack(position)); + }, + + easeOutInBack: function (start, change, position) { + + return start + (change * easeOutInBack(position)); + }, + + easeOutElastic: function (start, change, position) { + + return start + (change * easeOutElastic(position)); + }, + + easeInElastic: function (start, change, position) { + + return start + (change * easeInElastic(position)); + }, + + easeOutInElastic: function (start, change, position) { + + return start + (change * easeOutInElastic(position)); + }, + + easeOutBounce: function (start, change, position) { + + return start + (change * easeOutBounce(position)); + }, + + easeInBounce: function (start, change, position) { + + return start + (change * easeInBounce(position)); + }, + + easeOutInBounce: function (start, change, position) { + + return start + (change * easeOutInBounce(position)); + }, }; // `setDefinitionsValues` - convert `start` and `end` values into float Numbers. diff --git a/source/mixin/asset.js b/source/mixin/asset.js index 55abdb322..8366226d6 100644 --- a/source/mixin/asset.js +++ b/source/mixin/asset.js @@ -161,10 +161,11 @@ export default function (P = {}) { } }; -// `notifySubscribers` - Subscriber notification in the asset factories will happen when something changes with the image. Changes vary across the different types of asset: +// `notifySubscribers`, `notifySubscriber` - Subscriber notification in the asset factories will happen when something changes with the image. Changes vary across the different types of asset: // + __imageAsset__ - needs to update its subscribers when an image completes loading - or, for <img> sources with srcset (and sizes) attributes, when the image completes a reload of its source data. // + __spriteAsset__ - will also update its subscribers each time it moves to a new sprite image frame, if the sprite is being animated // + __videoAsset__ - will update its subscribers for every RAF tick while the video is playing, or if the video is halted and seeks to a different time in the video play stream. +// + __Noise__ - will update its subscribers when any of its attributes changes (Note: factory/noise.js overwrites these functions). // // All notifications are push; the notification is achieved by setting various attributes and flags in each subscriber. P.notifySubscribers = function () { diff --git a/source/mixin/entity.js b/source/mixin/entity.js index 5ce30823a..a3c0906ec 100644 --- a/source/mixin/entity.js +++ b/source/mixin/entity.js @@ -531,6 +531,9 @@ export default function (P = {}) { if (worker) releaseFilterWorker(worker); currentEngine.save(); + + currentEngine.globalAlpha = self.state.globalAlpha; + currentEngine.globalCompositeOperation = self.state.globalCompositeOperation; currentEngine.setTransform(1, 0, 0, 1, 0, 0); From 9a00e022a3e15d0a22f5e6b9f6d5ad651219de28 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Mon, 25 Jan 2021 20:27:35 +0000 Subject: [PATCH 19/28] Mesh entity documentation --- demo/canvas-047.html | 2 +- demo/canvas-047.js | 2 +- demo/index.html | 3 ++ demo/thumbs/canvas-044.webp | Bin 24304 -> 30084 bytes demo/thumbs/canvas-047.webp | Bin 0 -> 15780 bytes docs/index.html | 1 + source/factory/mesh.js | 60 ++++++++++++++++++++++-------------- 7 files changed, 43 insertions(+), 25 deletions(-) create mode 100644 demo/thumbs/canvas-047.webp diff --git a/demo/canvas-047.html b/demo/canvas-047.html index d3cca9f71..97ef99006 100644 --- a/demo/canvas-047.html +++ b/demo/canvas-047.html @@ -12,7 +12,7 @@

    Scrawl-canvas v8 - Canvas test 047

    -

    Easing functions for colors and tweens

    +

    Easing functions for Color and Tween factories

    diff --git a/demo/canvas-047.js b/demo/canvas-047.js index cad8ff104..955a55a0a 100644 --- a/demo/canvas-047.js +++ b/demo/canvas-047.js @@ -1,5 +1,5 @@ // # Demo Canvas 047 -// Easing functions for colors and tweens +// Easing functions for Color and Tween factories // [Run code](../../demo/canvas-047.html) import scrawl from '../source/scrawl.js'; diff --git a/demo/index.html b/demo/index.html index c896e25f9..884446586 100644 --- a/demo/index.html +++ b/demo/index.html @@ -214,6 +214,9 @@

    Canvas tests

    Canvas 046 - Kill cycles for Cell, Group, Tween/Ticker, Picture and Asset objects, and Picture source elements in the DOM
    + +
    +
    Canvas 047 - Easing functions for Color and Tween factories

    Filters functionality tests

    diff --git a/demo/thumbs/canvas-044.webp b/demo/thumbs/canvas-044.webp index 93b654249f9da92868f7ae6be0cedfea47b2101a..aac8349536649ff92826049e23dd6ede1b6937c8 100644 GIT binary patch delta 25760 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 delta 19717 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 HdAt7s0AaLq diff --git a/demo/thumbs/canvas-047.webp b/demo/thumbs/canvas-047.webp new file mode 100644 index 0000000000000000000000000000000000000000..95b674dcc53945d820135495c886e898f513034a GIT binary patch literal 15780 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 M0o)~efRD%j2Se;IL;wH) literal 0 HcmV?d00001 diff --git a/docs/index.html b/docs/index.html index 904599dfc..a63e2b81a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -220,6 +220,7 @@

    Canvas-based demos

  • Canvas-045 Use clipping entitys as pivots; clipping entitys and cascade events
  • Canvas-046 Kill cycles for Cell, Group, Tween/Ticker, Picture and Asset objects, and Picture source elements in the DOM
  • +
  • Canvas-047 Easing functions for Color and Tween factories
  • Filters demos

    diff --git a/source/factory/mesh.js b/source/factory/mesh.js index 19177ca58..3cb2c9dcc 100644 --- a/source/factory/mesh.js +++ b/source/factory/mesh.js @@ -1,13 +1,24 @@ // # Mesh factory -// TODO: documentation +// The Scrawl-canvas Mesh entity applies a Net particle system to an image, allowing the image to be deformed by dragging particles around the canvas. This is a similar concept to [Photoshop warp meshes](https://helpx.adobe.com/uk/photoshop/using/warp-images-shapes-paths.html) and (more distantly) [the Gimp's cage tool](https://docs.gimp.org/2.10/en/gimp-tool-cage.html). +// +// Mesh entitys are ___composite entitys___ - an entity that relies on other entitys for its basic functionality. +// + Every Mesh object requires a [Net](./net.html) entity create the grid that it uses for transforming its image. +// + A Mesh entity also requires a [Picture](./picture.html) entity to act as its image source. +// + Meshes can (in theory) use CSS color Strings for their strokeStyle values, alongside __Gradient__, __RadialGradient__, __Color__ and __Pattern__ objects. +// + They can (in theory) use __Anchor__ objects for user navigation. +// + They can (in theory) be rendered to the canvas by including them in a __Cell__ object's __Group__. +// + They can (in theory) be __animated__ directly, or using delta animation, or act as the target for __Tween__ animations. +// + Meshes can (in theory) be cloned, and killed. // // ___Note that this is experimental technology!___ +// + The Mesh entity code base shares many similarities to that of the Loom entity; some of the code has been copied over from that file directly. // + Current code does not use [position](./mixin/position.html) or [entity](./mixin/entity.html) mixins, meaning much of the code here has been copied over from those mixins (DRY issue). -// + TODO: clone functionality not yet tested. A possible use case is to clome a Mesh so they share the same Shape struts, but have different Picture sources and `from/toPathStart/End` cursor values - multiple images tracked and animated. +// + TODO: packet management, clone and kill functionality not yet tested. Much of the other functionality also lacks tests. // #### Demos: -// + TODO: documentation +// + [Particles-008](../../demo/particles-008.html) - Net entity: generation and basic functionality, including Spring objects +// + [Particles-016](../../demo/particles-016.html) - Mesh entitys // #### Imports @@ -80,7 +91,7 @@ let defaultAttributes = { // + To change this to columns (which sets the struts to the top and bottom edges of the image) set the attribute to `false` isHorizontalCopy: true, -// __source__ - The Picture entity source for this loom. For initialization and/or `set`, we can supply either the Picture entity itself, or its name-String value. +// __source__ - The Picture entity source for this Mesh. For initialization and/or `set`, we can supply either the Picture entity itself, or its name-String value. // + The content image displayed by the Mesh entity are set in the Picture entity, not the Mesh, and can be any artefact supported by the Picture (image, video, sprite, or a Cell artefact). // + Note that any ___filters should be applied to the Picture entity___; Mesh entitys do not support filter functionality but will apply a Picture's filters to the source image as-and-where appropriate. source: null, @@ -177,7 +188,7 @@ let defaultAttributes = { // The Mesh entity's strokeStyle can be any style supported by Scrawl-canvas - color strings, gradient objects, and pattern objects // + __strokeStyle__ // -// The shadow attributes will only be applied to the stroke (border), not to the Loom's fill (image) +// The shadow attributes will only be applied to the stroke (border), not to the Mesh's fill (image) // + __shadowOffsetX__ // + __shadowOffsetY__ // + __shadowBlur__ @@ -531,7 +542,7 @@ P.getSensors = function () { // #### Display cycle functionality // `prepareStamp` - function called as part of the Display cycle `compile` step. -// + This function is called before we get into the entity stamp promise cascade (thus it's a synchronous function). This is where we need to check whether we need to recalculate the path data which we'll use later to build the Loom entity's output image. +// + This function is called before we get into the entity stamp promise cascade (thus it's a synchronous function). This is where we need to check whether we need to recalculate the path data which we'll use later to build the Mesh entity's output image. // + We only need to recalculate the path data on the initial render, and afterwards when the __dirtyPathData__ flag has been set. // + If we perform the recalculation, then we need to make sure to set the __dirtyOutput__ flag, which will trigger the output image build. P.prepareStamp = function() { @@ -714,7 +725,7 @@ P.setSourceDimension = function () { }; // `simpleStamp` - Simple stamping is entirely synchronous -// + TODO: we may have to disable this functionality for the Loom entity, if we use a web worker for either the prepareStamp calculations, or to build the output image itself +// + TODO: we may have to disable this functionality for the Mesh entity, if we use a web worker for either the prepareStamp calculations, or to build the output image itself P.simpleStamp = function (host, changes = {}) { if (host && host.type === 'Cell') { @@ -732,11 +743,10 @@ P.simpleStamp = function (host, changes = {}) { }; // `stamp` - All entity stamping, except for simple stamps, goes through this function, which needs to return a Promise which will resolve in due course. -// + While other entitys have to worry about applying filters as part of the stamping process, this is not an issue for Loom entitys because filters are defined on, and applied to, the source Picture entity, not the Loom itself +// + While other entitys have to worry about applying filters as part of the stamping process, this is not an issue for Mesh entitys because filters are defined on, and applied to, the source Picture entity, not the Mesh itself // // Here we check which dirty flags need actioning, and call a range of different functions to process the work. These flags are: // + `dirtyInput` - the Picture entity has reported a change in its source, or copy attributes) -// + `dirtyOutput` - to render the cleaned input, or take account that the Loom paths' cursors have changed) P.stamp = function (force = false, host, changes) { if (force) { @@ -900,13 +910,11 @@ P.cleanOutput = function () { c, cz, r, rz, i, iz; for (r = 0, rz = rows - 1; r < rz; r++) { - // for (r = 1; r < 2; r++) { topStruts = struts[r]; baseStruts = struts[r + 1]; for (c = 0, cz = columns - 1; c < cz; c++) { - // for (c = 1; c < 2; c++) { let [ltx, lty, rtx, rty, tLen] = topStruts[c]; let [lbx, lby, rbx, rby, bLen] = baseStruts[c]; @@ -1009,18 +1017,9 @@ P.regularStampSynchronousActions = function () { } }; -// `getBoundingBox` - internal function called by `prepareStamp` and `cleanOutput` functions, as well as the various ___method___ functions. -// + Loom calculates its bounding box from the Shape path entitys associated with it -// + This function recalculates when presented with a `dirtyStart` flag - we rely on the Shape entitys to tell us when their paths have changed/updated -// + Results get stashed in the __boundingBox__ attribute for easier access, but all the method functions call this function just in case the box needs recalculating. -P.getBoundingBox = function () { - - return this.boundingBox; -}; - // ##### Stamp methods -// These 'method' functions stamp the Loom entity onto the canvas context supplied to them in the `engine` argument. +// These 'method' functions stamp the Mesh entity onto the canvas context supplied to them in the `engine` argument. // `fill` P.fill = function (engine) { @@ -1097,7 +1096,7 @@ P.clear = function (engine) { P.none = λnull; -// These __stroke__ and __fill__ functions handle most of the stuff that the method functions require to stamp the Loom entity onto a canvas cell. +// These __stroke__ and __fill__ functions handle most of the stuff that the method functions require to stamp the Mesh entity onto a canvas cell. // `doStroke` P.doStroke = function (engine) { @@ -1196,7 +1195,22 @@ P.checkHit = function (items = [], mycell) { // #### Factory // ``` -// TODO: documentation +// let myMesh = scrawl.makeMesh({ + +// name: 'display-mesh', + +// net: 'test-net', +// source: 'my-flower', + +// lineWidth: 2, +// lineJoin: 'round', +// strokeStyle: 'orange', + +// method: 'fillThenDraw', + +// onEnter: function () { this.set({ lineWidth: 6 }) }, +// onLeave: function () { this.set({ lineWidth: 2 }) }, +// }); // ``` const makeMesh = function (items) { return new Mesh(items); From 18f404e4044cf2b854efcb2ab5f18711322609b2 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Tue, 26 Jan 2021 10:43:40 +0000 Subject: [PATCH 20/28] documentation; bump to v8.4.0 --- README.md | 6 +- docs/demo/canvas-001.html | 60 + docs/demo/canvas-002.html | 60 + docs/demo/canvas-003.html | 60 + docs/demo/canvas-004.html | 60 + docs/demo/canvas-005.html | 60 + docs/demo/canvas-006.html | 60 + docs/demo/canvas-007.html | 481 ++- docs/demo/canvas-008.html | 60 + docs/demo/canvas-009.html | 60 + docs/demo/canvas-010.html | 60 + docs/demo/canvas-011.html | 60 + docs/demo/canvas-012.html | 60 + docs/demo/canvas-013.html | 60 + docs/demo/canvas-014.html | 60 + docs/demo/canvas-015.html | 60 + docs/demo/canvas-016.html | 60 + docs/demo/canvas-017.html | 60 + docs/demo/canvas-018.html | 60 + docs/demo/canvas-019.html | 60 + docs/demo/canvas-020.html | 60 + docs/demo/canvas-021.html | 60 + docs/demo/canvas-022.html | 60 + docs/demo/canvas-023.html | 60 + docs/demo/canvas-024.html | 60 + docs/demo/canvas-025.html | 60 + docs/demo/canvas-026.html | 60 + docs/demo/canvas-027.html | 60 + docs/demo/canvas-028.html | 60 + docs/demo/canvas-029.html | 60 + docs/demo/canvas-030.html | 60 + docs/demo/canvas-031.html | 60 + docs/demo/canvas-032.html | 60 + docs/demo/canvas-033.html | 60 + docs/demo/canvas-034.html | 60 + docs/demo/canvas-035.html | 60 + docs/demo/canvas-036.html | 60 + docs/demo/canvas-037.html | 60 + docs/demo/canvas-038.html | 60 + docs/demo/canvas-039.html | 60 + docs/demo/canvas-040.html | 60 + docs/demo/canvas-041.html | 60 + docs/demo/canvas-042.html | 60 + docs/demo/canvas-043.html | 60 + docs/demo/canvas-044.html | 380 ++- docs/demo/canvas-045.html | 60 + docs/demo/canvas-046.html | 60 + docs/demo/canvas-047.html | 798 +++++ docs/demo/component-001.html | 60 + docs/demo/component-002.html | 60 + docs/demo/component-003.html | 60 + docs/demo/component-004.html | 98 +- docs/demo/component-005.html | 60 + docs/demo/component-006.html | 60 + docs/demo/component-007.html | 60 + docs/demo/core-001.html | 60 + docs/demo/dom-001.html | 60 + docs/demo/dom-002.html | 60 + docs/demo/dom-003.html | 60 + docs/demo/dom-004.html | 60 + docs/demo/dom-005.html | 60 + docs/demo/dom-006.html | 60 + docs/demo/dom-007.html | 60 + docs/demo/dom-008.html | 60 + docs/demo/dom-009.html | 60 + docs/demo/dom-010.html | 60 + docs/demo/dom-011.html | 60 + docs/demo/dom-012.html | 60 + docs/demo/dom-013.html | 60 + docs/demo/dom-014a.html | 60 + docs/demo/dom-014b.html | 60 + docs/demo/dom-014c.html | 60 + docs/demo/dom-015.html | 60 + docs/demo/dom-016.html | 60 + docs/demo/filters-001.html | 92 +- docs/demo/filters-002.html | 117 +- docs/demo/filters-003.html | 101 +- docs/demo/filters-004.html | 77 +- docs/demo/filters-005.html | 72 +- docs/demo/filters-006.html | 126 +- docs/demo/filters-007.html | 127 +- docs/demo/filters-008.html | 129 +- docs/demo/filters-009.html | 149 +- docs/demo/filters-010.html | 209 +- docs/demo/filters-011.html | 236 +- docs/demo/filters-012.html | 279 +- docs/demo/filters-013.html | 184 +- docs/demo/filters-014.html | 246 +- docs/demo/filters-015.html | 336 +- docs/demo/filters-016.html | 985 ++++++ docs/demo/filters-017.html | 861 +++++ docs/demo/filters-018.html | 855 +++++ docs/demo/filters-019.html | 1017 ++++++ docs/demo/filters-020.html | 838 +++++ docs/demo/filters-501.html | 848 +++++ docs/demo/filters-502.html | 814 +++++ docs/demo/filters-503.html | 852 +++++ docs/demo/filters-504.html | 860 +++++ docs/demo/filters-505.html | 824 +++++ docs/demo/particles-001.html | 60 + docs/demo/particles-002.html | 60 + docs/demo/particles-003.html | 60 + docs/demo/particles-004.html | 60 + docs/demo/particles-005.html | 60 + docs/demo/particles-006.html | 60 + docs/demo/particles-007.html | 88 +- docs/demo/particles-008.html | 238 +- docs/demo/particles-009.html | 88 +- docs/demo/particles-010.html | 60 + docs/demo/particles-011.html | 88 +- docs/demo/particles-012.html | 60 + docs/demo/particles-013.html | 60 + docs/demo/particles-014.html | 60 + docs/demo/particles-015.html | 60 + docs/demo/particles-016.html | 947 +++++ docs/source/core/animationloop.html | 19 +- docs/source/core/component.html | 19 +- docs/source/core/document.html | 19 +- docs/source/core/events.html | 19 +- docs/source/core/init.html | 19 +- docs/source/core/library.html | 21 +- docs/source/core/userInteraction.html | 19 +- docs/source/core/utilities.html | 784 ++++- docs/source/factory/action.html | 19 +- docs/source/factory/anchor.html | 19 +- docs/source/factory/animation.html | 19 +- docs/source/factory/bezier.html | 19 +- docs/source/factory/block.html | 19 +- docs/source/factory/canvas.html | 19 +- docs/source/factory/cell.html | 102 +- docs/source/factory/cog.html | 19 +- docs/source/factory/color.html | 403 ++- docs/source/factory/coordinate.html | 19 +- docs/source/factory/element.html | 19 +- docs/source/factory/emitter.html | 19 +- docs/source/factory/filter.html | 1762 ++++++++-- docs/source/factory/fontAttributes.html | 19 +- docs/source/factory/gradient.html | 19 +- docs/source/factory/grid.html | 19 +- docs/source/factory/group.html | 170 +- docs/source/factory/imageAsset.html | 19 +- docs/source/factory/line.html | 19 +- docs/source/factory/loom.html | 21 +- docs/source/factory/mesh.html | 2568 ++++++++++++++ docs/source/factory/net.html | 19 +- docs/source/factory/noise.html | 2275 ++++++++++++ docs/source/factory/oval.html | 19 +- docs/source/factory/palette.html | 19 +- docs/source/factory/particle.html | 19 +- docs/source/factory/particleForce.html | 19 +- docs/source/factory/particleHistory.html | 19 +- docs/source/factory/particleSpring.html | 19 +- docs/source/factory/particleWorld.html | 19 +- docs/source/factory/pattern.html | 21 +- docs/source/factory/phrase.html | 19 +- docs/source/factory/picture.html | 19 +- docs/source/factory/polygon.html | 19 +- docs/source/factory/polyline.html | 19 +- docs/source/factory/quadratic.html | 19 +- docs/source/factory/quaternion.html | 19 +- docs/source/factory/radialGradient.html | 19 +- docs/source/factory/rectangle.html | 19 +- docs/source/factory/renderAnimation.html | 19 +- docs/source/factory/shape.html | 19 +- docs/source/factory/spiral.html | 19 +- docs/source/factory/spriteAsset.html | 19 +- docs/source/factory/stack.html | 19 +- docs/source/factory/star.html | 19 +- docs/source/factory/state.html | 19 +- docs/source/factory/tetragon.html | 19 +- docs/source/factory/ticker.html | 19 +- docs/source/factory/tracer.html | 19 +- docs/source/factory/tween.html | 237 +- docs/source/factory/unstackedElement.html | 19 +- docs/source/factory/vector.html | 19 +- docs/source/factory/videoAsset.html | 19 +- docs/source/factory/wheel.html | 19 +- docs/source/mixin/anchor.html | 19 +- docs/source/mixin/asset.html | 22 +- docs/source/mixin/assetConsumer.html | 19 +- docs/source/mixin/base.html | 19 +- docs/source/mixin/cascade.html | 19 +- docs/source/mixin/delta.html | 19 +- docs/source/mixin/displayShape.html | 19 +- docs/source/mixin/dom.html | 19 +- docs/source/mixin/entity.html | 118 +- docs/source/mixin/filter.html | 221 +- docs/source/mixin/mimic.html | 19 +- docs/source/mixin/path.html | 19 +- docs/source/mixin/pattern.html | 21 +- docs/source/mixin/pivot.html | 19 +- docs/source/mixin/position.html | 19 +- docs/source/mixin/shapeBasic.html | 19 +- docs/source/mixin/shapeCurve.html | 19 +- docs/source/mixin/shapePathCalculation.html | 19 +- docs/source/mixin/styles.html | 19 +- docs/source/mixin/tween.html | 19 +- docs/source/scrawl.html | 254 +- docs/source/worker/filter-string.html | 500 +++ docs/source/worker/filter.html | 3418 ++++++++++++++----- min/scrawl.js | 2 +- package.json | 4 +- source/core/library.js | 2 +- source/factory/filter.js | 4 +- source/factory/loom.js | 2 +- source/scrawl.js | 2 +- source/worker/filter.js | 8 +- 207 files changed, 30316 insertions(+), 3145 deletions(-) create mode 100644 docs/demo/canvas-047.html create mode 100644 docs/demo/filters-016.html create mode 100644 docs/demo/filters-017.html create mode 100644 docs/demo/filters-018.html create mode 100644 docs/demo/filters-019.html create mode 100644 docs/demo/filters-020.html create mode 100644 docs/demo/filters-501.html create mode 100644 docs/demo/filters-502.html create mode 100644 docs/demo/filters-503.html create mode 100644 docs/demo/filters-504.html create mode 100644 docs/demo/filters-505.html create mode 100644 docs/demo/particles-016.html create mode 100644 docs/source/factory/mesh.html create mode 100644 docs/source/factory/noise.html create mode 100644 docs/source/worker/filter-string.html diff --git a/README.md b/README.md index 42748a55f..33bd40c5a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Scrawl-canvas Library -Version: `8.3.4 - 6 Jan 2021` +Version: `8.4.0 - 26 Jan 2021` Scrawl-canvas website: [scrawl-v8.rikweb.org.uk](https://scrawl-v8.rikweb.org.uk). @@ -46,7 +46,7 @@ There are three main ways to include Scrawl-canvas in your project: 2. Unzip the file to a folder in your project. 3. Import the library into the script code where you will be using it. -Alternatively, a zip package of the v8.3.4 files can be downloaded from this link: [scrawl.rikweb.org.uk/downloads/scrawl-canvas_8-3-4.zip](https://scrawl.rikweb.org.uk/downloads/scrawl-canvas_8-3-4.zip) - this package only includes the minified file. +Alternatively, a zip package of the v8.4.0 files can be downloaded from this link: [scrawl.rikweb.org.uk/downloads/scrawl-canvas_8-4-0.zip](https://scrawl.rikweb.org.uk/downloads/scrawl-canvas_8-4-0.zip) - this package only includes the minified file. ``` @@ -95,7 +95,7 @@ Alternatively, a zip package of the v8.3.4 files can be downloaded from this lin This will pull the requested npm package directly into your web page: ``` ``` diff --git a/docs/demo/canvas-001.html b/docs/demo/canvas-001.html index 599627654..405e02210 100644 --- a/docs/demo/canvas-001.html +++ b/docs/demo/canvas-001.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-002.html b/docs/demo/canvas-002.html index bd748938d..c202dbb73 100644 --- a/docs/demo/canvas-002.html +++ b/docs/demo/canvas-002.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-003.html b/docs/demo/canvas-003.html index 579dde609..3bfdb482e 100644 --- a/docs/demo/canvas-003.html +++ b/docs/demo/canvas-003.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-004.html b/docs/demo/canvas-004.html index 1253851d3..4c34a0dc6 100644 --- a/docs/demo/canvas-004.html +++ b/docs/demo/canvas-004.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-005.html b/docs/demo/canvas-005.html index 923a7c391..1d898c160 100644 --- a/docs/demo/canvas-005.html +++ b/docs/demo/canvas-005.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-006.html b/docs/demo/canvas-006.html index 06ffc048f..720d14d51 100644 --- a/docs/demo/canvas-006.html +++ b/docs/demo/canvas-006.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-007.html b/docs/demo/canvas-007.html index 6feed5864..6cd4baa6d 100644 --- a/docs/demo/canvas-007.html +++ b/docs/demo/canvas-007.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -589,9 +649,11 @@

    Scene setup

    let canvas = scrawl.library.artefact.mycanvas;
     
    +scrawl.importDomImage('.map');
    +
     canvas.set({
         fit: 'fill',
    -    backgroundColor: 'lightgray',
    +    backgroundColor: 'beige',
         css: {
             border: '1px solid black'
         }
    @@ -727,13 +789,13 @@ 

    Scene setup

    -

    Grayscale filter

    +

    Gray filter

    scrawl.makeFilter({
    -    name: 'grayscale',
    -    method: 'grayscale',
    + name: 'gray', + method: 'gray',
  • Canvas-044 Building more complex patterns
  • @@ -744,6 +806,23 @@

    Scene setup

    +

    Grayscale filter

    + + + +
    }).clone({
    +    name: 'grayscale',
    +    method: 'grayscale',
    + + + + +
  • +
    + +
    + +

    Sepia filter

    @@ -755,11 +834,11 @@

    Scene setup

  • -
  • +
  • - +

    Invert filter

    @@ -772,11 +851,11 @@

    Scene setup

  • -
  • +
  • - +

    Red filter

    @@ -789,11 +868,11 @@

    Scene setup

  • -
  • +
  • - +

    Green filter

    @@ -806,11 +885,11 @@

    Scene setup

  • -
  • +
  • - +

    Blue filter

    @@ -823,11 +902,11 @@

    Scene setup

  • -
  • +
  • - +

    Notred filter

    @@ -840,11 +919,11 @@

    Scene setup

  • -
  • +
  • - +

    Notgreen filter

    @@ -857,11 +936,11 @@

    Scene setup

  • -
  • +
  • - +

    Notblue filter

    @@ -874,11 +953,11 @@

    Scene setup

  • -
  • +
  • - +

    Cyan filter

    @@ -891,11 +970,11 @@

    Scene setup

  • -
  • +
  • - +

    Magenta filter

    @@ -908,11 +987,11 @@

    Scene setup

  • -
  • +
  • - +

    Yellow filter

    @@ -920,17 +999,72 @@

    Scene setup

    }).clone({
         name: 'yellow',
    -    method: 'yellow',
    +    method: 'yellow',
    + +
  • + + +
  • +
    + +
    + +
    +

    Edge detect filter

    + +
    + +
    }).clone({
    +    name: 'edgeDetect',
    +    method: 'edgeDetect',
    + +
  • + + +
  • +
    + +
    + +
    +

    Sharpen filter

    + +
    + +
    }).clone({
    +    name: 'sharpen',
    +    method: 'sharpen',
     });
  • -
  • +
  • - + +
    +

    Emboss filter

    + +
    + +
    scrawl.makeFilter({
    +    name: 'emboss',
    +    method: 'emboss',
    +    angle: 225,
    +    strength: 10,
    +    tolerance: 50,
    +});
    + +
  • + + +
  • +
    + +
    +

    Chroma (green screen) filter

    @@ -945,11 +1079,11 @@

    Scene setup

  • -
  • +
  • - +

    Brightness filter

    @@ -963,11 +1097,11 @@

    Scene setup

  • -
  • +
  • - +

    Saturation filter

    @@ -981,11 +1115,11 @@

    Scene setup

  • -
  • +
  • - +

    Threshhold filter

    @@ -1006,11 +1140,11 @@

    Scene setup

  • -
  • +
  • - +

    Channels filter

    @@ -1026,11 +1160,11 @@

    Scene setup

  • -
  • +
  • - +

    Channelstep filter

    @@ -1047,11 +1181,11 @@

    Scene setup

  • -
  • +
  • - +

    Tint filter

    @@ -1074,11 +1208,54 @@

    Scene setup

  • -
  • +
  • - + +
    +

    Offset filter

    + +
    + +
    scrawl.makeFilter({
    +    name: 'offset',
    +    method: 'offset',
    +    offsetX: 12,
    +    offsetY: 12,
    +    opacity: 0.5,
    +});
    + +
  • + + +
  • +
    + +
    + +
    +

    Offset Channels filter

    + +
    + +
    scrawl.makeFilter({
    +    name: 'offsetChannels',
    +    method: 'offsetChannels',
    +    offsetRedX: -12,
    +    offsetGreenY: 12,
    +    offsetBlueX: 3,
    +    offsetBlueY: -3,
    +});
    + +
  • + + +
  • +
    + +
    +

    Pixellate filter

    @@ -1096,11 +1273,11 @@

    Scene setup

  • -
  • +
  • - +

    Blur filter

    @@ -1109,121 +1286,199 @@

    Scene setup

    scrawl.makeFilter({
         name: 'blur',
         method: 'blur',
    -    radius: 20,
    -    shrinkingRadius: true,
    -    includeAlpha: true,
    -    passes: 3,
    +    radius: 6,
    +    passes: 2,
     });
  • -
  • +
  • - +
    -

    Matrix filter

    +

    AreaAlpha filter

    scrawl.makeFilter({
    -    name: 'matrix',
    -    method: 'matrix',
    -    weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1],
    + name: 'areaAlpha', + method: 'areaAlpha', + tileWidth: 20, + tileHeight: 20, + gutterWidth: 20, + gutterHeight: 20, + offsetX: 8, + offsetY: 8, + areaAlphaLevels: [255, 0, 0, 255], +});
  • -
  • +
  • - +
    -

    Matrix5 filter

    +

    Matrix filter

    -
    }).clone({
    -    name: 'matrix5',
    -    method: 'matrix5',
    -    weights: [-1, -1, -1, -1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 1],
    -});
    +
    scrawl.makeFilter({
    +    name: 'matrix',
    +    method: 'matrix',
    +    weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1],
  • -
  • +
  • - +
    -

    First user-defined filter

    +

    Matrix5 filter

    -
    let myUDF = scrawl.makeFilter({
    -    name: 'totalRed',
    -    method: 'userDefined',
    -
    -    userDefined: `
    -        for (let i = 0, iz = cache.length; i < iz; i++) {
    -
    -            data[cache[i]] = 255;
    -        }`,
    +            
    }).clone({
    +    name: 'matrix5',
    +    method: 'matrix5',
    +    weights: [-1, -1, -1, -1, 0, -1, -1, -1, 0, 1, -1, -1, 0, 1, 1, -1, 0, 1, 1, 1, 0, 1, 1, 1, 1],
     });
  • -
  • +
  • - +
    -

    Second user-defined filter (cloned)

    +

    ChannelLevels filter

    -
    myUDF.clone({
    -    name: 'venetianBlinds',
    -    level: 9,
    -
    -    userDefined: `
    -        let i, iz, j, jz,
    -            level = filter.level || 6,
    -            halfLevel = level / 2,
    -            yw, transparent, pos;
    -
    -        for (i = localY, iz = localY + localHeight; i < iz; i++) {
    +            
    scrawl.makeFilter({
    +    name: 'channelLevels',
    +    method: 'channelLevels',
    +    red: [50, 200],
    +    green: [60, 220, 150],
    +    blue: [40, 180],
    +    alpha: [],
    +});
     
    -            transparent = (i % level > halfLevel) ? true : false;
    +scrawl.makeFilter({
    +    name: 'chromakey',
    +    method: 'chromakey',
    +    red: 0,
    +    green: 127,
    +    blue: 0,
    +    opaqueAt: 0.7,
    +    transparentAt: 0.5,
    +});
     
    -            if (transparent) {
    +scrawl.makeFilter({
    +    name: 'dropShadow',
    +    actions: [
    +        {
    +            action: 'blur',
    +            lineIn: 'source-alpha',
    +            lineOut: 'shadow',
    +            radius: 2, 
    +            passes: 2, 
    +            includeRed: false, 
    +            includeGreen: false, 
    +            includeBlue: false, 
    +            includeAlpha: true, 
    +        },
    +        {
    +            action: 'compose',
    +            lineIn: 'source',
    +            lineMix: 'shadow',
    +            offsetX: 6,
    +            offsetY: 6,
    +        }
    +    ],
    +});
     
    -                yw = (i * iWidth) + 3;
    -                
    -                for (j = localX, jz = localX + localWidth; j < jz; j ++) {
    +scrawl.makeFilter({
    +    name: 'redBorder',
    +    actions: [
    +        {
    +            action: 'blur',
    +            lineIn: 'source-alpha',
    +            lineOut: 'shadow',
    +            radius: 3,
    +            passes: 2, 
    +            includeRed: false, 
    +            includeGreen: false, 
    +            includeBlue: false, 
    +            includeAlpha: true, 
    +        },
    +        {
    +            action: 'binary',
    +            lineIn: 'shadow',
    +            lineOut: 'shadow',
    +            alpha: 1, 
    +        },
    +        {
    +            action: 'flood',
    +            lineIn: 'shadow',
    +            lineOut: 'red-flood',
    +            red: 255,
    +        },
    +        {
    +            action: 'compose',
    +            lineIn: 'shadow',
    +            lineMix: 'red-flood',
    +            lineOut: 'colorized',
    +            compose: 'destination-in',
    +        },
    +        {
    +            action: 'compose',
    +            lineIn: 'source',
    +            lineMix: 'colorized',
    +        }
    +    ],
    +});
     
    -                    pos = yw + (j * 4);
    -                    data[pos] = 0;
    -                }
    -            }
    -        }`,
    +scrawl.makeFilter({
    +    name: 'noise',
    +    actions: [
    +        {
    +            action: 'process-image',
    +            asset: 'perlin',
    +            width: 500,
    +            height: 500,
    +            copyWidth: 500,
    +            copyHeight: 500,
    +            lineOut: 'map',
    +        },
    +        {
    +            action: 'displace',
    +            lineMix: 'map',
    +            scaleX: 20,
    +            scaleY: 30,
    +            transparentEdges: true,
    +        }
    +    ],
     });
  • -
  • +
  • - +

    Scene animation

    Function to display frames-per-second data, and other information relevant to the demo

    @@ -1249,11 +1504,11 @@

    Scene animation

  • -
  • +
  • - +

    Create the Display cycle animation

    @@ -1269,11 +1524,11 @@

    Scene animation

  • -
  • +
  • - +

    User interaction

    Event listeners function

    @@ -1359,11 +1614,11 @@

    User interaction

  • -
  • +
  • - +

    Event listeners

    @@ -1374,11 +1629,11 @@

    User interaction

  • -
  • +
  • - +

    Set DOM form initial input values

    @@ -1390,11 +1645,11 @@

    User interaction

  • -
  • +
  • - +

    Development and testing

    @@ -1405,11 +1660,11 @@

    Development and testing

  • -
  • +
  • - +

    Gradient packet test

    @@ -1421,11 +1676,11 @@

    Development and testing

  • -
  • +
  • - +

    RESULT:

    [
    diff --git a/docs/demo/canvas-008.html b/docs/demo/canvas-008.html
    index c69d6ba4f..f9338a4c4 100644
    --- a/docs/demo/canvas-008.html
    +++ b/docs/demo/canvas-008.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-009.html b/docs/demo/canvas-009.html
    index e7becc6c5..71d22b42e 100644
    --- a/docs/demo/canvas-009.html
    +++ b/docs/demo/canvas-009.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-010.html b/docs/demo/canvas-010.html
    index ed64fbc0f..cc338e8c4 100644
    --- a/docs/demo/canvas-010.html
    +++ b/docs/demo/canvas-010.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-011.html b/docs/demo/canvas-011.html
    index d792ec317..7eca63d62 100644
    --- a/docs/demo/canvas-011.html
    +++ b/docs/demo/canvas-011.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-012.html b/docs/demo/canvas-012.html
    index 110e82d49..d72911251 100644
    --- a/docs/demo/canvas-012.html
    +++ b/docs/demo/canvas-012.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-013.html b/docs/demo/canvas-013.html
    index 49cf09d8d..e446c574b 100644
    --- a/docs/demo/canvas-013.html
    +++ b/docs/demo/canvas-013.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-014.html b/docs/demo/canvas-014.html
    index 4f20eec91..550b7c563 100644
    --- a/docs/demo/canvas-014.html
    +++ b/docs/demo/canvas-014.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-015.html b/docs/demo/canvas-015.html
    index 860cadb6b..00d2522e2 100644
    --- a/docs/demo/canvas-015.html
    +++ b/docs/demo/canvas-015.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-016.html b/docs/demo/canvas-016.html
    index 5994ecfd8..59c1e5e3f 100644
    --- a/docs/demo/canvas-016.html
    +++ b/docs/demo/canvas-016.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-017.html b/docs/demo/canvas-017.html
    index 0790f2e49..8aa317bbd 100644
    --- a/docs/demo/canvas-017.html
    +++ b/docs/demo/canvas-017.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-018.html b/docs/demo/canvas-018.html
    index d432f5608..8ba06c22c 100644
    --- a/docs/demo/canvas-018.html
    +++ b/docs/demo/canvas-018.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-019.html b/docs/demo/canvas-019.html
    index 0d4e38ddb..7a5d58933 100644
    --- a/docs/demo/canvas-019.html
    +++ b/docs/demo/canvas-019.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-020.html b/docs/demo/canvas-020.html
    index 3f2a20651..3178f97e2 100644
    --- a/docs/demo/canvas-020.html
    +++ b/docs/demo/canvas-020.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-021.html b/docs/demo/canvas-021.html
    index f9afc39fd..e190e5984 100644
    --- a/docs/demo/canvas-021.html
    +++ b/docs/demo/canvas-021.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-022.html b/docs/demo/canvas-022.html
    index 4d6f3c9c5..a5b1d2277 100644
    --- a/docs/demo/canvas-022.html
    +++ b/docs/demo/canvas-022.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-023.html b/docs/demo/canvas-023.html
    index 3c39fce7c..1e65aa5ad 100644
    --- a/docs/demo/canvas-023.html
    +++ b/docs/demo/canvas-023.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-024.html b/docs/demo/canvas-024.html
    index fbd00478c..7e1cec92d 100644
    --- a/docs/demo/canvas-024.html
    +++ b/docs/demo/canvas-024.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-025.html b/docs/demo/canvas-025.html
    index 31481e539..c31fd10f0 100644
    --- a/docs/demo/canvas-025.html
    +++ b/docs/demo/canvas-025.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-026.html b/docs/demo/canvas-026.html
    index 2f2fae0aa..c779a5e44 100644
    --- a/docs/demo/canvas-026.html
    +++ b/docs/demo/canvas-026.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-027.html b/docs/demo/canvas-027.html
    index 6b803472a..b7b993d56 100644
    --- a/docs/demo/canvas-027.html
    +++ b/docs/demo/canvas-027.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-028.html b/docs/demo/canvas-028.html
    index e70e078c4..09ce710ca 100644
    --- a/docs/demo/canvas-028.html
    +++ b/docs/demo/canvas-028.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-029.html b/docs/demo/canvas-029.html
    index b0337312b..73c38c8a2 100644
    --- a/docs/demo/canvas-029.html
    +++ b/docs/demo/canvas-029.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-030.html b/docs/demo/canvas-030.html
    index 47c247d5f..a59be5673 100644
    --- a/docs/demo/canvas-030.html
    +++ b/docs/demo/canvas-030.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-031.html b/docs/demo/canvas-031.html
    index d1d3b5629..a930296f3 100644
    --- a/docs/demo/canvas-031.html
    +++ b/docs/demo/canvas-031.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-032.html b/docs/demo/canvas-032.html
    index eaeeb2214..62829b028 100644
    --- a/docs/demo/canvas-032.html
    +++ b/docs/demo/canvas-032.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-033.html b/docs/demo/canvas-033.html
    index 723864f18..fab57a549 100644
    --- a/docs/demo/canvas-033.html
    +++ b/docs/demo/canvas-033.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-034.html b/docs/demo/canvas-034.html
    index 600eccbd7..214c6ca5f 100644
    --- a/docs/demo/canvas-034.html
    +++ b/docs/demo/canvas-034.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-035.html b/docs/demo/canvas-035.html
    index a0db41613..cc3583987 100644
    --- a/docs/demo/canvas-035.html
    +++ b/docs/demo/canvas-035.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-036.html b/docs/demo/canvas-036.html
    index 267909f43..9c46dfbb7 100644
    --- a/docs/demo/canvas-036.html
    +++ b/docs/demo/canvas-036.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-037.html b/docs/demo/canvas-037.html
    index 24b4a2643..e69a8eedc 100644
    --- a/docs/demo/canvas-037.html
    +++ b/docs/demo/canvas-037.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-038.html b/docs/demo/canvas-038.html
    index e2339430f..b763df9ca 100644
    --- a/docs/demo/canvas-038.html
    +++ b/docs/demo/canvas-038.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-039.html b/docs/demo/canvas-039.html
    index 532d5acef..b7e245c8b 100644
    --- a/docs/demo/canvas-039.html
    +++ b/docs/demo/canvas-039.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-040.html b/docs/demo/canvas-040.html
    index 23a576513..b06aca2c3 100644
    --- a/docs/demo/canvas-040.html
    +++ b/docs/demo/canvas-040.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-041.html b/docs/demo/canvas-041.html
    index 959be2598..7341c5b87 100644
    --- a/docs/demo/canvas-041.html
    +++ b/docs/demo/canvas-041.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-042.html b/docs/demo/canvas-042.html
    index c27a4a478..e3f0d332d 100644
    --- a/docs/demo/canvas-042.html
    +++ b/docs/demo/canvas-042.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-043.html b/docs/demo/canvas-043.html
    index 249611388..a6f6bcdee 100644
    --- a/docs/demo/canvas-043.html
    +++ b/docs/demo/canvas-043.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    diff --git a/docs/demo/canvas-044.html b/docs/demo/canvas-044.html
    index e2d63d958..c89a6f4a6 100644
    --- a/docs/demo/canvas-044.html
    +++ b/docs/demo/canvas-044.html
    @@ -250,6 +250,11 @@
                     
                   
                     
    +                
    +                  ./demo/canvas-047.js
    +                
    +              
    +                
                     
                       ./demo/component-001.js
                     
    @@ -455,6 +460,56 @@
                     
                   
                     
    +                
    +                  ./demo/filters-016.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-017.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-018.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-019.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-020.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-501.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-502.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-503.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-504.js
    +                
    +              
    +                
    +                
    +                  ./demo/filters-505.js
    +                
    +              
    +                
                     
                       ./demo/particles-001.js
                     
    @@ -530,6 +585,11 @@
                     
                   
                     
    +                
    +                  ./demo/particles-016.js
    +                
    +              
    +                
                     
                       ./demo/temp-001.js
                     
    @@ -590,6 +650,7 @@ 

    Scene setup

    const canvas = scrawl.library.canvas.mycanvas;
     
     canvas.setBase({
    +
         backgroundColor: 'azure',
  • @@ -630,10 +691,24 @@

    Scene setup

    .updateColor(420, 'red') .updateColor(500, 'yellow') .updateColor(580, 'red') -.updateColor(999, 'black'); +.updateColor(999, 'black'); + + + + +
  • +
    + +
    + +
    +

    Add a new Cell to our canvas

    + +
    + +
    const patternCell = canvas.buildCell({
     
    -canvas.buildCell({
    -    name: 'gradient-sub-pattern',
    +    name: 'gradient-pattern-cell',
         dimensions: [50, 50],
         shown: false,
         compileOrder: 0,
    @@ -642,30 +717,37 @@ 

    Scene setup

  • -
  • +
  • - +
    -

    Populate our new Cell with blocks using our linear gradient

    +

    Populate our new Cell with Block entitys that use our linear gradient

    scrawl.makeBlock({
    +
         name: 'gradient-block-br',
    -    group: 'gradient-sub-pattern',
    +    group: 'gradient-pattern-cell',
         dimensions: [25, 25],
         start: ['center', 'center'],
         fillStyle: 'linear',
         lockFillStyleToEntity: true,
    +
     }).clone({
    +
         name: 'gradient-block-bl',
         roll: 90,
    +
     }).clone({
    +
         name: 'gradient-block-tl',
         roll: 180,
    +
     }).clone({
    +
         name: 'gradient-block-tr',
         roll: 270,
     });
    @@ -673,123 +755,163 @@

    Scene setup

  • -
  • +
  • - +
    -

    STEP 2: We have a pattern that we can use, but we can make it even more interesting using an SVG turbulence-and-displacement filter. We define the SVG in the HTML code, then apply it to a new Cell we create for the effect.

    +

    STEP 2. Apply a Noise-based displacement filter to our pattern Cell. We can then animate this filter to make it more interesting

    -
    canvas.buildCell({
    -    name: 'warped-pattern',
    -    dimensions: [400, 400],
    -    shown: false,
    -    compileOrder: 1,
    +        
  • + + +
  • +
    + +
    + +
    +

    Create the Noise asset

    + +
    + +
    scrawl.makeNoise({
    +
    +    name: 'my-noise-generator',
    +    width: 50,
    +    height: 50,
    +    octaves: 5,
    +    scale: 2,
    +    noiseFunction: 'simplex',
    +});
    + +
  • + + +
  • +
    + +
    + +
    +

    TEST: see if we can load the Noise asset directly into a Picture entity, and into a Pattern style - we’ll use these for background textures.

    + +
    + +
    scrawl.makePicture({
    +
    +    name: 'test-picture',
    +
    +    dimensions: [300, 400],
    +    copyDimensions: ['100%', '100%'],
    +
    +    asset: 'my-noise-generator',
    +
    +    globalAlpha: 0.2,
    +});
    +
    +scrawl.makePattern({
    +
    +    name: 'test-pattern',
    +    asset: 'my-noise-generator',
     });
     
     scrawl.makeBlock({
    -    name: 'warped-pattern-block',
    -    group: 'warped-pattern',
    -    dimensions: [900, 900],
    -    start: ['center', 'center'],
    -    handle: ['center', 'center'],
    -    roll: 45,
    -    fillStyle: 'gradient-sub-pattern',
    -    filter: 'url(#svg-noise)',
    +
    +    name: 'test-pattern-block',
    +    startX: 300,
    +    dimensions: [300, 400],
    +
    +    fillStyle: 'test-pattern',
    +
    +    globalAlpha: 0.2,
     });
  • -
  • +
  • - +
    -

    STEP 3: We can animate our SVG filter using a combination of a Scrawl-canvas World object and some SC tweens

    +

    Build filters that use the Noise asset

    -
    const turbulence = document.querySelector('feTurbulence');
    -const displacement = document.querySelector('feDisplacementMap');
    +            
    scrawl.makeFilter({
     
    -const myWorld = scrawl.makeWorld({
    -    name: 'svg-filter-accessor',
    -    userAttributes: [
    -        {
    -            key: 'baseFreqX', 
    -            defaultValue: 0,
    -            setter: function (item) {
    -                this.baseFreqX = item;
    -                turbulence.setAttribute('baseFrequency', `${this.baseFreqX} ${this.baseFreqY}`);
    -            },
    -        },
    -        {
    -            key: 'baseFreqY', 
    -            defaultValue: 0,
    -            setter: function (item) {
    -                this.baseFreqY = item;
    -                turbulence.setAttribute('baseFrequency', `${this.baseFreqX} ${this.baseFreqY}`);
    -            },
    -        },
    -        {
    -            key: 'scale', 
    -            defaultValue: 0,
    -            setter: function (item) {
    -                this.scale = item;
    -                displacement.setAttribute('scale', `${this.scale}`);
    -            },
    -        }
    -    ],
    +    name: 'noise',
    +    method: 'image',
    +    asset: 'my-noise-generator',
    +    width: 400,
    +    height: 400,
    +    copyWidth: '100%',
    +    copyHeight: '100%',
    +    lineOut: 'map',
     });
     
    -scrawl.makeTween({
    -    name: 'horizontal-turbulence',
    -    duration: 6000,
    -    targets: myWorld,
    -    cycles: 0,
    -    reverseOnCycleEnd: true,
    -    definitions: [
    -        {
    -            attribute: 'baseFreqX',
    -            start: 0.01,
    -            end: 0.025,
    -            engine: 'easeOutIn'
    -        },
    -    ]
    -}).run();
    +const displacer =  scrawl.makeFilter({
    +
    +    name: 'displace',
    +    method: 'displace',
    +    lineMix: 'map',
    +    scaleX: 20,
    +    scaleY: 20,
    +});
    + +
  • + + +
  • +
    + +
    + +
    +

    Update our Cell with the filters

    -scrawl.makeTween({ - name: 'vertical-turbulence', - duration: 7000, - targets: myWorld, +
    + +
    patternCell.set({
    +    filters: ['noise', 'displace']
    +});
    + +
  • + + +
  • +
    + +
    + +
    +

    Animate the displacer filter using a Tween

    + +
    + +
    scrawl.makeTween({
    +
    +    name: 'turbulence',
    +    duration: 6000,
    +    targets: displacer,
         cycles: 0,
         reverseOnCycleEnd: true,
         definitions: [
             {
    -            attribute: 'baseFreqY',
    -            start: 0.01,
    -            end: 0.025,
    +            attribute: 'scaleX',
    +            start: 1,
    +            end: 150,
                 engine: 'easeOutIn'
             },
    -    ]
    -}).run();
    -
    -scrawl.makeTween({
    -    name: 'scale-displacement',
    -    duration: 10000,
    -    targets: myWorld,
    -    cycles: 0,
    -    reverseOnCycleEnd: true,
    -    definitions: [
             {
    -            attribute: 'scale',
    -            start: 15,
    -            end: 25,
    +            attribute: 'scaleY',
    +            start: 150,
    +            end: 1,
                 engine: 'easeOutIn'
             },
         ]
    @@ -798,17 +920,18 @@ 

    Scene setup

  • -
  • +
  • - +
    -

    STEP 4. We are now in a position where we can use our Cells as pattern fills for some SC entitys.

    +

    STEP 3. We are now in a position where we can use our Cells as pattern fills for some SC entitys.

    scrawl.makePolygon({
    +
         name: 'hex',
         sides: 6,
         radius: 90,
    @@ -822,44 +945,51 @@ 

    Scene setup

  • -
  • +
  • - +
    -

    To use a Cell as a pattern we just assign its name to the entity’s fillStyle attribute

    +

    To use a Cell as a pattern we just assign its name to the entity’s fillStyle attribute +fillStyle: ‘warped-pattern’,

    -
        fillStyle: 'warped-pattern',
    +            
        fillStyle: 'gradient-pattern-cell',
     });
  • -
  • +
  • - +
    -

    STEP 5. If we want, we can add filters to our entitys, to give our pattern a different look.

    +

    STEP 4. If we want, we can add some color-based filters to our entitys, to give our pattern a different look.

    scrawl.makeFilter({
    +
         name: 'notred',
         method: 'notred',
    +
     }).clone({
    +
         name: 'sepia',
         method: 'sepia',
    +
     }).clone({
    +
         name: 'invert',
         method: 'invert',
     });
     
     scrawl.makeOval({
    +
         name: 'egg',
         radiusX: 60,
         radiusY: 80,
    @@ -870,14 +1000,15 @@ 

    Scene setup

    strokeStyle: 'green', lineJoin: 'round', method: 'fillThenDraw', - fillStyle: 'warped-pattern', + fillStyle: 'gradient-pattern-cell', filters: ['sepia'], }); scrawl.makeTetragon({ + name: 'arrow', start: [160, 290], - fillStyle: 'warped-pattern', + fillStyle: 'gradient-pattern-cell', radiusX: 60, radiusY: 80, intersectY: 1.2, @@ -893,24 +1024,26 @@

    Scene setup

  • -
  • +
  • - +
    -

    STEP 6. There’s one additional thing we can do with our pattern - pass it into a Pattern object where we can warp and resize it. Then we can apply it to entitys via the Pattern object.

    +

    STEP 5. There’s one additional thing we can do with our Cell-based pattern - pass it into a Pattern object where we can warp and resize it. Then we can apply it to entitys via the Pattern object.

    scrawl.makePattern({
    +
         name: 'wavy-pattern',
    -    asset: 'warped-pattern',
    +    asset: 'gradient-pattern-cell',
         matrixB: 0.7,
         matrixF: -150,
     });
     
     scrawl.makeBlock({
    +
         name: 'boring-block',
         start: [50, 50],
         dimensions: [140, 170],
    @@ -921,6 +1054,7 @@ 

    Scene setup

    method: 'fillThenDraw', }).clone({ + name: 'tipsy-block', start: [250, 130], dimensions: [210, 90], @@ -931,11 +1065,11 @@

    Scene setup

  • -
  • +
  • - +

    Scene animation

    Function to display frames-per-second data, and other information relevant to the demo

    @@ -961,11 +1095,11 @@

    Scene animation

  • -
  • +
  • - +

    Create the Display cycle animation

    @@ -976,21 +1110,39 @@

    Scene animation

    name: 'demo-animation', target: canvas, afterShow: report, -}); +});
    + +
  • + + +
  • +
    + +
    + +
    +

    User interaction

    + +
    + +
    scrawl.makeGroup({
    +    name: 'my-draggable-entitys',
    +}).addArtefacts('hex', 'egg', 'arrow', 'boring-block', 'tipsy-block');
     
     scrawl.makeDragZone({
         zone: canvas,
    +    collisionGroup: 'my-draggable-entitys',
         endOn: ['up', 'leave'],
     });
  • -
  • +
  • - +

    Development and testing

    diff --git a/docs/demo/canvas-045.html b/docs/demo/canvas-045.html index cecf18687..cba24b2d1 100644 --- a/docs/demo/canvas-045.html +++ b/docs/demo/canvas-045.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-046.html b/docs/demo/canvas-046.html index 7b5b4003d..27c2e94c6 100644 --- a/docs/demo/canvas-046.html +++ b/docs/demo/canvas-046.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/canvas-047.html b/docs/demo/canvas-047.html new file mode 100644 index 000000000..fc43fded9 --- /dev/null +++ b/docs/demo/canvas-047.html @@ -0,0 +1,798 @@ + + + + + Demo Canvas 047 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Canvas 047

      +

      Easing functions for Color and Tween factories

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +
      +canvas.set({
      +    backgroundColor: 'honeydew',
      +});
      +
      +const easingDisplayComponent = function (name, ypos) {
      +
      +    let color = scrawl.makeColor({
      +        name: `${name}-color`,
      +        easing: name,
      +        minimumColor: 'red',
      +        maximumColor: 'green',
      +    });
      +
      +    scrawl.makeLine({
      +        name: `${name}-line`,
      +        startX: 122,
      +        startY: ypos + 12,
      +        endX: 752,
      +        endY: ypos + 12,
      +        method: 'draw',
      +    });
      +
      +    let wheel = scrawl.makeWheel({
      +        name: `${name}-wheel`,
      +        radius: 12,
      +        startX: 110,
      +        startY: ypos,
      +        method: 'fill',
      +        fillStyle: color.getRangeColor(0),
      +    });
      +
      +    scrawl.makePhrase({
      +        name: `${name}-label`,
      +        text: name,
      +        startX: 10,
      +        startY: ypos + 6,
      +    });
      +
      +    scrawl.makeTween({
      +        name: `${name}-move-tween`,
      +        targets: wheel,
      +        duration: 8000,
      +        cycles: 0,
      +        reverseOnCycleEnd: true,
      +        definitions: [
      +            {
      +                attribute: 'startX',
      +                start: 110,
      +                end: 740,
      +                engine: name,
      +            },
      +        ],
      +    }).run();
      +
      +    scrawl.makeTween({
      +        name: `${name}-color-tween`,
      +        targets: wheel,
      +        duration: 8000,
      +        cycles: 0,
      +        reverseOnCycleEnd: true,
      +        definitions: [
      +            {
      +                attribute: 'fillStyle',
      +                start: 0,
      +                end: 1,
      +                engine: function (start, change, position) { return color.getRangeColor(position) },
      +            },
      +        ],
      +    }).run();
      +};
      +
      +const easings = ['easeOutSine', 'easeOutQuad', 'easeOutCubic', 'easeOutQuart', 'easeOutQuint', 'easeOutExpo', 'easeOutCirc', 'easeOutBack', 'easeOutElastic', 'easeOutBounce', 'easeInSine', 'easeInQuad', 'easeInCubic', 'easeInQuart', 'easeInQuint', 'easeInExpo', 'easeInCirc', 'easeInBack', 'easeInElastic', 'easeInBounce', 'easeOutInSine', 'easeOutInQuad', 'easeOutInCubic', 'easeOutInQuart', 'easeOutInQuint', 'easeOutInExpo', 'easeOutInCirc', 'easeOutInBack', 'easeOutInElastic', 'easeOutInBounce'];
      +
      +easings.forEach((easing, index) => easingDisplayComponent(easing, 50 + (index * 30)));
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/component-001.html b/docs/demo/component-001.html index 6975c8f6c..299517cb6 100644 --- a/docs/demo/component-001.html +++ b/docs/demo/component-001.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/component-002.html b/docs/demo/component-002.html index c3bdf5686..d7c540ba9 100644 --- a/docs/demo/component-002.html +++ b/docs/demo/component-002.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/component-003.html b/docs/demo/component-003.html index f8c73b3c2..6891f6f0a 100644 --- a/docs/demo/component-003.html +++ b/docs/demo/component-003.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/component-004.html b/docs/demo/component-004.html index d5cd62a6c..81a66f1eb 100644 --- a/docs/demo/component-004.html +++ b/docs/demo/component-004.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -664,31 +724,17 @@

    Scene setup

    let myfilter = scrawl.makeFilter({
    -    name: 'venetianBlinds',
    -    method: 'userDefined',
    -    level: 9,
    -
    -    userDefined: `
    -        let i, iz, j, jz,
    -            level = filter.level || 6,
    -            halfLevel = level / 2,
    -            yw, transparent, pos;
    -
    -        for (i = localY, iz = localY + localHeight; i < iz; i++) {
    -
    -            transparent = (i % level > halfLevel) ? true : false;
    -
    -            if (transparent) {
    -
    -                yw = (i * iWidth) + 3;
    -                
    -                for (j = localX, jz = localX + localWidth; j < jz; j ++) {
     
    -                    pos = yw + (j * 4);
    -                    data[pos] = 0;
    -                }
    -            }
    -        }`,
    +    name: 'emboss',
    +    method: 'emboss',
    +    angle: 225,
    +    strength: 3,
    +    smoothing: 0,
    +    tolerance: 0,
    +    clamp: 0,
    +    postProcessResults: true,
    +    useNaturalGrayscale: false,
    +    keepOnlyChangedAreas: false,
     });
  • @@ -962,7 +1008,7 @@

    Scene setup

    method: 'fillAndDraw', - filters: ['venetianBlinds'], + filters: ['emboss'], @@ -1468,7 +1514,7 @@

    Scene animation

    }); myshape.set({ - filters: 'venetianBlinds', + filters: 'emboss', }) }; diff --git a/docs/demo/component-005.html b/docs/demo/component-005.html index 39aeaa18b..f63886c8a 100644 --- a/docs/demo/component-005.html +++ b/docs/demo/component-005.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/component-006.html b/docs/demo/component-006.html index b11e84309..c9227a473 100644 --- a/docs/demo/component-006.html +++ b/docs/demo/component-006.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/component-007.html b/docs/demo/component-007.html index 0afd3903d..67733513c 100644 --- a/docs/demo/component-007.html +++ b/docs/demo/component-007.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/core-001.html b/docs/demo/core-001.html index 0d958c147..a0f567ed2 100644 --- a/docs/demo/core-001.html +++ b/docs/demo/core-001.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-001.html b/docs/demo/dom-001.html index 45a69b8e5..a9dd7a5b8 100644 --- a/docs/demo/dom-001.html +++ b/docs/demo/dom-001.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-002.html b/docs/demo/dom-002.html index 2ef7e21e1..3d978e718 100644 --- a/docs/demo/dom-002.html +++ b/docs/demo/dom-002.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-003.html b/docs/demo/dom-003.html index 54f64f032..3871e92da 100644 --- a/docs/demo/dom-003.html +++ b/docs/demo/dom-003.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-004.html b/docs/demo/dom-004.html index ca31ebdfb..751cf10e0 100644 --- a/docs/demo/dom-004.html +++ b/docs/demo/dom-004.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-005.html b/docs/demo/dom-005.html index db70f694a..271f75553 100644 --- a/docs/demo/dom-005.html +++ b/docs/demo/dom-005.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-006.html b/docs/demo/dom-006.html index 00e7fa90b..8b8cb9746 100644 --- a/docs/demo/dom-006.html +++ b/docs/demo/dom-006.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-007.html b/docs/demo/dom-007.html index 46976857d..3b9d7393f 100644 --- a/docs/demo/dom-007.html +++ b/docs/demo/dom-007.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-008.html b/docs/demo/dom-008.html index a8cf313e7..f569a2d9f 100644 --- a/docs/demo/dom-008.html +++ b/docs/demo/dom-008.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-009.html b/docs/demo/dom-009.html index 70c02433e..53988d9de 100644 --- a/docs/demo/dom-009.html +++ b/docs/demo/dom-009.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-010.html b/docs/demo/dom-010.html index 7917fc2aa..048cc0996 100644 --- a/docs/demo/dom-010.html +++ b/docs/demo/dom-010.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-011.html b/docs/demo/dom-011.html index d510ad009..21a45cfa7 100644 --- a/docs/demo/dom-011.html +++ b/docs/demo/dom-011.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-012.html b/docs/demo/dom-012.html index 1758f510d..639740a5d 100644 --- a/docs/demo/dom-012.html +++ b/docs/demo/dom-012.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-013.html b/docs/demo/dom-013.html index 70a42d425..b25347df0 100644 --- a/docs/demo/dom-013.html +++ b/docs/demo/dom-013.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-014a.html b/docs/demo/dom-014a.html index eea714fe9..4ca1e90e2 100644 --- a/docs/demo/dom-014a.html +++ b/docs/demo/dom-014a.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-014b.html b/docs/demo/dom-014b.html index ad9681742..29e50888f 100644 --- a/docs/demo/dom-014b.html +++ b/docs/demo/dom-014b.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-014c.html b/docs/demo/dom-014c.html index 424556fb2..91600b6c2 100644 --- a/docs/demo/dom-014c.html +++ b/docs/demo/dom-014c.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-015.html b/docs/demo/dom-015.html index a3db51ead..a16a72571 100644 --- a/docs/demo/dom-015.html +++ b/docs/demo/dom-015.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/dom-016.html b/docs/demo/dom-016.html index 1fc9fee3d..849b4f5d1 100644 --- a/docs/demo/dom-016.html +++ b/docs/demo/dom-016.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/filters-001.html b/docs/demo/filters-001.html index 2c0e5a303..e4108d815 100644 --- a/docs/demo/filters-001.html +++ b/docs/demo/filters-001.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -593,6 +653,8 @@

    Scene setup

    css: { display: 'inline-block', }, +}).setBase({ + compileOrder: 1, }); scrawl.importDomImage('.flowers'); @@ -614,10 +676,10 @@

    Scene setup

    name: 'blur', method: 'blur', - radius: 1, - shrinkingRadius: false, + radius: 10, includeAlpha: false, passes: 1, + step: 1, }); @@ -668,6 +730,11 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let radius = document.querySelector('#radius'), + passes = document.querySelector('#passes'), + step = document.querySelector('#step'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -675,8 +742,8 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - radius: ${blurFilter.radius} - passes: ${blurFilter.passes}`; + Radius: ${radius.value}, Step: ${step.value}, Passes: ${passes.value} + Opacity: ${opacity.value}`; }; }(); @@ -728,12 +795,17 @@

    User interaction

    radius: ['radius', 'round'], passes: ['passes', 'round'], + step: ['step', 'round'], - shrinkingRadius: ['shrinkingRadius', 'boolean'], + includeRed: ['includeRed', 'boolean'], + includeGreen: ['includeGreen', 'boolean'], + includeBlue: ['includeBlue', 'boolean'], includeAlpha: ['includeAlpha', 'boolean'], processHorizontal: ['processHorizontal', 'boolean'], processVertical: ['processVertical', 'boolean'], + + opacity: ['opacity', 'float'], }, }); @@ -750,12 +822,16 @@

    User interaction

    -
    document.querySelector('#radius').value = 1;
    +            
    document.querySelector('#radius').value = 10;
     document.querySelector('#passes').value = 1;
    -document.querySelector('#shrinkingRadius').options.selectedIndex = 0;
    +document.querySelector('#step').value = 1;
    +document.querySelector('#includeRed').options.selectedIndex = 1;
    +document.querySelector('#includeGreen').options.selectedIndex = 1;
    +document.querySelector('#includeBlue').options.selectedIndex = 1;
     document.querySelector('#includeAlpha').options.selectedIndex = 0;
     document.querySelector('#processHorizontal').options.selectedIndex = 1;
    -document.querySelector('#processVertical').options.selectedIndex = 1;
    +document.querySelector('#processVertical').options.selectedIndex = 1; +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-002.html b/docs/demo/filters-002.html index e2a5738bc..51b05b157 100644 --- a/docs/demo/filters-002.html +++ b/docs/demo/filters-002.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -587,7 +647,8 @@

    Scene setup

    -
    const canvas = scrawl.library.canvas.mycanvas;
    +            
    const canvas = scrawl.library.canvas.mycanvas,
    +    filter = scrawl.library.filter;
     
     scrawl.importDomImage('.flowers');
    @@ -840,13 +901,16 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); testTime = testNow - testTicker; testTicker = testNow; - testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`; + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Opacity: ${opacity.value}`; }; }();
    @@ -879,6 +943,55 @@

    Scene animation

    +

    User interaction

    + + + +
    const myFilters = [
    +    filter.red,
    +    filter.green,
    +    filter.blue,
    +    filter.cyan,
    +    filter.magenta,
    +    filter.yellow,
    +    filter.notred,
    +    filter.notgreen,
    +    filter.notblue,
    +    filter.grayscale,
    +    filter.sepia,
    +    filter.invert
    +];
    +
    +scrawl.addNativeListener(['input', 'change'], (e) => {
    +
    +    myFilters.forEach(f => f.set({ opacity: parseFloat(e.target.value) }));
    +
    +}, '#opacity');
    + + + + +
  • +
    + +
    + +
    +

    Setup form

    + +
    + +
    document.querySelector('#opacity').value = 1;
    + +
  • + + +
  • +
    + +
    + +

    Development and testing

    diff --git a/docs/demo/filters-003.html b/docs/demo/filters-003.html index 253381c2f..342fbf455 100644 --- a/docs/demo/filters-003.html +++ b/docs/demo/filters-003.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -694,6 +754,9 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let level = document.querySelector('#level'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -701,7 +764,8 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - level: ${filter.brightness.level}`; + Level: ${level.value} + Opacity: ${opacity.value}`; }; }(); @@ -738,11 +802,37 @@

    User interaction

    -
    scrawl.addNativeListener(['input', 'change'], (e) => {
    +            
    scrawl.observeAndUpdate({
    +
    +    event: ['input', 'change'],
    +    origin: '.controlItem',
     
    -    levelFilters.forEach(f => f.set({ level: parseFloat(e.target.value) }));
    +    target: filter.brightness,
    +
    +    useNativeListener: true,
    +    preventDefault: true,
    +
    +    updates: {
    +        opacity: ['opacity', 'float'],
    +        level: ['level', 'float'],
    +    },
    +});
     
    -}, '#level')
    +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: filter.saturation, + + useNativeListener: true, + preventDefault: true, + + updates: { + opacity: ['opacity', 'float'], + level: ['level', 'float'], + }, +});
  • @@ -757,7 +847,8 @@

    User interaction

    -
    document.querySelector('#level').value = 1;
    +
    document.querySelector('#opacity').value = 1;
    +document.querySelector('#level').value = 1;
    diff --git a/docs/demo/filters-004.html b/docs/demo/filters-004.html index 2f58dcb87..8b0c02a76 100644 --- a/docs/demo/filters-004.html +++ b/docs/demo/filters-004.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -672,7 +732,8 @@

    Scene animation

    let lowCol = document.querySelector('#lowColor'), highCol = document.querySelector('#highColor'), - level = document.querySelector('#level'); + level = document.querySelector('#level'), + opacity = document.querySelector('#opacity'); return function () { @@ -681,9 +742,9 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - low color: ${lowCol.value} - high color: ${highCol.value} - level: ${level.value}`; + Low color: ${lowCol.value}, High color: ${highCol.value} + Level: ${level.value} + Opacity: ${opacity.value}`; }; }(); @@ -730,6 +791,11 @@

    User interaction

    (e) => myFilter.set({ level: parseFloat(e.target.value) }), '#level'); +scrawl.addNativeListener( + ['input', 'change'], + (e) => myFilter.set({ opacity: parseFloat(e.target.value) }), + '#opacity'); + scrawl.addNativeListener( ['input', 'change'], (e) => { @@ -773,7 +839,8 @@

    User interaction

    document.querySelector('#lowColor').value = '#000000';
     document.querySelector('#highColor').value = '#ffffff';
    -document.querySelector('#level').value = 127;
    +document.querySelector('#level').value = 127; +document.querySelector('#opacity').value = 1; diff --git a/docs/demo/filters-005.html b/docs/demo/filters-005.html index afb0d8316..51151fc73 100644 --- a/docs/demo/filters-005.html +++ b/docs/demo/filters-005.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -666,7 +726,8 @@

    Scene animation

    let red = document.querySelector('#red'), green = document.querySelector('#green'), - blue = document.querySelector('#blue'); + blue = document.querySelector('#blue'), + opacity = document.querySelector('#opacity'); return function () { @@ -675,9 +736,8 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: ${red.value} - green: ${green.value} - blue: ${blue.value}`; + Red: ${red.value}, Green: ${green.value}, Blue: ${blue.value} + Opacity: ${opacity.value}`; }; }(); @@ -730,6 +790,7 @@

    User interaction

    red: ['red', 'float'], green: ['green', 'float'], blue: ['blue', 'float'], + opacity: ['opacity', 'float'], }, }); @@ -748,7 +809,8 @@

    User interaction

    document.querySelector('#red').value = 1;
     document.querySelector('#green').value = 1;
    -document.querySelector('#blue').value = 1;
    +document.querySelector('#blue').value = 1; +document.querySelector('#opacity').value = 1; diff --git a/docs/demo/filters-006.html b/docs/demo/filters-006.html index a8970b761..083c3de5f 100644 --- a/docs/demo/filters-006.html +++ b/docs/demo/filters-006.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 006

    -

    Filter parameters: channels

    +

    Filter parameters: channelLevels

    @@ -606,12 +666,13 @@

    Scene setup

    const myFilter = scrawl.makeFilter({
     
    -    name: 'channels',
    -    method: 'channels',
    +    name: 'channelLevels',
    +    method: 'channelLevels',
     
    -    red: 1,
    -    green: 1,
    -    blue: 1,
    +    red: [50, 200],
    +    green: [60, 220, 150],
    +    blue: [40, 180],
    +    alpha: [],
     });
    @@ -641,7 +702,7 @@

    Scene setup

    method: 'fill', - filters: ['channels'], + filters: ['channelLevels'], }); @@ -666,7 +727,9 @@

    Scene animation

    let red = document.querySelector('#red'), green = document.querySelector('#green'), - blue = document.querySelector('#blue'); + alpha = document.querySelector('#alpha'), + blue = document.querySelector('#blue'), + opacity = document.querySelector('#opacity'); return function () { @@ -675,9 +738,11 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - red: ${red.value} - green: ${green.value} - blue: ${blue.value}`; + Red: [${red.value}] + Green: [${green.value}] + Blue: [${blue.value}] + Alpha: [${alpha.value}] + Opacity: ${opacity.value}`; }; }(); @@ -711,27 +776,32 @@

    Scene animation

    User interaction

    -

    Setup form observer functionality

    -
    scrawl.observeAndUpdate({
    +            
    scrawl.addNativeListener(
    +    ['input', 'change'], 
    +    (e) => {
     
    -    event: ['input', 'change'],
    -    origin: '.controlItem',
    +        let a;
     
    -    target: myFilter,
    +        if (e.target.id === 'opacity') a = e.target.value;
    +        else {
     
    -    useNativeListener: true,
    -    preventDefault: true,
    +            let temp = e.target.value.split(',');
    +            a = [];
     
    -    updates: {
    +            temp.forEach(t => {
    +                let n = parseInt(t, 10);
    +                if (n.toFixed && !isNaN(n)) a.push(n)
    +            });
    +        }
     
    -        red: ['red', 'float'],
    -        green: ['green', 'float'],
    -        blue: ['blue', 'float'],
    -    },
    -});
    + myFilter.set({ + [e.target.id]: a, + }); + }, + '.controlItem');
    @@ -746,9 +816,11 @@

    User interaction

    -
    document.querySelector('#red').value = 1;
    -document.querySelector('#green').value = 1;
    -document.querySelector('#blue').value = 1;
    +
    document.querySelector('#red').value = '50, 200';
    +document.querySelector('#green').value = '60, 220, 150';
    +document.querySelector('#blue').value = '40, 180';
    +document.querySelector('#alpha').value = '';
    +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-007.html b/docs/demo/filters-007.html index 259ac7d1d..443520e62 100644 --- a/docs/demo/filters-007.html +++ b/docs/demo/filters-007.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 007

    -

    Filter parameters: tint

    +

    Filter parameters: channels

    @@ -606,18 +666,12 @@

    Scene setup

    const myFilter = scrawl.makeFilter({
     
    -    name: 'tint',
    -    method: 'tint',
    +    name: 'channels',
    +    method: 'channels',
     
    -    redInRed: 1,
    -    redInGreen: 0,
    -    redInBlue: 0,
    -    greenInRed: 0,
    -    greenInGreen: 1,
    -    greenInBlue: 0,
    -    blueInRed: 0,
    -    blueInGreen: 0,
    -    blueInBlue: 1,
    +    red: 1,
    +    green: 1,
    +    blue: 1,
     });
    @@ -647,7 +701,7 @@

    Scene setup

    method: 'fill', - filters: ['tint'], + filters: ['channels'], }); @@ -670,15 +724,11 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); - let redInRed = document.querySelector('#redInRed'), - greenInRed = document.querySelector('#greenInRed'), - blueInRed = document.querySelector('#blueInRed'), - redInGreen = document.querySelector('#redInGreen'), - greenInGreen = document.querySelector('#greenInGreen'), - blueInGreen = document.querySelector('#blueInGreen'), - redInBlue = document.querySelector('#redInBlue'), - greenInBlue = document.querySelector('#greenInBlue'), - blueInBlue = document.querySelector('#blueInBlue'); + let red = document.querySelector('#red'), + green = document.querySelector('#green'), + blue = document.querySelector('#blue'), + alpha = document.querySelector('#alpha'), + opacity = document.querySelector('#opacity'); return function () { @@ -687,9 +737,8 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - In Red - red: ${redInRed.value} green: ${greenInRed.value} blue: ${blueInRed.value} - In Green - red: ${redInGreen.value} green: ${greenInGreen.value} blue: ${blueInGreen.value} - In Blue - red: ${redInBlue.value} green: ${greenInBlue.value} blue: ${blueInBlue.value}`; + Red: ${red.value}, Green: ${green.value}, Blue: ${blue.value}, Alpha: ${alpha.value} + Opacity: ${opacity.value}`; }; }(); @@ -739,15 +788,11 @@

    User interaction

    updates: { - redInRed: ['redInRed', 'float'], - redInGreen: ['redInGreen', 'float'], - redInBlue: ['redInBlue', 'float'], - greenInRed: ['greenInRed', 'float'], - greenInGreen: ['greenInGreen', 'float'], - greenInBlue: ['greenInBlue', 'float'], - blueInRed: ['blueInRed', 'float'], - blueInGreen: ['blueInGreen', 'float'], - blueInBlue: ['blueInBlue', 'float'], + red: ['red', 'float'], + green: ['green', 'float'], + blue: ['blue', 'float'], + alpha: ['alpha', 'float'], + opacity: ['opacity', 'float'], }, }); @@ -764,15 +809,11 @@

    User interaction

    -
    document.querySelector('#redInRed').value = 1;
    -document.querySelector('#redInGreen').value = 0;
    -document.querySelector('#redInBlue').value = 0;
    -document.querySelector('#greenInRed').value = 0;
    -document.querySelector('#greenInGreen').value = 1;
    -document.querySelector('#greenInBlue').value = 0;
    -document.querySelector('#blueInRed').value = 0;
    -document.querySelector('#blueInGreen').value = 0;
    -document.querySelector('#blueInBlue').value = 1;
    +
    document.querySelector('#red').value = 1;
    +document.querySelector('#green').value = 1;
    +document.querySelector('#blue').value = 1;
    +document.querySelector('#alpha').value = 1;
    +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-008.html b/docs/demo/filters-008.html index 166eb9ae8..7b0467d5a 100644 --- a/docs/demo/filters-008.html +++ b/docs/demo/filters-008.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 008

    -

    Filter parameters: pixelate

    +

    Filter parameters: tint

    @@ -606,13 +666,18 @@

    Scene setup

    const myFilter = scrawl.makeFilter({
     
    -    name: 'pixelate',
    -    method: 'pixelate',
    +    name: 'tint',
    +    method: 'tint',
     
    -    tileWidth: 10,
    -    tileHeight: 10,
    -    offsetX: 0,
    -    offsetY: 0,
    +    redInRed: 1,
    +    redInGreen: 0,
    +    redInBlue: 0,
    +    greenInRed: 0,
    +    greenInGreen: 1,
    +    greenInBlue: 0,
    +    blueInRed: 0,
    +    blueInGreen: 0,
    +    blueInBlue: 1,
     });
    @@ -642,7 +707,7 @@

    Scene setup

    method: 'fill', - filters: ['pixelate'], + filters: ['tint'], }); @@ -665,10 +730,16 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); - let tile_width = document.querySelector('#tile_width'), - tile_height = document.querySelector('#tile_height'), - offset_x = document.querySelector('#offset_x'), - offset_y = document.querySelector('#offset_y'); + let redInRed = document.querySelector('#redInRed'), + greenInRed = document.querySelector('#greenInRed'), + blueInRed = document.querySelector('#blueInRed'), + redInGreen = document.querySelector('#redInGreen'), + greenInGreen = document.querySelector('#greenInGreen'), + blueInGreen = document.querySelector('#blueInGreen'), + redInBlue = document.querySelector('#redInBlue'), + greenInBlue = document.querySelector('#greenInBlue'), + blueInBlue = document.querySelector('#blueInBlue'), + opacity = document.querySelector('#opacity'); return function () { @@ -677,8 +748,10 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - Tile dimensions - width: ${tile_width.value} height: ${tile_height.value} - Offset - x: ${offset_x.value} y: ${offset_y.value}`; + In Red - red: ${redInRed.value} green: ${greenInRed.value} blue: ${blueInRed.value} + In Green - red: ${redInGreen.value} green: ${greenInGreen.value} blue: ${blueInGreen.value} + In Blue - red: ${redInBlue.value} green: ${greenInBlue.value} blue: ${blueInBlue.value} + Opacity: ${opacity.value}`; }; }(); @@ -728,10 +801,16 @@

    User interaction

    updates: { - tile_width: ['tileWidth', 'round'], - tile_height: ['tileHeight', 'round'], - offset_x: ['offsetX', 'round'], - offset_y: ['offsetY', 'round'], + redInRed: ['redInRed', 'float'], + redInGreen: ['redInGreen', 'float'], + redInBlue: ['redInBlue', 'float'], + greenInRed: ['greenInRed', 'float'], + greenInGreen: ['greenInGreen', 'float'], + greenInBlue: ['greenInBlue', 'float'], + blueInRed: ['blueInRed', 'float'], + blueInGreen: ['blueInGreen', 'float'], + blueInBlue: ['blueInBlue', 'float'], + opacity: ['opacity', 'float'], }, }); @@ -748,10 +827,16 @@

    User interaction

    -
    document.querySelector('#tile_width').value = 10;
    -document.querySelector('#tile_height').value = 10;
    -document.querySelector('#offset_x').value = 0;
    -document.querySelector('#offset_y').value = 0;
    +
    document.querySelector('#redInRed').value = 1;
    +document.querySelector('#redInGreen').value = 0;
    +document.querySelector('#redInBlue').value = 0;
    +document.querySelector('#greenInRed').value = 0;
    +document.querySelector('#greenInGreen').value = 1;
    +document.querySelector('#greenInBlue').value = 0;
    +document.querySelector('#blueInRed').value = 0;
    +document.querySelector('#blueInGreen').value = 0;
    +document.querySelector('#blueInBlue').value = 1;
    +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-009.html b/docs/demo/filters-009.html index 68b38927b..151410337 100644 --- a/docs/demo/filters-009.html +++ b/docs/demo/filters-009.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 009

    -

    Filter parameters: chroma

    +

    Filter parameters: pixelate

    @@ -601,18 +661,18 @@

    Scene setup

    Create the filter

    -
      -
    • Chroma filters can have more than one range; each range array should be added to the ranges attribute
    • -
    const myFilter = scrawl.makeFilter({
     
    -    name: 'chroma',
    -    method: 'chroma',
    +    name: 'pixelate',
    +    method: 'pixelate',
     
    -    ranges: [[0, 0, 0, 92, 127, 92]],
    +    tileWidth: 10,
    +    tileHeight: 10,
    +    offsetX: 0,
    +    offsetY: 0,
     });
    @@ -642,7 +702,7 @@

    Scene setup

    method: 'fill', - filters: ['chroma'], + filters: ['pixelate'], }); @@ -665,8 +725,11 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); - let lowCol = document.querySelector('#lowColor'), - highCol = document.querySelector('#highColor'); + let tile_width = document.querySelector('#tile_width'), + tile_height = document.querySelector('#tile_height'), + offset_x = document.querySelector('#offset_x'), + offset_y = document.querySelector('#offset_y'), + opacity = document.querySelector('#opacity'); return function () { @@ -675,9 +738,9 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - low color: ${lowCol.value} - high color: ${highCol.value} - range: [${myFilter.ranges}]`; + Tile dimensions - width: ${tile_width.value} height: ${tile_height.value} + Offset - x: ${offset_x.value} y: ${offset_y.value} + Opacity: ${opacity.value}`; }; }(); @@ -715,44 +778,31 @@

    User interaction

    -
    const interpretColors = function () {
    -
    -    const converter = scrawl.makeColor({
    -        name: 'converter',
    -    });
    +            
    scrawl.observeAndUpdate({
     
    -    const lowColor = document.querySelector('#lowColor');
    -    const highColor = document.querySelector('#highColor');
    +    event: ['input', 'change'],
    +    origin: '.controlItem',
     
    -    let lowRed = 0,
    -        lowGreen = 0,
    -        lowBlue = 0,
    -        highRed = 92,
    -        highGreen = 127,
    -        highBlue = 92;
    +    target: myFilter,
     
    -    return function () {
    -
    -        converter.convert(lowColor.value);
    -
    -        lowRed = converter.r;
    -        lowGreen = converter.g;
    -        lowBlue = converter.b;
    +    useNativeListener: true,
    +    preventDefault: true,
     
    -        converter.convert(highColor.value);
    +    updates: {
     
    -        highRed = converter.r;
    -        highGreen = converter.g;
    -        highBlue = converter.b;
    +        tile_width: ['tileWidth', 'round'],
    +        tile_height: ['tileHeight', 'round'],
    +        offset_x: ['offsetX', 'round'],
    +        offset_y: ['offsetY', 'round'],
     
    -        myFilter.set({
    +        includeRed: ['includeRed', 'boolean'],
    +        includeGreen: ['includeGreen', 'boolean'],
    +        includeBlue: ['includeBlue', 'boolean'],
    +        includeAlpha: ['includeAlpha', 'boolean'],
     
    -            ranges: [[lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue]],
    -        })
    -    }
    -}();
    -
    -scrawl.addNativeListener(['input', 'change'], interpretColors, '.controlItem');
    + opacity: ['opacity', 'float'], + }, +});
    @@ -767,8 +817,15 @@

    User interaction

    -
    document.querySelector('#lowColor').value = '#000000';
    -document.querySelector('#highColor').value = '#5c7f5c';
    +
    document.querySelector('#tile_width').value = 10;
    +document.querySelector('#tile_height').value = 10;
    +document.querySelector('#offset_x').value = 0;
    +document.querySelector('#offset_y').value = 0;
    +document.querySelector('#includeRed').options.selectedIndex = 1;
    +document.querySelector('#includeGreen').options.selectedIndex = 1;
    +document.querySelector('#includeBlue').options.selectedIndex = 1;
    +document.querySelector('#includeAlpha').options.selectedIndex = 0;
    +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-010.html b/docs/demo/filters-010.html index c82271626..f9933fae3 100644 --- a/docs/demo/filters-010.html +++ b/docs/demo/filters-010.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 010

    -

    Filter parameters: matrix, matrix5

    +

    Filter parameters: chroma

    @@ -600,24 +660,19 @@

    Scene setup

    -

    Create the filters

    +

    Create the filter

    +
      +
    • Chroma filters can have more than one range; each range array should be added to the ranges attribute
    • +
    -
    const matrix3 = scrawl.makeFilter({
    -
    -    name: 'matrix3',
    -    method: 'matrix',
    +            
    const myFilter = scrawl.makeFilter({
     
    -    weights: [0, 0, 0, 0, 1, 0, 0, 0, 0],
    -});
    +    name: 'chroma',
    +    method: 'chroma',
     
    -const matrix5 = scrawl.makeFilter({
    -
    -    name: 'matrix5',
    -    method: 'matrix5',
    -
    -    weights: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    +    ranges: [[0, 0, 0, 92, 127, 92]],
     });
    @@ -633,7 +688,7 @@

    Scene setup

    -
    const target = scrawl.makePicture({
    +            
    scrawl.makePicture({
     
         name: 'base-piccy',
     
    @@ -647,7 +702,7 @@ 

    Scene setup

    method: 'fill', - filters: ['matrix3'], + filters: ['chroma'], });
    @@ -671,7 +726,8 @@

    Scene animation

    testMessage = document.querySelector('#reportmessage'); let lowCol = document.querySelector('#lowColor'), - highCol = document.querySelector('#highColor'); + highCol = document.querySelector('#highColor'), + opacity = document.querySelector('#opacity'); return function () { @@ -680,8 +736,9 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - matrix3: ${matrix3.weights} - matrix5: ${matrix5.weights}`; + (Low color: ${lowCol.value}, High color: ${highCol.value}) + Range: [${myFilter.ranges}] + Opacity: ${opacity.value}`; }; }();
    @@ -719,71 +776,48 @@

    User interaction

    -
    const changeMatrix = function () {
    +            
    const interpretColors = function () {
     
    -    const selector = document.querySelector('#selectMatrix');
    +    const converter = scrawl.makeColor({
    +        name: 'converter',
    +    });
     
    -    return function () {
    +    const lowColor = document.querySelector('#lowColor');
    +    const highColor = document.querySelector('#highColor');
     
    -        target.set({
    -            filters: [selector.value],
    -        });
    -    }
    -}();
    -scrawl.addNativeListener(['input', 'change'], changeMatrix, '#selectMatrix');
    -
    -const updateWeights = function () {
    -
    -    const m11 = document.querySelector('#m11');
    -    const m12 = document.querySelector('#m12');
    -    const m13 = document.querySelector('#m13');
    -    const m14 = document.querySelector('#m14');
    -    const m15 = document.querySelector('#m15');
    -    const m21 = document.querySelector('#m21');
    -    const m22 = document.querySelector('#m22');
    -    const m23 = document.querySelector('#m23');
    -    const m24 = document.querySelector('#m24');
    -    const m25 = document.querySelector('#m25');
    -    const m31 = document.querySelector('#m31');
    -    const m32 = document.querySelector('#m32');
    -    const m33 = document.querySelector('#m33');
    -    const m34 = document.querySelector('#m34');
    -    const m35 = document.querySelector('#m35');
    -    const m41 = document.querySelector('#m41');
    -    const m42 = document.querySelector('#m42');
    -    const m43 = document.querySelector('#m43');
    -    const m44 = document.querySelector('#m44');
    -    const m45 = document.querySelector('#m45');
    -    const m51 = document.querySelector('#m51');
    -    const m52 = document.querySelector('#m52');
    -    const m53 = document.querySelector('#m53');
    -    const m54 = document.querySelector('#m54');
    -    const m55 = document.querySelector('#m55');
    -
    -    let weights3, weights5;
    +    let lowRed = 0,
    +        lowGreen = 0,
    +        lowBlue = 0,
    +        highRed = 92,
    +        highGreen = 127,
    +        highBlue = 92;
     
         return function () {
     
    -        weights3 = [parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), 
    -                    parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), 
    -                    parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value)];
    +        converter.convert(lowColor.value);
    +
    +        lowRed = converter.r;
    +        lowGreen = converter.g;
    +        lowBlue = converter.b;
     
    -        weights5 = [parseFloat(m11.value), parseFloat(m12.value), parseFloat(m13.value), parseFloat(m14.value), parseFloat(m15.value), 
    -                    parseFloat(m21.value), parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), parseFloat(m25.value), 
    -                    parseFloat(m31.value), parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), parseFloat(m35.value), 
    -                    parseFloat(m41.value), parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value), parseFloat(m45.value), 
    -                    parseFloat(m51.value), parseFloat(m52.value), parseFloat(m53.value), parseFloat(m54.value), parseFloat(m55.value)];
    +        converter.convert(highColor.value);
     
    -        matrix3.set({
    -            weights: weights3,
    -        });
    +        highRed = converter.r;
    +        highGreen = converter.g;
    +        highBlue = converter.b;
     
    -        matrix5.set({
    -            weights: weights5,
    -        });
    +        myFilter.set({
    +
    +            ranges: [[lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue]],
    +        })
         }
     }();
    -scrawl.addNativeListener(['input', 'change'], updateWeights, '.weight');
    +scrawl.addNativeListener(['input', 'change'], interpretColors, '.controlItem'); + +scrawl.addNativeListener( + ['input', 'change'], + (e) => myFilter.set({ opacity: parseFloat(e.target.value) }), + '#opacity');
    @@ -798,32 +832,9 @@

    User interaction

    -
    document.querySelector('#selectMatrix').value = 'matrix3';
    -document.querySelector('#m11').value = 0;
    -document.querySelector('#m12').value = 0;
    -document.querySelector('#m13').value = 0;
    -document.querySelector('#m14').value = 0;
    -document.querySelector('#m15').value = 0;
    -document.querySelector('#m21').value = 0;
    -document.querySelector('#m22').value = 0;
    -document.querySelector('#m23').value = 0;
    -document.querySelector('#m24').value = 0;
    -document.querySelector('#m25').value = 0;
    -document.querySelector('#m31').value = 0;
    -document.querySelector('#m32').value = 0;
    -document.querySelector('#m33').value = 1;
    -document.querySelector('#m34').value = 0;
    -document.querySelector('#m35').value = 0;
    -document.querySelector('#m41').value = 0;
    -document.querySelector('#m42').value = 0;
    -document.querySelector('#m43').value = 0;
    -document.querySelector('#m44').value = 0;
    -document.querySelector('#m45').value = 0;
    -document.querySelector('#m51').value = 0;
    -document.querySelector('#m52').value = 0;
    -document.querySelector('#m53').value = 0;
    -document.querySelector('#m54').value = 0;
    -document.querySelector('#m55').value = 0;
    +
    document.querySelector('#lowColor').value = '#000000';
    +document.querySelector('#highColor').value = '#5c7f5c';
    +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-011.html b/docs/demo/filters-011.html index 5b2349665..78662501e 100644 --- a/docs/demo/filters-011.html +++ b/docs/demo/filters-011.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 011

    -

    Canvas engine filter strings (based on CSS filters)

    +

    Filter parameters: chromakey

    @@ -589,7 +649,11 @@

    Scene setup

    const canvas = scrawl.library.canvas.mycanvas;
     
    -scrawl.importDomImage('.flowers');
    +scrawl.importDomImage('.flowers'); + +canvas.setBase({ + backgroundColor: 'red', +}) @@ -600,11 +664,40 @@

    Scene setup

    -

    Create the target entitys

    +

    Create the filter

    +
      +
    • Chroma filters can have more than one range; each range array should be added to the ranges attribute
    • +
    + + + +
    const myFilter = scrawl.makeFilter({
    +
    +    name: 'chromakey',
    +    method: 'chromakey',
    +
    +    red: 0,
    +    green: 127,
    +    blue: 0,
    +
    +    opaqueAt: 1,
    +    transparentAt: 0,
    +});
    + + + + +
  • +
    + +
    + +
    +

    Create the target entity

    -
    const piccy = scrawl.makePicture({
    +            
    scrawl.makePicture({
     
         name: 'base-piccy',
     
    @@ -617,30 +710,18 @@ 

    Scene setup

    copyHeight: '100%', method: 'fill', -}); - -const text = scrawl.makePhrase({ - - name: 'demo-text', - text: 'Hello world', - font: 'bold 70px sans-serif', - start: ['center', 'center'], - handle: ['center', 'center'], - lineHeight: 0.5, - fillStyle: 'aliceblue', - strokeStyle: 'red', - lineWidth: 3, - method: 'fillThenDraw', + + filters: ['chromakey'], });
  • -
  • +
  • - +

    Scene animation

    Function to display frames-per-second data, and other information relevant to the demo

    @@ -653,24 +734,32 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let col = document.querySelector('#color'), + trans = document.querySelector('#transparentAt'), + opaq = document.querySelector('#opaqueAt'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); testTime = testNow - testTicker; testTicker = testNow; - testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`; + testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} + Key color: ${col.value} + Transparent at: ${trans.value}, Opaque at: ${opaq.value} + Opacity: ${opacity.value}`; }; }();
  • -
  • +
  • - +

    Create the Display cycle animation

    @@ -686,84 +775,54 @@

    Scene animation

  • -
  • -
    - -
    - -
    -

    User interaction

    -

    No additional work required in the Javascript file to create the CSS filters; these are defined as Strings in the HTML select <option> elements, and will be set on the target entitys as part of the form control user interaction below.

    -
    <select class="controlItem" id="filter">
    -    <option value="none">none</option>
    -    <option value="blur(6px)">blur(6px)</option>
    -    <option value="brightness(0.4)">brightness(0.4)</option>
    -    <option value="contrast(200%)">contrast(200%)</option>
    -    <option value="drop-shadow(4px 4px 4px blue)">drop-shadow(4px 4px 4px blue)</option>
    -    <option value="grayscale(100%)">grayscale(100%)</option>
    -    <option value="hue-rotate(90deg)">hue-rotate(90deg)</option>
    -    <option value="invert(75%)">invert(75%)</option>
    -    <option value="opacity(25%)">opacity(25%)</option>
    -    <option value="saturate(30%)">saturate(30%)</option>
    -    <option value="sepia(100%)">sepia(100%)</option>
    -</select>
    - -
    - -
    -let filterTarget = piccy,
    -    filterString = 'none';
    - -
  • - -
  • -

    Setup form functionality

    +

    User interaction

    +

    Setup form observer functionality

    -
    let updateTarget = (e) => {
    -
    -    e.preventDefault();
    -    e.returnValue = false;
    +            
    const interpretColors = function () {
     
    -    let val = e.target.value;
    +    const converter = scrawl.makeColor({
    +        name: 'converter',
    +    });
     
    -    if (val) {
    +    const color = document.querySelector('#color');
     
    -        piccy.set({ filter: 'none'});
    -        text.set({ filter: 'none'});
    -        canvas.setBase({ filter: 'none'});
    +    return function () {
     
    -        if (val === 'picture') filterTarget = piccy;
    -        else if (val === 'phrase') filterTarget = text;
    -        else if (val === 'cell') filterTarget = canvas.base;
    +        converter.convert(color.value);
     
    -        filterTarget.set({ filter: filterString });
    +        myFilter.set({
    +            red: converter.r,
    +            green: converter.g,
    +            blue: converter.b,
    +        });
         }
    -};
    -scrawl.addNativeListener(['input', 'change'], updateTarget, '#target');
    +}();
    +scrawl.addNativeListener(['input', 'change'], interpretColors, '.controlItem');
     
    -let updateFilter = (e) => {
    +scrawl.observeAndUpdate({
     
    -    e.preventDefault();
    -    e.returnValue = false;
    +    event: ['input', 'change'],
    +    origin: '.controlItem',
     
    -    if (e.target && e.target.value) {
    +    target: myFilter,
     
    -        filterString = e.target.value;
    -        filterTarget.set({ filter: filterString });
    -    }
    -};
    -scrawl.addNativeListener(['input', 'change'], updateFilter, '#filter');
    +    useNativeListener: true,
    +    preventDefault: true,
     
    -document.querySelector('#filter').options.selectedIndex = 0;
    -document.querySelector('#target').options.selectedIndex = 0;
    + updates: { + transparentAt: ['transparentAt', 'float'], + opaqueAt: ['opaqueAt', 'float'], + opacity: ['opacity', 'float'], + }, +});
  • @@ -774,6 +833,21 @@

    User interaction

    +

    Setup form

    + + + +
    document.querySelector('#color').value = '#007700';
    + + + + +
  • +
    + +
    + +

    Development and testing

    diff --git a/docs/demo/filters-012.html b/docs/demo/filters-012.html index 7193816b4..0637a8548 100644 --- a/docs/demo/filters-012.html +++ b/docs/demo/filters-012.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 012

    -

    SVG-based filter example: gaussian blur

    +

    Filter parameters: matrix, matrix5

    @@ -600,25 +660,24 @@

    Scene setup

    -

    Create the target entity

    +

    Create the filters

    -
    const piccy = scrawl.makePicture({
    -
    -    name: 'base-piccy',
    +            
    const matrix3 = scrawl.makeFilter({
     
    -    asset: 'iris',
    +    name: 'matrix3',
    +    method: 'matrix',
     
    -    width: '100%',
    -    height: '100%',
    +    weights: [0, 0, 0, 0, 1, 0, 0, 0, 0],
    +});
     
    -    copyWidth: '100%',
    -    copyHeight: '100%',
    +const matrix5 = scrawl.makeFilter({
     
    -    method: 'fill',
    +    name: 'matrix5',
    +    method: 'matrix5',
     
    -    filter: 'url(#svg-blur)',
    +    weights: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
     });
  • @@ -630,17 +689,26 @@

    Scene setup

    -

    SVG filter

    -

    We create the filter in the HTML script, not here:

    -
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    -  <filter id="svg-blur">
    -    <feGaussianBlur in="SourceGraphic" stdDeviation="5" edgeMode="duplicate" />
    -  </filter>
    -</svg>
    +

    Create the target entity

    -
    let feGaussianBlur = document.querySelector('feGaussianBlur');
    +
    const target = scrawl.makePicture({
    +
    +    name: 'base-piccy',
    +
    +    asset: 'iris',
    +
    +    width: '100%',
    +    height: '100%',
    +
    +    copyWidth: '100%',
    +    copyHeight: '100%',
    +
    +    method: 'fill',
    +
    +    filters: ['matrix3'],
    +});
    @@ -662,6 +730,8 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -669,10 +739,9 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - -<filter id="svg-blur"> - <feGaussianBlur in="SourceGraphic" stdDeviation="${feGaussianBlur.getAttribute('stdDeviation')}" edgeMode="${feGaussianBlur.getAttribute('edgeMode')}" /> -</filter>`; + matrix3 weights array: ${matrix3.weights} + matrix5 weights array: ${matrix5.weights} + Opacity: ${opacity.value}`; }; }(); @@ -706,30 +775,117 @@

    Scene animation

    User interaction

    -

    Setup form functionality

    +

    Setup form observer functionality

    -
    let updateStdDeviation = (e) => {
    +            
    const changeMatrix = function () {
    +
    +    const selector = document.querySelector('#selectMatrix');
    +
    +    return function () {
    +
    +        target.set({
    +            filters: [selector.value],
    +        });
    +    }
    +}();
    +scrawl.addNativeListener(['input', 'change'], changeMatrix, '#selectMatrix');
    +
    +const updateWeights = function () {
    +
    +    const m11 = document.querySelector('#m11');
    +    const m12 = document.querySelector('#m12');
    +    const m13 = document.querySelector('#m13');
    +    const m14 = document.querySelector('#m14');
    +    const m15 = document.querySelector('#m15');
    +    const m21 = document.querySelector('#m21');
    +    const m22 = document.querySelector('#m22');
    +    const m23 = document.querySelector('#m23');
    +    const m24 = document.querySelector('#m24');
    +    const m25 = document.querySelector('#m25');
    +    const m31 = document.querySelector('#m31');
    +    const m32 = document.querySelector('#m32');
    +    const m33 = document.querySelector('#m33');
    +    const m34 = document.querySelector('#m34');
    +    const m35 = document.querySelector('#m35');
    +    const m41 = document.querySelector('#m41');
    +    const m42 = document.querySelector('#m42');
    +    const m43 = document.querySelector('#m43');
    +    const m44 = document.querySelector('#m44');
    +    const m45 = document.querySelector('#m45');
    +    const m51 = document.querySelector('#m51');
    +    const m52 = document.querySelector('#m52');
    +    const m53 = document.querySelector('#m53');
    +    const m54 = document.querySelector('#m54');
    +    const m55 = document.querySelector('#m55');
    +
    +    let weights3, weights5;
    +
    +    return function () {
    +
    +        weights3 = [parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), 
    +                    parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), 
    +                    parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value)];
     
    -    e.preventDefault();
    -    e.returnValue = false;
    +        weights5 = [parseFloat(m11.value), parseFloat(m12.value), parseFloat(m13.value), parseFloat(m14.value), parseFloat(m15.value), 
    +                    parseFloat(m21.value), parseFloat(m22.value), parseFloat(m23.value), parseFloat(m24.value), parseFloat(m25.value), 
    +                    parseFloat(m31.value), parseFloat(m32.value), parseFloat(m33.value), parseFloat(m34.value), parseFloat(m35.value), 
    +                    parseFloat(m41.value), parseFloat(m42.value), parseFloat(m43.value), parseFloat(m44.value), parseFloat(m45.value), 
    +                    parseFloat(m51.value), parseFloat(m52.value), parseFloat(m53.value), parseFloat(m54.value), parseFloat(m55.value)];
     
    -    feGaussianBlur.setAttribute('stdDeviation', parseFloat(e.target.value));
    -};
    -scrawl.addNativeListener(['input', 'change'], updateStdDeviation, '#stdDeviation');
    +        matrix3.set({
    +            weights: weights3,
    +        });
     
    -let updateEdgeMode = (e) => {
    +        matrix5.set({
    +            weights: weights5,
    +        });
    +    }
    +}();
    +scrawl.addNativeListener(['input', 'change'], updateWeights, '.weight');
     
    -    e.preventDefault();
    -    e.returnValue = false;
    +scrawl.observeAndUpdate({
     
    -    feGaussianBlur.setAttribute(`edgeMode`, e.target.value);
    -};
    -scrawl.addNativeListener(['input', 'change'], updateEdgeMode, '#edgeMode');
    +    event: ['input', 'change'],
    +    origin: '.controlItem',
     
    -document.querySelector('#stdDeviation').value = 5;
    -document.querySelector('#edgeMode').options.selectedIndex = 0;
    + target: matrix3, + + useNativeListener: true, + preventDefault: true, + + updates: { + + includeRed: ['includeRed', 'boolean'], + includeGreen: ['includeGreen', 'boolean'], + includeBlue: ['includeBlue', 'boolean'], + includeAlpha: ['includeAlpha', 'boolean'], + + opacity: ['opacity', 'float'], + }, +}); + +scrawl.observeAndUpdate({ + + event: ['input', 'change'], + origin: '.controlItem', + + target: matrix5, + + useNativeListener: true, + preventDefault: true, + + updates: { + + includeRed: ['includeRed', 'boolean'], + includeGreen: ['includeGreen', 'boolean'], + includeBlue: ['includeBlue', 'boolean'], + includeAlpha: ['includeAlpha', 'boolean'], + + opacity: ['opacity', 'float'], + }, +});
    @@ -740,6 +896,51 @@

    User interaction

    +

    Setup form

    + + + +
    document.querySelector('#selectMatrix').value = 'matrix3';
    +document.querySelector('#m11').value = 0;
    +document.querySelector('#m12').value = 0;
    +document.querySelector('#m13').value = 0;
    +document.querySelector('#m14').value = 0;
    +document.querySelector('#m15').value = 0;
    +document.querySelector('#m21').value = 0;
    +document.querySelector('#m22').value = 0;
    +document.querySelector('#m23').value = 0;
    +document.querySelector('#m24').value = 0;
    +document.querySelector('#m25').value = 0;
    +document.querySelector('#m31').value = 0;
    +document.querySelector('#m32').value = 0;
    +document.querySelector('#m33').value = 1;
    +document.querySelector('#m34').value = 0;
    +document.querySelector('#m35').value = 0;
    +document.querySelector('#m41').value = 0;
    +document.querySelector('#m42').value = 0;
    +document.querySelector('#m43').value = 0;
    +document.querySelector('#m44').value = 0;
    +document.querySelector('#m45').value = 0;
    +document.querySelector('#m51').value = 0;
    +document.querySelector('#m52').value = 0;
    +document.querySelector('#m53').value = 0;
    +document.querySelector('#m54').value = 0;
    +document.querySelector('#m55').value = 0;
    +document.querySelector('#includeRed').options.selectedIndex = 1;
    +document.querySelector('#includeGreen').options.selectedIndex = 1;
    +document.querySelector('#includeBlue').options.selectedIndex = 1;
    +document.querySelector('#includeAlpha').options.selectedIndex = 0;
    +document.querySelector('#opacity').value = 1;
    + + + + +
  • +
    + +
    + +

    Development and testing

    diff --git a/docs/demo/filters-013.html b/docs/demo/filters-013.html index 48948f754..ac6c750c7 100644 --- a/docs/demo/filters-013.html +++ b/docs/demo/filters-013.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 013

    -

    SVG-based filter example: posterize

    +

    Filter parameters: flood

    @@ -600,25 +660,19 @@

    Scene setup

    -

    Create the target entity

    +

    Create the filter

    -
    const piccy = scrawl.makePicture({
    -
    -    name: 'base-piccy',
    +            
    const myFilter = scrawl.makeFilter({
     
    -    asset: 'iris',
    -
    -    width: '100%',
    -    height: '100%',
    +    name: 'flood',
    +    method: 'flood',
     
    -    copyWidth: '100%',
    -    copyHeight: '100%',
    -
    -    method: 'fill',
    -
    -    filter: 'url(#svg-posterize)',
    +    red: 0,
    +    green: 0,
    +    blue: 0,
    +    alpha: 255
     });
  • @@ -630,23 +684,26 @@

    Scene setup

    -

    SVG filter

    -

    We create the filter in the HTML script, not here:

    -
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    -  <filter id="svg-posterize">
    -    <feComponentTransfer>
    -      <feFuncR type="discrete" tableValues=".1 .4 .7 1" />
    -      <feFuncG type="discrete" tableValues=".1 .4 .7 1" />
    -      <feFuncB type="discrete" tableValues=".1 .4 .7 1" />
    -    </feComponentTransfer>
    -  </filter>
    -</svg>
    +

    Create the target entity

    -
    let feFuncR = document.querySelector('feFuncR'),
    -    feFuncG = document.querySelector('feFuncG'),
    -    feFuncB = document.querySelector('feFuncB');
    +
    scrawl.makePicture({
    +
    +    name: 'base-piccy',
    +
    +    asset: 'iris',
    +
    +    width: '100%',
    +    height: '100%',
    +
    +    copyWidth: '100%',
    +    copyHeight: '100%',
    +
    +    method: 'fill',
    +
    +    filters: ['flood'],
    +});
    @@ -668,6 +725,9 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let flood = document.querySelector('#flood'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -675,14 +735,8 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - -<filter id="svg-posterize"> - <feComponentTransfer> - <feFuncR type="discrete" tableValues="${feFuncR.getAttribute('tableValues')}" /> - <feFuncG type="discrete" tableValues="${feFuncG.getAttribute('tableValues')}" /> - <feFuncB type="discrete" tableValues="${feFuncB.getAttribute('tableValues')}" /> - </feComponentTransfer> -</filter>`; + Flood color: ${flood.value} + Opacity: ${opacity.value}`; }; }(); @@ -716,36 +770,32 @@

    Scene animation

    User interaction

    +

    Use a color object to convert between CSS hexadecimal and RGB decimal colors

    -
    let r1 = document.querySelector('#r1'),
    -    r2 = document.querySelector('#r2'),
    -    r3 = document.querySelector('#r3'),
    -    r4 = document.querySelector('#r4');
    +            
    const converter = scrawl.makeColor({
    +    name: 'converter',
    +});
    +
    +scrawl.addNativeListener(
    +    ['input', 'change'], 
    +    (e) => myFilter.set({ opacity: parseFloat(e.target.value) }), 
    +    '#opacity');
     
    -let g1 = document.querySelector('#g1'),
    -    g2 = document.querySelector('#g2'),
    -    g3 = document.querySelector('#g3'),
    -    g4 = document.querySelector('#g4');
    +scrawl.addNativeListener(
    +    ['input', 'change'], 
    +    (e) => {
     
    -let b1 = document.querySelector('#b1'),
    -    b2 = document.querySelector('#b2'),
    -    b3 = document.querySelector('#b3'),
    -    b4 = document.querySelector('#b4');
    +        converter.convert(e.target.value);
     
    -r1.value = 0.1;
    -r2.value = 0.4;
    -r3.value = 0.7;
    -r4.value = 1;
    -g1.value = 0.1;
    -g2.value = 0.4;
    -g3.value = 0.7;
    -g4.value = 1;
    -b1.value = 0.1;
    -b2.value = 0.4;
    -b3.value = 0.7;
    -b4.value = 1;
    + myFilter.set({ + red: converter.r, + green: converter.g, + blue: converter.b, + }); + }, + '#flood');
    @@ -756,18 +806,12 @@

    User interaction

    -

    Setup form functionality

    +

    Setup form

    -
    let updateR = () => feFuncR.setAttribute('tableValues', `${r1.value} ${r2.value} ${r3.value} ${r4.value}`);
    -scrawl.addNativeListener(['input', 'change'], updateR, '.feFuncR');
    -
    -let updateG = () => feFuncG.setAttribute('tableValues', `${g1.value} ${g2.value} ${g3.value} ${g4.value}`);
    -scrawl.addNativeListener(['input', 'change'], updateG, '.feFuncG');
    -
    -let updateB = () => feFuncB.setAttribute('tableValues', `${b1.value} ${b2.value} ${b3.value} ${b4.value}`);
    -scrawl.addNativeListener(['input', 'change'], updateB, '.feFuncB');
    +
    document.querySelector('#flood').value = '#000000';
    +document.querySelector('#opacity').value = 1;
    diff --git a/docs/demo/filters-014.html b/docs/demo/filters-014.html index d124c8ed0..f3634310f 100644 --- a/docs/demo/filters-014.html +++ b/docs/demo/filters-014.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 014

    -

    SVG-based filter example: duotone

    +

    Filter parameters: areaAlpha

    @@ -600,25 +660,22 @@

    Scene setup

    -

    Create the target entity

    +

    Create the filter

    -
    const piccy = scrawl.makePicture({
    +            
    const myFilter = scrawl.makeFilter({
     
    -    name: 'base-piccy',
    +    name: 'areaAlpha',
    +    method: 'areaAlpha',
     
    -    asset: 'iris',
    -
    -    width: '100%',
    -    height: '100%',
    -
    -    copyWidth: '100%',
    -    copyHeight: '100%',
    -
    -    method: 'fill',
    -
    -    filter: 'url(#svg-duotone)',
    +    tileWidth: 10,
    +    tileHeight: 10,
    +    gutterWidth: 10,
    +    gutterHeight: 10,
    +    offsetX: 0,
    +    offsetY: 0,
    +    areaAlphaLevels: [255, 255, 0, 0],
     });
    @@ -630,50 +687,35 @@

    Scene setup

    -

    SVG filter

    -

    We create the filter in the HTML script, not here:

    -
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    -  <filter id="svg-duotone">
    -    <feColorMatrix type="matrix" values=".33 .33 .33 0 0
    -      .33 .33 .33 0 0
    -      .33 .33 .33 0 0
    -       0   0   0  1 0">
    -    </feColorMatrix>
    +

    Create the target entity

    - - - -
  • -
    - -
    - -
    -
    <feComponentTransfer color-interpolation-filters="sRGB">
    -  <feFuncR type="table" tableValues=".996 0.984"></feFuncR>
    -  <feFuncG type="table" tableValues=".125 0.941"></feFuncG>
    -  <feFuncB type="table" tableValues=".552 0.478"></feFuncB>
    -</feComponentTransfer>
    - - -``` +
    scrawl.makePicture({
     
    -            
    - -
    let feFuncR = document.querySelector('feFuncR'),
    -    feFuncG = document.querySelector('feFuncG'),
    -    feFuncB = document.querySelector('feFuncB');
    + name: 'base-piccy', + + asset: 'iris', + + width: '100%', + height: '100%', + + copyWidth: '100%', + copyHeight: '100%', + + method: 'fill', + + filters: ['areaAlpha'], +});
  • -
  • +
  • - +

    Scene animation

    Function to display frames-per-second data, and other information relevant to the demo

    @@ -686,6 +728,18 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let tile_width = document.querySelector('#tile_width'), + tile_height = document.querySelector('#tile_height'), + gutter_width = document.querySelector('#gutter_width'), + gutter_height = document.querySelector('#gutter_height'), + alpha_0 = document.querySelector('#alpha_0'), + alpha_1 = document.querySelector('#alpha_1'), + alpha_2 = document.querySelector('#alpha_2'), + alpha_3 = document.querySelector('#alpha_3'), + offset_x = document.querySelector('#offset_x'), + offset_y = document.querySelector('#offset_y'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -693,27 +747,22 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - -<filter id="svg-duotone"> - <feColorMatrix type="matrix" values=".33 .33 .33 0 0 .33 .33 .33 0 0 .33 .33 .33 0 0 0 0 0 1 0"></feColorMatrix> - - <feComponentTransfer color-interpolation-filters="sRGB"> - <feFuncR type="discrete" tableValues="${feFuncR.getAttribute('tableValues')}" /> - <feFuncG type="discrete" tableValues="${feFuncG.getAttribute('tableValues')}" /> - <feFuncB type="discrete" tableValues="${feFuncB.getAttribute('tableValues')}" /> - </feComponentTransfer> -</filter>`; + Tile dimensions - width: ${tile_width.value} height: ${tile_height.value} + Gutter dimensions - width: ${gutter_width.value} height: ${gutter_height.value} + Offset - x: ${offset_x.value} y: ${offset_y.value} + areaAlphaLevels array: [${alpha_0.value}, ${alpha_1.value}, ${alpha_2.value}, ${alpha_3.value}] + Opacity: ${opacity.value}`; }; }();
  • -
  • +
  • - +

    Create the Display cycle animation

    @@ -729,62 +778,85 @@

    Scene animation

  • -
  • +
  • - +

    User interaction

    +

    Setup form observer functionality

    -
    let r1 = document.querySelector('#r1'),
    -    r2 = document.querySelector('#r2');
    +            
    scrawl.observeAndUpdate({
    +
    +    event: ['input', 'change'],
    +    origin: '.controlItem',
    +
    +    target: myFilter,
     
    -let g1 = document.querySelector('#g1'),
    -    g2 = document.querySelector('#g2');
    +    useNativeListener: true,
    +    preventDefault: true,
     
    -let b1 = document.querySelector('#b1'),
    -    b2 = document.querySelector('#b2');
    +    updates: {
     
    -r1.value = 0.996;
    -r2.value = 0.984;
    -g1.value = 0.125;
    -g2.value = 0.941;
    -b1.value = 0.552;
    -b2.value = 0.478;
    + tile_width: ['tileWidth', 'round'], + tile_height: ['tileHeight', 'round'], + gutter_width: ['gutterWidth', 'round'], + gutter_height: ['gutterHeight', 'round'], + offset_x: ['offsetX', 'round'], + offset_y: ['offsetY', 'round'], + opacity: ['opacity', 'float'], + }, +}); + +scrawl.addNativeListener(['input', 'change'], function (e) { + + let a0 = parseInt(document.querySelector('#alpha_0').value, 10), + a1 = parseInt(document.querySelector('#alpha_1').value, 10), + a2 = parseInt(document.querySelector('#alpha_2').value, 10), + a3 = parseInt(document.querySelector('#alpha_3').value, 10); + + myFilter.set({ + areaAlphaLevels: [a0, a2, a1, a3], + }); + +}, '.alphas');
  • -
  • +
  • - +
    -

    Setup form functionality

    +

    Setup form

    -
    let updateR = () => feFuncR.setAttribute('tableValues', `${r1.value} ${r2.value}`);
    -scrawl.addNativeListener(['input', 'change'], updateR, '.feFuncR');
    -
    -let updateG = () => feFuncG.setAttribute('tableValues', `${g1.value} ${g2.value}`);
    -scrawl.addNativeListener(['input', 'change'], updateG, '.feFuncG');
    -
    -let updateB = () => feFuncB.setAttribute('tableValues', `${b1.value} ${b2.value}`);
    -scrawl.addNativeListener(['input', 'change'], updateB, '.feFuncB');
    +
    document.querySelector('#tile_width').value = 10;
    +document.querySelector('#tile_height').value = 10;
    +document.querySelector('#gutter_width').value = 10;
    +document.querySelector('#gutter_height').value = 10;
    +document.querySelector('#offset_x').value = 0;
    +document.querySelector('#offset_y').value = 0;
    +document.querySelector('#opacity').value = 1;
    +document.querySelector('#alpha_0').value = 255;
    +document.querySelector('#alpha_1').value = 0;
    +document.querySelector('#alpha_2').value = 255;
    +document.querySelector('#alpha_3').value = 0;
  • -
  • +
  • - +

    Development and testing

    diff --git a/docs/demo/filters-015.html b/docs/demo/filters-015.html index dca45a20b..57c299552 100644 --- a/docs/demo/filters-015.html +++ b/docs/demo/filters-015.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -555,7 +615,7 @@

    Demo Filters 015

    -

    SVG-based filter example: noise

    +

    Using assets in the filter stream; filter compositing

    @@ -568,7 +628,7 @@

    Demo Filters 015

    -

    Run code

    +

    Run code

    @@ -589,7 +649,9 @@

    Scene setup

    const canvas = scrawl.library.canvas.mycanvas;
     
    -scrawl.importDomImage('.flowers');
    +canvas.setBase({ + compileOrder: 1, +});
  • @@ -600,25 +662,69 @@

    Scene setup

    -

    Create the target entity

    +

    Create the assets

    -
    const piccy = scrawl.makePicture({
    +            
    scrawl.importDomImage('.flowers');
     
    -    name: 'base-piccy',
    +canvas.buildCell({
     
    -    asset: 'iris',
    +    name: 'star-cell',
    +    dimensions: [400, 400],
    +    shown: false,
    +});
    +
    +scrawl.makeStar({
    +
    +    name: 'my-star',
    +    group: 'star-cell',
    +
    +    radius1: 200,
    +    radius2: 100,
    +
    +    roll: 60,
    +
    +    points: 4,
    +
    +    start: ['center', 'center'],
    +    handle: ['center', 'center'],
    +
    +    fillStyle: 'blue',
    +    strokeStyle: 'red',
    +    lineWidth: 10,
    +    method: 'fillThenDraw',
    +});
    +
    +canvas.buildCell({
    +
    +    name: 'wheel-cell',
    +    dimensions: [400, 400],
    +    shown: false,
    +});
     
    -    width: '100%',
    -    height: '100%',
    +scrawl.makeWheel({
     
    -    copyWidth: '100%',
    -    copyHeight: '100%',
    +    name: 'my-wheel',
    +    group: 'wheel-cell',
     
    -    method: 'fill',
    +    radius: 150,
     
    -    filter: 'url(#svg-noise)',
    +    startAngle: 30,
    +    endAngle: -30,
    +    includeCenter: true,
    +
    +    start: ['center', 'center'],
    +    handle: ['center', 'center'],
    +
    +    fillStyle: 'green',
    +    strokeStyle: 'yellow',
    +    lineWidth: 10,
    +    method: 'fillThenDraw',
    +
    +    delta: {
    +        roll: -0.3,
    +    },
     });
    @@ -630,32 +736,63 @@

    Scene setup

    -

    SVG filter

    -

    We create the filter in the HTML script, not here:

    -
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    -  <filter id="svg-noise">
    -    <feTurbulence type="fractalNoise" baseFrequency="0.01 0.04" result="NOISE" numOctaves="2" />
    -    <feDisplacementMap in="SourceGraphic" in2="NOISE" scale="20" xChannelSelector="R" yChannelSelector="R"></feDisplacementMap>
    -  </filter>
    -</svg>
    +

    Create the filters

    -
    let bfx = document.querySelector('#bfx'),
    -    bfy = document.querySelector('#bfy'),
    -    octaves = document.querySelector('#octaves'),
    -    scale = document.querySelector('#scale'),
    -    xChannelSelector = document.querySelector('#xChannelSelector'),
    -    yChannelSelector = document.querySelector('#yChannelSelector'),
    -    feTurbulence = document.querySelector('feTurbulence'),
    -    feDisplacementMap = document.querySelector('feDisplacementMap');
    -
    -bfx.value = 0.01;
    -bfy.value = 0.04;
    -octaves.value = 2;
    -scale.value = 20;
    -xChannelSelector.options.selectedIndex = 0;
    -yChannelSelector.options.selectedIndex = 0;
    +
    scrawl.makeFilter({
    +
    +    name: 'star-filter',
    +    method: 'image',
    +
    +    asset: 'star-cell',
    +
    +    width: 400,
    +    height: 400,
    +
    +    copyWidth: 400,
    +    copyHeight: 400,
    +
    +    lineOut: 'star',
    +
    +}).clone({
    +
    +    name: 'wheel-filter',
    +    asset: 'wheel-cell',
    +    lineOut: 'wheel',
    +});
    +
    +scrawl.makeFilter({
    +
    +    name: 'flower-filter',
    +    method: 'image',
    +
    +    asset: 'iris',
    +
    +    width: 200,
    +    height: 200,
    +    
    +    copyX: '25%',
    +    copyY: 100,
    +    copyWidth: '50%',
    +    copyHeight: 200,
    +
    +    lineOut: 'flower',
    +});
    +
    +let composeFilter = scrawl.makeFilter({
    +
    +    name: 'block-filter',
    +    method: 'compose',
    +
    +    lineIn: 'star',
    +    lineMix: 'source',
    +
    +    offsetX: 30,
    +    offsetY: 30,
    +
    +    compose: 'source-over',
    +});
    @@ -666,6 +803,62 @@

    SVG filter

    +

    Display the filter in a Block entity

    + +
    + +
    scrawl.makeGradient({
    +    name: 'linear',
    +    endX: '100%',
    +})
    +.updateColor(0, 'blue')
    +.updateColor(495, 'red')
    +.updateColor(500, 'yellow')
    +.updateColor(505, 'red')
    +.updateColor(999, 'green');
    +
    +scrawl.makeBlock({
    +
    +    name: 'display-block',
    +    start: ['center', 'center'],
    +    handle: ['center', 'center'],
    +    dimensions: ['90%', '90%'],
    +    roll: -20,
    +
    +    lineWidth: 10,
    +    fillStyle: 'linear',
    +    lockFillStyleToEntity: true,
    +    strokeStyle: 'coral',
    +    method: 'fillThenDraw',
    + + + + +
  • +
    + +
    + +
    +

    Load in the three image filters, then the compose filter to combine two of them

    +
      +
    • the results display in a Block entity!
    • +
    + +
    + +
        filters: ['star-filter', 'wheel-filter', 'flower-filter', 'block-filter'],
    +});
    + +
  • + + +
  • +
    + +
    + +

    Scene animation

    Function to display frames-per-second data, and other information relevant to the demo

    @@ -677,6 +870,10 @@

    Scene animation

    testTime, testNow, testMessage = document.querySelector('#reportmessage'); + let ox = document.querySelector('#offset-x'), + oy = document.querySelector('#offset-y'), + opacity = document.querySelector('#opacity'); + return function () { testNow = Date.now(); @@ -684,22 +881,19 @@

    Scene animation

    testTicker = testNow; testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)} - -<filter id="svg-noise"> - <feTurbulence type="fractalNoise" baseFrequency="${bfx.value} ${bfy.value}" result="NOISE" numOctaves="${octaves.value}" /> - <feDisplacementMap in="SourceGraphic" in2="NOISE" scale="${scale.value}" xChannelSelector="${xChannelSelector.value}" yChannelSelector="${yChannelSelector.value}"></feDisplacementMap> -</filter>`; + Offset - x: ${ox.value}, y: ${oy.value} + Opacity: ${opacity.value}`; }; }();
  • -
  • +
  • - +

    Create the Display cycle animation

    @@ -715,40 +909,66 @@

    Scene animation

  • -
  • +
  • - +

    User interaction

    -

    Setup form functionality

    +

    Setup form observer functionality

    -
    let baseFrequency = () => feTurbulence.setAttribute('baseFrequency', `${bfx.value} ${bfy.value}`);
    -scrawl.addNativeListener(['input', 'change'], baseFrequency, '.baseFreq');
    +            
    scrawl.observeAndUpdate({
     
    -let numOctaves = () => feTurbulence.setAttribute('numOctaves', octaves.value);
    -scrawl.addNativeListener(['input', 'change'], numOctaves, '#octaves');
    +    event: ['input', 'change'],
    +    origin: '.controlItem',
     
    -let dmScale = () => feDisplacementMap.setAttribute('scale', scale.value);
    -scrawl.addNativeListener(['input', 'change'], dmScale, '#scale');
    +    target: composeFilter,
     
    -let dmX = () => feDisplacementMap.setAttribute('xChannelSelector', xChannelSelector.value);
    -scrawl.addNativeListener(['input', 'change'], dmX, '#xChannelSelector');
    +    useNativeListener: true,
    +    preventDefault: true,
     
    -let dmY = () => feDisplacementMap.setAttribute('yChannelSelector', yChannelSelector.value);
    -scrawl.addNativeListener(['input', 'change'], dmY, '#yChannelSelector');
    + updates: { + + source: ['lineIn', 'raw'], + destination: ['lineMix', 'raw'], + composite: ['compose', 'raw'], + opacity: ['opacity', 'float'], + 'offset-x': ['offsetX', 'round'], + 'offset-y': ['offsetY', 'round'], + }, +});
  • -
  • +
  • - + +
    +

    Setup form

    + +
    + +
    document.querySelector('#source').options.selectedIndex = 2;
    +document.querySelector('#destination').options.selectedIndex = 0;
    +document.querySelector('#composite').options.selectedIndex = 0;
    +document.querySelector('#opacity').value = 1;
    +document.querySelector('#offset-x').value = 30;
    +document.querySelector('#offset-y').value = 30;
    + +
  • + + +
  • +
    + +
    +

    Development and testing

    diff --git a/docs/demo/filters-016.html b/docs/demo/filters-016.html new file mode 100644 index 000000000..906ddb2e6 --- /dev/null +++ b/docs/demo/filters-016.html @@ -0,0 +1,985 @@ + + + + + Demo Filters 016 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 016

      +

      Filter blend operation

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +canvas.setBase({
      +    compileOrder: 1,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the assets

      + +
      + +
      scrawl.importDomImage('.flowers');
      +
      +canvas.buildCell({
      +
      +    name: 'star-cell',
      +    dimensions: [400, 400],
      +    shown: false,
      +});
      +
      +scrawl.makeStar({
      +
      +    name: 'my-star',
      +    group: 'star-cell',
      +
      +    radius1: 200,
      +    radius2: 100,
      +
      +    roll: 60,
      +
      +    points: 4,
      +
      +    start: ['center', 'center'],
      +    handle: ['center', 'center'],
      +
      +    fillStyle: 'blue',
      +    strokeStyle: 'red',
      +    lineWidth: 10,
      +    method: 'fillThenDraw',
      +});
      +
      +canvas.buildCell({
      +
      +    name: 'wheel-cell',
      +    dimensions: [400, 400],
      +    shown: false,
      +});
      +
      +scrawl.makeWheel({
      +
      +    name: 'my-wheel',
      +    group: 'wheel-cell',
      +
      +    radius: 150,
      +
      +    startAngle: 30,
      +    endAngle: -30,
      +    includeCenter: true,
      +
      +    start: ['center', 'center'],
      +    handle: ['center', 'center'],
      +
      +    fillStyle: 'green',
      +    strokeStyle: 'yellow',
      +    lineWidth: 10,
      +    method: 'fillThenDraw',
      +
      +    delta: {
      +        roll: -0.3,
      +    },
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the filters

      + +
      + +
      scrawl.makeFilter({
      +
      +    name: 'star-filter',
      +    method: 'image',
      +
      +    asset: 'star-cell',
      +
      +    width: 400,
      +    height: 400,
      +
      +    copyWidth: 400,
      +    copyHeight: 400,
      +
      +    lineOut: 'star',
      +
      +}).clone({
      +
      +    name: 'wheel-filter',
      +    asset: 'wheel-cell',
      +    lineOut: 'wheel',
      +});
      +
      +scrawl.makeFilter({
      +
      +    name: 'flower-filter',
      +    method: 'image',
      +
      +    asset: 'iris',
      +
      +    width: 200,
      +    height: 200,
      +    
      +    copyX: '25%',
      +    copyY: 100,
      +    copyWidth: '50%',
      +    copyHeight: 200,
      +
      +    lineOut: 'flower',
      +});
      +
      +let composeFilter = scrawl.makeFilter({
      +
      +    name: 'block-filter',
      +    method: 'blend',
      +
      +    lineIn: 'source',
      +    lineMix: 'star',
      +
      +    offsetX: 30,
      +    offsetY: 30,
      +
      +    compose: 'normal',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Display the filter in a Block entity

      + +
      + +
      +scrawl.makeGradient({
      +    name: 'linear',
      +    endX: '100%',
      +})
      +.updateColor(0, 'blue')
      +.updateColor(495, 'red')
      +.updateColor(500, 'yellow')
      +.updateColor(505, 'red')
      +.updateColor(999, 'green');
      +
      +scrawl.makeBlock({
      +
      +    name: 'display-block',
      +    start: ['center', 'center'],
      +    handle: ['center', 'center'],
      +    dimensions: ['90%', '90%'],
      +    roll: -20,
      +
      +    lineWidth: 10,
      +    fillStyle: 'linear',
      +    lockFillStyleToEntity: true,
      +    strokeStyle: 'coral',
      +    method: 'fillThenDraw',
      + +
    • + + +
    • +
      + +
      + +
      +

      Load in the three image filters, then the compose filter to combine two of them

      +
        +
      • the results display in a Block entity!
      • +
      + +
      + +
          filters: ['star-filter', 'wheel-filter', 'flower-filter', 'block-filter'],
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    let ox = document.querySelector('#offset-x'),
      +        oy = document.querySelector('#offset-y'),
      +        opacity = document.querySelector('#opacity');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +    Offset - x: ${ox.value}, y: ${oy.value}
      +    Opacity: ${opacity.value}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form observer functionality

      + +
      + +
      scrawl.observeAndUpdate({
      +
      +    event: ['input', 'change'],
      +    origin: '.controlItem',
      +
      +    target: composeFilter,
      +
      +    useNativeListener: true,
      +    preventDefault: true,
      +
      +    updates: {
      +
      +        source: ['lineIn', 'raw'],
      +        destination: ['lineMix', 'raw'],
      +        blend: ['blend', 'raw'],
      +        opacity: ['opacity', 'float'],
      +        'offset-x': ['offsetX', 'round'],
      +        'offset-y': ['offsetY', 'round'],
      +    },
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form

      + +
      + +
      document.querySelector('#source').options.selectedIndex = 0;
      +document.querySelector('#destination').options.selectedIndex = 2;
      +document.querySelector('#blend').options.selectedIndex = 0;
      +document.querySelector('#opacity').value = 1;
      +document.querySelector('#offset-x').value = 30;
      +document.querySelector('#offset-y').value = 30;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-017.html b/docs/demo/filters-017.html new file mode 100644 index 000000000..135ab0d3e --- /dev/null +++ b/docs/demo/filters-017.html @@ -0,0 +1,861 @@ + + + + + Demo Filters 017 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 017

      +

      Filter parameters: displace

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the filter

      + +
      + +
      scrawl.makeFilter({
      +
      +    name: 'noise',
      +    method: 'image',
      +
      +    asset: 'perlin',
      +
      +    width: 500,
      +    height: 500,
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    lineOut: 'map',
      +});
      +
      +const myFilter = scrawl.makeFilter({
      +
      +    name: 'displace',
      +    method: 'displace',
      +
      +    lineMix: 'map',
      +
      +    offsetX: 0,
      +    offsetY: 0,
      +
      +    scaleX: 1,
      +    scaleY: 1,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filters: ['noise', 'displace'],
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    let scale_x = document.querySelector('#scale_x'),
      +        scale_y = document.querySelector('#scale_y'),
      +        offset_x = document.querySelector('#offset_x'),
      +        offset_y = document.querySelector('#offset_y'),
      +        opacity = document.querySelector('#opacity');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +    Scales - x: ${scale_x.value} y: ${scale_y.value}
      +    Offsets - x: ${offset_x.value} y: ${offset_y.value}
      +    Opacity - ${opacity.value}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form observer functionality

      + +
      + +
      scrawl.observeAndUpdate({
      +
      +    event: ['input', 'change'],
      +    origin: '.controlItem',
      +
      +    target: myFilter,
      +
      +    useNativeListener: true,
      +    preventDefault: true,
      +
      +    updates: {
      +
      +        offset_x: ['offsetX', 'round'],
      +        offset_y: ['offsetY', 'round'],
      +        scale_x: ['scaleX', 'float'],
      +        scale_y: ['scaleY', 'float'],
      +        transparent_edges: ['transparentEdges', 'boolean'],
      +        opacity: ['opacity', 'float'],
      +    },
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form

      + +
      + +
      document.querySelector('#offset_x').value = 0;
      +document.querySelector('#offset_y').value = 0;
      +document.querySelector('#scale_x').value = 1;
      +document.querySelector('#scale_y').value = 1;
      +document.querySelector('#opacity').value = 1;
      +document.querySelector('#transparent_edges').options.selectedIndex = 0;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-018.html b/docs/demo/filters-018.html new file mode 100644 index 000000000..9e59f05c6 --- /dev/null +++ b/docs/demo/filters-018.html @@ -0,0 +1,855 @@ + + + + + Demo Filters 018 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 018

      +

      Filter parameters: emboss

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      +
      +canvas.setBase({
      +    backgroundColor: 'red',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the filter

      + +
      + +
      const myFilter = scrawl.makeFilter({
      +
      +    name: 'emboss',
      +    method: 'emboss',
      +    angle: 225,
      +    strength: 3,
      +    smoothing: 0,
      +    tolerance: 0,
      +    clamp: 0,
      +    postProcessResults: true,
      +    useNaturalGrayscale: false,
      +    keepOnlyChangedAreas: false,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filters: ['emboss'],
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    let strength = document.querySelector('#strength'),
      +        angle = document.querySelector('#angle'),
      +        smoothing = document.querySelector('#smoothing'),
      +        clamp = document.querySelector('#clamp'),
      +        tolerance = document.querySelector('#tolerance');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +    Angle - ${angle.value}°, Strength - ${strength.value}, Smoothing - ${smoothing.value}, Clamp - ${clamp.value}
      +    Tolerance - ${tolerance.value}
      +    Opacity - ${opacity.value}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form observer functionality

      + +
      + +
      scrawl.observeAndUpdate({
      +
      +    event: ['input', 'change'],
      +    origin: '.controlItem',
      +
      +    target: myFilter,
      +
      +    useNativeListener: true,
      +    preventDefault: true,
      +
      +    updates: {
      +
      +        strength: ['strength', 'float'],
      +        angle: ['angle', 'float'],
      +        smoothing: ['smoothing', 'round'],
      +        tolerance: ['tolerance', 'round'],
      +        clamp: ['clamp', 'round'],
      +        postProcessResults: ['postProcessResults', 'boolean'],
      +        useNaturalGrayscale: ['useNaturalGrayscale', 'boolean'],
      +        keepOnlyChangedAreas: ['keepOnlyChangedAreas', 'boolean'],
      +        opacity: ['opacity', 'float'],
      +    },
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form

      + +
      + +
      document.querySelector('#strength').value = 3;
      +document.querySelector('#angle').value = 225;
      +document.querySelector('#smoothing').value = 0;
      +document.querySelector('#tolerance').value = 0;
      +document.querySelector('#clamp').value = 0;
      +document.querySelector('#postProcessResults').options.selectedIndex = 1;
      +document.querySelector('#useNaturalGrayscale').options.selectedIndex = 0;
      +document.querySelector('#keepOnlyChangedAreas').options.selectedIndex = 0;
      +document.querySelector('#opacity').value = 1;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-019.html b/docs/demo/filters-019.html new file mode 100644 index 000000000..70e39fa74 --- /dev/null +++ b/docs/demo/filters-019.html @@ -0,0 +1,1017 @@ + + + + + Demo Filters 019 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 019

      +

      Using a Noise asset with a displace filter

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas,
      +    noiseCanvas = scrawl.library.canvas['noise-canvas'];
      +
      +scrawl.importDomImage('.flowers');
      +
      +
      +let noiseAsset = scrawl.makeNoise({
      +
      +    name: 'my-noise-generator',
      +    width: 400,
      +    height: 400,
      +
      +    noiseEngine: 'improved-perlin',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the filter

      + +
      + +
      scrawl.makeFilter({
      +
      +    name: 'noise',
      +    method: 'image',
      +
      +    asset: 'my-noise-generator',
      +
      +    width: 400,
      +    height: 400,
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    lineOut: 'map',
      +});
      +
      +scrawl.makeFilter({
      +
      +    name: 'displace',
      +    method: 'displace',
      +
      +    lineMix: 'map',
      +
      +    scaleX: 20,
      +    scaleY: 20,
      +
      +    transparentEdges: true,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filters: ['noise', 'displace'],
      +});
      +
      +scrawl.makePicture({
      +
      +    name: 'noisecanvas-display',
      +    group: noiseCanvas.base.name,
      +
      +    width: '100%',
      +    height: '100%',
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    asset: 'my-noise-generator',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testMessage = document.querySelector('#reportmessage'),
      +        width = document.querySelector('#width'),
      +        height = document.querySelector('#height'),
      +        octaves = document.querySelector('#octaves'),
      +        sineFrequencyCoeff = document.querySelector('#sineFrequencyCoeff'),
      +        scale = document.querySelector('#scale'),
      +        size = document.querySelector('#size'),
      +        persistence = document.querySelector('#persistence'),
      +        lacunarity = document.querySelector('#lacunarity'),
      +        monochromeStart = document.querySelector('#monochromeStart'),
      +        monochromeRange = document.querySelector('#monochromeRange'),
      +        hueStart = document.querySelector('#hueStart'),
      +        hueRange = document.querySelector('#hueRange'),
      +        saturation = document.querySelector('#saturation'),
      +        luminosity = document.querySelector('#luminosity'),
      +        modularAmplitude = document.querySelector('#modularAmplitude');
      +
      +    return function () {
      +
      +        testMessage.textContent = `Dimensions: width - ${width.value}, height - ${height.value}
      +Color (monochrome): start: ${monochromeStart.value}; range: ${monochromeRange.value}
      +Color (hue): start: ${hueStart.value}; range: ${hueRange.value}; saturation: ${saturation.value}; luminosity: ${luminosity.value}
      +Scale: ${scale.value}; Size: ${size.value}
      +Octaves: ${octaves.value}; Sine frequency coefficient: ${sineFrequencyCoeff.value}
      +Persistence: ${persistence.value}; Lacunarity: ${lacunarity.value}; Modular amplitude: ${modularAmplitude.value}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: [canvas, noiseCanvas],
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form observer functionality

      + +
      + +
      scrawl.observeAndUpdate({
      +
      +    event: ['input', 'change'],
      +    origin: '.controlItem',
      +
      +    target: noiseAsset,
      +
      +    useNativeListener: true,
      +    preventDefault: true,
      +
      +    updates: {
      +
      +        width: ['width', 'round'],
      +        height: ['height', 'round'],
      +        noiseEngine: ['noiseEngine', 'raw'],
      +        color: ['color', 'raw'],
      +        gradientStart: ['gradientStart', 'raw'],
      +        gradientEnd: ['gradientEnd', 'raw'],
      +        octaveFunction: ['octaveFunction', 'raw'],
      +        octaves: ['octaves', 'round'],
      +        sumFunction: ['sumFunction', 'raw'],
      +        sineFrequencyCoeff: ['sineFrequencyCoeff', 'float'],
      +        smoothing: ['smoothing', 'raw'],
      +        scale: ['scale', 'round'],
      +        size: ['size', 'round'],
      +        seed: ['seed', 'raw'],
      +        persistence: ['persistence', 'float'],
      +        lacunarity: ['lacunarity', 'round'],
      +        modularAmplitude: ['modularAmplitude', 'float'],
      +        monochromeStart: ['monochromeStart', 'round'],
      +        monochromeRange: ['monochromeRange', 'round'],
      +        hueStart: ['hueStart', 'float'],
      +        hueRange: ['hueRange', 'float'],
      +        saturation: ['saturation', 'float'],
      +        luminosity: ['luminosity', 'float'],
      +    },
      +});
      +
      +scrawl.addNativeListener(['input', 'change'], function (e) {
      +
      +    let val = e.target.value,
      +        sfc = document.querySelector('#sineFrequencyCoeff'),
      +        ma = document.querySelector('#modularAmplitude');
      +
      +    if (val === 'sine' || val === 'sine-x' || val === 'sine-y') {
      +
      +        sfc.removeAttribute('disabled');
      +        ma.setAttribute('disabled', 'true');
      +    }
      +    else if (val === 'modular') {
      +
      +        sfc.setAttribute('disabled', 'true');
      +        ma.removeAttribute('disabled');
      +    }
      +    else {
      +
      +        sfc.setAttribute('disabled', 'true');
      +        ma.setAttribute('disabled', 'true');
      +    }
      +
      +}, '#sumFunction');
      +
      +scrawl.addNativeListener(['input', 'change'], function (e) {
      +
      +    let val = e.target.value,
      +        s = document.querySelector('#smoothing');
      +
      +    if (val === 'simplex') s.setAttribute('disabled', 'true');
      +    else s.removeAttribute('disabled');
      +
      +}, '#noiseEngine');
      +
      +scrawl.addNativeListener(['input', 'change'], function (e) {
      +
      +    let val = parseFloat(e.target.value),
      +        p = document.querySelector('#persistence'),
      +        l = document.querySelector('#lacunarity');
      +
      +    if (val > 1) {
      +        p.removeAttribute('disabled');
      +        l.removeAttribute('disabled');
      +    }
      +    else {
      +        p.setAttribute('disabled', 'true');
      +        l.setAttribute('disabled', 'true');
      +    }
      +}, '#octaves');
      +
      +scrawl.addNativeListener(['input', 'change'], function (e) {
      +
      +    let val = e.target.value,
      +        ms = document.querySelector('#monochromeStart'),
      +        mr = document.querySelector('#monochromeRange'),
      +        gs = document.querySelector('#gradientStart'),
      +        ge = document.querySelector('#gradientEnd'),
      +        hs = document.querySelector('#hueStart'),
      +        hr = document.querySelector('#hueRange'),
      +        s = document.querySelector('#saturation'),
      +        l = document.querySelector('#luminosity');
      +
      +    if (val === 'monochrome') {
      +        ms.removeAttribute('disabled');
      +        mr.removeAttribute('disabled');
      +        gs.setAttribute('disabled', 'true');
      +        ge.setAttribute('disabled', 'true');
      +        hs.setAttribute('disabled', 'true');
      +        hr.setAttribute('disabled', 'true');
      +        s.setAttribute('disabled', 'true');
      +        l.setAttribute('disabled', 'true');
      +    }
      +    else if (val === 'hue') {
      +        hs.removeAttribute('disabled');
      +        hr.removeAttribute('disabled');
      +        s.removeAttribute('disabled');
      +        l.removeAttribute('disabled');
      +        ms.setAttribute('disabled', 'true');
      +        mr.setAttribute('disabled', 'true');
      +        gs.setAttribute('disabled', 'true');
      +        ge.setAttribute('disabled', 'true');
      +    }
      +    else {
      +        gs.removeAttribute('disabled');
      +        ge.removeAttribute('disabled');
      +        ms.setAttribute('disabled', 'true');
      +        mr.setAttribute('disabled', 'true');
      +        hs.setAttribute('disabled', 'true');
      +        hr.setAttribute('disabled', 'true');
      +        s.setAttribute('disabled', 'true');
      +        l.setAttribute('disabled', 'true');
      +    }
      +}, '#color');
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form

      + +
      + +
      document.querySelector('#width').value = 400;
      +document.querySelector('#height').value = 400;
      +document.querySelector('#noiseEngine').options.selectedIndex = 1;
      +document.querySelector('#color').options.selectedIndex = 0;
      +document.querySelector('#gradientStart').value = '#ff0000';
      +document.querySelector('#gradientEnd').value = '#00ff00';
      +document.querySelector('#octaveFunction').options.selectedIndex = 0;
      +document.querySelector('#octaves').value = 1;
      +document.querySelector('#sumFunction').options.selectedIndex = 0;
      +document.querySelector('#sineFrequencyCoeff').value = 1;
      +document.querySelector('#smoothing').options.selectedIndex = 3;
      +document.querySelector('#scale').value = 50;
      +document.querySelector('#size').value = 256;
      +document.querySelector('#seed').value = 'noize';
      +document.querySelector('#persistence').value = 0.5;
      +document.querySelector('#lacunarity').value = 2;
      +document.querySelector('#modularAmplitude').value = 5;
      +document.querySelector('#monochromeStart').value = 0;
      +document.querySelector('#monochromeRange').value = 255;
      +document.querySelector('#hueStart').value = 0;
      +document.querySelector('#hueRange').value = 120;
      +document.querySelector('#saturation').value = 100;
      +document.querySelector('#luminosity').value = 50;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-020.html b/docs/demo/filters-020.html new file mode 100644 index 000000000..30bcf8ba7 --- /dev/null +++ b/docs/demo/filters-020.html @@ -0,0 +1,838 @@ + + + + + Demo Filters 020 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 020

      +

      Parameters for: clampChannels filter

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      +
      +
      +const myFilter = scrawl.makeFilter({
      +
      +    name: 'clamp',
      +    method: 'clampChannels',
      +
      +    lowRed: 0,
      +    lowGreen: 0,
      +    lowBlue: 0,
      +    highRed: 255,
      +    highGreen: 255,
      +    highBlue: 255,
      +    opacity: 1,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filters: ['clamp'],
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    let lowRed = document.querySelector('#low-red'),
      +        lowGreen = document.querySelector('#low-green'),
      +        lowBlue = document.querySelector('#low-blue'),
      +        highRed = document.querySelector('#high-red'),
      +        highGreen = document.querySelector('#high-green'),
      +        highBlue = document.querySelector('#high-blue'),
      +        opacity = document.querySelector('#opacity');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +    Red: ${lowRed.value} - ${highRed.value} 
      +    Green: ${lowGreen.value} - ${highGreen.value} 
      +    Blue: ${lowBlue.value} - ${highBlue.value} 
      +    Opacity - ${opacity.value}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form observer functionality

      + +
      + +
      scrawl.observeAndUpdate({
      +
      +    event: ['input', 'change'],
      +    origin: '.controlItem',
      +
      +    target: myFilter,
      +
      +    useNativeListener: true,
      +    preventDefault: true,
      +
      +    updates: {
      +
      +        'low-red': ['lowRed', 'round'],
      +        'low-green': ['lowGreen', 'round'],
      +        'low-blue': ['lowBlue', 'round'],
      +        'high-red': ['highRed', 'round'],
      +        'high-green': ['highGreen', 'round'],
      +        'high-blue': ['highBlue', 'round'],
      +        'opacity': ['opacity', 'float'],
      +    },
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form

      + +
      + +
      document.querySelector('#low-red').value = 0;
      +document.querySelector('#low-green').value = 0;
      +document.querySelector('#low-blue').value = 0;
      +document.querySelector('#high-red').value = 255;
      +document.querySelector('#high-green').value = 255;
      +document.querySelector('#high-blue').value = 255;
      +document.querySelector('#opacity').value = 1;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-501.html b/docs/demo/filters-501.html new file mode 100644 index 000000000..28b44a01c --- /dev/null +++ b/docs/demo/filters-501.html @@ -0,0 +1,848 @@ + + + + + Demo Filters 501 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 501

      +

      Canvas engine filter strings (based on CSS filters)

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entitys

      + +
      + +
      const piccy = scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +});
      +
      +const text = scrawl.makePhrase({
      +
      +    name: 'demo-text',
      +    text: 'Hello world',
      +    font: 'bold 70px sans-serif',
      +    start: ['center', 'center'],
      +    handle: ['center', 'center'],
      +    lineHeight: 0.5,
      +    fillStyle: 'aliceblue',
      +    strokeStyle: 'red',
      +    lineWidth: 3,
      +    method: 'fillThenDraw',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      No additional work required in the Javascript file to create the CSS filters; these are defined as Strings in the HTML select <option> elements, and will be set on the target entitys as part of the form control user interaction below.

      +
      <select class="controlItem" id="filter">
      +    <option value="none">none</option>
      +    <option value="blur(6px)">blur(6px)</option>
      +    <option value="brightness(0.4)">brightness(0.4)</option>
      +    <option value="contrast(200%)">contrast(200%)</option>
      +    <option value="drop-shadow(4px 4px 4px blue)">drop-shadow(4px 4px 4px blue)</option>
      +    <option value="grayscale(100%)">grayscale(100%)</option>
      +    <option value="hue-rotate(90deg)">hue-rotate(90deg)</option>
      +    <option value="invert(75%)">invert(75%)</option>
      +    <option value="opacity(25%)">opacity(25%)</option>
      +    <option value="saturate(30%)">saturate(30%)</option>
      +    <option value="sepia(100%)">sepia(100%)</option>
      +</select>
      + +
      + +
      +let filterTarget = piccy,
      +    filterString = 'none';
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form functionality

      + +
      + +
      let updateTarget = (e) => {
      +
      +    e.preventDefault();
      +    e.returnValue = false;
      +
      +    let val = e.target.value;
      +
      +    if (val) {
      +
      +        piccy.set({ filter: 'none'});
      +        text.set({ filter: 'none'});
      +        canvas.setBase({ filter: 'none'});
      +
      +        if (val === 'picture') filterTarget = piccy;
      +        else if (val === 'phrase') filterTarget = text;
      +        else if (val === 'cell') filterTarget = canvas.base;
      +
      +        filterTarget.set({ filter: filterString });
      +    }
      +};
      +scrawl.addNativeListener(['input', 'change'], updateTarget, '#target');
      +
      +let updateFilter = (e) => {
      +
      +    e.preventDefault();
      +    e.returnValue = false;
      +
      +    if (e.target && e.target.value) {
      +
      +        filterString = e.target.value;
      +        filterTarget.set({ filter: filterString });
      +    }
      +};
      +scrawl.addNativeListener(['input', 'change'], updateFilter, '#filter');
      +
      +document.querySelector('#filter').options.selectedIndex = 0;
      +document.querySelector('#target').options.selectedIndex = 0;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-502.html b/docs/demo/filters-502.html new file mode 100644 index 000000000..e65a45bb4 --- /dev/null +++ b/docs/demo/filters-502.html @@ -0,0 +1,814 @@ + + + + + Demo Filters 502 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 502

      +

      SVG-based filter example: gaussian blur

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      const piccy = scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filter: 'url(#svg-blur)',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      SVG filter

      +

      We create the filter in the HTML script, not here:

      +
      <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      +  <filter id="svg-blur">
      +    <feGaussianBlur in="SourceGraphic" stdDeviation="5" edgeMode="duplicate" />
      +  </filter>
      +</svg>
      + +
      + +
      let feGaussianBlur = document.querySelector('feGaussianBlur');
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +
      +<filter id="svg-blur">
      +  <feGaussianBlur in="SourceGraphic" stdDeviation="${feGaussianBlur.getAttribute('stdDeviation')}" edgeMode="${feGaussianBlur.getAttribute('edgeMode')}" />
      +</filter>`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form functionality

      + +
      + +
      let updateStdDeviation = (e) => {
      +
      +    e.preventDefault();
      +    e.returnValue = false;
      +
      +    feGaussianBlur.setAttribute('stdDeviation', parseFloat(e.target.value));
      +};
      +scrawl.addNativeListener(['input', 'change'], updateStdDeviation, '#stdDeviation');
      +
      +let updateEdgeMode = (e) => {
      +
      +    e.preventDefault();
      +    e.returnValue = false;
      +
      +    feGaussianBlur.setAttribute(`edgeMode`, e.target.value);
      +};
      +scrawl.addNativeListener(['input', 'change'], updateEdgeMode, '#edgeMode');
      +
      +document.querySelector('#stdDeviation').value = 5;
      +document.querySelector('#edgeMode').options.selectedIndex = 0;
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-503.html b/docs/demo/filters-503.html new file mode 100644 index 000000000..20b349fcf --- /dev/null +++ b/docs/demo/filters-503.html @@ -0,0 +1,852 @@ + + + + + Demo Filters 503 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 503

      +

      SVG-based filter example: posterize

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      const piccy = scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filter: 'url(#svg-posterize)',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      SVG filter

      +

      We create the filter in the HTML script, not here:

      +
      <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      +  <filter id="svg-posterize">
      +    <feComponentTransfer>
      +      <feFuncR type="discrete" tableValues=".1 .4 .7 1" />
      +      <feFuncG type="discrete" tableValues=".1 .4 .7 1" />
      +      <feFuncB type="discrete" tableValues=".1 .4 .7 1" />
      +    </feComponentTransfer>
      +  </filter>
      +</svg>
      + +
      + +
      let feFuncR = document.querySelector('feFuncR'),
      +    feFuncG = document.querySelector('feFuncG'),
      +    feFuncB = document.querySelector('feFuncB');
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +
      +<filter id="svg-posterize">
      +  <feComponentTransfer>
      +    <feFuncR type="discrete" tableValues="${feFuncR.getAttribute('tableValues')}" />
      +    <feFuncG type="discrete" tableValues="${feFuncG.getAttribute('tableValues')}" />
      +    <feFuncB type="discrete" tableValues="${feFuncB.getAttribute('tableValues')}" />
      +  </feComponentTransfer>
      +</filter>`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      + +
      + +
      let r1 = document.querySelector('#r1'),
      +    r2 = document.querySelector('#r2'),
      +    r3 = document.querySelector('#r3'),
      +    r4 = document.querySelector('#r4');
      +
      +let g1 = document.querySelector('#g1'),
      +    g2 = document.querySelector('#g2'),
      +    g3 = document.querySelector('#g3'),
      +    g4 = document.querySelector('#g4');
      +
      +let b1 = document.querySelector('#b1'),
      +    b2 = document.querySelector('#b2'),
      +    b3 = document.querySelector('#b3'),
      +    b4 = document.querySelector('#b4');
      +
      +r1.value = 0.1;
      +r2.value = 0.4;
      +r3.value = 0.7;
      +r4.value = 1;
      +g1.value = 0.1;
      +g2.value = 0.4;
      +g3.value = 0.7;
      +g4.value = 1;
      +b1.value = 0.1;
      +b2.value = 0.4;
      +b3.value = 0.7;
      +b4.value = 1;
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form functionality

      + +
      + +
      let updateR = () => feFuncR.setAttribute('tableValues', `${r1.value} ${r2.value} ${r3.value} ${r4.value}`);
      +scrawl.addNativeListener(['input', 'change'], updateR, '.feFuncR');
      +
      +let updateG = () => feFuncG.setAttribute('tableValues', `${g1.value} ${g2.value} ${g3.value} ${g4.value}`);
      +scrawl.addNativeListener(['input', 'change'], updateG, '.feFuncG');
      +
      +let updateB = () => feFuncB.setAttribute('tableValues', `${b1.value} ${b2.value} ${b3.value} ${b4.value}`);
      +scrawl.addNativeListener(['input', 'change'], updateB, '.feFuncB');
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-504.html b/docs/demo/filters-504.html new file mode 100644 index 000000000..ea44ca100 --- /dev/null +++ b/docs/demo/filters-504.html @@ -0,0 +1,860 @@ + + + + + Demo Filters 504 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 504

      +

      SVG-based filter example: duotone

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      const piccy = scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filter: 'url(#svg-duotone)',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      SVG filter

      +

      We create the filter in the HTML script, not here:

      +
      <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      +  <filter id="svg-duotone">
      +    <feColorMatrix type="matrix" values=".33 .33 .33 0 0
      +      .33 .33 .33 0 0
      +      .33 .33 .33 0 0
      +       0   0   0  1 0">
      +    </feColorMatrix>
      + +
      + +
    • + + +
    • +
      + +
      + +
      +
      <feComponentTransfer color-interpolation-filters="sRGB">
      +  <feFuncR type="table" tableValues=".996 0.984"></feFuncR>
      +  <feFuncG type="table" tableValues=".125 0.941"></feFuncG>
      +  <feFuncB type="table" tableValues=".552 0.478"></feFuncB>
      +</feComponentTransfer>
      + + +``` + +
      + +
      let feFuncR = document.querySelector('feFuncR'),
      +    feFuncG = document.querySelector('feFuncG'),
      +    feFuncB = document.querySelector('feFuncB');
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +
      +<filter id="svg-duotone">
      +  <feColorMatrix type="matrix" values=".33 .33 .33 0 0 .33 .33 .33 0 0 .33 .33 .33 0 0 0 0 0 1 0"></feColorMatrix>
      +
      +  <feComponentTransfer color-interpolation-filters="sRGB">
      +    <feFuncR type="discrete" tableValues="${feFuncR.getAttribute('tableValues')}" />
      +    <feFuncG type="discrete" tableValues="${feFuncG.getAttribute('tableValues')}" />
      +    <feFuncB type="discrete" tableValues="${feFuncB.getAttribute('tableValues')}" />
      +  </feComponentTransfer>
      +</filter>`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      + +
      + +
      let r1 = document.querySelector('#r1'),
      +    r2 = document.querySelector('#r2');
      +
      +let g1 = document.querySelector('#g1'),
      +    g2 = document.querySelector('#g2');
      +
      +let b1 = document.querySelector('#b1'),
      +    b2 = document.querySelector('#b2');
      +
      +r1.value = 0.996;
      +r2.value = 0.984;
      +g1.value = 0.125;
      +g2.value = 0.941;
      +b1.value = 0.552;
      +b2.value = 0.478;
      + +
    • + + +
    • +
      + +
      + +
      +

      Setup form functionality

      + +
      + +
      let updateR = () => feFuncR.setAttribute('tableValues', `${r1.value} ${r2.value}`);
      +scrawl.addNativeListener(['input', 'change'], updateR, '.feFuncR');
      +
      +let updateG = () => feFuncG.setAttribute('tableValues', `${g1.value} ${g2.value}`);
      +scrawl.addNativeListener(['input', 'change'], updateG, '.feFuncG');
      +
      +let updateB = () => feFuncB.setAttribute('tableValues', `${b1.value} ${b2.value}`);
      +scrawl.addNativeListener(['input', 'change'], updateB, '.feFuncB');
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/filters-505.html b/docs/demo/filters-505.html new file mode 100644 index 000000000..0a0eaa9a6 --- /dev/null +++ b/docs/demo/filters-505.html @@ -0,0 +1,824 @@ + + + + + Demo Filters 505 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Filters 505

      +

      SVG-based filter example: noise

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js';
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      const canvas = scrawl.library.canvas.mycanvas;
      +
      +scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the target entity

      + +
      + +
      const piccy = scrawl.makePicture({
      +
      +    name: 'base-piccy',
      +
      +    asset: 'iris',
      +
      +    width: '100%',
      +    height: '100%',
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    method: 'fill',
      +
      +    filter: 'url(#svg-noise)',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      SVG filter

      +

      We create the filter in the HTML script, not here:

      +
      <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
      +  <filter id="svg-noise">
      +    <feTurbulence type="fractalNoise" baseFrequency="0.01 0.04" result="NOISE" numOctaves="2" />
      +    <feDisplacementMap in="SourceGraphic" in2="NOISE" scale="20" xChannelSelector="R" yChannelSelector="R"></feDisplacementMap>
      +  </filter>
      +</svg>
      + +
      + +
      let bfx = document.querySelector('#bfx'),
      +    bfy = document.querySelector('#bfy'),
      +    octaves = document.querySelector('#octaves'),
      +    scale = document.querySelector('#scale'),
      +    xChannelSelector = document.querySelector('#xChannelSelector'),
      +    yChannelSelector = document.querySelector('#yChannelSelector'),
      +    feTurbulence = document.querySelector('feTurbulence'),
      +    feDisplacementMap = document.querySelector('feDisplacementMap');
      +
      +bfx.value = 0.01;
      +bfy.value = 0.04;
      +octaves.value = 2;
      +scale.value = 20;
      +xChannelSelector.options.selectedIndex = 0;
      +yChannelSelector.options.selectedIndex = 0;
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}
      +
      +<filter id="svg-noise">
      +  <feTurbulence type="fractalNoise" baseFrequency="${bfx.value} ${bfy.value}" result="NOISE" numOctaves="${octaves.value}" />
      +  <feDisplacementMap in="SourceGraphic" in2="NOISE" scale="${scale.value}" xChannelSelector="${xChannelSelector.value}" yChannelSelector="${yChannelSelector.value}"></feDisplacementMap>
      +</filter>`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      const demoAnimation = scrawl.makeRender({
      +
      +    name: "demo-animation",
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      +

      Setup form functionality

      + +
      + +
      let baseFrequency = () => feTurbulence.setAttribute('baseFrequency', `${bfx.value} ${bfy.value}`);
      +scrawl.addNativeListener(['input', 'change'], baseFrequency, '.baseFreq');
      +
      +let numOctaves = () => feTurbulence.setAttribute('numOctaves', octaves.value);
      +scrawl.addNativeListener(['input', 'change'], numOctaves, '#octaves');
      +
      +let dmScale = () => feDisplacementMap.setAttribute('scale', scale.value);
      +scrawl.addNativeListener(['input', 'change'], dmScale, '#scale');
      +
      +let dmX = () => feDisplacementMap.setAttribute('xChannelSelector', xChannelSelector.value);
      +scrawl.addNativeListener(['input', 'change'], dmX, '#xChannelSelector');
      +
      +let dmY = () => feDisplacementMap.setAttribute('yChannelSelector', yChannelSelector.value);
      +scrawl.addNativeListener(['input', 'change'], dmY, '#yChannelSelector');
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/demo/particles-001.html b/docs/demo/particles-001.html index 16f261d71..d3bbd65a8 100644 --- a/docs/demo/particles-001.html +++ b/docs/demo/particles-001.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-002.html b/docs/demo/particles-002.html index 2754bc450..aaf33e078 100644 --- a/docs/demo/particles-002.html +++ b/docs/demo/particles-002.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-003.html b/docs/demo/particles-003.html index a44587abf..4f9e18a48 100644 --- a/docs/demo/particles-003.html +++ b/docs/demo/particles-003.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-004.html b/docs/demo/particles-004.html index 5f21c6d2b..458cb59a6 100644 --- a/docs/demo/particles-004.html +++ b/docs/demo/particles-004.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-005.html b/docs/demo/particles-005.html index 90e19ae3a..2c8bb1b5a 100644 --- a/docs/demo/particles-005.html +++ b/docs/demo/particles-005.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-006.html b/docs/demo/particles-006.html index c58f34f26..61feb25b9 100644 --- a/docs/demo/particles-006.html +++ b/docs/demo/particles-006.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-007.html b/docs/demo/particles-007.html index 4bfd13a9b..96fe4b49c 100644 --- a/docs/demo/particles-007.html +++ b/docs/demo/particles-007.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -645,34 +705,6 @@

    Scene setup

    name: 'matrix', method: 'matrix', weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1], -}); - -scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, });
  • diff --git a/docs/demo/particles-008.html b/docs/demo/particles-008.html index 620287fe7..9a292e3de 100644 --- a/docs/demo/particles-008.html +++ b/docs/demo/particles-008.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -583,6 +643,21 @@

    Demo Particles 008

    +

    Import image from DOM

    + + + +
    scrawl.importDomImage('.flowers');
    + + + + +
  • +
    + +
    + +

    Scene setup

    @@ -596,11 +671,11 @@

    Scene setup

  • -
  • +
  • - +

    For this Demo, we are creating a flag and pinning it to a pole. This is the pole.

    @@ -613,7 +688,7 @@

    Scene setup

    endX: 'center', endY: 'bottom', - lineWidth: 16, + lineWidth: 8, lineCap: 'round', strokeStyle: 'brown', @@ -623,11 +698,11 @@

    Scene setup

  • -
  • +
  • - +

    Particle physics animation scene

    @@ -636,11 +711,11 @@

    Particle physics animation scene

  • -
  • +
  • - +

    Create a World object which we can then assign to the Net entity

    @@ -662,11 +737,11 @@

    Particle physics animation scene

  • -
  • +
  • - +

    Create a ‘wind’ force; we will update the wind direction/strength as part of the Display cycle

    @@ -699,11 +774,11 @@

    Particle physics animation scene

  • -
  • +
  • - +

    Create a Net entity

    @@ -716,11 +791,11 @@

    Particle physics animation scene

  • -
  • +
  • - +

    Every net must be associated with a World object. The attribute’s value can be the World object’s String name value, or the object itself

    @@ -731,11 +806,11 @@

    Particle physics animation scene

  • -
  • +
  • - +

    The entity’s start coordinates determine where the first pin will be placed on the canvas

    @@ -747,11 +822,11 @@

    Particle physics animation scene

  • -
  • +
  • - +

    The Net entity comes with four pre-defined generate functions - we will be testing ‘weak-net’ and ‘strong-net’ in this demo.

      @@ -765,11 +840,11 @@

      Particle physics animation scene

      -
    • +
    • - +

      The postGenerate function runs immediately after the generate function has created all of the Net entity’s Particle and Spring objects.

        @@ -784,11 +859,11 @@

        Particle physics animation scene

        -
      • +
      • - +

        Names for ‘weak-net’ and ‘strong-net’ Particles are consistent: ${Net-entity-name}-${row-number}-${column-number}

        @@ -803,11 +878,11 @@

        Particle physics animation scene

      • -
      • +
      • - +

        Change the appearance of the selected Particles, and remove the forces acting on them

        @@ -822,11 +897,11 @@

        Particle physics animation scene

      • -
      • +
      • - +

        Prevent Springs associated with the selected Particles from moving them

        @@ -850,11 +925,11 @@

        Particle physics animation scene

      • -
      • +
      • - +

        We tell the Net entity how many rows and columns of Particles we want it to create

        @@ -866,11 +941,11 @@

        Particle physics animation scene

      • -
      • +
      • - +

        The distance between rows and columns can be set using either absolute (px) Number values, or relative % String values

        @@ -882,11 +957,11 @@

        Particle physics animation scene

      • -
      • +
      • - +

        We can get the Net entity to display its springs

        @@ -898,11 +973,11 @@

        Particle physics animation scene

      • -
      • +
      • - +

        Particle physics attributes

        @@ -910,16 +985,17 @@

        Particle physics animation scene

            mass: 1,
             forces: ['gravity', 'wind'],
        -    engine: 'runge-kutta',
        + engine: 'runge-kutta', + damperConstant: 5,
    • -
    • +
    • - +

      We can assign an artefact that we will be using for the particle animation, or we can define it here as part of the Net factory

      @@ -938,6 +1014,8 @@

      Particle physics animation scene

      visibility: false, + globalAlpha: 1, + noUserInteraction: true, noPositionDependencies: true, noFilters: true, @@ -947,11 +1025,11 @@

      Particle physics animation scene

    • -
    • +
    • - +

      The stampAction function describes the steps that our Net will take to draw each of its particles (and springs, hit regions) onto the host canvas screen.

      @@ -967,16 +1045,55 @@

      Particle physics animation scene

      strokeStyle: particle.stroke, }); }, +}); + +scrawl.makePicture({ + + name: 'my-flower', + asset: 'iris', + + copyStartX: 0, + copyStartY: 0, + + copyWidth: '100%', + copyHeight: '100%', + + visibility: false, });
  • -
  • +
  • - + +
    +

    The Loom entity definition

    + +
    + +
    let myMesh = scrawl.makeMesh({
    +
    +    name: 'display-mesh',
    +
    +    net: 'test-net',
    +    source: 'my-flower',
    +
    +    method: 'fillThenDraw',
    +
    +    visibility: false,
    +});
    + +
  • + + +
  • +
    + +
    +

    Scene animation

    Function to display frames-per-second data, and other information relevant to the demo

    @@ -1014,11 +1131,11 @@

    Scene animation

  • -
  • +
  • - +

    Create the Display cycle animation

    @@ -1035,11 +1152,11 @@

    Scene animation

  • -
  • +
  • - +

    User interaction

    Setup form observer functionality

    @@ -1057,6 +1174,30 @@

    User interaction

    if (e.target.id === 'engine') myNet.set({ engine: e.target.value}); if (e.target.id === 'mass') myNet.set({ mass: parseFloat(e.target.value)}); if (e.target.id === 'tickMultiplier') myWorld.set({ tickMultiplier: parseFloat(e.target.value)}); + if (e.target.id === 'mesh') { + if (parseInt(e.target.value, 10)) { + myNet.set({ + showSprings: false, + }); + myNet.artefact.set({ + globalAlpha: 0, + }); + myMesh.set({ + visibility: true, + }); + } + else { + myNet.set({ + showSprings: true, + }); + myNet.artefact.set({ + globalAlpha: 1, + }); + myMesh.set({ + visibility: false, + }); + } + } myNet.restart(); } @@ -1065,20 +1206,21 @@

    User interaction

    document.querySelector('#generate').value = 'weak-net'; document.querySelector('#springConstant').value = 50; -document.querySelector('#damperConstant').value = 10; +document.querySelector('#damperConstant').value = 5; document.querySelector('#restLength').value = 1; document.querySelector('#mass').value = 1; document.querySelector('#engine').value = 'runge-kutta'; -document.querySelector('#tickMultiplier').value = 2;
    +document.querySelector('#tickMultiplier').value = 2; +document.querySelector('#mesh').value = '0';
  • -
  • +
  • - +

    Development and testing

    diff --git a/docs/demo/particles-009.html b/docs/demo/particles-009.html index c0e156f98..6e340ea64 100644 --- a/docs/demo/particles-009.html +++ b/docs/demo/particles-009.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -626,34 +686,6 @@

    Scene setup

    name: 'matrix', method: 'matrix', weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1], -}); - -scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, });
  • diff --git a/docs/demo/particles-010.html b/docs/demo/particles-010.html index 6e41423aa..6b3faa126 100644 --- a/docs/demo/particles-010.html +++ b/docs/demo/particles-010.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-011.html b/docs/demo/particles-011.html index 3d380529e..61b172eba 100644 --- a/docs/demo/particles-011.html +++ b/docs/demo/particles-011.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js @@ -626,34 +686,6 @@

    Scene setup

    name: 'matrix', method: 'matrix', weights: [-1, -1, 0, -1, 1, 1, 0, 1, 1], -}); - -scrawl.makeFilter({ - name: 'venetianBlinds', - method: 'userDefined', - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, }); diff --git a/docs/demo/particles-012.html b/docs/demo/particles-012.html index 14734bd77..9f068baf5 100644 --- a/docs/demo/particles-012.html +++ b/docs/demo/particles-012.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-013.html b/docs/demo/particles-013.html index b04a74152..2581069b6 100644 --- a/docs/demo/particles-013.html +++ b/docs/demo/particles-013.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-014.html b/docs/demo/particles-014.html index 1f33f1049..88fae9136 100644 --- a/docs/demo/particles-014.html +++ b/docs/demo/particles-014.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-015.html b/docs/demo/particles-015.html index a24b38330..a477272cb 100644 --- a/docs/demo/particles-015.html +++ b/docs/demo/particles-015.html @@ -250,6 +250,11 @@ + + ./demo/canvas-047.js + + + ./demo/component-001.js @@ -455,6 +460,56 @@ + + ./demo/filters-016.js + + + + + ./demo/filters-017.js + + + + + ./demo/filters-018.js + + + + + ./demo/filters-019.js + + + + + ./demo/filters-020.js + + + + + ./demo/filters-501.js + + + + + ./demo/filters-502.js + + + + + ./demo/filters-503.js + + + + + ./demo/filters-504.js + + + + + ./demo/filters-505.js + + + ./demo/particles-001.js @@ -530,6 +585,11 @@ + + ./demo/particles-016.js + + + ./demo/temp-001.js diff --git a/docs/demo/particles-016.html b/docs/demo/particles-016.html new file mode 100644 index 000000000..cc836d710 --- /dev/null +++ b/docs/demo/particles-016.html @@ -0,0 +1,947 @@ + + + + + Demo Particles 016 + + + + + +
    +
    + + + +
      + + + +
    • +
      + +
      + +
      +

      Demo Particles 016

      +

      Mesh entitys

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Run code

      + +
      + +
      import scrawl from '../source/scrawl.js'
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene setup

      + +
      + +
      let canvas = scrawl.library.artefact.mycanvas;
      +
      +canvas.setBase({
      +    backgroundColor: 'azure',
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Import image from DOM

      + +
      + +
      scrawl.importDomImage('.flowers');
      + +
    • + + +
    • +
      + +
      + +
      +

      Every Mesh uses a Net entity

      + +
      + +
      const myNet = scrawl.makeNet({
      +
      +    name: 'test-net',
      +    order: 1,
      +
      +    world: scrawl.makeWorld({
      +        name: 'demo-world',
      +    }),
      +
      +    start: [50, 50],
      +
      +    generate: 'weak-net',
      +
      +    postGenerate: function () {
      +
      +        this.springs.forEach(s => {
      +
      +            s.particleFromIsStatic = true;
      +            s.particleToIsStatic = true;
      +        });
      +    },
      +
      +    rows: 4,
      +    columns: 6,
      +    rowDistance: 100,
      +    columnDistance: 100,
      +
      +    showSprings: true,
      +    showSpringsColor: 'rgba(255, 255, 255, 0.3)',
      +
      +    forces: [],
      +
      +    engine: 'euler',
      +
      +    artefact: scrawl.makeWheel({
      +
      +        name: 'particle-wheel',
      +        radius: 7,
      +
      +        handle: ['center', 'center'],
      +
      +        method: 'fillThenDraw',
      +        fillStyle: 'rgba(200, 0, 0, 0.7)',
      +        strokeStyle: 'white',
      +        lineWidth: 2,
      +
      +        visibility: false, 
      +
      +        noUserInteraction: true,
      +        noPositionDependencies: true,
      +        noFilters: true,
      +        noDeltaUpdates: true,
      +    }),
      +
      +    stampAction: function (artefact, particle, host) {
      +
      +        let [r, z, ...start] = particle.history[0];
      +
      +        artefact.simpleStamp(host, { 
      +            start,
      +            fillStyle: particle.fill, 
      +            strokeStyle: particle.stroke, 
      +        });
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      Make all of the Net entity’s Particles draggable

      + +
      + +
          particlesAreDraggable: true,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Every Mesh also needs a source image

      + +
      + +
      const myPicture = scrawl.makePicture({
      +
      +    name: 'my-flower',
      +    asset: 'iris',
      +
      +    copyStartX: 0,
      +    copyStartY: 0,
      +
      +    copyWidth: '100%',
      +    copyHeight: '100%',
      +
      +    visibility: false,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      The Loom entity definition

      + +
      + +
      let myMesh = scrawl.makeMesh({
      +
      +    name: 'display-mesh',
      +
      +    net: 'test-net',
      +    source: 'my-flower',
      +
      +    lineWidth: 2,
      +    lineJoin: 'round',
      +    strokeStyle: 'orange',
      +
      +    method: 'fillThenDraw',
      +
      +    onEnter: function () { this.set({ lineWidth: 6 }) },
      +    onLeave: function () { this.set({ lineWidth: 2 }) },
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Scene animation

      +

      Function to display frames-per-second data, and other information relevant to the demo

      + +
      + +
      let report = function () {
      +
      +    let testTicker = Date.now(),
      +        testTime, testNow, dragging,
      +        testMessage = document.querySelector('#reportmessage');
      +
      +    return function () {
      +
      +        testNow = Date.now();
      +        testTime = testNow - testTicker;
      +        testTicker = testNow;
      +
      +        testMessage.textContent = `Screen refresh: ${Math.ceil(testTime)}ms; fps: ${Math.floor(1000 / testTime)}`;
      +    };
      +}();
      + +
    • + + +
    • +
      + +
      + +
      +

      Create the Display cycle animation

      + +
      + +
      scrawl.makeRender({
      +
      +    name: 'demo-animation',
      +    target: canvas,
      +    afterShow: report,
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      User interaction

      + +
      + +
    • + + +
    • +
      + +
      + +
      +

      Mouse movement over and away from the Loom (emulates CSS element hover functionality)

      + +
      + +
      let interactions = function () { canvas.cascadeEventAction('move') };
      +scrawl.addListener('move', interactions, canvas.domElement);
      + +
    • + + +
    • +
      + +
      + +
      +

      Make both the Net entity’s Particles, and the big ball, draggable

      + +
      + +
      scrawl.makeGroup({
      +
      +    name: 'my-draggable-group',
      +
      +}).addArtefacts('test-net');
      +
      +scrawl.makeDragZone({
      +
      +    zone: canvas,
      +    collisionGroup: 'my-draggable-group',
      +    endOn: ['up', 'leave'],
      +});
      + +
    • + + +
    • +
      + +
      + +
      +

      Development and testing

      + +
      + +
      console.log(scrawl.library);
      + +
    • + +
    +
    + + diff --git a/docs/source/core/animationloop.html b/docs/source/core/animationloop.html index 4bd0f9949..836068905 100644 --- a/docs/source/core/animationloop.html +++ b/docs/source/core/animationloop.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/core/component.html b/docs/source/core/component.html index b2c380fa3..d778f4327 100644 --- a/docs/source/core/component.html +++ b/docs/source/core/component.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/core/document.html b/docs/source/core/document.html index d2dc9c8ac..d9734668b 100644 --- a/docs/source/core/document.html +++ b/docs/source/core/document.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/core/events.html b/docs/source/core/events.html index 093a0e849..a029bc360 100644 --- a/docs/source/core/events.html +++ b/docs/source/core/events.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/core/init.html b/docs/source/core/init.html index da73bb6ac..604273eb4 100644 --- a/docs/source/core/init.html +++ b/docs/source/core/init.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/core/library.html b/docs/source/core/library.html index 759becf93..2dab3bd82 100644 --- a/docs/source/core/library.html +++ b/docs/source/core/library.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -482,7 +487,7 @@

    Core library

    -
    const version = '8.3.4';
    +
    const version = '8.4.0';
    diff --git a/docs/source/core/userInteraction.html b/docs/source/core/userInteraction.html index 736e7e271..5a1908015 100644 --- a/docs/source/core/userInteraction.html +++ b/docs/source/core/userInteraction.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/core/utilities.html b/docs/source/core/utilities.html index 417031c38..645e1dc6a 100644 --- a/docs/source/core/utilities.html +++ b/docs/source/core/utilities.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -619,6 +624,7 @@

    Functions

    const λnull = () => {};
    +const λfirstArg = function (a) { return a; };
     const λthis = function () { return this; };
     const λpromise = () => Promise.resolve(true);
    @@ -676,11 +682,13 @@

    Functions

    -

    __isa_boolean__ checks to make sure the argument is a boolean

    +

    interpolate clamp a value between a maximum and minimum value

    -
    const isa_boolean = item => (typeof item === 'boolean') ? true : false;
    +
    const interpolate = function (val, min, max) {
    +    return min + val * (max - min);
    +};
    @@ -691,11 +699,11 @@

    Functions

    -

    __isa_canvas__ checks to make sure the argument is a DOM <canvas> element

    +

    __isa_boolean__ checks to make sure the argument is a boolean

    -
    const isa_canvas = item => (Object.prototype.toString.call(item) === '[object HTMLCanvasElement]') ? true : false;
    +
    const isa_boolean = item => (typeof item === 'boolean') ? true : false;
    @@ -706,11 +714,11 @@

    Functions

    -

    __isa_dom__ checks to make sure the argument is a DOM element of some sort

    +

    __isa_canvas__ checks to make sure the argument is a DOM <canvas> element

    -
    const isa_dom = item => (item && item.querySelector && item.dispatchEvent) ? true : false;
    +
    const isa_canvas = item => (Object.prototype.toString.call(item) === '[object HTMLCanvasElement]') ? true : false;
    @@ -721,11 +729,11 @@

    Functions

    -

    __isa_fn__ checks to make sure the argument is a JavaScript function object

    +

    __isa_dom__ checks to make sure the argument is a DOM element of some sort

    -
    const isa_fn = item => (typeof item === 'function') ? true : false;
    +
    const isa_dom = item => (item && item.querySelector && item.dispatchEvent) ? true : false;
    @@ -736,11 +744,11 @@

    Functions

    -

    __isa_number__ checks to make sure the argument is true number (excluding NaN)

    +

    __isa_fn__ checks to make sure the argument is a JavaScript function object

    -
    const isa_number = item => (typeof item != 'undefined' && item.toFixed && !Number.isNaN(item)) ? true : false;
    +
    const isa_fn = item => (typeof item === 'function') ? true : false;
    @@ -751,11 +759,11 @@

    Functions

    -

    __isa_obj__ checks to make sure the argument is a JavaScript Object

    +

    __isa_number__ checks to make sure the argument is true number (excluding NaN)

    -
    const isa_obj = item => (Object.prototype.toString.call(item) === '[object Object]') ? true : false;
    +
    const isa_number = item => (typeof item != 'undefined' && item.toFixed && !Number.isNaN(item)) ? true : false;
    @@ -766,11 +774,11 @@

    Functions

    -

    __isa_quaternion__ checks to make sure the argument is a Scrawl-canvas Quaternion object

    +

    __isa_obj__ checks to make sure the argument is a JavaScript Object

    -
    const isa_quaternion = item => (item && item.type && item.type === 'Quaternion') ? true : false;
    +
    const isa_obj = item => (Object.prototype.toString.call(item) === '[object Object]') ? true : false;
    @@ -781,6 +789,21 @@

    Functions

    +

    __isa_quaternion__ checks to make sure the argument is a Scrawl-canvas Quaternion object

    + + + +
    const isa_quaternion = item => (item && item.type && item.type === 'Quaternion') ? true : false;
    + + + + +
  • +
    + +
    + +

    mergeInto takes two objects and merges the attributes of one into the other. This function mutates the ‘original’ object rather than generating a third, new onject

    Example:

    var original = { name: 'Peter', age: 42, job: 'lawyer' };
    @@ -805,11 +828,11 @@ 

    Functions

  • -
  • +
  • - +

    mergeOver takes two objects and writes the attributes of one over the other. This function mutates the ‘original’ object rather than generating a third, new onject

    Example:

    @@ -835,11 +858,11 @@

    Functions

  • -
  • +
  • - +

    mergeDiscard iterates over the additional object to perform a mergeOver operation, and also removing attributes from the original object where they have been set to null in the additional object

    Example:

    @@ -866,11 +889,11 @@

    Functions

  • -
  • +
  • - +

    pushUnique adds a value to the end of an array, if that value is not already present in the array. This function mutates the array

    Example:

    @@ -904,11 +927,11 @@

    Functions

  • -
  • +
  • - +

    removeItem removes a value from an array. This function mutates the array

    Example:

    @@ -937,11 +960,11 @@

    Functions

  • -
  • +
  • - +

    xt checks to see if argument exists (is not ‘undefined’)

    @@ -952,11 +975,11 @@

    Functions

  • -
  • +
  • - +

    xta checks to make sure that all the arguments supplied to the function exist (none are ‘undefined’)

    @@ -967,11 +990,11 @@

    Functions

  • -
  • +
  • - +

    xtGet returns the first existing (not ‘undefined’) argument supplied to the function

    @@ -982,11 +1005,11 @@

    Functions

  • -
  • +
  • - +

    xto checks to make sure that at least one of the arguments supplied to the function exists (is not ‘undefined’)

    @@ -997,11 +1020,660 @@

    Functions

  • -
  • +
  • - + +
    +

    Seedable random numbers +The following code has been lifted in its entirety from https://github.com/skratchdot/random-seed

    + +
    + +
    +/*
    + * random-seed
    + * https://github.com/skratchdot/random-seed
    + *
    + * This code was originally written by Steve Gibson and can be found here:
    + *
    + * https://www.grc.com/otg/uheprng.htm
    + *
    + * It was slightly modified for use in node, to pass jshint, and a few additional
    + * helper functions were added.
    + *
    + * Copyright (c) 2013 skratchdot
    + * Dual Licensed under the MIT license and the original GRC copyright/license
    + * included below.
    + */
    +/*  ============================================================================
    +                                    Gibson Research Corporation
    +                UHEPRNG - Ultra High Entropy Pseudo-Random Number Generator
    +    ============================================================================
    +    LICENSE AND COPYRIGHT:  THIS CODE IS HEREBY RELEASED INTO THE PUBLIC DOMAIN
    +    Gibson Research Corporation releases and disclaims ALL RIGHTS AND TITLE IN
    +    THIS CODE OR ANY DERIVATIVES. Anyone may be freely use it for any purpose.
    +    ============================================================================
    +    This is GRC's cryptographically strong PRNG (pseudo-random number generator)
    +    for JavaScript. It is driven by 1536 bits of entropy, stored in an array of
    +    48, 32-bit JavaScript variables.  Since many applications of this generator,
    +    including ours with the "Off The Grid" Latin Square generator, may require
    +    the deteriministic re-generation of a sequence of PRNs, this PRNG's initial
    +    entropic state can be read and written as a static whole, and incrementally
    +    evolved by pouring new source entropy into the generator's internal state.
    +    ----------------------------------------------------------------------------
    +    ENDLESS THANKS are due Johannes Baagoe for his careful development of highly
    +    robust JavaScript implementations of JS PRNGs.  This work was based upon his
    +    JavaScript "Alea" PRNG which is based upon the extremely robust Multiply-
    +    With-Carry (MWC) PRNG invented by George Marsaglia. MWC Algorithm References:
    +    http://www.GRC.com/otg/Marsaglia_PRNGs.pdf
    +    http://www.GRC.com/otg/Marsaglia_MWC_Generators.pdf
    +    ----------------------------------------------------------------------------
    +    The quality of this algorithm's pseudo-random numbers have been verified by
    +    multiple independent researchers. It handily passes the fermilab.ch tests as
    +    well as the "diehard" and "dieharder" test suites.  For individuals wishing
    +    to further verify the quality of this algorithm's pseudo-random numbers, a
    +    256-megabyte file of this algorithm's output may be downloaded from GRC.com,
    +    and a Microsoft Windows scripting host (WSH) version of this algorithm may be
    +    downloaded and run from the Windows command prompt to generate unique files
    +    of any size:
    +    The Fermilab "ENT" tests: http://fourmilab.ch/random/
    +    The 256-megabyte sample PRN file at GRC: https://www.GRC.com/otg/uheprng.bin
    +    The Windows scripting host version: https://www.GRC.com/otg/wsh-uheprng.js
    +    ----------------------------------------------------------------------------
    +    Qualifying MWC multipliers are: 187884, 686118, 898134, 1104375, 1250205,
    +    1460910 and 1768863. (We use the largest one that's < 2^21)
    +    ============================================================================ */
    +
    +
    +/*  ============================================================================
    +This is based upon Johannes Baagoe's carefully designed and efficient hash
    +function for use with JavaScript.  It has a proven "avalanche" effect such
    +that every bit of the input affects every bit of the output 50% of the time,
    +which is good.  See: http://baagoe.com/en/RandomMusings/hash/avalanche.xhtml
    +============================================================================
    +*/
    +var Mash = function () {
    +    var n = 0xefc8249d;
    +    var mash = function (data) {
    +        if (data) {
    +            data = data.toString();
    +            for (var i = 0; i < data.length; i++) {
    +                n += data.charCodeAt(i);
    +                var h = 0.02519603282416938 * n;
    +                n = h >>> 0;
    +                h -= n;
    +                h *= n;
    +                n = h >>> 0;
    +                h -= n;
    +                n += h * 0x100000000; // 2^32
    +            }
    +            return (n >>> 0) * 2.3283064365386963e-10; // 2^-32
    +        } else {
    +            n = 0xefc8249d;
    +        }
    +    };
    +    return mash;
    +};
    +
    +var uheprng = function (seed) {
    +    return (function () {
    +        var o = 48; // set the 'order' number of ENTROPY-holding 32-bit values
    +        var c = 1; // init the 'carry' used by the multiply-with-carry (MWC) algorithm
    +        var p = o; // init the 'phase' (max-1) of the intermediate variable pointer
    +        var s = new Array(o); // declare our intermediate variables array
    +        var i; // general purpose local
    +        var j; // general purpose local
    +        var k = 0; // general purpose local
    + +
  • + + +
  • +
    + +
    + +
    +

    when our “uheprng” is initially invoked our PRNG state is initialized from the +browser’s own local PRNG. This is okay since although its generator might not +be wonderful, it’s useful for establishing large startup entropy for our usage.

    + +
    + +
            var mash = new Mash(); // get a pointer to our high-performance "Mash" hash
    + +
  • + + +
  • +
    + +
    + +
    +

    fill the array with initial mash hash values

    + +
    + +
            for (i = 0; i < o; i++) {
    +            s[i] = mash(Math.random());
    +        }
    + +
  • + + +
  • +
    + +
    + +
    +

    this PRIVATE (internal access only) function is the heart of the multiply-with-carry +(MWC) PRNG algorithm. When called it returns a pseudo-random number in the form of a +32-bit JavaScript fraction (0.0 to <1.0) it is a PRIVATE function used by the default +[0-1] return function, and by the random ‘string(n)’ function which returns ‘n’ +characters from 33 to 126.

    + +
    + +
            var rawprng = function () {
    +            if (++p >= o) {
    +                p = 0;
    +            }
    +            var t = 1768863 * s[p] + c * 2.3283064365386963e-10; // 2^-32
    +            return s[p] = t - (c = t | 0);
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this EXPORTED function is the default function returned by this library. +The values returned are integers in the range from 0 to range-1. We first +obtain two 32-bit fractions (from rawprng) to synthesize a single high +resolution 53-bit prng (0 to <1), then we multiply this by the caller’s +“range” param and take the “floor” to return a equally probable integer.

    + +
    + +
            var random = function (range) {
    +            return Math.floor(range * (rawprng() + (rawprng() * 0x200000 | 0) * 1.1102230246251565e-16)); // 2^-53
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this EXPORTED function ‘string(n)’ returns a pseudo-random string of +‘n’ printable characters ranging from chr(33) to chr(126) inclusive.

    + +
    + +
            random.string = function (count) {
    +            var i;
    +            var s = '';
    +            for (i = 0; i < count; i++) {
    +                s += String.fromCharCode(33 + random(94));
    +            }
    +            return s;
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this PRIVATE “hash” function is used to evolve the generator’s internal +entropy state. It is also called by the EXPORTED addEntropy() function +which is used to pour entropy into the PRNG.

    + +
    + +
            var hash = function () {
    +            var args = Array.prototype.slice.call(arguments);
    +            for (i = 0; i < args.length; i++) {
    +                for (j = 0; j < o; j++) {
    +                    s[j] -= mash(args[i]);
    +                    if (s[j] < 0) {
    +                        s[j] += 1;
    +                    }
    +                }
    +            }
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this EXPORTED “clean string” function removes leading and trailing spaces and non-printing +control characters, including any embedded carriage-return (CR) and line-feed (LF) characters, +from any string it is handed. this is also used by the ‘hashstring’ function (below) to help +users always obtain the same EFFECTIVE uheprng seeding key.

    + +
    + +
            random.cleanString = function (inStr) {
    +            inStr = inStr.replace(/(^\s*)|(\s*$)/gi, ''); // remove any/all leading spaces
    +            inStr = inStr.replace(/[\x00-\x1F]/gi, ''); // remove any/all control characters
    +            inStr = inStr.replace(/\n /, '\n'); // remove any/all trailing spaces
    +            return inStr; // return the cleaned up result
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this EXPORTED “hash string” function hashes the provided character string after first removing +any leading or trailing spaces and ignoring any embedded carriage returns (CR) or Line Feeds (LF)

    + +
    + +
            random.hashString = function (inStr) {
    +            inStr = random.cleanString(inStr);
    +            mash(inStr); // use the string to evolve the 'mash' state
    +            for (i = 0; i < inStr.length; i++) { // scan through the characters in our string
    +                k = inStr.charCodeAt(i); // get the character code at the location
    +                for (j = 0; j < o; j++) { //    "mash" it into the UHEPRNG state
    +                    s[j] -= mash(k);
    +                    if (s[j] < 0) {
    +                        s[j] += 1;
    +                    }
    +                }
    +            }
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this EXPORTED function allows you to seed the random generator.

    + +
    + +
            random.seed = function (seed) {
    +            if (typeof seed === 'undefined' || seed === null) {
    +                seed = Math.random();
    +            }
    +            if (typeof seed !== 'string') {
    +                seed = stringify(seed, function (key, value) {
    +                    if (typeof value === 'function') {
    +                        return (value).toString();
    +                    }
    +                    return value;
    +                });
    +            }
    +            random.initState();
    +            random.hashString(seed);
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    this handy exported function is used to add entropy to our uheprng at any time

    + +
    + +
            random.addEntropy = function ( /* accept zero or more arguments */ ) {
    +            var args = [];
    +            for (i = 0; i < arguments.length; i++) {
    +                args.push(arguments[i]);
    +            }
    +            hash((k++) + (new Date().getTime()) + args.join('') + Math.random());
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    if we want to provide a deterministic startup context for our PRNG, +but without directly setting the internal state variables, this allows +us to initialize the mash hash and PRNG’s internal state before providing +some hashing input

    + +
    + +
            random.initState = function () {
    +            mash(); // pass a null arg to force mash hash to init
    +            for (i = 0; i < o; i++) {
    +                s[i] = mash(' '); // fill the array with initial mash hash values
    +            }
    +            c = 1; // init our multiply-with-carry carry
    +            p = o; // init our phase
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    we use this (optional) exported function to signal the JavaScript interpreter +that we’re finished using the “Mash” hash function so that it can free up the +local “instance variables” is will have been maintaining. It’s not strictly +necessary, of course, but it’s good JavaScript citizenship.

    + +
    + +
            random.done = function () {
    +            mash = null;
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    if we called “uheprng” with a seed value, then execute random.seed() before returning

    + +
    + +
            if (typeof seed !== 'undefined') {
    +            random.seed(seed);
    +        }
    + +
  • + + +
  • +
    + +
    + +
    +

    Returns a random integer between 0 (inclusive) and range (exclusive)

    + +
    + +
            random.range = function (range) {
    +            return random(range);
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    Returns a random float between 0 (inclusive) and 1 (exclusive)

    + +
    + +
            random.random = function () {
    +            return random(Number.MAX_VALUE - 1) / Number.MAX_VALUE;
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    Returns a random float between min (inclusive) and max (exclusive)

    + +
    + +
            random.floatBetween = function (min, max) {
    +            return random.random() * (max - min) + min;
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    Returns a random integer between min (inclusive) and max (inclusive)

    + +
    + +
            random.intBetween = function (min, max) {
    +            return Math.floor(random.random() * (max - min + 1)) + min;
    +        };
    + +
  • + + +
  • +
    + +
    + +
    +

    when our main outer “uheprng” function is called, after setting up our +initial variables and entropic state, we return an “instance pointer” +to the internal anonymous function which can then be used to access +the uheprng’s various exported functions. As with the “.done” function +above, we should set the returned value to ‘null’ once we’re finished +using any of these functions.

    + +
    + +
            return random;
    +    }());
    +};
    + +
  • + + +
  • +
    + +
    + +
    +

    … And this code comes from https://github.com/moll/json-stringify-safe

    + +
    + +
    function stringify(obj, replacer, spaces, cycleReplacer) {
    +    return JSON.stringify(obj, serializer(replacer, cycleReplacer), spaces)
    +}
    +
    +function serializer(replacer, cycleReplacer) {
    +    var stack = [], keys = []
    +
    +    if (cycleReplacer == null) cycleReplacer = function(key, value) {
    +        if (stack[0] === value) return "[Circular ~]"
    +        return "[Circular ~." + keys.slice(0, stack.indexOf(value)).join(".") + "]"
    +    }
    +
    +    return function(key, value) {
    +        if (stack.length > 0) {
    +            var thisPos = stack.indexOf(this)
    +            ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)
    +            ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)
    +            if (~stack.indexOf(value)) value = cycleReplacer.call(this, key, value)
    +        }
    +        else stack.push(value)
    +
    +        return replacer == null ? value : replacer.call(this, key, value)
    +    }
    +}
    +
    +const seededRandomNumberGenerator = function (seed) {
    +
    +    return new uheprng(seed);
    +};
    + +
  • + + +
  • +
    + +
    + +
    +
    Easing functions
    +

    The following easing variations come from the easings.net web page

    +
      +
    • Note: the naming convention for easing is different in Scrawl-canvas. Easing out implies a speeding up, while easing in implies a slowing down. Think of a train easing into a station, and then easing out of it again as it continues its journey.
    • +
    + +
    + +
    const easeOutSine = function (t) { return 1 - Math.cos((t * Math.PI) / 2) };
    +const easeInSine = function (t) { return Math.sin((t * Math.PI) / 2) };
    +const easeOutInSine = function (t) { return -(Math.cos(Math.PI * t) - 1) / 2 };
    +
    +const easeOutQuad = function (t) { return t * t };
    +const easeInQuad = function (t) { return 1 - ((1 - t) * (1 - t)) };
    +const easeOutInQuad = function(t) { return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2 };
    +
    +const easeOutCubic = function(t) { return t * t * t };
    +const easeInCubic = function(t) { return 1 - Math.pow(1 - t, 3) };
    +const easeOutInCubic = function(t) { return t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2 };
    +
    +const easeOutQuart = function(t) { return t * t * t * t };
    +const easeInQuart = function(t) { return 1 - Math.pow(1 - t, 4) };
    +const easeOutInQuart = function(t) { return t < 0.5 ? 8 * t * t * t * t : 1 - Math.pow(-2 * t + 2, 4) / 2 };
    +
    +const easeOutQuint = function(t) { return t * t * t * t * t };
    +const easeInQuint = function(t) { return 1 - Math.pow(1 - t, 5) };
    +const easeOutInQuint = function(t) { return t < 0.5 ? 16 * t * t * t * t * t : 1 - Math.pow(-2 * t + 2, 5) / 2 };
    +
    +const easeOutExpo = function(t) { return t === 0 ? 0 : Math.pow(2, 10 * t - 10) };
    +const easeInExpo = function(t) { return t === 1 ? 1 : 1 - Math.pow(2, -10 * t) };
    +const easeOutInExpo = function(t) {
    +    if (t === 0 || t === 1) return t;
    +    return t < 0.5 ? Math.pow(2, 20 * t - 10) / 2 : (2 - Math.pow(2, -20 * t + 10)) / 2;        
    +};
    +
    +const easeOutCirc = function(t) { return 1 - Math.sqrt(1 - Math.pow(t, 2)) };
    +const easeInCirc = function(t) { return Math.sqrt(1 - Math.pow(t - 1, 2)) };
    +const easeOutInCirc = function(t) { return t < 0.5 ? (1 - Math.sqrt(1 - Math.pow(2 * t, 2))) / 2 : (Math.sqrt(1 - Math.pow(-2 * t + 2, 2)) + 1) / 2 };
    +
    +const easeOutBack = function(t) { return (2.70158 * t * t * t) - (1.70158 * t * t) };
    +const easeInBack = function(t) { return 1 + (2.70158 * Math.pow(t - 1, 3)) + (1.70158 * Math.pow(t - 1, 2)) };
    +const easeOutInBack = function(t) {
    +    let c1 = 1.70158, c2 = c1 * 1.525;
    +    return t < 0.5 ? (Math.pow(2 * t, 2) * ((c2 + 1) * 2 * t - c2)) / 2 : (Math.pow(2 * t - 2, 2) * ((c2 + 1) * (t * 2 - 2) + c2) + 2) / 2;
    +};
    +
    +const easeOutElastic = function(t) {
    +    const c4 = (2 * Math.PI) / 3;
    +    if (t === 0 || t === 1) return t;
    +    return -Math.pow(2, 10 * t - 10) * Math.sin((t * 10 - 10.75) * c4);
    +};
    +
    +const easeInElastic = function(t) {
    +    const c4 = (2 * Math.PI) / 3;
    +    if (t === 0 || t === 1) return t;
    +    return Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;
    +};
    +
    +const easeOutInElastic = function(t) {
    +    const c5 = (2 * Math.PI) / 4.5;
    +    if (t === 0 || t === 1) return t;
    +    return t < 0.5 ? 
    +        -(Math.pow(2, 20 * t - 10) * Math.sin((20 * t - 11.125) * c5)) / 2 : 
    +        (Math.pow(2, -20 * t + 10) * Math.sin((20 * t - 11.125) * c5)) / 2 + 1;
    +};
    +
    +const easeOutBounce = function(t) {
    +    t = 1 - t;
    +    const n1 = 7.5625, d1 = 2.75;
    +    if (t < 1 / d1) return 1 - (n1 * t * t);
    +    if (t < 2 / d1) return 1 - (n1 * (t -= 1.5 / d1) * t + 0.75);
    +    if (t < 2.5 / d1) return 1 - (n1 * (t -= 2.25 / d1) * t + 0.9375);
    +    return 1 - (n1 * (t -= 2.625 / d1) * t + 0.984375);
    +};
    +
    +const easeInBounce = function(t) {
    +    const n1 = 7.5625, d1 = 2.75;
    +    if (t < 1 / d1) return n1 * t * t;
    +    if (t < 2 / d1) return n1 * (t -= 1.5 / d1) * t + 0.75;
    +    if (t < 2.5 / d1) return n1 * (t -= 2.25 / d1) * t + 0.9375;
    +    return n1 * (t -= 2.625 / d1) * t + 0.984375;
    +};
    +
    +const easeOutInBounce = function(t) {
    +    const n1 = 7.5625, d1 = 2.75;
    +    let res;
    +    if (t < 0.5) {
    +        t = 1 - 2 * t;
    +        if (t < 1 / d1) res = n1 * t * t;
    +        else if (t < 2 / d1) res = n1 * (t -= 1.5 / d1) * t + 0.75;
    +        else if (t < 2.5 / d1) res = n1 * (t -= 2.25 / d1) * t + 0.9375;
    +        else res = n1 * (t -= 2.625 / d1) * t + 0.984375;
    +        return (1 - res) / 2;
    +    }
    +    else {
    +        t = 2 * t - 1;
    +        if (t < 1 / d1) res = n1 * t * t;
    +        else if (t < 2 / d1) res = n1 * (t -= 1.5 / d1) * t + 0.75;
    +        else if (t < 2.5 / d1) res = n1 * (t -= 2.25 / d1) * t + 0.9375;
    +        else res = n1 * (t -= 2.625 / d1) * t + 0.984375;
    +        return (1 + res) / 2;
    +    }
    +};
    + +
  • + + +
  • +
    + +
    +

    Exports

    @@ -1012,10 +1684,12 @@

    Exports

    convertTime, correctForZero, λnull, + λfirstArg, λthis, λpromise, generateUuid, generateUniqueString, + interpolate, isa_boolean, isa_canvas, isa_dom, @@ -1028,10 +1702,42 @@

    Exports

    mergeOver, pushUnique, removeItem, + seededRandomNumberGenerator, xt, xta, xtGet, xto, + + easeOutSine, + easeInSine, + easeOutInSine, + easeOutQuad, + easeInQuad, + easeOutInQuad, + easeOutCubic, + easeInCubic, + easeOutInCubic, + easeOutQuart, + easeInQuart, + easeOutInQuart, + easeOutQuint, + easeInQuint, + easeOutInQuint, + easeOutExpo, + easeInExpo, + easeOutInExpo, + easeOutCirc, + easeInCirc, + easeOutInCirc, + easeOutBack, + easeInBack, + easeOutInBack, + easeOutElastic, + easeInElastic, + easeOutInElastic, + easeOutBounce, + easeInBounce, + easeOutInBounce, };
  • diff --git a/docs/source/factory/action.html b/docs/source/factory/action.html index 9a141355f..e94218a60 100644 --- a/docs/source/factory/action.html +++ b/docs/source/factory/action.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/anchor.html b/docs/source/factory/anchor.html index 264064d9a..9a65b4431 100644 --- a/docs/source/factory/anchor.html +++ b/docs/source/factory/anchor.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/animation.html b/docs/source/factory/animation.html index 9e33fc3b6..a8ad42481 100644 --- a/docs/source/factory/animation.html +++ b/docs/source/factory/animation.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/bezier.html b/docs/source/factory/bezier.html index 008b7d266..63572e281 100644 --- a/docs/source/factory/bezier.html +++ b/docs/source/factory/bezier.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/block.html b/docs/source/factory/block.html index ea8563b02..6e1db8e82 100644 --- a/docs/source/factory/block.html +++ b/docs/source/factory/block.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/canvas.html b/docs/source/factory/canvas.html index 95f2a1d4f..95e203501 100644 --- a/docs/source/factory/canvas.html +++ b/docs/source/factory/canvas.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/cell.html b/docs/source/factory/cell.html index b91bb9c62..c1d3e76e7 100644 --- a/docs/source/factory/cell.html +++ b/docs/source/factory/cell.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -680,7 +685,7 @@

    Cell attributes

  • Attributes defined in the anchor mixin: anchor.
  • Attributes defined in the filter mixin: filters, isStencil.
  • Attributes defined in the cascade mixin: groups.
  • -
  • Attributes defined in the pattern mixin: repeat.
  • +
  • Attributes defined in the pattern mixin: repeat, patternMatrix, matrixA, matrixB, matrixC, matrixD, matrixE, matrixF.
  • Attributes defined in the asset mixin: source, subscribers.
  • @@ -2368,7 +2373,22 @@

    Display cycle functionality

    image, worker; image = engine.getImageData(0, 0, self.currentDimensions[0], self.currentDimensions[1]); - worker = requestFilterWorker(); + worker = requestFilterWorker(); + + + + +
  • +
    + +
    + +
    +

    NEED TO POPULATE IMAGE FILTER ACTION OBJECTS WITH THEIR ASSET’S IMAGEDATA AT THIS POINT

    + +
    + +
            self.preprocessFilters(self.currentFilters);
     
             actionFilterWorker(worker, {
                 image: image,
    @@ -2397,11 +2417,11 @@ 

    Display cycle functionality

  • -
  • +
  • - +

    stashOutputAction - Internal function - stash the Cell’s current output. While this function can be called at any time, the simplest way to invoke it is to set the Cell’s stashOutput flag to true, which will then invoke this function at the end of the compile step of the Display cycle (after any filters have been applied to the cell display).

      @@ -2434,11 +2454,11 @@

      Display cycle functionality

      -
    • +
    • - +

      Keep the stashed image within bounds of the Cell’s dimensions.

      @@ -2466,11 +2486,11 @@

      Display cycle functionality

    • -
    • +
    • - +

      Get the imageData object, and stash it

      @@ -2484,11 +2504,11 @@

      Display cycle functionality

    • -
    • +
    • - +

      Get the dataUrl String, updating the stashed <img> element with it

      @@ -2535,11 +2555,11 @@

      Display cycle functionality

    • -
    • +
    • - +

      getHost - Internal function - get a reference to the Cell’s current host (where it will be stamping itself as part of the Display cycle).

        @@ -2565,11 +2585,11 @@

        Display cycle functionality

        -
      • +
      • - +

        updateBaseHere - Internal function - keeping the Canvas object’s ‘base’ Cell’s .here attribute up-to-date with accurate mouse/pointer/touch cursor data

        @@ -2664,11 +2684,11 @@

        Display cycle functionality

      • -
      • +
      • - +

        prepareStamp - Internal function - steps to be performed before the Cell stamps its visual contents onto a Canvas object’s base cell’s canvas. Will be invoked as part of the Display cycle ‘show’ functionality.

    • @@ -513,7 +518,7 @@

      Imports

    import { constructors, entity } from '../core/library.js';
    -import { mergeOver, xt, xtGet, isa_obj } from '../core/utilities.js';
    +import { mergeOver, xt, xtGet, isa_obj, easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce } from '../core/utilities.js';
     
     import baseMix from '../mixin/base.js';
    @@ -728,10 +733,12 @@

    Color attributes

    -
    Non-retained argument attributes (for factory, clone, set functions)
    +

    The easing attribute affects the getRangeColor function, applying an easing function to those requests.

    +
        easing: 'linear',
    +
  • @@ -741,7 +748,7 @@
    Non-re
    -

    random - the factory function, and the clone function, can ask the Color object to set its initial channel values randomly by including this attribute in the argument object; if the attribute resolves to true, random color functionality is invoked to set the r, g and b channel attributes to appropriately random values.

    +
    Non-retained argument attributes (for factory, clone, set functions)
    @@ -754,6 +761,19 @@
    Non-re
    +

    random - the factory function, and the clone function, can ask the Color object to set its initial channel values randomly by including this attribute in the argument object; if the attribute resolves to true, random color functionality is invoked to set the r, g and b channel attributes to appropriately random values.

    + + + + + + +
  • +
    + +
    + +

    color - a CSS color definition String which the Color object will attempt to convert into appropriate r, g, b and a channel attribute values.

    @@ -764,11 +784,11 @@
    Non-re
  • -
  • +
  • - +

    Packet management

    No additional packet functionality required

    @@ -778,11 +798,11 @@

    Packet management

  • -
  • +
  • - +

    Clone management

    No additional clone functionality required

    @@ -792,11 +812,11 @@

    Clone management

  • -
  • +
  • - +

    Kill management

    Overwrites ./mixin/base.js

    @@ -810,11 +830,11 @@

    Kill management

  • -
  • +
  • - +

    Remove style from all entity state objects

    @@ -837,11 +857,11 @@

    Kill management

  • -
  • +
  • - +

    Remove style from the Scrawl-canvas library

    @@ -855,11 +875,11 @@

    Kill management

  • -
  • +
  • - +

    Get, Set, deltaSet

    @@ -868,11 +888,11 @@

    Get, Set, deltaSet

  • -
  • +
  • - +

    get - overrides function in mixin/base.js

    @@ -919,11 +939,11 @@

    Get, Set, deltaSet

  • -
  • +
  • - +

    set - overrides function in mixin/base.js - see above for the additional attributes the set object argument can use.

    @@ -954,11 +974,11 @@

    Get, Set, deltaSet

  • -
  • +
  • - +

    else if (items.color) this.convert(items.color);

    @@ -972,11 +992,11 @@

    Get, Set, deltaSet

  • -
  • +
  • - +

    Get, Set, deltaSet

    @@ -1067,11 +1087,11 @@

    Get, Set, deltaSet

  • -
  • +
  • - +

    Prototype functions

    @@ -1080,11 +1100,11 @@

    Prototype functions

  • -
  • +
  • - +

    getData function called by Cell objects when calculating required updates to its CanvasRenderingContext2D engine, specifically for an entity’s fillStyle, strokeStyle and shadowColor attributes.

    @@ -1102,11 +1122,11 @@

    Prototype functions

  • -
  • +
  • - +

    generateRandomColor function asks the Color object to supply a random color, as restricted by its channel minimum and maximum attributes

    @@ -1144,13 +1164,13 @@

    Prototype functions

  • -
  • +
  • - +
    -

    getRangeColor - function which generates a color in the rtange between the minimum and maximum colors.

    +

    getRangeColor - function which generates a color in the range between the minimum and maximum colors.

    • when the argument is 0 the minimum color is returned; values below 0 are rounded up to 0
    • when the argument is 1 the maximum color is returned; values above 1 are rounded down to 1
    • @@ -1166,7 +1186,103 @@

      Prototype functions

      let floor = Math.floor; - let {rMin, gMin, bMin, aMin, rMax, gMax, bMax, aMax} = this; + let {rMin, gMin, bMin, aMin, rMax, gMax, bMax, aMax, easing} = this; + + if (easing !== 'linear') { + + switch (easing) { + case 'easeOutSine' : + item = easeOutSine(item); + break; + case 'easeInSine' : + item = easeInSine(item); + break; + case 'easeOutInSine' : + item = easeOutInSine(item); + break; + case 'easeOutQuad' : + item = easeOutQuad(item); + break; + case 'easeInQuad' : + item = easeInQuad(item); + break; + case 'easeOutInQuad' : + item = easeOutInQuad(item); + break; + case 'easeOutCubic' : + item = easeOutCubic(item); + break; + case 'easeInCubic' : + item = easeInCubic(item); + break; + case 'easeOutInCubic' : + item = easeOutInCubic(item); + break; + case 'easeOutQuart' : + item = easeOutQuart(item); + break; + case 'easeInQuart' : + item = easeInQuart(item); + break; + case 'easeOutInQuart' : + item = easeOutInQuart(item); + break; + case 'easeOutQuint' : + item = easeOutQuint(item); + break; + case 'easeInQuint' : + item = easeInQuint(item); + break; + case 'easeOutInQuint' : + item = easeOutInQuint(item); + break; + case 'easeOutExpo' : + item = easeOutExpo(item); + break; + case 'easeInExpo' : + item = easeInExpo(item); + break; + case 'easeOutInExpo' : + item = easeOutInExpo(item); + break; + case 'easeOutCirc' : + item = easeOutCirc(item); + break; + case 'easeInCirc' : + item = easeInCirc(item); + break; + case 'easeOutInCirc' : + item = easeOutInCirc(item); + break; + case 'easeOutBack' : + item = easeOutBack(item); + break; + case 'easeInBack' : + item = easeInBack(item); + break; + case 'easeOutInBack' : + item = easeOutInBack(item); + break; + case 'easeOutElastic' : + item = easeOutElastic(item); + break; + case 'easeInElastic' : + item = easeInElastic(item); + break; + case 'easeOutInElastic' : + item = easeOutInElastic(item); + break; + case 'easeOutBounce' : + item = easeOutBounce(item); + break; + case 'easeInBounce' : + item = easeInBounce(item); + break; + case 'easeOutInBounce' : + item = easeOutInBounce(item); + break; + } + } if (item > 1) item = 1; else if (item < 0) item = 0; @@ -1193,11 +1309,11 @@

      Prototype functions

      -
    • +
    • - +

      Internal function to make sure channel attribute values are in their correct format and ranges

      @@ -1222,11 +1338,11 @@

      Prototype functions

    • -
    • +
    • - +

      update function - adds the channel shift attributes to the r, g, b and a attributes. This functionality can be automated by setting the autoUpdate Boolean flag to true

      @@ -1281,11 +1397,11 @@

      Prototype functions

    • -
    • +
    • - +

      updateByDelta - alias for the update function

      @@ -1296,11 +1412,11 @@

      Prototype functions

    • -
    • +
    • - +

      We can also set a Color object to a new color value by invoking its convert function. Any CSS color string can be used as an argument (with exceptions - see above)

      @@ -1356,15 +1472,15 @@

      Prototype functions

      if (/%/.test(items)) { - r = round((temp[0] / 100) * 255); - g = round((temp[1] / 100) * 255); - b = round((temp[2] / 100) * 255); + r = round((parseFloat(temp[0]) / 100) * 255); + g = round((parseFloat(temp[1]) / 100) * 255); + b = round((parseFloat(temp[2]) / 100) * 255); } else { - r = round(temp[0]); - g = round(temp[1]); - b = round(temp[2]); + r = round(parseFloat(temp[0])); + g = round(parseFloat(temp[1])); + b = round(parseFloat(temp[2])); } } else if (/rgba\(/.test(items)) { @@ -1373,41 +1489,24 @@

      Prototype functions

      if (/%/.test(items)) { - r = round((temp[0] / 100) * 255); - g = round((temp[1] / 100) * 255); - b = round((temp[2] / 100) * 255); - a = temp[3] / 100; + r = round((parseFloat(temp[0]) / 100) * 255); + g = round((parseFloat(temp[1]) / 100) * 255); + b = round((parseFloat(temp[2]) / 100) * 255); + a = parseFloat(temp[3]) / 100; } else { - r = round(temp[0]); - g = round(temp[1]); - b = round(temp[2]); + r = round(parseFloat(temp[0])); + g = round(parseFloat(temp[1])); + b = round(parseFloat(temp[2])); a = temp[3]; } } - else if (/hsl\(/.test(items) || /hsla\(/.test(items)) {
    - -
  • - - -
  • -
    - -
    - -
    -

    the spec explanation can be found here https://developer.mozilla.org/en-US/docs/Web/CSS/color_value

    -

    see http://www.niwa.nu/2013/05/math-behind-colorspace-conversions-rgb-hsl/ for one way we can approach converting hsl values to rgb

    -

    currently, knock down to transparent black

    + else if (/hsl\(/.test(items) || /hsla\(/.test(items)) { -
    - -
                r = 0;
    -            g = 0;
    -            b = 0;
    -            a = 0;
    +            temp = items.match(/([0-9.]+\b)/g);
     
    +            this.setFromHSL(parseFloat(temp[0]), parseFloat(temp[1]), parseFloat(temp[2]), parseFloat(temp[3]));
             }
             else if (items === 'transparent') {
     
    @@ -1438,6 +1537,148 @@ 

    Prototype functions

    } return this; +}; + + +P.getHSLfromRGB = function (dr, dg, db) { + + let minColor = Math.min(dr, dg, db), + maxColor = Math.max(dr, dg, db); + + let lum = (minColor + maxColor) / 2; + + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); + else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); + else hue = 4 + ((dr - dg) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; +}; + +P.getHSL = function () { + + let {r, g, b} = this; + + let minColor = Math.min(r, g, b), + maxColor = Math.max(r, g, b); + + let lum = (minColor + maxColor) / 2; + + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === r) hue = (g - b) / (maxColor - minColor); + else if (maxColor === g) hue = 2 + ((b - r) / (maxColor - minColor)); + else hue = 4 + ((r - g) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; +}; + +P.getRGBfromHSL = function (h, s, l, a) { + + if (!s) { + + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } + + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + let r = calculator(tr, tempLum1, tempLum2) * 255, + g = calculator(tg, tempLum1, tempLum2) * 255, + b = calculator(tb, tempLum1, tempLum2) * 255; + + if (null == a) return [r, g, b]; + + return [r, g, b, a * 255]; +}; + +P.setFromHSL = function (h, s, l, a) { + + if (!s) { + + let gray = Math.floor(l * 255); + return [gray, gray, gray]; + } + + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + this.r = calculator(tr, tempLum1, tempLum2) * 255, + this.g = calculator(tg, tempLum1, tempLum2) * 255, + this.b = calculator(tb, tempLum1, tempLum2) * 255; + + if (null != a) { + + this.a = a * 255; + } };
  • diff --git a/docs/source/factory/coordinate.html b/docs/source/factory/coordinate.html index af16939e6..5ed325403 100644 --- a/docs/source/factory/coordinate.html +++ b/docs/source/factory/coordinate.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/element.html b/docs/source/factory/element.html index 3c4ad0ae9..fb8baed65 100644 --- a/docs/source/factory/element.html +++ b/docs/source/factory/element.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/emitter.html b/docs/source/factory/emitter.html index cec167cea..e16152cc3 100644 --- a/docs/source/factory/emitter.html +++ b/docs/source/factory/emitter.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/filter.html b/docs/source/factory/filter.html index 454d2a4e9..ef3bd7b6b 100644 --- a/docs/source/factory/filter.html +++ b/docs/source/factory/filter.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -450,42 +455,80 @@

    Filter factory

    -

    Filters take in an image representation of an entity, Group of entitys or a Cell display and, by manipulating the image’s data, return an updated image which replaces those entitys or cell in the final output display.

    +

    Filters take in an image representation of an entity, Group of entitys or a Cell display and, by manipulating the image’s data, return an updated image which replaces those entitys or Cell in the final output display.

    Scrawl-canvas defines its filters in Filter objects, detailed in this module. The functionality to make use of these objects is coded up in the filter mixin, which is used by the Cell, Group and all entity factories.

    -

    Scrawl-canvas uses a web worker to generate filter outputs - defined in the filter web worker. It supports a number of common filter algorithms:

    -
      -
    • grayscale - desaturates the image
    • -
    • sepia - desaturates the image, then ‘antiques’ it by adding back some yellow tone
    • -
    • invert - turns white into black, and similar across the spectrum
    • -
    • red - suppresses the image’s green and blue channels
    • -
    • green - suppresses the image’s red and blue channels
    • -
    • blue - suppresses the image’s red and green channels
    • -
    • notred - suppresses the image’s red channel
    • -
    • notgreen - suppresses the image’s green channel
    • -
    • notblue - suppresses the image’s blue channel
    • -
    • cyan - averages the image’s blue and green channels, and suppresses the red channel
    • -
    • magenta - averages the image’s red and blue channels, and suppresses the green channel
    • -
    • yellow - averages the image’s red and green channels, and suppresses the blue channel
    • -
    • brightness - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute
    • -
    • saturation - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute, then normalizes the result
    • -
    • threshold - desaturates each pixel then tests it against filter.level value; those pixels below the level are set to the filter.lowRGB values while the rest are set to the filter.highRGB values
    • -
    • channels - multiply each pixel’s channel values by the values set in the filter.RGB attributes
    • -
    • channelstep - divide, floor, and then multiply each pixel’s channel values by the values set in the filter.RGB attributes
    • -
    • tint - a more fine-grained form of the channels filter
    • -
    • chroma - (the green-screen effect) - will evaluate each pixel against a range array; pixels that fall within the range are set to transparent
    • -
    • pixelate - create tiles - whose dimensions and positions are determined by values set in the filter tileWidth, tileHeight, offsetX and offsetY attributes - across the image and then average the pixels in each tile to a single color
    • -
    • blur - creates a blurred image. Note: can be slow across larger images! The degree of the blur - which does not follow conventional algorithms such as gaussian - is determined by the filter attribute values for radius (number), passes (number) and shrink (boolean)
    • -
    • matrix - apply a 3x3 matrix transform to each of the image’s pixels
    • -
    • matrix5 - apply a 5x5 matrix transform to each of the image’s pixels
    • -
    -

    Scrawl-canvas can also use user-defined filters.

    -

    Filters use the base mixin, thus they come equipped with packet functionality, alongside clone and kill functions.

    -

    Note that CSS-mediated filters - url(), blur(), brightness(), contrast(), drop-shadow(), grayscale(), hue-rotate(), invert(), opacity(), saturate(), sepia() - can also be applied to DOM elements wrapped into Scrawl-canvas objects (Stack, Element, Canvas) in the normal way. Browsers will apply CSS filters as the final operation in their paint routines.

    -

    TODO: we’ve had to move all the code from the filter web worker into a new, comment-free module file because tools like CreateReactApp - which uses Webpack as its bundler of choice - breaks when we yarn add scrawl-canvas to a project.

    -
      -
    • The root of the issue is that Babel currently breaks when it encounters the import.meta attribute.
    • -
    • Babel do supply a plugin which is supposed to address this issue: babel-plugin-syntax-import-meta. But trying to add this to a Webpack configuration - particularly as implemented by create-react-app - is, at best, a nightmare.
    • -
    +

    Scrawl-canvas uses a web worker to generate filter outputs - defined in the filter web worker. The web worker implements a number of common filter algorithms. These algorithms - called filter actions - can be combined in a wide variety of ways, including the use of multiple pathways, to create complex filter results.

    +

    Web worker filter actions

    +

    alpha-to-channels - Copies the alpha channel value over to the selected value or, alternatively, sets that channels value to zero, or leaves the channel’s value unchanged. Setting the appropriate “includeChannel” flags will copy the alpha channel value to that channel; when that flag is false, setting the appropriate “excludeChannel” flag will set that channel’s value to zero. Object attributes: action, lineIn, lineOut, opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue

    +

    area-alpha - Places a tile schema across the input, quarters each tile and then sets the alpha channels of the pixels in selected quarters of each tile to zero. Can be used to create horizontal or vertical bars, or chequerboard effects. Object attributes: action, lineIn, lineOut, opacity, tileWidth, tileHeight, offsetX, offsetY, gutterWidth, gutterHeight, areaAlphaLevels

    +

    average-channels - Calculates an average value from each pixel’s included channels and applies that value to all channels that have not been specifically excluded; excluded channels have their values set to 0. Object attributes: action, lineIn, lineOut, opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue

    +

    binary - Set the channel to either 0 or 255, depending on whether the channel value is below or above a given level. Level values are set using the “red”, “green”, “blue” and “alpha” arguments. Setting these values to 0 disables the action for that channel. Object attributes: action, lineIn, lineOut, opacity, red, green, blue, alpha

    +

    blend - Using two source images (from the “lineIn” and “lineMix” arguments), combine their color information using various separable and non-separable blend modes (as defined by the W3C Compositing and Blending Level 1 recommendations. The blending method is determined by the String value supplied in the “blend” argument; permitted values are: ‘color-burn’, ‘color-dodge’, ‘darken’, ‘difference’, ‘exclusion’, ‘hard-light’, ‘lighten’, ‘lighter’, ‘multiply’, ‘overlay’, ‘screen’, ‘soft-light’, ‘color’, ‘hue’, ‘luminosity’, and ‘saturation’. Note that the source images may be of different sizes: the output (lineOut) image size will be the same as the source (NOT lineIn) image; the lineMix image can be moved relative to the lineIn image using the “offsetX” and “offsetY” arguments. Object attributes: action, lineIn, lineOut, lineMix, opacity, blend, offsetX, offsetY

    +

    blur - Performs a multi-loop, two-step ‘horizontal-then-vertical averaging sweep’ calculation across all pixels to create a blur effect. Note that this filter is expensive, thus much slower to complete compared to other filter effects. Object attributes: action, lineIn, lineOut, opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, step

    +

    channels-to-alpha - Calculates an average value from each pixel’s included channels and applies that value to the alpha channel. Object attributes: action, lineIn, lineOut, opacity, includeRed, includeGreen, includeBlue

    +

    chroma - Using an array of ‘range’ arrays, determine whether a pixel’s values lie entirely within a range’s values and, if true, sets that pixel’s alpha channel value to zero. Each ‘range’ array comprises six Numbers representing [minimum-red, minimum-green, minimum-blue, maximum-red, maximum-green, maximum-blue] values. Object attributes: action, lineIn, lineOut, opacity, ranges

    +

    clamp-channels - Clamp each color channel to a range set by lowColor and highColor values. Object attributes: action, lineIn, lineOut, opacity, lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue

    +

    colors-to-alpha - Determine the alpha channel value for each pixel depending on the closeness to that pixel’s color channel values to a reference color supplied in the “red”, “green” and “blue” arguments. The sensitivity of the effect can be manipulated using the “transparentAt” and “opaqueAt” values, both of which lie in the range 0-1. Object attributes: action, lineIn, lineOut, opacity, red, green, blue, opaqueAt, transparentAt

    +

    compose - Using two source images (from the “lineIn” and “lineMix” arguments), combine their color information using alpha compositing rules (as defined by Porter/Duff). The compositing method is determined by the String value supplied in the “compose” argument; permitted values are: ‘destination-only’, ‘destination-over’, ‘destination-in’, ‘destination-out’, ‘destination-atop’, ‘source-only’, ‘source-over’ (default), ‘source-in’, ‘source-out’, ‘source-atop’, ‘clear’, ‘xor’, or ‘lighter’. Note that the source images may be of different sizes: the output (lineOut) image size will be the same as the source (NOT lineIn) image; the lineMix image can be moved relative to the lineIn image using the “offsetX” and “offsetY” arguments. Object attributes: action, lineIn, lineOut, lineMix, opacity, compose, offsetX, offsetY

    +

    displace - Shift pixels around the image, based on the values supplied in a displacement process-image. Object attributes: action, lineIn, lineOut, lineMix, opacity, channelX, channelY, scaleX, scaleY, transparentEdges, offsetX, offsetY

    +

    emboss - A 3x3 matrix transform; the matrix weights are calculated internally from the values of two arguments: “strength”, and “angle” - which is a value measured in degrees, with 0 degrees pointing to the right of the origin (along the positive x axis). Post-processing options include removing unchanged pixels, or setting then to mid-gray. The convenience method includes additional arguments which will add a choice of grayscale, then channel clamping, then blurring actions before passing the results to this emboss action. Object attributes: action, lineIn, lineOut, opacity, strength, angle, tolerance, keepOnlyChangedAreas, postProcessResults; pseudo-arguments for the convenience method include useNaturalGrayscale, clamp, smoothing

    +

    flood - Set all pixels to the channel values supplied in the “red”, “green”, “blue” and “alpha” arguments. Object attributes: action, lineIn, lineOut, opacity, red, green, blue, alpha

    +

    grayscale - For each pixel, averages the weighted color channels and applies the result across all the color channels. This gives a more realistic monochrome effect. Object attributes: action, lineIn, lineOut, opacity

    +

    invert-channels - For each pixel, subtracts its current channel values - when included - from 255. Object attributes: action, lineIn, lineOut, opacity, includeRed, includeGreen, includeBlue, includeAlpha

    +

    lock-channels-to-levels - Produces a posterize effect. Takes in four arguments - “red”, “green”, “blue” and “alpha” - each of which is an Array of zero or more integer Numbers (between 0 and 255). The filter works by looking at each pixel’s channel value and determines which of the corresponding Array’s Number values it is closest to; it then sets the channel value to that Number value. Object attributes: action, lineIn, lineOut, opacity, red, green, blue, alpha

    +

    matrix - Performs a matrix operation on each pixel’s channels, calculating the new value using neighbouring pixel weighted values. Also known as a convolution matrix, kernel or mask operation. Note that this filter is expensive, thus much slower to complete compared to other filter effects. The matrix dimensions can be set using the “width” and “height” arguments, while setting the home pixel’s position within the matrix can be set using the “offsetX” and “offsetY” arguments. The weights to be applied need to be supplied in the “weights” argument - an Array listing the weights row-by-row starting from the top-left corner of the matrix. By default all color channels are included in the calculations while the alpha channel is excluded. The ‘edgeDetect’, ‘emboss’ and ‘sharpen’ convenience filter methods all use the matrix action, pre-setting the required weights. Object attributes: action, lineIn, lineOut, opacity, includeRed, includeGreen, includeBlue, includeAlpha, width, height, offsetX, offsetY, weights

    +

    modulate-channels - Multiplies each channel’s value by the supplied argument value. A channel-argument’s value of ‘0’ will set that channel’s value to zero; a value of ‘1’ will leave the channel value unchanged. If the “saturation” flag is set to ‘true’ the calculation changes to start at the color range mid point. The ‘brightness’ and ‘saturation’ filters are special forms of the ‘channels’ filter which use a single “levels” argument to set all three color channel arguments to the same value. Object attributes: action, lineIn, lineOut, opacity, red, green, blue, alpha, saturation; pseudo-argument: level

    +

    offset - Offset the input image in the output image. Object attributes: action, lineIn, lineOut, opacity, offsetRedX, offsetRedY, offsetGreenX, offsetGreenY, offsetBlueX, offsetBlueY, offsetAlphaX, offsetAlphaY; pseudo-argument: offsetX, offsetY

    +

    pixelate - Pixelizes the input image by creating a grid of tiles across it and then averaging the color values of each pixel in a tile and setting its value to the average. Tile width and height, and their offset from the top left corner of the image, are set via the “tileWidth”, “tileHeight”, “offsetX” and “offsetY” arguments. Object attributes: action, lineIn, lineOut, opacity, tileWidth, tileHeight, offsetX, offsetY, includeRed, includeGreen, includeBlue, includeAlpha

    +

    process-image - Add an asset image to the filter process chain. The asset - the String name of the asset object - must be pre-loaded before it can be included in the filter. The “width” and “height” arguments are measured in integer Number pixels; the “copy” arguments can be either percentage Strings (relative to the asset’s natural dimensions) or absolute Number values (in pixels). The “lineOut” argument is required - be aware that the filter action does not check for any pre-existing assets cached under this name and, if they exist, will overwrite them with this asset’s data. Object attributes: action, lineOut, asset, width, height, copyWidth, copyHeight, copyX, copyY

    +

    set-channel-to-level - Sets the value of each pixel’s included channel to the value supplied in the “level” argument. Object attributes: action, lineIn, lineOut, opacity, includeRed, includeGreen, includeBlue, includeAlpha, level

    +

    step-channels - Takes three divisor values - “red”, “green”, “blue”. For each pixel, its color channel values are divided by the corresponding color divisor, floored to the integer value and then multiplied by the divisor. For example a divisor value of ‘50’ applied to a channel value of ‘120’ will give a result of ‘100’. The output is a form of posterization. Object attributes: action, lineIn, lineOut, opacity, red, green, blue

    +

    threshold - Grayscales the input then, for each pixel, checks the color channel values against a “level” argument: pixels with channel values above the level value are assigned to the ‘high’ color; otherwise they are updated to the ‘low’ color. The “high” and “low” arguments are [red, green, blue] integer Number Arrays. The convenience function will accept the pseudo-attributes “highRed”, “lowRed” etc in place of the “high” and “low” Arrays. Object attributes: action, lineIn, lineOut, opacity, low, high; pseudo-arguments: lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue

    +

    tint-channels - Has similarities to the SVG filter element, but excludes the alpha channel from calculations. Rather than set a matrix, we set nine arguments to determine how the value of each color channel in a pixel will affect both itself and its fellow color channels. The ‘sepia’ convenience filter presets these values to create a sepia effect. Object attributes: action, lineIn, lineOut, opacity, redInRed, redInGreen, redInBlue, greenInRed, greenInGreen, greenInBlue, blueInRed, blueInGreen, blueInBlue

    +

    user-defined-legacy - Previous to Scrawl-canvas version 8.4.0, filters could be defined with an argument which passed a function string to the filter worker, which the worker would then run against the source input image as-and-when required. This functionality has been removed from the new filter system. All such filters will now return the input image unchanged. Object attributes: action, lineIn, lineOut, opacity

    +
    // Example: the following code creates a filter that applies a thick red border around the entitys 
    +// it is applied to; if used on a group then it will outline the outside of the group's entitys, 
    +// ignoring overlaps between entitys:
    +scrawl.makeFilter({
    +    name: 'redBorder',
    +    actions: [
    +        {
    +            action: 'blur',
    +            lineIn: 'source-alpha',
    +            lineOut: 'shadow',
    +            radius: 3,
    +            passes: 2, 
    +            includeRed: false, 
    +            includeGreen: false, 
    +            includeBlue: false, 
    +            includeAlpha: true, 
    +        },
    +        {
    +            action: 'binary',
    +            lineIn: 'shadow',
    +            lineOut: 'shadow',
    +            alpha: 1, 
    +        },
    +        {
    +            action: 'flood',
    +            lineIn: 'shadow',
    +            lineOut: 'red-flood',
    +            red: 255,
    +        },
    +        {
    +            action: 'compose',
    +            lineIn: 'shadow',
    +            lineMix: 'red-flood',
    +            lineOut: 'colorized',
    +            compose: 'destination-in',
    +        },
    +        {
    +            action: 'compose',
    +            lineIn: 'source',
    +            lineMix: 'colorized',
    +        }
    +    ],
    +});
    @@ -504,6 +547,7 @@

    Demos:

  • Canvas-020 - Testing createImageFromXXX functionality
  • Canvas-027 - Video control and manipulation; chroma-based hit zone
  • Component-004 - Scrawl-canvas packets; save and load a range of different entitys
  • +
  • Filters-019 - Using a Noise asset with a displace filter
  • @@ -521,8 +565,8 @@

    Imports

    -
    import { constructors, cell, group, entity } from '../core/library.js';
    -import { mergeOver, removeItem } from '../core/utilities.js';
    +            
    import { constructors, cell, group, entity, asset } from '../core/library.js';
    +import { mergeOver, removeItem, λnull } from '../core/utilities.js';
     
     import baseMix from '../mixin/base.js';
    @@ -543,7 +587,9 @@

    Filter constructor

    this.makeName(items.name); this.register(); - this.set(this.defs); + + this.actions = []; + this.set(items); return this; };
    @@ -594,6 +640,7 @@

    Mixins

    Filter attributes

    • Attributes defined in the base mixin: name.
    • +
    • ___Note:__ unlike other Scrawl-canvas factory functions, the Filter factory does not set all its default attributes as part of its constructors. The reason for this is that these attributes are often specific to just one or a few filter actions or methods; not setting these defaults help save some object memory.
    @@ -609,11 +656,12 @@

    Filter attributes

    -

    All filters need to set out their method. For preset methods, a method string (eg ‘grayscale’, ‘sepia’) is sufficient. Bespoke methods require a function

    +
    How the filter factory builds filters
    +

    Filter actions are defined in action objects - which are vanilla Javascript Objects which are collected together in the actions array. Each action object is processed sequentially by the web worker to produce the final output for that filter.

    -
        method: '',
    +
        actions: null,
    @@ -624,16 +672,17 @@

    Filter attributes

    -

    The following methods require no further attributes:

    +

    The method attribute is a String which, in legacy filters, determines the actions which that filter will take on the image. An entity, Group or Cell can include more than one filter object in its filters Array.

      -
    • grayscale, sepia, invert
    • -
    • red, green, blue
    • -
    • notred, notgreen, notblue
    • -
    • cyan, magenta, yellow
    • +
    • Filter factory invocations which include the method attribute in their argument object do not need to include an actions attribute; the factory will build the action objects for us.
    • +
    • When using the method attribute, other attributes can be included alongside it. The filter factory will automatically transpose these attributes to the action object.
    • +
    • The following Strings are valid methods: ‘areaAlpha’, ‘binary’, ‘blend’, ‘blue’, ‘blur’, ‘brightness’, ‘channelLevels’, ‘channels’, ‘channelstep’, ‘channelsToAlpha’, ‘chroma’, ‘chromakey’, ‘clampChannels’, ‘compose’, ‘cyan’, ‘displace’, ‘edgeDetect’, ‘emboss’, ‘flood’, ‘gray’, ‘grayscale’, ‘green’, ‘image’, ‘invert’, ‘magenta’, ‘matrix’, ‘matrix5’, ‘notblue’, ‘notgreen’, ‘notred’, ‘offset’, ‘offsetChannels’, ‘pixelate’, ‘red’, ‘saturation’, ‘sepia’, ‘sharpen’, ‘threshold’, ‘tint’, ‘userDefined’, ‘yellow’,
    +
        method: '',
    + @@ -643,14 +692,25 @@

    Filter attributes

    -

    The following methods require the level attribute:

    +
    How filters process data
    +

    The Scrawl-canvas filters web worker can use multiple pathways to process a filter’s Array of action objects. In essence, a filter action can store the results of its work in a named cache, which can then be used by other filter actions further down the line.

      -
    • brightness, saturation, threshold
    • +
    • When Scrawl-canvas applies filters to an entity, Group or Cell it will go through the entity’s filters Array looking for any process-image actions; when it finds one it will add a snapshot of the associated asset’s current image state to the filter object (thus Cell and Noise assets are naturally dynamic).
    • +
    • Then the system sends all of the filter’s action objects over to the filters web worker, alongside a snapshot of the entity, Group or Cell to be processed.
    • +
    • If the entity, Group or Cell is acting as a stencil (its isStencil flag has been set to true) then a snapshot of the background behind the entity/Group/Cell is sent instead of the entitys themselves.
    • +
    • When the web worker recieves the data packet, it stores the snapshot in its source cache, and replicates it into the work object.
    • +
    • All filter actions require a lineIn string which references a cached image or snapshot. If this is not supplied, then the action will process the data stored in the work object.
    • +
    • Additional sources for the lineIn (or lineMix) data are source, which copies the original source image data and delivers it to the action; and source-alpha which copies the original source’s alpha channel data to each of the color channels and delivers it to the action.
    • +
    • Similarly all filter actions require a lineOut which identifies the name of a cache in which the processed data can be stored. If this is not supplied, then the action will copy the processed data back into the work object
    • +
    • Some filter actions - specifically blend, compose and displace - use two inputs, combining the data referenced by the lineIn and lineMix attribute into lineOut cache or work object.
    • +
    • When processing completes, the updated data held in the work object is returned by the web worker, which Scrawl-canvas then uses to stamp the entity/Group/Cell into the display canvas.
    -
        level: 0,
    +
        lineIn: '',
    +    lineMix: '',
    +    lineOut: '',
    @@ -661,16 +721,16 @@

    Filter attributes

    -

    The threshhold filter will default to setting (desaturated) pixels below a given level (0 - 255) to black, and those above the level to white. These colours can be changed by using the low and high channel attributes

    +

    Every action includes an opacity attribute which defines how much of the incoming image data (lineIn) and how much of the processed results gets included in the output data (lineOut)

    +
      +
    • When set to 0, the output consists entirely of input data
    • +
    • When set to 1 (the default), the output consists entirely of processed data
    • +
    • Values between these limits instruct the action to combine input and processed data proportionately in a linear fashion: a value of 0.7 leads to a result consisting of 30% input data and 70% processed data
    • +
    -
        lowRed: 0,
    -    lowGreen: 0,
    -    lowBlue: 0,
    -    highRed: 255,
    -    highGreen: 255,
    -    highBlue: 255,
    +
        opacity: 1,
    @@ -681,13 +741,108 @@

    Filter attributes

    -

    The channels and channelstep methods make use of the red, green and blue attributes

    +
    Other attributes used by various filters
    +

    The attributes below are used by specific filter actions and/or methods, and the values they take may change according to the filter’s requirements. Check out the following demos to see these attributes in action with each filter method:

    + -
        red: 0,
    +            
        alpha: 255,
    +    angle: 0,
    +    areaAlphaLevels: null,
    +    asset: '',
    +    blend: 'normal',
    +    blue: 0,
    +    blueInBlue: 0,
    +    blueInGreen: 0,
    +    blueInRed: 0,
    +    channelX: 'red',
    +    channelY: 'green',
    +    clamp: 0,
    +    compose: 'source-over',
    +    copyHeight: 1,
    +    copyWidth: 1,
    +    copyX: 0,
    +    copyY: 0,
    +    excludeAlpha: true, 
    +    excludeBlue: false,
    +    excludeGreen: false,
    +    excludeRed: false,
         green: 0,
    -    blue: 0,
    + greenInBlue: 0, + greenInGreen: 0, + greenInRed: 0, + gutterHeight: 1, + gutterWidth: 1, + height: 1, + highBlue: 255, + highGreen: 255, + highRed: 255, + includeAlpha: false, + includeBlue: true, + includeGreen: true, + includeRed: true, + keepOnlyChangedAreas: false, + level: 0, + lowBlue: 0, + lowGreen: 0, + lowRed: 0, + offsetAlphaX: 0, + offsetAlphaY: 0, + offsetBlueX: 0, + offsetBlueY: 0, + offsetGreenX: 0, + offsetGreenY: 0, + offsetRedX: 0, + offsetRedY: 0, + offsetX: 0, + offsetY: 0, + opaqueAt: 1, + passes: 1, + postProcessResults: true, + processHorizontal: true, + processVertical: true, + radius: 1, + ranges: null, + red: 0, + redInBlue: 0, + redInGreen: 0, + redInRed: 0, + scaleX: 1, + scaleY: 1, + smoothing: 0, + step: 1, + strength: 1, + tileHeight: 1, + tileWidth: 1, + tolerance: 0, + transparentAt: 0, + transparentEdges: false, + useNaturalGrayscale: false, + weights: null, + width: 1, +}; +P.defs = mergeOver(P.defs, defaultAttributes);
    @@ -698,20 +853,11 @@

    Filter attributes

    -

    The tint method uses nine attributes

    +

    Packet management

    +

    No additional packet functionality required

    -
        redInRed: 0,
    -    redInGreen: 0,
    -    redInBlue: 0,
    -    greenInRed: 0,
    -    greenInGreen: 0,
    -    greenInBlue: 0,
    -    blueInRed: 0,
    -    blueInGreen: 0,
    -    blueInBlue: 0,
    - @@ -721,15 +867,11 @@

    Filter attributes

    -

    The pixelate method requires tile dimensions and, optionally, offset coordinates which should not exceed the tile dimensions

    +

    Clone management

    +

    No additional clone functionality required

    -
        offsetX: 0,
    -    offsetY: 0,
    -    tileWidth: 1,
    -    tileHeight: 1,
    - @@ -739,23 +881,14 @@

    Filter attributes

    -

    The blur method uses the following attributes:

    -
      -
    • the radius of the blur effect, in pixels
    • -
    • the passes attribute (1+) determines how many times the blur filter will iterate
    • -
    • the shrinkingRadius flag reduces the radius by approx 70% on each successive pass
    • -
    • when includeAlpha flag is true, filter will include the alpha channel - note this may make the edges of the entity translucent
    • -
    • because the blur filter works on a 2-pass basis, we can restrict its operation to the vertical and horizontal directions by setting the processVertical and processHorizontal flags appropriately
    • -
    +

    Kill management

    +

    Overwrites ./mixin/base.js

    -
        radius: 1,
    -    passes: 1,
    -    shrinkingRadius: false,
    -    includeAlpha: false,
    -    processVertical: true,
    -    processHorizontal: true,
    +
    P.kill = function () {
    +
    +    let myname = this.name;
    @@ -766,23 +899,16 @@

    Filter attributes

    -

    The matrix method requires a weights attribute - an array of 9 numbers (also known as a kernel) in the following format:

    -
    weights: [
    -  topLeftWeight,
    -  topCenterWeight,
    -  topRightWeight,
    -  middleLeftWeight,
    -  homePixelWeight,
    -  middleRightWeight,
    -  bottomLeftWeight,
    -  bottomCenterWeight,
    -  bottomRightWeight,
    -]
    -

    … where the top row is the row above the home pixel, etc

    -

    The method also makes use of the includeAlpha attribute.

    +

    Remove filter from all entity filters attribute

    +
        Object.entries(entity).forEach(([name, ent]) => {
    +
    +        let f = ent.filters;
    +        if (f && f.indexOf(myname) >= 0) removeItem(f, myname);
    +    });
    + @@ -792,25 +918,15 @@

    Filter attributes

    -

    The matrix5 method is the same as the matrix method except that its weights array should contain 25 elements, to cover all the positions (from top-left corner) in a 5x5 grid

    -

    Some common kernels include:

    -
      -
    • Identity - matrix3: [0,0,0,0,1,0,0,0,0]; matrix5: [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
    • -
    • Simple blur - matrix3: [0.1,0.1,0.1,0.1,0.2,0.1,0.1,0.1,0.1]
    • -
    • Gaussian blur - matrix3: [0,0.14,0,0.14,0.44,0.14,0,0.13,0]
    • -
    • Edge detect (example) - matrix3: [1,0,-1,0,0,0,-1,0,1]
    • -
    • Edge emboss - matrix3: [-2,-1,0,-1,1,1,0,1,2]
    • -
    • Edge enhance - matrix3: [0,0,0,-1,1,0,0,0,0]
    • -
    • Laplacian edge - matrix3: [0,-1,0,-1,4,-1,0,-1,0]
    • -
    • Laplacian edge + diagonals - matrix3: [-1,-1,-1,-1,8,-1,-1,-1,-1]
    • -
    • Laplacian of Gaussian - matrix5: [0,0,-1,0,0,0,-1,-2,-1,0,-1,-2,16,-2,-1,0,-1,-2,-1,0,0,0,-1,0,0]
    • -
    • Sharpen - matrix3: [0,-1,0,-1,5,-1,0,-1,0]
    • -
    • Unsharp mask - matrix5: [1,4,6,4,1,4,16,24,16,4,6,24,-476,24,6,4,16,24,16,4,1,4,6,4,1]
    • -
    +

    Remove filter from all group filters attribute

    -
        weights: null,
    +
        Object.entries(group).forEach(([name, grp]) => {
    +
    +        let f = grp.filters;
    +        if (f && f.indexOf(myname) >= 0) removeItem(f, myname);
    +    });
    @@ -821,14 +937,15 @@

    Filter attributes

    -

    The ranges attribute - used by the chroma method - needs to be an array of arrays with the following format:

    -
    [[minRed, minGreen, minBlue, maxRed, maxGreen, maxBlue], etc]
    -

    … multiple ranges can be defined - for instance to key out the lightest and darkest hues:

    -
    ranges: [[0, 0, 0, 80, 80, 80], [180, 180, 180, 255, 255, 255]]
    +

    Remove filter from all cell filters attribute

    -
        ranges: null,
    +
        Object.entries(cell).forEach(([name, c]) => {
    +
    +        let f = c.filters;
    +        if (f && f.indexOf(myname) >= 0) removeItem(f, myname);
    +    });
    @@ -839,23 +956,14 @@

    Filter attributes

    -

    The user-defined filter should be set as a String value of the function’s contents (the bits between the { curly braces }) on the userDefined attribute. The function can take no arguments, and can only use variables defined above (or the udVariableN attributes below). The function can also use self variables supplied by the web worker - see the worker/filter.js for more information

    +

    Remove filter from the Scrawl-canvas library

    -
        userDefined: '',
    -    udVariable0: '',
    -    udVariable1: '',
    -    udVariable2: '',
    -    udVariable3: '',
    -    udVariable4: '',
    -    udVariable5: '',
    -    udVariable6: '',
    -    udVariable7: '',
    -    udVariable8: '',
    -    udVariable9: '',
    -};
    -P.defs = mergeOver(P.defs, defaultAttributes);
    +
        this.deregister();
    +    
    +    return this;
    +};
    @@ -866,11 +974,13 @@

    Filter attributes

    -

    Packet management

    -

    No additional packet functionality required

    +

    Get, Set, deltaSet

    +
    let S = P.setters, 
    +    D = P.deltaSetters;
    + @@ -880,11 +990,34 @@

    Packet management

    -

    Clone management

    -

    No additional clone functionality required

    +

    set - Overwrites mixin/base.js function

    +
    P.set = function (items = {}) {
    +
    +    if (Object.keys(items).length) {
    +
    +        let setters = this.setters,
    +            defs = this.defs,
    +            predefined;
    +
    +        Object.entries(items).forEach(([key, value]) => {
    +
    +            if (key && key !== 'name' && value != null) {
    +
    +                predefined = setters[key];
    +
    +                if (predefined) predefined.call(this, value);
    +                else if (typeof defs[key] !== 'undefined') this[key] = value;
    +            }
    +        }, this);
    +    }
    +    if (this.method && setActionsArray[this.method]) setActionsArray[this.method](this);
    +
    +    return this;
    +};
    + @@ -894,14 +1027,33 @@

    Clone management

    -

    Kill management

    -

    Overwrites ./mixin/base.js

    +

    setDelta - Overwrites mixin/base.js function

    -
    P.kill = function () {
    +            
    P.setDelta = function (items = {}) {
     
    -    let myname = this.name;
    + if (Object.keys(items).length) { + + let setters = this.deltaSetters, + defs = this.defs, + predefined; + + Object.entries(items).forEach(([key, value]) => { + + if (key && key !== 'name' && value != null) { + + predefined = setters[key]; + + if (predefined) predefined.call(this, value); + else if (typeof defs[key] != 'undefined') this[key] = addStrings(this[key], value); + } + }, this); + } + if (this.method && setActionsArray[this.method]) setActionsArray[this.method](this); + + return this; +};
    @@ -912,16 +1064,18 @@

    Kill management

    -

    Remove filter from all entity filters attribute

    +

    Compatibility with Scrawl-canvas legacy filters functionality

    +

    The Scrawl-canvas filters code was rewritten from scratch for version 8.4.0. The new functionality introduced the concept of “line processing” - lineIn, lineMix, lineOut (analagous to SVG in, in2 and result attributes) - alongside the addition of more sophisticated image processing tools such as blend modes, compositing, more adaptable matrices, image loading, displacement mapping, etc.

    +

    The legacy system - defining filters using method String attributes - has been adapted to use the new system behind the scenes. As a result all legacy filters will continue to work as expected - with one exception: user-defined filters, which allowed the user to coder a function string to pass on to the web worker, will no longer function in Scrawl-canvas v8.4.0.

    +

    Note that there are no plans to deprecate the legacy method of defining/creating Filters. The following code will continue to work:

    +
    // __Brightness__ filter
    +scrawl.makeFilter({
    +    name: 'my-bright-filter',
    +    method: 'brightness',
    +    level: 0.5,
    -
        Object.entries(entity).forEach(([name, ent]) => {
    -
    -        let f = ent.filters;
    -        if (f && f.indexOf(myname) >= 0) removeItem(f, myname);
    -    });
    - @@ -931,16 +1085,22 @@

    Kill management

    -

    Remove filter from all group filters attribute

    +

    // Threshhold filter +}).clone({ + name: ‘my-duotone-filter’, + method: ‘threshold’, + level: 127, + lowRed: 100, + lowGreen: 0, + lowBlue: 0, + highRed: 220, + highGreen: 60, + highBlue: 60, +});

    +
    -
        Object.entries(group).forEach(([name, grp]) => {
    -
    -        let f = grp.filters;
    -        if (f && f.indexOf(myname) >= 0) removeItem(f, myname);
    -    });
    - @@ -950,15 +1110,11 @@

    Kill management

    -

    Remove filter from all cell filters attribute

    +

    setActionsArray - an object containing a large number of functions which will convert legacy factory function invocations (using method strings) into modern Filter objects (using actions arrays):

    -
        Object.entries(cell).forEach(([name, c]) => {
    -
    -        let f = c.filters;
    -        if (f && f.indexOf(myname) >= 0) removeItem(f, myname);
    -    });
    +
    const setActionsArray = {
    @@ -969,14 +1125,24 @@

    Kill management

    -

    Remove filter from the Scrawl-canvas library

    +

    alphaToChannels (new in v8.4.0) - copies the alpha channel value over to the selected value or, alternatively, sets that channels value to zero, or leaves the channel’s value unchanged. Setting the appropriate “includeChannel” flags will copy the alpha channel value to that channel; when that flag is false, setting the appropriate “excludeChannel” flag will set that channel’s value to zero.

    -
        this.deregister();
    -    
    -    return this;
    -};
    +
        alphaToChannels: function (f) {
    +        f.actions = [{
    +            action: 'alpha-to-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: (f.includeRed != null) ? f.includeRed : true,
    +            includeGreen: (f.includeGreen != null) ? f.includeGreen : true,
    +            includeBlue: (f.includeBlue != null) ? f.includeBlue : true,
    +            excludeRed: (f.excludeRed != null) ? f.excludeRed : true,
    +            excludeGreen: (f.excludeGreen != null) ? f.excludeGreen : true,
    +            excludeBlue: (f.excludeBlue != null) ? f.excludeBlue : true,
    +        }];
    +    },
    @@ -987,11 +1153,26 @@

    Kill management

    -

    Get, Set, deltaSet

    -

    No additional functionality required

    +

    areaAlpha (new in v8.4.0) - places a tile schema across the input, quarters each tile and then sets the alpha channels of the pixels in selected quarters of each tile to zero. Can be used to create horizontal or vertical bars, or chequerboard effects.

    +
        areaAlpha: function (f) {
    +        f.actions = [{
    +            action: 'area-alpha',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            tileWidth: (f.tileWidth != null) ? f.tileWidth : 1,
    +            tileHeight: (f.tileHeight != null) ? f.tileHeight : 1,
    +            offsetX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetY: (f.offsetY != null) ? f.offsetY : 0,
    +            gutterWidth: (f.gutterWidth != null) ? f.gutterWidth : 1,
    +            gutterHeight: (f.gutterHeight != null) ? f.gutterHeight : 1,
    +            areaAlphaLevels: (f.areaAlphaLevels != null) ? f.areaAlphaLevels : [255,0,0,0],
    +        }];
    +    },
    + @@ -1001,11 +1182,23 @@

    Get, Set, deltaSet

    -

    Prototype functions

    -

    No additional prototype functions defined

    +

    binary (new in v8.4.0) - set the channel to either 0 or 255, depending on whether the channel value is below or above a given level. Level values are set using the “red”, “green”, “blue” and “alpha” arguments. Setting these values to 0 disables the action for that channel

    +
        binary: function (f) {
    +        f.actions = [{
    +            action: 'binary',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: (f.red != null) ? f.red : 0,
    +            green: (f.green != null) ? f.green : 0,
    +            blue: (f.blue != null) ? f.blue : 0,
    +            alpha: (f.alpha != null) ? f.alpha : 0,
    +        }];
    +    },
    + @@ -1015,12 +1208,22 @@

    Prototype functions

    -

    Filter webworker pool

    -

    Because starting a web worker is an expensive operation, and a number of different filters may be required to render displays across a number of different <canvas> elements in a web page, Scrawl-canvas operates a pool of web workers to perform work as-and-when required.

    +

    blend (new in v8.4.0) - perform a blend operation on two images; available blend options include: ‘color-burn’, ‘color-dodge’, ‘darken’, ‘difference’, ‘exclusion’, ‘hard-light’, ‘lighten’, ‘lighter’, ‘multiply’, ‘overlay’, ‘screen’, ‘soft-light’, ‘color’, ‘hue’, ‘luminosity’, and ‘saturation’ - see W3C Compositing and Blending recommendations

    -
    const filterPool = [];
    +
        blend: function (f) {
    +        f.actions = [{
    +            action: 'blend',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            lineMix: (f.lineMix != null) ? f.lineMix : '',
    +            blend: (f.blend != null) ? f.blend : 'normal',
    +            offsetX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetY: (f.offsetY != null) ? f.offsetY : 0,
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +        }];
    +    },
    @@ -1031,16 +1234,20 @@

    Filter webworker pool

    -

    Exported function requestFilterWorker

    +

    blue - removes red and green channel color from the image

    -
    const requestFilterWorker = function () {
    -
    -    if (!filterPool.length) filterPool.push(buildFilterWorker());
    -
    -    return filterPool.shift();
    -};
    +
        blue: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            excludeRed: true,
    +            excludeGreen: true,
    +        }];
    +    },
    @@ -1051,14 +1258,27 @@

    Filter webworker pool

    -

    Exported function releaseFilterWorker - to avoid memory leaks, all requested filter workers MUST be released back to the filter pool as soon as their work has completed.

    +

    blur - blurs the image

    -
    const releaseFilterWorker = function (f) {
    -
    -    filterPool.push(f);
    -};
    +
        blur: function (f) {
    +        f.actions = [{
    +            action: 'blur',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: (f.includeRed != null) ? f.includeRed : true,
    +            includeGreen: (f.includeGreen != null) ? f.includeGreen : true,
    +            includeBlue: (f.includeBlue != null) ? f.includeBlue : true,
    +            includeAlpha: (f.includeAlpha != null) ? f.includeAlpha : false,
    +            processHorizontal: (f.processHorizontal != null) ? f.processHorizontal : true,
    +            processVertical: (f.processVertical != null) ? f.processVertical : true,
    +            radius: (f.radius != null) ? f.radius : 1,
    +            passes: (f.passes != null) ? f.passes : 1,
    +            step: (f.step != null) ? f.step : 1,
    +        }];
    +    },
    @@ -1069,21 +1289,24 @@

    Filter webworker pool

    -

    IMPORTANT!

    -
      -
    • Almost all modern browsers support import.meta.url
    • -
    • Toolchain bundlers generally DO NOT SUPPORT import.meta.url
    • -
    • The workaround is to gather all web worker code into a single file, string it, and build an url from that string. Yes, it is ugly. No, there is no viable production-ready alternative to the following.
    • -
    -

    For use in a website that does not use webpack, rollup, parcel, etc in their toolchain

    -
      -
    • Comment out all the lines marked ‘BUNDLED SITE’
    • -
    • Uncomment the lines marked ‘MODERN SITE’
    • -
    -

    By default, Scrawl-canvas is distributed in a bundler-safe form

    +

    brightness - adjusts the brightness of the image

    +
        brightness: function (f) {
    +        let level = (f.level != null) ? f.level : 1;
    +
    +        f.actions = [{
    +            action: 'modulate-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: level,
    +            green: level,
    +            blue: level,
    +        }];
    +    },
    + @@ -1093,11 +1316,22 @@

    IMPORTANT!

    -

    BUNDLED SITE

    +

    channelLevels (new in v8.4.0) - produces a posterize effect. Takes in four arguments - “red”, “green”, “blue” and “alpha” - each of which is an Array of zero or more integer Numbers (between 0 and 255). The filter works by looking at each pixel’s channel value and determines which of the corresponding Array’s Number values it is closest to; it then sets the channel value to that Number value

    -
    import { filterUrl } from '../worker/filter-stringed.js';
    +
        channelLevels: function (f) {
    +        f.actions = [{
    +            action: 'lock-channels-to-levels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: (f.red != null) ? f.red : [0],
    +            green: (f.green != null) ? f.green : [0],
    +            blue: (f.blue != null) ? f.blue : [0],
    +            alpha: (f.alpha != null) ? f.alpha : [255],
    +        }];
    +    },
    @@ -1108,11 +1342,22 @@

    IMPORTANT!

    -

    buildFilterWorker - create a new filter web worker

    +

    thiskey -

    -
    const buildFilterWorker = function () {
    +
        channels: function (f) {
    +        f.actions = [{
    +            action: 'modulate-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: (f.red != null) ? f.red : 1,
    +            green: (f.green != null) ? f.green : 1,
    +            blue: (f.blue != null) ? f.blue : 1,
    +            alpha: (f.alpha != null) ? f.alpha : 1,
    +        }];
    +    },
    @@ -1123,11 +1368,22 @@

    IMPORTANT!

    -

    MODERN SITE -let path = import.meta.url.slice(0, -(‘factory/filter.js’.length));

    +

    thiskey -

    +
        channelstep: function (f) {
    +        f.actions = [{
    +            action: 'step-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: (f.red != null) ? f.red : 1,
    +            green: (f.green != null) ? f.green : 1,
    +            blue: (f.blue != null) ? f.blue : 1,
    +        }];
    +    },
    + @@ -1137,10 +1393,22 @@

    IMPORTANT!

    -

    MODERN SITE
    let filterUrl = (window.scrawlEnvironmentOffscreenCanvasSupported) ?

    +

    thiskey (new in v8.4.0) -

    +
        channelsToAlpha: function (f) {
    +        f.actions = [{
    +            action: 'channels-to-alpha',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: (f.includeRed != null) ? f.includeRed : true,
    +            includeGreen: (f.includeGreen != null) ? f.includeGreen : true,
    +            includeBlue: (f.includeBlue != null) ? f.includeBlue : true,
    +        }];
    +    },
    + @@ -1150,11 +1418,20 @@

    IMPORTANT!

    -

    MODERN SITE - ${path}worker/filter_canvas.js :

    +

    thiskey -

    +
        chroma: function (f) {
    +        f.actions = [{
    +            action: 'chroma',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            ranges: (f.ranges != null) ? f.ranges : [],
    +        }];
    +    },
    + @@ -1164,10 +1441,24 @@

    IMPORTANT!

    -

    MODERN SITE
    ${path}worker/filter.js;

    +

    thiskey (new in v8.4.0) -

    +
        chromakey: function (f) {
    +        f.actions = [{
    +            action: 'colors-to-alpha',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: (f.red != null) ? f.red : 0,
    +            green: (f.green != null) ? f.green : 255,
    +            blue: (f.blue != null) ? f.blue : 0,
    +            transparentAt: (f.transparentAt != null) ? f.transparentAt : 0,
    +            opaqueAt: (f.opaqueAt != null) ? f.opaqueAt : 1,
    +        }];
    +    },
    + @@ -1177,12 +1468,24 @@

    IMPORTANT!

    -

    BUNDLED SITE

    +

    thiskey (new in v8.4.0) -

    -
        return new Worker(filterUrl);                                               
    -};
    +
        clampChannels: function (f) {
    +        f.actions = [{
    +            action: 'clamp-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            lowRed: (f.lowRed != null) ? f.lowRed : 0,
    +            lowGreen: (f.lowGreen != null) ? f.lowGreen : 0,
    +            lowBlue: (f.lowBlue != null) ? f.lowBlue : 0,
    +            highRed: (f.highRed != null) ? f.highRed : 255,
    +            highGreen: (f.highGreen != null) ? f.highGreen : 255,
    +            highBlue: (f.highBlue != null) ? f.highBlue : 255,
    +        }];
    +    },
    @@ -1193,29 +1496,22 @@

    IMPORTANT!

    -

    Exported function actionFilterWorker - send a task to the filter web worker, and retrieve the resulting image. This function returns a Promise.

    +

    compose (new in v8.4.0) - perform a composite operation on two images; available compose options include: ‘destination-only’, ‘destination-over’, ‘destination-in’, ‘destination-out’, ‘destination-atop’, ‘source-only’, ‘source-over’ (default), ‘source-in’, ‘source-out’, ‘source-atop’, ‘clear’, and ‘xor’ - see W3C Compositing and Blending recommendations

    -
    const actionFilterWorker = function (worker, items) {
    -
    -    return new Promise((resolve, reject) => {
    -
    -        worker.onmessage = (e) => {
    -
    -            if (e && e.data && e.data.image) resolve(e.data.image);
    -            else resolve(false);
    -        };
    -
    -        worker.onerror = (e) => {
    -
    -            console.log('error', e.lineno, e.message);
    -            resolve(false);
    -        };
    -
    -        worker.postMessage(items);
    -    });
    -};
    +
        compose: function (f) {
    +        f.actions = [{
    +            action: 'compose',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            lineMix: (f.lineMix != null) ? f.lineMix : '',
    +            compose: (f.compose != null) ? f.compose : 'source-over',
    +            offsetX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetY: (f.offsetY != null) ? f.offsetY : 0,
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +        }];
    +    },
    @@ -1226,72 +1522,948 @@

    IMPORTANT!

    -

    Factory

    -
    scrawl.makeFilter({
    -
    -    name: 'my-grayscale-filter',
    -    method: 'grayscale',
    -
    -}).clone({
    -
    -    name: 'my-sepia-filter',
    -    method: 'sepia',
    -});
    -
    -scrawl.makeFilter({
    -
    -    name: 'my-chroma-filter',
    -    method: 'chroma',
    -    ranges: [[0, 0, 0, 80, 80, 80], [180, 180, 180, 255, 255, 255]],
    -});
    -
    -scrawl.makeFilter({
    -
    -    name: 'venetian-blinds-filter',
    -    method: 'userDefined',
    +              

    cyan - removes red channel color from the image, and averages the remaining channel colors

    - level: 9, - - userDefined: ` - let i, iz, j, jz, - level = filter.level || 6, - halfLevel = level / 2, - yw, transparent, pos; - - for (i = localY, iz = localY + localHeight; i < iz; i++) { - - transparent = (i % level > halfLevel) ? true : false; - - if (transparent) { - - yw = (i * iWidth) + 3; - - for (j = localX, jz = localX + localWidth; j < jz; j ++) { - - pos = yw + (j * 4); - data[pos] = 0; - } - } - }`, -});
    + + +
        cyan: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeGreen: true,
    +            includeBlue: true,
    +            excludeRed: true,
    +        }];
    +    },
    + + + + +
  • +
    + +
    + +
    +

    displace (new in v8.4.0) - moves pixels around the image, based on the color channel values supplied by a displacement map image

    -
    const makeFilter = function (items) {
    +            
        displace: function (f) {
    +        f.actions = [{
    +            action: 'displace',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            lineMix: (f.lineMix != null) ? f.lineMix : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            channelX: (f.channelX != null) ? f.channelX : 'red',
    +            channelY: (f.channelY != null) ? f.channelY : 'green',
    +            offsetX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetY: (f.offsetY != null) ? f.offsetY : 0,
    +            scaleX: (f.scaleX != null) ? f.scaleX : 1,
    +            scaleY: (f.scaleY != null) ? f.scaleY : 1,
    +            transparentEdges: (f.transparentEdges != null) ? f.transparentEdges : false,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    edgeDetect (new in v8.4.0) - applies a preset 3x3 edge-detect matrix to the image

    - return new Filter(items); -}; +
    + +
        edgeDetect: function (f) {
    +        f.actions = [{
    +            action: 'matrix',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            width: 3,
    +            height: 3,
    +            offsetX: 1,
    +            offsetY: 1,
    +            includeRed: true,
    +            includeGreen: true,
    +            includeBlue: true,
    +            includeAlpha: false,
    +            weights: [0,1,0,1,-4,1,0,1,0],
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    emboss (new in v8.4.0) - outputs a black-gray-red emboss effect

    -constructors.Filter = Filter;
    + + +
        emboss: function (f) {
    +        const actions = [];
    +        if (f.useNaturalGrayscale) {
    +            actions.push({
    +                action: 'grayscale',
    +                lineIn: (f.lineIn != null) ? f.lineIn : '',
    +                lineOut: 'emboss-work',
    +            });
    +        }
    +        else {
    +            actions.push({
    +                action: 'average-channels',
    +                lineIn: (f.lineIn != null) ? f.lineIn : '',
    +                lineOut: 'emboss-work',
    +                includeRed: true,
    +                includeGreen: true,
    +                includeBlue: true,
    +            });
    +        }
    +        if (f.clamp) {
    +            actions.push({
    +                action: 'clamp-channels',
    +                lineIn: 'emboss-work',
    +                lineOut: 'emboss-work',
    +                lowRed: 0 + f.clamp, 
    +                lowGreen: 0 + f.clamp, 
    +                lowBlue: 0 + f.clamp, 
    +                highRed: 255 - f.clamp, 
    +                highGreen: 255 - f.clamp, 
    +                highBlue: 255 - f.clamp,
    +            });
    +        }
    +        if (f.smoothing) {
    +            actions.push({
    +                action: 'blur',
    +                lineIn: 'emboss-work',
    +                lineOut: 'emboss-work',
    +                radius: f.smoothing,
    +                passes: 2,
    +            });
    +        }
    +        actions.push({
    +            action: 'emboss',
    +            lineIn: 'emboss-work',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            angle: (f.angle != null) ? f.angle : 0,
    +            strength: (f.strength != null) ? f.strength : 1,
    +            tolerance: (f.tolerance != null) ? f.tolerance : 0,
    +            keepOnlyChangedAreas: (f.keepOnlyChangedAreas != null) ? f.keepOnlyChangedAreas : false,
    +            postProcessResults: (f.postProcessResults != null) ? f.postProcessResults : true,
    +        });
    +        f.actions = actions;
    +    },
  • -
  • +
  • - + +
    +

    flood (new in v8.4.0) - creates a uniform sheet of the required color, which can then be used by other filter actions

    + +
    + +
        flood: function (f) {
    +        f.actions = [{
    +            action: 'flood',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: (f.red != null) ? f.red : 0,
    +            green: (f.green != null) ? f.green : 0,
    +            blue: (f.blue != null) ? f.blue : 0,
    +            alpha: (f.alpha != null) ? f.alpha : 255,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    gray (new in v8.4.0) - averages the three color channel colors

    + +
    + +
        gray: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: true,
    +            includeGreen: true,
    +            includeBlue: true,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    grayscale - produces a more realistic black-and-white photograph effect

    + +
    + +
        grayscale: function (f) {
    +        f.actions = [{
    +            action: 'grayscale',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    green - removes red and blue channel color from the image

    + +
    + +
        green: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            excludeRed: true,
    +            excludeBlue: true,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    image (new in v8.4.0) - load an image into the web worker, where it can then be used by other filter actions - useful for effects such as watermarking an image

    + +
    + +
        image: function (f) {
    +
    +        f.actions = [{
    +            action: 'process-image',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            asset: (f.asset != null) ? f.asset : '',
    +            width: (f.width != null) ? f.width : 1,
    +            height: (f.height != null) ? f.height : 1,
    +            copyWidth: (f.copyWidth != null) ? f.copyWidth : 1,
    +            copyHeight: (f.copyHeight != null) ? f.copyHeight : 1,
    +            copyX: (f.copyX != null) ? f.copyX : 0,
    +            copyY: (f.copyY != null) ? f.copyY : 0,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    invert - inverts the colors in the image, producing an effect similar to a photograph negative

    + +
    + +
        invert: function (f) {
    +        f.actions = [{
    +            action: 'invert-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: true,
    +            includeGreen: true,
    +            includeBlue: true,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    magenta - removes green channel color from the image, and averages the remaining channel colors

    + +
    + +
        magenta: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: true,
    +            includeBlue: true,
    +            excludeGreen: true,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    matrix - applies a 3x3 convolution matrix, kernel or mask operation to the image

    + +
    + +
        matrix: function (f) {
    +        f.actions = [{
    +            action: 'matrix',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            width: 3,
    +            height: 3,
    +            offsetX: 1,
    +            offsetY: 1,
    +            includeRed: (f.includeRed != null) ? f.includeRed : true,
    +            includeGreen: (f.includeGreen != null) ? f.includeGreen : true,
    +            includeBlue: (f.includeBlue != null) ? f.includeBlue : true,
    +            includeAlpha: (f.includeAlpha != null) ? f.includeAlpha : false,
    +            weights: (f.weights != null) ? f.weights : [0,0,0,0,1,0,0,0,0],
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    matrix5 - applies a 5x5 convolution matrix, kernel or mask operation to the image

    + +
    + +
        matrix5: function (f) {
    +        f.actions = [{
    +            action: 'matrix',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            width: 5,
    +            height: 5,
    +            offsetX: 2,
    +            offsetY: 2,
    +            includeRed: (f.includeRed != null) ? f.includeRed : true,
    +            includeGreen: (f.includeGreen != null) ? f.includeGreen : true,
    +            includeBlue: (f.includeBlue != null) ? f.includeBlue : true,
    +            includeAlpha: (f.includeAlpha != null) ? f.includeAlpha : false,
    +            weights: (f.weights != null) ? f.weights : [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0],
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    notblue - zeroes the blue channel values (not the same effect as the yellow filter)

    + +
    + +
        notblue: function (f) {
    +        f.actions = [{
    +            action: 'set-channel-to-level',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeBlue: true,
    +            level: 0,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    notgreen - zeroes the green channel values (not the same effect as the magenta filter)

    + +
    + +
        notgreen: function (f) {
    +        f.actions = [{
    +            action: 'set-channel-to-level',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeGreen: true,
    +            level: 0,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    notred - zeroes the red channel values (not the same effect as the cyan filter)

    + +
    + +
        notred: function (f) {
    +        f.actions = [{
    +            action: 'set-channel-to-level',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: true,
    +            level: 0,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    offset (new in v8.4.0) - moves the image in its entirety by the given offset

    + +
    + +
        offset: function (f) {
    +        f.actions = [{
    +            action: 'offset',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            offsetRedX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetRedY: (f.offsetY != null) ? f.offsetY : 0,
    +            offsetGreenX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetGreenY: (f.offsetY != null) ? f.offsetY : 0,
    +            offsetBlueX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetBlueY: (f.offsetY != null) ? f.offsetY : 0,
    +            offsetAlphaX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetAlphaY: (f.offsetY != null) ? f.offsetY : 0,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    offsetChannels (new in v8.4.0) - moves each channel by an offset set for that channel. Can create a crude stereoscopic output

    + +
    + +
        offsetChannels: function (f) {
    +        f.actions = [{
    +            action: 'offset',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            offsetRedX: (f.offsetRedX != null) ? f.offsetRedX : 0,
    +            offsetRedY: (f.offsetRedY != null) ? f.offsetRedY : 0,
    +            offsetGreenX: (f.offsetGreenX != null) ? f.offsetGreenX : 0,
    +            offsetGreenY: (f.offsetGreenY != null) ? f.offsetGreenY : 0,
    +            offsetBlueX: (f.offsetBlueX != null) ? f.offsetBlueX : 0,
    +            offsetBlueY: (f.offsetBlueY != null) ? f.offsetBlueY : 0,
    +            offsetAlphaX: (f.offsetAlphaX != null) ? f.offsetAlphaX : 0,
    +            offsetAlphaY: (f.offsetAlphaY != null) ? f.offsetAlphaY : 0,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    pixelate - averages the colors in a block to produce a series of obscuring tiles

    + +
    + +
        pixelate: function (f) {
    +        f.actions = [{
    +            action: 'pixelate',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            tileWidth: (f.tileWidth != null) ? f.tileWidth : 1,
    +            tileHeight: (f.tileHeight != null) ? f.tileHeight : 1,
    +            offsetX: (f.offsetX != null) ? f.offsetX : 0,
    +            offsetY: (f.offsetY != null) ? f.offsetY : 0,
    +            includeRed: (f.includeRed != null) ? f.includeRed : true,
    +            includeGreen: (f.includeGreen != null) ? f.includeGreen : true,
    +            includeBlue: (f.includeBlue != null) ? f.includeBlue : true,
    +            includeAlpha: (f.includeAlpha != null) ? f.includeAlpha : false,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    red - removes blue and green channel color from the image

    + +
    + +
        red: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            excludeGreen: true,
    +            excludeBlue: true,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    saturation - alters the saturation level of the image

    + +
    + +
        saturation: function (f) {
    +        let level = (f.level != null) ? f.level : 1;
    +
    +        f.actions = [{
    +            action: 'modulate-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            red: level,
    +            green: level,
    +            blue: level,
    +            saturation: true,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    sepia - recalculates the values of each color channel (a tint action) to create a more ‘antique’ version of the image

    + +
    + +
        sepia: function (f) {
    +        f.actions = [{
    +            action: 'tint-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            redInRed: 0.393,
    +            redInGreen: 0.349,
    +            redInBlue: 0.272,
    +            greenInRed: 0.769,
    +            greenInGreen: 0.686,
    +            greenInBlue: 0.534,
    +            blueInRed: 0.189,
    +            blueInGreen: 0.168,
    +            blueInBlue: 0.131,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    sharpen (new in v8.4.0) - applies a preset 3x3 sharpen matrix to the image

    + +
    + +
        sharpen: function (f) {
    +        f.actions = [{
    +            action: 'matrix',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            width: 3,
    +            height: 3,
    +            offsetX: 1,
    +            offsetY: 1,
    +            includeRed: true,
    +            includeGreen: true,
    +            includeBlue: true,
    +            includeAlpha: false,
    +            weights: [0,-1,0,-1,5,-1,0,-1,0],
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    threshold - creates a duotone effect - grayscales the input then, for each pixel, checks the color channel values against a “level” argument: pixels with channel values above the level value are assigned to the ‘high’ color; otherwise they are updated to the ‘low’ color.

    + +
    + +
        threshold: function (f) {
    +        let lowRed = (f.lowRed != null) ? f.lowRed : 0,
    +            lowGreen = (f.lowGreen != null) ? f.lowGreen : 0,
    +            lowBlue = (f.lowBlue != null) ? f.lowBlue : 0,
    +            highRed = (f.highRed != null) ? f.highRed : 255,
    +            highGreen = (f.highGreen != null) ? f.highGreen : 255,
    +            highBlue = (f.highBlue != null) ? f.highBlue : 255;
    +
    +        let low = (f.low != null) ? f.low : [lowRed, lowGreen, lowBlue],
    +            high = (f.high != null) ? f.high : [highRed, highGreen, highBlue];
    +
    +        f.actions = [{
    +            action: 'threshold',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            level: (f.level != null) ? f.level : 128,
    +            low: low,
    +            high: high,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    tint - has similarities to the SVG <feColorMatrix> filter element, but excludes the alpha channel from calculations. Rather than set a matrix, we set nine arguments to determine how the value of each color channel in a pixel will affect both itself and its fellow color channels.

    + +
    + +
        tint: function (f) {
    +        f.actions = [{
    +            action: 'tint-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            redInRed: (f.redInRed != null) ? f.redInRed : 1,
    +            redInGreen: (f.redInGreen != null) ? f.redInGreen : 0,
    +            redInBlue: (f.redInBlue != null) ? f.redInBlue : 0,
    +            greenInRed: (f.greenInRed != null) ? f.greenInRed : 0,
    +            greenInGreen: (f.greenInGreen != null) ? f.greenInGreen : 1,
    +            greenInBlue: (f.greenInBlue != null) ? f.greenInBlue : 0,
    +            blueInRed: (f.blueInRed != null) ? f.blueInRed : 0,
    +            blueInGreen: (f.blueInGreen != null) ? f.blueInGreen : 0,
    +            blueInBlue: (f.blueInBlue != null) ? f.blueInBlue : 1,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    userDefined - DEPRECATED - this filter method no longer has any effect, returning an unchanged image

    + +
    + +
        userDefined: function (f) {
    +        f.actions = [{
    +            action: 'user-defined-legacy',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +        }];
    +    },
    + +
  • + + +
  • +
    + +
    + +
    +

    yellow - removes blue channel color from the image, and averages the remaining channel colors

    + +
    + +
        yellow: function (f) {
    +        f.actions = [{
    +            action: 'average-channels',
    +            lineIn: (f.lineIn != null) ? f.lineIn : '',
    +            lineOut: (f.lineOut != null) ? f.lineOut : '',
    +            opacity: (f.opacity != null) ? f.opacity : 1,
    +            includeRed: true,
    +            includeGreen: true,
    +            excludeBlue: true,
    +        }];
    +    },
    +};
    + +
  • + + +
  • +
    + +
    + +
    +

    Prototype functions

    +

    No additional prototype functions defined

    + +
    + +
  • + + +
  • +
    + +
    + +
    +

    Filter webworker pool

    +

    Because starting a web worker is an expensive operation, and a number of different filters may be required to render displays across a number of different <canvas> elements in a web page, Scrawl-canvas operates a pool of web workers to perform work as-and-when required.

    +
      +
    • These workers (generally there’s only one) are not exposed to developers using the scrawl object, thus only get called internally
    • +
    + +
    + +
  • + + +
  • +
    + +
    + +
    +

    START PRODUCTION CODE

    + +
    + +
    const filterPool = [];
    +import { filterUrl } from '../worker/filter-string.js';
    +
    +const requestFilterWorker = function () {
    +    if (!filterPool.length) filterPool.push(new Worker(filterUrl));
    +    return filterPool.shift();
    +};
    +
    +const releaseFilterWorker = function (f) {
    +    filterPool.push(f);
    +};
    +
    +const actionFilterWorker = function (worker, items) {
    +    return new Promise((resolve, reject) => {
    +        worker.onmessage = (e) => {
    +            if (e && e.data && e.data.image) resolve(e.data.image);
    +            else resolve(false);
    +        };
    +        worker.onerror = (e) => {
    +            console.log('error', e.lineno, e.message);
    +            resolve(false);
    +        };
    +        worker.postMessage(items);
    +    });
    +};
    + +
  • + + +
  • +
    + +
    + +
    +

    END PRODUCTION CODE

    + +
    + +
  • + + +
  • +
    + +
    + +
    +

    START DEV CODE

    + +
    + +
    /*
    +const filterPool = [];
    +
    +const requestFilterWorker = function () {
    +    if (!filterPool.length) filterPool.push(buildFilterWorker());
    +    return filterPool.shift();
    +};
    +
    +const buildFilterWorker = function () {
    +    let path = import.meta.url.slice(0, -('factory/filter.js'.length)); 
    +    let filterUrl = `${path}worker/filter.js`;
    +    return new Worker(filterUrl);
    +};
    +
    +const releaseFilterWorker = function (f) {
    +    filterPool.push(f);
    +};
    +
    +const actionFilterWorker = function (worker, items) {
    +    return new Promise((resolve, reject) => {
    +        worker.onmessage = (e) => {
    +            if (e && e.data && e.data.image) resolve(e.data.image);
    +            else resolve(false);
    +        };
    +        worker.onerror = (e) => {
    +            console.log('error', e.lineno, e.message);
    +            resolve(false);
    +        };
    +        worker.postMessage(items);
    +    });
    +};
    +*/
    + +
  • + + +
  • +
    + +
    + +
    +

    END DEV CODE

    + +
    + +
  • + + +
  • +
    + +
    + +
    +

    Factory

    + +
    + +
    const makeFilter = function (items) {
    +
    +    return new Filter(items);
    +};
    +
    +constructors.Filter = Filter;
    + +
  • + + +
  • +
    + +
    +

    Exports

    diff --git a/docs/source/factory/fontAttributes.html b/docs/source/factory/fontAttributes.html index bd894aee1..6c1ffd2e7 100644 --- a/docs/source/factory/fontAttributes.html +++ b/docs/source/factory/fontAttributes.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
  • diff --git a/docs/source/factory/gradient.html b/docs/source/factory/gradient.html index bbac55995..cc36ec9c8 100644 --- a/docs/source/factory/gradient.html +++ b/docs/source/factory/gradient.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/grid.html b/docs/source/factory/grid.html index 0d8b0adf2..a844a79af 100644 --- a/docs/source/factory/grid.html +++ b/docs/source/factory/grid.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/group.html b/docs/source/factory/group.html index d07c1e02a..adbf724e9 100644 --- a/docs/source/factory/group.html +++ b/docs/source/factory/group.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -496,7 +501,7 @@

    Imports

    -
    import { constructors, cell, artefact, group, entity } from '../core/library.js';
    +            
    import { constructors, cell, artefact, group, entity, asset } from '../core/library.js';
     import { mergeOver, pushUnique, removeItem } from '../core/utilities.js';
     import { scrawlCanvasHold } from '../core/document.js';
     
    @@ -1571,7 +1576,22 @@ 

    Prototype functions

            filterEngine.setTransform(1, 0, 0, 1, 0, 0);
     
             let myimage = filterEngine.getImageData(0, 0, filterElement.width, filterElement.height),
    -            worker = requestFilterWorker();
    +            worker = requestFilterWorker();
    + + + + +
  • +
    + +
    + +
    +

    NEED TO POPULATE IMAGE FILTER ACTION OBJECTS WITH THEIR ASSET’S IMAGEDATA AT THIS POINT

    + +
    + +
            self.preprocessFilters(self.currentFilters);
     
             actionFilterWorker(worker, {
                 image: myimage,
    @@ -1582,11 +1602,11 @@ 

    Prototype functions

  • -
  • +
  • - +

    Copy the filter worker’s output back onto the filterHost canvas

    @@ -1602,11 +1622,11 @@

    Prototype functions

  • -
  • +
  • - +

    On success, cleanup and resolve

    @@ -1628,11 +1648,11 @@

    Prototype functions

  • -
  • +
  • - +

    stashAction - internal function which creates an ImageAsset object (and, as determined by the setting of the Group’s stashOutputAsAsset flag, an <img> element which gets attached to the DOM document in the scrawlCanvasHold hidden <div> element) from the Group’s entity’s output.

    NOTE: the stashOutput and stashOutputAsAsset flags are not Group object attributes. They are set on the group as a result of invoking the scrawl.createImageFromGroup function, and will be set to false as soon as the Group.stashAction function runs (in other words, stashing a Group’s output is a one-off operation).

    @@ -1695,11 +1715,11 @@

    Prototype functions

  • -
  • +
  • - +

    getCellCoverage - internal function which calculates the cumulative coverage of the Group’s artefacts. Used as part of the stashAction functionality

    @@ -1739,11 +1759,11 @@

    Prototype functions

  • -
  • +
  • - +

    Artefact management

    Artefacts should be added to, and removed from, the Group object using the functions detailed below.

    @@ -1754,11 +1774,11 @@

    Artefact management

  • -
  • +
  • - +

    addArtefacts - an artefact can belong to more than one Group

    @@ -1784,11 +1804,11 @@

    Artefact management

  • -
  • +
  • - +

    removeArtefacts - remove an artefact from this Group

    @@ -1812,11 +1832,11 @@

    Artefact management

  • -
  • +
  • - +

    moveArtefactsIntoGroup - remove the artefact from their current Group (which is generally their Display cycle group, as set in their group and/or host attribute) and add them to this Group

    @@ -1855,11 +1875,11 @@

    Artefact management

  • -
  • +
  • - +

    clearArtefacts - remove all artefacts from this Group

    @@ -1876,11 +1896,11 @@

    Artefact management

  • -
  • +
  • - +

    updateArtefacts - passes the items argument object through to each of the Group’s artefact’s setDelta function

    @@ -1895,11 +1915,11 @@

    Artefact management

  • -
  • +
  • - +

    setArtefacts - passes the items argument object through to each of the Group’s artefact’s set function

    @@ -1914,11 +1934,11 @@

    Artefact management

  • -
  • +
  • - +

    updateByDelta - passes the items argument object through to each of the Group’s artefact’s updateByDelta function

    @@ -1933,11 +1953,11 @@

    Artefact management

  • -
  • +
  • - +

    reverseByDelta - passes the items argument object through to each of the Group’s artefact’s reverseByDelta function

    @@ -1952,11 +1972,11 @@

    Artefact management

  • -
  • +
  • - +

    addArtefactClasses - specifically for non-entity artefacts. Passes the items argument String through to each of the Group’s artefact’s addClasses function

    @@ -1971,11 +1991,11 @@

    Artefact management

  • -
  • +
  • - +

    removeArtefactClasses - specifically for non-entity artefacts. Passes the items argument String through to each of the Group’s artefact’s removeClasses function

    @@ -1990,11 +2010,11 @@

    Artefact management

  • -
  • +
  • - +

    cascadeAction - internal helper function for the above artefact manipulation functionality

    @@ -2014,11 +2034,11 @@

    Artefact management

  • -
  • +
  • - +

    setDeltaValues - passes the items argument object through to each of the Group’s artefact’s setDeltaValues function

    @@ -2034,11 +2054,11 @@

    Artefact management

  • -
  • +
  • - +

    We can add and remove filters to each of the Group’s entity artefacts using the following functions. The argument for each function can be one or more Filter name-Strings, or the Filter objects themselves, separated by commas.

    @@ -2047,11 +2067,11 @@

    Artefact management

  • -
  • +
  • - +

    addFiltersToEntitys

    @@ -2071,11 +2091,11 @@

    Artefact management

  • -
  • +
  • - +

    removeFiltersFromEntitys

    @@ -2095,11 +2115,11 @@

    Artefact management

  • -
  • +
  • - +

    clearFiltersFromEntitys - clears all filters from all the Group’s entity artefacts.

    @@ -2119,11 +2139,11 @@

    Artefact management

  • -
  • +
  • - +

    Collision functionality

    The getArtefactAt function checks to see if any of the Group object’s artefacts are located at the supplied coordinates in the argument object.

    @@ -2169,11 +2189,11 @@

    Collision functionality

  • -
  • +
  • - +

    The getAllArtefactsAt function returns an array of hit reports from all of the Group object’s artefacts located at the supplied coordinates in the argument object. The artefact with the highest order attribute value will be returned first in the response array.

    The function will always return an array of hit reports, or an empty array if no hits are reported.

    @@ -2217,11 +2237,11 @@

    Collision functionality

  • -
  • +
  • - +

    The getArtefactCollisions function returns an array of hit reports from all of the Group object’s artefacts which are currently in collision with the sensor coordinates supplied by the artefact argument. The function will always return an array of hit reports, or an empty array if no hits are reported.

    The argument must be either the artefact object itself, or its String name.

    @@ -2233,11 +2253,11 @@

    Collision functionality

  • -
  • +
  • - +

    return empty array if no argument, or the argument is not an artefact, or the Group is empty

    @@ -2250,11 +2270,11 @@

    Collision functionality

  • -
  • +
  • - +

    Return empty array if the artefact argument has not been setup to check for collisions

    @@ -2269,11 +2289,11 @@

    Collision functionality

  • -
  • +
  • - +

    Get entity collision data

    @@ -2284,11 +2304,11 @@

    Collision functionality

  • -
  • +
  • - +

    Winnow step 1: don’t check the entity itself, or any missing or malformed artefacts in the Group

    @@ -2305,11 +2325,11 @@

    Collision functionality

  • -
  • +
  • - +

    Winnow step 2: exclude all targets outside the artefact/target collision radius

    @@ -2341,11 +2361,11 @@

    Collision functionality

  • -
  • +
  • - +

    Winnow step 3: perform hit checks on remaining targets - this will not retrieve targets entirely inside the artefact

    @@ -2363,11 +2383,11 @@

    Collision functionality

  • -
  • +
  • - +

    return filtered results

    @@ -2381,11 +2401,11 @@

    Collision functionality

  • -
  • +
  • - +

    Factory

    let faces = scrawl.makeGroup({
    @@ -2409,11 +2429,11 @@ 

    Factory

  • -
  • +
  • - +

    Exports

    diff --git a/docs/source/factory/imageAsset.html b/docs/source/factory/imageAsset.html index db02be19b..53ec6ed08 100644 --- a/docs/source/factory/imageAsset.html +++ b/docs/source/factory/imageAsset.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
  • diff --git a/docs/source/factory/line.html b/docs/source/factory/line.html index e5ccc00dc..21d294d0f 100644 --- a/docs/source/factory/line.html +++ b/docs/source/factory/line.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
    diff --git a/docs/source/factory/loom.html b/docs/source/factory/loom.html index f4a0e1d2f..edf491239 100644 --- a/docs/source/factory/loom.html +++ b/docs/source/factory/loom.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
    @@ -451,7 +456,7 @@

    Loom factory

    A Loom offers functionality to render an image onto a <canvas> element, where the image is not a rectangle - it can have curved borders. It can also offer the illusion of flat 3D images in the canvas, giving them perspective.

    -

    Loom entitys are composite entitys - an wentity that relies on other entitys for its basic functionality.

    +

    Loom entitys are composite entitys - an entity that relies on other entitys for its basic functionality.

    • Every Loom object requires two (or one) path-enabled Shape entitys to act as its left and right tracks.
    • A Loom entity also requires a Picture entity to act as its image source.
    • diff --git a/docs/source/factory/mesh.html b/docs/source/factory/mesh.html new file mode 100644 index 000000000..d56e86129 --- /dev/null +++ b/docs/source/factory/mesh.html @@ -0,0 +1,2568 @@ + + + + + Mesh factory + + + + + +
      +
      + + + +
        + + + +
      • +
        + +
        + +
        +

        Mesh factory

        +

        The Scrawl-canvas Mesh entity applies a Net particle system to an image, allowing the image to be deformed by dragging particles around the canvas. This is a similar concept to Photoshop warp meshes and (more distantly) the Gimp’s cage tool.

        +

        Mesh entitys are composite entitys - an entity that relies on other entitys for its basic functionality.

        +
          +
        • Every Mesh object requires a Net entity create the grid that it uses for transforming its image.
        • +
        • A Mesh entity also requires a Picture entity to act as its image source.
        • +
        • Meshes can (in theory) use CSS color Strings for their strokeStyle values, alongside Gradient, RadialGradient, Color and Pattern objects.
        • +
        • They can (in theory) use Anchor objects for user navigation.
        • +
        • They can (in theory) be rendered to the canvas by including them in a Cell object’s Group.
        • +
        • They can (in theory) be animated directly, or using delta animation, or act as the target for Tween animations.
        • +
        • Meshes can (in theory) be cloned, and killed.
        • +
        +

        Note that this is experimental technology!

        +
          +
        • The Mesh entity code base shares many similarities to that of the Loom entity; some of the code has been copied over from that file directly.
        • +
        • Current code does not use position or entity mixins, meaning much of the code here has been copied over from those mixins (DRY issue).
        • +
        • TODO: packet management, clone and kill functionality not yet tested. Much of the other functionality also lacks tests.
        • +
        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Demos:

        + + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Imports

        + +
        + +
        import { constructors, artefact } from '../core/library.js';
        +import { currentGroup } from '../core/document.js';
        +import { mergeOver, mergeDiscard, pushUnique, λnull, λthis, xta } from '../core/utilities.js';
        +
        +import { makeState } from '../factory/state.js';
        +import { requestCell, releaseCell } from '../factory/cell.js';
        +
        +import baseMix from '../mixin/base.js';
        +import anchorMix from '../mixin/anchor.js';
        + +
      • + + +
      • +
        + +
        + +
        +

        Mesh constructor

        + +
        + +
        const Mesh = function (items = {}) {
        +
        +    this.makeName(items.name);
        +    this.register();
        +
        +    this.set(this.defs);
        +
        +    this.state = makeState();
        +
        +    if (!items.group) items.group = currentGroup;
        +
        +    this.onEnter = λnull;
        +    this.onLeave = λnull;
        +    this.onDown = λnull;
        +    this.onUp = λnull;
        +
        +    this.delta = {};
        +
        +    this.set(items);
        +
        +    this.fromPathData = [];
        +    this.toPathData = [];
        +
        +    this.watchFromPath = null;
        +    this.watchIndex = -1;
        +    this.engineInstructions = [];
        +    this.engineDeltaLengths = [];
        +
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Mesh prototype

        + +
        + +
        let P = Mesh.prototype = Object.create(Object.prototype);
        +P.type = 'Mesh';
        +P.lib = 'entity';
        +P.isArtefact = true;
        +P.isAsset = false;
        + +
      • + + +
      • +
        + +
        + +
        +

        Mixins

        + +
        + +
        P = baseMix(P);
        +P = anchorMix(P);
        + +
      • + + +
      • +
        + +
        + +
        +

        Mesh attributes

        + + +
        + +
        let defaultAttributes = {
        + +
      • + + +
      • +
        + +
        + +
        +

        net - A Mesh entity requires a Net entity, set to generate a weak or strong net, to supply Particle objects to act as its mapping coordinates.

        + +
        + +
            net: null,
        + +
      • + + +
      • +
        + +
        + +
        +

        isHorizontalCopy - Boolean flag - Copying the source image to the output happens, by default, by rows - which effectively means the struts are on the left-hand and right-hand edges of the image.

        +
          +
        • To change this to columns (which sets the struts to the top and bottom edges of the image) set the attribute to false
        • +
        + +
        + +
            isHorizontalCopy: true,
        + +
      • + + +
      • +
        + +
        + +
        +

        source - The Picture entity source for this Mesh. For initialization and/or set, we can supply either the Picture entity itself, or its name-String value.

        +
          +
        • The content image displayed by the Mesh entity are set in the Picture entity, not the Mesh, and can be any artefact supported by the Picture (image, video, sprite, or a Cell artefact).
        • +
        • Note that any filters should be applied to the Picture entity; Mesh entitys do not support filter functionality but will apply a Picture’s filters to the source image as-and-where appropriate.
        • +
        + +
        + +
            source: null,
        + +
      • + + +
      • +
        + +
        + +
        +

        sourceIsVideoOrSprite - Boolean flag - If the Picture entity is hosting a video or sprite asset, we need to update the input on every frame.

        +
          +
        • It’s easier to tell the Mesh entity to do this using a flag, rather than get the Picture entity to update all its Mesh subscribers on every display cycle.
        • +
        • For Pictures using image assets the flag must be set to false (the default); setting the flag to true will significantly degrade display and animation performance.
        • +
        + +
        + +
            sourceIsVideoOrSprite: false,
        + +
      • + + +
      • +
        + +
        + +
        +

        The current Frame drawing process often leads to moiré interference patterns appearing in the resulting image. Scrawl-canvas uses a resize trick to blur out these patterns.

        +

        interferenceLoops (positive integer Number), interferenceFactor (positive float Number) - The interferenceFactor attribute sets the resizing ratio; while he interferenceLoops attribute sets the number of times the image gets resized.

        +
          +
        • If inteference patterns still appear in the final image, tweak these values to see if a better output can be achieved.
        • +
        + +
        + +
            interferenceLoops: 2,
        +    interferenceFactor: 1.03,
        + +
      • + + +
      • +
        + +
        + +
        +

        The Mesh entity does not use the position or entity mixins (used by most other entitys) as its positioning is entirely dependent on the position, rotation, scale etc of its constituent Shape path entity struts.

        +

        It does, however, use these attributes (alongside their setters and getters): visibility, order, delta, host, group, anchor, collides.

        + +
        + +
            visibility: true,
        +    order: 0,
        +    delta: null,
        +    host: null,
        +    group: null,
        +    anchor: null,
        + +
      • + + +
      • +
        + +
        + +
        +

        noCanvasEngineUpdates - Boolean flag - Canvas engine updates are required for the Mesh’s border - strokeStyle and line styling; if a Mesh is to be drawn without a border, then setting this flag to true may help improve rendering efficiency.

        + +
        + +
            noCanvasEngineUpdates: false,
        + +
      • + + +
      • +
        + +
        + +
        +

        noDeltaUpdates - Boolean flag - Mesh entitys support delta animation - achieved by updating the ...path attributes by appropriate (and small!) values. If the Mesh is not going to be animated by delta values, setting the flag to true may help improve rendering efficiency.

        + +
        + +
            noDeltaUpdates: false,
        + +
      • + + +
      • +
        + +
        + +
        +

        onEnter, onLeave, onDown, onUp - Mesh entitys support collision detection, reporting a hit when a test coordinate falls within the Mesh’s output image. As a result, Looms can also accept and act on the four on functions - see entity event listener functions for more details.

        + +
        + +
            onEnter: null,
        +    onLeave: null,
        +    onDown: null,
        +    onUp: null,
        + +
      • + + +
      • +
        + +
        + +
        +

        noUserInteraction - Boolean flag - To switch off collision detection for a Mesh entity - which might help improve rendering efficiency - set the flag to true.

        + +
        + +
            noUserInteraction: false,
        + +
      • + + +
      • +
        + +
        + +
        +

        Anchor objects can be assigned to Mesh entitys, meaning the following attributes are supported:

        +
          +
        • anchorDescription
        • +
        • anchorType
        • +
        • anchorTarget
        • +
        • anchorRel
        • +
        • anchorReferrerPolicy
        • +
        • anchorPing
        • +
        • anchorHreflang
        • +
        • anchorHref
        • +
        • anchorDownload
        • +
        +

        And the anchor attributes can also be supplied as a key:value object assigned to the anchor attribute:

        +
            anchor: {
        +        description
        +        download
        +        href
        +        hreflang
        +        ping
        +        referrerpolicy
        +        rel:
        +        target:
        +        anchorType
        +        clickAction: 
        +    }
        +

        method - All normal Scrawl-canvas entity stamping methods are supported.

        + +
        + +
            method: 'fill',
        + +
      • + + +
      • +
        + +
        + +
        +

        Mesh entitys support appropriate styling attributes, mainly for their stroke styles (used with the draw, drawAndFill, fillAndDraw, drawThenFill and fillThenDraw stamping methods).

        +
          +
        • These state attributes are stored directly on the object, rather than in a separate State object.
        • +
        +

        The following attributes are thus supported:

        +

        Alpha and Composite operations will be applied to both the Mesh entity’s border (the Shape entitys, with connecting lines between their paths’ start and end points) and fill (the image displayed between the Mesh’s struts)

        +
          +
        • globalAlpha
        • +
        • globalCompositeOperation
        • +
        +

        All line attributes are supported

        +
          +
        • lineWidth
        • +
        • lineCap
        • +
        • lineJoin
        • +
        • lineDash
        • +
        • lineDashOffset
        • +
        • miterLimit
        • +
        +

        The Mesh entity’s strokeStyle can be any style supported by Scrawl-canvas - color strings, gradient objects, and pattern objects

        +
          +
        • strokeStyle
        • +
        +

        The shadow attributes will only be applied to the stroke (border), not to the Mesh’s fill (image)

        +
          +
        • shadowOffsetX
        • +
        • shadowOffsetY
        • +
        • shadowBlur
        • +
        • shadowColor
        • +
        + +
        + +
        };
        +P.defs = mergeOver(P.defs, defaultAttributes);
        + +
      • + + +
      • +
        + +
        + +
        +

        Packet management

        + +
        + +
        P.packetExclusions = pushUnique(P.packetExclusions, ['pathObject', 'state']);
        +P.packetExclusionsByRegex = pushUnique(P.packetExclusionsByRegex, ['^(local|dirty|current)', 'Subscriber$']);
        +P.packetCoordinates = pushUnique(P.packetCoordinates, []);
        +P.packetObjects = pushUnique(P.packetObjects, ['group', 'net', 'source']);
        +P.packetFunctions = pushUnique(P.packetFunctions, ['onEnter', 'onLeave', 'onDown', 'onUp']);
        +
        +P.processPacketOut = function (key, value, includes) {
        +
        +    let result = true;
        +
        +    if(includes.indexOf(key) < 0 && value === this.defs[key]) result = false;
        +
        +    return result;
        +};
        +
        +P.finalizePacketOut = function (copy, items) {
        +
        +    let stateCopy = JSON.parse(this.state.saveAsPacket(items))[3];
        +    copy = mergeOver(copy, stateCopy);
        +
        +    copy = this.handlePacketAnchor(copy, items);
        +
        +    return copy;
        +};
        +
        +P.handlePacketAnchor = function (copy, items) {
        +
        +    if (this.anchor) {
        +
        +        let a = JSON.parse(this.anchor.saveAsPacket(items))[3];
        +        copy.anchor = a;
        +    }
        +    return copy;
        +}
        + +
      • + + +
      • +
        + +
        + +
        +

        Clone management

        +

        TODO - this functionality is currently disabled, need to enable it and make it work properly

        + +
        + +
        P.clone = λthis;
        + +
      • + + +
      • +
        + +
        + +
        +

        Kill management

        +

        No additional kill functionality required

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Get, Set, deltaSet

        + +
        + +
        let G = P.getters,
        +    S = P.setters,
        +    D = P.deltaSetters;
        + +
      • + + +
      • +
        + +
        + +
        +

        get - copied over from the entity mixin

        + +
        + +
        P.get = function (item) {
        +
        +    let getter = this.getters[item];
        +
        +    if (getter) return getter.call(this);
        +
        +    else {
        +
        +        let def = this.defs[item],
        +            state = this.state,
        +            val;
        +
        +        if (typeof def != 'undefined') {
        +
        +            val = this[item];
        +            return (typeof val != 'undefined') ? val : def;
        +        }
        +
        +        def = state.defs[item];
        +
        +        if (typeof def != 'undefined') {
        +
        +            val = state[item];
        +            return (typeof val != 'undefined') ? val : def;
        +        }
        +        return undef;
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        set - copied over from the entity mixin.

        + +
        + +
        P.set = function (items = {}) {
        +
        +    if (Object.keys(items).length) {
        +
        +        let setters = this.setters,
        +            defs = this.defs,
        +            state = this.state,
        +            stateSetters = (state) ? state.setters : {},
        +            stateDefs = (state) ? state.defs : {},
        +            predefined, stateFlag;
        +
        +        Object.entries(items).forEach(([key, value]) => {
        +
        +            if (key && key !== 'name' && value != null) {
        +
        +                predefined = setters[key];
        +                stateFlag = false;
        +
        +                if (!predefined) {
        +
        +                    predefined = stateSetters[key];
        +                    stateFlag = true;
        +                }
        +
        +                if (predefined) predefined.call(stateFlag ? this.state : this, value);
        +                else if (typeof defs[key] !== 'undefined') this[key] = value;
        +                else if (typeof stateDefs[key] !== 'undefined') state[key] = value;
        +            }
        +        }, this);
        +    }
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        setDelta - copied over from the entity mixin.

        + +
        + +
        P.setDelta = function (items = {}) {
        +
        +    if (Object.keys(items).length) {
        +
        +        let setters = this.deltaSetters,
        +            defs = this.defs,
        +            state = this.state,
        +            stateSetters = (state) ? state.deltaSetters : {},
        +            stateDefs = (state) ? state.defs : {},
        +            predefined, stateFlag;
        +
        +        Object.entries(items).forEach(([key, value]) => {
        +
        +            if (key && key !== 'name' && value != null) {
        +
        +                predefined = setters[key];
        +                stateFlag = false;
        +
        +                if (!predefined) {
        +
        +                    predefined = stateSetters[key];
        +                    stateFlag = true;
        +                }
        +
        +                if (predefined) predefined.call(stateFlag ? this.state : this, value);
        +                else if (typeof defs[key] !== 'undefined') this[key] = addStrings(this[key], value);
        +                else if (typeof stateDefs[key] !== 'undefined') state[key] = addStrings(state[key], value);
        +            }
        +        }, this);
        +    }
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        host, getHost - copied over from the position mixin.

        + +
        + +
        S.host = function (item) {
        +
        +    if (item) {
        +
        +        let host = artefact[item];
        +
        +        if (host && host.here) this.host = host.name;
        +        else this.host = item;
        +    }
        +    else this.host = '';
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        group - copied over from the position mixin.

        + +
        + +
        G.group = function () {
        +
        +    return (this.group) ? this.group.name : '';
        +};
        +S.group = function (item) {
        +
        +    let g;
        +
        +    if (item) {
        +
        +        if (this.group && this.group.type === 'Group') this.group.removeArtefacts(this.name);
        +
        +        if (item.substring) {
        +
        +            g = group[item];
        +
        +            if (g) this.group = g;
        +            else this.group = item;
        +        }
        +        else this.group = item;
        +    }
        +
        +    if (this.group && this.group.type === 'Group') this.group.addArtefacts(this.name);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        getHere - returns current core position.

        + +
        + +
        P.getHere = function () {
        +
        +    return currentCorePosition;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        delta - copied over from the position mixin.

        + +
        + +
        S.delta = function (items = {}) {
        +
        +    if (items) this.delta = mergeDiscard(this.delta, items);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        net

        + +
        + +
        S.net = function (item) {
        +
        +    if (item) {
        +
        +        item = (item.substring) ? artefact[item] : item;
        +
        +        if (item && item.type === 'Net') {
        +
        +            this.net = item;
        +            this.dirtyStart = true;
        +        }
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        source

        + +
        + +
        S.source = function (item) {
        +
        +    item = (item.substring) ? artefact[item] : item;
        +
        +    if (item && item.type === 'Picture') {
        +
        +        let src = this.source;
        +
        +        if (src && src.type === 'Picture') src.imageUnsubscribe(this.name);
        +
        +        this.source = item;
        +        item.imageSubscribe(this.name);
        +        this.dirtyInput = true;
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        isHorizontalCopy

        + +
        + +
        S.isHorizontalCopy = function (item) {
        +
        +    this.isHorizontalCopy = (item) ? true : false;
        +    this.dirtyPathData = true;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Prototype functions

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        getHost - copied over from the position mixin.

        + +
        + +
        P.getHost = function () {
        +
        +    if (this.currentHost) return this.currentHost;
        +    else if (this.host) {
        +
        +        let host = artefact[this.host];
        +
        +        if (host) {
        +
        +            this.currentHost = host;
        +            this.dirtyHost = true;
        +            return this.currentHost;
        +        }
        +    }
        +    return currentCorePosition;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        updateByDelta, reverseByDelta - copied over from the position mixin.

        + +
        + +
        P.updateByDelta = function () {
        +
        +    this.setDelta(this.delta);
        +
        +    return this;
        +};
        +
        +P.reverseByDelta = function () {
        +
        +    let temp = {};
        +    
        +    Object.entries(this.delta).forEach(([key, val]) => {
        +
        +        if (val.substring) val = -(parseFloat(val)) + '%';
        +        else val = -val;
        +
        +        temp[key] = val;
        +    });
        +
        +    this.setDelta(temp);
        +
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        setDeltaValues - copied over from the position mixin.

        + +
        + +
        P.setDeltaValues = function (items = {}) {
        +
        +    let delta = this.delta, 
        +        oldVal, action;
        +
        +    Object.entries(items).forEach(([key, requirement]) => {
        +
        +        if (xt(delta[key])) {
        +
        +            action = requirement;
        +
        +            oldVal = delta[key];
        +
        +            switch (action) {
        +
        +                case 'reverse' :
        +                    if (oldVal.toFixed) delta[key] = -oldVal;
        + +
      • + + +
      • +
        + +
        + +
        +

        TODO: reverse String% (and em, etc) values

        + +
        + +
                            break;
        +
        +                case 'zero' :
        +                    if (oldVal.toFixed) delta[key] = 0;
        + +
      • + + +
      • +
        + +
        + +
        +

        TODO: zero String% (and em, etc) values

        + +
        + +
                            break;
        +
        +                case 'add' :
        +                    break;
        +
        +                case 'subtract' :
        +                    break;
        +
        +                case 'multiply' :
        +                    break;
        +
        +                case 'divide' :
        +                    break;
        +            }
        +        }
        +    })
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Invalidate mid-init functionality

        + +
        + +
        P.midInitActions = λnull;
        + +
      • + + +
      • +
        + +
        + +
        +

        Invalidating sensor functionality

        + +
        + +
        P.cleanCollisionData = function () {
        +
        +    return [0, []];
        +};
        +P.getSensors = function () {
        +
        +    return [];
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Display cycle functionality

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        prepareStamp - function called as part of the Display cycle compile step.

        +
          +
        • This function is called before we get into the entity stamp promise cascade (thus it’s a synchronous function). This is where we need to check whether we need to recalculate the path data which we’ll use later to build the Mesh entity’s output image.
        • +
        • We only need to recalculate the path data on the initial render, and afterwards when the dirtyPathData flag has been set.
        • +
        • If we perform the recalculation, then we need to make sure to set the dirtyOutput flag, which will trigger the output image build.
        • +
        + +
        + +
        P.prepareStamp = function() {
        +
        +    this.badNet = true;
        +    this.dirtyParticles = false;
        +
        +    let {net, particlePositions} = this;
        +
        +    if (net && net.particleStore && net.particleStore.length > 3) {
        +
        +        let {rows, columns, particleStore} = net;
        +
        +        if (rows && columns) {
        +
        +            this.badNet = false;
        +            this.rows = rows;
        +            this.columns = columns;
        +
        +            if (!particlePositions) particlePositions = [];
        + +
      • + + +
      • +
        + +
        + +
        +

        Sanity check

        +
          +
        • We will recalculate stuff if any of the net particles have moved since the last check. This is most simply done by constructing a string of all current particle position values and comparing it to the previous string. If they are the same, then we can use the stashed image construct, otherwise we build and stash a new image construct
        • +
        + +
        + +
        +            let checkPositions = [];
        +
        +            particleStore.forEach(p => {
        +
        +                let pos = p.position;
        +                let {x, y} = pos;
        +
        +                checkPositions.push([x, y]);
        +            });
        +            let checkPositionsString = checkPositions.join(','),
        +                particlePositionsString = particlePositions.join(',');
        +
        +            if (particlePositionsString !== checkPositionsString) {
        +
        +                this.particlePositions = checkPositions;
        +                this.dirtyInput = true;
        +            }
        +
        +            if (this.sourceIsVideoOrSprite) this.dirtyInput = true;
        +        }
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        setSourceDimension - internal function called by prepareStamp.

        +
          +
        • We make the source dimensions a square of the longest row ‘path’
        • +
        • This way, we can do a horizontal scan, or a vertical scan with no further calculation
        • +
        +

        This function also:

        +
          +
        • Calculates the bounding box
        • +
        • Creates the perimeter path object
        • +
        • Stores the (relative) lengths of individual struts in each row
        • +
        +

        TODO: consider drawing order of squares - is there a way we can predict which squares are going to be behind other squares …

        +
          +
        • For instance by adding together the particle z values for each square, then filling in the lowest square first?
        • +
        • May also be a way of calculating a cull of squares so that we don’t need to fill in squares entirely covered by other squares?
        • +
        + +
        + +
        P.setSourceDimension = function () {
        +
        +    if (!this.badNet) {
        +
        +        const {columns, rows, particlePositions} = this;
        +
        +        const results = [],
        +            lengths = [],
        +            xPos = [],
        +            yPos = [],
        +            top = [],
        +            left = [],
        +            right = [],
        +            coords = [],
        +            bottom = [];
        +
        +        let x, xz, y, res, pos, coord, x0, x1, y0, y1, dx, dy, len, l, i, iz, j, jz;
        +
        +        for (y = 0; y < rows; y++) {
        +
        +            res = 0;
        +            len = lengths[y] = [];
        +            coord = coords[y] = [];
        +
        +            for (x = 0, xz = columns - 1; x < xz; x++) {
        +
        +                pos = (y * columns) + x; 
        +
        +                [x0, y0] = particlePositions[pos];
        +                [x1, y1] = particlePositions[pos + 1];
        +
        +                coord.push([x0, y0, x1, y1]);
        +
        +                if (x === 0) {
        +
        +                    left.push([x0, y0]);
        +                }
        +                else if (x === xz - 1) {
        +
        +                    right.push([x1, y1]);
        +                }
        +                else if (y === 0) {
        +
        +                    top.push([x0, y0]);
        +
        +                    if (x === xz - 2) top.push([x1, y1]);
        +                }
        +                else if (y === rows - 1) {
        +
        +                    bottom.push([x0, y0]);
        +
        +                    if (x === xz - 2) bottom.push([x1, y1]);
        +                }
        +
        +                xPos.push(x0, x1);
        +                yPos.push(y0, y1);
        +
        +                dx = x1 - x0;
        +                dy = y1 - y0;
        +
        +                l = Math.sqrt((dx * dx) + (dy * dy));
        +                res += l;
        +                len.push(l);
        +            }
        +            results.push(res);
        +        }
        +        this.sourceDimension = Math.max(...results);
        +
        +        for (i = 0, iz = lengths.length; i < iz; i++) {
        +
        +            l = results[i];
        +            len = lengths[i];
        +            coord = coords[i];
        +
        +            for (j = 0, jz = len.length; j < jz; j++) {
        +
        +                if (l) len[j] = len[j] / l;
        +
        +                coord[j].push(len[j]);
        +            }
        +        }
        +
        +        this.struts = coords;
        +
        +        let xMin = Math.min(...xPos),
        +            yMin = Math.min(...yPos),
        +            xMax = Math.max(...xPos),
        +            yMax = Math.max(...yPos);
        +
        +        this.boundingBox = [xMin, yMin, xMax - xMin, yMax - yMin];
        +
        +        left.reverse();
        +        bottom.reverse();
        +
        +        let p = `M${top[0][0]},${top[0][1]}L`;
        +
        +        for (i = 1, iz = top.length; i < iz; i++) {
        +
        +            [x, y] = top[i];
        +            p += `${x},${y} `;
        +        }
        +        for (i = 0, iz = right.length; i < iz; i++) {
        +
        +            [x, y] = right[i];
        +            p += `${x},${y} `;
        +        }
        +        for (i = 0, iz = bottom.length; i < iz; i++) {
        +
        +            [x, y] = bottom[i];
        +            p += `${x},${y} `;
        +        }
        +        for (i = 0, iz = left.length; i < iz; i++) {
        +
        +            [x, y] = left[i];
        +            p += `${x},${y} `;
        +        }
        +        p += 'z';
        +
        +        this.pathObject = new Path2D(p);
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        simpleStamp - Simple stamping is entirely synchronous

        +
          +
        • TODO: we may have to disable this functionality for the Mesh entity, if we use a web worker for either the prepareStamp calculations, or to build the output image itself
        • +
        + +
        + +
        P.simpleStamp = function (host, changes = {}) {
        +
        +    if (host && host.type === 'Cell') {
        +
        +        this.currentHost = host;
        +        
        +        if (changes) {
        +
        +            this.set(changes);
        +            this.prepareStamp();
        +        }
        +
        +        this.regularStampSynchronousActions();
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        stamp - All entity stamping, except for simple stamps, goes through this function, which needs to return a Promise which will resolve in due course.

        +
          +
        • While other entitys have to worry about applying filters as part of the stamping process, this is not an issue for Mesh entitys because filters are defined on, and applied to, the source Picture entity, not the Mesh itself
        • +
        +

        Here we check which dirty flags need actioning, and call a range of different functions to process the work. These flags are:

        +
          +
        • dirtyInput - the Picture entity has reported a change in its source, or copy attributes)
        • +
        + +
        + +
        P.stamp = function (force = false, host, changes) {
        +
        +    if (force) {
        +
        +        if (host && host.type === 'Cell') this.currentHost = host;
        +
        +        if (changes) {
        +
        +            this.set(changes);
        +            this.prepareStamp();
        +        }
        +        return this.regularStamp();
        +    }
        +
        +    if (this.visibility) {
        +
        +        let self = this,
        +            dirtyInput = this.dirtyInput;
        +
        +        if (dirtyInput) {
        +
        +            return new Promise((resolve, reject) => {
        +
        +                self.cleanInput()
        +                .catch(err => {
        + +
      • + + +
      • +
        + +
        + +
        +

        We don’t need to completely reject if output is not clean

        +
          +
        • It should be enough to bale out of the stamp functionality and hope it resolves during the next RAF iteration
        • +
        + +
        + +
                            console.log(`${self.name} - cleanInput Error: source has a zero dimension`);
        +                    resolve(false);
        +                })
        +                .then(res => {
        +
        +                    self.sourceImageData = res;
        +                    return self.cleanOutput();
        +                })
        +                .then(res => {
        +
        +                    self.output = res;
        +                    return self.regularStamp();
        +                })
        +                .then(res => {
        +
        +                    resolve(true);
        +                })
        +                .catch(err => {
        +                    
        +                    reject(err);
        +                });
        +            })
        +        }
        +        else return this.regularStamp();
        +    }
        +    else return Promise.resolve(false);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Clean functions

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        cleanInput - internal function called by stamp

        + +
        + +
        P.cleanInput = function () {
        +
        +    let self = this;
        +
        +    return new Promise((resolve, reject) => {
        +
        +        self.dirtyInput = false;
        +
        +        self.setSourceDimension();
        +
        +        let sourceDimension = self.sourceDimension;
        +
        +        if (!sourceDimension) {
        +
        +            self.dirtyInput = true;
        +            reject();
        +        }
        +
        +        let cell = requestCell(),
        +            engine = cell.engine,
        +            canvas = cell.element;
        +
        +        canvas.width = sourceDimension;
        +        canvas.height = sourceDimension;
        +        engine.setTransform(1, 0, 0, 1, 0, 0);
        +
        +        self.source.stamp(true, cell, { 
        +            startX: 0,
        +            startY: 0,
        +            handleX: 0,
        +            handleY: 0,
        +            offsetX: 0,
        +            offsetY: 0,
        +            roll: 0,
        +            scale: 1,
        +
        +            width: sourceDimension,
        +            height: sourceDimension,
        +
        +            method: 'fill',
        +        })
        +        .then(res => {
        +
        +            let sourceImageData = engine.getImageData(0, 0, sourceDimension, sourceDimension);
        +
        +            releaseCell(cell);
        +            resolve(sourceImageData);
        +        })
        +        .catch(err => {
        +
        +            releaseCell(cell);
        +            reject(err);
        +        });
        +    });
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        cleanOutput - internal function called by stamp

        +
          +
        • If you’re not a fan of big functions, please look away now.
        • +
        + +
        + +
        P.cleanOutput = function () {
        +    
        +    let self = this;
        +
        +    return new Promise((resolve, reject) => {
        +
        +        const halfPi = Math.PI / 2;
        +
        +        self.dirtyOutput = false;
        +
        +        let {sourceDimension, sourceImageData, columns, rows, struts, boundingBox} = self;
        +
        +        if (sourceImageData && rows - 1 > 0) {
        +
        +            let [startX, startY, outputWidth, outputHeight] = boundingBox;
        +
        +            outputWidth += startX;
        +            outputHeight += startY;
        +
        +            const inputCell = requestCell(),
        +                inputEngine = inputCell.engine,
        +                inputCanvas = inputCell.element;
        +
        +            inputCanvas.width = sourceDimension;
        +            inputCanvas.height = sourceDimension;
        +            inputEngine.setTransform(1, 0, 0, 1, 0, 0);
        +            inputEngine.putImageData(sourceImageData, 0, 0);
        +
        +            const outputCell = requestCell(),
        +                outputEngine = outputCell.engine,
        +                outputCanvas = outputCell.element;
        +
        +            outputCanvas.width = outputWidth;
        +            outputCanvas.height = outputHeight;
        +            outputEngine.globalAlpha = self.state.globalAlpha;
        +            outputEngine.setTransform(1, 0, 0, 1, 0, 0);
        +
        +            const inputStrutHeight = sourceDimension / (rows - 1),
        +                inputStrutWidth = sourceDimension / (columns - 1);
        +
        +            let topStruts, baseStruts,
        +                maxLen, tStep, bStep, iStep, xtStep, ytStep, xbStep, ybStep, tx, ty, bx, by, sx, sy,
        +                xLen, yLen, stripLength, stripAngle,
        +                c, cz, r, rz, i, iz;
        +
        +            for (r = 0, rz = rows - 1; r < rz; r++) {
        +
        +                topStruts = struts[r];
        +                baseStruts = struts[r + 1];
        +
        +                for (c = 0, cz = columns - 1; c < cz; c++) {
        +                    
        +                    let [ltx, lty, rtx, rty, tLen] = topStruts[c];
        +                    let [lbx, lby, rbx, rby, bLen] = baseStruts[c];
        +
        +                    tLen *= sourceDimension;
        +                    bLen *= sourceDimension;
        +
        +                    maxLen = Math.max(tLen, bLen, inputStrutWidth);
        +
        +                    tStep = tLen / maxLen;
        +                    bStep = bLen / maxLen;
        +                    iStep = inputStrutWidth / maxLen;
        +
        +                    xtStep = (rtx - ltx) / maxLen;
        +                    ytStep = (rty - lty) / maxLen;
        +                    xbStep = (rbx - lbx) / maxLen;
        +                    ybStep = (rby - lby) / maxLen;
        +
        +                    for (i = 0; i < maxLen; i++) {
        +
        +                        tx = ltx + (xtStep * i);
        +                        ty = lty + (ytStep * i);
        +                        bx = lbx + (xbStep * i);
        +                        by = lby + (ybStep * i);
        +                        sy = r * inputStrutHeight;
        +                        sx = (c * inputStrutWidth) + (iStep * i);
        +
        +                        xLen = tx - bx;
        +                        yLen = ty - by;
        +                        stripLength = Math.sqrt((xLen * xLen) + (yLen * yLen));
        +                        stripAngle = Math.atan2(yLen, xLen) + halfPi;
        +
        +                        outputEngine.setTransform(1, 0, 0, 1, tx, ty);
        +                        outputEngine.rotate(stripAngle);
        +
        +                        outputEngine.drawImage(inputCanvas, sx, sy, 1, inputStrutHeight, 0, 0, 1, stripLength);
        +                    }
        +                }
        +            }
        +
        +            let iFactor = self.interferenceFactor,
        +                iLoops = self.interferenceLoops,
        +
        +                iWidth = Math.ceil(outputWidth * iFactor),
        +                iHeight = Math.ceil(outputHeight * iFactor);
        +
        +            inputCanvas.width = iWidth;
        +            inputCanvas.height = iHeight;
        +
        +            outputEngine.setTransform(1, 0, 0, 1, 0, 0);
        +            inputEngine.setTransform(1, 0, 0, 1, 0, 0);
        +
        +            for (let j = 0; j < iLoops; j++) {
        +
        +                inputEngine.drawImage(outputCanvas, 0, 0, outputWidth, outputHeight, 0, 0, iWidth, iHeight);
        +                outputEngine.drawImage(inputCanvas, 0, 0, iWidth, iHeight, 0, 0, outputWidth, outputHeight);
        +            }
        +
        +            let outputData = outputEngine.getImageData(0, 0, outputWidth, outputHeight);
        +
        +            releaseCell(inputCell);
        +            releaseCell(outputCell);
        +
        +            self.dirtyTargetImage = true;
        +
        +            resolve(outputData);
        +        }
        +        else reject(new Error(`${this.name} - cleanOutput Error: source has a zero dimension, or no data`));
        +    });
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        regularStamp - internal function called by stamp

        + +
        + +
        P.regularStamp = function () {
        +
        +    let self = this;
        +
        +    return new Promise((resolve, reject) => {
        +
        +        if (self.currentHost) {
        +
        +            self.regularStampSynchronousActions();
        +            resolve(true);
        +        }
        +        reject(new Error(`${self.name} has no current host`));
        +    });
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        regularStampSynchronousActions - internal function called by regularStamp

        + +
        + +
        P.regularStampSynchronousActions = function () {
        +
        +    let dest = this.currentHost;
        +
        +    if (dest) {
        +
        +        let engine = dest.engine;
        +
        +        if (!this.noCanvasEngineUpdates) dest.setEngine(this);
        +
        +        this[this.method](engine);
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +
        Stamp methods
        +

        These ‘method’ functions stamp the Mesh entity onto the canvas context supplied to them in the engine argument.

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        fill

        + +
        + +
        P.fill = function (engine) {
        +
        +    this.doFill(engine);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        draw

        + +
        + +
        P.draw = function (engine) {
        +
        +    this.doStroke(engine);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        drawAndFill

        + +
        + +
        P.drawAndFill = function (engine) {
        +
        +    this.doStroke(engine);
        +    this.currentHost.clearShadow();
        +    this.doFill(engine);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        fillAndDraw

        + +
        + +
        P.fillAndDraw = function (engine) {
        +
        +    this.doFill(engine);
        +    this.currentHost.clearShadow();
        +    this.doStroke(engine);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        drawThenFill

        + +
        + +
        P.drawThenFill = function (engine) {
        +
        +    this.doStroke(engine);
        +    this.doFill(engine);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        fillThenDraw

        + +
        + +
        P.fillThenDraw = function (engine) {
        +
        +    this.doFill(engine);
        +    this.doStroke(engine);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        clear

        + +
        + +
        P.clear = function (engine) {
        +
        +    let output = this.output,
        +        canvas = (this.currentHost) ? this.currentHost.element : false,
        +        gco = engine.globalCompositeOperation;
        +
        +    if (output && canvas) {
        +
        +        let tempCell = requestCell(),
        +            tempEngine = tempCell.engine,
        +            tempCanvas = tempCell.element;
        +
        +        let w = canvas.width,
        +            h = canvas.height;
        +
        +        tempCanvas.width = w;
        +        tempCanvas.height = h;
        +
        +        tempEngine.putImageData(output, 0, 0);
        +        engine.setTransform(1, 0, 0, 1, 0, 0);
        +        engine.globalCompositeOperation = 'destination-out';
        +        engine.drawImage(tempCanvas, 0, 0);
        +        engine.globalCompositeOperation = gco;
        +
        +        releaseCell(tempCell);
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        none

        + +
        + +
        P.none = λnull;
        + +
      • + + +
      • +
        + +
        + +
        +

        These stroke and fill functions handle most of the stuff that the method functions require to stamp the Mesh entity onto a canvas cell.

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        doStroke

        + +
        + +
        P.doStroke = function (engine) {
        +
        +    engine.setTransform(1, 0, 0, 1, 0, 0);
        +    engine.stroke(this.pathObject);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        doFill

        +
          +
        • Canvas API’s putImageData function turns transparent pixels in the output into transparent in the host canvas - which is not what we want
        • +
        • Problem solved by putting output into a pool cell, then drawing it from there to the host cell
        • +
        + +
        + +
        P.doFill = function (engine) {
        +
        +    let output = this.output,
        +        canvas = (this.currentHost) ? this.currentHost.element : false;
        +
        +    if (output && canvas) {
        +
        +        let tempCell = requestCell(),
        +            tempEngine = tempCell.engine,
        +            tempCanvas = tempCell.element;
        +
        +        let w = canvas.width,
        +            h = canvas.height;
        +
        +        tempCanvas.width = w;
        +        tempCanvas.height = h;
        +
        +        tempEngine.putImageData(output, 0, 0);
        +        engine.setTransform(1, 0, 0, 1, 0, 0);
        +        engine.drawImage(tempCanvas, 0, 0);
        +
        +        releaseCell(tempCell);
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Collision functionality

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        checkHit

        +
          +
        • Overwrites mixin/position.js function
        • +
        + +
        + +
        P.checkHit = function (items = [], mycell) {
        +
        +    if (this.noUserInteraction) return false;
        +
        +    if (!this.pathObject) return false;
        +
        +    let tests = (!Array.isArray(items)) ?  [items] : items,
        +        poolCellFlag = false;
        +
        +    if (!mycell) {
        +
        +        mycell = requestCell();
        +        poolCellFlag = true;
        +    }
        +
        +    let engine = mycell.engine,
        +        tx, ty;
        +
        +    if (tests.some(test => {
        +
        +        if (Array.isArray(test)) {
        +
        +            tx = test[0];
        +            ty = test[1];
        +        }
        +        else if (xta(test, test.x, test.y)) {
        +
        +            tx = test.x;
        +            ty = test.y;
        +        }
        +        else return false;
        +
        +        if (!tx.toFixed || !ty.toFixed || isNaN(tx) || isNaN(ty)) return false;
        +
        +        return engine.isPointInPath(this.pathObject, tx, ty, this.winding);
        +
        +    }, this)) {
        +
        +        let r = {
        +            x: tx,
        +            y: ty,
        +            artefact: this
        +        };
        +
        +        if (poolCellFlag) releaseCell(mycell);
        +
        +        return r;
        +    }
        +    
        +    if (poolCellFlag) releaseCell(mycell);
        +    
        +    return false;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Factory

        +
        let myMesh = scrawl.makeMesh({
        + +
        + +
      • + + +
      • +
        + +
        + +
        +
        name: 'display-mesh',
        + +
        + +
      • + + +
      • +
        + +
        + +
        +
        net: 'test-net',
        +source: 'my-flower',
        + +
        + +
      • + + +
      • +
        + +
        + +
        +
        lineWidth: 2,
        +lineJoin: 'round',
        +strokeStyle: 'orange',
        + +
        + +
      • + + +
      • +
        + +
        + +
        +
        method: 'fillThenDraw',
        + +
        + +
      • + + +
      • +
        + +
        + +
        +
        onEnter: function () { this.set({ lineWidth: 6 }) },
        +onLeave: function () { this.set({ lineWidth: 2 }) },
        +

        });

        +
        + +
        + +
        const makeMesh = function (items) {
        +    return new Mesh(items);
        +};
        +
        +constructors.Mesh = Mesh;
        + +
      • + + +
      • +
        + +
        + +
        +

        Exports

        + +
        + +
        export {
        +    makeMesh,
        +};
        + +
      • + +
      +
      + + diff --git a/docs/source/factory/net.html b/docs/source/factory/net.html index 130ef07f5..6801fa894 100644 --- a/docs/source/factory/net.html +++ b/docs/source/factory/net.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/noise.html b/docs/source/factory/noise.html new file mode 100644 index 000000000..11a483c27 --- /dev/null +++ b/docs/source/factory/noise.html @@ -0,0 +1,2275 @@ + + + + + Noise factory + + + + + +
      +
      + + + +
        + + + +
      • +
        + +
        + +
        +

        Noise factory

        +

        The purpose of the Noise asset is to give us a resource for generating noisy (semi-regular) maps. These can then be used directly as Picture or Pattern images, or uploaded to the filter worker object as part of a filter that uses displacement map functionality.

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Current functionality

        +

        At the moment the Noise asset can generate Perlin-type noise, with engines supplied for:

        +
          +
        • Perlin (classic)
        • +
        • Perlin (improved)
        • +
        • Simplex - the default engine
        • +
        • Value
        • +
        +

        These engines are supported by a number of settable (and thus animatable) attributes, including special functions for smoothing the engine output. Demo Filters-019 has been set up to allow for experimenting with these attributes

        +

        The noise generated will be output to a dedicated offscreen <canvas> element, which is the asset used by Picture entitys, Pattern styles and filters. The output image can be set to three color schemas:

        +
          +
        • Monochrome (black - gray - white)
        • +
        • Gradient - mediated by a Scrawl-canvas Color object
        • +
        • Hue - where the engine output for each pixel is interpreted as the hue component of an HSL color
        • +
        +

        (NOTE: Perlin, Simplex and Value noise generator code based on code found in the canvas-noise GitHub repository written by lencinhaus.

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Possible future functionality

        +

        There’s no reason why the Noise asset cannot be extended to output other types of (semi-regular) noise data. For instance:

        + + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Demos:

        +
          +
        • Canvas-044 - Building more complex patterns
        • +
        • Filters-019 - Using a Noise asset with a displace filter
        • +
        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Imports

        + +
        + +
        import { constructors } from '../core/library.js';
        +import { mergeOver, λnull, λthis, λfirstArg, removeItem, seededRandomNumberGenerator, interpolate, easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce } from '../core/utilities.js';
        +
        +import { makeColor } from './color.js';
        +
        +import baseMix from '../mixin/base.js';
        +import assetMix from '../mixin/asset.js';
        +import patternMix from '../mixin/pattern.js';
        + +
      • + + +
      • +
        + +
        + +
        +

        Noise constructor

        + +
        + +
        const Noise = function (items = {}) {
        +
        +    this.makeName(items.name);
        +    this.register();
        +
        +    let mycanvas = document.createElement('canvas');
        +    mycanvas.id = this.name;
        +    this.installElement(mycanvas);
        +
        +    this.perm = [];
        +    this.permMod8 = [];
        +    this.values = [];
        +    this.grad = [];
        +
        +    this.subscribers = [];
        +
        +    this.colorFactory = makeColor({
        +        name: `${this.name}-color-factory`,
        +        minimumColor: items.gradientStart || 'red',
        +        maximumColor: items.gradientEnd || 'green',
        +    });
        +
        +    this.set(this.defs);
        +    this.set(items);
        +
        +    if (items.subscribe) this.subscribers.push(items.subscribe);
        +
        +    this.dirtyOutput = true;
        +
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Noise prototype

        + +
        + +
        let P = Noise.prototype = Object.create(Object.prototype);
        +P.type = 'Noise';
        +P.lib = 'asset';
        +P.isArtefact = false;
        +P.isAsset = true;
        + +
      • + + +
      • +
        + +
        + +
        +

        Mixins

        + + +
        + +
        P = baseMix(P);
        +P = assetMix(P);
        +P = patternMix(P);
        + +
      • + + +
      • +
        + +
        + +
        +

        Noise attributes

        +
          +
        • Attributes defined in the base mixin: name.
        • +
        • Attributes defined in the asset mixin: source, subscribers.
        • +
        • Attributes defined in the pattern mixin: repeat, patternMatrix, matrixA, matrixB, matrixC, matrixD, matrixE, matrixF.
        • +
        + +
        + +
        let defaultAttributes = {
        + +
      • + + +
      • +
        + +
        + +
        +

        The offscreen canvas dimensions, within which the noise will be generated, is set using the width and height attributes. These take Number values.

        + +
        + +
            width: 300,
        +    height: 150,
        + +
      • + + +
      • +
        + +
        + +
        +

        color - String value determining how the generated noise will be output on the canvas. Currently recognised values are: monochrome (default), gradient and hue

        + +
        + +
            color: 'monochrome',
        + +
      • + + +
      • +
        + +
        + +
        +

        When the color choice has been set to monochrome we can clamp the pixel values using the monochromeStart and monochromeRange attributes, both of which take integer Numbers.

        +
          +
        • Accepted monochromeStart values are 0 to 255
        • +
        • Accepted monochromeRange values are -255 to 255
        • +
        • Be aware that the monochromeRange value will be recalculated to make sure calculated pixel values remain in the 0-255 color channel range
        • +
        + +
        + +
            monochromeStart: 0,
        +    monochromeRange: 255,
        + +
      • + + +
      • +
        + +
        + +
        +

        When the color choice has been set to gradient we can control the start and end colors of the gradient using the gradientStart and gradientEnd attributes

        + +
        + +
            gradientStart: '#ff0000',
        +    gradientEnd: '#00ff00',
        + +
      • + + +
      • +
        + +
        + +
        +

        When the color choice has been set to hue we can control the pixel colors (in terms of their HSL components) using the hueStart, hueRange, saturation and luminosity attributes:

        +
          +
        • hueStart - float Number value in degrees, will be clamped to between 0 and 360
        • +
        • hueRange - float Number value in degrees, can be negative as well as positive
        • +
        • saturation - float Number value, between 0 and 100
        • +
        • luminosity - float Number value, between 0 and 100
        • +
        + +
        + +
            hueStart: 0,
        +    hueRange: 120,
        +    saturation: 100,
        +    luminosity: 50,
        + +
      • + + +
      • +
        + +
        + +
        +

        noiseEngine - String - the currently supported noise engines String values are: perlin, improved-perlin, simplex, value

        + +
        + +
            noiseEngine: 'simplex',
        + +
      • + + +
      • +
        + +
        + +
        +

        When a noise engine initializes it will create several Arrays of pseudo-random values. The seed attribute is a String used to initialize the pseudo-random number generator, while the size attribute is a Number (often a power of 2 value) which determines the lengths of the Arrays

        + +
        + +
            seed: 'any_random_string_will_do',
        +    size: 256,
        + +
      • + + +
      • +
        + +
        + +
        +

        The scale attribute determines the relative scale of the noise calculation, which affects the noise output. Think of it as a rather idiosyncratic zoom factor

        + +
        + +
            scale: 50,
        + +
      • + + +
      • +
        + +
        + +
        +

        Attributes used when calculating the noise map include:

        +
          +
        • octaves - a positive integer Number - the more octives, the more naturalistic the output - values over 6 are rarely productive
        • +
        • __octaveFunction - a String identifying the function to be run at the end of each octave loop. Currently only none and absolute functions are supported
        • +
        • persistance and lacunarity values change at the conclusion of each octave loop; these attributes set their initial values
        • +
        + +
        + +
            octaves: 1,
        +    octaveFunction: 'none',
        +    persistence: 0.5,
        +    lacunarity: 2,
        + +
      • + + +
      • +
        + +
        + +
        +

        The smoothing attribute - a String value - identifies the smoothing function that will be applied pixel noise values as they are calculated. There are a wide number of functions available, including: easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce, cosine, hermite, quintic (default)

        + +
        + +
            smoothing: 'quintic',
        + +
      • + + +
      • +
        + +
        + +
        +

        Post-processing the noise map: The sumFunction attribute - a String value - identifies the smoothing function that will be applied to the noise map once the noise calculations complete.

        +
          +
        • Permitted values include: none, sine-x, sine-y, sine, modular
        • +
        • sineFrequencyCoeff - a Number - is used by sine-based sum functions
        • +
        • modularAmplitude - a Number - is used by the modular sum function
        • +
        + +
        + +
            sumFunction: 'none',
        +    sineFrequencyCoeff: 1,
        +    modularAmplitude: 5,
        +
        +
        +};
        +P.defs = mergeOver(P.defs, defaultAttributes);
        +
        +delete P.defs.source;
        +delete P.defs.sourceLoaded;
        + +
      • + + +
      • +
        + +
        + +
        +

        Packet management

        +

        This functionality is disabled for Cell objects

        + +
        + +
        P.stringifyFunction = λnull;
        +P.processPacketOut = λnull;
        +P.finalizePacketOut = λnull;
        +P.saveAsPacket = function () {
        +
        +    return `[${this.name}, ${this.type}, ${this.lib}, {}]`
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Clone management

        + +
        + +
        P.clone = λthis;
        + +
      • + + +
      • +
        + +
        + +
        +

        Kill management

        +

        No additional kill functionality required

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Get, Set, deltaSet

        + +
        + +
        let G = P.getters,
        +    S = P.setters,
        +    D = P.deltaSetters;
        + +
      • + + +
      • +
        + +
        + +
        +

        source

        + +
        + +
        S.source = λnull;
        + +
      • + + +
      • +
        + +
        + +
        +

        subscribers - we disable the ability to set the subscribers Array directly. Picture entitys and Pattern styles will manage their subscription to the asset using their subscribe() and unsubscribe() functions. Filters will check for updates every time they run

        + +
        + +
        S.subscribers = λnull;
        +
        +S.octaveFunction = function (item) {
        +
        +    this.octaveFunction = this.octaveFunctions[item] || λfirstArg;
        +    this.dirtyNoise = true;
        +    this.dirtyOutput = true;
        +};
        +
        +S.sumFunction = function (item) {
        +
        +    this.sumFunction = this.sumFunctions[item] || λfirstArg;
        +    this.dirtyNoise = true;
        +    this.dirtyOutput = true;
        +};
        +
        +S.smoothing = function (item) {
        +
        +    this.smoothing = this.smoothingFunctions[item] || λfirstArg;
        +    this.dirtyNoise = true;
        +    this.dirtyOutput = true;
        +};
        +
        +S.noiseEngine = function (item) {
        +
        +    this.noiseEngine = this.noiseEngines[item] || this.noiseEngines['simplex'];
        +    this.dirtyNoise = true;
        +    this.dirtyOutput = true;
        +};
        +
        +S.octaves = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.octaves = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.seed = function (item) {
        +
        +    if (item.substring) {
        +
        +        this.seed = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +P.supportedColorSchemes = ['monochrome', 'gradient', 'hue'];
        +S.color = function (item) {
        +
        +    if (this.supportedColorSchemes.indexOf(item) >= 0) {
        +
        +        this.color = item;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.scale = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.scale = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.size = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.size = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.persistence = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.persistence = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.lacunarity = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.lacunarity = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.gradientStart = function (item) {
        +
        +    if (item.substring) {
        +
        +        this.colorFactory.setMinimumColor(item);
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.gradientEnd = function (item) {
        +
        +    if (item.substring) {
        +
        +        this.colorFactory.setMaximumColor(item);
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.monochromeStart = function (item) {
        +
        +    if (item.toFixed && item >= 0) {
        +
        +        this.monochromeStart = item % 360;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.monochromeRange = function (item) {
        +
        +    if (item.toFixed && item >= -255 && item < 256) {
        +
        +        this.monochromeRange = Math.floor(item);
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.hueStart = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.hueStart = item;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.hueRange = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.hueRange = item;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.saturation = function (item) {
        +
        +    if (item.toFixed && item >= 0 && item <= 100) {
        +
        +        this.saturation = Math.floor(item);
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.luminosity = function (item) {
        +
        +    if (item.toFixed && item >= 0 && item <= 100) {
        +
        +        this.luminosity = Math.floor(item);
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.sineFrequencyCoeff = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.sineFrequencyCoeff = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.modularAmplitude = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.modularAmplitude = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.width = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.width = item;
        +        this.sourceNaturalWidth = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        +
        +S.height = function (item) {
        +
        +    if (item.toFixed) {
        +
        +        this.height = item;
        +        this.sourceNaturalHeight = item;
        +        this.dirtyNoise = true;
        +        this.dirtyOutput = true;
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Prototype functions

        +

        installElement - internal function, used by the constructor

        + +
        + +
        P.installElement = function (element) {
        +
        +    this.element = element;
        +    this.engine = this.element.getContext('2d');
        +
        +    return this;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        checkSource

        +
          +
        • Gets invoked by subscribers (who have a handle to the asset instance object) as part of the display cycle.
        • +
        • Noise assets will automatically pass this call onto notifySubscribers, where dirty flags get checked and rectified
        • +
        + +
        + +
        P.checkSource = function (width, height) {
        +
        +    this.notifySubscribers();
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        getData function called by Cell objects when calculating required updates to its CanvasRenderingContext2D engine, specifically for an entity’s fillStyle, strokeStyle and shadowColor attributes.

        +
          +
        • This is the point when we clean Scrawl-canvas assets which have told their subscribers that asset data/attributes have updated
        • +
        + +
        + +
        P.getData = function (entity, cell) {
        + +
      • + + +
      • +
        + +
        + +
        +

        this.checkSource(this.width, this.height);

        + +
        + +
            this.notifySubscribers();
        +
        +    return this.buildStyle(cell);
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        notifySubscribers, notifySubscriber - overwrites the functions defined in mixin/asset.js

        + +
        + +
        P.notifySubscribers = function () {
        +
        +    if (this.dirtyOutput || this.dirtyNoise) this.cleanOutput();
        +
        +    this.subscribers.forEach(sub => this.notifySubscriber(sub), this);
        +};
        +
        +P.notifySubscriber = function (sub) {
        +
        +    sub.sourceNaturalWidth = this.width;
        +    sub.sourceNaturalHeight = this.height;
        +    sub.sourceLoaded = true;
        +    sub.source = this.element;
        +    sub.dirtyImage = true;
        +    sub.dirtyCopyStart = true;
        +    sub.dirtyCopyDimensions = true;
        +    sub.dirtyImageSubscribers = true;
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        cleanOutput - internal function called by the notifySubscribers function

        + +
        + +
        P.cleanOutput = function () {
        +
        +    if (this.dirtyNoise) this.cleanNoise();
        +    if (this.dirtyOutput) this.paintCanvas();
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        cleanNoise - internal function called by the cleanOutput function

        + +
        + +
        P.cleanNoise = function () {
        +
        +    if (this.dirtyNoise) {
        +
        +        this.dirtyNoise = false;
        +
        +        let {noiseEngine, seed, width, height, element, engine, octaves, lacunarity, persistence, scale, octaveFunction, sumFunction} = this;
        +
        +        if (noiseEngine && noiseEngine.init) {
        + +
      • + + +
      • +
        + +
        + +
        +

        Seed our pseudo-random number generator

        + +
        + +
                    this.rndEngine = seededRandomNumberGenerator(seed);
        + +
      • + + +
      • +
        + +
        + +
        +

        Generate the permutations table(s)

        + +
        + +
                    this.generatePermutationTable();
        + +
      • + + +
      • +
        + +
        + +
        +

        Initialize the appropriate noise function

        + +
        + +
                    noiseEngine.init.call(this);
        +
        +            let x, y, o, i, iz,
        +                noiseValues = [],
        +                scaledX, scaledY,
        +                totalNoise, amplitude, frequency;
        + +
      • + + +
      • +
        + +
        + +
        +

        Prepare the noiseValues 2d array

        + +
        + +
                    for (y = 0; y < height; y++) {
        +
        +                noiseValues[y] = [];
        +
        +                for (x = 0; x < width; x++) {
        +                    noiseValues[y][x] = [];
        +                }
        +            }
        + +
      • + + +
      • +
        + +
        + +
        +

        Calculate a relative scale, and setup min/max variables

        + +
        + +
                    let relativeScale = Math.pow(width, -scale / 100);
        +
        +            let max = -1000, 
        +                min = 1000;
        + +
      • + + +
      • +
        + +
        + +
        +

        This is the core of the calculation, performed for each cell in the noiseValues 2d array

        + +
        + +
                    for (y = 0; y < height; y++) {
        +                for (x = 0; x < width; x++) {
        + +
      • + + +
      • +
        + +
        + +
        +

        We can modify the output by scaling it

        +
          +
        • Note that modifying the canvas dimensions (width, height) can also have a scaling effect
        • +
        + +
        + +
                            scaledX = x * relativeScale;
        +                    scaledY = y * relativeScale;
        + +
      • + + +
      • +
        + +
        + +
        +

        Amplitude and frequency will update once per octave calculation; totalNoise is the sum of all octave results

        + +
        + +
                            totalNoise = 0;
        +                    amplitude = 1; 
        +                    frequency = 1;
        + +
      • + + +
      • +
        + +
        + +
        +

        The calculation will be performed at least once

        +
          +
        • For some reason the literature insists on calling these loops “octaves”
        • +
        + +
        + +
                            for (o = 0; o < octaves; o++) {
        + +
      • + + +
      • +
        + +
        + +
        +

        Call the appropriate getNoiseValue function

        +
          +
        • The result needs to be stored in a variable scoped locally to this loop iteration
        • +
        + +
        + +
                                let octaveNoise = noiseEngine.getNoiseValue.call(this, scaledX * frequency, scaledY * frequency);
        + +
      • + + +
      • +
        + +
        + +
        +

        Update octave with a post-calculation octaveFunction, if required

        + +
        + +
                                octaveNoise = octaveFunction(octaveNoise, scaledX, scaledY, o + 1);
        + +
      • + + +
      • +
        + +
        + +
        +

        Modify result by the current amplitude, and add to the running total

        + +
        + +
                                octaveNoise *= amplitude;
        +                        totalNoise += octaveNoise;
        + +
      • + + +
      • +
        + +
        + +
        +

        Update the variables that change over multiple octave loops

        + +
        + +
                                frequency *= lacunarity;
        +                        amplitude *= persistence;
        +                    }
        + +
      • + + +
      • +
        + +
        + +
        +

        Update the noise value in its array

        + +
        + +
                            noiseValues[y][x] = totalNoise;
        + +
      • + + +
      • +
        + +
        + +
        +

        … and check for max/min spread of the generated values

        + +
        + +
                            min = Math.min(min, totalNoise);
        +                    max = Math.max(max, totalNoise);
        +                }
        +            }
        + +
      • + + +
      • +
        + +
        + +
        +

        Calculate the span of numbers generated - we need to get all the results in the range 0 to 1

        + +
        + +
                    let noiseSpan = max - min;
        +
        +            for (y = 0; y < height; y++) {
        +                for (x = 0; x < width; x++) {
        +
        +                    scaledX = x * relativeScale;
        +                    scaledY = y * relativeScale;
        + +
      • + + +
      • +
        + +
        + +
        +

        Clamp the cell’s noise value to between 0 and 1, then update it with the post-calculation sumFunction, if required

        + +
        + +
                            let clampedVal = (noiseValues[y][x] - min) / noiseSpan;
        +                    noiseValues[y][x] = sumFunction.call(this, clampedVal, x * relativeScale, y * relativeScale);
        +                }
        +            }
        + +
      • + + +
      • +
        + +
        + +
        +

        Update the cached noise values arrays

        + +
        + +
                    this.noiseValues = noiseValues;
        +        }
        +        else this.dirtyNoise = true;
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        paintCanvas - internal function called by the cleanOutput function

        + +
        + +
        P.paintCanvas = function () {
        +
        +    if (this.dirtyOutput) {
        +
        +        this.dirtyOutput = false;
        +
        +        let {noiseValues, element, engine, width, height, color, colorFactory, monochromeStart, monochromeRange, hueStart, hueRange, saturation, luminosity} = this;
        + +
      • + + +
      • +
        + +
        + +
        +

        Noise values will be calculated in the cleanNoise function, but just in case this function gets invoked directly before the 2d array has been created …

        + +
        + +
                if (null != noiseValues) {
        + +
      • + + +
      • +
        + +
        + +
        +

        Update the Canvas element’s dimensions - this will also clear the canvas display

        + +
        + +
                    element.width = width;
        +            element.height = height;
        + +
      • + + +
      • +
        + +
        + +
        +

        Rebuild the display, pixel-by-pixel

        + +
        + +
                    switch (color) {
        +
        +                case 'hue' :
        +
        +                    for (let y = 0; y < height; y++) {
        +                        for (let x = 0; x < width; x++) {
        +
        +                            engine.fillStyle = `hsl(${(hueStart + (noiseValues[y][x] * hueRange)) % 360}, ${saturation}%, ${luminosity}%)`;
        +                            engine.fillRect(x, y, 1, 1);
        +                        }
        +                    }
        +                    break;
        +
        +                case 'gradient' :
        +
        +                    for (let y = 0; y < height; y++) {
        +                        for (let x = 0; x < width; x++) {
        +
        +                            engine.fillStyle = colorFactory.getRangeColor(noiseValues[y][x]);
        +                            engine.fillRect(x, y, 1, 1);
        +                        }
        +                    }
        +                    break;
        + +
      • + + +
      • +
        + +
        + +
        +

        The default color preference is monochrome

        + +
        + +
                        default :
        +
        +                    if (monochromeRange > 0) {
        +
        +                        if (monochromeStart + monochromeRange > 255) monochromeRange = 255 - monochromeStart;
        +                    }
        +                    else if (monochromeRange < 0) {
        +
        +                        if (monochromeStart - monochromeRange < 0) monochromeRange = monochromeStart;
        +                    }
        +
        +                    for (let y = 0; y < height; y++) {
        +                        for (let x = 0; x < width; x++) {
        +
        +                            let gray = Math.floor(monochromeStart + (noiseValues[y][x] * monochromeRange));
        +
        +                            engine.fillStyle = `rgb(${gray}, ${gray}, ${gray})`;
        +
        +                            engine.fillRect(x, y, 1, 1);
        +                        }
        +                    }
        +            }
        +        }
        +        else this.dirtyOutput = true;
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Noise generator functionality

        + +
        + +
      • + + +
      • +
        + +
        + +
        +

        Convenience constants +P.F = 0.5 * (Math.sqrt(3) - 1); +P.G = (3 - Math.sqrt(3)) / 6;

        + +
        + +
        P.simplexConstantF = 0.5 * (Math.sqrt(3) - 1);
        +P.simplexConstantG = (3 - Math.sqrt(3)) / 6;
        +P.simplexConstantDoubleG = ((3 - Math.sqrt(3)) / 6) * 2;
        +P.perlinGrad = [[1, 1], [-1, 1], [1, -1], [-1, -1], [1, 0], [-1, 0], [0, 1], [0, -1]];
        + +
      • + + +
      • +
        + +
        + +
        +

        noiseEngines - a {key:object} object. Each named object contains two functions:

        +
          +
        • init - invoked to prepare the engine for a bout of calculations - called by the cleanNoise function
        • +
        • getNoiseValue - a function called on a per-pixel basis, which calculates the noise value for that pixel
        • +
        + +
        + +
        P.noiseEngines = {
        +
        +    'perlin': {
        +
        +        init: function () {
        +
        +            const {grad, size, rndEngine} = this;
        +
        +            let dist;
        +            
        +            grad.length = 0;
        +
        +            for(let i = 0; i < size; i++) {
        +
        +                grad[i] = [(rndEngine.random() * 2) - 1, (rndEngine.random() * 2) - 1];
        +                dist = Math.sqrt(grad[i][0] *  grad[i][0] + grad[i][1] * grad[i][1]);
        +                grad[i][0] /= dist;
        +                grad[i][1] /= dist;
        +            }
        +        },
        +
        +        getNoiseValue: function (x, y) {
        +
        +            const {size, perm, grad, smoothing} = this;
        +
        +            let a, b, u, v;
        +
        +            let bx0 = Math.floor(x) % size,
        +                bx1 = (bx0 + 1) % size;
        +
        +            let rx0 = x - Math.floor(x),
        +                rx1 = rx0 - 1;
        +
        +            let by0 = Math.floor(y) % size,
        +                by1 = (by0 + 1) % size;
        +
        +            let ry0 = y - Math.floor(y),
        +                ry1 = ry0 - 1;
        +
        +            let i = perm[bx0],
        +                j = perm[bx1];
        +
        +            let b00 = perm[i + by0],
        +                b10 = perm[j + by0],
        +                b01 = perm[i + by1],
        +                b11 = perm[j + by1];
        +
        +            let sx = smoothing(rx0),
        +                sy = smoothing(ry0);
        +            
        +            u = rx0 * grad[b00][0] + ry0 * grad[b00][1];
        +            v = rx1 * grad[b10][0] + ry0 * grad[b10][1];
        +            a = interpolate(sx, u, v);
        +            
        +            u = rx0 * grad[b01][0] + ry1 * grad[b01][1];
        +            v = rx1 * grad[b11][0] + ry1 * grad[b11][1];
        +            b = interpolate(sx, u, v);
        +            
        +            return 0.5 * (1 + interpolate(sy, a, b));
        +        },
        +    },
        +
        +    'improved-perlin': {
        +
        +        init: λnull,
        +
        +        getNoiseValue: function (x, y) {
        +
        +            const {size, perm, permMod8, perlinGrad, smoothing} = this;
        +
        +            let a, b, u, v;
        +
        +            let bx0 = Math.floor(x) % size, 
        +                bx1 = (bx0 + 1) % size;
        +
        +            let rx0 = x - Math.floor(x), 
        +                rx1 = rx0 - 1;
        +
        +            let by0 = Math.floor(y) % size, 
        +                by1 = (by0 + 1) % size;
        +
        +            let ry0 = y - Math.floor(y), 
        +                ry1 = ry0 - 1;
        +
        +            let i = perm[bx0], 
        +                j = perm[bx1]; 
        +
        +            let b00 = permMod8[i + by0], 
        +                b10 = permMod8[j + by0], 
        +                b01 = permMod8[i + by1], 
        +                b11 = permMod8[j + by1];
        +            
        +            let sx = smoothing(rx0),
        +                sy = smoothing(ry0);
        +            
        +            u = rx0 * perlinGrad[b00][0] + ry0 * perlinGrad[b00][1];
        +            v = rx1 * perlinGrad[b10][0] + ry0 * perlinGrad[b10][1];
        +            a = interpolate(sx, u, v);
        +            
        +            u = rx0 * perlinGrad[b01][0] + ry1 * perlinGrad[b01][1];
        +            v = rx1 * perlinGrad[b11][0] + ry1 * perlinGrad[b11][1];
        +            b = interpolate(sx, u, v);
        +
        +            return 0.5 * (1 + interpolate(sy, a, b));
        +        }
        +    },
        +
        +    'simplex': {
        +
        +        init: λnull,
        +
        +        getNoiseValue: function (x, y) {
        +
        +            const getCornerNoise = function (cx, cy, gridPos) {
        +
        +                let calc = 0.5 - (cx * cx) - (cy * cy);
        +                if (calc < 0) return 0;
        +
        +                let [gx, gy] = perlinGrad[gridPos];
        +                return calc * calc * ((gx * cx) + (gy * cy));
        +            };
        +            
        +            const {simplexConstantF, simplexConstantG, simplexConstantDoubleG, size, perlinGrad, perm, permMod8} = this;
        +            
        +            let summedCoordinates = (x + y) * simplexConstantF,
        +                summedX = Math.floor(x + summedCoordinates),
        +                summedY = Math.floor(y + summedCoordinates),
        +                modifiedSummedCoordinates = (summedX + summedY) * simplexConstantG;
        +
        +            let cornerX = x - (summedX - modifiedSummedCoordinates),
        +                cornerY = y - (summedY - modifiedSummedCoordinates);
        +            
        +            let remainderX = summedX % size,
        +                remainderY = summedY % size;
        +
        +            let pos = permMod8[remainderX + perm[remainderY]],
        +                noise = getCornerNoise(cornerX, cornerY, pos);
        +
        +            pos = permMod8[remainderX + 1 + perm[remainderY + 1]]
        +            noise += getCornerNoise((cornerX - 1 + simplexConstantDoubleG), (cornerY - 1 + simplexConstantDoubleG), pos);
        +
        +            let unitA = 0,
        +                unitB = 1;
        +
        +            if (cornerX > cornerY) {
        +                unitA = 1;
        +                unitB = 0;
        +            }
        +
        +            pos = permMod8[remainderX + unitA + perm[remainderY + unitB]];
        +            noise += getCornerNoise((cornerX - unitA + simplexConstantG), (cornerY - unitB + simplexConstantG), pos);
        +
        +            return 0.5 + (35 * noise);
        +        },
        +    },
        +
        +    'value': {
        +
        +        init: function () {
        +
        +            const {values, size, rndEngine} = this;
        +
        +            values.length = 0;
        +
        +            for(let i = 0; i < size; i++) {
        +
        +                values[i] = values[i + size] = rndEngine.random();
        +            }
        +        },
        +
        +        getNoiseValue: function (x, y) {
        +
        +            const {values, size, perm, smoothing} = this;
        +
        +            let x0 = Math.floor(x) % size,
        +                y0 = Math.floor(y) % size,
        +                x1 = (x0 + 1) % size,
        +                y1 = (y0 + 1) % size,
        +                vx = x - Math.floor(x),
        +                vy = y - Math.floor(y),
        +                sx = smoothing(vx),
        +                sy = smoothing(vy),
        +                i = perm[x0],
        +                j = perm[x1],
        +                p00 = perm[i + y0],
        +                p10 = perm[j + y0],
        +                p01 = perm[i + y1],
        +                p11 = perm[j + y1],
        +                i1 = interpolate(sx, values[p00], values[p10]),
        +                i2 = interpolate(sx, values[p01], values[p11]);
        +
        +            return interpolate(sy, i1, i2);
        +        },
        +    },
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        generatePermutationTable - internal function called by the cleanNoise function

        +
          +
        • The permutation tables get recalculated each time the noise data gets cleaned
        • +
        • rndEngine is a seedable pseudo-random number generator
        • +
        + +
        + +
        P.generatePermutationTable = function () {
        +
        +    const {perm, permMod8, rndEngine, size} = this;
        +
        +    perm.length = 0;
        +    permMod8.length = 0;
        +
        +    let i, j, k;
        +
        +    for(i = 0; i < size; i++) {
        +
        +        perm[i] = i;
        +    }
        +    
        +    while (--i) {
        +
        +        j = Math.floor(rndEngine.random() * size);
        +        k = perm[i];
        +        perm[i] = perm[j];
        +        perm[j] = k;
        +    }
        +    
        +    for(i = 0; i < size; i++) {
        +
        +        perm[i + size] = perm[i];
        +        permMod8[i] = permMod8[i + size] = perm[i] % 8;
        +    }
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        octaveFunctions - a {key:functions} object holding functions used to modify octave loop results

        +
          +
        • calling signature: octaveFunction(octave, scaledX, scaledY, o + 1)
        • +
        + +
        + +
        P.octaveFunctions = {
        +
        +    none: λfirstArg,
        +    absolute: function (octave) { return Math.abs((octave * 2) - 1) },
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        sumFunctions - a {key:functions} object holding functions used to modify noise values after their calculation has completed (post-processing)

        +
          +
        • calling signature: sumFunction.call(this, clampedVal, x * relativeScale, y * relativeScale)
        • +
        + +
        + +
        P.sumFunctions = {
        +
        +    none: λfirstArg,
        +
        +    'sine-x': function (v, sx, sy) { return 0.5 + (Math.sin((sx * this.sineFrequencyCoeff) + v) / 2) },
        +    'sine-y': function (v, sx, sy) { return 0.5 + (Math.sin((sy * this.sineFrequencyCoeff) + v) / 2) },
        +    sine: function (v, sx, sy) { return 0.5 + (Math.sin((sx * this.sineFrequencyCoeff) + v) / 4) + (Math.sin((sy * this.sineFrequencyCoeff) + v) / 4) },
        +
        +    modular: function(v) {
        +        let g = v * this.modularAmplitude;
        +        return g - Math.floor(g);
        +    },
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        smoothingFunctions - a {key:function} object containing various fade functions which can be used to smooth calculated coordinate values so that they will ease towards integral values.

        +
          +
        • Used by the “perlin_classic”, “perlin_improved” and “value” getNoiseValue functions; the “simplex” getNoiseValue function does away with the need for a smoothing operation.
        • +
        • calling signature: smoothing(value)
        • +
        + +
        + +
        P.smoothingFunctions = {
        + +
      • + + +
      • +
        + +
        + +
        +

        none - effectively linear - no smoothing gets performed

        + +
        + +
            none: λfirstArg,
        +
        +    easeOutSine,
        +    easeInSine,
        +    easeOutInSine,
        +    easeOutQuad,
        +    easeInQuad,
        +    easeOutInQuad,
        +    easeOutCubic,
        +    easeInCubic,
        +    easeOutInCubic,
        +    easeOutQuart,
        +    easeInQuart,
        +    easeOutInQuart,
        +    easeOutQuint,
        +    easeInQuint,
        +    easeOutInQuint,
        +    easeOutExpo,
        +    easeInExpo,
        +    easeOutInExpo,
        +    easeOutCirc,
        +    easeInCirc,
        +    easeOutInCirc,
        +    easeOutBack,
        +    easeInBack,
        +    easeOutInBack,
        +    easeOutElastic,
        +    easeInElastic,
        +    easeOutInElastic,
        +    easeOutBounce,
        +    easeInBounce,
        +    easeOutInBounce,
        + +
      • + + +
      • +
        + +
        + +
        +

        cosine - a cosine-based interpolator

        + +
        + +
            cosine: function(t) { return .5 * (1 + Math.cos((1 - t) * Math.PI)) },
        + +
      • + + +
      • +
        + +
        + +
        +

        hermite - a cubic Hermite interpolator

        + +
        + +
            hermite: function(t) { return t * t * (-t * 2 + 3) },
        + +
      • + + +
      • +
        + +
        + +
        +

        quintic - the original ease function used by Perlin

        + +
        + +
            quintic: function(t) { return t * t * t * (t * (t * 6 - 15) + 10) },
        +};
        + +
      • + + +
      • +
        + +
        + +
        +

        Factory

        +
        scrawl.makeNoise({
        +    name: 'my-noise-generator',
        +    width: 50,
        +    height: 50,
        +    octaves: 5,
        +    scale: 2,
        +    noiseFunction: 'simplex',
        +});
        + +
        + +
        const makeNoise = function (items) {
        +    return new Noise(items);
        +};
        +
        +constructors.Noise = Noise;
        + +
      • + + +
      • +
        + +
        + +
        +

        Exports

        + +
        + +
        export {
        +    makeNoise,
        +};
        + +
      • + +
      +
      + + diff --git a/docs/source/factory/oval.html b/docs/source/factory/oval.html index f2381f6b7..53cf6ef44 100644 --- a/docs/source/factory/oval.html +++ b/docs/source/factory/oval.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/palette.html b/docs/source/factory/palette.html index 7ec9b3ccb..1587a0217 100644 --- a/docs/source/factory/palette.html +++ b/docs/source/factory/palette.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/particle.html b/docs/source/factory/particle.html index ba024afed..ba72662f2 100644 --- a/docs/source/factory/particle.html +++ b/docs/source/factory/particle.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/particleForce.html b/docs/source/factory/particleForce.html index 886405d46..d6a67be65 100644 --- a/docs/source/factory/particleForce.html +++ b/docs/source/factory/particleForce.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/particleHistory.html b/docs/source/factory/particleHistory.html index 894f2b0b7..7ecb0b9ec 100644 --- a/docs/source/factory/particleHistory.html +++ b/docs/source/factory/particleHistory.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/particleSpring.html b/docs/source/factory/particleSpring.html index b28173fd6..1cc0e5505 100644 --- a/docs/source/factory/particleSpring.html +++ b/docs/source/factory/particleSpring.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/particleWorld.html b/docs/source/factory/particleWorld.html index ebe28b297..906f80b6c 100644 --- a/docs/source/factory/particleWorld.html +++ b/docs/source/factory/particleWorld.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/pattern.html b/docs/source/factory/pattern.html index 03d64c929..db66fd7eb 100644 --- a/docs/source/factory/pattern.html +++ b/docs/source/factory/pattern.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -573,7 +578,7 @@

      Mixins

      Pattern attributes

      • Attributes defined in the base mixin: name.
      • -
      • Attributes defined in the pattern mixin: repeat.
      • +
      • Attributes defined in the pattern mixin: repeat, patternMatrix, matrixA, matrixB, matrixC, matrixD, matrixE, matrixF.
      • Attributes defined in the assetConsumer mixin: asset, spriteTrack, imageSource, spriteSource, videoSource, source.
      diff --git a/docs/source/factory/phrase.html b/docs/source/factory/phrase.html index ed13f62a8..6ac5316fd 100644 --- a/docs/source/factory/phrase.html +++ b/docs/source/factory/phrase.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/picture.html b/docs/source/factory/picture.html index c6cac4722..57d364ad3 100644 --- a/docs/source/factory/picture.html +++ b/docs/source/factory/picture.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/polygon.html b/docs/source/factory/polygon.html index d6989cf50..70f61327f 100644 --- a/docs/source/factory/polygon.html +++ b/docs/source/factory/polygon.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/polyline.html b/docs/source/factory/polyline.html index 7db15fdaa..fc7f5eea3 100644 --- a/docs/source/factory/polyline.html +++ b/docs/source/factory/polyline.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/quadratic.html b/docs/source/factory/quadratic.html index 346255c19..bf66cb9b4 100644 --- a/docs/source/factory/quadratic.html +++ b/docs/source/factory/quadratic.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/quaternion.html b/docs/source/factory/quaternion.html index 2ed0fc800..63d4a02a5 100644 --- a/docs/source/factory/quaternion.html +++ b/docs/source/factory/quaternion.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/radialGradient.html b/docs/source/factory/radialGradient.html index b488d35e4..1653b011b 100644 --- a/docs/source/factory/radialGradient.html +++ b/docs/source/factory/radialGradient.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/rectangle.html b/docs/source/factory/rectangle.html index 50aeb383e..0757eb023 100644 --- a/docs/source/factory/rectangle.html +++ b/docs/source/factory/rectangle.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/renderAnimation.html b/docs/source/factory/renderAnimation.html index e04734464..db7721b4d 100644 --- a/docs/source/factory/renderAnimation.html +++ b/docs/source/factory/renderAnimation.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/shape.html b/docs/source/factory/shape.html index 8b34c6444..628abc533 100644 --- a/docs/source/factory/shape.html +++ b/docs/source/factory/shape.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/spiral.html b/docs/source/factory/spiral.html index d057a5038..49c001d83 100644 --- a/docs/source/factory/spiral.html +++ b/docs/source/factory/spiral.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/spriteAsset.html b/docs/source/factory/spriteAsset.html index 0456c005c..63204ec62 100644 --- a/docs/source/factory/spriteAsset.html +++ b/docs/source/factory/spriteAsset.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/stack.html b/docs/source/factory/stack.html index 7c576eee2..90b7e4d32 100644 --- a/docs/source/factory/stack.html +++ b/docs/source/factory/stack.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/star.html b/docs/source/factory/star.html index 39e812b1d..5b7bb1b12 100644 --- a/docs/source/factory/star.html +++ b/docs/source/factory/star.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/state.html b/docs/source/factory/state.html index 2ace3daf0..0f7c6d38c 100644 --- a/docs/source/factory/state.html +++ b/docs/source/factory/state.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/tetragon.html b/docs/source/factory/tetragon.html index 1a88661c3..ee2364806 100644 --- a/docs/source/factory/tetragon.html +++ b/docs/source/factory/tetragon.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/ticker.html b/docs/source/factory/ticker.html index c7501438d..c45442e0d 100644 --- a/docs/source/factory/ticker.html +++ b/docs/source/factory/ticker.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/tracer.html b/docs/source/factory/tracer.html index 87c5da2a6..d542e46e7 100644 --- a/docs/source/factory/tracer.html +++ b/docs/source/factory/tracer.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/factory/tween.html b/docs/source/factory/tween.html index 6615e6d46..9aca6ac9d 100644 --- a/docs/source/factory/tween.html +++ b/docs/source/factory/tween.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -539,7 +544,7 @@

      Imports

      import { constructors, animationtickers, radian } from '../core/library.js';
      -import { mergeOver, pushUnique, xt, xtGet, xto, convertTime, λnull } from '../core/utilities.js';
      +import { mergeOver, pushUnique, xt, xtGet, xto, convertTime, λnull, easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce } from '../core/utilities.js';
       
       import { makeTicker } from './ticker.js';
       
      @@ -1683,8 +1688,7 @@ 

      Animation

          linear: function (start, change, position) {
       
               return start + (position * change);
      -    }
      -};
      + },
      @@ -1695,6 +1699,171 @@

      Animation

      +

      The following easing functions have been taken from the easings.net web page: easeOutSine, easeInSine, easeOutInSine, easeOutQuad, easeInQuad, easeOutInQuad, easeOutCubic, easeInCubic, easeOutInCubic, easeOutQuart, easeInQuart, easeOutInQuart, easeOutQuint, easeInQuint, easeOutInQuint, easeOutExpo, easeInExpo, easeOutInExpo, easeOutCirc, easeInCirc, easeOutInCirc, easeOutBack, easeInBack, easeOutInBack, easeOutElastic, easeInElastic, easeOutInElastic, easeOutBounce, easeInBounce, easeOutInBounce

      + + + +
      +    easeOutSine: function (start, change, position) {
      +
      +        return start + (change * easeOutSine(position));
      +    }, 
      +
      +    easeInSine: function (start, change, position) {
      +
      +        return start + (change * easeInSine(position));
      +    }, 
      +
      +    easeOutInSine: function (start, change, position) {
      +
      +        return start + (change * easeOutInSine(position));
      +    }, 
      +
      +    easeOutQuad: function (start, change, position) {
      +
      +        return start + (change * easeOutQuad(position));
      +    }, 
      +
      +    easeInQuad: function (start, change, position) {
      +
      +        return start + (change * easeInQuad(position));
      +    }, 
      +
      +    easeOutInQuad: function (start, change, position) {
      +
      +        return start + (change * easeOutInQuad(position));
      +    }, 
      +
      +    easeOutCubic: function (start, change, position) {
      +
      +        return start + (change * easeOutCubic(position));
      +    }, 
      +
      +    easeInCubic: function (start, change, position) {
      +
      +        return start + (change * easeInCubic(position));
      +    }, 
      +
      +    easeOutInCubic: function (start, change, position) {
      +
      +        return start + (change * easeOutInCubic(position));
      +    }, 
      +
      +    easeOutQuart: function (start, change, position) {
      +
      +        return start + (change * easeOutQuart(position));
      +    }, 
      +
      +    easeInQuart: function (start, change, position) {
      +
      +        return start + (change * easeInQuart(position));
      +    }, 
      +
      +    easeOutInQuart: function (start, change, position) {
      +
      +        return start + (change * easeOutInQuart(position));
      +    }, 
      +
      +    easeOutQuint: function (start, change, position) {
      +
      +        return start + (change * easeOutQuint(position));
      +    }, 
      +
      +    easeInQuint: function (start, change, position) {
      +
      +        return start + (change * easeInQuint(position));
      +    }, 
      +
      +    easeOutInQuint: function (start, change, position) {
      +
      +        return start + (change * easeOutInQuint(position));
      +    }, 
      +
      +    easeOutExpo: function (start, change, position) {
      +
      +        return start + (change * easeOutExpo(position));
      +    }, 
      +
      +    easeInExpo: function (start, change, position) {
      +
      +        return start + (change * easeInExpo(position));
      +    }, 
      +
      +    easeOutInExpo: function (start, change, position) {
      +
      +        return start + (change * easeOutInExpo(position));
      +    }, 
      +
      +    easeOutCirc: function (start, change, position) {
      +
      +        return start + (change * easeOutCirc(position));
      +    }, 
      +
      +    easeInCirc: function (start, change, position) {
      +
      +        return start + (change * easeInCirc(position));
      +    }, 
      +
      +    easeOutInCirc: function (start, change, position) {
      +
      +        return start + (change * easeOutInCirc(position));
      +    }, 
      +
      +    easeOutBack: function (start, change, position) {
      +
      +        return start + (change * easeOutBack(position));
      +    }, 
      +
      +    easeInBack: function (start, change, position) {
      +
      +        return start + (change * easeInBack(position));
      +    }, 
      +
      +    easeOutInBack: function (start, change, position) {
      +
      +        return start + (change * easeOutInBack(position));
      +    }, 
      +
      +    easeOutElastic: function (start, change, position) {
      +
      +        return start + (change * easeOutElastic(position));
      +    }, 
      +
      +    easeInElastic: function (start, change, position) {
      +
      +        return start + (change * easeInElastic(position));
      +    }, 
      +
      +    easeOutInElastic: function (start, change, position) {
      +
      +        return start + (change * easeOutInElastic(position));
      +    }, 
      +
      +    easeOutBounce: function (start, change, position) {
      +
      +        return start + (change * easeOutBounce(position));
      +    }, 
      +
      +    easeInBounce: function (start, change, position) {
      +
      +        return start + (change * easeInBounce(position));
      +    }, 
      +
      +    easeOutInBounce: function (start, change, position) {
      +
      +        return start + (change * easeOutInBounce(position));
      +    }, 
      +};
      + + + + +
    • +
      + +
      + +

      setDefinitionsValues - convert start and end values into float Numbers.

    • diff --git a/docs/source/mixin/anchor.html b/docs/source/mixin/anchor.html index e78c6ab9b..a29bfc846 100644 --- a/docs/source/mixin/anchor.html +++ b/docs/source/mixin/anchor.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/asset.html b/docs/source/mixin/asset.html index 9f5edf5c4..9b53f2ab8 100644 --- a/docs/source/mixin/asset.html +++ b/docs/source/mixin/asset.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -847,11 +852,12 @@
      Subscribe and unsubscribe to an a
      -

      notifySubscribers - Subscriber notification in the asset factories will happen when something changes with the image. Changes vary across the different types of asset:

      +

      notifySubscribers, notifySubscriber - Subscriber notification in the asset factories will happen when something changes with the image. Changes vary across the different types of asset:

      • imageAsset - needs to update its subscribers when an image completes loading - or, for <img> sources with srcset (and sizes) attributes, when the image completes a reload of its source data.
      • spriteAsset - will also update its subscribers each time it moves to a new sprite image frame, if the sprite is being animated
      • videoAsset - will update its subscribers for every RAF tick while the video is playing, or if the video is halted and seeks to a different time in the video play stream.
      • +
      • Noise - will update its subscribers when any of its attributes changes (Note: factory/noise.js overwrites these functions).

      All notifications are push; the notification is achieved by setting various attributes and flags in each subscriber.

      diff --git a/docs/source/mixin/assetConsumer.html b/docs/source/mixin/assetConsumer.html index 6904fdace..54837b22d 100644 --- a/docs/source/mixin/assetConsumer.html +++ b/docs/source/mixin/assetConsumer.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/base.html b/docs/source/mixin/base.html index c98e7456f..21cd6ff9a 100644 --- a/docs/source/mixin/base.html +++ b/docs/source/mixin/base.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/cascade.html b/docs/source/mixin/cascade.html index 1d9f8be92..89ad54e4e 100644 --- a/docs/source/mixin/cascade.html +++ b/docs/source/mixin/cascade.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/delta.html b/docs/source/mixin/delta.html index 5d0b4b79e..68cbb8f6b 100644 --- a/docs/source/mixin/delta.html +++ b/docs/source/mixin/delta.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/displayShape.html b/docs/source/mixin/displayShape.html index 5d8c48f56..b8ca5a9c5 100644 --- a/docs/source/mixin/displayShape.html +++ b/docs/source/mixin/displayShape.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/dom.html b/docs/source/mixin/dom.html index afcd49748..84b593933 100644 --- a/docs/source/mixin/dom.html +++ b/docs/source/mixin/dom.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/entity.html b/docs/source/mixin/entity.html index 1bcbb9a7f..bdfcd38b7 100644 --- a/docs/source/mixin/entity.html +++ b/docs/source/mixin/entity.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -476,6 +481,7 @@

      Imports

      import { λnull, mergeOver, pushUnique, xt, addStrings, isa_obj } from '../core/utilities.js';
       import { currentGroup, scrawlCanvasHold } from '../core/document.js';
      +import { asset } from '../core/library.js';
       
       import { makeState } from '../factory/state.js';
       import { requestCell, releaseCell } from '../factory/cell.js';
      @@ -1585,6 +1591,9 @@ 
      Step 2: invoke the entity’s st if (worker) releaseFilterWorker(worker); currentEngine.save(); + + currentEngine.globalAlpha = self.state.globalAlpha; + currentEngine.globalCompositeOperation = self.state.globalCompositeOperation; currentEngine.setTransform(1, 0, 0, 1, 0, 0); @@ -1770,6 +1779,21 @@
      Step 2: invoke the entity’s st
      +

      NEED TO POPULATE IMAGE FILTER ACTION OBJECTS WITH THEIR ASSET’S IMAGEDATA AT THIS POINT

      + +
      + +
                      self.preprocessFilters(self.currentFilters);
      + + + + +
    • +
      + +
      + +

      Pass control over to the web worker

      @@ -1783,11 +1807,11 @@
      Step 2: invoke the entity’s st
    • -
    • +
    • - +

      Handle the web worker response

      @@ -1815,11 +1839,11 @@
      Step 2: invoke the entity’s st
    • -
    • +
    • - +

      Where no filter is required, but we still want to stash the results

      @@ -1836,11 +1860,11 @@
      Step 2: invoke the entity’s st
    • -
    • +
    • - +

      getCellCoverage - internal helper function - calculates the box start and dimensions values for the entity on its current Cell host, to help minimize work required when applying filters to the entity output. Also used when building an image when the scrawl.createImageFromEntity function is invoked.

      @@ -1880,11 +1904,11 @@
      Step 2: invoke the entity’s st
    • -
    • +
    • - +

      simpleStamp - an alternative to the stamp function, to get an entity to stamp its output onto a Cell.

        @@ -1910,11 +1934,11 @@
        Step 2: invoke the entity’s st -
      • +
      • - +
        Stamping the entity onto a Cell wrapper <canvas> element

        regularStampSynchronousActions - this function coordinates the actions required for an entity to display its output on a Cell wrapper’s <canvas> element.

        @@ -1934,11 +1958,11 @@
        Stamping the ent
      • -
      • +
      • - +

        Get a handle to the Cell wrapper - which needs to be assigned and checked prior to calling this function

        @@ -1956,11 +1980,11 @@
        Stamping the ent
      • -
      • +
      • - +

        Get the Cell wrapper to perform required transformations on its <canvas> element’s 2D engine

        @@ -1971,11 +1995,11 @@
        Stamping the ent
      • -
      • +
      • - +

        Get the Cell wrapper to update its 2D engine’s attributes to match the entity’s requirements

        @@ -1986,11 +2010,11 @@
        Stamping the ent
      • -
      • +
      • - +

        Invoke the appropriate stamping method (below)

        @@ -2003,11 +2027,11 @@
        Stamping the ent
      • -
      • +
      • - +
        Stamp methods

        All actual drawing is achieved using the entity’s pre-calculated Path2D object.

        @@ -2017,11 +2041,11 @@
        Stamp methods
      • -
      • +
      • - +

        draw - stroke the entity outline with the entity’s strokeStyle color, gradient or pattern - including shadow

        @@ -2035,11 +2059,11 @@
        Stamp methods
      • -
      • +
      • - +

        fill - fill the entity with the entity’s fillStyle color, gradient or pattern - including shadow

        @@ -2053,11 +2077,11 @@
        Stamp methods
      • -
      • +
      • - +

        drawAndFill - stroke the entity’s outline, remove shadow, then fill it

        @@ -2075,11 +2099,11 @@
        Stamp methods
      • -
      • +
      • - +

        fillAndDraw - fill the entity’s outline, remove shadow, then stroke it

        @@ -2098,11 +2122,11 @@
        Stamp methods
      • -
      • +
      • - +

        drawThenFill - stroke the entity’s outline, then fill it (shadow applied twice)

        @@ -2119,11 +2143,11 @@
        Stamp methods
      • -
      • +
      • - +

        fillThenDraw - fill the entity’s outline, then stroke it (shadow applied twice)

        @@ -2140,11 +2164,11 @@
        Stamp methods
      • -
      • +
      • - +

        clip - restrict drawing activities to the entity’s enclosed area

        @@ -2158,11 +2182,11 @@
        Stamp methods
      • -
      • +
      • - +

        clear - remove everything that would have been covered if the entity had performed fill (including shadow)

        @@ -2181,11 +2205,11 @@
        Stamp methods
      • -
      • +
      • - +

        none - perform all the calculations required, but don’t perform the final stamping

        @@ -2196,11 +2220,11 @@
        Stamp methods
      • -
      • +
      • - +

        Return the prototype

        diff --git a/docs/source/mixin/filter.html b/docs/source/mixin/filter.html index 5be377a61..5ad637748 100644 --- a/docs/source/mixin/filter.html +++ b/docs/source/mixin/filter.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
    • @@ -484,8 +489,9 @@

      Imports

      -
      import { filter } from '../core/library.js';
      -import { mergeOver, pushUnique, removeItem } from '../core/utilities.js';
      +
      import { filter, asset } from '../core/library.js';
      +import { mergeOver, pushUnique, removeItem } from '../core/utilities.js';
      +import { requestCell, releaseCell } from '../factory/cell.js';
      @@ -530,7 +536,8 @@

      filters - An array of filter object String names. If only one filter is to be applied, then it is enough to use the String name of that filter object - Scrawl-canvas will make sure it gets added to the Array.

      • To add/remove new filters to the filters array, use the addFilters and removeFilters functions. Note that the set function will replace all the existing filters in the array with the new filters. To remove all existing filters from the array, use the clearFilters function
      • -
      • Multiple filters can be batch-applied to an entity, group of entitys, or an entire cell in one operation. Filters are applied in the order that they appear in in the filters array.
      • +
      • Multiple filters will be batch-applied to an entity, group of entitys, or an entire cell in one operation. Filters are applied in the order that they appear in in the filters array.
      • +
      • Be aware that the “filters” (plural) attribute is different to the CSS/SVG “filter” (singular) attribute - details about how Scrawl-canvas uses CSS/SVG filter Strings to produce filtering effects (at the entity and Cell levels only) are investigated in the Filter Demos 051 to 055. CSS/SVG filter Strings can be applied in addition to Scrawl-canvas filters Array objects, and will be applied after them.
      @@ -546,7 +553,7 @@
      -

      isStencil - Use the entity as a stencil.

      +

      isStencil - Use the entity as a stencil. When this flag is set filter effects will be applied to the background imagery covered by the entity (or Group of entitys, or Cell), the results of which will replace the entity/Group/Cell in the final display.

      @@ -578,7 +585,7 @@

      Get, Set, deltaSet

      -

      filters - Replaces the existing filters array with a new filters array. If a string name is supplied, will add that name to the existing filters array

      +

      filters - ___Dangerous action!__ - replaces the existing filters Array with a new filters Array. If a string name is supplied, will add that name to the existing filters array

      @@ -591,13 +598,15 @@

      Get, Set, deltaSet

      if (Array.isArray(item)) { this.filters = item; + this.dirtyFilters = true; this.dirtyImageSubscribers = true; } else if (item.substring) { - pushUnique(this.filters, item); + pushUnique(this.filters, item); + this.dirtyFilters = true; this.dirtyImageSubscribers = true; } @@ -670,19 +679,7 @@

      Get, Set, deltaSet

      Prototype functions

      - - - - - - -
    • -
      - -
      - -
      -

      cleanFilters - Internal housekeeping

      +

      cleanFilters - Internal housekeeping

      @@ -700,11 +697,15 @@

      Prototype functions

      myfilters.forEach(name => { myobj = filter[name]; - order = floor(myobj.order) || 0; - if (!buckets[order]) buckets[order] = []; + if (myobj) { + + order = floor(myobj.order) || 0; + + if (!buckets[order]) buckets[order] = []; - buckets[order].push(myobj); + buckets[order].push(myobj); + } }); this.currentFilters = buckets.reduce((a, v) => a.concat(v), []); @@ -713,13 +714,13 @@

      Prototype functions

    • -
    • +
    • - +
      -

      addFilters - Add one or more filter name strings to the filters array. Filter name strings can be supplied as comma-separated arguments to the function

      +

      addFilters, removeFilters - Add or remove one or more filter name strings to/from the filters array. Filter name strings can be supplied as comma-separated arguments to the function

      @@ -729,43 +730,26 @@

      Prototype functions

      args.forEach(item => { - if (this.name, 'addFilters', item) { + if (item && item.type === 'Filter') item = item.name; + pushUnique(this.filters, item); - if (item.substring) pushUnique(this.filters, item); - else if (item.type === 'Filter') pushUnique(this.filters, item.name); - } }, this); this.dirtyFilters = true; this.dirtyImageSubscribers = true; return this; - }; - -
    • - - -
    • -
      - -
      - -
      -

      removeFilters - Remove one or more filter name strings from the filters array. Filter name strings can be supplied as comma-separated arguments to the function

      + }; -
      - -
          P.removeFilters = function (...args) {
      +    P.removeFilters = function (...args) {
       
               if (!Array.isArray(this.filters)) this.filters = [];
       
               args.forEach(item => {
       
      -            if (item) {
      +            if (item && item.type === 'Filter') item = item.name;
      +            removeItem(this.filters, item);
       
      -                if (item.substring) removeItem(this.filters, item);
      -                else if (item.type === 'Filter') removeItem(this.filters, item.name);
      -            }
               }, this);
       
               this.dirtyFilters = true;
      @@ -777,11 +761,11 @@ 

      Prototype functions

    • -
    • +
    • - +

      clearFilters - Clears the filters array

      @@ -802,11 +786,130 @@

      Prototype functions

    • -
    • +
    • +
      + +
      + +
      +

      preprocessFilters - internal function called as part of the Display cycle. The process-image filter action loads a Scrawl-canvas asset into the filters web worker, where it can be used as a lineIn or lineMix argument for other filter actions.

      + +
      + +
          P.preprocessFilters = function (filters) {
      +
      +        filters.forEach(filter => {
      +
      +            filter.actions.forEach(obj => {
      +
      +                if (obj.action == 'process-image') {
      +
      +                    let flag = true;
      +
      +                    let img = asset[obj.asset];
      +
      +                    if (img) {
      +
      +                        if (img.type === 'Noise') {
      +
      +                            img.checkSource();
      +                        }
      +
      +                        let width = img.sourceNaturalWidth || img.sourceNaturalDimensions[0] || img.currentDimensions[0],
      +                            height = img.sourceNaturalHeight || img.sourceNaturalDimensions[1] || img.currentDimensions[1];
      +
      +                        if (width && height) {
      +
      +                            flag = false;
      +
      +                            let copyX = obj.copyX || 0,
      +                                copyY = obj.copyY || 0,
      +                                copyWidth = obj.copyWidth || 1,
      +                                copyHeight = obj.copyHeight || 1,
      +                                destWidth = obj.width || 1,
      +                                destHeight = obj.height || 1;
      +
      +                            if (copyX.substring) copyX = (parseFloat(copyX) / 100) * width;
      +                            if (copyY.substring) copyY = (parseFloat(copyY) / 100) * height;
      +                            if (copyWidth.substring) copyWidth = (parseFloat(copyWidth) / 100) * width;
      +                            if (copyHeight.substring) copyHeight = (parseFloat(copyHeight) / 100) * height;
      +
      +                            copyX = Math.abs(copyX);
      +                            copyY = Math.abs(copyY);
      +                            copyWidth = Math.abs(copyWidth);
      +                            copyHeight = Math.abs(copyHeight);
      +
      +                            if (copyX > width) {
      +                                copyX = width - 2;
      +                                copyWidth = 1;
      +                            }
      +
      +                            if (copyY > height) {
      +                                copyY = height - 2;
      +                                copyHeight = 1;
      +                            }
      +
      +                            if (copyWidth > width) {
      +                                copyWidth = width - 1;
      +                                copyX = 0;
      +                            }
      +
      +                            if (copyHeight > height) {
      +                                copyHeight = height - 1;
      +                                copyY = 0;
      +                            }
      +
      +
      +                            if (copyX + copyWidth > width) {
      +                                copyX = width - copyWidth - 1;
      +                            }
      +
      +                            if (copyY + copyHeight > height) {
      +                                copyY = height - copyHeight - 1;
      +                            }
      +
      +                            let cell = requestCell(),
      +                                engine = cell.engine,
      +                                canvas = cell.element;
      +
      +                            canvas.width = destWidth;
      +                            canvas.height = destHeight;
      +
      +                            engine.setTransform(1, 0, 0, 1, 0, 0);
      +                            engine.globalCompositeOperation = 'source-over';
      +                            engine.globalAlpha = 1;
      +
      +                            let src = img.source || img.element;
      +
      +                            engine.drawImage(src, copyX, copyY, copyWidth, copyHeight, 0, 0, destWidth, destHeight);
      +
      +                            obj.assetData = engine.getImageData(0, 0, destWidth, destHeight);
      +
      +                            releaseCell(cell);
      +                        }
      +                    }
      +
      +                    if (flag) {
      +
      +                        obj.assetData = {
      +                            width: 1,
      +                            height: 1,
      +                            data: [0, 0, 0, 0],
      +                        }
      +                    }
      +                }
      +            });
      +        });
      +    };
      + +
    • + + +
    • - +

      Return the prototype

      diff --git a/docs/source/mixin/mimic.html b/docs/source/mixin/mimic.html index c7700289d..35273d053 100644 --- a/docs/source/mixin/mimic.html +++ b/docs/source/mixin/mimic.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
    • diff --git a/docs/source/mixin/path.html b/docs/source/mixin/path.html index 9c6197fe4..cc1aed650 100644 --- a/docs/source/mixin/path.html +++ b/docs/source/mixin/path.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/pattern.html b/docs/source/mixin/pattern.html index 33b677252..8e2d670ca 100644 --- a/docs/source/mixin/pattern.html +++ b/docs/source/mixin/pattern.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - @@ -734,7 +739,7 @@

      Prototype functions

      repeat = this.repeat, engine = mycell.engine; - if (this.type === 'Cell') { + if (this.type === 'Cell' || this.type === 'Noise') { source = this.element; loaded = true; diff --git a/docs/source/mixin/pivot.html b/docs/source/mixin/pivot.html index 27064ad9b..77bdba4d0 100644 --- a/docs/source/mixin/pivot.html +++ b/docs/source/mixin/pivot.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/position.html b/docs/source/mixin/position.html index 591f2a912..459ca8c59 100644 --- a/docs/source/mixin/position.html +++ b/docs/source/mixin/position.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/shapeBasic.html b/docs/source/mixin/shapeBasic.html index 7e8e24385..73bc1bfb9 100644 --- a/docs/source/mixin/shapeBasic.html +++ b/docs/source/mixin/shapeBasic.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/shapeCurve.html b/docs/source/mixin/shapeCurve.html index e4ec5a299..6f615bc44 100644 --- a/docs/source/mixin/shapeCurve.html +++ b/docs/source/mixin/shapeCurve.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/shapePathCalculation.html b/docs/source/mixin/shapePathCalculation.html index b47902f38..16e20970e 100644 --- a/docs/source/mixin/shapePathCalculation.html +++ b/docs/source/mixin/shapePathCalculation.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/styles.html b/docs/source/mixin/styles.html index 36a1f0e3d..9f6313f92 100644 --- a/docs/source/mixin/styles.html +++ b/docs/source/mixin/styles.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/mixin/tween.html b/docs/source/mixin/tween.html index bc11dd64e..fbd8bbd68 100644 --- a/docs/source/mixin/tween.html +++ b/docs/source/mixin/tween.html @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - - diff --git a/docs/source/scrawl.html b/docs/source/scrawl.html index 959838f4d..e6e5316f5 100644 --- a/docs/source/scrawl.html +++ b/docs/source/scrawl.html @@ -21,20 +21,8 @@
      - - - - - - -
    • -
      - -
      - -

      Scrawl-canvas

      -

      Version 8.3.4 - 6 Jan 2021

      +

      Version 8.4.0 - 26 Jan 2021


      @@ -42,11 +30,11 @@

      Version 8.3.4 - 6 Jan 2021

    • -
    • +
    • - +

      The MIT License (MIT)

      Permission is hereby granted, free of charge, to any person obtaining a copy @@ -71,11 +59,11 @@

      Version 8.3.4 - 6 Jan 2021

    • -
    • +
    • - +
      @@ -83,11 +71,11 @@

      Version 8.3.4 - 6 Jan 2021

    • -
    • +
    • - +

      Import Scrawl-canvas modules

      @@ -226,11 +214,21 @@

      Import Scrawl-canvas modules

      } from './factory/loom.js'; +import { + makeMesh, +} from './factory/mesh.js'; + + import { makeNet, } from './factory/net.js'; +import { + makeNoise, +} from './factory/noise.js'; + + import { makeOval, } from './factory/oval.js'; @@ -357,11 +355,11 @@

      Import Scrawl-canvas modules

    • -
    • +
    • - +

      Initialize Scrawl-canvas

      @@ -373,11 +371,11 @@

      Initialize Scrawl-canvas

    • -
    • +
    • - +

      Export selected functionalities that users can use in their scripts

      @@ -388,11 +386,11 @@

      Exp

    • -
    • +
    • - +

      core/library.js

      @@ -403,11 +401,11 @@

      Exp

    • -
    • +
    • - +

      core/animationloop.js

      @@ -419,11 +417,11 @@

      Exp

    • -
    • +
    • - +

      core/userInteraction.js

      @@ -438,11 +436,11 @@

      Exp

    • -
    • +
    • - +

      core/component.js

      @@ -453,11 +451,11 @@

      Exp

    • -
    • +
    • - +

      core/document.js

      @@ -476,11 +474,11 @@

      Exp

    • -
    • +
    • - +

      core/events.js

      @@ -501,11 +499,11 @@

      Exp

    • -
    • +
    • - +

      factory/action.js

      @@ -516,11 +514,11 @@

      Exp

    • -
    • +
    • - +

      factory/animation.js

      @@ -531,11 +529,11 @@

      Exp

    • -
    • +
    • - +

      factory/bezier.js

      @@ -546,11 +544,11 @@

      Exp

    • -
    • +
    • - +

      factory/block.js

      @@ -561,11 +559,11 @@

      Exp

    • -
    • +
    • - +

      factory/cog.js

      @@ -576,11 +574,11 @@

      Exp

    • -
    • +
    • - +

      factory/color.js

      @@ -591,11 +589,11 @@

      Exp

    • -
    • +
    • - +

      factory/coordinate.js

      @@ -607,11 +605,11 @@

      Exp

    • -
    • +
    • - +

      factory/emitter.js

      @@ -622,11 +620,11 @@

      Exp

    • -
    • +
    • - +

      factory/filter.js

      @@ -637,11 +635,11 @@

      Exp

    • -
    • +
    • - +

      factory/particleForce.js

      @@ -652,11 +650,11 @@

      Exp

    • -
    • +
    • - +

      factory/gradient.js

      @@ -667,11 +665,11 @@

      Exp

    • -
    • +
    • - +

      factory/grid.js

      @@ -682,11 +680,11 @@

      Exp

    • -
    • +
    • - +

      factory/group.js

      @@ -697,11 +695,11 @@

      Exp

    • -
    • +
    • - +

      factory/imageAsset.js

      @@ -716,11 +714,11 @@

      Exp

    • -
    • +
    • - +

      factory/line.js

      @@ -731,11 +729,11 @@

      Exp

    • -
    • +
    • - +

      factory/loom.js

      @@ -746,6 +744,21 @@

      Exp

    • +
    • +
      + +
      + +
      +

      factory/mesh.js

      + +
      + +
          makeMesh,
      + +
    • + +
    • @@ -767,11 +780,11 @@

      Exp
      -

      factory/oval.js

      +

      factory/noise.js

      -
          makeOval,
      +
          makeNoise,
    • @@ -782,11 +795,11 @@

      Exp
      -

      factory/pattern.js

      +

      factory/oval.js

      -
          makePattern,
      +
          makeOval,
      @@ -797,11 +810,11 @@

      Exp
      -

      factory/phrase.js

      +

      factory/pattern.js

      -
          makePhrase,
      +
          makePattern,
      @@ -812,11 +825,11 @@

      Exp
      -

      factory/picture.js

      +

      factory/phrase.js

      -
          makePicture,
      +
          makePhrase,
      @@ -827,11 +840,11 @@

      Exp
      -

      factory/polygon.js

      +

      factory/picture.js

      -
          makePolygon,
      +
          makePicture,
      @@ -842,11 +855,11 @@

      Exp
      -

      factory/polyline.js

      +

      factory/polygon.js

      -
          makePolyline,
      +
          makePolygon,
      @@ -857,11 +870,11 @@

      Exp
      -

      factory/quadratic.js

      +

      factory/polyline.js

      -
          makeQuadratic,
      +
          makePolyline,
      @@ -872,6 +885,21 @@

      Exp
      +

      factory/quadratic.js

      + + + +
          makeQuadratic,
      + + + + +
    • +
      + +
      + +

      factory/quaternion.js

      @@ -882,11 +910,11 @@

      Exp

    • -
    • +
    • - +

      factory/radialGradient.js

      @@ -897,11 +925,11 @@

      Exp

    • -
    • +
    • - +

      factory/rectangle.js

      @@ -912,11 +940,11 @@

      Exp

    • -
    • +
    • - +

      factory/renderAnimation.js

      @@ -927,11 +955,11 @@

      Exp

    • -
    • +
    • - +

      factory/shape.js

      @@ -942,11 +970,11 @@

      Exp

    • -
    • +
    • - +

      factory/spiral.js

      @@ -957,11 +985,11 @@

      Exp

    • -
    • +
    • - +

      factory/particleSpring.js

      @@ -972,11 +1000,11 @@

      Exp

    • -
    • +
    • - +

      factory/spriteAsset.js

      @@ -987,11 +1015,11 @@

      Exp

    • -
    • +
    • - +

      factory/star.js

      @@ -1002,11 +1030,11 @@

      Exp

    • -
    • +
    • - +

      factory/tetragon.js

      @@ -1017,11 +1045,11 @@

      Exp

    • -
    • +
    • - +

      factory/ticker.js

      @@ -1032,11 +1060,11 @@

      Exp

    • -
    • +
    • - +

      factory/tracer.js

      @@ -1047,11 +1075,11 @@

      Exp

    • -
    • +
    • - +

      factory/tween.js

      @@ -1062,11 +1090,11 @@

      Exp

    • -
    • +
    • - +

      factory/vector.js

      @@ -1078,11 +1106,11 @@

      Exp

    • -
    • +
    • - +

      factory/videoAsset.js

      @@ -1095,11 +1123,11 @@

      Exp

    • -
    • +
    • - +

      factory/wheel.js

      @@ -1110,11 +1138,11 @@

      Exp

    • -
    • +
    • - +

      factory/particleWorld.js

      diff --git a/docs/source/worker/filter-string.html b/docs/source/worker/filter-string.html new file mode 100644 index 000000000..054676283 --- /dev/null +++ b/docs/source/worker/filter-string.html @@ -0,0 +1,500 @@ + + + + + filter-string.js + + + + + +
      +
      + + + +
        + +
      • +
        +

        filter-string.js

        +
        +
      • + + + +
      • +
        + +
        + +
        +

        Compressed using https://javascript-minifier.com/

        + +
        + +
        +const filterCode = function () {
        +    return 'let packet,packetFiltersArray,source,work,cache,actions,workstore={},workstoreLastAccessed={};const createResultObject=function(e){return{r:new Uint8ClampedArray(e),g:new Uint8ClampedArray(e),b:new Uint8ClampedArray(e),a:new Uint8ClampedArray(e)}},unknit=function(e){let t=e.data,l=Math.floor(t.length/4);source=createResultObject(l),e.channels=source;let n=source.r,r=source.g,o=source.b,s=source.a,u=(work=createResultObject(l)).r,a=work.g,c=work.b,i=work.a,f=0;for(let e=0,l=t.length;e<l;e+=4)n[f]=t[e],r[f]=t[e+1],o[f]=t[e+2],s[f]=t[e+3],u[f]=t[e],a[f]=t[e+1],c[f]=t[e+2],i[f]=t[e+3],f++},knit=function(){let e=packet.image.data,t=work.r,l=work.g,n=work.b,r=work.a,o=0;for(let s=0,u=e.length;s<u;s+=4)e[s]=t[o],e[s+1]=l[o],e[s+2]=n[o],e[s+3]=r[o],o++};onmessage=function(e){packet=e.data,packetFiltersArray=packet.filters;let t=Object.keys(workstore),l=Date.now()-3e3;t.forEach(e=>{workstoreLastAccessed[e]<l&&(delete workstore[e],delete workstoreLastAccessed[e])}),actions=[],(cache={}).source=packet.image,packetFiltersArray.forEach(e=>actions.push(...e.actions)),actions.length&&(unknit(cache.source),actions.forEach(e=>theBigActionsObject[e.action]&&theBigActionsObject[e.action](e)),knit()),postMessage(packet)},onerror=function(e){console.log("error"+e.message),postMessage(packet)};const buildImageGrid=function(e){if(e||(e=cache.source),e&&e.width&&e.height){let t=`grid-${e.width}-${e.height}`;if(workstore[t])return workstoreLastAccessed[t]=Date.now(),workstore[t];let l=[],n=0;for(let t=0,r=e.height;t<r;t++){let t=[];for(let l=0,r=e.width;l<r;l++)t.push(n),n++;l.push(t)}return workstore[t]=l,workstoreLastAccessed[t]=Date.now(),l}return!1},buildAlphaTileSets=function(e,t,l,n,r,o,s,u){if(u||(u=cache.source),u&&u.width&&u.height){let s=u.width,a=u.height;(e=e.toFixed&&!isNaN(e)?e:1)<1&&(e=1),(t=t.toFixed&&!isNaN(t)?t:1)<1&&(t=1),e+(l=l.toFixed&&!isNaN(l)?l:1)>=s&&(e=s-l-1),t+(n=n.toFixed&&!isNaN(n)?n:1)>=a&&(t=a-n-1),e<1&&(e=1),t<1&&(t=1),e+l>=s&&(l=s-e-1),t+n>=a&&(n=a-t-1);let c=e+l,i=t+n;(r=r.toFixed&&!isNaN(r)?r:0)<0&&(r=0),r>=c&&(r=c-1),(o=o.toFixed&&!isNaN(o)?o:0)<0&&(o=0),o>=i&&(o=i-1);let f=`alphatileset-${s}-${a}-${e}-${t}-${l}-${n}-${r}-${o}`;if(workstore[f])return workstoreLastAccessed[f]=Date.now(),workstore[f];let h,g,p,d,b,k,w,R=[];for(d=o-i,b=a;d<b;d+=i)for(g=r-c,p=s;g<p;g+=c){for(h=[],k=d,w=d+t;k<w;k++)if(k>=0&&k<a)for(let t=g,l=g+e;t<l;t++)t>=0&&t<s&&h.push(k*s+t);for(R.push([].concat(h)),h=[],k=d+t,w=d+t+n;k<w;k++)if(k>=0&&k<a)for(let t=g,l=g+e;t<l;t++)t>=0&&t<s&&h.push(k*s+t);for(R.push([].concat(h)),h=[],k=d,w=d+t;k<w;k++)if(k>=0&&k<a)for(let t=g+e,n=g+e+l;t<n;t++)t>=0&&t<s&&h.push(k*s+t);for(R.push([].concat(h)),h=[],k=d+t,w=d+t+n;k<w;k++)if(k>=0&&k<a)for(let t=g+e,n=g+e+l;t<n;t++)t>=0&&t<s&&h.push(k*s+t);R.push([].concat(h))}return workstore[f]=R,workstoreLastAccessed[f]=Date.now(),R}return!1},buildImageTileSets=function(e,t,l,n,r){if(r||(r=cache.source),r&&r.width&&r.height){let o=r.width,s=r.height;(e=e.toFixed&&!isNaN(e)?e:1)<1&&(e=1),e>=o&&(e=o-1),(t=t.toFixed&&!isNaN(t)?t:1)<1&&(t=1),t>=s&&(t=s-1),(l=l.toFixed&&!isNaN(l)?l:0)<0&&(l=0),l>=e&&(l=e-1),(n=n.toFixed&&!isNaN(n)?n:0)<0&&(n=0),n>=t&&(n=t-1);let u=`imagetileset-${o}-${s}-${e}-${t}-${l}-${n}`;if(workstore[u])return workstoreLastAccessed[u]=Date.now(),workstore[u];let a=[];for(let r=n-t,u=s;r<u;r+=t)for(let n=l-e,u=o;n<u;n+=e){let l=[];for(y=r,yz=r+t;y<yz;y++)if(y>=0&&y<s)for(let t=n,r=n+e;t<r;t++)t>=0&&t<o&&l.push(y*o+t);l.length&&a.push(l)}return workstore[u]=a,workstoreLastAccessed[u]=Date.now(),a}return!1},buildHorizontalBlur=function(e,t,l){t&&t.toFixed&&!isNaN(t)||(t=0);let n=e.length,r=e[0].length,o=`blur-h-${r}-${n}-${t}`;if(workstore[o])return workstoreLastAccessed[o]=Date.now(),workstore[o];let s=[];for(let l=0;l<n;l++)for(let o=0;o<r;o++){let u=[];for(let n=o-t,s=o+t+1;n<s;n++)n>=0&&n<r&&u.push(e[l][n]);s[l*n+o]=u}return workstore[o]=s,workstoreLastAccessed[o]=Date.now(),s},buildVerticalBlur=function(e,t,l){t&&t.toFixed&&!isNaN(t)||(t=0);let n=e.length,r=e[0].length,o=`blur-v-${r}-${n}-${t}`;if(workstore[o])return workstoreLastAccessed[o]=Date.now(),workstore[o];let s=[];for(let l=0;l<r;l++)for(let r=0;r<n;r++){let o=[];for(let s=r-t,u=r+t+1;s<u;s++)s>=0&&s<n&&o.push(e[s][l]);s[r*n+l]=o}return workstore[o]=s,workstoreLastAccessed[o]=Date.now(),s},buildMatrixGrid=function(e,t,l,n,r,o){o||(o=cache.source),(null==e||e<1)&&(e=1),(null==t||t<1)&&(t=1),null==l||l<0?l=0:l>=e&&(l=e-1),null==n||n<0?n=0:n>=t&&(n=t-1);let s=o.width,u=o.height,a=`matrix-${s}-${u}-${e}-${t}-${l}-${n}`;if(workstore[a])return workstoreLastAccessed[a]=Date.now(),workstore[a];let c,i,f,h,g,p,d=o.data.length,b=[],k=[];for(f=-n,h=t-n;f<h;f++)for(c=-l,i=e-l;c<i;c++)b.push(f*s+c);for(f=0;f<u;f++)for(c=0;c<s;c++){let e=f*s+c,t=[];for(g=0,p=b.length;g<p;g++){let l=e+b[g];l<0?l+=d:l>=d&&(l-=d),t.push(l)}k.push(t)}return workstore[a]=k,workstoreLastAccessed[a]=Date.now(),k},checkChannelLevelsParameters=function(e){const t=function(e,t=!1){if(e.toFixed)return e<0?[[0,255,0]]:e>255?[[0,255,255]]:isNaN(e)?t?[[0,255,255]]:[[0,255,0]]:[[0,255,e]];if(e.substring&&(e=e.split(",")),Array.isArray(e)){if(!e.length)return e;if(Array.isArray(e[0]))return e;if((e=e.map(e=>parseInt(e,10))).sort((e,t)=>e-t),1==e.length)return[[0,255,e[0]]];let t,l,n=[];for(let r=0,o=e.length;r<o;r++)t=0,l=255,0!=r&&(t=Math.ceil(e[r-1]+(e[r]-e[r-1])/2)),r!=o-1&&(l=Math.floor(e[r]+(e[r+1]-e[r])/2)),n.push([t,l,e[r]]);return n}return t?[[0,255,255]]:[[0,255,0]]};e.red=t(e.red),e.green=t(e.green),e.blue=t(e.blue),e.alpha=t(e.alpha,!0)},cacheOutput=function(e,t,l){cache[e]=t},copyOver=function(e,t){let{r:l,g:n,b:r,a:o}=e,{r:s,g:u,b:a,a:c}=t;for(let e=0;e<l.length;e++)s[e]=l[e],u[e]=n[e],a[e]=r[e],c[e]=o[e]},getInputAndOutputDimensions=function(e){let t=cache.source,l=[];return e.lineIn&&"source"!=e.lineIn&&"source-alpha"!=e.lineIn&&cache[e.lineIn]&&(t=cache[e.lineIn]),l.push(t.width,t.height),e.lineOut&&cache[e.lineOut]&&(t=cache[e.lineOut]),l.push(t.width,t.height),t=cache.source,e.lineMix&&"source"!=e.lineMix&&"source-alpha"!=e.lineMix&&cache[e.lineMix]&&(t=cache[e.lineMix]),l.push(t.width,t.height),l},getInputAndOutputChannels=function(e){let t=work,l=t.r.length,n=cache.source;if(e.lineIn)if("source"==e.lineIn)t=n.channels;else if("source-alpha"==e.lineIn){let e=(t=createResultObject(l)).a,r=n.channels.a;for(let t=0;t<l;t++)e[t]=r[t]}else cache[e.lineIn]&&(t=(n=cache[e.lineIn]).channels);let r,o=!1;if(e.lineMix)if("source"==e.lineMix)o=cache.source.channels;else if("source-alpha"==e.lineMix){let e=(o=createResultObject(l)).a,t=cache.source.channels.a;for(let n=0;n<l;n++)e[n]=t[n]}else cache[e.lineMix]&&(o=cache[e.lineMix].channels);return e.lineOut?cache[e.lineOut]?r=cache[e.lineOut].channels:(r=createResultObject(l),cache[e.lineOut]={width:n.width,height:n.height,channels:r}):r=createResultObject(l),[t,r,o]},processResults=function(e,t,l){let n=e.r,r=e.g,o=e.b,s=e.a,u=t.r,a=t.g,c=t.b,i=t.a;if(1===l)copyOver(t,e);else if(l>0){antiRatio=1-l;for(let e=0,t=n.length;e<t;e++)n[e]=Math.floor(n[e]*antiRatio+u[e]*l),r[e]=Math.floor(r[e]*antiRatio+a[e]*l),o[e]=Math.floor(o[e]*antiRatio+c[e]*l),s[e]=Math.floor(s[e]*antiRatio+i[e]*l)}},getHSLfromRGB=function(e,t,l){let n=Math.min(e,t,l),r=Math.max(e,t,l),o=(n+r)/2,s=0;n!==r&&(s=o<=.5?(r-n)/(r+n):(r-n)/(2-r-n));let u=0;return u=r===e?(t-l)/(r-n):r===t?2+(l-e)/(r-n):4+(e-t)/(r-n),(u*=60)<0&&(u+=360),[u,s,o]},getRGBfromHSL=function(e,t,l){if(!t){let e=Math.floor(255*l);return[e,e,e]}let n=l<.5?l*(t+1):l+t-l*t,r=2*l-n;const o=function(e,t,l){return 6*e<1?l+6*(t-l)*e:2*e<1?t:2*e<2?l+6*(t-l)*(.666*e):l};let s=(e/=360)+.333,u=e,a=e-.333;return s<0&&(s+=1),s>1&&(s-=1),u<0&&(u+=1),u>1&&(u-=1),a<0&&(a+=1),a>1&&(a-=1),[255*o(s,n,r),255*o(u,n,r),255*o(a,n,r)]},theBigActionsObject={"alpha-to-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,excludeRed:a,excludeGreen:c,excludeBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0),null==a&&(a=!0),null==c&&(c=!0),null==i&&(i=!0);const{r:h,g:g,b:p,a:d}=t,{r:b,g:k,b:w,a:R}=l;for(let e=0;e<n;e++)b[e]=o?d[e]:a?0:h[e],k[e]=s?d[e]:c?0:g[e],w[e]=u?d[e]:i?0:p[e];R.fill(255,0,R.length-1),f?processResults(l,work,1-r):processResults(work,l,r)},"area-alpha":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,tileWidth:o,tileHeight:s,offsetX:u,offsetY:a,gutterWidth:c,gutterHeight:i,areaAlphaLevels:f,lineOut:h}=e;null==r&&(r=1),null==o&&(o=1),null==s&&(s=1),null==u&&(u=0),null==a&&(a=0),null==c&&(c=1),null==i&&(i=1),null==f&&(f=[255,0,0,0]);let g=buildAlphaTileSets(o,s,c,i,u,a);Array.isArray(f)||(f=[255,0,0,0]);const{r:p,g:d,b:b,a:k}=t,{r:w,g:R,b:O,a:A}=l;for(let e=0;e<n;e++)w[e]=p[e],R[e]=d[e],O[e]=b[e];g.forEach((e,t)=>{for(let l=0,n=e.length;l<n;l++)k[e[l]]&&(A[e[l]]=f[t%4])}),h?processResults(l,work,1-r):processResults(work,l,r)},"average-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,excludeRed:a,excludeGreen:c,excludeBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0),null==a&&(a=!1),null==c&&(c=!1),null==i&&(i=!1);let h=0;o&&h++,s&&h++,u&&h++;const{r:g,g:p,b:d,a:b}=t,{r:k,g:w,b:R,a:O}=l;for(let e=0;e<n;e++)if(b[e])if(h){let t=0;o&&(t+=g[e]),s&&(t+=p[e]),u&&(t+=d[e]),t=Math.floor(t/h),k[e]=a?0:t,w[e]=c?0:t,R[e]=i?0:t,O[e]=b[e]}else k[e]=a?0:g[e],w[e]=c?0:p[e],R[e]=i?0:d[e],O[e]=b[e];else k[e]=g[e],w[e]=p[e],R[e]=d[e],O[e]=b[e];f?processResults(l,work,1-r):processResults(work,l,r)},binary:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,red:o,green:s,blue:u,alpha:a,lineOut:c}=e;null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=0);const{r:i,g:f,b:h,a:g}=t,{r:p,g:d,b:b,a:k}=l;for(let e=0;e<n;e++)p[e]=o?i[e]>o?255:0:i[e],d[e]=s?f[e]>s?255:0:f[e],b[e]=u?h[e]>u?255:0:h[e],k[e]=a?g[e]>a?255:0:g[e];c?processResults(l,work,1-r):processResults(work,l,r)},blend:function(e){let[t,l,n]=getInputAndOutputChannels(e),{opacity:r,blend:o,offsetX:s,offsetY:u,lineOut:a}=(l.r.length,e);null==r&&(r=1),null==o&&(o=""),null==s&&(s=0),null==u&&(u=0);const{r:c,g:i,b:f,a:h}=t,{r:g,g:p,b:d,a:b}=l,{r:k,g:w,b:R,a:O}=n;let[A,y,I,m,M,x]=getInputAndOutputDimensions(e);const B=function(e,t,l){g[t]=l.r[e],p[t]=l.g[e],d[t]=l.b[e],b[t]=l.a[e]},G=function(e,t){let l=e-s,n=t-u,r=-1;return l>=0&&l<M&&n>=0&&n<x&&(r=n*M+l),[t*A+e,r]},C=function(e,l){return[t.r[e]/255,t.g[e]/255,t.b[e]/255,t.a[e]/255,n.r[l]/255,n.g[l]/255,n.b[l]/255,n.a[l]/255]},L=(e,t)=>255*(e+t*(1-e));switch(o){case"color-burn":const e=(e,t)=>1==t?255:0==e?0:255*(1-Math.min(1,(1-t)/e));for(let l=0;l<y;l++)for(let r=0;r<A;r++){let[o,s]=G(r,l);if(s<0)B(o,o,t);else if(h[o])if(O[s]){let[t,l,n,r,u,a,c,i]=C(o,s);g[o]=e(t,u),p[o]=e(l,a),d[o]=e(n,c),b[o]=L(r,i)}else B(o,o,t);else B(s,o,n)}break;case"color-dodge":const l=(e,t)=>0==t?0:1==e?255:255*Math.min(1,t/(1-e));for(let e=0;e<y;e++)for(let r=0;r<A;r++){let[o,s]=G(r,e);if(s<0)B(o,o,t);else if(h[o])if(O[s]){let[e,t,n,r,u,a,c,i]=C(o,s);g[o]=l(e,u),p[o]=l(t,a),d[o]=l(n,c),b[o]=L(r,i)}else B(o,o,t);else B(s,o,n)}break;case"darken":const r=(e,t)=>e<t?e:t;for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[o,s]=G(l,e);s<0?B(o,o,t):h[o]?O[s]?(g[o]=r(c[o],k[s]),p[o]=r(i[o],w[s]),d[o]=r(f[o],R[s]),b[o]=L(h[o]/255,O[s]/255)):B(o,o,t):B(s,o,n)}break;case"difference":const s=(e,t)=>255*Math.abs(e-t);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let[e,t,l,n,u,a,c,i]=C(r,o);g[r]=s(e,u),p[r]=s(t,a),d[r]=s(l,c),b[r]=L(n,i)}else B(o,r,n)}break;case"exclusion":const u=(e,t)=>255*(e+t-2*t*e);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let[e,t,l,n,s,a,c,i]=C(r,o);g[r]=u(e,s),p[r]=u(t,a),d[r]=u(l,c),b[r]=L(n,i)}else B(o,r,n)}break;case"hard-light":const a=(e,t)=>e<=.5?e*t*255:255*(t+(e-t*e));for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let[e,t,l,n,s,u,c,i]=C(r,o);g[r]=a(e,s),p[r]=a(t,u),d[r]=a(l,c),b[r]=L(n,i)}else B(o,r,n)}break;case"lighten":const I=(e,t)=>e>t?e:t;for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);o<0?B(r,r,t):h[r]?(g[r]=I(c[r],k[o]),p[r]=I(i[r],w[o]),d[r]=I(f[r],R[o]),b[r]=L(h[r]/255,O[o]/255)):B(o,r,n)}break;case"lighter":const m=(e,t)=>255*(e+t);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let[e,t,l,n,s,u,a,c]=C(r,o);g[r]=m(e,s),p[r]=m(t,u),d[r]=m(l,a),b[r]=L(n,c)}else B(o,r,n)}break;case"multiply":const M=(e,t)=>e*t*255;for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r])if(O[o]){let[e,t,l,n,s,u,a,c]=C(r,o);g[r]=M(e,s),p[r]=M(t,u),d[r]=M(l,a),b[r]=L(n,c)}else B(r,r,t);else B(o,r,n)}break;case"overlay":const x=(e,t)=>e>=.5?e*t*255:255*(t+(e-t*e));for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let[e,t,l,n,s,u,a,c]=C(r,o);g[r]=x(e,s),p[r]=x(t,u),d[r]=x(l,a),b[r]=L(n,c)}else B(o,r,n)}break;case"screen":const $=(e,t)=>255*(t+(e-t*e));for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let[e,t,l,n,s,u,a,c]=C(r,o);g[r]=$(e,s),p[r]=$(t,u),d[r]=$(l,a),b[r]=L(n,c)}else B(o,r,n)}break;case"soft-light":const N=(e,t)=>{let l=t<=.25?((16*t-12)*t+4)*t:Math.sqrt(t);return e<=.5?255*(t-(1-2*e)*t*(1-t)):255*(t+(2*e-1)*(l-t))};for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r])if(O[o]){let[e,t,l,n,s,u,a,c]=C(r,o);g[r]=N(e,s),p[r]=N(t,u),d[r]=N(l,a),b[r]=L(n,c)}else B(r,r,t);else B(o,r,n)}break;case"color":const v=(e,t,l,n,r,o)=>{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(s,u,f)};for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r])if(O[o]){let[e,t,l,n,s,u,a,c]=C(r,o),[i,f,h]=v(e,t,l,s,u,a);g[r]=i,p[r]=f,d[r]=h,b[r]=L(n,c)}else B(r,r,t);else B(o,r,n)}break;case"hue":const H=(e,t,l,n,r,o)=>{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(s,i,f)};for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r])if(O[o]){let[e,t,l,n,s,u,a,c]=C(r,o),[i,f,h]=H(e,t,l,s,u,a);g[r]=i,p[r]=f,d[r]=h,b[r]=L(n,c)}else B(r,r,t);else B(o,r,n)}break;case"luminosity":const D=(e,t,l,n,r,o)=>{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(c,i,a)};for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r])if(O[o]){let[e,t,l,n,s,u,a,c]=C(r,o),[i,f,h]=D(e,t,l,s,u,a);g[r]=i,p[r]=f,d[r]=h,b[r]=L(n,c)}else B(r,r,t);else B(o,r,n)}break;case"saturation":const S=(e,t,l,n,r,o)=>{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(c,u,f)};for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r])if(O[o]){let[e,t,l,n,s,u,a,c]=C(r,o),[i,f,h]=S(e,t,l,s,u,a);g[r]=i,p[r]=f,d[r]=h,b[r]=L(n,c)}else B(r,r,t);else B(o,r,n)}break;default:const F=(e,t,l,n)=>t*e+n*l*(1-t);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[r,o]=G(l,e);if(o<0)B(r,r,t);else if(h[r]){let e=h[r]/255,t=O[o]/255;g[r]=F(c[r],e,k[o],t),p[r]=F(i[r],e,w[o],t),d[r]=F(f[r],e,R[o],t),b[r]=L(e,t)}else B(o,r,n)}}a?processResults(l,work,1-r):processResults(work,l,r)},blur:function(e){let t,l,[n,r]=getInputAndOutputChannels(e),o=n.r.length,{opacity:s,radius:u,passes:a,processVertical:c,processHorizontal:i,includeRed:f,includeGreen:h,includeBlue:g,includeAlpha:p,step:d,lineOut:b}=e;if(null==s&&(s=1),null==u&&(u=0),null==a&&(a=1),null==c&&(c=!0),null==i&&(i=!0),null==f&&(f=!0),null==h&&(h=!0),null==g&&(g=!0),null==p&&(p=!1),null==d&&(d=1),i||c){let e=buildImageGrid();i&&(t=buildHorizontalBlur(e,u,n.a)),c&&(l=buildVerticalBlur(e,u,n.a))}const{r:k,g:w,b:R,a:O}=n,{r:A,g:y,b:I,a:m}=r,M=function(e,t,l,n,r){if(e){let e=t[l],o=e.length,s=0,u=0;if(r){for(let t=0;t<o;t+=d)r[e[t]]&&(u+=n[e[t]],s++);return u/s}for(let t=0;t<o;t++)u+=n[e[t]];return u/o}return n[l]};if(a&&(i||c)){const e=createResultObject(o),{r:s,g:u,b:d,a:b}=e;copyOver(n,e);for(let n=0;n<a;n++){if(i){for(let e=0;e<o;e++)(p||b[e])&&(A[e]=M(f,t,e,s,b),y[e]=M(h,t,e,u,b),I[e]=M(g,t,e,d,b),m[e]=M(p,t,e,b,!1));(c||n<a-1)&&copyOver(r,e)}if(c){for(let e=0;e<o;e++)(p||b[e])&&(A[e]=M(f,l,e,s,b),y[e]=M(h,l,e,u,b),I[e]=M(g,l,e,d,b),m[e]=M(p,l,e,b,!1));n<a-1&&copyOver(r,e)}}}else copyOver(n,r);b?processResults(r,work,1-s):processResults(work,r,s)},"channels-to-alpha":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,lineOut:a}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0);let c=0;o&&c++,s&&c++,u&&c++;const{r:i,g:f,b:h,a:g}=t,{r:p,g:d,b:b,a:k}=l;for(let e=0;e<n;e++)if(p[e]=i[e],d[e]=f[e],b[e]=h[e],c){let t=0;o&&(t+=i[e]),s&&(t+=f[e]),u&&(t+=h[e]),t=Math.floor(t/c),k[e]=t}else k[e]=g[e];a?processResults(l,work,1-r):processResults(work,l,r)},chroma:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,ranges:o,lineOut:s}=e;null==r&&(r=1),null==o&&(o=[]);const{r:u,g:a,b:c,a:f}=t,{r:h,g:g,b:p,a:d}=l;for(let e=0;e<n;e++){let t=!1,l=u[e],n=a[e],r=c[e];for(i=0,iz=o.length;i<iz;i++){o[i];let[e,s,u,a,c,f]=o[i];if(l>=e&&l<=a&&n>=s&&n<=c&&r>=u&&r<=f){t=!0;break}}h[e]=u[e],g[e]=a[e],p[e]=c[e],d[e]=t?0:f[e]}s?processResults(l,work,1-r):processResults(work,l,r)},"clamp-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,lowRed:o,lowGreen:s,lowBlue:u,highRed:a,highGreen:c,highBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=255),null==c&&(c=255),null==i&&(i=255);const h=a-o,g=c-s,p=i-u,{r:d,g:b,b:k,a:w}=t,{r:R,g:O,b:A,a:y}=l;for(let e=0;e<n;e++)if(w[e]){let t=d[e]/255,l=b[e]/255,n=k[e]/255;R[e]=o+t*h,O[e]=s+l*g,A[e]=u+n*p,y[e]=w[e]}else R[e]=d[e],O[e]=b[e],A[e]=k[e],y[e]=w[e];f?processResults(l,work,1-r):processResults(work,l,r)},"colors-to-alpha":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,red:o,green:s,blue:u,opaqueAt:a,transparentAt:c,lineOut:i}=e;null==r&&(r=1),null==o&&(o=0),null==s&&(s=255),null==u&&(u=0),null==a&&(a=1),null==c&&(c=0);const f=Math.max((o+s+u)/3,(255-o+(255-s)+(255-u))/3),h=c*f,g=a*f,p=g-h,d=function(e,t,l){let n=(Math.abs(o-e)+Math.abs(s-t)+Math.abs(u-l))/3;return n<h?0:n>g?255:(n-h)/p*255},{r:b,g:k,b:w,a:R}=t,{r:O,g:A,b:y,a:I}=l;for(let e=0;e<n;e++)O[e]=b[e],A[e]=k[e],y[e]=w[e],I[e]=d(b[e],k[e],w[e]);i?processResults(l,work,1-r):processResults(work,l,r)},compose:function(e){let[t,l,n]=getInputAndOutputChannels(e),{opacity:r,compose:o,offsetX:s,offsetY:u,lineOut:a}=(l.r.length,e);null==r&&(r=1),null==o&&(o=""),null==s&&(s=0),null==u&&(u=0);const{r:c,g:i,b:f,a:h}=t,{r:g,g:p,b:d,a:b}=l,{r:k,g:w,b:R,a:O}=n;let[A,y,I,m,M,x]=getInputAndOutputDimensions(e);const B=function(e,t,l){g[t]=l.r[e],p[t]=l.g[e],d[t]=l.b[e],b[t]=l.a[e]},G=function(e,t){let l=e-s,n=t-u,r=-1;return l>=0&&l<M&&n>=0&&n<x&&(r=n*M+l),[t*A+e,r]};switch(o){case"source-only":copyOver(t,l);break;case"source-atop":const e=(e,t,l,n)=>t*e*n+n*l*(1-t);for(let t=0;t<y;t++)for(let l=0;l<A;l++){let[n,r]=G(l,t);if(r>=0){let t=h[n]/255,l=O[r]/255;g[n]=e(c[n],t,k[r],l),p[n]=e(i[n],t,w[r],l),d[n]=e(f[n],t,R[r],l),b[n]=255*(t*l+l*(1-t))}}break;case"source-in":const r=(e,t,l)=>t*e*l;for(let e=0;e<y;e++)for(let t=0;t<A;t++){let[l,n]=G(t,e);if(n>=0){let e=h[l]/255,t=O[n]/255;g[l]=r(c[l],e,t),p[l]=r(i[l],e,t),d[l]=r(f[l],e,t),b[l]=e*t*255}}break;case"source-out":const s=(e,t,l)=>t*e*(1-l);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[n,r]=G(l,e);if(r<0)B(n,n,t);else{let e=h[n]/255,t=O[r]/255;g[n]=s(c[n],e,t),p[n]=s(i[n],e,t),d[n]=s(f[n],e,t),b[n]=e*(1-t)*255}}break;case"destination-only":for(let e=0;e<y;e++)for(let t=0;t<A;t++){let[l,r]=G(t,e);r>=0&&B(r,l,n)}break;case"destination-atop":const u=(e,t,l,n)=>t*e*(1-n)+n*l*t;for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[n,r]=G(l,e);if(r<0)B(n,n,t);else{let e=h[n]/255,t=O[r]/255;g[n]=u(c[n],e,k[r],t),p[n]=u(i[n],e,w[r],t),d[n]=u(f[n],e,R[r],t),b[n]=255*(e*(1-t)+t*e)}}break;case"destination-over":const a=(e,t,l,n)=>t*e*(1-n)+n*l;for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[n,r]=G(l,e);if(r<0)B(n,n,t);else{let e=h[n]/255,t=O[r]/255;g[n]=a(c[n],e,k[r],t),p[n]=a(i[n],e,w[r],t),d[n]=a(f[n],e,R[r],t),b[n]=255*(e*(1-t)+t)}}break;case"destination-in":const I=(e,t,l)=>t*e*l;for(let e=0;e<y;e++)for(let t=0;t<A;t++){let[l,n]=G(t,e);if(n>=0){let e=h[l]/255,t=O[n]/255;g[l]=I(k[n],t,e),p[l]=I(w[n],t,e),d[l]=I(R[n],t,e),b[l]=e*t*255}}break;case"destination-out":const m=(e,t,l)=>l*e*(1-t);for(let e=0;e<y;e++)for(let t=0;t<A;t++){let[l,n]=G(t,e);if(n>=0){let e=h[l]/255,t=O[n]/255;g[l]=m(k[n],e,t),p[l]=m(w[n],e,t),d[l]=m(R[n],e,t),b[l]=t*(1-e)*255}}break;case"clear":break;case"xor":const M=(e,t,l,n)=>t*e*(1-n)+n*l*(1-t);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[n,r]=G(l,e);if(r<0)B(n,n,t);else{let e=h[n]/255,t=O[r]/255;g[n]=M(c[n],e,k[r],t),p[n]=M(i[n],e,w[r],t),d[n]=M(f[n],e,R[r],t),b[n]=255*(e*(1-t)+t*(1-e))}}break;default:const x=(e,t,l,n)=>t*e+n*l*(1-t);for(let e=0;e<y;e++)for(let l=0;l<A;l++){let[n,r]=G(l,e);if(r<0)B(n,n,t);else{let e=h[n]/255,t=O[r]/255;g[n]=x(c[n],e,k[r],t),p[n]=x(i[n],e,w[r],t),d[n]=x(f[n],e,R[r],t),b[n]=255*(e+t*(1-e))}}}a?processResults(l,work,1-r):processResults(work,l,r)},displace:function(e){let[t,l,n]=getInputAndOutputChannels(e),{opacity:r,channelX:o,channelY:s,scaleX:u,scaleY:a,offsetX:c,offsetY:i,transparentEdges:f,lineOut:h}=(t.r.length,e);null==r&&(r=1),null==o&&(o="red"),null==s&&(s="green"),null==u&&(u=1),null==a&&(a=1),null==c&&(c=0),null==i&&(i=0),null==f&&(f=!1);const{r:g,g:p,b:d,a:b}=t,{r:k,g:w,b:R,a:O}=l,{r:A,g:y,b:I,a:m}=n;o="red"==o?A:"green"==o?y:"blue"==o?I:m,s="red"==s?A:"green"==s?y:"blue"==s?I:m;let[M,x,B,G,C,L]=getInputAndOutputDimensions(e);const $=function(e,t,l){e<0?O[t]=0:(k[t]=l.r[e],w[t]=l.g[e],R[t]=l.b[e],O[t]=l.a[e])},N=function(e,t){let l=e+c,n=t+i,r=-1;return l>=0&&l<C&&n>=0&&n<L&&(r=n*C+l),[t*M+e,r]};for(let e=0;e<x;e++)for(let l=0;l<M;l++){let[n,r]=N(l,e);if(r>=0){let c,i=Math.floor(l+(127-o[r])/127*u),h=Math.floor(e+(127-s[r])/127*a);f?c=i<0||i>=M||h<0||h>=x?-1:h*M+i:(i<0&&(i=0),i>=M&&(i=M-1),h<0&&(h=0),h>=x&&(h=x-1),c=h*M+i),$(c,n,t)}else $(n,n,t)}h?processResults(l,work,1-r):processResults(work,l,r)},emboss:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,strength:o,angle:s,tolerance:u,keepOnlyChangedAreas:a,postProcessResults:c,lineOut:i}=e;for(null==r&&(r=1),null==o&&(o=1),null==s&&(s=0),null==u&&(u=0),null==a&&(a=!1),null==c&&(c=!1),o=Math.abs(o);s<0;)s+=360;s%=360;let f=Math.floor(s/45),h=s%45/45*o,g=new Array(9);(g=g.fill(0,0,9))[4]=1,0==f?(g[5]=o-h,g[8]=h,g[3]=-g[5],g[0]=-g[8]):1==f?(g[8]=o-h,g[7]=h,g[0]=-g[8],g[1]=-g[7]):2==f?(g[7]=o-h,g[6]=h,g[1]=-g[7],g[2]=-g[6]):3==f?(g[6]=o-h,g[3]=h,g[2]=-g[6],g[5]=-g[3]):4==f?(g[3]=o-h,g[0]=h,g[5]=-g[3],g[8]=-g[0]):5==f?(g[0]=o-h,g[1]=h,g[8]=-g[0],g[7]=-g[1]):6==f?(g[1]=o-h,g[2]=h,g[7]=-g[1],g[6]=-g[2]):(g[2]=o-h,g[5]=h,g[6]=-g[2],g[3]=-g[5]);const{r:p,g:d,b:b,a:k}=t,{r:w,g:R,b:O,a:A}=l;grid=buildMatrixGrid(3,3,1,1);const y=function(e,t){let l=0;for(let n=0,r=t.length;n<r;n++)g[n]&&(l+=e[t[n]]*g[n]);return l};for(let e=0;e<n;e++)k[e]&&(w[e]=y(p,grid[e]),R[e]=y(d,grid[e]),O[e]=y(b,grid[e]),A[e]=k[e],c&&w[e]>=p[e]-u&&w[e]<=p[e]+u&&R[e]>=d[e]-u&&R[e]<=d[e]+u&&O[e]>=b[e]-u&&O[e]<=b[e]+u&&(a?A[e]=0:(w[e]=127,R[e]=127,O[e]=127)));i?processResults(l,work,1-r):processResults(work,l,r)},flood:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,red:o,green:s,blue:u,alpha:a,lineOut:c}=(Math.floor,e);null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=255);const{r:i,g:f,b:h,a:g}=l;i.fill(o,0,n-1),f.fill(s,0,n-1),h.fill(u,0,n-1),g.fill(a,0,n-1),c?processResults(l,work,1-r):processResults(work,l,r)},grayscale:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,lineOut:o}=e;null==r&&(r=1);const{r:s,g:u,b:a,a:c}=t,{r:i,g:f,b:h,a:g}=l;for(let e=0;e<n;e++){let t=Math.floor(.2126*s[e]+.7152*u[e]+.0722*a[e]);i[e]=t,f[e]=t,h[e]=t,g[e]=c[e]}o?processResults(l,work,1-r):processResults(work,l,r)},"invert-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,includeAlpha:a,lineOut:c}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0),null==a&&(a=!1);const{r:i,g:f,b:h,a:g}=t,{r:p,g:d,b:b,a:k}=l;for(let e=0;e<n;e++)p[e]=o?255-i[e]:i[e],d[e]=s?255-f[e]:f[e],b[e]=u?255-h[e]:h[e],k[e]=a?255-g[e]:g[e];c?processResults(l,work,1-r):processResults(work,l,r)},"lock-channels-to-levels":function(e){checkChannelLevelsParameters(e);const t=function(e,t){if(!t.length)return e;for(let l=0,n=t.length;l<n;l++){let[n,r,o]=t[l];if(e>=n&&e<=r)return o}};let[l,n]=getInputAndOutputChannels(e),r=l.r.length,{opacity:o,red:s,green:u,blue:a,alpha:c,lineOut:i}=e;null==o&&(o=1),null==s&&(s=[0]),null==u&&(u=[0]),null==a&&(a=[0]),null==c&&(c=[255]);const{r:f,g:h,b:g,a:p}=l,{r:d,g:b,b:k,a:w}=n;for(let e=0;e<r;e++)d[e]=t(f[e],s),b[e]=t(h[e],u),k[e]=t(g[e],a),w[e]=t(p[e],c);i?processResults(n,work,1-o):processResults(work,n,o)},matrix:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,includeAlpha:a,width:c,height:i,offsetX:f,offsetY:h,weights:g,lineOut:p}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0),null==a&&(a=!1),(null==c||c<1)&&(c=3),(null==i||i<1)&&(i=3),null==f&&(f=1),null==h&&(h=1),null==g&&((g=[].fill(0,0,c*i-1))[Math.floor(g.length/2)+1]=1),grid=buildMatrixGrid(c,i,f,h,t.a);const d=function(e,t){let l=0;for(let n=0,r=t.length;n<r;n++)g[n]&&(l+=e[t[n]]*g[n]);return l},{r:b,g:k,b:w,a:R}=t,{r:O,g:A,b:y,a:I}=l;for(let e=0;e<n;e++)R[e]&&(O[e]=o?d(b,grid[e]):b[e],A[e]=s?d(k,grid[e]):k[e],y[e]=u?d(w,grid[e]):w[e],I[e]=a?d(R,grid[e]):R[e]);p?processResults(l,work,1-r):processResults(work,l,r)},"modulate-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,red:o,green:s,blue:u,alpha:a,saturation:c,lineOut:i}=e;null==r&&(r=1),null==o&&(o=1),null==s&&(s=1),null==u&&(u=1),null==a&&(a=1),null==c&&(c=!1);const{r:f,g:h,b:g,a:p}=t,{r:d,g:b,b:k,a:w}=l;if(c)for(let e=0;e<n;e++)d[e]=127+(f[e]-127)*o,b[e]=127+(h[e]-127)*s,k[e]=127+(g[e]-127)*u,w[e]=127+(p[e]-127)*a;else for(let e=0;e<n;e++)d[e]=f[e]*o,b[e]=h[e]*s,k[e]=g[e]*u,w[e]=p[e]*a;i?processResults(l,work,1-r):processResults(work,l,r)},offset:function(e){let[t,l]=getInputAndOutputChannels(e),{opacity:n,offsetRedX:r,offsetRedY:o,offsetGreenX:s,offsetGreenY:u,offsetBlueX:a,offsetBlueY:c,offsetAlphaX:i,offsetAlphaY:f,lineOut:h}=e;null==n&&(n=1),null==r&&(r=0),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=0),null==c&&(c=0),null==i&&(i=0),null==f&&(f=0);let g=!1;r==s&&r==a&&r==i&&o==u&&o==c&&o==f&&(g=!0);const{r:p,g:d,b:b,a:k}=t,{r:w,g:R,b:O,a:A}=l;let y,I,m,M,x,B,G,C,L,$,N=buildImageGrid(),v=N[0].length,H=N.length;for(let e=0;e<H;e++)for(let t=0;t<v;t++)k[L=N[e][t]]&&(g?(I=e+o,(y=t+r)>=0&&y<v&&I>=0&&I<H&&(w[$=N[I][y]]=p[L],R[$]=d[L],O[$]=b[L],A[$]=k[L])):(I=e+o,m=t+s,M=e+u,x=t+a,B=e+c,G=t+i,C=e+f,(y=t+r)>=0&&y<v&&I>=0&&I<H&&(w[$=N[I][y]]=p[L]),m>=0&&m<v&&M>=0&&M<H&&(R[$=N[M][m]]=d[L]),x>=0&&x<v&&B>=0&&B<H&&(O[$=N[B][x]]=b[L]),G>=0&&G<v&&C>=0&&C<H&&(A[$=N[C][G]]=k[L])));h?processResults(l,work,1-n):processResults(work,l,n)},pixelate:function(e){const t=function(e,t,l){let n=l.reduce((t,l)=>t+e[l],0);n=Math.floor(n/l.length);for(let e=0,r=l.length;e<r;e++)t[l[e]]=n},l=function(e,t,l){let n;for(let r=0,o=l.length;r<o;r++)t[n=l[r]]=e[n]};let[n,r]=getInputAndOutputChannels(e),{opacity:o,tileWidth:s,tileHeight:u,offsetX:a,offsetY:c,includeRed:i,includeGreen:f,includeBlue:h,includeAlpha:g,lineOut:p}=(n.r.length,e);null==o&&(o=1),null==i&&(i=!0),null==f&&(f=!0),null==h&&(h=!0),null==g&&(g=!1),null==s&&(s=1),null==u&&(u=1),null==a&&(a=0),null==c&&(c=0);const d=buildImageTileSets(s,u,a,c),{r:b,g:k,b:w,a:R}=n,{r:O,g:A,b:y,a:I}=r;d.forEach(e=>{i?t(b,O,e):l(b,O,e),f?t(k,A,e):l(k,A,e),h?t(w,y,e):l(w,y,e),g?t(R,I,e):l(R,I,e)}),p?processResults(r,work,1-o):processResults(work,r,o)},"process-image":function(e){const{assetData:t,lineOut:l}=e;if(l&&l.substring&&l.length&&t&&t.width&&t.height&&t.data){let e=t.data,n=e.length,r=createResultObject(n/4),o=r.r,s=r.g,u=r.b,a=r.a,c=0;for(let t=0;t<n;t+=4)o[c]=e[t],s[c]=e[t+1],u[c]=e[t+2],a[c]=e[t+3],c++;t.channels=r,cache[l]=t}},"set-channel-to-level":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,includeAlpha:a,level:c,lineOut:i}=e;null==r&&(r=1),null==o&&(o=!1),null==s&&(s=!1),null==u&&(u=!1),null==a&&(a=!1),null==c&&(c=0);const{r:f,g:h,b:g,a:p}=t,{r:d,g:b,b:k,a:w}=l;for(let e=0;e<n;e++)d[e]=o?c:f[e],b[e]=s?c:h[e],k[e]=u?c:g[e],w[e]=a?c:p[e];i?processResults(l,work,1-r):processResults(work,l,r)},"step-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,r=Math.floor,{opacity:o,red:s,green:u,blue:a,lineOut:c}=e;null==o&&(o=1),null==s&&(s=1),null==u&&(u=1),null==a&&(a=1),null==s&&(s=1),null==u&&(u=1),null==a&&(a=1);const{r:i,g:f,b:h,a:g}=t,{r:p,g:d,b:b,a:k}=l;for(let e=0;e<n;e++)p[e]=r(i[e]/s)*s,d[e]=r(f[e]/u)*u,b[e]=r(h[e]/a)*a,k[e]=g[e];c?processResults(l,work,1-o):processResults(work,l,o)},threshold:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,low:o,high:s,level:u,lineOut:a}=e;null==r&&(r=1),null==o&&(o=[0,0,0]),null==s&&(s=[255,255,255]),null==u&&(u=128);const{r:c,g:i,b:f,a:h}=t,{r:g,g:p,b:d,a:b}=l;let[k,w,R]=o,[O,A,y]=s;for(let e=0;e<n;e++){Math.floor(.2126*c[e]+.7152*i[e]+.0722*f[e])<u?(g[e]=k,p[e]=w,d[e]=R):(g[e]=O,p[e]=A,d[e]=y),b[e]=h[e]}a?processResults(l,work,1-r):processResults(work,l,r)},"tint-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,redInRed:o,redInGreen:s,redInBlue:u,greenInRed:a,greenInGreen:c,greenInBlue:i,blueInRed:f,blueInGreen:h,blueInBlue:g,lineOut:p}=e;null==r&&(r=1),null==o&&(o=1),null==s&&(s=0),null==u&&(u=0),null==a&&(a=0),null==c&&(c=1),null==i&&(i=0),null==f&&(f=0),null==h&&(h=0),null==g&&(g=1);const{r:d,g:b,b:k,a:w}=t,{r:R,g:O,b:A,a:y}=l;for(let e=0;e<n;e++){let t=d[e],l=b[e],n=k[e];R[e]=Math.floor(t*o+l*a+n*f),O[e]=Math.floor(t*s+l*c+n*h),A[e]=Math.floor(t*u+l*i+n*g),y[e]=w[e]}p?processResults(l,work,1-r):processResults(work,l,r)},"user-defined-legacy":function(e){let[t,l]=getInputAndOutputChannels(e),{opacity:n,lineOut:r}=e;null==n&&(n=1),copyOver(t,l),r?processResults(l,work,1-n):processResults(work,l,n)}};'
        +};
        +
        +
        +const filterUrl = URL.createObjectURL(
        +
        +    new Blob([ filterCode() ], { type: 'text/javascript' })
        +);
        + +
      • + + +
      • +
        + +
        + +
        +

        Exports

        + +
        + +
        export {
        +    filterUrl,
        +};
        + +
      • + +
      +
      + + diff --git a/docs/source/worker/filter.html b/docs/source/worker/filter.html index 1b7433a37..16c4b61ab 100644 --- a/docs/source/worker/filter.html +++ b/docs/source/worker/filter.html @@ -2,7 +2,7 @@ - Filter worker + Scrawl-canvas filters web worker @@ -160,11 +160,21 @@ + + ./source/factory/mesh.js + + + ./source/factory/net.js + + ./source/factory/noise.js + + + ./source/factory/oval.js @@ -420,8 +430,8 @@ - - ./source/worker/filter-stringed.js + + ./source/worker/filter-string.js @@ -429,11 +439,6 @@ ./source/worker/filter.js - - - ./source/worker/filter_canvas.js - -
    • @@ -449,14 +454,9 @@
      -

      Filter worker

      -

      A long-running web worker which, when not in use, gets stored in the filter pool defined in the filter factory

      -

      TODO: we’ve had to move all the code from this module into a new, comment-free module file because tools like CreateReactApp - which uses Webpack as its bundler of choice - breaks when we yarn add scrawl-canvas to a project.

      -
        -
      • The root of the issue is that Babel currently breaks when it encounters the import.meta attribute.
      • -
      • Babel do supply a plugin which is supposed to address this issue: babel-plugin-syntax-import-meta. But trying to add this to a Webpack configuration - particularly as implemented by create-react-app - is, at best, a nightmare.
      • -
      -

      NOTE: any changes to filter code need to be replicated in both files!

      +

      Scrawl-canvas filters web worker

      +

      This eb worker code is called in a just-in-time manner; the code will not be requested from the server until a Scrawl-canvas entity, Group or Cell with a non-zero filters attribute is processed during the Display cycle.

      +

      All Scrawl-canvas filters-related image manipulation work happens in this worker code. Note that this functionality is entirely separate from the <canvas> element’s context engine’s native filter functionality, which allows us to add CSS/SVG-based filters to the canvas context

      @@ -469,16 +469,18 @@

      Filter worker

      -

      Demos:

      -
        -
      • Canvas-007 - Apply filters at the entity, group and cell level
      • -
      • Canvas-020 - Testing createImageFromXXX functionality
      • -
      • Canvas-027 - Video control and manipulation; chroma-based hit zone
      • -
      • Component-004 - Scrawl-canvas packets; save and load a range of different entitys
      • -
      +
      Road map
      +

      At some point we shall attempt to convert this code into something that can be run as WebAssembly code, possibly using Rust or AssemblyScript.

      +
      Development
      +

      Compress this file using https://javascript-minifier.com/

      +

      Copy the results of the compression into the string in worker/filter-string.js

      +

      Common variables

      +

      packet and packetFiltersArray will hold data contained in the message sent to the web worker; the packet object will be returned to the main program when processing completes (or errors) in the worker

      +
      let packet, packetFiltersArray;
      + @@ -488,11 +490,12 @@

      Demos:

      -

      Imports

      -

      None used

      +

      source - the original image data supplied in the message

      +
      let source;
      + @@ -502,18 +505,11 @@

      Imports

      -

      Polyfills

      -

      TypedArray.slice() polyfill - for blur filter

      +

      work - a copy of the source image which then gets manipulated by the functions invoked by each action object included in the filter

      -
      if (!Uint8Array.prototype.slice) {
      -    Object.defineProperty(Uint8Array.prototype, 'slice', {
      -        value: function (begin, end) {
      -            return new Uint8Array(Array.prototype.slice.call(this, begin, end));
      -        }
      -    });
      -}
      +
      let work;
      @@ -524,11 +520,12 @@

      Polyfills

      -

      Worker-wide variables

      -

      The following variables are defined here so that all filter functions - including user-defined filters - can make use of them:

      +

      cache - an Object consisting of key:Object pairs where the key is the named input of a process-image action or the output of any action object. This object is cleared and re-initialized each time the worker receives a new message

      +
      let cache;
      + @@ -538,11 +535,11 @@

      Worker-wide variables

      -

      packet - the e.data object sent to the web worker from the main code

      +

      actions - the Array of action objects that the worker needs to process - data supplied by the main thread in its message’s packetFiltersArray attribute.

      -
      let packet;
      +
      let actions;
      @@ -553,11 +550,12 @@

      Worker-wide variables

      -

      image - the ImageData object

      +

      The web worker maintains a semi-permanent storage space - the workstore - for some processing objects that are computationally expensive, for instance grids, matrix reference data objects, etc. The web worker maintains a record of when each of these processing objects was last accessed and will remove objects if they have not been accessed in the last three seconds.

      -
      let image;
      +
      let workstore = {},
      +    workstoreLastAccessed = {};
      @@ -568,12 +566,10 @@

      Worker-wide variables

      -

      iWidth - convenience variable - image.width * 4 (to cope with moving through the data array by pixel)

      +

      Result objects

      -
      let iWidth;
      - @@ -583,11 +579,19 @@

      Worker-wide variables

      -

      data - the Uint8ClampedArray data component of the ImageData object

      +

      createResultObject - to make the following code easier to maintain, the web worker will create result objects for all source image data it receives, and for each action object output. These result objects contain four arrays - one for each color channle, and one for the alpha channel.

      -
      let data;
      +
      const createResultObject = function (len) {
      +
      +    return {
      +        r: new Uint8ClampedArray(len),
      +        g: new Uint8ClampedArray(len),
      +        b: new Uint8ClampedArray(len),
      +        a: new Uint8ClampedArray(len),
      +    };
      +};
      @@ -598,11 +602,49 @@

      Worker-wide variables

      -

      cache - an Array of all the starting (ie: red channel) indexes for pixels whose alpha channel is > 0 (and thus not transparent) - speeds up things for pixel-by-pixel filters that don’t need to process transparent pixels. Generated by running the web worker’s getCache function

      +

      unknit - called at the start of each new message action chain. Creates and populates the source and work objects from the image data supplied in the message

      -
      let cache;
      +
      const unknit = function (iData) {
      +
      +    let imageData = iData.data;
      +
      +    let len = Math.floor(imageData.length / 4);
      +
      +
      +    source = createResultObject(len);
      +    iData.channels = source;
      +
      +    let sourceRed = source.r,
      +        sourceGreen = source.g,
      +        sourceBlue = source.b,
      +        sourceAlpha = source.a;
      +
      +    work = createResultObject(len);
      +
      +    let workRed = work.r,
      +        workGreen = work.g,
      +        workBlue = work.b,
      +        workAlpha = work.a;
      +
      +    let counter = 0;
      +
      +    for (let i = 0, iz = imageData.length; i < iz; i += 4) {
      +
      +        sourceRed[counter] = imageData[i];
      +        sourceGreen[counter] = imageData[i + 1];
      +        sourceBlue[counter] = imageData[i + 2];
      +        sourceAlpha[counter] = imageData[i + 3];
      +
      +        workRed[counter] = imageData[i];
      +        workGreen[counter] = imageData[i + 1];
      +        workBlue[counter] = imageData[i + 2];
      +        workAlpha[counter] = imageData[i + 3];
      +
      +        counter++;
      +    }
      +};
      @@ -613,11 +655,31 @@

      Worker-wide variables

      -

      tiles - the output from running the web worker’s getTiles function. This effectively divides the image data into a grid of blocks which can be further processed by a filter

      +

      knit - called at the end of each message action chain. Recreates the message image data in the correct format so it can be used by the main thread

      -
      let tiles;
      +
      const knit = function () {
      +
      +    let imageData = packet.image.data;
      +
      +    let workRed = work.r,
      +        workGreen = work.g,
      +        workBlue = work.b,
      +        workAlpha = work.a;
      +
      +    let counter = 0;
      +
      +    for (let i = 0, iz = imageData.length; i < iz; i += 4) {
      +
      +        imageData[i] = workRed[counter];
      +        imageData[i + 1] = workGreen[counter];
      +        imageData[i + 2] = workBlue[counter];
      +        imageData[i + 3] = workAlpha[counter];
      +
      +        counter++;
      +    }
      +};
      @@ -628,14 +690,49 @@

      Worker-wide variables

      -

      localX, localY, localWidth, localHeight - the start coordinates and dimensions of the box enclosing all the non-transparent pixels in the supplied image data array. Used mainly by the blur filter - but any filter (including user-defined filters) that needs to include transparent pixel values in its calculations, but would waste time processing non-visible areas of the image, can make use of these variables

      +

      Messaging functionality

      -
      let localX;
      -let localY;
      -let localWidth;
      -let localHeight;
      +
      onmessage = function (msg) {
      +
      +    packet = msg.data;
      +    packetFiltersArray = packet.filters;
      +
      +    let workstoreKeys = Object.keys(workstore), 
      +        workstoreChoke = Date.now() - 3000;
      +
      +    workstoreKeys.forEach(k => {
      +
      +        if (workstoreLastAccessed[k] < workstoreChoke) {
      +
      +            delete workstore[k];
      +            delete workstoreLastAccessed[k];
      +        }
      +    });
      +
      +    cache = {};
      +    actions = [];
      +
      +    cache.source = packet.image;
      +
      +    packetFiltersArray.forEach(f => actions.push(...f.actions));
      +
      +    if (actions.length) {
      +
      +        unknit(cache.source);
      +        actions.forEach(a => theBigActionsObject[a.action] && theBigActionsObject[a.action](a));
      +        knit();
      +    }
      +
      +    postMessage(packet);
      +};
      +
      +onerror = function (e) {
      +
      +    console.log('error' + e.message);
      +    postMessage(packet);
      +};
      @@ -646,11 +743,43 @@

      Worker-wide variables

      -

      filters - the filter objects Array sent to the web worker from the main code

      +

      Functions invoked by a range of different action functions

      +

      buildImageGrid creates an Array of Arrays which contain the indexes of each pixel in the data channel Arrays

      -
      let filters;
      +
      const buildImageGrid = function (data) {
      +
      +    if (!data) data = cache.source;
      +
      +    if (data && data.width && data.height) {
      +
      +        let name = `grid-${data.width}-${data.height}`;
      +        if (workstore[name]) {
      +            workstoreLastAccessed[name] = Date.now();
      +            return workstore[name];
      +        }
      +
      +        let grid = [],
      +            counter = 0;
      +
      +        for (let y = 0, yz = data.height; y < yz; y++) {
      +
      +            let row = [];
      +
      +            for (let x = 0, xz = data.width; x < xz; x++) {
      +                
      +                row.push(counter);
      +                counter++;
      +            }
      +            grid.push(row);
      +        }
      +        workstore[name] = grid;
      +        workstoreLastAccessed[name] = Date.now();
      +        return grid;
      +    }
      +    return false;
      +};
      @@ -661,11 +790,105 @@

      Worker-wide variables

      -

      filter - the current filter object being processed by the web worker - holds all the settings required for that filter function, for example filter.level for the brightness, saturation and threshold filter functions

      +

      buildAlphaTileSets - creates a record of which pixels belong to which tile - used for manipulating alpha channel values. Resulting object will be cached in the store

      -
      let filter;
      +
      const buildAlphaTileSets = function (tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels, data) {
      +
      +    if (!data) data = cache.source;
      +
      +    if (data && data.width && data.height) {
      +
      +        let iWidth = data.width,
      +            iHeight = data.height;
      +
      +        tileWidth = (tileWidth.toFixed && !isNaN(tileWidth)) ? tileWidth : 1;
      +        tileHeight = (tileHeight.toFixed && !isNaN(tileHeight)) ? tileHeight : 1;
      +        gutterWidth = (gutterWidth.toFixed && !isNaN(gutterWidth)) ? gutterWidth : 1;
      +        gutterHeight = (gutterHeight.toFixed && !isNaN(gutterHeight)) ? gutterHeight : 1;
      +        offsetX = (offsetX.toFixed && !isNaN(offsetX)) ? offsetX : 0;
      +        offsetY = (offsetY.toFixed && !isNaN(offsetY)) ? offsetY : 0;
      +
      +        if (tileWidth < 1) tileWidth = 1;
      +        if (tileHeight < 1) tileHeight = 1;
      +        if (tileWidth + gutterWidth >= iWidth) tileWidth = iWidth - gutterWidth - 1;
      +        if (tileHeight + gutterHeight >= iHeight) tileHeight = iHeight - gutterHeight - 1;
      +
      +        if (tileWidth < 1) tileWidth = 1;
      +        if (tileHeight < 1) tileHeight = 1;
      +        if (tileWidth + gutterWidth >= iWidth) gutterWidth = iWidth - tileWidth - 1;
      +        if (tileHeight + gutterHeight >= iHeight) gutterHeight = iHeight - tileHeight - 1;
      +
      +        let aWidth = tileWidth + gutterWidth,
      +            aHeight = tileHeight + gutterHeight;
      +
      +        if (offsetX < 0) offsetX = 0;
      +        if (offsetX >= aWidth) offsetX = aWidth - 1;
      +        if (offsetY < 0) offsetY = 0;
      +        if (offsetY >= aHeight) offsetY = aHeight - 1;
      +
      +        let name = `alphatileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${gutterWidth}-${gutterHeight}-${offsetX}-${offsetY}`;
      +        if (workstore[name]) {
      +            workstoreLastAccessed[name] = Date.now();
      +            return workstore[name];
      +        }
      +
      +        let tiles = [],
      +            hold, i, iz, j, jz, x, xz, y, yz;
      +
      +        for (j = offsetY - aHeight, jz = iHeight; j < jz; j += aHeight) {
      +
      +            for (i = offsetX - aWidth, iz = iWidth; i < iz; i += aWidth) {
      +
      +                hold = [];
      +                for (y = j, yz = j + tileHeight; y < yz; y++) {
      +                    if (y >= 0 && y < iHeight) {
      +                        for (let x = i, xz = i + tileWidth; x < xz; x++) {
      +                            if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x);
      +                        }
      +                    }
      +                }
      +                tiles.push([].concat(hold));
      +
      +                hold = [];
      +                for (y =  j + tileHeight, yz = j + tileHeight + gutterHeight; y < yz; y++) {
      +                    if (y >= 0 && y < iHeight) {
      +                        for (let x = i, xz = i + tileWidth; x < xz; x++) {
      +                            if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x);
      +                        }
      +                    }
      +                }
      +                tiles.push([].concat(hold));
      +
      +                hold = [];
      +                for (y = j, yz = j + tileHeight; y < yz; y++) {
      +                    if (y >= 0 && y < iHeight) {
      +                        for (let x = i + tileWidth, xz = i + tileWidth + gutterWidth; x < xz; x++) {
      +                            if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x);
      +                        }
      +                    }
      +                }
      +                tiles.push([].concat(hold));
      +
      +                hold = [];
      +                for (y =  j + tileHeight, yz = j + tileHeight + gutterHeight; y < yz; y++) {
      +                    if (y >= 0 && y < iHeight) {
      +                        for (let x = i + tileWidth, xz = i + tileWidth + gutterWidth; x < xz; x++) {
      +                            if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x);
      +                        }
      +                    }
      +                }
      +                tiles.push([].concat(hold));
      +            }
      +        }
      +        workstore[name] = tiles;
      +        workstoreLastAccessed[name] = Date.now();
      +        return tiles;
      +    }
      +    return false;
      +
      +};
      @@ -676,11 +899,66 @@

      Worker-wide variables

      -

      action - internal processing variable

      +

      buildImageTileSets - creates a record of which pixels belong to which tile - used for manipulating color channels values. Resulting object will be cached in the store

      -
      let action;
      +
      const buildImageTileSets = function (tileWidth, tileHeight, offsetX, offsetY, data) {
      +
      +    if (!data) data = cache.source;
      +
      +    if (data && data.width && data.height) {
      +
      +        let iWidth = data.width,
      +            iHeight = data.height;
      +
      +        tileWidth = (tileWidth.toFixed && !isNaN(tileWidth)) ? tileWidth : 1;
      +        tileHeight = (tileHeight.toFixed && !isNaN(tileHeight)) ? tileHeight : 1;
      +        offsetX = (offsetX.toFixed && !isNaN(offsetX)) ? offsetX : 0;
      +        offsetY = (offsetY.toFixed && !isNaN(offsetY)) ? offsetY : 0;
      +
      +        if (tileWidth < 1) tileWidth = 1;
      +        if (tileWidth >= iWidth) tileWidth = iWidth - 1;
      +        if (tileHeight < 1) tileHeight = 1;
      +        if (tileHeight >= iHeight) tileHeight = iHeight - 1;
      +        if (offsetX < 0) offsetX = 0;
      +        if (offsetX >= tileWidth) offsetX = tileWidth - 1;
      +        if (offsetY < 0) offsetY = 0;
      +        if (offsetY >= tileHeight) offsetY = tileHeight - 1;
      +
      +        let name = `imagetileset-${iWidth}-${iHeight}-${tileWidth}-${tileHeight}-${offsetX}-${offsetY}`;
      +        if (workstore[name]) {
      +            workstoreLastAccessed[name] = Date.now();
      +            return workstore[name];
      +        }
      +
      +        let tiles = [];
      +
      +        for (let j = offsetY - tileHeight, jz = iHeight; j < jz; j += tileHeight) {
      +
      +            for (let i = offsetX - tileWidth, iz = iWidth; i < iz; i += tileWidth) {
      +
      +                let hold = [];
      +                
      +                for (y = j, yz = j + tileHeight; y < yz; y++) {
      +
      +                    if (y >= 0 && y < iHeight) {
      +
      +                        for (let x = i, xz = i + tileWidth; x < xz; x++) {
      +
      +                            if (x >= 0 && x < iWidth) hold.push((y * iWidth) + x);
      +                        }
      +                    }
      +                }
      +                if (hold.length) tiles.push(hold);
      +            }
      +        }
      +        workstore[name] = tiles;
      +        workstoreLastAccessed[name] = Date.now();
      +        return tiles;
      +    }
      +    return false;
      +};
      @@ -691,41 +969,42 @@

      Worker-wide variables

      -

      Messaging and error handling

      +

      buildHorizontalBlur - creates an Array of Arrays detailing which pixels contribute to the horizontal part of each pixel’s blur calculation. Resulting object will be cached in the store

      -
      onmessage = function (e) {
      +            
      const buildHorizontalBlur = function (grid, radius, alpha) {
       
      -    let i, iz;
      +    if (!radius || !radius.toFixed || isNaN(radius)) radius = 0;
       
      -    packet = e.data;
      -    image = packet.image;
      -    iWidth = image.width * 4;
      -    data = image.data;
      -    filters = packet.filters;
      +    let gridHeight = grid.length,
      +        gridWidth = grid[0].length;
       
      -    getCache();
      -    getLocal();
      -
      -    for (i = 0, iz = filters.length; i < iz; i++) {
      -
      -        filter = filters[i];
      +    let name = `blur-h-${gridWidth}-${gridHeight}-${radius}`;
      +    if (workstore[name]) {
      +        workstoreLastAccessed[name] = Date.now();
      +        return workstore[name];
      +    }
       
      -        if (filter.method === 'userDefined' && filter.userDefined) actions.userDefined = new Function(filter.userDefined);
      +    let horizontalBlur = [],
      +        cell;
       
      -        action = actions[filter.method];
      +    for (let y = 0; y < gridHeight; y++) {
       
      -        if (action) action();
      -    }
      +        for (let x = 0; x < gridWidth; x++) {
       
      -    postMessage(packet);
      -};
      +            let cellsToProcess = [];
       
      -onerror = function (e) {
      +            for (let c = x - radius, cz = x + radius + 1; c < cz; c++) {
       
      -    console.log('error' + e.message);
      -    postMessage(packet);
      +                if (c >= 0 && c < gridWidth) cellsToProcess.push(grid[y][c]);
      +            }
      +            horizontalBlur[(y * gridHeight) + x] = cellsToProcess;
      +        }
      +    }
      +    workstore[name] = horizontalBlur;
      +    workstoreLastAccessed[name] = Date.now();
      +    return horizontalBlur;
       };
      @@ -737,21 +1016,42 @@

      Messaging and error handling

      -

      getCache - function that fills the cache worker variable with the starting index position of each non-transparent pixel in the current image’s Uint8ClampedArray Array

      +

      buildVerticalBlur - creates an Array of Arrays detailing which pixels contribute to the vertical part of each pixel’s blur calculation. Resulting object will be cached in the store

      -
      const getCache = function () {
      +            
      const buildVerticalBlur = function (grid, radius, alpha) {
       
      -    let i, iz;
      +    if (!radius || !radius.toFixed || isNaN(radius)) radius = 0;
       
      -    if (Array.isArray(cache)) cache.length = 0;
      -    else cache = [];
      +    let gridHeight = grid.length,
      +        gridWidth = grid[0].length;
       
      -    for (i = 0, iz = data.length; i < iz; i += 4) {
      +    let name = `blur-v-${gridWidth}-${gridHeight}-${radius}`;
      +    if (workstore[name]) {
      +        workstoreLastAccessed[name] = Date.now();
      +        return workstore[name];
      +    }
      +
      +    let verticalBlur = [],
      +        cell;
      +
      +    for (let x = 0; x < gridWidth; x++) {
      +
      +        for (let y = 0; y < gridHeight; y++) {
       
      -        if (data[i + 3]) cache.push(i);
      +            let cellsToProcess = [];
      +
      +            for (let c = y - radius, cz = y + radius + 1; c < cz; c++) {
      +
      +                if (c >= 0 && c < gridHeight) cellsToProcess.push(grid[c][x]);
      +            }
      +            verticalBlur[(y * gridHeight) + x] = cellsToProcess;
      +        }
           }
      +    workstore[name] = verticalBlur;
      +    workstoreLastAccessed[name] = Date.now();
      +    return verticalBlur;
       };
      @@ -763,37 +1063,67 @@

      Messaging and error handling

      -

      getLocal - function that populates the localX, localY, localWidth, localHeight worker variables with relevant values for the current image data

      +

      buildMatrixGrid - creates an Array of Arrays detailing which pixels contribute to each pixel’s matrix calculation. Resulting object will be cached in the store

      -
      const getLocal = function () {
      +            
      const buildMatrixGrid = function (mWidth, mHeight, mX, mY, alpha, data) {
       
      -    let i, iz, w, h, minX, minY, maxX, maxY, x, y, val,
      -        floor = Math.floor;
      +    if (!data) data = cache.source;
       
      -    w = image.width;
      -    h = image.height;
      -    minX = w;
      -    minY = h;
      -    maxX = 0;
      -    maxY = 0;
      +    if (mWidth == null || mWidth < 1) mWidth = 1;
      +    if (mHeight == null || mHeight < 1) mHeight = 1;
       
      -    for (i = 0, iz = cache.length; i < iz; i++) {
      +    if (mX == null || mX < 0) mX = 0;
      +    else if (mX >= mWidth) mX = mWidth - 1;
       
      -        val = cache[i] / 4;
      -        y = floor(val / w);
      -        x = val % w;
      -        minX = (x < minX) ? x : minX;
      -        minY = (y < minY) ? y : minY;
      -        maxX = (x > maxX) ? x : maxX;
      -        maxY = (y > maxY) ? y : maxY;
      +    if (mY == null || mY < 0) mY = 0;
      +    else if (mY >= mHeight) mY = mHeight - 1;
      +
      +    let iWidth = data.width,
      +        iHeight = data.height;
      +
      +    let name = `matrix-${iWidth}-${iHeight}-${mWidth}-${mHeight}-${mX}-${mY}`;
      +    if (workstore[name]) {
      +        workstoreLastAccessed[name] = Date.now();
      +        return workstore[name];
      +    }
      +
      +    let dataLength = data.data.length,
      +        x, xz, y, yz, i, iz,
      +        cellsTemplate = [],
      +        grid = [];
      +
      +    for (y = -mY, yz = mHeight - mY; y < yz; y++) {
      +
      +        for (x = -mX, xz = mWidth - mX; x < xz; x++) {
      +
      +            cellsTemplate.push((y * iWidth) + x);
      +        }
           }
       
      -    localX = minX;
      -    localY = minY;
      -    localWidth = maxX - minX;
      -    localHeight = maxY - minY;
      +    for (y = 0; y < iHeight; y++) {
      +
      +        for (x = 0; x < iWidth; x++) {
      +            
      +            let pos = (y * iWidth) + x;
      +            let cell = [];
      +
      +            for (i = 0, iz = cellsTemplate.length; i < iz; i++) {
      +
      +                let val = pos + cellsTemplate[i];
      +
      +                if (val < 0) val += dataLength;
      +                else if (val >= dataLength) val -= dataLength;
      +
      +                cell.push(val);
      +            }
      +            grid.push(cell);
      +        }
      +    }
      +    workstore[name] = grid;
      +    workstoreLastAccessed[name] = Date.now();
      +    return grid;
       };
      @@ -805,54 +1135,55 @@

      Messaging and error handling

      -

      getTiles - function that populates the tiles worker Array with relevant values for the current image data

      +

      checkChannelLevelsParameters - divide each channel into discrete sequences of pixels

      -
      const getTiles = function () {
      -
      -    let i, iz, j, jz, x, xz, y, yz, startX, startY, pos, 
      -        hold = [],
      -        tileWidth = filter.tileWidth || 1,
      -        tileHeight = filter.tileHeight || 1,
      -        offsetX = filter.offsetX,
      -        offsetY = filter.offsetY,
      -        w = image.width,
      -        h = image.height;
      +            
      const checkChannelLevelsParameters = function (f) {
       
      -    if (Array.isArray(tiles)) tiles.length = 0;
      -    else tiles = [];
      +    const doCheck = function (v, isHigh = false) {
       
      -    offsetX = (offsetX >= tileWidth) ? tileWidth - 1 : offsetX;
      -    offsetY = (offsetY >= tileHeight) ? tileHeight - 1 : offsetY;
      +        if (v.toFixed) {
      +            if (v < 0) return [[0, 255, 0]];
      +            if (v > 255) return [[0, 255, 255]];
      +            if (isNaN(v)) return (isHigh) ? [[0, 255, 255]] : [[0, 255, 0]];
      +            return [[0, 255, v]];
      +        }
       
      -    startX = (offsetX) ? offsetX - tileWidth : 0;
      -    startY = (offsetY) ? offsetY - tileHeight : 0;
      +        if (v.substring) {
      +            v = v.split(',');
      +        }
       
      -    for (j = startY, jz = h + tileHeight; j < jz; j += tileHeight) {
      +        if (Array.isArray(v)) {
       
      -        for (i = startX, iz = w + tileWidth; i < iz; i += tileWidth) {
      +            if (!v.length) return v;
      +            if (Array.isArray(v[0])) return v;
       
      -            hold.length = 0;
      -            
      -            for (y = j, yz = j + tileHeight; y < yz; y++) {
      +            v = v.map(s => parseInt(s, 10));
      +            v.sort((a, b) => a - b);
       
      -                if (y >= 0 && y < h) {
      +            if (v.length == 1) return [[0, 255, v[0]]];
       
      -                    for (x = i, xz = i + tileWidth; x < xz; x++) {
      +            let res = [],
      +                starts, ends;
       
      -                        if (x >= 0 && x < w) {
      +            for (let i = 0, iz = v.length; i < iz; i++) {
       
      -                            pos = (y * iWidth) + (x * 4);
      +                starts = 0;
      +                ends = 255;
      +                if (i != 0) starts = Math.ceil(v[i - 1] + ((v[i] - v[i - 1]) / 2));
      +                if (i != iz - 1) ends = Math.floor(v[i] + ((v[i + 1] - v[i]) / 2));
       
      -                            if (data[pos + 3]) hold.push(pos);
      -                        }
      -                    }
      -                }
      +                res.push([starts, ends, v[i]]);
                   }
      -            if (hold.length) tiles.push([].concat(hold));
      +            return res;
               }
      +        return (isHigh) ? [[0, 255, 255]] : [[0, 255, 0]];
           }
      +    f.red = doCheck(f.red);
      +    f.green = doCheck(f.green);
      +    f.blue = doCheck(f.blue);
      +    f.alpha = doCheck(f.alpha, true);
       };
      @@ -864,25 +1195,13 @@

      Messaging and error handling

      -

      average - Returns the average of values in an array

      +

      cacheOutput - insert an action function’s output into the worker’s cache

      -
      const average = function (c) {
      +            
      const cacheOutput = function (name, obj, caller) {
       
      -    let a = 0,
      -        k, kz,
      -        l = c.length;
      -
      -    if (l) {
      -
      -        for (k = 0, kz = l; k < kz; k++) {
      -
      -            a +=c[k];
      -        }
      -        return a / l;
      -    }
      -    return 0;
      +    cache[name] = obj;
       };
      @@ -894,17 +1213,22 @@

      Messaging and error handling

      -

      checkBounds - Checks that a position cursor is within the bounds of the data array

      +

      copyOver - copy the values from one results object to another

      -
      const checkBounds = function (p) {
      +            
      const copyOver = function (f, t) {
      +
      +    let {r:fromR, g:fromG, b:fromB, a:fromA } = f;
      +    let {r:toR, g:toG, b:toB, a:toA } = t;
       
      -    let len = data.length;
      +    for (let i = 0; i < fromR.length; i++) {
       
      -    if (p < 0) p += len;
      -    if (p >= len) p -= len;
      -    return p;
      +        toR[i] = fromR[i];
      +        toG[i] = fromG[i];
      +        toB[i] = fromB[i];
      +        toA[i] = fromA[i];
      +    }
       };
      @@ -916,11 +1240,37 @@

      Messaging and error handling

      -

      All the pre-defined filter functions are held as attributes to the actions object

      +

      getInputAndOutputDimensions - determine, and return, the dimensions (width, height) for the appropriate results object for the lineIn, lineMix and lineOut values supplied to each action function when it gets invoked

      -
      const actions = {
      +
      const getInputAndOutputDimensions = function (requirements) {
      +
      +    let data = cache.source,
      +        results = [];
      +
      +    if (requirements.lineIn && requirements.lineIn != 'source' && requirements.lineIn != 'source-alpha' && cache[requirements.lineIn]) {
      +
      +        data = cache[requirements.lineIn];
      +    }
      +    results.push(data.width, data.height);
      +
      +    if (requirements.lineOut && cache[requirements.lineOut]) {
      +
      +        data = cache[requirements.lineOut];
      +    }
      +    results.push(data.width, data.height);
      +
      +    data = cache.source;
      +
      +    if (requirements.lineMix && requirements.lineMix != 'source' && requirements.lineMix != 'source-alpha' && cache[requirements.lineMix]) {
      +
      +        data = cache[requirements.lineMix];
      +    }
      +    results.push(data.width, data.height);
      +
      +    return results;
      +};
      @@ -931,11 +1281,77 @@

      Messaging and error handling

      -

      userDefined - requires a String function in the filter.userDefined attribute, which will be generated into a working function by the web worker - such filters can make use of any other filter attributes (for example: filter.level) alongside the dedicated userDefined attributes filter.udVariable0 - filter.udVariable9

      +

      getInputAndOutputChannels - determine, and return, the appropriate results object for the lineIn, lineMix and lineOut values supplied to each action function when it gets invoked

      -
          userDefined: function () {},
      +
      const getInputAndOutputChannels = function (requirements) {
      +
      +    let lineIn = work;
      +    let len = lineIn.r.length;
      +    let data = cache.source;
      +
      +    if (requirements.lineIn) {
      +
      +        if (requirements.lineIn == 'source') lineIn = data.channels;
      +        else if (requirements.lineIn == 'source-alpha') {
      +
      +            lineIn = createResultObject(len);
      +
      +            let destAlpha = lineIn.a,
      +                sourceAlpha = data.channels.a;
      +
      +            for (let i = 0; i < len; i++) {
      +
      +                destAlpha[i] = sourceAlpha[i];
      +            }
      +        }
      +        else if (cache[requirements.lineIn]) {
      +
      +            data = cache[requirements.lineIn];
      +            lineIn = data.channels;
      +        }
      +    }
      +
      +    let lineMix = false;
      +
      +    if (requirements.lineMix) {
      +
      +        if (requirements.lineMix == 'source') lineMix = cache.source.channels;
      +        else if (requirements.lineMix == 'source-alpha') {
      +
      +            lineMix = createResultObject(len);
      +
      +            let destAlpha = lineMix.a,
      +                sourceAlpha = cache.source.channels.a;
      +
      +            for (let i = 0; i < len; i++) {
      +
      +                destAlpha[i] = sourceAlpha[i];
      +            }
      +        }
      +        else if (cache[requirements.lineMix]) lineMix = cache[requirements.lineMix].channels;
      +    }
      +
      +    let lineOut;
      +
      +    if (requirements.lineOut) {
      +
      +        if (cache[requirements.lineOut]) lineOut = cache[requirements.lineOut].channels;
      +        else {
      +
      +            lineOut = createResultObject(len);
      +            cache[requirements.lineOut] = {
      +                width: data.width,
      +                height: data.height,
      +                channels: lineOut,
      +            };
      +        }
      +    }
      +    else lineOut = createResultObject(len);
      +
      +    return [lineIn, lineOut, lineMix];
      +};
      @@ -946,21 +1362,36 @@

      Messaging and error handling

      -

      grayscale - desaturates the image

      +

      processResults - at the conclusion of each action function, combine the results of the function’s manipulations back into the data supplied for manipulation, in line with the value of the action object’s opacity attribute

      -
          grayscale: function () {
      +            
      const processResults = function (store, incoming, ratio) {
      +
      +    let sR = store.r,
      +        sG = store.g,
      +        sB = store.b,
      +        sA = store.a;
       
      -        let i, iz, pos, gray;
      +    let iR = incoming.r,
      +        iG = incoming.g,
      +        iB = incoming.b,
      +        iA = incoming.a;
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +    if (ratio === 1) copyOver(incoming, store);
      +    else if (ratio > 0) {
       
      -            pos = cache[i];
      -            gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]);
      -            data[pos] = data[pos + 1] = data[pos + 2] = gray;
      +        antiRatio = 1 - ratio;
      +
      +        for (let i = 0, iz = sR.length; i < iz; i++) {
      +
      +            sR[i] = Math.floor((sR[i] * antiRatio) + (iR[i] * ratio));
      +            sG[i] = Math.floor((sG[i] * antiRatio) + (iG[i] * ratio));
      +            sB[i] = Math.floor((sB[i] * antiRatio) + (iB[i] * ratio));
      +            sA[i] = Math.floor((sA[i] * antiRatio) + (iA[i] * ratio));
               }
      -    },
      + } +};
      @@ -971,27 +1402,37 @@

      Messaging and error handling

      -

      sepia - desaturates the image, then ‘antiques’ it by adding back some yellow tone

      +

      getHSLfromRGB - convert an RGB format color into an HSL format color

      -
          sepia: function () {
      +            
      const getHSLfromRGB = function (dr, dg, db) {
       
      -        let i, iz, pos, r, g, b;
      +    let minColor = Math.min(dr, dg, db),
      +        maxColor = Math.max(dr, dg, db);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +    let lum = (minColor + maxColor) / 2;
       
      -            pos = cache[i];
      -            
      -            r = data[pos];
      -            g = data[pos + 1];
      -            b = data[pos + 2];
      -            
      -            data[pos] = (r * 0.393) + (g * 0.769) + (b * 0.189);
      -            data[pos + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168);
      -            data[pos + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131);
      -        }
      -    },
      + let sat = 0; + + if (minColor !== maxColor) { + + if (lum <= 0.5) sat = (maxColor - minColor) / (maxColor + minColor); + else sat = (maxColor - minColor) / (2 - maxColor - minColor); + } + + let hue = 0; + + if (maxColor === dr) hue = (dg - db) / (maxColor - minColor); + else if (maxColor === dg) hue = 2 + ((db - dr) / (maxColor - minColor)); + else hue = 4 + ((dr - dg) / (maxColor - minColor)); + + hue *= 60; + + if (hue < 0) hue += 360; + + return [hue, sat, lum]; +};
      @@ -1002,26 +1443,48 @@

      Messaging and error handling

      -

      invert - turns white into black, and similar across the spectrum

      +

      getRGBfromHSL - convert an HSL format color into an RGB format color

      -
          invert: function () {
      +            
      const getRGBfromHSL = function (h, s, l) {
       
      -        let i, iz, pos;
      +    if (!s) {
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let gray = Math.floor(l * 255);
      +        return [gray, gray, gray];
      +    }
       
      -            pos = cache[i];
      -            data[pos] = 255 - data[pos];
      -            
      -            pos++;
      -            data[pos] = 255 - data[pos];
      -            
      -            pos++;
      -            data[pos] = 255 - data[pos];
      -        }
      -    },
      + let tempLum1 = (l < 0.5) ? l * (s + 1) : l + s - (l * s), + tempLum2 = (2 * l) - tempLum1; + + const calculator = function (t, l1, l2) { + + if (t * 6 < 1) return l2 + ((l1 - l2) * 6 * t); + if (t * 2 < 1) return l1; + if (t * 2 < 2) return l2 + ((l1 - l2) * 6 * (t * 0.666)); + return l2; + }; + + h /= 360; + + let tr = h + 0.333, + tg = h, + tb = h - 0.333; + + if (tr < 0) tr += 1; + if (tr > 1) tr -= 1; + if (tg < 0) tg += 1; + if (tg > 1) tg -= 1; + if (tb < 0) tb += 1; + if (tb > 1) tb -= 1; + + let r = calculator(tr, tempLum1, tempLum2) * 255, + g = calculator(tg, tempLum1, tempLum2) * 255, + b = calculator(tb, tempLum1, tempLum2) * 255; + + return [r, g, b]; +};
      @@ -1032,21 +1495,12 @@

      Messaging and error handling

      -

      red - suppresses the image’s green and blue channels

      +

      Filter action functions

      +

      Each function is held in the theBigActionsObject object, for convenience

      -
          red: function () {
      -
      -        let i, iz, pos;
      -
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      -
      -            pos = cache[i];
      -            data[pos + 1] = 0;
      -            data[pos + 2] = 0;
      -        }
      -    },
      +
      const theBigActionsObject = {
      @@ -1057,20 +1511,39 @@

      Messaging and error handling

      -

      green - suppresses the image’s red and blue channels

      +

      alpha-to-channels - Copies the alpha channel value over to the selected value or, alternatively, sets that channels value to zero, or leaves the channel’s value unchanged. Setting the appropriate “includeChannel” flags will copy the alpha channel value to that channel; when that flag is false, setting the appropriate “excludeChannel” flag will set that channel’s value to zero.

      -
          green: function () {
      +            
          'alpha-to-channels': function (requirements) {
       
      -        let i, iz, pos;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            data[pos] = 0;
      -            data[pos + 2] = 0;
      +        let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
      +        if (null == excludeRed) excludeRed = true;
      +        if (null == excludeGreen) excludeGreen = true;
      +        if (null == excludeBlue) excludeBlue = true;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            outR[i] = (includeRed) ? inA[i] : ((excludeRed) ? 0 : inR[i]);
      +            outG[i] = (includeGreen) ? inA[i] : ((excludeGreen) ? 0 : inG[i]);
      +            outB[i] = (includeBlue) ? inA[i] : ((excludeBlue) ? 0 : inB[i]);
               }
      +        outA.fill(255, 0, outA.length - 1);
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1082,20 +1555,49 @@

      Messaging and error handling

      -

      blue - suppresses the image’s red and green channels

      +

      area-alpha - Places a tile schema across the input, quarters each tile and then sets the alpha channels of the pixels in selected quarters of each tile to zero. Can be used to create horizontal or vertical bars, or chequerboard effects.

      -
          blue: function () {
      +            
          'area-alpha': function (requirements) {
      +
      +        let [input, output] = getInputAndOutputChannels(requirements);
      +
      +        let len = input.r.length;
      +
      +        let {opacity, tileWidth, tileHeight, offsetX, offsetY, gutterWidth, gutterHeight, areaAlphaLevels, lineOut} = requirements;
       
      -        let i, iz, pos;
      +        if (null == opacity) opacity = 1;
      +        if (null == tileWidth) tileWidth = 1;
      +        if (null == tileHeight) tileHeight = 1;
      +        if (null == offsetX) offsetX = 0;
      +        if (null == offsetY) offsetY = 0;
      +        if (null == gutterWidth) gutterWidth = 1;
      +        if (null == gutterHeight) gutterHeight = 1;
      +        if (null == areaAlphaLevels) areaAlphaLevels = [255,0,0,0];
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let tiles = buildAlphaTileSets(tileWidth, tileHeight, gutterWidth, gutterHeight, offsetX, offsetY, areaAlphaLevels);
       
      -            pos = cache[i];
      -            data[pos] = 0;
      -            data[pos + 1] = 0;
      +        if (!Array.isArray(areaAlphaLevels)) areaAlphaLevels = [255,0,0,0];
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +            outR[i] = inR[i];
      +            outG[i] = inG[i];
      +            outB[i] = inB[i];
               }
      +        tiles.forEach((t, index) => {
      +
      +            for (let j = 0, jz = t.length; j < jz; j++) {
      +
      +                if (inA[t[j]]) outA[t[j]] = areaAlphaLevels[index % 4];
      +            }
      +        });
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1107,19 +1609,71 @@

      Messaging and error handling

      -

      notred - suppresses the image’s red channel

      +

      average-channels - Calculates an average value from each pixel’s included channels and applies that value to all channels that have not been specifically excluded; excluded channels have their values set to 0.

      -
          notred: function() {
      +            
          'average-channels': function (requirements) {
      +
      +        let [input, output] = getInputAndOutputChannels(requirements);
      +
      +        let len = input.r.length;
      +
      +        let {opacity, includeRed, includeGreen, includeBlue, excludeRed, excludeGreen, excludeBlue, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
      +        if (null == excludeRed) excludeRed = false;
      +        if (null == excludeGreen) excludeGreen = false;
      +        if (null == excludeBlue) excludeBlue = false;
      +
      +        let divisor = 0;
      +        if (includeRed) divisor++;
      +        if (includeGreen) divisor++;
      +        if (includeBlue) divisor++;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            if (inA[i]) {
      +
      +                if (divisor) {
      +
      +                    let avg = 0;
       
      -        let i, iz, pos;
      +                    if (includeRed) avg += inR[i];
      +                    if (includeGreen) avg += inG[i];
      +                    if (includeBlue) avg += inB[i];
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +                    avg = Math.floor(avg / divisor);
       
      -            pos = cache[i];
      -            data[pos] = 0;
      +                    outR[i] = (excludeRed) ? 0 : avg;
      +                    outG[i] = (excludeGreen) ? 0 : avg;
      +                    outB[i] = (excludeBlue) ? 0 : avg;
      +                    outA[i] = inA[i];
      +                }
      +                else {
      +    
      +                    outR[i] = (excludeRed) ? 0 : inR[i];
      +                    outG[i] = (excludeGreen) ? 0 : inG[i];
      +                    outB[i] = (excludeBlue) ? 0 : inB[i];
      +                    outA[i] = inA[i];
      +                }
      +            }
      +            else {
      +
      +                outR[i] = inR[i];
      +                outG[i] = inG[i];
      +                outB[i] = inB[i];
      +                outA[i] = inA[i];
      +            }
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1131,19 +1685,44 @@

      Messaging and error handling

      -

      notgreen - suppresses the image’s green channel

      +

      binary - Set the channel to either 0 or 255, depending on whether the channel value is below or above a given level. Level values are set using the “red”, “green”, “blue” and “alpha” arguments. Setting these values to 0 disables the action for that channel.

      -
          notgreen: function () {
      +            
          'binary': function (requirements) {
      +
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        let i, iz, pos;
      +        let len = input.r.length;
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let {opacity, red, green, blue, alpha, lineOut} = requirements;
       
      -            pos = cache[i];
      -            data[pos + 1] = 0;
      +        if (null == opacity) opacity = 1;
      +        if (null == red) red = 0;
      +        if (null == green) green = 0;
      +        if (null == blue) blue = 0;
      +        if (null == alpha) alpha = 0;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            if (red) outR[i] = (inR[i] > red) ? 255 : 0;
      +            else outR[i] = inR[i];
      +
      +            if (green) outG[i] = (inG[i] > green) ? 255 : 0;
      +            else outG[i] = inG[i];
      +
      +            if (blue) outB[i] = (inB[i] > blue) ? 255 : 0;
      +            else outB[i] = inB[i];
      +
      +            if (alpha) outA[i] = (inA[i] > alpha) ? 255 : 0;
      +            else outA[i] = inA[i];
               }
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1155,19 +1734,495 @@

      Messaging and error handling

      -

      notblue - suppresses the image’s blue channel

      +

      blend - Using two source images (from the “lineIn” and “lineMix” arguments), combine their color information using various separable and non-separable blend modes (as defined by the W3C Compositing and Blending Level 1 recommendations. The blending method is determined by the String value supplied in the “blend” argument; permitted values are: ‘color-burn’, ‘color-dodge’, ‘darken’, ‘difference’, ‘exclusion’, ‘hard-light’, ‘lighten’, ‘lighter’, ‘multiply’, ‘overlay’, ‘screen’, ‘soft-light’, ‘color’, ‘hue’, ‘luminosity’, and ‘saturation’. Note that the source images may be of different sizes: the output (lineOut) image size will be the same as the source (NOT lineIn) image; the lineMix image can be moved relative to the lineIn image using the “offsetX” and “offsetY” arguments.

      -
          notblue: function () {
      +            
          'blend': function (requirements) {
      +
      +        let [input, output, mix] = getInputAndOutputChannels(requirements);
      +
      +        let len = output.r.length;
      +
      +        let {opacity, blend, offsetX, offsetY, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == blend) blend = '';
      +        if (null == offsetX) offsetX = 0;
      +        if (null == offsetY) offsetY = 0;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +        const {r:mixR, g:mixG, b:mixB, a:mixA} = mix;
      +
      +        let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements);
      +
      +        const copyPixel = function (fromPos, toPos, channel) {
      +
      +            outR[toPos] = channel.r[fromPos];
      +            outG[toPos] = channel.g[fromPos];
      +            outB[toPos] = channel.b[fromPos];
      +            outA[toPos] = channel.a[fromPos];
      +        };
      +
      +        const getLinePositions = function (x, y) {
      +
      +            let ix = x,
      +                iy = y,
      +                mx = x - offsetX,
      +                my = y - offsetY;
      +
      +            let mPos = -1,
      +                iPos = (iy * iWidth) + ix;
      +
      +            if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx;
      +
      +            return [iPos, mPos];
      +        };
      +
      +        const getChannelNormals = function (i, m) {
      +
      +            return [
      +                input.r[i] / 255,
      +                input.g[i] / 255,
      +                input.b[i] / 255,
      +                input.a[i] / 255,
      +                mix.r[m] / 255,
      +                mix.g[m] / 255,
      +                mix.b[m] / 255,
      +                mix.a[m] / 255
      +            ];
      +        };
      +
      +        const alphaCalc = (dinA, dmixA) => (dinA + (dmixA * (1 - dinA))) * 255;
       
      -        let i, iz, pos;
      +        switch (blend) {
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +            case 'color-burn' :
      +                const colorburnCalc = (din, dmix) => {
      +                    if (dmix == 1) return 255;
      +                    else if (din == 0) return 0;
      +                    return (1 - Math.min(1, ((1 - dmix) / din ))) * 255;
      +                };
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
       
      -            pos = cache[i];
      -            data[pos + 2] = 0;
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = colorburnCalc(dinR, dmixR);
      +                            outG[iPos] = colorburnCalc(dinG, dmixG);
      +                            outB[iPos] = colorburnCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'color-dodge' :
      +                const colordodgeCalc = (din, dmix) => {
      +                    if (dmix == 0) return 0;
      +                    else if (din == 1) return 255;
      +                    return Math.min(1, (dmix / (1 - din))) * 255;
      +                };
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = colordodgeCalc(dinR, dmixR);
      +                            outG[iPos] = colordodgeCalc(dinG, dmixG);
      +                            outB[iPos] = colordodgeCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'darken' :
      +                const darkenCalc = (din, dmix) => (din < dmix) ? din : dmix;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            outR[iPos] = darkenCalc(inR[iPos], mixR[mPos]);
      +                            outG[iPos] = darkenCalc(inG[iPos], mixG[mPos]);
      +                            outB[iPos] = darkenCalc(inB[iPos], mixB[mPos]);
      +                            outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'difference' :
      +                const differenceCalc = (din, dmix) => Math.abs(din - dmix) * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = differenceCalc(dinR, dmixR);
      +                            outG[iPos] = differenceCalc(dinG, dmixG);
      +                            outB[iPos] = differenceCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'exclusion' :
      +                const exclusionCalc = (din, dmix) => (din + dmix - (2 * dmix * din)) * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = exclusionCalc(dinR, dmixR);
      +                            outG[iPos] = exclusionCalc(dinG, dmixG);
      +                            outB[iPos] = exclusionCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'hard-light' :
      +                const hardlightCalc = (din, dmix) => (din <= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = hardlightCalc(dinR, dmixR);
      +                            outG[iPos] = hardlightCalc(dinG, dmixG);
      +                            outB[iPos] = hardlightCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'lighten' :
      +                const lightenCalc = (din, dmix) => (din > dmix) ? din : dmix;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            outR[iPos] = lightenCalc(inR[iPos], mixR[mPos]);
      +                            outG[iPos] = lightenCalc(inG[iPos], mixG[mPos]);
      +                            outB[iPos] = lightenCalc(inB[iPos], mixB[mPos]);
      +                            outA[iPos] = alphaCalc(inA[iPos] / 255, mixA[mPos] / 255);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'lighter' :
      +                const lighterCalc = (din, dmix) => (din + dmix) * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = lighterCalc(dinR, dmixR);
      +                            outG[iPos] = lighterCalc(dinG, dmixG);
      +                            outB[iPos] = lighterCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'multiply' :
      +                const multiplyCalc = (din, dmix) => din * dmix * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = multiplyCalc(dinR, dmixR);
      +                            outG[iPos] = multiplyCalc(dinG, dmixG);
      +                            outB[iPos] = multiplyCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'overlay' :
      +                const overlayCalc = (din, dmix) => (din >= 0.5) ? (din * dmix) * 255 : (dmix + (din - (dmix * din))) * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = overlayCalc(dinR, dmixR);
      +                            outG[iPos] = overlayCalc(dinG, dmixG);
      +                            outB[iPos] = overlayCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'screen' :
      +                const screenCalc = (din, dmix) => (dmix + (din - (dmix * din))) * 255;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = screenCalc(dinR, dmixR);
      +                            outG[iPos] = screenCalc(dinG, dmixG);
      +                            outB[iPos] = screenCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'soft-light' :
      +                const softlightCalc = (din, dmix) => {
      +
      +                    let d = (dmix <= 0.25) ?
      +                        ((((16 * dmix) - 12) * dmix) + 4) * dmix :
      +                        Math.sqrt(dmix);
      +
      +                    if (din <= 0.5) return (dmix - ((1 - (2 * din)) * dmix * (1 - dmix))) * 255;
      +                    return (dmix + (((2 * din) - 1) * (d - dmix))) * 255;
      +                };
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            outR[iPos] = softlightCalc(dinR, dmixR);
      +                            outG[iPos] = softlightCalc(dinG, dmixG);
      +                            outB[iPos] = softlightCalc(dinB, dmixB);
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'color' :
      +                const colorCalc = (iR, iG, iB, mR, mG, mB) => {
      +
      +                    let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB);
      +                    let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB);
      +
      +                    return getRGBfromHSL(iH, iS, mL);
      +                }
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            let [cr, cg, cb] = colorCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB);
      +                            outR[iPos] = cr;
      +                            outG[iPos] = cg;
      +                            outB[iPos] = cb;
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'hue' :
      +                const hueCalc = (iR, iG, iB, mR, mG, mB) => {
      +
      +                    let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB);
      +                    let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB);
      +
      +                    return getRGBfromHSL(iH, mS, mL);
      +                }
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            let [cr, cg, cb] = hueCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB);
      +                            outR[iPos] = cr;
      +                            outG[iPos] = cg;
      +                            outB[iPos] = cb;
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'luminosity' :
      +                const luminosityCalc = (iR, iG, iB, mR, mG, mB) => {
      +
      +                    let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB);
      +                    let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB);
      +
      +                    return getRGBfromHSL(mH, mS, iL);
      +                }
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            let [cr, cg, cb] = luminosityCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB);
      +                            outR[iPos] = cr;
      +                            outG[iPos] = cg;
      +                            outB[iPos] = cb;
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'saturation' :
      +                const saturationCalc = (iR, iG, iB, mR, mG, mB) => {
      +
      +                    let [iH, iS, iL] = getHSLfromRGB(iR, iG, iB);
      +                    let [mH, mS, mL] = getHSLfromRGB(mR, mG, mB);
      +
      +                    return getRGBfromHSL(mH, iS, mL);
      +                }
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else if (!mixA[mPos]) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let [dinR, dinG, dinB, dinA, dmixR, dmixG, dmixB, dmixA] = getChannelNormals(iPos, mPos);
      +
      +                            let [cr, cg, cb] = saturationCalc(dinR, dinG, dinB, dmixR, dmixG, dmixB);
      +                            outR[iPos] = cr;
      +                            outG[iPos] = cg;
      +                            outB[iPos] = cb;
      +                            outA[iPos] = alphaCalc(dinA, dmixA);
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            default:
      +                const normalCalc = (Cs, As, Cb, Ab) => (As * Cs) + (Ab * Cb * (1 - As));
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else if (!inA[iPos]) copyPixel(mPos, iPos, mix);
      +                        else {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = normalCalc(inR[iPos], dinA, mixR[mPos], dmixA);
      +                            outG[iPos] = normalCalc(inG[iPos], dinA, mixG[mPos], dmixA);
      +                            outB[iPos] = normalCalc(inB[iPos], dinA, mixB[mPos], dmixA);
      +                            outA[iPos] = alphaCalc(dinA, dmixA)
      +                        }
      +                    }
      +                }
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1179,24 +2234,115 @@

      Messaging and error handling

      -

      cyan - averages the image’s blue and green channels, and suppresses the red channel

      +

      blur - Performs a multi-loop, two-step ‘horizontal-then-vertical averaging sweep’ calculation across all pixels to create a blur effect. Note that this filter is expensive, thus much slower to complete compared to other filter effects.

      -
          cyan: function () {
      +            
          'blur': function (requirements) {
       
      -        let i, iz, pos, gray;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            
      -            gray = (data[pos + 1] + data[pos + 2]) / 2;
      -            
      -            data[pos] = 0;
      -            data[pos + 1] = gray;
      -            data[pos + 2] = gray;
      +        let {opacity, radius, passes, processVertical, processHorizontal, includeRed, includeGreen, includeBlue, includeAlpha, step, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == radius) radius = 0;
      +        if (null == passes) passes = 1;
      +        if (null == processVertical) processVertical = true;
      +        if (null == processHorizontal) processHorizontal = true;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
      +        if (null == includeAlpha) includeAlpha = false;
      +        if (null == step) step = 1;
      +
      +        let horizontalBlurGrid, verticalBlurGrid;
      +
      +        if (processHorizontal || processVertical) {
      +
      +            let grid = buildImageGrid();
      +
      +            if (processHorizontal)  horizontalBlurGrid = buildHorizontalBlur(grid, radius, input.a);
      +
      +            if (processVertical) verticalBlurGrid = buildVerticalBlur(grid, radius, input.a);
      +        }
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        const getValue = function (flag, gridStore, pos, holdChannel, alpha) {
      +
      +            if (flag) {
      +
      +                let h = gridStore[pos],
      +                    l = h.length,
      +                    counter = 0,
      +                    total = 0;
      +
      +                if (alpha) {
      +
      +                    for (let t = 0; t < l; t += step) {
      +
      +                        if (alpha[h[t]]) {
      +
      +                            total += holdChannel[h[t]];
      +                            counter++;
      +                        }
      +                    }
      +                    return total / counter;
      +                }
      +                for (let t = 0; t < l; t++) {
      +                    total += holdChannel[h[t]];
      +                }
      +                return total / l;
      +            }
      +            return holdChannel[pos];
      +        }
      +
      +        if (!passes || (!processHorizontal && !processVertical)) copyOver(input, output);
      +        else {
      +
      +            const hold = createResultObject(len);
      +            const {r:holdR, g:holdG, b:holdB, a:holdA} = hold;
      +
      +            copyOver(input, hold);
      +
      +            for (let pass = 0; pass < passes; pass++) {
      +
      +                if (processHorizontal) {
      +
      +                    for (let k = 0; k < len; k++) {
      +
      +                        if (includeAlpha || holdA[k]) {
      +
      +                            outR[k] = getValue(includeRed, horizontalBlurGrid, k, holdR, holdA);
      +                            outG[k] = getValue(includeGreen, horizontalBlurGrid, k, holdG, holdA);
      +                            outB[k] = getValue(includeBlue, horizontalBlurGrid, k, holdB, holdA);
      +                            outA[k] = getValue(includeAlpha, horizontalBlurGrid, k, holdA, false);
      +                        }
      +                    }
      +                    if (processVertical || pass < passes - 1) copyOver(output, hold);
      +                }
      +
      +                if (processVertical) {
      +
      +                    for (let k = 0; k < len; k++) {
      +
      +                        if (includeAlpha || holdA[k]) {
      +
      +                            outR[k] = getValue(includeRed, verticalBlurGrid, k, holdR, holdA);
      +                            outG[k] = getValue(includeGreen, verticalBlurGrid, k, holdG, holdA);
      +                            outB[k] = getValue(includeBlue, verticalBlurGrid, k, holdB, holdA);
      +                            outA[k] = getValue(includeAlpha, verticalBlurGrid, k, holdA, false);
      +                        }
      +                    }
      +                    if (pass < passes - 1) copyOver(output, hold);
      +                }
      +            }
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1208,24 +2354,53 @@

      Messaging and error handling

      -

      magenta - averages the image’s red and blue channels, and suppresses the green channel

      +

      channels-to-alpha - Calculates an average value from each pixel’s included channels and applies that value to the alpha channel.

      -
          magenta: function () {
      +            
          'channels-to-alpha': function (requirements) {
      +
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        let i, iz, pos, gray;
      +        let len = input.r.length;
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let {opacity, includeRed, includeGreen, includeBlue, lineOut} = requirements;
       
      -            pos = cache[i];
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
       
      -            gray = (data[pos] + data[pos + 2]) / 2;
      +        let divisor = 0;
      +        if (includeRed) divisor++;
      +        if (includeGreen) divisor++;
      +        if (includeBlue) divisor++;
       
      -            data[pos] = gray;
      -            data[pos + 1] = 0;
      -            data[pos + 2] = gray;
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            outR[i] = inR[i];
      +            outG[i] = inG[i];
      +            outB[i] = inB[i];
      +
      +            if (divisor) {
      +
      +                let avg = 0;
      +
      +                if (includeRed) avg += inR[i];
      +                if (includeGreen) avg += inG[i];
      +                if (includeBlue) avg += inB[i];
      +
      +                avg = Math.floor(avg / divisor);
      +
      +                outA[i] = avg;
      +            }
      +            else outA[i] = inA[i];
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1237,24 +2412,52 @@

      Messaging and error handling

      -

      yellow - averages the image’s red and green channels, and suppresses the blue channel

      +

      chroma - Using an array of ‘range’ arrays, determine whether a pixel’s values lie entirely within a range’s values and, if true, sets that pixel’s alpha channel value to zero. Each ‘range’ array comprises six Numbers representing [minimum-red, minimum-green, minimum-blue, maximum-red, maximum-green, maximum-blue] values.

      -
          yellow: function () {
      +            
          'chroma': function (requirements) {
       
      -        let i, iz, pos, gray;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            
      -            gray = (data[pos] + data[pos + 1]) / 2;
      -            
      -            data[pos] = gray;
      -            data[pos + 1] = gray;
      -            data[pos + 2] = 0;
      +        let {opacity, ranges, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == ranges) ranges = [];
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let j = 0; j < len; j++) {
      +
      +            let flag = false;
      +
      +            let r = inR[j],
      +                g = inG[j],
      +                b = inB[j];
      +
      +            for (i = 0, iz = ranges.length; i < iz; i++) {
      +
      +                let range = ranges[i];
      +
      +                let [minR, minG, minB, maxR, maxG, maxB] = ranges[i];
      +
      +                if (r >= minR && r <= maxR && g >= minG && g <= maxG && b >= minB && b <= maxB) {
      +                    flag = true;
      +                    break;
      +                }
      +
      +            }
      +            outR[j] = inR[j];
      +            outG[j] = inG[j];
      +            outB[j] = inB[j];
      +            outA[j] = (flag) ? 0 : inA[j];
               }
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1266,26 +2469,55 @@

      Messaging and error handling

      -

      brightness - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute

      +

      clamp-channels - Clamp each color channel to a range set by lowColor and highColor values

      -
          brightness: function () {
      +            
          'clamp-channels': function (requirements) {
       
      -        let i, iz, pos, 
      -            level = filter.level || 0;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            data[pos] *= level;
      -            
      -            pos++;
      -            data[pos] *= level;
      -            
      -            pos++;
      -            data[pos] *= level;
      +        let {opacity, lowRed, lowGreen, lowBlue, highRed, highGreen, highBlue, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == lowRed) lowRed = 0;
      +        if (null == lowGreen) lowGreen = 0;
      +        if (null == lowBlue) lowBlue = 0;
      +        if (null == highRed) highRed = 255;
      +        if (null == highGreen) highGreen = 255;
      +        if (null == highBlue) highBlue = 255;
      +
      +        const dR = highRed - lowRed,
      +            dG = highGreen - lowGreen,
      +            dB = highBlue - lowBlue;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            if (inA[i]) {
      +
      +                let r = inR[i] / 255,
      +                    g = inG[i] / 255,
      +                    b = inB[i] / 255;
      +
      +                outR[i] = lowRed + (r * dR);
      +                outG[i] = lowGreen + (g * dG);
      +                outB[i] = lowBlue + (b * dB);
      +                outA[i] = inA[i];
      +            }
      +            else {
      +                outR[i] = inR[i];
      +                outG[i] = inG[i];
      +                outB[i] = inB[i];
      +                outA[i] = inA[i];
      +            }
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1297,26 +2529,51 @@

      Messaging and error handling

      -

      saturation - multiplies the red, green and blue channel values by a value supplied in the filter.level attribute, then normalizes the result

      +

      colors-to-alpha - Determine the alpha channel value for each pixel depending on the closeness to that pixel’s color channel values to a reference color supplied in the “red”, “green” and “blue” arguments. The sensitivity of the effect can be manipulated using the “transparentAt” and “opaqueAt” values, both of which lie in the range 0-1.

      -
          saturation: function () {
      +            
          'colors-to-alpha': function (requirements) {
       
      -        let i, iz, pos, 
      -            level = filter.level || 0;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            data[pos] = 127 + ((data[pos] - 127) * level);
      -            
      -            pos++;
      -            data[pos] = 127 + ((data[pos] - 127) * level);
      -            
      -            pos++;
      -            data[pos] = 127 + ((data[pos] - 127) * level);
      +        let {opacity, red, green, blue, opaqueAt, transparentAt, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == red) red = 0;
      +        if (null == green) green = 255;
      +        if (null == blue) blue = 0;
      +        if (null == opaqueAt) opaqueAt = 1;
      +        if (null == transparentAt) transparentAt = 0;
      +
      +        const maxDiff = Math.max(((red + green + blue) / 3), (((255 - red) + (255 - green) + (255 - blue)) / 3)),
      +            transparent = transparentAt * maxDiff,
      +            opaque = opaqueAt * maxDiff,
      +            range = opaque - transparent;
      +
      +        const getValue = function (r, g, b) {
      +
      +            let diff = (Math.abs(red - r) + Math.abs(green - g) + Math.abs(blue - b)) / 3;
      +
      +            if (diff < transparent) return 0;
      +            if (diff > opaque) return 255;
      +            return ((diff - transparent) / range) * 255;
      +        };
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +            outR[i] = inR[i];
      +            outG[i] = inG[i];
      +            outB[i] = inB[i];
      +            outA[i] = getValue(inR[i], inG[i], inB[i]);
               }
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
      @@ -1328,186 +2585,687 @@

      Messaging and error handling

      -

      threshold - desaturates each pixel then tests it against filter.level value; those pixels below the level are set to the filter.lowRGB values while the rest are set to the filter.highRGB values

      +

      compose - Using two source images (from the “lineIn” and “lineMix” arguments), combine their color information using alpha compositing rules (as defined by Porter/Duff). The compositing method is determined by the String value supplied in the “compose” argument; permitted values are: ‘destination-only’, ‘destination-over’, ‘destination-in’, ‘destination-out’, ‘destination-atop’, ‘source-only’, ‘source-over’ (default), ‘source-in’, ‘source-out’, ‘source-atop’, ‘clear’, ‘xor’, or ‘lighter’. Note that the source images may be of different sizes: the output (lineOut) image size will be the same as the source (NOT lineIn) image; the lineMix image can be moved relative to the lineIn image using the “offsetX” and “offsetY” arguments.

      + +
      + +
          'compose': function (requirements) {
      +
      +        let [input, output, mix] = getInputAndOutputChannels(requirements);
      +
      +        let len = output.r.length;
      +
      +        let {opacity, compose, offsetX, offsetY, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == compose) compose = '';
      +        if (null == offsetX) offsetX = 0;
      +        if (null == offsetY) offsetY = 0;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +        const {r:mixR, g:mixG, b:mixB, a:mixA} = mix;
      +
      +        let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements);
      +
      +        const copyPixel = function (fromPos, toPos, channel) {
      +
      +            outR[toPos] = channel.r[fromPos];
      +            outG[toPos] = channel.g[fromPos];
      +            outB[toPos] = channel.b[fromPos];
      +            outA[toPos] = channel.a[fromPos];
      +        };
      +
      +        const getLinePositions = function (x, y) {
      +
      +            let ix = x,
      +                iy = y,
      +                mx = x - offsetX,
      +                my = y - offsetY;
      +
      +            let mPos = -1,
      +                iPos = (iy * iWidth) + ix;
      +
      +            if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx;
      +
      +            return [iPos, mPos];
      +        };
      +
      +        switch (compose) {
      +
      +            case 'source-only' :
      +                copyOver(input, output);
      +                break;
      +
      +            case 'source-atop' :
      +                const sAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * mAlpha) + (mAlpha * mColor * (1 - iAlpha));
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos >= 0) {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = sAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA);
      +                            outG[iPos] = sAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA);
      +                            outB[iPos] = sAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA);
      +                            outA[iPos] = ((dinA * dmixA) + (dmixA * (1 - dinA))) * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'source-in' :
      +                const sInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos >= 0) {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = sInCalc(inR[iPos], dinA, dmixA);
      +                            outG[iPos] = sInCalc(inG[iPos], dinA, dmixA);
      +                            outB[iPos] = sInCalc(inB[iPos], dinA, dmixA);
      +                            outA[iPos] = dinA * dmixA * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'source-out' :
      +                const sOutCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * (1 - mAlpha);
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = sOutCalc(inR[iPos], dinA, dmixA);
      +                            outG[iPos] = sOutCalc(inG[iPos], dinA, dmixA);
      +                            outB[iPos] = sOutCalc(inB[iPos], dinA, dmixA);
      +                            outA[iPos] = dinA * (1 - dmixA) * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'destination-only' :
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos >= 0) copyPixel(mPos, iPos, mix);
      +                    }
      +                }
      +                break;
      +
      +            case 'destination-atop' :
      +                const dAtopCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * iAlpha);
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = dAtopCalc(inR[iPos], dinA, mixR[mPos], dmixA);
      +                            outG[iPos] = dAtopCalc(inG[iPos], dinA, mixG[mPos], dmixA);
      +                            outB[iPos] = dAtopCalc(inB[iPos], dinA, mixB[mPos], dmixA);
      +                            outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * dinA)) * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'destination-over' :
      +                const dOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor);
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = dOverCalc(inR[iPos], dinA, mixR[mPos], dmixA);
      +                            outG[iPos] = dOverCalc(inG[iPos], dinA, mixG[mPos], dmixA);
      +                            outB[iPos] = dOverCalc(inB[iPos], dinA, mixB[mPos], dmixA);
      +                            outA[iPos] = ((dinA * (1 - dmixA)) + dmixA) * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'destination-in' :
      +                const dInCalc = (iColor, iAlpha, mAlpha) => iAlpha * iColor * mAlpha;
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos >= 0) {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = dInCalc(mixR[mPos], dmixA, dinA);
      +                            outG[iPos] = dInCalc(mixG[mPos], dmixA, dinA);
      +                            outB[iPos] = dInCalc(mixB[mPos], dmixA, dinA);
      +                            outA[iPos] = dinA * dmixA * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'destination-out' :
      +                const dOutCalc = (mColor, iAlpha, mAlpha) => mAlpha * mColor * (1 - iAlpha);
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos >= 0) {
      +        
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = dOutCalc(mixR[mPos], dinA, dmixA);
      +                            outG[iPos] = dOutCalc(mixG[mPos], dinA, dmixA);
      +                            outB[iPos] = dOutCalc(mixB[mPos], dinA, dmixA);
      +                            outA[iPos] = dmixA * (1 - dinA) * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            case 'clear' :
      +                break;
      +
      +            case 'xor' :
      +                const xorCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor * (1 - mAlpha)) + (mAlpha * mColor * (1 - iAlpha));
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = xorCalc(inR[iPos], dinA, mixR[mPos], dmixA);
      +                            outG[iPos] = xorCalc(inG[iPos], dinA, mixG[mPos], dmixA);
      +                            outB[iPos] = xorCalc(inB[iPos], dinA, mixB[mPos], dmixA);
      +                            outA[iPos] = ((dinA * (1 - dmixA)) + (dmixA * (1 - dinA))) * 255;
      +                        }
      +                    }
      +                }
      +                break;
      +
      +            default:
      +                const sOverCalc = (iColor, iAlpha, mColor, mAlpha) => (iAlpha * iColor) + (mAlpha * mColor * (1 - iAlpha));
      +                for (let y = 0; y < iHeight; y++) {
      +                    for (let x = 0; x < iWidth; x++) {
      +
      +                        let [iPos, mPos] = getLinePositions(x, y);
      +
      +                        if (mPos < 0) copyPixel(iPos, iPos, input);
      +                        else {
      +
      +                            let dinA = inA[iPos] / 255,
      +                                dmixA = mixA[mPos] / 255;
      +
      +                            outR[iPos] = sOverCalc(inR[iPos], dinA, mixR[mPos], dmixA);
      +                            outG[iPos] = sOverCalc(inG[iPos], dinA, mixG[mPos], dmixA);
      +                            outB[iPos] = sOverCalc(inB[iPos], dinA, mixB[mPos], dmixA);
      +                            outA[iPos] = (dinA + (dmixA * (1 - dinA))) * 255;
      +                        }
      +                    }
      +                }
      +        }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
      +    },
      + + + + +
    • +
      + +
      + +
      +

      displace - Shift pixels around the image, based on the values supplied in a displacement image

      + +
      + +
          'displace': function (requirements) {
      +
      +        let [input, output, mix] = getInputAndOutputChannels(requirements);
      +
      +        let len = input.r.length;
      +
      +        let {opacity, channelX, channelY, scaleX, scaleY, offsetX, offsetY, transparentEdges, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == channelX) channelX = 'red';
      +        if (null == channelY) channelY = 'green';
      +        if (null == scaleX) scaleX = 1;
      +        if (null == scaleY) scaleY = 1;
      +        if (null == offsetX) offsetX = 0;
      +        if (null == offsetY) offsetY = 0;
      +        if (null == transparentEdges) transparentEdges = false;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +        const {r:mixR, g:mixG, b:mixB, a:mixA} = mix;
      +
      +        if (channelX == 'red') channelX = mixR;
      +        else if (channelX == 'green') channelX = mixG;
      +        else if (channelX == 'blue') channelX = mixB;
      +        else channelX = mixA;
      +
      +        if (channelY == 'red') channelY = mixR;
      +        else if (channelY == 'green') channelY = mixG;
      +        else if (channelY == 'blue') channelY = mixB;
      +        else channelY = mixA;
      +
      +        let [iWidth, iHeight, oWidth, oHeight, mWidth, mHeight] = getInputAndOutputDimensions(requirements);
      +
      +        const copyPixel = function (fromPos, toPos, channel) {
      +
      +            if (fromPos < 0) outA[toPos] = 0;
      +            else {
      +
      +                outR[toPos] = channel.r[fromPos];
      +                outG[toPos] = channel.g[fromPos];
      +                outB[toPos] = channel.b[fromPos];
      +                outA[toPos] = channel.a[fromPos];
      +            }
      +        };
      +
      +        const getLinePositions = function (x, y) {
      +
      +            let ix = x,
      +                iy = y,
      +                mx = x + offsetX,
      +                my = y + offsetY;
      +
      +            let mPos = -1,
      +                iPos = (iy * iWidth) + ix;
      +
      +            if (mx >= 0 && mx < mWidth && my >= 0 && my < mHeight) mPos = (my * mWidth) + mx;
      +
      +            return [iPos, mPos];
      +        };
      +
      +        for (let y = 0; y < iHeight; y++) {
      +            for (let x = 0; x < iWidth; x++) {
      +
      +                let [iPos, mPos] = getLinePositions(x, y);
      +
      +                if (mPos >= 0) {
      +
      +                    let dx = Math.floor(x + ((127 - channelX[mPos]) / 127) * scaleX);
      +                    let dy = Math.floor(y + ((127 - channelY[mPos]) / 127) * scaleY);
      +                    let dPos;
      +
      +                    if (!transparentEdges) {
      +
      +                        if (dx < 0) dx = 0;
      +                        if (dx >= iWidth) dx = iWidth - 1;
      +                        if (dy < 0) dy = 0;
      +                        if (dy >= iHeight) dy = iHeight - 1;
      +
      +                        dPos = (dy * iWidth) + dx;
      +                    }
      +                    else {
      +
      +                        if (dx < 0 || dx >= iWidth || dy < 0 || dy >= iHeight) dPos = -1;
      +                        else dPos = (dy * iWidth) + dx;
      +                    }
      +
      +                    copyPixel(dPos, iPos, input);
      +                }
      +                else copyPixel(iPos, iPos, input);
      +            }
      +        }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      emboss - A 3x3 matrix transform; the matrix weights are calculated internally from the values of two arguments: “strength”, and “angle” - which is a value measured in degrees, with 0 degrees pointing to the right of the origin (along the positive x axis). Post-processing options include removing unchanged pixels, or setting then to mid-gray. The convenience method includes additional arguments which will add a choice of grayscale, then channel clamping, then blurring actions before passing the results to this emboss action

      + +
      + +
          'emboss': function (requirements) {
      +
      +        let [input, output] = getInputAndOutputChannels(requirements);
      +
      +        let len = input.r.length;
      +
      +        let {opacity, strength, angle, tolerance, keepOnlyChangedAreas, postProcessResults, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == strength) strength = 1;
      +        if (null == angle) angle = 0;
      +        if (null == tolerance) tolerance = 0;
      +        if (null == keepOnlyChangedAreas) keepOnlyChangedAreas = false;
      +        if (null == postProcessResults) postProcessResults = false;
      +
      +        strength = Math.abs(strength);
      +
      +        while (angle < 0) {
      +            angle += 360;
      +        }
      +
      +        angle = angle % 360;
      +
      +        let slices = Math.floor(angle / 45),
      +            remains = ((angle % 45) / 45) * strength,
      +            weights = new Array(9);
      +
      +        weights = weights.fill(0, 0, 9); 
      +        weights[4] = 1;
      +
      +        if (slices == 0) {
      +            weights[5] = strength - remains;
      +            weights[8] = remains;
      +            weights[3] = -weights[5];
      +            weights[0] = -weights[8];
      +        }
      +        else if (slices == 1) {
      +            weights[8] = strength - remains;
      +            weights[7] = remains;
      +            weights[0] = -weights[8];
      +            weights[1] = -weights[7];
      +        }
      +        else if (slices == 2) {
      +            weights[7] = strength - remains;
      +            weights[6] = remains;
      +            weights[1] = -weights[7];
      +            weights[2] = -weights[6];
      +        }
      +        else if (slices == 3) {
      +            weights[6] = strength - remains;
      +            weights[3] = remains;
      +            weights[2] = -weights[6];
      +            weights[5] = -weights[3];
      +        }
      +        else if (slices == 4) {
      +            weights[3] = strength - remains;
      +            weights[0] = remains;
      +            weights[5] = -weights[3];
      +            weights[8] = -weights[0];
      +        }
      +        else if (slices == 5) {
      +            weights[0] = strength - remains;
      +            weights[1] = remains;
      +            weights[8] = -weights[0];
      +            weights[7] = -weights[1];
      +        }
      +        else if (slices == 6) {
      +            weights[1] = strength - remains;
      +            weights[2] = remains;
      +            weights[7] = -weights[1];
      +            weights[6] = -weights[2];
      +        }
      +        else {
      +            weights[2] = strength - remains;
      +            weights[5] = remains;
      +            weights[6] = -weights[2];
      +            weights[3] = -weights[5];
      +        }
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        grid = buildMatrixGrid(3, 3, 1, 1, inA);
      +
      +        const doCalculations = function (inChannel, matrix) {
      +
      +            let val = 0;
      +
      +            for (let m = 0, mz = matrix.length; m < mz; m++) {
      +
      +                if (weights[m]) val += (inChannel[matrix[m]] * weights[m]);
      +            }
      +            return val;
      +        }
       
      -            
      - -
          threshold: function () {
      +        for (let i = 0; i < len; i++) {
       
      -        let i, iz, pos, gray, test,
      -            level = filter.level || 0,
      -            lowRed = filter.lowRed,
      -            lowGreen = filter.lowGreen,
      -            lowBlue = filter.lowBlue,
      -            highRed = filter.highRed,
      -            highGreen = filter.highGreen,
      -            highBlue = filter.highBlue;
      +            if (inA[i]) {
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +                outR[i] = doCalculations(inR, grid[i]);
      +                outG[i] = doCalculations(inG, grid[i]);
      +                outB[i] = doCalculations(inB, grid[i]);
      +                outA[i] = inA[i];
       
      -            pos = cache[i];
      -            
      -            gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]);
      -            test = (gray > level) ? true : false;
      -            
      -            if (test) {
      +                if (postProcessResults) {
       
      -                data[pos] = highRed;
      -                data[pos + 1] = highGreen;
      -                data[pos + 2] = highBlue;
      -            }
      -            else {
      +                    if (outR[i] >= inR[i] - tolerance && outR[i] <= inR[i] + tolerance && 
      +                        outG[i] >= inG[i] - tolerance && outG[i] <= inG[i] + tolerance && 
      +                        outB[i] >= inB[i] - tolerance && outB[i] <= inB[i] + tolerance) {
       
      -                data[pos] = lowRed;
      -                data[pos + 1] = lowGreen;
      -                data[pos + 2] = lowBlue;
      +                        if (keepOnlyChangedAreas) outA[i] = 0;
      +                        else {
      +                            outR[i] = 127;
      +                            outG[i] = 127;
      +                            outB[i] = 127;
      +                        }
      +                    }
      +                }
                   }
      -            
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      channels - multiply each pixel’s channel values by the values set in the filter.RGB attributes

      +

      flood - Set all pixels to the channel values supplied in the “red”, “green”, “blue” and “alpha” arguments

      -
          channels: function () {
      +            
          'flood': function (requirements) {
      +
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        let i, iz, pos,
      -            red = filter.red || 0,
      -            green = filter.green || 0,
      -            blue = filter.blue || 0;
      +        let len = input.r.length,
      +            floor = Math.floor;
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let {opacity, red, green, blue, alpha, lineOut} = requirements;
       
      -            pos = cache[i];
      -            
      -            data[pos] *= red;
      -            data[pos + 1] *= green;
      -            data[pos + 2] *= blue;
      -        }
      +        if (null == opacity) opacity = 1;
      +        if (null == red) red = 0;
      +        if (null == green) green = 0;
      +        if (null == blue) blue = 0;
      +        if (null == alpha) alpha = 255;
      +
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        outR.fill(red, 0, len - 1);
      +        outG.fill(green, 0, len - 1);
      +        outB.fill(blue, 0, len - 1);
      +        outA.fill(alpha, 0, len - 1);
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      channelstep - divide, floor, and then multiply each pixel’s channel values by the values set in the filter.RGB attributes

      +

      grayscale - For each pixel, averages the weighted color channels and applies the result across all the color channels. This gives a more realistic monochrome effect.

      -
          channelstep: function () {
      +            
          'grayscale': function (requirements) {
       
      -        let i, iz, pos,
      -            red = filter.red || 1,
      -            green = filter.green || 1,
      -            blue = filter.blue || 1,
      -            floor = Math.floor;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            data[pos] = floor(data[pos] / red) * red;
      -            
      -            pos++;
      -            data[pos] = floor(data[pos] / green) * green;
      -            
      -            pos++;
      -            data[pos] = floor(data[pos] / blue) * blue;
      +        let {opacity, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i]));
      +
      +            outR[i] = gray;
      +            outG[i] = gray;
      +            outB[i] = gray;
      +            outA[i] = inA[i];
               }
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      tint - a more fine-grained form of the channels filter

      +

      invert-channels - For each pixel, subtracts its current channel values - when included - from 255.

      -
          tint: function () {
      +            
          'invert-channels': function (requirements) {
       
      -        let i, iz, pos, r, g, b,
      -            redInRed = filter.redInRed || 0,
      -            redInGreen = filter.redInGreen || 0,
      -            redInBlue = filter.redInBlue || 0,
      -            greenInRed = filter.greenInRed || 0,
      -            greenInGreen = filter.greenInGreen || 0,
      -            greenInBlue = filter.greenInBlue || 0,
      -            blueInRed = filter.blueInRed || 0,
      -            blueInGreen = filter.blueInGreen || 0,
      -            blueInBlue = filter.blueInBlue || 0;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let len = input.r.length;
       
      -            pos = cache[i];
      -            
      -            r = data[pos];
      -            g = data[pos + 1];
      -            b = data[pos + 2];
      -            
      -            data[pos] = (r * redInRed) + (g * greenInRed) + (b * blueInRed);
      -            data[pos + 1] = (r * redInGreen) + (g * greenInGreen) + (b * blueInGreen);
      -            data[pos + 2] = (r * redInBlue) + (g * greenInBlue) + (b * blueInBlue);
      +        let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements;
      +
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
      +        if (null == includeAlpha) includeAlpha = false;
      +
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            outR[i] = (includeRed) ? 255 - inR[i] : inR[i];
      +            outG[i] = (includeGreen) ? 255 - inG[i] : inG[i];
      +            outB[i] = (includeBlue) ? 255 - inB[i] : inB[i];
      +            outA[i] = (includeAlpha) ? 255 - inA[i] : inA[i];
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      chroma - will evaluate each pixel against a range array; pixels that fall within the range are set to transparent

      +

      lock-channels-to-levels - Produces a posterize effect. Takes in four arguments - “red”, “green”, “blue” and “alpha” - each of which is an Array of zero or more integer Numbers (between 0 and 255). The filter works by looking at each pixel’s channel value and determines which of the corresponding Array’s Number values it is closest to; it then sets the channel value to that Number value.

      -
    • - - -
    • -
      - -
      - -
      -

      The ranges attribute needs to be an array of arrays with the following format:

      +
          'lock-channels-to-levels': function (requirements) {
       
      -            
      - -
    • - - -
    • -
      - -
      - -
      -
      [[minRed, minGreen, minBlue, maxRed, maxGreen, maxBlue], etc]
      + checkChannelLevelsParameters(requirements) -
      + const getValue = function (val, levels) { + + if (!levels.length) return val; + + for (let i = 0, iz = levels.length; i < iz; i++) { + + let [start, end, level] = levels[i]; + if (val >= start && val <= end) return level; + } + }; + + let [input, output] = getInputAndOutputChannels(requirements); + + let len = input.r.length; + + let {opacity, red, green, blue, alpha, lineOut} = requirements; + + if (null == opacity) opacity = 1; + if (null == red) red = [0]; + if (null == green) green = [0]; + if (null == blue) blue = [0]; + if (null == alpha) alpha = [255]; + + const {r:inR, g:inG, b:inB, a:inA} = input; + const {r:outR, g:outG, b:outB, a:outA} = output; + + for (let i = 0; i < len; i++) { + outR[i] = getValue(inR[i], red); + outG[i] = getValue(inG[i], green); + outB[i] = getValue(inB[i], blue); + outA[i] = getValue(inA[i], alpha); + } + + if (lineOut) processResults(output, work, 1 - opacity); + else processResults(work, output, opacity); + },
    • @@ -1518,622 +3276,568 @@

      Messaging and error handling

      -

      … multiple ranges can be defined - for instance to key out the lightest and darkest hues:

      - -
      - - - - -
    • -
      - -
      - -
      -
      ranges: [[0, 0, 0, 80, 80, 80], [180, 180, 180, 255, 255, 255]]
      +

      matrix - Performs a matrix operation on each pixel’s channels, calculating the new value using neighbouring pixel weighted values. Also known as a convolution matrix, kernel or mask operation. Note that this filter is expensive, thus much slower to complete compared to other filter effects. The matrix dimensions can be set using the “width” and “height” arguments, while setting the home pixel’s position within the matrix can be set using the “offsetX” and “offsetY” arguments. The weights to be applied need to be supplied in the “weights” argument - an Array listing the weights row-by-row starting from the top-left corner of the matrix. By default all color channels are included in the calculations while the alpha channel is excluded. The ‘edgeDetect’, ‘emboss’ and ‘sharpen’ convenience filter methods all use the matrix action, pre-setting the required weights.

      -
          chroma: function () {
      +            
          'matrix': function (requirements) {
       
      -        let pos, posA,
      -            ranges = filter.ranges,
      -            range, min, max, val,
      -            i, iz, j, jz, flag;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -        for (j = 0, jz = cache.length; j < jz; j++) {
      +        let len = input.r.length;
       
      -            flag = false;
      +        let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, width, height, offsetX, offsetY, weights, lineOut} = requirements;
       
      -            for (i = 0, iz = ranges.length; i < iz; i++) {
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
      +        if (null == includeAlpha) includeAlpha = false;
      +        if (null == width || width < 1) width = 3;
      +        if (null == height || height < 1) height = 3;
      +        if (null == offsetX) offsetX = 1;
      +        if (null == offsetY) offsetY = 1;
      +        if (null == weights) {
      +            weights = [].fill(0, 0, (width * height) - 1);
      +            weights[Math.floor(weights.length / 2) + 1] = 1;
      +        }
       
      -                posA = cache[j] + 3;
      -                range = ranges[i];
      -                min = range[2];
      -                pos = posA - 1;
      -                val = data[pos];
      +        grid = buildMatrixGrid(width, height, offsetX, offsetY, input.a);
       
      -                if (val >= min) {
      +        const doCalculations = function (inChannel, matrix) {
       
      -                    max = range[5];
      +            let val = 0;
       
      -                    if (val <= max) {
      +            for (let m = 0, mz = matrix.length; m < mz; m++) {
       
      -                        min = range[1];
      -                        pos--;
      -                        val = data[pos];
      +                if (weights[m]) val += (inChannel[matrix[m]] * weights[m]);
      +            }
      +            return val;
      +        }
       
      -                        if (val >= min) {
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -                            max = range[4];
      +        for (let i = 0; i < len; i++) {
       
      -                            if (val <= max) {
      +            if (inA[i]) {
       
      -                                min = range[0];
      -                                pos--;
      -                                val = data[pos];
      +                if (includeRed) outR[i] = doCalculations(inR, grid[i]);
      +                else outR[i] = inR[i];
       
      -                                if (val >= min) {
      +                if (includeGreen) outG[i] = doCalculations(inG, grid[i]);
      +                else outG[i] = inG[i];
       
      -                                    max = range[3];
      +                if (includeBlue) outB[i] = doCalculations(inB, grid[i]);
      +                else outB[i] = inB[i];
       
      -                                    if (val <= max) {
      -                                        flag = true;
      -                                        break;
      -                                    }
      -                                }
      -                            }
      -                        }
      -                    }
      -                }
      +                if (includeAlpha) outA[i] = doCalculations(inA, grid[i]);
      +                else outA[i] = inA[i];
                   }
      -            if (flag) data[posA] = 0;
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      pixelate - create tiles - whose dimensions and positions are determined by values set in the filter tileWidth, tileHeight, offsetX and offsetY attributes - across the image and then average the pixels in each tile to a single color

      +

      modulate-channels - Multiplies each channel’s value by the supplied argument value. A channel-argument’s value of ‘0’ will set that channel’s value to zero; a value of ‘1’ will leave the channel value unchanged. If the “saturation” flag is set to ‘true’ the calculation changes to start at the color range mid point. The ‘brightness’ and ‘saturation’ filters are special forms of the ‘channels’ filter which use a single “levels” argument to set all three color channel arguments to the same value.

      -
          pixelate: function () {
      -
      -        let i, iz, j, jz, pos, r, g, b, a, tile, len;
      -
      -        getTiles();
      +            
          'modulate-channels': function (requirements) {
       
      -        for (i = 0, iz = tiles.length; i < iz; i++) {
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -            tile = tiles[i];
      -            r = g = b = a = 0;
      -            len = tile.length;
      +        let len = input.r.length;
       
      -            if (len) {
      +        let {opacity, red, green, blue, alpha, saturation, lineOut} = requirements;
       
      -                for (j = 0, jz = len; j < jz; j++) {
      +        if (null == opacity) opacity = 1;
      +        if (null == red) red = 1;
      +        if (null == green) green = 1;
      +        if (null == blue) blue = 1;
      +        if (null == alpha) alpha = 1;
      +        if (null == saturation) saturation = false;
       
      -                    pos = tile[j];
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -                    r += data[pos];
      -                    g += data[pos + 1];
      -                    b += data[pos + 2];
      -                    a += data[pos + 3];
      -                }
      -
      -                r /= len;
      -                g /= len;
      -                b /= len;
      -                a /= len;
      +        if (saturation) {
       
      -                for (j = 0, jz = len; j < jz; j++) {
      -
      -                    pos = tile[j];
      +            for (let i = 0; i < len; i++) {
      +                outR[i] = 127 + ((inR[i] - 127) * red);
      +                outG[i] = 127 + ((inG[i] - 127) * green);
      +                outB[i] = 127 + ((inB[i] - 127) * blue);
      +                outA[i] = 127 + ((inA[i] - 127) * alpha);
      +            }
      +        }
      +        else {
       
      -                    data[pos] = r;
      -                    data[pos + 1] = g;
      -                    data[pos + 2] = b;
      -                    data[pos + 3] = a;
      -                }
      +            for (let i = 0; i < len; i++) {
      +                outR[i] = inR[i] * red;
      +                outG[i] = inG[i] * green;
      +                outB[i] = inB[i] * blue;
      +                outA[i] = inA[i] * alpha;
                   }
               }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      blur - creates a blurred image. Note: can be slow across larger images! The degree of the blur - which does not follow conventional algorithms such as gaussian - is determined by the filter attribute values for radius (number), passes (number) and shrink (boolean)

      +

      offset - Offset the input image in the output image.

      -
          blur: function () {
      +            
          'offset': function (requirements) {
       
      -        if (data.slice) {
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -            let radius = filter.radius || 1,
      -                alpha = filter.includeAlpha || false,
      -                shrink = filter.shrinkingRadius || false,
      -                passes = filter.passes || 1,
      -                vertical = filter.processVertical,
      -                horizontal = filter.processHorizontal,
      -                len = data.length,
      -                imageWidth = image.width,
      -                imageHeight = image.height,
      -                tempDataTo, tempDataFrom,
      -                i, iz, index;
      +        let {opacity, offsetRedX, offsetRedY, offsetGreenX, offsetGreenY, offsetBlueX, offsetBlueY, offsetAlphaX, offsetAlphaY, lineOut} = requirements;
       
      -            let processPass = function () {
      +        if (null == opacity) opacity = 1;
      +        if (null == offsetRedX) offsetRedX = 0;
      +        if (null == offsetRedY) offsetRedY = 0;
      +        if (null == offsetGreenX) offsetGreenX = 0;
      +        if (null == offsetGreenY) offsetGreenY = 0;
      +        if (null == offsetBlueX) offsetBlueX = 0;
      +        if (null == offsetBlueY) offsetBlueY = 0;
      +        if (null == offsetAlphaX) offsetAlphaX = 0;
      +        if (null == offsetAlphaY) offsetAlphaY = 0;
       
      -                let j, jz;
      +        let simpleoffset = false;
       
      -                if (vertical) {
      +        if (offsetRedX == offsetGreenX && offsetRedX == offsetBlueX && offsetRedX == offsetAlphaX && offsetRedY == offsetGreenY && offsetRedY == offsetBlueY && offsetRedY == offsetAlphaY) simpleoffset = true;
       
      -                    tempDataFrom = tempDataTo.slice(); 
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -                    for (j = localX * 4, jz = (localX + localWidth) * 4; j < jz; j++) {
      +        let grid = buildImageGrid(),
      +            gWidth = grid[0].length,
      +            gHeight = grid.length,
      +            drx, dry, dgx, dgy, dbx, dby, dax, day, inCell, outCell;
       
      -                        if (alpha) processColumn(j);
      -                        else {
      +        for (let y = 0; y < gHeight; y++) {
      +            for (let x = 0; x < gWidth; x++) {
       
      -                            if (j % 4 !== 3) processColumn(j);
      -                        }
      -                    }
      -                }
      +                inCell = grid[y][x];
       
      -                if (horizontal) {
      +                if (inA[inCell]) {
       
      -                    tempDataFrom = tempDataTo.slice(); 
      +                    if (simpleoffset) {
       
      -                    for (j = localY, jz = localY + localHeight; j < jz; j++) {
      +                        drx = x + offsetRedX;
      +                        dry = y + offsetRedY;
       
      -                        if (alpha) processRowWithAlpha(j);
      -                        else processRowNoAlpha(j);
      -                    }
      -                }
      -            };
      +                        if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) {
       
      -            let processColumn = function (col) {
      +                            outCell = grid[dry][drx];
      +                            outR[outCell] = inR[inCell];
      +                            outG[outCell] = inG[inCell];
      +                            outB[outCell] = inB[inCell];
      +                            outA[outCell] = inA[inCell];
      +                        }
      +                    }
      +                    else {
       
      -                let pos, avg, val, cagePointer, y, yz, q, dataPointer,
      -                    vLead = radius * iWidth, 
      -                    cage = [],
      -                    cageLen;
      +                        drx = x + offsetRedX;
      +                        dry = y + offsetRedY;
      +                        dgx = x + offsetGreenX;
      +                        dgy = y + offsetGreenY;
      +                        dbx = x + offsetBlueX;
      +                        dby = y + offsetBlueY;
      +                        dax = x + offsetAlphaX;
      +                        day = y + offsetAlphaY;
       
      -                for (y = -radius, yz = radius; y < yz; y++) {
      +                        if (drx >= 0 && drx < gWidth && dry >= 0 && dry < gHeight) {
       
      -                    pos = col + (y * iWidth);
      -                    pos = checkBounds(pos, len);
      -                    cage.push(tempDataFrom[pos]);
      -                }
      +                            outCell = grid[dry][drx];
      +                            outR[outCell] = inR[inCell];
      +                        }
       
      -                tempDataTo[col] = avg = average(cage);
      +                        if (dgx >= 0 && dgx < gWidth && dgy >= 0 && dgy < gHeight) {
       
      -                cageLen = cage.length;
      +                            outCell = grid[dgy][dgx];
      +                            outG[outCell] = inG[inCell];
      +                        }
       
      -                for (q = 0; q < cageLen; q++) {
      +                        if (dbx >= 0 && dbx < gWidth && dby >= 0 && dby < gHeight) {
       
      -                    cage[q] /= cageLen;
      -                }
      +                            outCell = grid[dby][dbx];
      +                            outB[outCell] = inB[inCell];
      +                        }
       
      -                cagePointer = 0;
      +                        if (dax >= 0 && dax < gWidth && day >= 0 && day < gHeight) {
       
      -                for (y = 1; y < imageHeight; y++) {
      +                            outCell = grid[day][dax];
      +                            outA[outCell] = inA[inCell];
      +                        }
      +                    }
      +                }
      +            }
      +        }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      pixelate - Pixelizes the input image by creating a grid of tiles across it and then averaging the color values of each pixel in a tile and setting its value to the average. Tile width and height, and their offset from the top left corner of the image, are set via the “tileWidth”, “tileHeight”, “offsetX” and “offsetY” arguments.

      - avg -= cage[cagePointer]; +
      + +
          'pixelate': function (requirements) {
       
      -                    dataPointer = col + (y * iWidth);
      -                    pos = dataPointer + vLead;
      -                    pos = checkBounds(pos, len);
      -                    val = tempDataFrom[pos] / cageLen;
      +        const doCalculations = function (inChannel, outChannel, tile) {
       
      -                    avg += val;
      -                    cage[cagePointer] = val;
      -                    tempDataTo[dataPointer] = avg;
      +            let avg = tile.reduce((a, v) => a + inChannel[v], 0);
       
      -                    cagePointer++;
      +            avg = Math.floor(avg / tile.length);
       
      -                    if (cagePointer === cageLen) cagePointer = 0;
      -                }
      -            };
      +            for (let i = 0, iz = tile.length; i < iz; i++) {
       
      -            let processRowWithAlpha = function (row) {
      +                outChannel[tile[i]] = avg;
      +            }
      +        }
       
      -                let pos, val, x, xz, q, avgQ, cageQ, rowPosX,
      -                    avg = [],
      -                    cage = [[], [], [], []],
      -                    rowPos = row * iWidth, 
      -                    hLead = radius * 4,
      -                    dataPointer, cagePointer, cageLen;
      +        const setOutValueToInValue = function (inChannel, outChannel, tile) {
       
      -                q = 0;
      +            let cell;
       
      -                for (x = -radius * 4, xz = radius * 4; x < xz; x++) {
      +            for (let i = 0, iz = tile.length; i < iz; i++) {
       
      -                    pos = rowPos + x;
      -                    pos = checkBounds(pos, len);
      -                    
      -                    cage[q].push(tempDataFrom[pos]);
      -                    
      -                    q++;
      -                    if (q === 4) q = 0;
      -                }
      +                cell = tile[i];
      +                outChannel[cell] = inChannel[cell];
      +            }
      +        };
       
      -                tempDataTo[rowPos] = avg[0] = average(cage[0]);
      -                tempDataTo[rowPos + 1] = avg[1] = average(cage[1]);
      -                tempDataTo[rowPos + 2] = avg[2] = average(cage[2]);
      -                tempDataTo[rowPos + 3] = avg[3] = average(cage[3]);
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -                cageLen = cage[0].length;
      +        let len = input.r.length;
       
      -                for (q = 0; q < 4; q++) {
      +        let {opacity, tileWidth, tileHeight, offsetX, offsetY, includeRed, includeGreen, includeBlue, includeAlpha, lineOut} = requirements;
       
      -                    for (x = 0; x < cageLen; x++) {
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = true;
      +        if (null == includeGreen) includeGreen = true;
      +        if (null == includeBlue) includeBlue = true;
      +        if (null == includeAlpha) includeAlpha = false;
      +        if (null == tileWidth) tileWidth = 1;
      +        if (null == tileHeight) tileHeight = 1;
      +        if (null == offsetX) offsetX = 0;
      +        if (null == offsetY) offsetY = 0;
       
      -                        cage[q][x] /= cageLen;
      -                    }
      -                }
      -                cagePointer = 0;
      +        const tiles = buildImageTileSets(tileWidth, tileHeight, offsetX, offsetY);
       
      -                for (x = 1; x < imageWidth; x++) {
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -                    rowPosX = rowPos + (x * 4);
      +        tiles.forEach(t => {
      +            if (includeRed) doCalculations(inR, outR, t);
      +            else setOutValueToInValue(inR, outR, t);
       
      -                    for (q = 0; q < 4; q++) {
      +            if (includeGreen) doCalculations(inG, outG, t);
      +            else setOutValueToInValue(inG, outG, t);
       
      -                        avgQ = avg[q];
      -                        cageQ = cage[q];
      -                        avgQ -= cageQ[cagePointer];
      +            if (includeBlue) doCalculations(inB, outB, t);
      +            else setOutValueToInValue(inB, outB, t);
       
      -                        dataPointer = rowPosX + q;
      -                        pos = dataPointer + hLead;
      -                        pos = checkBounds(pos, len);
      -                        val = tempDataFrom[pos] / cageLen;
      +            if (includeAlpha) doCalculations(inA, outA, t);
      +            else setOutValueToInValue(inA, outA, t);
      +        })
       
      -                        avgQ += val;
      -                        tempDataTo[dataPointer] = avgQ;
      -                        avg[q] = avgQ;
      -                        cageQ[cagePointer] = val;
      -                    }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      Add an asset image to the filter process chain. The asset - the String name of the asset object - must be pre-loaded before it can be included in the filter. The “width” and “height” arguments are measured in integer Number pixels; the “copy” arguments can be either percentage Strings (relative to the asset’s natural dimensions) or absolute Number values (in pixels). The “lineOut” argument is required - be aware that the filter action does not check for any pre-existing assets cached under this name and, if they exist, will overwrite them with this asset’s data. -

      - cagePointer++; +
      + +
          'process-image': function (requirements) {
       
      -                    if (cagePointer === cageLen) cagePointer = 0;
      -                }
      -            };
      +        const {assetData, lineOut} = requirements;
       
      -            let processRowNoAlpha = function (row) {
      +        if (lineOut && lineOut.substring && lineOut.length && assetData && assetData.width && assetData.height && assetData.data) {
       
      -                let pos, val, x, xz, q, avgQ, cageQ, rowPosX,
      -                    avg = [],
      -                    hLead = radius * 4,
      -                    cage = [[], [], []],
      -                    rowPos = row * iWidth, 
      -                    dataPointer, cagePointer, cageLen;
      +            let d = assetData.data;
      +            let len = d.length;
       
      -                q = 0;
      +            let res = createResultObject(len / 4);
       
      -                for (x = -radius * 4, xz = radius * 4; x < xz; x++) {
      +            let r = res.r,
      +                g = res.g,
      +                b = res.b,
      +                a = res.a;
       
      -                    if (q < 3) {
      +            let counter = 0;
       
      -                        pos = rowPos + x;
      -                        pos = checkBounds(pos, len);
      -                        cage[q].push(tempDataFrom[pos]);
      -                        q++;
      -                    }
      -                    else q = 0;
      -                }
      +            for (let i = 0; i < len; i += 4) {
       
      -                tempDataTo[rowPos] = avg[0] = average(cage[0]);
      -                tempDataTo[rowPos + 1] = avg[1] = average(cage[1]);
      -                tempDataTo[rowPos + 2] = avg[2] = average(cage[2]);
      +                r[counter] = d[i];
      +                g[counter] = d[i + 1];
      +                b[counter] = d[i + 2];
      +                a[counter] = d[i + 3];
       
      -                cageLen = cage[0].length;
      +                counter++;
      +            }
      +            assetData.channels = res;
       
      -                for (q = 0; q < 3; q++) {
      +            cache[lineOut] = assetData;
      +        }
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      set-channel-to-level - Sets the value of each pixel’s included channel to the value supplied in the “level” argument.

      - cageQ = cage[q]; - - for (x = 0; x < cageLen; x++) { +
      + +
          'set-channel-to-level': function (requirements) {
       
      -                        cageQ[x] /= cageLen;
      -                    }
      -                }
      -                cagePointer = 0;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -                for (x = 1; x < imageWidth; x++) {
      +        let len = input.r.length;
       
      -                    rowPosX = rowPos + (x * 4);
      +        let {opacity, includeRed, includeGreen, includeBlue, includeAlpha, level, lineOut} = requirements;
       
      -                    for (q = 0; q < 3; q++) {
      +        if (null == opacity) opacity = 1;
      +        if (null == includeRed) includeRed = false;
      +        if (null == includeGreen) includeGreen = false;
      +        if (null == includeBlue) includeBlue = false;
      +        if (null == includeAlpha) includeAlpha = false;
      +        if (null == level) level = 0;
       
      -                        avgQ = avg[q];
      -                        cageQ = cage[q];
      -                        avgQ -= cageQ[cagePointer];
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -                        dataPointer = rowPosX + q;
      -                        pos = dataPointer + hLead;
      -                        pos = checkBounds(pos, len);
      -                        val = tempDataFrom[pos] / cageLen;
      +        for (let i = 0; i < len; i++) {
       
      -                        avgQ += val;
      -                        tempDataTo[dataPointer] = avgQ;
      -                        avg[q] = avgQ;
      -                        cageQ[cagePointer] = val;
      -                    }
      +            outR[i] = (includeRed) ? level : inR[i];
      +            outG[i] = (includeGreen) ? level : inG[i];
      +            outB[i] = (includeBlue) ? level : inB[i];
      +            outA[i] = (includeAlpha) ? level : inA[i];
      +        }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      step-channels - Takes three divisor values - “red”, “green”, “blue”. For each pixel, its color channel values are divided by the corresponding color divisor, floored to the integer value and then multiplied by the divisor. For example a divisor value of ‘50’ applied to a channel value of ‘120’ will give a result of ‘100’. The output is a form of posterization.

      - cagePointer++; - if (cagePointer === cageLen) cagePointer = 0; - } - }; +
      + +
          'step-channels': function (requirements) {
       
      -            tempDataTo = data.slice();
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -            for (i = 0; i < passes; i++) {
      +        let len = input.r.length,
      +            floor = Math.floor;
       
      -                processPass();
      -                
      -                if (shrink) {
      +        let {opacity, red, green, blue, lineOut} = requirements;
       
      -                    radius = Math.ceil(radius * 0.3);
      -                    radius = (radius < 1) ? 1 : radius;
      -                }
      -            }
      +        if (null == opacity) opacity = 1;
      +        if (null == red) red = 1;
      +        if (null == green) green = 1;
      +        if (null == blue) blue = 1;
       
      -            for (i = 0, iz = cache.length; i < iz; i++) {
      +        if (red == null) red = 1;
      +        if (green == null) green = 1;
      +        if (blue == null) blue = 1;
       
      -                index = cache[i];
      -                data[index] = tempDataTo[index];
      -                
      -                index++;
      -                data[index] = tempDataTo[index];
      -                
      -                index++;
      -                data[index] = tempDataTo[index];
      -                
      -                if (alpha) {
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -                    index++;
      -                    data[index] = tempDataTo[index];
      -                }
      -            }
      +        for (let i = 0; i < len; i++) {
      +            outR[i] = floor(inR[i] / red) * red;
      +            outG[i] = floor(inG[i] / green) * green;
      +            outB[i] = floor(inB[i] / blue) * blue;
      +            outA[i] = inA[i];
               }
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      matrix - apply a 3x3 matrix transform to each of the image’s pixels

      +

      threshold - Grayscales the input then, for each pixel, checks the color channel values against a “level” argument: pixels with channel values above the level value are assigned to the ‘high’ color; otherwise they are updated to the ‘low’ color. The “high” and “low” arguments are [red, green, blue] integer Number Arrays. The convenience function will accept the pseudo-attributes “highRed”, “lowRed” etc in place of the “high” and “low” Arrays.

      -
          matrix: function () {
      -
      -        let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos,
      -            len = data.length,
      -            alpha = filter.includeAlpha || false,
      -            offset = [],
      -            weights = filter.weights || [0, 0, 0, 0, 1, 0, 0, 0, 0],
      -            tempCache = [],
      -            cursor = 0;
      -
      -        offset[0] = -iWidth - 4;
      -        offset[1] = -iWidth;
      -        offset[2] = -iWidth + 4;
      -        offset[3] = -4;
      -        offset[4] = 0;
      -        offset[5] = 4;
      -        offset[6] = iWidth - 4;
      -        offset[7] = iWidth;
      -        offset[8] = iWidth + 4;
      -
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      -
      -            homePos = cache[i];
      -            sumR = sumG = sumB = sumA = 0;
      -            
      -            for (j = 0, jz = offset.length; j < jz; j++) {
      -
      -                pos = homePos + offset[j];
      -                
      -                if (pos >= 0 && pos < len) {
      -
      -                    weight = weights[j];
      -                    sumR += data[pos] * weight;
      -                    
      -                    pos++;
      -                    sumG += data[pos] * weight;
      -                    
      -                    pos++;
      -                    sumB += data[pos] * weight;
      -                    
      -                    if (alpha) {
      -
      -                        pos++;
      -                        sumA += data[pos] * weight;
      -                    }
      -                }
      -            }
      +            
          'threshold': function (requirements) {
       
      -            tempCache[cursor] = sumR;
      -            cursor++;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -            tempCache[cursor] = sumG;
      -            cursor++;
      +        let len = input.r.length;
       
      -            tempCache[cursor] = sumB;
      -            cursor++;
      +        let {opacity, low, high, level, lineOut} = requirements;
       
      -            if (alpha) {
      +        if (null == opacity) opacity = 1;
      +        if (null == low) low = [0,0,0];
      +        if (null == high) high = [255,255,255];
      +        if (null == level) level = 128;
       
      -                tempCache[cursor] = sumA;
      -                cursor++;
      -            }
      -        }
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
       
      -        cursor = 0;
      +        let [lowR, lowG, lowB] = low;
      +        let [highR, highG, highB] = high;
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        for (let i = 0; i < len; i++) {
       
      -            homePos = cache[i];
      -            data[homePos] = tempCache[cursor];
      -            cursor++;
      +            let gray = Math.floor((0.2126 * inR[i]) + (0.7152 * inG[i]) + (0.0722 * inB[i]));
       
      -            homePos++;
      -            data[homePos] = tempCache[cursor];
      -            cursor++;
      +            if (gray < level) {
       
      -            homePos++;
      -            data[homePos] = tempCache[cursor];
      -            cursor++;
      -
      -            if (alpha) {
      +                outR[i] = lowR;
      +                outG[i] = lowG;
      +                outB[i] = lowB;
      +            }
      +            else {
       
      -                homePos++;
      -                data[homePos] = tempCache[cursor];
      -                cursor++;
      +                outR[i] = highR;
      +                outG[i] = highG;
      +                outB[i] = highB;
                   }
      +            outA[i] = inA[i];
               }
      +
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
    • -
    • +
    • - +
      -

      matrix5 - apply a 5x5 matrix transform to each of the image’s pixels

      +

      tint-channels - Has similarities to the SVG <feColorMatrix> filter element, but excludes the alpha channel from calculations. Rather than set a matrix, we set nine arguments to determine how the value of each color channel in a pixel will affect both itself and its fellow color channels. The ‘sepia’ convenience filter presets these values to create a sepia effect.

      -
      -    matrix5: function () {
      -
      -        let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos,
      -            len = data.length,
      -            alpha = filter.includeAlpha || false,
      -            offset = [],
      -            weights = filter.weights || [0, 0, 0, 0, 0,  0, 0, 0, 0, 0,  0, 0, 1, 0, 0,  0, 0, 0, 0, 0,  0, 0, 0, 0, 0],
      -            tempCache = [],
      -            iWidth2 = iWidth * 2,
      -            cursor = 0;
      -
      -        offset[0] = -iWidth2 - 8;
      -        offset[1] = -iWidth2 - 4;
      -        offset[2] = -iWidth2;
      -        offset[3] = -iWidth2 + 4;
      -        offset[4] = -iWidth2 + 8;
      -        offset[5] = -iWidth - 8;
      -        offset[6] = -iWidth - 4;
      -        offset[7] = -iWidth;
      -        offset[8] = -iWidth + 4;
      -        offset[9] = -iWidth + 8;
      -        offset[10] = -8;
      -        offset[11] = -4;
      -        offset[12] = 0;
      -        offset[13] = 4;
      -        offset[14] = 8;
      -        offset[15] = iWidth - 8;
      -        offset[16] = iWidth - 4;
      -        offset[17] = iWidth;
      -        offset[18] = iWidth + 4;
      -        offset[19] = iWidth + 8;
      -        offset[20] = iWidth2 - 8;
      -        offset[21] = iWidth2 - 4;
      -        offset[22] = iWidth2;
      -        offset[23] = iWidth2 + 4;
      -        offset[24] = iWidth2 + 8;
      -
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      -
      -            homePos = cache[i];
      -            sumR = sumG = sumB = sumA = 0;
      -            
      -            for (j = 0, jz = offset.length; j < jz; j++) {
      -
      -                pos = homePos + offset[j];
      -                
      -                if (pos >= 0 && pos < len) {
      -
      -                    weight = weights[j];
      -                    sumR += data[pos] * weight;
      -
      -                    pos++;
      -                    sumG += data[pos] * weight;
      -
      -                    pos++;
      -                    sumB += data[pos] * weight;
      -
      -                    if (alpha) {
      -
      -                        pos++;
      -                        sumA += data[pos] * weight;
      -                    }
      -                }
      -            }
      +            
          'tint-channels': function (requirements) {
       
      -            tempCache[cursor] = sumR;
      -            cursor++;
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -            tempCache[cursor] = sumG;
      -            cursor++;
      +        let len = input.r.length;
       
      -            tempCache[cursor] = sumB;
      -            cursor++;
      +        let {opacity, redInRed, redInGreen, redInBlue, greenInRed, greenInGreen, greenInBlue, blueInRed, blueInGreen, blueInBlue, lineOut} = requirements;
       
      -            if (alpha) {
      +        if (null == opacity) opacity = 1;
      +        if (null == redInRed) redInRed = 1;
      +        if (null == redInGreen) redInGreen = 0;
      +        if (null == redInBlue) redInBlue = 0;
      +        if (null == greenInRed) greenInRed = 0;
      +        if (null == greenInGreen) greenInGreen = 1;
      +        if (null == greenInBlue) greenInBlue = 0;
      +        if (null == blueInRed) blueInRed = 0;
      +        if (null == blueInGreen) blueInGreen = 0;
      +        if (null == blueInBlue) blueInBlue = 1;
       
      -                tempCache[cursor] = sumA;
      -                cursor++;
      -            }
      +        const {r:inR, g:inG, b:inB, a:inA} = input;
      +        const {r:outR, g:outG, b:outB, a:outA} = output;
      +
      +        for (let i = 0; i < len; i++) {
      +
      +            let r = inR[i],
      +                g = inG[i],
      +                b = inB[i];
      +
      +            outR[i] = Math.floor((r * redInRed) + (g * greenInRed) + (b * blueInRed));
      +            outG[i] = Math.floor((r * redInGreen) + (g * greenInGreen) + (b * blueInGreen));
      +            outB[i] = Math.floor((r * redInBlue) + (g * greenInBlue) + (b * blueInBlue));
      +            outA[i] = inA[i];
               }
       
      -        cursor = 0;
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
      +    },
      + +
    • + + +
    • +
      + +
      + +
      +

      user-defined-legacy - Previous to version 8.4, filters could be defined with an argument which passed a function string to the filter worker, which the worker would then run against the source input image as-and-when required. This functionality has been removed from the new filter system. All such filters will now return the input image unchanged.

      + +
      + +
      +    'user-defined-legacy': function (requirements) {
       
      -        for (i = 0, iz = cache.length; i < iz; i++) {
      +        let [input, output] = getInputAndOutputChannels(requirements);
       
      -            homePos = cache[i];
      -            data[homePos] = tempCache[cursor];
      -            cursor++;
      +        let {opacity, lineOut} = requirements;
       
      -            homePos++;
      -            data[homePos] = tempCache[cursor];
      -            cursor++;
      +        if (null == opacity) opacity = 1;
       
      -            homePos++;
      -            data[homePos] = tempCache[cursor];
      -            cursor++;
      +        copyOver(input, output);
       
      -            if (alpha) {
      -                
      -                homePos++;
      -                data[homePos] = tempCache[cursor];
      -                cursor++;
      -            }
      -        }
      +        if (lineOut) processResults(output, work, 1 - opacity);
      +        else processResults(work, output, opacity);
           },
       };
      diff --git a/min/scrawl.js b/min/scrawl.js index 4c67bc010..9a8af54d4 100644 --- a/min/scrawl.js +++ b/min/scrawl.js @@ -1 +1 @@ -const t={},e={},i={},s=[],n={},r=[],o={},a={},h=[],c={},l={},u={},d={},f={},p={},m=[],g={},y={},b={},S=[],P={},k={},v=Math.PI/180,x=new Set(["all","background","backgroundAttachment","backgroundBlendMode","backgroundClip","backgroundColor","backgroundOrigin","backgroundPosition","backgroundRepeat","border","borderBottom","borderBottomColor","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopStyle","borderTopWidth","borderWidth","clear","color","columns","content","counterIncrement","counterReset","cursor","direction","display","emptyCells","float","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontSynthesis","fontVariant","fontVariantAlternates","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariantPosition","fontWeight","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoPosition","gridAutoRows","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","gridTemplate","gridTemplateAreas","gridTemplateRows","gridTemplateColumns","imageResolution","imeMode","inherit","inlineSize","isolation","letterSpacing","lineBreak","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBlockStart","marginBlockEnd","marginInlineStart","marginInlineEnd","marginBottom","marginLeft","marginRight","marginTop","marks","mask","maskType","maxWidth","maxHeight","maxBlockSize","maxInlineSize","maxZoom","minWidth","minHeight","minBlockSize","minInlineSize","minZoom","mixBlendMode","objectFit","objectPosition","offsetBlockStart","offsetBlockEnd","offsetInlineStart","offsetInlineEnd","orphans","overflow","overflowWrap","overflowX","overflowY","pad","padding","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd","paddingBottom","paddingLeft","paddingRight","paddingTop","pageBreakAfter","pageBreakBefore","pageBreakInside","pointerEvents","position","prefix","quotes","rubyAlign","rubyMerge","rubyPosition","scrollBehavior","scrollSnapCoordinate","scrollSnapDestination","scrollSnapPointsX","scrollSnapPointsY","scrollSnapType","scrollSnapTypeX","scrollSnapTypeY","shapeImageThreshold","shapeMargin","shapeOutside","tableLayout","textAlign","textDecoration","textIndent","textOrientation","textOverflow","textRendering","textShadow","textTransform","textUnderlinePosition","unicodeRange","unset","verticalAlign","widows","willChange","wordBreak","wordSpacing","wordWrap","zIndex"]),C=new Set(["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","backfaceVisibility","backgroundImage","backgroundSize","borderBottomLeftRadius","borderBottomRightRadius","borderImage","borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth","borderRadius","borderTopLeftRadius","borderTopRightRadius","boxDecorationBreak","boxShadow","boxSizing","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","filter","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","fontFeatureSettings","fontKerning","fontLanguageOverride","hyphens","imageRendering","imageOrientation","initial","justifyContent","linearGradient","opacity","order","orientation","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","resize","tabSize","textAlignLast","textCombineUpright","textDecorationColor","textDecorationLine","textDecorationStyle","touchAction","transformStyle","transition","transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction","unicodeBidi","whiteSpace","writingMode"]);var A=Object.freeze({__proto__:null,version:"8.3.4",anchor:{},anchornames:[],animation:t,animationnames:[],asset:n,assetnames:r,animationtickers:e,animationtickersnames:[],artefact:i,artefactnames:s,canvas:o,canvasnames:[],cell:a,cellnames:h,element:{},elementnames:[],entity:c,entitynames:[],filter:l,filternames:[],fontattribute:{},fontattributenames:[],force:f,forcenames:[],group:u,groupnames:[],palette:{},palettenames:[],particle:d,particlenames:[],spring:p,springnames:m,stack:{},stacknames:[],styles:b,stylesnames:S,tween:y,tweennames:[],unstackedelement:P,unstackedelementnames:[],world:g,worldnames:[],constructors:k,radian:v,css:x,xcss:C});let w=!1,D=!0,O=[],E=[];const T=function(){D=!0},R=function(){let e=[];D&&function(){if(D){D=!1;let e,i,s=Math.floor,n=[];E.forEach(r=>{e=t[r],e&&(i=s(e.order)||0,n[i]||(n[i]=[]),n[i].push(e))}),O=n.reduce((t,e)=>t.concat(e),[])}}(),O.forEach(t=>{t&&t.fn&&e.push(t.fn())}),Promise.all(e).then(()=>{w&&window.requestAnimationFrame(()=>R())}).catch(t=>console.log("animationLoop error: ",t))},F=function(){w=!0,R()},H=(t,e)=>{if(!Q(e))throw new Error(`core/utilities addStrings() error - no delta argument supplied ${t}, ${e}`);if(null!=e){let i=!(!t.substring&&!e.substring);return W(t)?t+=W(e)?e:parseFloat(e):t=parseFloat(t)+(W(e)?e:parseFloat(e)),i?t+"%":t}return t},L=t=>{let e,i,s;if(!Q(t))throw new Error("core/utilities convertTime() error - no argument supplied");if(W(t))return["ms",t];if(!t.substring)throw new Error("core/utilities convertTime() error - invalid argument: "+t);if(e=t.match(/^\d+\.?\d*(\D*)/),i=e[1].toLowerCase?e[1].toLowerCase():"ms",s=parseFloat(t),!W(s))throw new Error("core/base error - convertTime() argument converts to NaN: "+t);switch(i){case"s":s*=1e3;break;case"%":break;default:i="ms"}return[i,s]},j=t=>t.toFixed?0==t?t:isNaN(t)?0:t<-1e-6||t>1e-6?t:0:t,B=()=>{},$=function(){return this},M=()=>Promise.resolve(!0),z=()=>performance.now().toString(36)+Math.random().toString(36).substr(2),I=t=>"boolean"==typeof t,X=t=>"[object HTMLCanvasElement]"===Object.prototype.toString.call(t),Y=t=>!!(t&&t.querySelector&&t.dispatchEvent),N=t=>"function"==typeof t,W=t=>!(void 0===t||!t.toFixed||Number.isNaN(t)),V=t=>"[object Object]"===Object.prototype.toString.call(t),q=t=>!(!t||!t.type||"Quaternion"!==t.type),G=(t,e)=>{if(!V(t)||!V(e))throw new Error(`core/utilities mergeOver() error - insufficient arguments supplied ${t}, ${e}`);for(let i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t},U=(t,e)=>{if(!V(t)||!V(e))throw new Error(`core/utilities mergeDiscard() error - insufficient arguments supplied ${t}, ${e}`);return Object.entries(e).forEach(([i,s])=>{null===s?delete t[i]:t[i]=e[i]}),t},Z=(t,e)=>{if(!K(t,e))throw new Error(`core/utilities pushUnique() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error("core/utilities pushUnique() error - argument not an array "+t);return Array.isArray(e)?e.forEach(e=>Z(t,e)):t.indexOf(e)<0&&t.push(e),t},_=(t,e)=>{if(!K(t,e))throw new Error(`core/utilities removeItem() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error("core/utilities removeItem() error - argument not an array "+t);let i=t.indexOf(e);return i>=0&&t.splice(i,1),t},Q=t=>void 0!==t,K=(...t)=>t.every(t=>void 0!==t),J=(...t)=>t.find(t=>void 0!==t),tt=(...t)=>!!t.find(t=>void 0!==t),et=function(t,e,i={}){if("function"==typeof window.IntersectionObserver&&t&&t.run){let s=new IntersectionObserver((e,i)=>{e.forEach(e=>{e.isIntersecting?!t.isRunning()&&t.run():e.isIntersecting||t.isRunning()&&t.halt()})},i);return e&&e.domElement&&s.observe(e.domElement),function(){s.disconnect()}}return B},it=function(t,e,i){if(!N(e))throw new Error(`core/document addListener() error - no function supplied: ${t}, ${i}`);return nt(t,e,i,"removeEventListener"),nt(t,e,i,"addEventListener"),function(){st(t,e,i)}},st=function(t,e,i){if(!N(e))throw new Error(`core/document removeListener() error - no function supplied: ${t}, ${i}`);nt(t,e,i,"removeEventListener")},nt=function(t,e,i,s){let n,r=[].concat(t);n=i.substring?document.body.querySelectorAll(i):Array.isArray(i)?i:[i],navigator.pointerEnabled||navigator.msPointerEnabled?ot(r,e,n,s):rt(r,e,n,s)},rt=function(t,e,i,s){t.forEach(t=>{i.forEach(i=>{if(!(Y(i)||i.document||i.characterSet))throw new Error(`core/document actionMouseListener() error - bad target: ${t}, ${i}`);switch(t){case"move":i[s]("mousemove",e,!1),i[s]("touchmove",e,!1),i[s]("touchfollow",e,!1);break;case"up":i[s]("mouseup",e,!1),i[s]("touchend",e,!1);break;case"down":i[s]("mousedown",e,!1),i[s]("touchstart",e,!1);break;case"leave":i[s]("mouseleave",e,!1),i[s]("touchleave",e,!1);break;case"enter":i[s]("mouseenter",e,!1),i[s]("touchenter",e,!1)}})})},ot=function(t,e,i,s){t.forEach(t=>{i.forEach(i=>{if(!(Y(i)||i.document||i.characterSet))throw new Error(`core/document actionPointerListener() error - bad target: ${t}, ${i}`);switch(t){case"move":i[s]("pointermove",e,!1);break;case"up":i[s]("pointerup",e,!1);break;case"down":i[s]("pointerdown",e,!1);break;case"leave":i[s]("pointerleave",e,!1);break;case"enter":i[s]("pointerenter",e,!1)}})})},at=function(t,e,i){if(!N(e))throw new Error(`core/document addNativeListener() error - no function supplied: ${t}, ${i}`);return ct(t,e,i,"removeEventListener"),ct(t,e,i,"addEventListener"),function(){ht(t,e,i)}},ht=function(t,e,i){if(!N(e))throw new Error(`core/document removeNativeListener() error - no function supplied: ${t}, ${i}`);ct(t,e,i,"removeEventListener")},ct=function(t,e,i,s){let n,r=[].concat(t);n=i.substring?document.body.querySelectorAll(i):Array.isArray(i)?i:[i],r.forEach(t=>{n.forEach(i=>{if(!(Y(i)||i.document||i.characterSet))throw new Error(`core/document actionNativeListener() error - bad target: ${t}, ${i}`);i[s](t,e,!1)})})},lt=window.matchMedia("(prefers-reduced-motion: reduce)");let ut=lt.matches,dt=B,ft=B;const pt=()=>{ut?dt():ft()};lt.addEventListener("change",()=>{ut=lt.matches,pt()});const mt=window.matchMedia("(prefers-color-scheme: dark)");let gt=mt.matches,yt=B,bt=B;const St=()=>{gt?yt():bt()};mt.addEventListener("change",()=>{gt=mt.matches,St()});function Pt(t={}){t.defs={},t.getters={},t.setters={},t.deltaSetters={},t.get=function(t){if(Q(t)){let e=this.getters[t];if(e)return e.call(this);{let e=this.defs[t];if(void 0!==e){let i=this[t];return void 0!==i?i:e}}}return null},t.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs;Object.entries(t).forEach(([t,n])=>{t&&"name"!==t&&null!=n&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this)}return this},t.setDelta=function(t={}){if(Object.keys(t).length){let e,i=this.deltaSetters,s=this.defs;Object.entries(t).forEach(([t,n])=>{t&&"name"!==t&&null!=n&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=H(this[t],n)))},this)}return this};return t.defs=G(t.defs,{name:""}),t.packetExclusions=[],t.packetExclusionsByRegex=[],t.packetCoordinates=[],t.packetObjects=[],t.packetFunctions=[],t.saveAsPacket=function(t={}){I(t)&&t&&(t={includeDefaults:!0});let e=this.defs,i=Object.keys(e),s=this.packetExclusions,n=this.packetExclusionsByRegex,r=this.packetCoordinates,o=this.packetObjects,a=this.packetFunctions,h=t.includeDefaults||!1,c={};return h&&!Array.isArray(h)?h=Object.keys(e):h||(h=[]),Object.entries(this).forEach(([t,e])=>{let l,u=!0;if(i.indexOf(t)<0&&(u=!1),u&&s.indexOf(t)>=0&&(u=!1),u&&(l=n.some(e=>new RegExp(e).test(t)),l&&(u=!1)),u)if(a.indexOf(t)>=0){if(Q(e)&&null!==e){let i=this.stringifyFunction(e);i&&i.length&&(c[t]=i)}}else o.indexOf(t)>=0&&this[t]&&this[t].name?c[t]=this[t].name:r.indexOf(t)>=0?(h.indexOf(t)>=0||e[0]||e[1])&&(c[t]=e):(l=this.processPacketOut(t,e,h),l&&(c[t]=e))},this),c=this.finalizePacketOut(c,t),JSON.stringify([this.name,this.type,this.lib,c])},t.stringifyFunction=function(t){let e=t.toString().match(/\(([\s\S]*?)\)[\s\S]*?\{([\s\S]*)\}/),i=e[1],s=e[2];return!!K(i,s)&&`${i}~~~${s}`},t.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){return t},t.importPacket=function(t){let e=this;const i=function(t){return new Promise((i,s)=>{let n;t.substring||s(new Error("Packet url supplied for import is not a string")),"["===t[0]?(n=e.actionPacket(t),n&&n.lib?i(n):s(n)):t.indexOf('"name":')>=0?s(new Error("Bad packet supplied for import")):fetch(t).then(t=>{if(!t.ok)throw new Error(`Packet import from server failed - ${t.status}: ${t.statusText} - ${t.url}`);return t.text()}).then(t=>{if(n=e.actionPacket(t),!n||!n.lib)throw n;i(n)}).catch(t=>s(t))})};if(Array.isArray(t)){let e=[];return t.forEach(t=>e.push(i(t))),new Promise((t,i)=>{Promise.all(e).then(e=>t(e)).catch(t=>i(t))})}if(t.substring)return i(t);Promise.reject(new Error("Argument supplied for packet import is not a string or array of strings"))},t.actionPacketExclusions=["Image","Sprite","Video","Canvas","Stack"],t.actionPacket=function(t){try{if(t&&t.substring){if("["===t[0]){let e,i,s,n;try{[e,i,s,n]=JSON.parse(t)}catch(t){throw new Error("Failed to process packet due to JSON parsing error - "+t.message)}if(K(e,i,s,n)){if(this.actionPacketExclusions.indexOf(i)>=0)throw new Error("Failed to process packet - Stacks, Canvases and visual assets are excluded from the packet system");let t=A[s][e];if(t)t.set(n);else{if(n.outerHTML&&n.host){let t=document.querySelector("#"+n.host);if(t){let i=document.createElement("div");i.innerHTML=n.outerHTML;let s=i.firstElementChild;s&&(s.id=e,t.appendChild(s),n.domElement=s)}}if(t=new k[i](n),!t)throw new Error("Failed to create Scrawl-canvas object from supplied packet")}if(t.packetFunctions.forEach(e=>this.actionPacketFunctions(t,e)),n.anchor&&t.anchor&&t.anchor.packetFunctions.forEach(e=>{t.anchor[e]=n.anchor[e],this.actionPacketFunctions(t.anchor,e),t.anchor.build()}),n.glyphStyles&&t.glyphStyles&&n.glyphStyles.forEach((e,i)=>{V(e)&&t.setGlyphStyles(e,i)}),t)return t;throw new Error("Failed to process supplied packet")}throw new Error("Failed to process packet - JSON string holds incomplete data")}throw new Error("Failed to process packet - JSON string does not represent an array")}throw new Error("Failed to process packet - not a JSON string")}catch(t){return console.log(t),t}},t.actionPacketFunctions=function(t,e){let i=t[e];if(Q(i)&&null!==i&&i.substring)if("~~~"===i)t[e]=B;else{let s,n,r;[s,n]=i.split("~~~"),s=s.split(","),s=s.map(t=>t.trim()),n.indexOf("[native code]")<0?(r=new Function(...s,n),t[e]=r.bind(t)):t[e]=B}},t.clone=function(t={}){let e,i,s=this.name;this.name=t.name||"",t.useNewTicker?(i=this.ticker,this.ticker=null,e=this.saveAsPacket(),this.ticker=i):e=this.saveAsPacket(),this.name=s;let n=this.actionPacket(e);return this.packetFunctions.forEach(t=>{this[t]&&(n[t]=this[t])}),n=this.postCloneAction(n,t),n.set(t),n},t.postCloneAction=function(t,e){return t},t.kill=function(){return this.deregister()},t.makeName=function(t){return t&&t.substring&&A[this.lib+"names"].indexOf(t)<0?this.name=t:this.name=z(),this},t.register=function(){if(!Q(this.name))throw new Error("core/base error - register() name not set: "+this);let t=A[this.lib+"names"],e=A[this.lib];return this.isArtefact&&(Z(s,this.name),i[this.name]=this),this.isAsset&&(Z(r,this.name),n[this.name]=this),Z(t,this.name),e[this.name]=this,this},t.deregister=function(){if(!Q(this.name))throw new Error("core/base error - deregister() name not set: "+this);let t=A[this.lib+"names"],e=A[this.lib];return this.isArtefact&&(_(s,this.name),delete i[this.name]),this.isAsset&&(_(r,this.name),delete n[this.name]),_(t,this.name),delete e[this.name],this},t}const Animation=function(t={}){return this.makeName(t.name),this.order=Q(t.order)?t.order:this.defs.order,this.fn=t.fn||M,this.onRun=t.onRun||B,this.onHalt=t.onHalt||B,this.onKill=t.onKill||B,this.register(),t.delay||this.run(),this};let kt=Animation.prototype=Object.create(Object.prototype);kt.type="Animation",kt.lib="animation",kt.isArtefact=!1,kt.isAsset=!1,kt=Pt(kt);kt.defs=G(kt.defs,{order:1,fn:null,onRun:null,onHalt:null,onKill:null}),kt.stringifyFunction=B,kt.processPacketOut=B,kt.finalizePacketOut=B,kt.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},kt.clone=$,kt.run=function(){return this.onRun(),Z(E,this.name),T(),this},kt.isRunning=function(){return E.indexOf(this.name)>=0},kt.halt=function(){return this.onHalt(),_(E,this.name),T(),this},kt.kill=function(){return this.onKill(),_(E,this.name),T(),this.deregister(),!0};const vt=function(t){return new Animation(t)};k.Animation=Animation;const Ct=[];let At=!1,wt=!1;const Dt={x:0,y:0,scrollX:0,scrollY:0,w:0,h:0,type:"mouse"},Ot=function(t){let e=document.documentElement.clientWidth,i=document.documentElement.clientHeight;Dt.w===e&&Dt.h===i||(Dt.w=e,Dt.h=i,wt=!0)},Et=function(t){let e=window.pageXOffset,i=window.pageYOffset;Dt.scrollX===e&&Dt.scrollY===i||(Dt.x+=e-Dt.scrollX,Dt.y+=i-Dt.scrollY,Dt.scrollX=e,Dt.scrollY=i,wt=!0)},Tt=function(t){let e=Math.round(t.pageX),i=Math.round(t.pageY);Dt.x===e&&Dt.y===i||(Dt.type=navigator.pointerEnabled?"pointer":"mouse",Dt.x=e,Dt.y=i,wt=!0)},Rt=function(t){if(("touchstart"===t.type||"touchmove"===t.type)&&t.touches&&t.touches[0]){let e=t.touches[0],i=Math.round(e.pageX),s=Math.round(e.pageY);Dt.x===i&&Dt.y===s||(Dt.type="touch",Dt.x=i,Dt.y=s,Ft())}},Ft=function(){Ct.forEach(t=>Ht(t))},Ht=function(t){let e=i[t];if(!Q(e))throw new Error("core/userInteraction updateUiSubscribedElement() error - artefact does not exist: "+t);let s=e.domElement;if(!Y(s))throw new Error("core/userInteraction updateUiSubscribedElement() error - DOM element missing: "+t);let n=s.getBoundingClientRect(),r=Math.round(n.left+window.pageXOffset),o=Math.round(n.top+window.pageYOffset);e.here||(e.here={});let a=e.here;if(a.w=Math.round(n.width),a.h=Math.round(n.height),a.type=Dt.type,e.localMouseListener?(a.localListener=!0,a.active=!1,a.normX=!!a.originalWidth&&a.x/a.originalWidth,a.normY=!!a.originalHeight&&a.y/a.originalHeight,a.offsetX=r,a.offsetY=o,a.x>e.activePadding&&a.x0+e.activePadding&&a.y1||a.normY<0||a.normY>1)&&(a.active=!1)),"Canvas"===e.type&&e.updateBaseHere(a,e.fit),e.checkForResize&&!e.dirtyDimensions&&!e.dirtyDomDimensions){let[t,i]=e.currentDimensions;if("Canvas"===e.type){e.computedStyles||(e.computedStyles=window.getComputedStyle(e.domElement));let s=e.computedStyles,n=Math.floor(a.w-parseFloat(s.borderLeftWidth)-parseFloat(s.borderRightWidth)-parseFloat(s.paddingLeft)-parseFloat(s.paddingRight)),r=Math.floor(a.h-parseFloat(s.borderTopWidth)-parseFloat(s.borderBottomWidth)-parseFloat(s.paddingTop)-parseFloat(s.paddingBottom));t===n&&i===r||e.set({dimensions:[n,r]})}else t===a.w&&i===a.h||e.set({dimensions:[a.w,a.h]})}},Lt=vt({name:"coreListenersTracker",order:0,delay:!0,fn:function(){return new Promise(t=>{Ct.length||t(!1),At&&wt&&(wt=!1,Ft()),t(!0)})}}),jt=function(){Bt("removeEventListener"),Bt("addEventListener"),At=!0,wt=!0,Lt.run()},Bt=function(t){navigator.pointerEnabled||navigator.msPointerEnabled?(window[t]("pointermove",Tt,!1),window[t]("pointerup",Tt,!1),window[t]("pointerdown",Tt,!1),window[t]("pointerleave",Tt,!1),window[t]("pointerenter",Tt,!1)):(window[t]("mousemove",Tt,!1),window[t]("mouseup",Tt,!1),window[t]("mousedown",Tt,!1),window[t]("mouseleave",Tt,!1),window[t]("mouseenter",Tt,!1),window[t]("touchmove",Rt,!1),window[t]("touchstart",Rt,!1),window[t]("touchend",Rt,!1),window[t]("touchcancel",Rt,!1)),window[t]("scroll",Et,!1),window[t]("resize",Ot,!1)},$t=function(){Ot(),wt=!0},Mt=URL.createObjectURL(new Blob(["\nif (!Uint8Array.prototype.slice) {\n Object.defineProperty(Uint8Array.prototype, 'slice', {\n value: function (begin, end) {\n return new Uint8Array(Array.prototype.slice.call(this, begin, end));\n }\n });\n}\n\nlet packet;\nlet image;\nlet iWidth;\nlet data;\nlet cache;\nlet tiles;\nlet localX;\nlet localY;\nlet localWidth;\nlet localHeight;\nlet filters;\nlet filter;\nlet action;\n\nonmessage = function (e) {\n\n let i, iz;\n\n packet = e.data;\n image = packet.image;\n iWidth = image.width * 4;\n data = image.data;\n filters = packet.filters;\n\n getCache();\n getLocal();\n\n for (i = 0, iz = filters.length; i < iz; i++) {\n\n filter = filters[i];\n\n if (filter.method === 'userDefined' && filter.userDefined) actions.userDefined = new Function(filter.userDefined);\n\n action = actions[filter.method];\n\n if (action) action();\n }\n\n postMessage(packet);\n};\n\nonerror = function (e) {\n\n console.log('error' + e.message);\n postMessage(packet);\n};\n\nconst getCache = function () {\n\n let i, iz;\n\n if (Array.isArray(cache)) cache.length = 0;\n else cache = [];\n\n for (i = 0, iz = data.length; i < iz; i += 4) {\n\n if (data[i + 3]) cache.push(i);\n }\n};\n\nconst getLocal = function () {\n\n let i, iz, w, h, minX, minY, maxX, maxY, x, y, val,\n floor = Math.floor;\n\n w = image.width;\n h = image.height;\n minX = w;\n minY = h;\n maxX = 0;\n maxY = 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n val = cache[i] / 4;\n y = floor(val / w);\n x = val % w;\n minX = (x < minX) ? x : minX;\n minY = (y < minY) ? y : minY;\n maxX = (x > maxX) ? x : maxX;\n maxY = (y > maxY) ? y : maxY;\n }\n\n localX = minX;\n localY = minY;\n localWidth = maxX - minX;\n localHeight = maxY - minY;\n};\n\nconst getTiles = function () {\n\n let i, iz, j, jz, x, xz, y, yz, startX, startY, pos, \n hold = [],\n tileWidth = filter.tileWidth || 1,\n tileHeight = filter.tileHeight || 1,\n offsetX = filter.offsetX,\n offsetY = filter.offsetY,\n w = image.width,\n h = image.height;\n\n if (Array.isArray(tiles)) tiles.length = 0;\n else tiles = [];\n\n offsetX = (offsetX >= tileWidth) ? tileWidth - 1 : offsetX;\n offsetY = (offsetY >= tileHeight) ? tileHeight - 1 : offsetY;\n\n startX = (offsetX) ? offsetX - tileWidth : 0;\n startY = (offsetY) ? offsetY - tileHeight : 0;\n\n for (j = startY, jz = h + tileHeight; j < jz; j += tileHeight) {\n\n for (i = startX, iz = w + tileWidth; i < iz; i += tileWidth) {\n\n hold.length = 0;\n \n for (y = j, yz = j + tileHeight; y < yz; y++) {\n\n if (y >= 0 && y < h) {\n\n for (x = i, xz = i + tileWidth; x < xz; x++) {\n\n if (x >= 0 && x < w) {\n\n pos = (y * iWidth) + (x * 4);\n\n if (data[pos + 3]) hold.push(pos);\n }\n }\n }\n }\n if (hold.length) tiles.push([].concat(hold));\n }\n }\n};\n\nconst average = function (c) {\n\n let a = 0,\n k, kz,\n l = c.length;\n\n if (l) {\n\n for (k = 0, kz = l; k < kz; k++) {\n\n a +=c[k];\n }\n return a / l;\n }\n return 0;\n};\n\nconst checkBounds = function (p) {\n\n let len = data.length;\n\n if (p < 0) p += len;\n if (p >= len) p -= len;\n return p;\n};\n\nconst actions = {\n\n\n userDefined: function () {},\n\n grayscale: function () {\n\n let i, iz, pos, gray;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]);\n data[pos] = data[pos + 1] = data[pos + 2] = gray;\n }\n },\n\n sepia: function () {\n\n let i, iz, pos, r, g, b;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n \n r = data[pos];\n g = data[pos + 1];\n b = data[pos + 2];\n \n data[pos] = (r * 0.393) + (g * 0.769) + (b * 0.189);\n data[pos + 1] = (r * 0.349) + (g * 0.686) + (b * 0.168);\n data[pos + 2] = (r * 0.272) + (g * 0.534) + (b * 0.131);\n }\n },\n\n invert: function () {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] = 255 - data[pos];\n \n pos++;\n data[pos] = 255 - data[pos];\n \n pos++;\n data[pos] = 255 - data[pos];\n }\n },\n\n red: function () {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos + 1] = 0;\n data[pos + 2] = 0;\n }\n },\n\n green: function () {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] = 0;\n data[pos + 2] = 0;\n }\n },\n\n blue: function () {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] = 0;\n data[pos + 1] = 0;\n }\n },\n\n notred: function() {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] = 0;\n }\n },\n\n notgreen: function () {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos + 1] = 0;\n }\n },\n\n notblue: function () {\n\n let i, iz, pos;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos + 2] = 0;\n }\n },\n\n cyan: function () {\n\n let i, iz, pos, gray;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n \n gray = (data[pos + 1] + data[pos + 2]) / 2;\n \n data[pos] = 0;\n data[pos + 1] = gray;\n data[pos + 2] = gray;\n }\n },\n\n magenta: function () {\n\n let i, iz, pos, gray;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n\n gray = (data[pos] + data[pos + 2]) / 2;\n\n data[pos] = gray;\n data[pos + 1] = 0;\n data[pos + 2] = gray;\n }\n },\n\n yellow: function () {\n\n let i, iz, pos, gray;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n \n gray = (data[pos] + data[pos + 1]) / 2;\n \n data[pos] = gray;\n data[pos + 1] = gray;\n data[pos + 2] = 0;\n }\n },\n\n brightness: function () {\n\n let i, iz, pos, \n level = filter.level || 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] *= level;\n \n pos++;\n data[pos] *= level;\n \n pos++;\n data[pos] *= level;\n }\n },\n\n saturation: function () {\n\n let i, iz, pos, \n level = filter.level || 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] = 127 + ((data[pos] - 127) * level);\n \n pos++;\n data[pos] = 127 + ((data[pos] - 127) * level);\n \n pos++;\n data[pos] = 127 + ((data[pos] - 127) * level);\n }\n },\n\n threshold: function () {\n\n let i, iz, pos, gray, test,\n level = filter.level || 0,\n lowRed = filter.lowRed,\n lowGreen = filter.lowGreen,\n lowBlue = filter.lowBlue,\n highRed = filter.highRed,\n highGreen = filter.highGreen,\n highBlue = filter.highBlue;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n \n gray = (0.2126 * data[pos]) + (0.7152 * data[pos + 1]) + (0.0722 * data[pos + 2]);\n test = (gray > level) ? true : false;\n \n if (test) {\n\n data[pos] = highRed;\n data[pos + 1] = highGreen;\n data[pos + 2] = highBlue;\n }\n else {\n\n data[pos] = lowRed;\n data[pos + 1] = lowGreen;\n data[pos + 2] = lowBlue;\n }\n \n }\n },\n\n channels: function () {\n\n let i, iz, pos,\n red = filter.red || 0,\n green = filter.green || 0,\n blue = filter.blue || 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n \n data[pos] *= red;\n data[pos + 1] *= green;\n data[pos + 2] *= blue;\n }\n },\n\n channelstep: function () {\n\n let i, iz, pos,\n red = filter.red || 1,\n green = filter.green || 1,\n blue = filter.blue || 1,\n floor = Math.floor;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n data[pos] = floor(data[pos] / red) * red;\n \n pos++;\n data[pos] = floor(data[pos] / green) * green;\n \n pos++;\n data[pos] = floor(data[pos] / blue) * blue;\n }\n },\n\n tint: function () {\n\n let i, iz, pos, r, g, b,\n redInRed = filter.redInRed || 0,\n redInGreen = filter.redInGreen || 0,\n redInBlue = filter.redInBlue || 0,\n greenInRed = filter.greenInRed || 0,\n greenInGreen = filter.greenInGreen || 0,\n greenInBlue = filter.greenInBlue || 0,\n blueInRed = filter.blueInRed || 0,\n blueInGreen = filter.blueInGreen || 0,\n blueInBlue = filter.blueInBlue || 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n pos = cache[i];\n \n r = data[pos];\n g = data[pos + 1];\n b = data[pos + 2];\n \n data[pos] = (r * redInRed) + (g * greenInRed) + (b * blueInRed);\n data[pos + 1] = (r * redInGreen) + (g * greenInGreen) + (b * blueInGreen);\n data[pos + 2] = (r * redInBlue) + (g * greenInBlue) + (b * blueInBlue);\n }\n },\n\n chroma: function () {\n\n let pos, posA,\n ranges = filter.ranges,\n range, min, max, val,\n i, iz, j, jz, flag;\n\n for (j = 0, jz = cache.length; j < jz; j++) {\n\n flag = false;\n\n for (i = 0, iz = ranges.length; i < iz; i++) {\n\n posA = cache[j] + 3;\n range = ranges[i];\n min = range[2];\n pos = posA - 1;\n val = data[pos];\n\n if (val >= min) {\n\n max = range[5];\n\n if (val <= max) {\n\n min = range[1];\n pos--;\n val = data[pos];\n\n if (val >= min) {\n\n max = range[4];\n\n if (val <= max) {\n\n min = range[0];\n pos--;\n val = data[pos];\n\n if (val >= min) {\n\n max = range[3];\n\n if (val <= max) {\n flag = true;\n break;\n }\n }\n }\n }\n }\n }\n }\n if (flag) data[posA] = 0;\n }\n },\n\n pixelate: function () {\n\n let i, iz, j, jz, pos, r, g, b, a, tile, len;\n\n getTiles();\n\n for (i = 0, iz = tiles.length; i < iz; i++) {\n\n tile = tiles[i];\n r = g = b = a = 0;\n len = tile.length;\n\n if (len) {\n\n for (j = 0, jz = len; j < jz; j++) {\n\n pos = tile[j];\n\n r += data[pos];\n g += data[pos + 1];\n b += data[pos + 2];\n a += data[pos + 3];\n }\n\n r /= len;\n g /= len;\n b /= len;\n a /= len;\n\n for (j = 0, jz = len; j < jz; j++) {\n\n pos = tile[j];\n\n data[pos] = r;\n data[pos + 1] = g;\n data[pos + 2] = b;\n data[pos + 3] = a;\n }\n }\n }\n },\n\n blur: function () {\n\n if (data.slice) {\n\n let radius = filter.radius || 1,\n alpha = filter.includeAlpha || false,\n shrink = filter.shrinkingRadius || false,\n passes = filter.passes || 1,\n vertical = filter.processVertical,\n horizontal = filter.processHorizontal,\n len = data.length,\n imageWidth = image.width,\n imageHeight = image.height,\n tempDataTo, tempDataFrom,\n i, iz, index;\n\n let processPass = function () {\n\n let j, jz;\n\n if (vertical) {\n\n tempDataFrom = tempDataTo.slice(); \n\n for (j = localX * 4, jz = (localX + localWidth) * 4; j < jz; j++) {\n\n if (alpha) processColumn(j);\n else {\n\n if (j % 4 !== 3) processColumn(j);\n }\n }\n }\n\n if (horizontal) {\n\n tempDataFrom = tempDataTo.slice(); \n\n for (j = localY, jz = localY + localHeight; j < jz; j++) {\n\n if (alpha) processRowWithAlpha(j);\n else processRowNoAlpha(j);\n }\n }\n };\n\n let processColumn = function (col) {\n\n let pos, avg, val, cagePointer, y, yz, q, dataPointer,\n vLead = radius * iWidth, \n cage = [],\n cageLen;\n\n for (y = -radius, yz = radius; y < yz; y++) {\n\n pos = col + (y * iWidth);\n pos = checkBounds(pos, len);\n cage.push(tempDataFrom[pos]);\n }\n\n tempDataTo[col] = avg = average(cage);\n\n cageLen = cage.length;\n\n for (q = 0; q < cageLen; q++) {\n\n cage[q] /= cageLen;\n }\n\n cagePointer = 0;\n\n for (y = 1; y < imageHeight; y++) {\n\n avg -= cage[cagePointer];\n\n dataPointer = col + (y * iWidth);\n pos = dataPointer + vLead;\n pos = checkBounds(pos, len);\n val = tempDataFrom[pos] / cageLen;\n\n avg += val;\n cage[cagePointer] = val;\n tempDataTo[dataPointer] = avg;\n\n cagePointer++;\n\n if (cagePointer === cageLen) cagePointer = 0;\n }\n };\n\n let processRowWithAlpha = function (row) {\n\n let pos, val, x, xz, q, avgQ, cageQ, rowPosX,\n avg = [],\n cage = [[], [], [], []],\n rowPos = row * iWidth, \n hLead = radius * 4,\n dataPointer, cagePointer, cageLen;\n\n q = 0;\n\n for (x = -radius * 4, xz = radius * 4; x < xz; x++) {\n\n pos = rowPos + x;\n pos = checkBounds(pos, len);\n \n cage[q].push(tempDataFrom[pos]);\n \n q++;\n if (q === 4) q = 0;\n }\n\n tempDataTo[rowPos] = avg[0] = average(cage[0]);\n tempDataTo[rowPos + 1] = avg[1] = average(cage[1]);\n tempDataTo[rowPos + 2] = avg[2] = average(cage[2]);\n tempDataTo[rowPos + 3] = avg[3] = average(cage[3]);\n\n cageLen = cage[0].length;\n\n for (q = 0; q < 4; q++) {\n\n for (x = 0; x < cageLen; x++) {\n\n cage[q][x] /= cageLen;\n }\n }\n cagePointer = 0;\n\n for (x = 1; x < imageWidth; x++) {\n\n rowPosX = rowPos + (x * 4);\n\n for (q = 0; q < 4; q++) {\n\n avgQ = avg[q];\n cageQ = cage[q];\n avgQ -= cageQ[cagePointer];\n\n dataPointer = rowPosX + q;\n pos = dataPointer + hLead;\n pos = checkBounds(pos, len);\n val = tempDataFrom[pos] / cageLen;\n\n avgQ += val;\n tempDataTo[dataPointer] = avgQ;\n avg[q] = avgQ;\n cageQ[cagePointer] = val;\n }\n\n cagePointer++;\n\n if (cagePointer === cageLen) cagePointer = 0;\n }\n };\n\n let processRowNoAlpha = function (row) {\n\n let pos, val, x, xz, q, avgQ, cageQ, rowPosX,\n avg = [],\n hLead = radius * 4,\n cage = [[], [], []],\n rowPos = row * iWidth, \n dataPointer, cagePointer, cageLen;\n\n q = 0;\n\n for (x = -radius * 4, xz = radius * 4; x < xz; x++) {\n\n if (q < 3) {\n\n pos = rowPos + x;\n pos = checkBounds(pos, len);\n cage[q].push(tempDataFrom[pos]);\n q++;\n }\n else q = 0;\n }\n\n tempDataTo[rowPos] = avg[0] = average(cage[0]);\n tempDataTo[rowPos + 1] = avg[1] = average(cage[1]);\n tempDataTo[rowPos + 2] = avg[2] = average(cage[2]);\n\n cageLen = cage[0].length;\n\n for (q = 0; q < 3; q++) {\n\n cageQ = cage[q];\n \n for (x = 0; x < cageLen; x++) {\n\n cageQ[x] /= cageLen;\n }\n }\n cagePointer = 0;\n\n for (x = 1; x < imageWidth; x++) {\n\n rowPosX = rowPos + (x * 4);\n\n for (q = 0; q < 3; q++) {\n\n avgQ = avg[q];\n cageQ = cage[q];\n avgQ -= cageQ[cagePointer];\n\n dataPointer = rowPosX + q;\n pos = dataPointer + hLead;\n pos = checkBounds(pos, len);\n val = tempDataFrom[pos] / cageLen;\n\n avgQ += val;\n tempDataTo[dataPointer] = avgQ;\n avg[q] = avgQ;\n cageQ[cagePointer] = val;\n }\n\n cagePointer++;\n if (cagePointer === cageLen) cagePointer = 0;\n }\n };\n\n tempDataTo = data.slice();\n\n for (i = 0; i < passes; i++) {\n\n processPass();\n \n if (shrink) {\n\n radius = Math.ceil(radius * 0.3);\n radius = (radius < 1) ? 1 : radius;\n }\n }\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n index = cache[i];\n data[index] = tempDataTo[index];\n \n index++;\n data[index] = tempDataTo[index];\n \n index++;\n data[index] = tempDataTo[index];\n \n if (alpha) {\n\n index++;\n data[index] = tempDataTo[index];\n }\n }\n }\n },\n\n matrix: function () {\n\n let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos,\n len = data.length,\n alpha = filter.includeAlpha || false,\n offset = [],\n weights = filter.weights || [0, 0, 0, 0, 1, 0, 0, 0, 0],\n tempCache = [],\n cursor = 0;\n\n offset[0] = -iWidth - 4;\n offset[1] = -iWidth;\n offset[2] = -iWidth + 4;\n offset[3] = -4;\n offset[4] = 0;\n offset[5] = 4;\n offset[6] = iWidth - 4;\n offset[7] = iWidth;\n offset[8] = iWidth + 4;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n homePos = cache[i];\n sumR = sumG = sumB = sumA = 0;\n \n for (j = 0, jz = offset.length; j < jz; j++) {\n\n pos = homePos + offset[j];\n \n if (pos >= 0 && pos < len) {\n\n weight = weights[j];\n sumR += data[pos] * weight;\n \n pos++;\n sumG += data[pos] * weight;\n \n pos++;\n sumB += data[pos] * weight;\n \n if (alpha) {\n\n pos++;\n sumA += data[pos] * weight;\n }\n }\n }\n\n tempCache[cursor] = sumR;\n cursor++;\n\n tempCache[cursor] = sumG;\n cursor++;\n\n tempCache[cursor] = sumB;\n cursor++;\n\n if (alpha) {\n\n tempCache[cursor] = sumA;\n cursor++;\n }\n }\n\n cursor = 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n homePos = cache[i];\n data[homePos] = tempCache[cursor];\n cursor++;\n\n homePos++;\n data[homePos] = tempCache[cursor];\n cursor++;\n\n homePos++;\n data[homePos] = tempCache[cursor];\n cursor++;\n\n if (alpha) {\n\n homePos++;\n data[homePos] = tempCache[cursor];\n cursor++;\n }\n }\n },\n\n matrix5: function () {\n\n let i, iz, j, jz, pos, weight, sumR, sumG, sumB, sumA, homePos,\n len = data.length,\n alpha = filter.includeAlpha || false,\n offset = [],\n weights = filter.weights || [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],\n tempCache = [],\n iWidth2 = iWidth * 2,\n cursor = 0;\n\n offset[0] = -iWidth2 - 8;\n offset[1] = -iWidth2 - 4;\n offset[2] = -iWidth2;\n offset[3] = -iWidth2 + 4;\n offset[4] = -iWidth2 + 8;\n offset[5] = -iWidth - 8;\n offset[6] = -iWidth - 4;\n offset[7] = -iWidth;\n offset[8] = -iWidth + 4;\n offset[9] = -iWidth + 8;\n offset[10] = -8;\n offset[11] = -4;\n offset[12] = 0;\n offset[13] = 4;\n offset[14] = 8;\n offset[15] = iWidth - 8;\n offset[16] = iWidth - 4;\n offset[17] = iWidth;\n offset[18] = iWidth + 4;\n offset[19] = iWidth + 8;\n offset[20] = iWidth2 - 8;\n offset[21] = iWidth2 - 4;\n offset[22] = iWidth2;\n offset[23] = iWidth2 + 4;\n offset[24] = iWidth2 + 8;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n homePos = cache[i];\n sumR = sumG = sumB = sumA = 0;\n \n for (j = 0, jz = offset.length; j < jz; j++) {\n\n pos = homePos + offset[j];\n \n if (pos >= 0 && pos < len) {\n\n weight = weights[j];\n sumR += data[pos] * weight;\n\n pos++;\n sumG += data[pos] * weight;\n\n pos++;\n sumB += data[pos] * weight;\n\n if (alpha) {\n\n pos++;\n sumA += data[pos] * weight;\n }\n }\n }\n\n tempCache[cursor] = sumR;\n cursor++;\n\n tempCache[cursor] = sumG;\n cursor++;\n\n tempCache[cursor] = sumB;\n cursor++;\n\n if (alpha) {\n\n tempCache[cursor] = sumA;\n cursor++;\n }\n }\n\n cursor = 0;\n\n for (i = 0, iz = cache.length; i < iz; i++) {\n\n homePos = cache[i];\n data[homePos] = tempCache[cursor];\n cursor++;\n\n homePos++;\n data[homePos] = tempCache[cursor];\n cursor++;\n\n homePos++;\n data[homePos] = tempCache[cursor];\n cursor++;\n\n if (alpha) {\n \n homePos++;\n data[homePos] = tempCache[cursor];\n cursor++;\n }\n }\n },\n};"],{type:"text/javascript"})),Filter=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this};let zt=Filter.prototype=Object.create(Object.prototype);zt.type="Filter",zt.lib="filter",zt.isArtefact=!1,zt.isAsset=!1,zt=Pt(zt);zt.defs=G(zt.defs,{method:"",level:0,lowRed:0,lowGreen:0,lowBlue:0,highRed:255,highGreen:255,highBlue:255,red:0,green:0,blue:0,redInRed:0,redInGreen:0,redInBlue:0,greenInRed:0,greenInGreen:0,greenInBlue:0,blueInRed:0,blueInGreen:0,blueInBlue:0,offsetX:0,offsetY:0,tileWidth:1,tileHeight:1,radius:1,passes:1,shrinkingRadius:!1,includeAlpha:!1,processVertical:!0,processHorizontal:!0,weights:null,ranges:null,userDefined:"",udVariable0:"",udVariable1:"",udVariable2:"",udVariable3:"",udVariable4:"",udVariable5:"",udVariable6:"",udVariable7:"",udVariable8:"",udVariable9:""}),zt.kill=function(){let t=this.name;return Object.entries(c).forEach(([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&_(s,t)}),Object.entries(u).forEach(([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&_(s,t)}),Object.entries(a).forEach(([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&_(s,t)}),this.deregister(),this};const It=[],Xt=function(){return It.length||It.push(Nt()),It.shift()},Yt=function(t){It.push(t)},Nt=function(){return new Worker(Mt)},Wt=function(t,e){return new Promise((i,s)=>{t.onmessage=t=>{t&&t.data&&t.data.image?i(t.data.image):i(!1)},t.onerror=t=>{console.log("error",t.lineno,t.message),i(!1)},t.postMessage(e)})};k.Filter=Filter;const State=function(t={}){return this.set(this.defs),this.lineDash=[],this.set(t),this};let Vt=State.prototype=Object.create(Object.prototype);Vt.type="State",Vt=Pt(Vt),Vt.defs={fillStyle:"rgba(0,0,0,1)",strokeStyle:"rgba(0,0,0,1)",globalAlpha:1,globalCompositeOperation:"source-over",lineWidth:1,lineCap:"butt",lineJoin:"miter",lineDash:null,lineDashOffset:0,miterLimit:10,shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,shadowColor:"rgba(0,0,0,0)",font:"12px sans-serif",textAlign:"left",textBaseline:"top",filter:"none"},Vt.processPacketOut=function(t,e,i){let s=!0;switch(t){case"lineDash":e.length||(s=i.indexOf("lineDash")>=0);break;default:i.indexOf(t)<0&&e===this.defs[t]&&(s=!1)}return s},Vt.finalizePacketOut=function(t,e){let i=t.fillStyle,s=t.strokeStyle;return i&&!i.substring&&(t.fillStyle=i.name),s&&!s.substring&&(t.strokeStyle=s.name),t},Vt.set=function(t={}){if(Object.keys(t).length){let e,i,s,n=Object.keys(t),r=this.defs;for(i=0,s=n.length;i0&&(this[0]/=t,this[1]/=t),this};const Zt=[],_t=function(t,e){Zt.length||Zt.push(new Coordinate);let i=Zt.shift();return i.set(t,e),i},Qt=function(t){t&&"Coordinate"===t.type&&Zt.push(t.zero())},Kt=function(t,e){return new Coordinate(t,e)};function Jt(t={}){t.defs=G(t.defs,{sourceLoaded:!1,source:null,subscribers:null}),t.packetExclusions=Z(t.packetExclusions,["sourceLoaded","source","subscribers"]),t.finalizePacketOut=function(t,e){return this.subscribers&&this.subscribers.length&&(t.subscribers=this.subscribers.map(t=>t.name)),t},t.kill=function(t=!1){return t&&this.source&&this.source.remove(),this.deregister()};t.getters;let e=t.setters;t.deltaSetters;return e.source=function(t={}){t&&this.sourceLoaded&&this.notifySubscribers()},e.subscribers=B,t.assetConstructor=function(t={}){return this.makeName(t.name),this.register(),this.subscribers=[],this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this},t.subscribe=function(t={}){if(t&&t.name){let e=t.name;this.subscribers.every(t=>t.name!==e)&&this.subscribeAction(t)}},t.subscribeAction=function(t={}){this.subscribers.push(t),t.asset=this,t.source=this.source,this.notifySubscriber(t)},t.unsubscribe=function(t={}){if(t.name){let e=t.name,i=this.subscribers.findIndex(t=>t.name===e);i>=0&&(t.source=null,t.asset=null,t.sourceNaturalHeight=0,t.sourceNaturalWidth=0,t.sourceLoaded=!1,this.subscribers.splice(i,1))}},t.notifySubscribers=function(){this.subscribers.forEach(t=>this.notifySubscriber(t),this)},t.notifySubscriber=function(t){t.sourceNaturalWidth=this.sourceNaturalWidth,t.sourceNaturalHeight=this.sourceNaturalHeight,t.sourceLoaded=this.sourceLoaded,t.source=this.source,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0},t}k.Coordinate=Coordinate;const ImageAsset=function(t={}){return this.assetConstructor(t)};let te=ImageAsset.prototype=Object.create(Object.prototype);te.type="Image",te.lib="asset",te.isArtefact=!1,te.isAsset=!0,te=Pt(te),te=Jt(te);te.defs=G(te.defs,{intrinsicDimensions:null}),te.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},te.stringifyFunction=B,te.processPacketOut=B,te.finalizePacketOut=B,te.clone=$;te.getters;let ee=te.setters;te.deltaSetters;ee.source=function(t={}){t&&(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0&&(this.source=t,this.sourceNaturalWidth=t.naturalWidth,this.sourceNaturalHeight=t.naturalHeight,this.sourceLoaded=t.complete),this.sourceLoaded&&this.notifySubscribers())},ee.currentSrc=function(t){this.currentSrc=t,this.currentFile=this.currentSrc.split("/").pop()},te.checkSource=function(t,e){let i=this.source,s="element";if(this.sourceLoaded){let n=this.intrinsicDimensions[this.currentFile];switch(this.currentSrc!==i.currentSrc?(this.set({currentSrc:i.currentSrc}),n=this.intrinsicDimensions[this.currentFile],s=n?"intrinsic":"zero"):n&&(s="intrinsic"),s){case"zero":this.sourceNaturalWidth=0,this.sourceNaturalHeight=0,this.notifySubscribers();break;case"intrinsic":this.sourceNaturalWidth===n[0]&&this.sourceNaturalHeight===n[1]||(this.sourceNaturalWidth=n[0],this.sourceNaturalHeight=n[1],this.notifySubscribers());break;default:this.sourceNaturalWidth===i.naturalWidth&&this.sourceNaturalHeight===i.naturalHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.naturalWidth,this.sourceNaturalHeight=i.naturalHeight,this.notifySubscribers())}}};const ie=[],se=[],ne=function(...t){let e=/.*\/(.*?)\./,i=[];return t.forEach(t=>{let s,n,r,o,a=!1,h=!1;if(t.substring){let i=e.exec(t);s=i&&i[1]?i[1]:"",n=t,r="",o=!1,h=!0}else(t=!!V(t)&&t)&&t.src&&(s=t.name||"",n=t.src,r=t.className||"",o=t.visibility||!1,t.parent&&(a=document.querySelector(t.parent)),h=!0);if(h){let t=oe({name:s,intrinsicDimensions:{}}),e=document.createElement("img");e.name=s,e.className=r,e.crossorigin="anonymous",e.style.display=o?"block":"none",a&&a.appendChild(e),e.onload=()=>{t.set({source:e})},e.src=n,t.set({source:e}),i.push(s)}else i.push(!1)}),i},re=function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach(t=>{let i;if(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=t.dataset.dimensions||{};s.substring&&(s=JSON.parse(s));let n=oe({name:i,source:t,intrinsicDimensions:s,currentSrc:t.currentSrc});t.onload=()=>{n.set({source:t})}}})},oe=function(t){return new ImageAsset(t)};function ae(t={}){t.defs=G(t.defs,{group:null,visibility:!0,order:0,start:null,handle:null,offset:null,dimensions:null,pivoted:null,mimicked:null,particle:null,lockTo:null,bringToFrontOnDrag:!0,scale:1,roll:0,noUserInteraction:!1,noPositionDependencies:!1,noCanvasEngineUpdates:!1,noFilters:!1,noPathUpdates:!1,purge:null}),t.packetExclusions=Z(t.packetExclusions,["pathObject","mimicked","pivoted"]),t.packetExclusionsByRegex=Z(t.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),t.packetCoordinates=Z(t.packetCoordinates,["start","handle","offset"]),t.packetObjects=Z(t.packetObjects,["group"]),t.packetFunctions=Z(t.packetFunctions,[]),t.processPacketOut=function(t,e,i){let s=!0;switch(t){case"lockTo":"start"===e[0]&&"start"===e[1]&&(s=i.indexOf("lockTo")>=0);break;default:"entity"===this.lib?s=this.processEntityPacketOut(t,e,i):this.isArtefact&&(s=this.processDOMPacketOut(t,e,i))}return s},t.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},t.kill=function(t=!1,e=!1){let s=this.name;return Object.entries(u).forEach(([t,e])=>{e.artefacts.indexOf(s)>=0&&e.removeArtefacts(s)}),this.anchor&&this.demolishAnchor(),Object.entries(i).forEach(([t,e])=>{e.name!==s&&(e.pivot&&e.pivot.name===s&&e.set({pivot:!1}),e.mimic&&e.mimic.name===s&&e.set({mimic:!1}),e.path&&e.path.name===s&&e.set({path:!1}),e.generateAlongPath&&e.generateAlongPath.name===s&&e.set({generateAlongPath:!1}),e.generateInArea&&e.generateInArea.name===s&&e.set({generateInArea:!1}),e.artefact&&e.artefact.name===s&&e.set({artefact:!1}),Array.isArray(e.pins)&&e.pins.forEach((t,i)=>{V(t)&&t.name===s&&e.removePinAt(i)}))}),Object.entries(y).forEach(([t,e])=>{e.checkForTarget(s)&&e.removeFromTargets(this)}),this.factoryKill(t,e),this.deregister(),this},t.factoryKill=B;let e=t.getters,s=t.setters,n=t.deltaSetters;return e.positionX=function(){return this.currentStampPosition[0]},e.positionY=function(){return this.currentStampPosition[1]},e.position=function(){return[].concat(this.currentStampPosition)},e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},e.start=function(){return[].concat(this.currentStart)},s.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},s.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},s.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},n.startX=function(t){let e=this.start;e[0]=H(e[0],t),this.dirtyStart=!0},n.startY=function(t){let e=this.start;e[1]=H(e[1],t),this.dirtyStart=!0},n.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.handleX=function(){return this.currentHandle[0]},e.handleY=function(){return this.currentHandle[1]},e.handle=function(){return[].concat(this.currentHandle)},s.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0)},s.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0)},s.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0},n.handleX=function(t){let e=this.handle;e[0]=H(e[0],t),this.dirtyHandle=!0},n.handleY=function(t){let e=this.handle;e[1]=H(e[1],t),this.dirtyHandle=!0},n.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0},e.offsetX=function(){return this.currentOffset[0]},e.offsetY=function(){return this.currentOffset[1]},e.offset=function(){return[].concat(this.currentOffset)},s.offsetX=function(t){null!=t&&(this.offset[0]=t,this.dirtyOffset=!0)},s.offsetY=function(t){null!=t&&(this.offset[1]=t,this.dirtyOffset=!0)},s.offset=function(t,e){this.setCoordinateHelper("offset",t,e),this.dirtyOffset=!0},n.offsetX=function(t){let e=this.offset;e[0]=H(e[0],t),this.dirtyOffset=!0},n.offsetY=function(t){let e=this.offset;e[1]=H(e[1],t),this.dirtyOffset=!0},n.offset=function(t,e){this.setDeltaCoordinateHelper("offset",t,e),this.dirtyOffset=!0},e.width=function(){return this.currentDimensions[0]},e.height=function(){return this.currentDimensions[1]},e.dimensions=function(){return[].concat(this.currentDimensions)},s.width=function(t){null!=t&&(this.dimensions[0]=t,this.dirtyDimensions=!0)},s.height=function(t){null!=t&&(this.dimensions[1]=t,this.dirtyDimensions=!0)},s.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},n.width=function(t){let e=this.dimensions;e[0]=H(e[0],t),this.dirtyDimensions=!0},n.height=function(t){let e=this.dimensions;e[1]=H(e[1],t),this.dirtyDimensions=!0},n.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},s.particle=function(t){I(t)&&!t?(this.particle=null,"particle"===this.lockTo[0]&&(this.lockTo[0]="start"),"particle"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0):(this.particle=t,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)},s.lockTo=function(t){Array.isArray(t)?(this.lockTo[0]=t[0],this.lockTo[1]=t[1]):(this.lockTo[0]=t,this.lockTo[1]=t),this.dirtyLock=!0,this.dirtyStampPositions=!0},s.lockXTo=function(t){this.lockTo[0]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},s.lockYTo=function(t){this.lockTo[1]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},e.roll=function(){return this.currentRotation},s.roll=function(t){this.roll=t,this.dirtyRotation=!0},n.roll=function(t){this.roll+=t,this.dirtyRotation=!0},e.scale=function(){return this.currentScale},s.scale=function(t){this.scale=t,this.dirtyScale=!0},n.scale=function(t){this.scale+=t,this.dirtyScale=!0},s.host=function(t){if(t){let e=i[t];e&&e.here?this.host=e.name:this.host=t}else this.host="";this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyStart=!0,this.dirtyOffset=!0},s.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=u[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},t.purgeArtefact=function(t){return t.substring&&(t="all"===t?["pivot","mimic","path","filter"]:[t]),Array.isArray(t)&&t.forEach(t=>function(t,e){switch(e){case"pivot":delete t.pivot,delete t.pivotCorner,delete t.pivotPin,delete t.addPivotHandle,delete t.addPivotOffset,delete t.addPivotRotation;break;case"mimic":delete t.mimic,delete t.useMimicDimensions,delete t.useMimicScale,delete t.useMimicStart,delete t.useMimicHandle,delete t.useMimicOffset,delete t.useMimicRotation,delete t.useMimicFlip,delete t.addOwnDimensionsToMimic,delete t.addOwnScaleToMimic,delete t.addOwnStartToMimic,delete t.addOwnHandleToMimic,delete t.addOwnOffsetToMimic,delete t.addOwnRotationToMimic;break;case"path":delete t.path,delete t.pathPosition,delete t.addPathHandle,delete t.addPathOffset,delete t.addPathRotation,delete t.constantPathSpeed;break;case"filter":delete t.filter,delete t.filters,delete t.isStencil}}(this,t)),this},t.initializePositions=function(){this.dimensions=Kt(),this.start=Kt(),this.handle=Kt(),this.offset=Kt(),this.currentDimensions=Kt(),this.currentStart=Kt(),this.currentHandle=Kt(),this.currentOffset=Kt(),this.currentDragOffset=Kt(),this.currentDragCache=Kt(),this.currentStartCache=Kt(),this.currentStampPosition=Kt(),this.currentStampHandlePosition=Kt(),this.delta={},this.lockTo=["start","start"],this.pivoted=[],this.mimicked=[],this.dirtyScale=!0,this.dirtyDimensions=!0,this.dirtyLock=!0,this.dirtyStart=!0,this.dirtyOffset=!0,this.dirtyHandle=!0,this.dirtyRotation=!0,this.isBeingDragged=!1,this.initializeDomPositions()},t.initializeDomPositions=B,t.setCoordinateHelper=function(t,e,i){let s=this[t];Array.isArray(e)?(s[0]=e[0],s[1]=e[1]):V(e)?tt(e.x,e.y)?(s[0]=J(e.x,s[0]),s[1]=J(e.y,s[1])):(s[0]=J(e.width,e.w,s[0]),s[1]=J(e.height,e.h,s[1])):(s[0]=e,s[1]=i)},t.setDeltaCoordinateHelper=function(t,e,i){let s=this[t],n=s[0],r=s[1];Array.isArray(e)?(s[0]=H(n,e[0]),s[1]=H(r,e[1])):V(e)?tt(e.x,e.y)?(s[0]=H(n,J(e.x,0)),s[1]=H(r,J(e.y,0))):(s[0]=H(n,J(e.width,e.w,0)),s[1]=H(r,J(e.height,e.h,0))):(s[0]=H(n,e),s[1]=H(r,i))},t.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=i[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return Dt},t.getHere=function(){let t=this.getHost();if(t){if(t.here&&Object.keys(t.here))return t.here;if(t.currentDimensions){let e=t.currentDimensions;if(e)return{w:e[0],h:e[1]}}}return Dt},t.cleanPosition=function(t,e,i){let s,n;for(let r=0;r<2;r++)s=e[r],n=i[r],s.toFixed?t[r]=s:t[r]="left"===s||"top"===s?0:"right"===s||"bottom"===s?n:"center"===s?n/2:parseFloat(s)/100*n},t.cleanScale=function(){this.dirtyScale=!1;let t,e=this.scale,i=this.mimic,s=this.currentScale;i&&this.useMimicScale?i.currentScale?(t=i.currentScale,this.addOwnScaleToMimic&&(t+=e)):(t=e,this.dirtyMimicScale=!0):t=e,this.currentScale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,s!==this.currentScale&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicScale=!0)},t.cleanDimensions=function(){this.dirtyDimensions=!1;let t=this.getHost(),e=this.dimensions,i=this.currentDimensions;if(t){let s=t.currentDimensions?t.currentDimensions:[t.w,t.h],[n,r]=e,o=i[0],a=i[1];n.substring&&(n=parseFloat(n)/100*s[0]),r.substring&&(r="auto"===r?0:parseFloat(r)/100*s[1]);let h,c=this.mimic;c&&c.name&&this.useMimicDimensions&&(h=c.currentDimensions),h?(i[0]=this.addOwnDimensionsToMimic?h[0]+n:h[0],i[1]=this.addOwnDimensionsToMimic?h[1]+r:h[1]):(i[0]=n,i[1]=r),this.cleanDimensionsAdditionalActions(),this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,o===i[0]&&a===i[1]||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0)}else this.dirtyDimensions=!0},t.cleanDimensionsAdditionalActions=B,t.cleanLock=function(){this.dirtyLock=!1,this.dirtyStart=!0,this.dirtyHandle=!0},t.cleanStart=function(){let t,e,i=this.getHost();i&&(this.dirtyStart=!1,K(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyStart=!0),this.dirtyStart||(this.cleanPosition(this.currentStart,this.start,[t,e]),this.dirtyStampPositions=!0)},t.cleanOffset=function(){let t,e,i=this.getHost();i&&(this.dirtyOffset=!1,K(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyOffset=!0),this.dirtyStart||(this.cleanPosition(this.currentOffset,this.offset,[t,e]),this.dirtyStampPositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicOffset=!0))},t.cleanHandle=function(){this.dirtyHandle=!1;let t=this.currentHandle;this.cleanPosition(t,this.handle,this.currentDimensions),this.dirtyStampHandlePositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicHandle=!0)},t.cleanRotation=function(){this.dirtyRotation=!1;let t,e=this.roll,i=this.currentRotation,s=this.path,n=this.mimic,r=this.pivot,o=this.lockTo;if(s&&o.indexOf("path")>=0){if(t=e,this.addPathRotation){let e=this.getPathData();e&&(t+=e.angle)}}else n&&this.useMimicRotation&&o.indexOf("mimic")>=0?Q(n.currentRotation)?(t=n.currentRotation,this.addOwnRotationToMimic&&(t+=e)):this.dirtyMimicRotation=!0:(t=e,r&&this.addPivotRotation&&o.indexOf("pivot")>=0&&(Q(r.currentRotation)?t+=r.currentRotation:this.dirtyPivotRotation=!0));this.currentRotation=t,t!==i&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0)},t.cleanStampPositions=function(){this.dirtyStampPositions=!1;let{currentStampPosition:t,currentStart:e,currentOffset:i,currentStartCache:s,currentDragOffset:n}=this,[r,o]=t;if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let{isBeingDragged:r,lockTo:o,pivot:a,pivotCorner:h,pivotPin:c,addPivotOffset:l,path:u,addPathOffset:f,mimic:p,useMimicStart:m,useMimicOffset:g,addOwnStartToMimic:y,addOwnOffsetToMimic:b,particle:S}=this;const P={start:function(t){t.setFromArray(e).add(i)},path:function(t){C?(t.setFromVector(C),f||t.subtract(u.currentOffset)):t.setFromArray(e).add(i)},pivot:function(t){h&&a.getCornerCoordinate?t.setFromArray(a.getCornerCoordinate(h)):"Polyline"==a.type?t.setFromArray(a.getPinAt(c)):t.setFromArray(a.currentStampPosition),l||t.subtract(a.currentOffset),t.add(i)},mimic:function(t){m||g?(t.setFromArray(p.currentStampPosition),m&&y&&t.add(e),g&&b&&t.add(i),m||t.subtract(p.currentStart).add(e),g||t.subtract(p.currentOffset).add(i)):t.setFromArray(e).add(i)},particle:function(t){S.substring&&(S=d[S]),S?t.setFromVector(S.position):t.setFromArray(e).add(i)},mouse:function(t){t.setFromVector(x),r&&(s.setFromArray(t),t.add(n)),t.add(i)}};let k,v,x,C,A=_t(),w=!1;if(A.length=0,r)A.push("mouse","mouse"),w=!0,this.getCornerCoordinate&&this.cleanPathObject();else for(k=0;k<2;k++)v=o[k],("pivot"!==v||a)&&("path"!==v||u)&&("mimic"!==v||p)&&("particle"!==v||d)||(v="start"),"mouse"===v&&(w=!0),A.push(v);w&&(x=this.getHere()),A.indexOf("path")>=0&&(C=this.getPathData());let[D,O]=A,E=_t(),T=_t();P[D](E),D==O?T.setFromArray(E):P[O](T),t[0]=E[0],t[1]=T[1],Qt(A)}r===t[0]&&o===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositions=function(){this.dirtyStampHandlePositions=!1;let t=this.currentStampHandlePosition,e=this.currentHandle,i=t[0],s=t[1];if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let i,s,n,r=this.lockTo,o=this.pivot,a=this.path,h=this.mimic;for(s=0;s<2;s++){switch(i=r[s],"pivot"!==i||o||(i="start"),"path"!==i||a||(i="start"),"mimic"!==i||h||(i="start"),n=e[s],i){case"pivot":this.addPivotHandle&&(n+=o.currentHandle[s]);break;case"path":this.addPathHandle&&(n+=a.currentHandle[s]);break;case"mimic":this.useMimicHandle&&(n=h.currentHandle[s],this.addOwnHandleToMimic&&(n+=e[s]))}t[s]=n}}this.cleanStampHandlePositionsAdditionalActions(),i===t[0]&&s===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositionsAdditionalActions=B,t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=xe(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition,h=a[0],c=a[1];if(i.some(t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!K(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&(e.rotateDestination(o,h,c,this),o.isPointInPath(this.pathObject,n,r,this.winding))},this)){let t=this.checkHitReturn(n,r,e);return s&&Ce(e),t}return s&&Ce(e),!1},t.checkHitReturn=function(t,e,i){return{x:t,y:e,artefact:this}},t.pickupArtefact=function(t={}){let{x:e,y:i}=t;return K(e,i)&&(this.isBeingDragged=!0,this.currentDragCache.set(this.currentDragOffset),"start"===this.lockTo[0]?this.currentDragOffset[0]=this.currentStart[0]-e:"pivot"===this.lockTo[0]&&this.pivot?this.currentDragOffset[0]=this.pivot.get("startX")-e:"mimic"===this.lockTo[0]&&this.mimic&&(this.currentDragOffset[0]=this.mimic.get("startX")-e),"start"===this.lockTo[1]?this.currentDragOffset[1]=this.currentStart[1]-i:"pivot"===this.lockTo[1]&&this.pivot?this.currentDragOffset[1]=this.pivot.get("startY")-i:"mimic"===this.lockTo[1]&&this.mimic&&(this.currentDragOffset[1]=this.mimic.get("startY")-i),this.bringToFrontOnDrag&&(this.order+=9999,this.group.batchResort=!0),Q(this.dirtyPathObject)&&(this.dirtyPathObject=!0)),this},t.dropArtefact=function(){return this.start.set(this.currentStartCache).add(this.currentDragOffset),this.dirtyStart=!0,this.currentDragOffset.set(this.currentDragCache),this.bringToFrontOnDrag&&(this.order-=9999,this.order<0&&(this.order=0),this.group.batchResort=!0),Q(this.dirtyPathObject)&&(this.dirtyPathObject=!0),this.isBeingDragged=!1,this},t.updatePositionSubscribers=function(){this.dirtyPositionSubscribers=!1,this.pivoted&&this.pivoted.length&&this.updatePivotSubscribers(),this.mimicked&&this.mimicked.length&&this.updateMimicSubscribers(),this.pathed&&this.pathed.length&&this.updatePathSubscribers()},t.updatePivotSubscribers=B,t.updateMimicSubscribers=B,t.updatePathSubscribers=B,t.updateImageSubscribers=B,t}function he(t={}){let e={delta:null,noDeltaUpdates:!1};t.defs=G(t.defs,e),G(t,e);let i=t.setters;t.deltaSetters;return i.delta=function(t={}){t&&(this.delta=U(this.delta,t))},t.updateByDelta=function(){return"kaliedoscope-clock-background"==this.name&&console.log(this.name,"updateByDelta"),this.setDelta(this.delta),this},t.reverseByDelta=function(){let t={};return Object.entries(this.delta).forEach(([e,i])=>{i=i.substring?-parseFloat(i)+"%":-i,t[e]=i}),this.setDelta(t),this},t.setDeltaValues=function(t={}){let e,i,s=this.delta;return Object.entries(t).forEach(([t,n])=>{if(Q(s[t]))switch(i=n,e=s[t],i){case"reverse":e.toFixed&&(s[t]=-e);break;case"zero":e.toFixed&&(s[t]=0)}}),this},t}function ce(t={}){let e={pivot:"",pivotCorner:"",pivotPin:0,addPivotHandle:!1,addPivotOffset:!0,addPivotRotation:!1};t.defs=G(t.defs,e),G(t,e),t.packetObjects=Z(t.packetObjects,["pivot"]);t.getters;let s=t.setters;t.deltaSetters;return s.pivot=function(t){if(I(t)&&!t)this.pivot=null,"pivot"===this.lockTo[0]&&(this.lockTo[0]="start"),"pivot"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.pivot,s=this.name,r=t.substring?i[t]:t;r||(r=n[t],r&&"Cell"!==r.type&&(r=!1)),r&&r.name&&(e&&e.name!==r.name&&_(e.pivoted,s),Z(r.pivoted,s),this.pivot=r,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},t.pivotCorners=["topLeft","topRight","bottomRight","bottomLeft"],s.pivotCorner=function(t){this.pivotCorners.indexOf(t)>=0&&(this.pivotCorner=t)},s.addPivotHandle=function(t){this.addPivotHandle=t,this.dirtyHandle=!0},s.addPivotOffset=function(t){this.addPivotOffset=t,this.dirtyOffset=!0},s.addPivotRotation=function(t){this.addPivotRotation=t,this.dirtyRotation=!0},t.updatePivotSubscribers=function(){this.pivoted.forEach(t=>{let e=i[t];e||(e=n[t],e&&"Cell"===e.type||(e=!1)),e&&(e.dirtyStart=!0,e.addPivotHandle&&(e.dirtyHandle=!0),e.addPivotOffset&&(e.dirtyOffset=!0),e.addPivotRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))},this)},t}function le(t={}){let e={mimic:"",useMimicDimensions:!1,useMimicScale:!1,useMimicStart:!1,useMimicHandle:!1,useMimicOffset:!1,useMimicRotation:!1,useMimicFlip:!1,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1};t.defs=G(t.defs,e),G(t,e),t.packetObjects=Z(t.packetObjects,["mimic"]);t.getters;let s=t.setters;t.deltaSetters;return s.mimic=function(t){if(I(t)&&!t)this.mimic=null,"mimic"===this.lockTo[0]&&(this.lockTo[0]="start"),"mimic"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.mimic,s=this.name,r=t.substring?i[t]:t;r||(r=n[t],r&&"Cell"!==r.type&&(r=!1)),r&&r.name&&(e&&e.name!==r.name&&removeItem(e.mimicked,s),Z(r.mimicked,s),this.mimic=r,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},s.useMimicDimensions=function(t){this.useMimicDimensions=t,this.dirtyDimensions=!0},s.useMimicScale=function(t){this.useMimicScale=t,this.dirtyScale=!0},s.useMimicStart=function(t){this.useMimicStart=t,this.dirtyStart=!0},s.useMimicHandle=function(t){this.useMimicHandle=t,this.dirtyHandle=!0},s.useMimicOffset=function(t){this.useMimicOffset=t,this.dirtyOffset=!0},s.useMimicRotation=function(t){this.useMimicRotation=t,this.dirtyRotation=!0},s.addOwnDimensionsToMimic=function(t){this.addOwnDimensionsToMimic=t,this.dirtyDimensions=!0},s.addOwnScaleToMimic=function(t){this.addOwnScaleToMimic=t,this.dirtyScale=!0},s.addOwnStartToMimic=function(t){this.addOwnStartToMimic=t,this.dirtyStart=!0},s.addOwnHandleToMimic=function(t){this.addOwnHandleToMimic=t,this.dirtyHandle=!0},s.addOwnOffsetToMimic=function(t){this.addOwnOffsetToMimic=t,this.dirtyOffset=!0},s.addOwnRotationToMimic=function(t){this.addOwnRotationToMimic=t,this.dirtyRotation=!0},t.updateMimicSubscribers=function(){let t=this.dirtyMimicHandle,e=this.dirtyMimicOffset,s=this.dirtyMimicRotation,r=this.dirtyMimicScale,o=this.dirtyMimicDimensions;this.mimicked.forEach(a=>{let h=i[a];h||(h=n[a],h&&"Cell"===h.type||(h=!1)),h&&(h.useMimicStart&&(h.dirtyStart=!0),t&&h.useMimicHandle&&(h.dirtyHandle=!0),e&&h.useMimicOffset&&(h.dirtyOffset=!0),s&&h.useMimicRotation&&(h.dirtyRotation=!0),r&&h.useMimicScale&&(h.dirtyScale=!0),o&&h.useMimicDimensions&&(h.dirtyDimensions=!0))}),this.dirtyMimicHandle=!1,this.dirtyMimicOffset=!1,this.dirtyMimicRotation=!1,this.dirtyMimicScale=!1,this.dirtyMimicDimensions=!1},t}function ue(t={}){let e={path:"",pathPosition:0,addPathHandle:!1,addPathOffset:!0,addPathRotation:!1,constantPathSpeed:!1};t.defs=G(t.defs,e),G(t,e),t.packetObjects=Z(t.packetObjects,["path"]);let s=t.setters,n=t.deltaSetters;return s.path=function(t){if(I(t)&&!t)this.path=null,"path"===this.lockTo[0]&&(this.lockTo[0]="start"),"path"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.path,s=t.substring?i[t]:t,n=this.name;s&&s.name&&s.useAsPath&&(e&&e.name!==s.name&&_(e.pathed,n),Z(s.pathed,n),this.path=s,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},s.pathPosition=function(t){t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.pathPosition=parseFloat(t.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},n.pathPosition=function(t){let e=this.pathPosition+t;e<0&&(e+=1),e>1&&(e%=1),this.pathPosition=parseFloat(e.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},s.addPathHandle=function(t){this.addPathHandle=t,this.dirtyHandle=!0},s.addPathOffset=function(t){this.addPathOffset=t,this.dirtyOffset=!0},s.addPathRotation=function(t){this.addPathRotation=t,this.dirtyRotation=!0},t.getPathData=function(){if(this.currentPathData)return this.currentPathData;let t,e=this.pathPosition,i=this.path;return!!i&&(t=i.getPathPositionData(e,this.constantPathSpeed),this.addPathRotation&&(this.dirtyRotation=!0),this.currentPathData=t,t)},t}k.ImageAsset=ImageAsset;const Anchor=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.build(),this};let de=Anchor.prototype=Object.create(Object.prototype);de.type="Anchor",de.lib="anchor",de.isArtefact=!1,de.isAsset=!1,de=Pt(de);de.defs=G(de.defs,{host:null,description:"",download:"",href:"",hreflang:"",ping:"",referrerpolicy:"",rel:"noreferrer",target:"_blank",anchorType:"",clickAction:null,focusAction:!1,blurAction:!1}),de.packetExclusions=Z(de.packetExclusions,["domElement"]),de.packetObjects=Z(de.packetExclusions,["host"]),de.packetFunctions=Z(de.packetFunctions,["clickAction"]),de.demolish=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.deregister()};let fe=de.setters;fe.host=function(t){let e=t.substring?i[t]:t;e&&e.name&&(this.host=e)},fe.hold=function(t){Y(t)&&(this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.hold=t,this.domElement&&this.hold.appendChild(this.domElement))},fe.download=function(t){this.download=t,this.domElement&&this.update("download")},fe.href=function(t){this.href=t,this.domElement&&this.update("href")},fe.hreflang=function(t){this.hreflang=t,this.domElement&&this.update("hreflang")},fe.ping=function(t){this.ping=t,this.domElement&&this.update("ping")},fe.referrerpolicy=function(t){this.referrerpolicy=t,this.domElement&&this.update("referrerpolicy")},fe.rel=function(t){this.rel=t,this.domElement&&this.update("rel")},fe.target=function(t){this.target=t,this.domElement&&this.update("target")},fe.anchorType=function(t){this.anchorType=t,this.domElement&&this.update("type")},fe.description=function(t){this.description=t,this.domElement&&(this.domElement.textContent=t)},fe.clickAction=function(t){N(t)&&(this.clickAction=t,this.domElement&&this.domElement.setAttribute("onclick",t()))},de.build=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement);let t=document.createElement("a");t.id=this.name,this.download&&t.setAttribute("download",this.download),this.href&&t.setAttribute("href",this.href),this.hreflang&&t.setAttribute("hreflang",this.hreflang),this.ping&&t.setAttribute("ping",this.ping),this.referrerpolicy&&t.setAttribute("referrerpolicy",this.referrerpolicy),this.rel&&t.setAttribute("rel",this.rel),this.target&&t.setAttribute("target",this.target),this.anchorType&&t.setAttribute("type",this.anchorType),this.clickAction&&N(this.clickAction)&&t.setAttribute("onclick",this.clickAction()),this.description&&(t.textContent=this.description),this.focusAction&&t.addEventListener("focus",t=>this.host.onEnter(),!1),this.blurAction&&t.addEventListener("blur",t=>this.host.onLeave(),!1),this.domElement=t,this.hold&&this.hold.appendChild(t)},de.update=function(t){this.domElement&&this.domElement.setAttribute(t,this[t])},de.click=function(){if(this.hasBeenRecentlyClicked)return!1;{let t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});this.hasBeenRecentlyClicked=!0;let e=this;return setTimeout(()=>e.hasBeenRecentlyClicked=!1,200),this.domElement.dispatchEvent(t)}};function pe(t={}){t.defs=G(t.defs,{anchor:null}),t.demolishAnchor=function(){this.anchor&&this.anchor.demolish()};let e=t.getters,i=t.setters;t.deltaSetters;return e.anchorDescription=function(){return this.anchor?this.anchor.get("description"):""},i.anchorDescription=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.description(t)},e.anchorType=function(){return this.anchor?this.anchor.get("type"):""},i.anchorType=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.anchorType(t)},e.anchorTarget=function(){return this.anchor?this.anchor.get("target"):""},i.anchorTarget=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.target(t)},e.anchorRel=function(){return this.anchor?this.anchor.get("rel"):""},i.anchorRel=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.rel(t)},e.anchorReferrerPolicy=function(){return this.anchor?this.anchor.get("referrerpolicy"):""},i.anchorReferrerPolicy=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.referrerpolicy(t)},e.anchorPing=function(){return this.anchor?this.anchor.get("ping"):""},i.anchorPing=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.ping(t)},e.anchorHreflang=function(){return this.anchor?this.anchor.get("hreflang"):""},i.anchorHreflang=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.hreflang(t)},e.anchorHref=function(){return this.anchor?this.anchor.get("href"):""},i.anchorHref=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.href(t)},e.anchorDownload=function(){return this.anchor?this.anchor.get("download"):""},i.anchorDownload=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.download(t)},i.anchorFocusAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.focusAction(t)},i.anchorBlurAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.blurAction(t)},i.anchor=function(t={}){this.anchor?this.anchor.set(t):this.buildAnchor(t)},t.buildAnchor=function(t={}){this.anchor&&this.anchor.demolish(),t.name||(t.name=this.name+"-anchor"),t.description||(t.description=`Anchor link for ${this.name} ${this.type}`),t.host=this,t.hold=this.getAnchorHold(),this.anchor=function(t){return new Anchor(t)}(t)},t.getAnchorHold=function(){let t=this.currentHost;if(t){if("Canvas"===t.type)return t.navigation;if("Cell"===t.type){let e=t.currentHost?t.currentHost:o[t.host];if(e&&"Canvas"===e.type)return e.navigation}}return this.dirtyAnchorHold=!0,vi},t.rebuildAnchor=function(){this.anchor&&this.anchor.build()},t.clickAnchor=function(){this.anchor&&this.anchor.click()},t}function me(t={}){t.defs=G(t.defs,{groups:null,groupBuckets:null,batchResort:!0});let e=t.getters,i=t.setters;return e.groups=function(){return[].concat(this.groups)},i.groups=function(t){this.groups=[],this.addGroups(t)},t.sortGroups=function(t=!1){if(this.batchResort){this.batchResort=!1;let t,e,i=Math.floor,s=this.groups,n=[];s.forEach(s=>{t=u[s],e=t?i(t.order):0,n[e]||(n[e]=[]),n[e].push(t)}),this.groupBuckets=n.reduce((t,e)=>t.concat(e),[])}},t.initializeCascade=function(){this.groups=[],this.groupBuckets=[]},t.addGroups=function(...t){return t.forEach(t=>{t&&t.substring?Z(this.groups,t):u[t]&&Z(this.groups,t.name)},this),this.batchResort=!0,this},t.removeGroups=function(...t){return t.forEach(t=>{t&&t.substring?_(this.groups,t):u[t]&&_(this.groups,t.name)},this),this.batchResort=!0,this},t.cascadeAction=function(t,e){let i;return console.log("cascadeAction"),this.groups.forEach(s=>{i=u[s],i&&i[e](t)},this),this},t.updateArtefacts=function(t){return this.cascadeAction(t,"updateArtefacts"),this},t.setArtefacts=function(t){return this.cascadeAction(t,"setArtefacts"),this},t.addArtefactClasses=function(t){return this.cascadeAction(t,"addArtefactClasses"),this},t.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeArtefactClasses"),this},t.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},t.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},t.getArtefactAt=function(t){if(t=J(t,this.here,!1)){let e,i;for(let s=this.groups.length-1;s>=0;s--)if(e=u[this.groups[s]],e&&(i=e.getArtefactAt(t),i))return i}return!1},t.getAllArtefactsAt=function(t){if(t=J(t,this.here,!1)){let e,i,s=[];for(let n=this.groups.length-1;n>=0;n--)e=u[this.groups[n]],e&&(i=e.getAllArtefactsAt(t),i&&(s=s.concat(i)));return s}return[]},t}function ge(t={}){t.defs=G(t.defs,{repeat:"repeat",patternMatrix:null});let e=t.setters;return t.repeatValues=["repeat","repeat-x","repeat-y","no-repeat"],e.repeat=function(t){this.repeatValues.indexOf(t)>=0?this.repeat=t:this.repeat=this.defs.repeat},t.matrixNumberPosCheck=["a","b","c","d","e","f"],t.updateMatrixNumber=function(t,e){this.patternMatrix||(this.patternMatrix=new DOMMatrix),t=t.substring?parseFloat(t):t;let i=this.matrixNumberPosCheck.indexOf(e);W(t)&&i>=0&&(this.patternMatrix[e]=t)},e.matrixA=function(t){this.updateMatrixNumber(t,"a")},e.matrixB=function(t){this.updateMatrixNumber(t,"b")},e.matrixC=function(t){this.updateMatrixNumber(t,"c")},e.matrixD=function(t){this.updateMatrixNumber(t,"d")},e.matrixE=function(t){this.updateMatrixNumber(t,"e")},e.matrixF=function(t){this.updateMatrixNumber(t,"f")},e.patternMatrix=function(t){if(Array.isArray(t)){let e=this.updateMatrixNumber;e(t[0],"a"),e(t[1],"b"),e(t[2],"c"),e(t[3],"d"),e(t[4],"e"),e(t[5],"f")}},t.buildStyle=function(t={}){if(t){t.substring&&(t=a[t]);let e=this.source,i=this.sourceLoaded,s=this.repeat,n=t.engine;if("Cell"===this.type&&(e=this.element,i=!0),n&&i){let t=n.createPattern(e,s);return t.setTransform(this.patternMatrix),t}}return"rgba(0,0,0,0)"},t}function ye(t={}){return t.defs=G(t.defs,{filters:null,isStencil:!1}),t.setters.filters=function(t){Array.isArray(this.filters)||(this.filters=[]),t&&(Array.isArray(t)?(this.filters=t,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0):t.substring&&(Z(this.filters,t),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0))},t.cleanFilters=function(){this.dirtyFilters=!1,this.filters||(this.filters=[]);let t,e,i=this.filters,s=Math.floor,n=[];i.forEach(i=>{t=l[i],e=s(t.order)||0,n[e]||(n[e]=[]),n[e].push(t)}),this.currentFilters=n.reduce((t,e)=>t.concat(e),[])},t.addFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach(t=>{this.name,t&&(t.substring?Z(this.filters,t):"Filter"===t.type&&Z(this.filters,t.name))},this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this},t.removeFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach(t=>{t&&(t.substring?_(this.filters,t):"Filter"===t.type&&_(this.filters,t.name))},this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this},t.clearFilters=function(){return Array.isArray(this.filters)||(this.filters=[]),this.filters.length=0,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this},t}k.Anchor=Anchor;const Cell=function(t={}){if(this.makeName(t.name),t.isPool||this.register(),this.initializePositions(),this.initializeCascade(),!X(t.element)){let e=document.createElement("canvas");e.id=this.name,e.width=300,e.height=150,t.element=e}return this.installElement(t.element),t.isPool?this.set(this.poolDefs):this.set(this.defs),this.set(t),this.state.setStateFromEngine(this.engine),t.isPool||Ee({name:this.name,host:this.name}),this.subscribers=[],this.sourceNaturalDimensions=Kt(),this.sourceLoaded=!0,this.here={},this};let be=Cell.prototype=Object.create(Object.prototype);be.type="Cell",be.lib="cell",be.isArtefact=!1,be.isAsset=!0,be=Pt(be),be=Jt(be),be=ae(be),be=he(be),be=ce(be),be=le(be),be=ue(be),be=pe(be),be=me(be),be=ge(be),be=ye(be);be.defs=G(be.defs,{cleared:!0,compiled:!0,shown:!0,compileOrder:0,showOrder:0,backgroundColor:"",clearAlpha:0,alpha:1,composite:"source-over",scale:1,flipReverse:!1,flipUpend:!1,filter:"none",isBase:!1,controller:null}),delete be.defs.source,delete be.defs.sourceLoaded,be.stringifyFunction=B,be.processPacketOut=B,be.finalizePacketOut=B,be.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},be.clone=$,be.factoryKill=function(){let t=this.name;Object.entries(o).forEach(([e,i])=>{i.cells.indexOf(t)>=0&&i.removeCell(t),i.base&&i.base.name===t&&i.set({visibility:!1})}),Object.entries(i).forEach(([e,i])=>{if(i.name!==t){let e=i.state;if(e){let i=e.fillStyle,s=e.strokeStyle;i.name&&i.name===t&&(e.fillStyle=e.defs.fillStyle),s.name&&s.name===t&&(e.strokeStyle=e.defs.strokeStyle)}}}),u[t]&&u[t].kill()};let Se=be.getters,Pe=be.setters,ke=be.deltaSetters;be.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},Se.width=function(){return this.currentDimensions[0]||this.element.getAttribute("width")},Pe.width=function(t){this.dimensions[0]=t,this.dirtyDimensions=!0},Se.height=function(){return this.currentDimensions[1]||this.element.getAttribute("height")},Pe.height=function(t){this.dimensions[1]=t,this.dirtyDimensions=!0},Pe.source=function(){},Pe.engine=function(t){},Pe.state=function(t){},Pe.element=function(t){X(t)&&this.installElement(t)},Pe.cleared=function(t){this.cleared=t,this.updateControllerCells()},Pe.compiled=function(t){this.compiled=t,this.updateControllerCells()},Pe.shown=function(t){this.shown=t,this.updateControllerCells()},Pe.compileOrder=function(t){this.compileOrder=t,this.updateControllerCells()},Pe.showOrder=function(t){this.showOrder=t,this.updateControllerCells()},Pe.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[0]=t},Pe.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[1]=t},Pe.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[0]=t},Pe.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[1]=t},ke.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[0]=addStrings(e[0],t)},ke.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[1]=addStrings(e[1],t)},ke.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[0]=addStrings(e[0],t)},ke.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[1]=addStrings(e[1],t)},Pe.clearAlpha=function(t){t.toFixed&&(t>1?t=1:t<0&&(t=0),this.clearAlpha=t)},ke.clearAlpha=function(t){t.toFixed&&((t+=this.clearAlpha)>1?t=1:t<0&&(t=0),this.clearAlpha=t)},be.checkSource=function(t,e){this.currentDimensions[0]===t&&this.currentDimensions[1]===e||this.notifySubscribers()},be.getData=function(t,e){return this.checkSource(this.sourceNaturalDimensions[0],this.sourceNaturalDimensions[1]),this.buildStyle(e)},be.updateArtefacts=function(t={}){this.groupBuckets.forEach(e=>{e.artefactBuckets.forEach(e=>{t.dirtyScale&&(e.dirtyScale=!0),t.dirtyDimensions&&(e.dirtyDimensions=!0),t.dirtyLock&&(e.dirtyLock=!0),t.dirtyStart&&(e.dirtyStart=!0),t.dirtyOffset&&(e.dirtyOffset=!0),t.dirtyHandle&&(e.dirtyHandle=!0),t.dirtyRotation&&(e.dirtyRotation=!0),t.dirtyPathObject&&(e.dirtyPathObject=!0)})})},be.cleanDimensionsAdditionalActions=function(){let t=this.element;if(t){let e=this.controller,i=this.currentDimensions,s=this.isBase;if(s&&e&&e.isComponent){let t=this.controller.currentDimensions,e=this.dimensions;e[0]=i[0]=t[0],e[1]=i[1]=t[1]}let[n,r]=i;t.width=n,t.height=r,this.setEngineFromState(this.engine),s&&e&&e.updateBaseHere(),this.groupBuckets&&this.updateArtefacts({dirtyDimensions:!0})}},be.notifySubscriber=function(t){t.sourceNaturalDimensions||(t.sourceNaturalDimensions=[]),t.sourceNaturalWidth=this.currentDimensions[0],t.sourceNaturalHeight=this.currentDimensions[1],t.sourceLoaded=!0,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0},be.subscribeAction=function(t={}){this.subscribers.push(t),t.asset=this,t.source=this.element,this.notifySubscriber(t)},be.installElement=function(t){return this.element=t,this.engine=this.element.getContext("2d"),this.state=Gt({engine:this.engine}),this},be.updateControllerCells=function(){this.controller&&(this.controller.dirtyCells=!0)},be.setEngineFromState=function(t){let e=this.state;return e.allKeys.forEach(i=>{"lineDash"===i?(t.lineDash=e.lineDash,t.setLineDash(t.lineDash)):t[i]=e[i]},e),t.textAlign=e.textAlign,t.textBaseline=e.textBaseline,this},be.setToDefaults=function(){let t=this.state.defs,e=this.state,i=this.engine,s=Array.isArray;return Object.entries(t).forEach(([t,n])=>{"lineDash"===t?(s(i.lineDash)?i.lineDash.length=0:i.lineDash=[],s(e.lineDash)?e.lineDash.length=0:e.lineDash=[]):(i[t]=n,e[t]=n)}),i.textAlign=e.textAlign="left",i.textBaseline=e.textBaseline="top",this},be.stylesArray=["Gradient","RadialGradient","Pattern"],be.setEngine=function(t){let e,i,s=this.state,n=t.state.getChanges(t,s),r=this.setEngineActions,o=this.stylesArray;if(Object.keys(n).length)for(i in e=this.engine,n)r[i](n[i],e,o,t,this),s[i]=n[i];return t},be.setEngineActions={fillStyle:function(t,e,i,s,n){if(t.substring){let i=!1;S.indexOf(t)>=0?i=b[t]:h.indexOf(t)>=0&&(i=a[t]),i?(s.state.fillStyle=i,e.fillStyle=i.getData(s,n)):e.fillStyle=t}else e.fillStyle=t.getData(s,n)},filter:function(t,e){e.filter=t},font:function(t,e){e.font=t},globalAlpha:function(t,e){e.globalAlpha=t},globalCompositeOperation:function(t,e){e.globalCompositeOperation=t},lineCap:function(t,e){e.lineCap=t},lineDash:function(t,e){e.lineDash=t,e.setLineDash&&e.setLineDash(t)},lineDashOffset:function(t,e){e.lineDashOffset=t},lineJoin:function(t,e){e.lineJoin=t},lineWidth:function(t,e){e.lineWidth=t},miterLimit:function(t,e){e.miterLimit=t},shadowBlur:function(t,e){e.shadowBlur=t},shadowColor:function(t,e){e.shadowColor=t},shadowOffsetX:function(t,e){e.shadowOffsetX=t},shadowOffsetY:function(t,e){e.shadowOffsetY=t},strokeStyle:function(t,e,i,s,n){if(t.substring){let i=!1;S.indexOf(t)>=0?i=b[t]:h.indexOf(t)>=0&&(i=a[t]),i?(s.state.strokeStyle=i,e.strokeStyle=i.getData(s,n)):e.strokeStyle=t}else e.strokeStyle=t.getData(s,n)}},be.clearShadow=function(){return this.engine.shadowOffsetX=0,this.engine.shadowOffsetY=0,this.engine.shadowBlur=0,this.state.shadowOffsetX=0,this.state.shadowOffsetY=0,this.state.shadowBlur=0,this},be.restoreShadow=function(t){let e=t.state;return this.engine.shadowOffsetX=e.shadowOffsetX,this.engine.shadowOffsetY=e.shadowOffsetY,this.engine.shadowBlur=e.shadowBlur,this.state.shadowOffsetX=e.shadowOffsetX,this.state.shadowOffsetY=e.shadowOffsetY,this.state.shadowBlur=e.shadowBlur,this},be.setToClearShape=function(){return this.engine.fillStyle="rgba(0,0,0,0)",this.engine.strokeStyle="rgba(0,0,0,0)",this.engine.shadowColor="rgba(0,0,0,0)",this.state.fillStyle="rgba(0,0,0,0)",this.state.strokeStyle="rgba(0,0,0,0)",this.state.shadowColor="rgba(0,0,0,0)",this},be.saveEngine=function(){return this.engine.save(),this},be.restoreEngine=function(){return this.engine.restore(),this},be.clear=function(){let t=this;return new Promise(e=>{const{element:i,engine:s,backgroundColor:n,clearAlpha:r,currentDimensions:o}=t,[a,h]=o;if(t.prepareStamp(),s.setTransform(1,0,0,1,0,0),n){let t=s.fillStyle,e=s.globalCompositeOperation,i=s.globalAlpha;s.fillStyle=n,s.globalCompositeOperation="source-over",s.globalAlpha=1,s.fillRect(0,0,a,h),s.fillStyle=t,s.globalCompositeOperation=e,s.globalAlpha=i}else if(r){let t=xe(),{engine:e,element:i}=t;i.width=a,i.height=h;let n=s.getImageData(0,0,a,h);e.putImageData(n,0,0);let o=s.globalAlpha;s.clearRect(0,0,a,h),s.globalAlpha=r,s.drawImage(i,0,0),s.globalAlpha=o}else s.clearRect(0,0,a,h);e(!0)})},be.compile=function(){this.stashOutput;this.sortGroups(),this.prepareStamp(),!this.dirtyFilters&&this.currentFilters||this.cleanFilters();let t=this,e=i=>new Promise((s,n)=>{let r=t.groupBuckets[i];r&&r.stamp?r.stamp().then(t=>{e(i+1).then(t=>{s(!0)}).catch(t=>n(t))}).catch(t=>n(t)):!t.noFilters&&t.filters&&t.filters.length?t.applyFilters().then(e=>t.stashOutputAction()).then(t=>s(!0)).catch(t=>n(t)):t.stashOutputAction().then(t=>s(!0)).catch(t=>n(t))});return e(0)},be.show=function(){var t=this;return new Promise(e=>{let i=t.getHost(),s=!(!i||!i.engine)&&i.engine;if(s){let n=Math.floor,r=i.currentDimensions,o=n(r[0]),a=n(r[1]);o&&a||e(!1);let h,c=t.currentScale,l=t.currentDimensions,u=n(l[0]),d=n(l[1]),f=t.composite,p=t.alpha,m=t.controller,g=t.element;if(s.save(),s.setTransform(1,0,0,1,0,0),s.filter=t.filter,t.isBase){let e,i;switch(t.basePaste||(t.basePaste=[]),h=t.basePaste,t.prepareStamp(),s.globalCompositeOperation="source-over",s.globalAlpha=1,s.clearRect(0,0,o,a),s.globalCompositeOperation=f,s.globalAlpha=p,m?m.fit:"none"){case"contain":e=o/(u||1),i=a/(d||1),e>i?(h[0]=n((o-u*i)/2),h[1]=0,h[2]=n(u*i),h[3]=n(d*i)):(h[0]=0,h[1]=n((a-d*e)/2),h[2]=n(u*e),h[3]=n(d*e));break;case"cover":e=o/(u||1),i=a/(d||1),e0){t.paste||(t.paste=[]),h=t.paste,t.noDeltaUpdates||t.setDelta(t.delta),t.prepareStamp(),s.globalCompositeOperation=f,s.globalAlpha=p;let e=t.currentStampHandlePosition,i=t.currentStampPosition;h[0]=n(-e[0]*c),h[1]=n(-e[1]*c),h[2]=n(u*c),h[3]=n(d*c),t.rotateDestination(s,i[0],i[1])}s.drawImage(g,0,0,u,d,...h),s.restore(),e(!0)}else e(!1)})},be.applyFilters=function(){let t=this;return new Promise((function(e){let i,s,n=t.engine;i=n.getImageData(0,0,t.currentDimensions[0],t.currentDimensions[1]),s=Xt(),Wt(s,{image:i,filters:t.currentFilters}).then(t=>{Yt(s),t?(n.putImageData(t,0,0),e(!0)):e(!1)}).catch(t=>{Yt(s),e(!1)})}))},be.stashOutputAction=function(){let t=this;return this.stashOutput?(this.stashOutput=!1,new Promise((e,i)=>{let[s,n]=t.currentDimensions,r=t.stashCoordinates,o=t.stashDimensions,a=r?r[0]:0,h=r?r[1]:0,c=o?o[0]:s,l=o?o[1]:n;if((c.substring||l.substring||a.substring||h.substring||a||h||c!==s||l!==n)&&(c.substring&&(c=parseFloat(c)/100*s),(isNaN(c)||c<=0)&&(c=1),c>s&&(c=s),l.substring&&(l=parseFloat(l)/100*n),(isNaN(l)||l<=0)&&(l=1),l>n&&(l=n),a.substring&&(a=parseFloat(a)/100*s),(isNaN(a)||a<0)&&(a=0),a+c>s&&(a=s-c),h.substring&&(h=parseFloat(h)/100*n),(isNaN(h)||h<0)&&(h=0),h+l>n&&(h=n-l)),t.engine.save(),t.engine.setTransform(1,0,0,1,0,0),t.stashedImageData=t.engine.getImageData(a,h,c,l),t.engine.restore(),t.stashOutputAsAsset){let e,i;if(t.stashOutputAsAsset=!1,i=xe(),e=i.element,e.width=c,e.height=l,i.engine.putImageData(t.stashedImageData,0,0),t.stashedImage)t.stashedImage.src=e.toDataURL();else{let i=t.stashedImage=document.createElement("img");i.id=t.name+"-image",i.onload=function(){ki.appendChild(i),re("#"+i.id)},i.src=e.toDataURL()}Ce(i)}e(!0)})):Promise.resolve(!1)},be.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=n[this.host]||i[this.host];return t&&(this.currentHost=t),!!t&&this.currentHost}return!1},be.updateBaseHere=function(t,e){if(this.isBase){this.here||(this.here={});let i=this.here,s=this.currentDimensions,n=t.active,r=t.localListener?t.originalWidth:t.w,o=t.localListener?t.originalHeight:t.h;if(s[0]!==r||s[1]!==o){this.basePaste||(this.basePaste=[]);let a,h,c=this.basePaste[0],l=s[0],u=s[1],d=r,f=o,p=t.x,m=t.y,g=l/d||1,y=u/f||1,b=Math.round;switch(i.w=l,i.h=u,e){case"contain":case"cover":c?(a=(d-l/y)/2,i.x=b((p-a)*y),i.y=b(m*y)):(h=(f-u/g)/2,i.x=b(p*g),i.y=b((m-h)*g));break;case"fill":i.x=b(p*g),i.y=b(m*y);break;case"none":default:a=(d-l)/2,h=(f-u)/2,i.x=b(p-a),i.y=b(m-h)}(i.x<0||i.x>l)&&(n=!1),(i.y<0||i.y>u)&&(n=!1),i.active=n}else i.x=t.x,i.y=t.y,i.w=r,i.h=o,i.active=n;t.baseActive=n}},be.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&(this.cleanDimensions(),this.dirtyAssetSubscribers=!0),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyAssetSubscribers&&(this.dirtyAssetSubscribers=!1,this.notifySubscribers())},be.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentDimensions,n=-e[0]*i,r=-e[1]*i,o=s[0]*i,a=s[1]*i;t.rect(n,r,o,a)}},be.updateHere=function(){this.here||(this.here={});let t=this.here,[e,i]=this.currentDimensions;t.w=e,t.h=i,t.x=-1e4,t.y=-1e4,t.active=!1;let s=this.currentHost;if(s){let e=s.here;if(e&&e.active){let{x:i,y:s,w:n,h:r}=e;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let o=xe(),a=o.engine,[h,c]=this.currentStampPosition;o.rotateDestination(a,h,c,this);let l=a.isPointInPath(this.pathObject,i,s);if(Ce(o),t.active=l,l){let[e,n]=this.currentStampHandlePosition,{flipUpend:r,flipReverse:o,roll:a,scale:l}=this;if(l){let u=(i-h)/l,d=(s-c)/l;if(o&&(u=-u),r&&(d=-d),a){(o&&!r||!o&&r)&&(a=-a);let t=_t(u,d);t.rotate(-a),[u,d]=t,Qt(t)}u+=e,d+=n,t.x=u,t.y=d}}}}},be.getEntityHits=function(){let t=[],e=[],i=[];return this.groupBuckets&&this.groupBuckets.forEach(t=>{t.visibility&&e.push(t.getAllArtefactsAt(this.here))},this),e.length&&(e=e.reduce((t,e)=>t.concat(e),[]),e.forEach(e=>{let s=e.artefact;s.visibility&&i.indexOf(s.name)<0&&(i.push(s.name),t.push(s))})),t},be.rotateDestination=function(t,e,i,s){let n,r,o=s||this,a=o.mimic,h=o.pivot,c=o.currentRotation;if(a&&a.name&&o.useMimicFlip?(n=a.flipReverse?-1:1,r=a.flipUpend?-1:1):(n=o.flipReverse?-1:1,r=o.flipUpend?-1:1),a&&a.name&&o.useMimicRotation?c=a.currentRotation:h&&h.name&&o.addPivotRotation&&(c=h.currentRotation),c){c*=v;let s=Math.cos(c),o=Math.sin(c);t.setTransform(s*n,o*n,-o*r,s*r,e,i)}else t.setTransform(n,0,0,r,e,i);return this};const ve=[];be.poolDefs={element:null,engine:null,state:null,width:300,height:100,alpha:1,composite:"source-over"};const xe=function(){return ve.length||ve.push(Ae({name:"pool_"+z(),isPool:!0})),ve.shift()},Ce=function(t){t&&"Cell"===t.type&&(t.engine.setTransform(1,0,0,1,0,0),ve.push(t.setToDefaults()))},Ae=function(t){return new Cell(t)};k.Cell=Cell;const Group=function(t={}){return this.makeName(t.name),this.register(),this.artefacts=[],this.artefactBuckets=[],this.set(this.defs),this.set(t),this};let we=Group.prototype=Object.create(Object.prototype);we.type="Group",we.lib="group",we.isArtefact=!1,we.isAsset=!1,we=Pt(we),we=ye(we);we.defs=G(we.defs,{artefacts:null,order:0,visibility:!0,regionRadius:0}),we.packetExclusions=Z(we.packetExclusions,["artefactBuckets","batchResort"]),we.postCloneAction=function(t,e){let s;return s=e.host?i[e.host]:this.currentHost?this.currentHost:!!this.host&&i[this.host],s&&(s.addGroups(t.name),t.host||(t.host=s.name)),t},we.kill=function(t=!1){let e=this.name;return Object.entries(i).forEach(([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(_(i.groups,e),i.batchResort=!0)}),Object.entries(a).forEach(([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(_(i.groups,e),i.batchResort=!0)}),t&&this.artefactBuckets.forEach(t=>t.kill()),this.deregister()},we.killArtefacts=function(){return this.artefactBuckets.forEach(t=>t.kill()),this};let De=we.getters,Oe=we.setters;De.artefacts=function(){return[].concat(this.artefacts)},Oe.artefacts=function(t){this.artefacts=[],this.addArtefacts(t)},Oe.host=function(t){let e=this.getHost(t);e&&e.addGroups&&(this.host=t,e.addGroups(this.name),this.dirtyHost=!0)},Oe.order=function(t){let e=this.getHost(this.host);this.order=t,e&&e.set({batchResort:!0})},we.getHost=function(t){let e=this.currentHost;return!e||e.substring?i[t]||a[t]||i[e]||a[e]||null:e},we.forceStamp=function(){var t=this;return new Promise(e=>{let i=t.visibility;t.visibility=!0,t.stamp().then(s=>{t.visibility=i,e(s)}).catch(s=>{t.visibility=i,e(s)})})},we.stamp=function(){if(this.dirtyHost||!this.currentHost){this.dirtyHost=!1;let t=this.getHost(this.host);t?this.currentHost=t:this.dirtyHost=!0}let t=this;return new Promise((e,i)=>{if(t.visibility){let s=t.currentHost;if(s){t.sortArtefacts();let n=!!(t.stashOutput||!t.noFilters&&t.filters&&t.filters.length)&&xe();if(n&&n.element){let t=s.currentDimensions;t&&(n.element.width=t[0],n.element.height=t[1]),n.engine.save()}else s.engine&&s.engine.save();t.prepareStamp(n),t.stampAction(n).then(i=>{n?(n.engine.restore(),Ce(n)):s.engine&&(s.engine.restore(),s.setEngineFromState(s.engine)),e(t.name)}).catch(t=>{n?(n.engine.restore(),Ce(n)):s.engine&&(s.engine.restore(),s.setEngineFromState(s.engine)),i(t)})}else e(!1)}else e(!1)})},we.sortArtefacts=function(){if(this.batchResort){this.batchResort=!1;let t=Math.floor,e=[];this.artefacts.forEach(s=>{let n=i[s],r=t(n.order)||0;e[r]||(e[r]=[]),e[r].push(n)}),this.artefactBuckets=e.reduce((t,e)=>t.concat(e),[])}},we.prepareStamp=function(t){let e=this.currentHost;t&&(e=t),this.artefactBuckets.forEach(i=>{"entity"===i.lib&&(i.currentHost&&i.currentHost.name===e.name||(i.currentHost=e,t||(i.dirtyHost=!0))),i.noDeltaUpdates||i.updateByDelta(),i.prepareStamp()})},we.stampAction=function(t){!this.currentHost||this.currentHost.stashOutput;!this.dirtyFilters&&this.currentFilters||this.cleanFilters();let e=this,i=s=>new Promise((n,r)=>{let o=e.artefactBuckets[s];if(o&&o.stamp)o.stamp().then(()=>{i(s+1).then(t=>n(!0)).catch(t=>r(t))}).catch(t=>r(t));else if(t)if(!e.noFilters&&e.filters&&e.filters.length)e.applyFilters(t).then(t=>e.stashAction(t)).then(t=>n(!0)).catch(t=>r(t));else if(e.stashOutput){let i=t.element,s=t.engine,o=!(!e.currentHost||!e.currentHost.engine)&&e.currentHost.engine;if(o){o.save(),o.globalCompositeOperation="source-over",o.globalAlpha=1,o.setTransform(1,0,0,1,0,0),o.drawImage(i,0,0),o.restore();let t=s.getImageData(0,0,i.width,i.height);e.stashAction(t).then(t=>n(!0)).catch(t=>r(t))}else r("Could not find real engine")}else n(!0);else n(!0)});return i(0)},we.applyFilters=function(t){let e=this;return new Promise((i,s)=>{let n=e.currentHost,r=t;n&&r||s("Group.applyFilters - no host");let o=function(){Yt(d),h.save(),h.setTransform(1,0,0,1,0,0),h.drawImage(c,0,0),h.restore()},a=n.element,h=n.engine,c=r.element,l=r.engine;e.isStencil&&(l.save(),l.globalCompositeOperation="source-in",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.drawImage(a,0,0),l.restore()),l.setTransform(1,0,0,1,0,0);let u=l.getImageData(0,0,c.width,c.height),d=Xt();Wt(d,{image:u,filters:e.currentFilters}).then(t=>{if(!t)throw new Error("image issue");l.globalCompositeOperation="source-over",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.putImageData(t,0,0),o(),i(t)}).catch(t=>{o(),s(t)})})},we.stashAction=function(t){if(!t)return Promise.reject("No image data supplied to stashAction");if(this.stashOutput){this.stashOutput=!1;let e=this;return new Promise((i,s)=>{let[n,r,o,a]=e.getCellCoverage(t),h=xe(),c=h.engine,l=h.element;if(l.width=o,l.height=a,c.putImageData(t,-n,-r),e.stashedImageData=c.getImageData(0,0,o,a),e.stashOutputAsAsset)if(e.stashOutputAsAsset=!1,e.stashedImage)e.stashedImage.src=l.toDataURL();else{let t=e.stashedImage=document.createElement("img");t.id=e.name+"-groupimage",t.onload=function(){ki.appendChild(t),re("#"+t.id)},t.src=l.toDataURL()}Ce(h),i(!0)})}return Promise.resolve(!1)},we.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,h=s,c=n,l=3;for(i=0;ie&&(h=e),oi&&(c=i),a{t&&(t.substring?Z(this.artefacts,t):t.name&&Z(this.artefacts,t.name))},this),this.batchResort=!0,this},we.removeArtefacts=function(...t){return t.forEach(t=>{t&&(t.substring?_(this.artefacts,t):t.name&&_(this.artefacts,t.name))},this),this.batchResort=!0,this},we.moveArtefactsIntoGroup=function(...t){let e,s;return t.forEach(t=>{t&&(s=t.substring?i[t]:t,s&&s.isArtefact&&(e=s.group?s.group:!!s.host&&u[s.host]),e&&(e.removeArtefacts(t),e.batchResort=!0),Z(this.artefacts,t))},this),this.batchResort=!0,this},we.clearArtefacts=function(){return this.artefacts.length=0,this.artefactBuckets.length=0,this.batchResort=!0,this},we.updateArtefacts=function(t){return this.cascadeAction(t,"setDelta"),this},we.setArtefacts=function(t){return this.cascadeAction(t,"set"),this},we.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},we.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},we.addArtefactClasses=function(t){return this.cascadeAction(t,"addClasses"),this},we.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeClasses"),this},we.cascadeAction=function(t,e){return this.artefacts.forEach(s=>{let n=i[s];n&&n[e]&&n[e](t)}),this},we.setDeltaValues=function(t={}){return this.artefactBuckets.forEach(e=>e.setDeltaValues(t)),this},we.addFiltersToEntitys=function(...t){return this.artefacts.forEach(e=>{let i=c[e];i&&i.addFilters&&i.addFilters(t)}),this},we.removeFiltersFromEntitys=function(...t){return this.artefacts.forEach(e=>{let i=c[e];i&&i.removeFilters&&i.removeFilters(t)}),this},we.clearFiltersFromEntitys=function(){return this.artefacts.forEach(t=>{let e=c[t];e&&e.clearFilters&&e.clearFilters()}),this},we.getArtefactAt=function(t){let e=xe(),i=this.artefactBuckets;this.sortArtefacts();for(let s=i.length-1;s>=0;s--){let n=i[s];if(n){let i=n.checkHit(t,e);if(i)return Ce(e),i}}return Ce(e),!1},we.getAllArtefactsAt=function(t){let e=xe(),i=this.artefactBuckets,s=[],n=[];this.sortArtefacts();for(let r=i.length-1;r>=0;r--){let o=i[r];if(o){let i=o.checkHit(t,e);if(i&&i.artefact){let t=i.artefact;s.indexOf(t.name)<0&&(s.push(t.name),n.push(i))}}}return Ce(e),n},we.getArtefactCollisions=function(t){if(!t||!t.isArtefact||!this.artefactBuckets.length)return[];if(t.substring&&(t=i[t]),!t.collides)return[];let e,s,n,r=this.artefactBuckets,o=[],[a,h]=t.cleanCollisionData();for(s=0,n=r.length;sc&&(o[s]=!1)}let g=xe();for(s=0,n=o.length;s!!t)};const Ee=function(t){return new Group(t)};k.Group=Group;const Vector=function(t,e,i){return this.x=0,this.y=0,this.z=0,Q(t)&&this.set(t,e,i),this};let Te=Vector.prototype=Object.create(Object.prototype);Te.type="Vector",Te.getXYCoordinate=function(){return[this.x,this.y]},Te.getXYZCoordinate=function(){return[this.x,this.y,this.z]},Te.setX=function(t){if(!Q(t))throw new Error(`${this.name} Vector error - setX() arguments error: ${t}`);return this.x=t,this},Te.setY=function(t){if(!Q(t))throw new Error(`${this.name} Vector error - setY() arguments error: ${t}`);return this.y=t,this},Te.setZ=function(t){if(!Q(t))throw new Error(`${this.name} Vector error - setZ() arguments error: ${t}`);return this.z=t,this},Te.setXY=function(t,e){if(!K(t,e))throw new Error(`${this.name} Vector error - setXY() arguments error: ${t}, ${e}`);return this.x=t,this.y=e,this},Te.set=function(t,e,i){return V(t)?this.setFromVector(t):Array.isArray(t)?this.setFromArray(t):K(t,e)?this.setFromArray([t,e,i]):this},Te.setFromArray=function(t){if(!Array.isArray(t))throw new Error(`${this.name} Vector error - setFromArray() arguments error: ${t}`);let[e,i,s]=t;return W(e)&&(this.x=e),W(i)&&(this.y=i),W(s)&&(this.z=s),this},Te.setFromVector=function(t){if(!V(t))throw new Error(`${this.name} Vector error - setFromVector() arguments error: ${JSON.stringify(t)}`);let{x:e,y:i,z:s}=t;return W(e)&&(this.x=e),W(i)&&(this.y=i),W(s)&&(this.z=s),this},Te.zero=function(){return this.x=0,this.y=0,this.z=0,this},Te.vectorAdd=function(t={}){if(Array.isArray(t))return this.vectorAddArray(t);let{x:e,y:i,z:s}=t;return W(e)&&(this.x+=e),W(i)&&(this.y+=i),W(s)&&(this.z+=s),this},Te.vectorAddArray=function(t=[]){let[e,i,s]=t;return W(e)&&(this.x+=e),W(i)&&(this.y+=i),W(s)&&(this.z+=s),this},Te.vectorSubtract=function(t={}){if(Array.isArray(t))return this.vectorSubtractArray(t);let{x:e,y:i,z:s}=t;return W(e)&&(this.x-=e),W(i)&&(this.y-=i),W(s)&&(this.z-=s),this},Te.vectorSubtractArray=function(t){let[e,i,s]=t;return W(e)&&(this.x-=e),W(i)&&(this.y-=i),W(s)&&(this.z-=s),this},Te.scalarMultiply=function(t){if(!W(t))throw new Error(`${this.name} Vector error - scalarMultiply() argument not a number: ${t}`);return this.x*=t,this.y*=t,this.z*=t,this},Te.vectorMultiply=function(t={}){if(Array.isArray(t))return this.vectorMultiplyArray(t);let{x:e,y:i,z:s}=t;return W(e)&&(this.x*=e),W(i)&&(this.y*=i),W(s)&&(this.z*=s),this},Te.vectorMultiplyArray=function(t){let[e,i,s]=t;return W(e)&&(this.x*=e),W(i)&&(this.y*=i),W(s)&&(this.z*=s),this},Te.scalarDivide=function(t){if(!W(t))throw new Error(`${this.name} Vector error - scalarDivide() argument not a number: ${t}`);if(!t)throw new Error(`${this.name} Vector error - scalarDivide() division by zero: ${t}`);return this.x/=t,this.y/=t,this.z/=t,this},Te.getMagnitude=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},Te.rotate=function(t){if(!W(t))throw new Error(`${this.name} Vector error - rotate() argument not a number: ${t}`);let e=Math.atan2(this.y,this.x);e+=.01745329251*t;let i=this.getMagnitude();return this.x=i*Math.cos(e),this.y=i*Math.sin(e),this},Te.reverse=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},Te.normalize=function(){let t=this.getMagnitude();return t>0&&(this.x/=t,this.y/=t,this.z/=t),this};const Re=[],Fe=function(t,e,i){Re.length||Re.push(new Vector);let s=Re.shift();return s.set(t,e,i),s},He=function(t){t&&"Vector"===t.type&&Re.push(t.zero())},Le=function(t,e,i){return new Vector(t,e,i)};k.Vector=Vector;const Quaternion=function(t={}){return this.name=t.name||"generic",this.n=t.n||1,this.v=Le(),this.set(t),this};let je=Quaternion.prototype=Object.create(Object.prototype);je.type="Quaternion",je.set=function(t={}){if(q(t))return this.setFromQuaternion(t);if(t&&t.type&&"Vector"===t.type)return this.setFromVector(t);if(tt(t.pitch,t.yaw,t.roll))return this.setFromEuler(t);let e,i,s,n,r,o=this.v;return r=!(!Q(t.vector)&&!Q(t.v))&&(t.vector||t.v),n=!(!Q(t.scalar)&&!Q(t.n))&&(t.scalar||t.n||0),e=r?r.x||0:t.x||!1,i=r?r.y||0:t.y||!1,s=r?r.z||0:t.z||!1,this.n=W(n)?n:this.n,o.x=W(e)?e:o.x,o.y=W(i)?i:o.y,o.z=W(s)?s:o.z,this},je.setFromQuaternion=function(t){if(!q(t))throw new Error(`${this.name} Quaternion error - setFromQuaternion() bad argument: ${t}`);let e=this.v,i=t.v;return this.n=t.n,e.x=i.x,e.y=i.y,e.z=i.z,this},je.setFromEuler=function(t={}){let e,i,s,n,r,o,a,h,c,l=Math.cos,u=Math.sin,d=this.v;return e=(t.pitch||t.x||0)*v,i=(t.yaw||t.y||0)*v,s=(t.roll||t.z||0)*v,n=l(e/2),r=l(i/2),o=l(s/2),a=u(e/2),h=u(i/2),c=u(s/2),d.x=a*r*o+n*h*c,d.y=n*h*o+a*r*c,d.z=n*r*c-a*h*o,this.n=n*r*o-a*h*c,this},je.zero=function(){let t=this.v;return this.n=1,t.x=0,t.y=0,t.z=0,this},je.getMagnitude=function(){let t=this.v;return Math.sqrt(this.n*this.n+t.x*t.x+t.y*t.y+t.z*t.z)},je.normalize=function(){let t=this.getMagnitude(),e=this.v;if(!t)throw new Error(`${this.name} Quaternion error - normalize() division by zero: ${t}`);return this.n/=t,this.n=this.n>-1e-6&&this.n<1e-6?0:this.n,e.x/=t,e.x=e.x>-1e-6&&e.x<1e-6?0:e.x,e.y/=t,e.y=e.y>-1e-6&&e.y<1e-6?0:e.y,e.z/=t,e.z=e.z>-1e-6&&e.z<1e-6?0:e.z,this},je.quaternionMultiply=function(t){if(!q(t))throw new Error(`${this.name} Quaternion error - quaternionMultiply() bad argument: ${t}`);let e=this.v,i=t.v,s=this.n,n=e.x,r=e.y,o=e.z,a=t.n,h=i.x,c=i.y,l=i.z;return this.n=s*a-n*h-r*c-o*l,e.x=s*h+n*a+r*l-o*c,e.y=s*c+r*a+o*h-n*l,e.z=s*l+o*a+n*c-r*h,this},je.getAngle=function(t){let e;return t=!!Q(t)&&t,e=2*Math.acos(this.n),t&&(e*=1/v),e>-1e-6&&e<1e-6?0:e},je.quaternionRotate=function(t){if(!q(t))throw new Error(`${this.name} Quaternion error - quaternionRotate() bad argument: ${t}`);let e=$e(t),i=$e(this);return this.setFromQuaternion(e.quaternionMultiply(i)),Me(e),Me(i),this};const Be=[],$e=function(t){Be.length||Be.push(ze({name:"pool"}));let e=Be.shift();return e.set(t),e},Me=function(t){t&&"Quaternion"===t.type&&Be.push(t.zero())},ze=function(t={}){return new Quaternion(t)};function Ie(t={}){(t=pe(t=ue(t=le(t=ce(t=he(t=ae(t))))))).defs=G(t.defs,{domElement:"",pitch:0,yaw:0,offsetZ:0,css:null,classes:"",position:"absolute",checkForResize:!1,trackHere:"",activePadding:5}),t.packetExclusions=Z(t.packetExclusions,["domElement","pathCorners","rotation"]),t.packetFunctions=Z(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processDOMPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){if(Y(this.domElement)){let e=this.domElement,i=e.cloneNode(!0);i.querySelectorAll('[data-corner-div="sc"]').forEach(t=>i.removeChild(t)),t.outerHTML=i.outerHTML,t.host=e.parentElement.id}return t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),t};let e=t.setters,s=t.deltaSetters;e.trackHere=function(t){var e;Q(t)&&(t?(Z(Ct,this.name),"local"===t&&(V(e=this)&&(e.localMouseListener&&e.localMouseListener(),e.here||(e.here={}),e.here.originalWidth=e.currentDimensions[0],e.here.originalHeight=e.currentDimensions[1],e.localMouseListener=it("move",(function(t){e.here&&(e.here.x=Math.round(parseFloat(t.offsetX)),e.here.y=Math.round(parseFloat(t.offsetY)))}),e.domElement)))):(_(Ct,this.name),function(t){V(t)&&(t.localMouseListener&&t.localMouseListener(),t.localMouseListener=!1)}(this)),this.trackHere=t)},e.position=function(t){this.position=t,this.dirtyPosition=!0},e.visibility=function(t){this.visibility=t,this.dirtyVisibility=!0},e.offsetZ=function(t){this.offsetZ=t,this.dirtyOffsetZ=!0},s.offsetZ=function(t){this.offsetZ+=t,this.dirtyOffsetZ=!0},e.roll=function(t){this.roll=this.checkRotationAngle(t),this.dirtyRotation=!0},s.roll=function(t){this.roll=this.checkRotationAngle(this.roll+t),this.dirtyRotation=!0},e.pitch=function(t){this.pitch=this.checkRotationAngle(t),this.dirtyRotation=!0},s.pitch=function(t){this.pitch=this.checkRotationAngle(this.pitch+t),this.dirtyRotation=!0},e.yaw=function(t){this.yaw=this.checkRotationAngle(t),this.dirtyRotation=!0},s.yaw=function(t){this.yaw=this.checkRotationAngle(this.yaw+t),this.dirtyRotation=!0},e.css=function(t){this.css=this.css?G(this.css,t):t,this.dirtyCss=!0},e.classes=function(t){this.classes=t,this.dirtyClasses=!0},e.domAttributes=function(t){this.updateDomAttributes(t)},t.checkRotationAngle=function(t){return(t<-180||t>180)&&(t+=t>0?-360:360),t},t.updateDomAttributes=function(t,e){if(this.domElement){let i=this.domElement;t.substring&&Q(e)?e?i.setAttribute(t,e):i.removeAttribute(t):V(t)&&Object.entries(t).forEach(([t,e])=>{e?i.setAttribute(t,e):i.removeAttribute(t)})}return this},t.initializeDomLayout=function(t){let e=t.domElement,s=e.style;if(s.boxSizing="border-box",e&&t.setInitialDimensions){let n,r=e.getBoundingClientRect(),o=(e.style.transform,e.style.transformOrigin,!1);if(t&&t.host&&(o=t.host,o.substring&&i[o]&&(o=i[o])),this.currentDimensions[0]=r.width,this.currentDimensions[1]=r.height,t.width=r.width,t.height=r.height,e.className&&(t.classes=e.className),o&&o.domElement&&(n=o.domElement.getBoundingClientRect(),n&&(t.startX=r.left-n.left,t.startY=r.top-n.top)),"Stack"===this.type){Q(t.perspective)||Q(t.perspectiveZ)||(t.perspectiveZ=Q(s.perspective)&&s.perspective?parseFloat(s.perspective):0);let e=s.perspectiveOrigin;e.length&&(e=e.split(" "),e.length>0&&!Q(t.perspective)&&!Q(t.perspectiveX)&&(t.perspectiveX=e[0]),Q(t.perspective)||Q(t.perspectiveY)||(e.length>1?t.perspectiveY=e[1]:t.perspectiveY=e[0]))}}},t.addClasses=function(t){if(t.substring){let e=this.classes;e+=" "+t,e=e.trim(),e=e.replace(/[\s\uFEFF\xA0]+/g," "),e!==this.classes&&(this.classes=e,this.dirtyClasses=!0)}return this},t.removeClasses=function(t){if(t.substring){let e,i=this.classes;t.split().forEach(t=>{e=new RegExp(" ?"+t+" ?"),i=i.replace(e," "),i=i.trim(),i=i.replace(/[\s\uFEFF\xA0]+/g," ")}),i!==this.classes&&(this.classes=i,this.dirtyClasses=!0)}return this},t.addPathCorners=function(){if(this.domElement&&!this.noUserInteraction){let t=function(){let t=document.createElement("div");return t.style.width=0,t.style.height=0,t.style.position="absolute",t},e=t(),i=t(),s=t(),n=t();e.style.top="0%",e.style.left="0%",e.setAttribute("data-corner-div","sc"),i.style.top="0%",i.style.left="100%",i.setAttribute("data-corner-div","sc"),s.style.top="100%",s.style.left="100%",s.setAttribute("data-corner-div","sc"),n.style.top="100%",n.style.left="0%",n.setAttribute("data-corner-div","sc");let r=this.domElement;r.appendChild(e),r.appendChild(i),r.appendChild(s),r.appendChild(n),this.pathCorners.push(e),this.pathCorners.push(i),this.pathCorners.push(s),this.pathCorners.push(n),this.currentCornersData||(this.currentCornersData=[])}return this},t.checkCornerPositions=function(t){let e=this.pathCorners;if(4===e.length){let i,s=this.getHere(),n=Dt.scrollX-(s.offsetX||0),r=Dt.scrollY-(s.offsetY||0),o=Math.round,a=[];const h=function(t){let e=t[0];e?(a.push(o(e.left+n)),a.push(o(e.top+r))):a.push(0,0)};switch(t){case"topLeft":return i=e[0].getClientRects(),h(i),a;case"topRight":return i=e[1].getClientRects(),h(i),a;case"bottomRight":return i=e[2].getClientRects(),h(i),a;case"bottomLeft":return i=e[3].getClientRects(),h(i),a;default:return e.forEach(t=>{Y(t)&&(i=t.getClientRects(),h(i))}),a}}};const n=["topLeft","topRight","bottomRight","bottomLeft"];return t.getCornerCoordinate=function(t){return n.indexOf(t)>=0?this.checkCornerPositions(t):[].concat(this.currentStampPosition)},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,this.domElement&&!this.noUserInteraction){this.pathCorners.length||this.addPathCorners(),this.currentCornersData||(this.currentCornersData=[]);let t=this.currentCornersData;t.length=0,t.push(...this.checkCornerPositions());let e=this.pathObject=new Path2D;e.moveTo(t[0],t[1]),e.lineTo(t[2],t[3]),e.lineTo(t[4],t[5]),e.lineTo(t[6],t[7]),e.closePath()}},t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=requestCell(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition;a[0],a[1];return i.some(t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!K(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r)},this)?(s&&releaseCell(e),{x:n,y:r,artefact:this}):(s&&releaseCell(e),!1)},t.cleanRotation=function(){this.dirtyRotation=!1,this.rotation&&q(this.rotation)||(this.rotation=ze()),this.currentRotation&&q(this.rotation)||(this.currentRotation=ze());let t=this.rotation;t.setFromEuler({pitch:this.pitch||0,yaw:this.yaw||0,roll:this.roll||0}),1!==t.getMagnitude()&&t.normalize();let e=$e(),i=this.path,s=this.mimic,n=this.pivot,r=this.lockTo;i&&r.indexOf("path")>=0?e.set(t):s&&this.useMimicRotation&&r.indexOf("mimic")>=0?Q(s.currentRotation)?(e.set(s.currentRotation),this.addOwnRotationToMimic&&e.quaternionRotate(t)):this.dirtyMimicRotation=!0:(e.set(t),n&&this.addPivotRotation&&r.indexOf("pivot")>=0&&(Q(n.currentRotation)?e.quaternionRotate(n.currentRotation):this.dirtyPivotRotation=!0)),this.currentRotation.set(e),Me(e),this.dirtyPositionSubscribers=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0)},t.cleanOffsetZ=function(){this.dirtyOffsetZ=!1},t.cleanContent=function(){this.dirtyContent=!1,this.domElement&&(this.dirtyDimensions=!0)},t.cleanDisplayShape=B,t.cleanDisplayArea=B,t.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle||this.dirtyRotation)&&(this.dirtyPathObject=!0),this.dirtyContent&&this.cleanContent(),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyDisplayArea&&this.cleanDisplayArea(),this.dirtyDisplayShape&&this.cleanDisplayShape(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyOffsetZ&&this.cleanOffsetZ(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.pivoted.length&&(this.dirtyStampPositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject()},t.stamp=function(){let t=this;return new Promise((e,i)=>{t.domElement||i(!1);let s,n,r,o,a,[h,c]=t.currentStampPosition,[l,u]=t.currentStampHandlePosition,d=t.currentScale,f=t.currentRotation,p=`${l}px ${u}px 0`,m=`translate(${h-l}px,${c-u}px)`;(t.yaw||t.pitch||t.roll||t.pivot&&t.addPivotRotation||t.mimic&&t.useMimicRotation||t.path&&t.addPathRotation)&&(s=f.v,n=s.x,r=s.y,o=s.z,a=f.getAngle(!1),m+=` rotate3d(${n},${r},${o},${a}rad)`),t.offsetZ&&(m+=` translateZ(${t.offsetZ}px)`),1!==d&&(m+=` scale(${d},${d})`),m!==t.currentTransformString&&(t.currentTransformString=m,t.dirtyTransform=!0),p!==t.currentTransformOriginString&&(t.currentTransformOriginString=p,t.dirtyTransformOrigin=!0),(t.dirtyTransform||t.dirtyPerspective||t.dirtyPosition||t.dirtyDomDimensions||t.dirtyTransformOrigin||t.dirtyVisibility||t.dirtyCss||t.dirtyClasses||t.domShowRequired)&&(yi(t.name),Si(!0)),t.dirtyPositionSubscribers&&t.updatePositionSubscribers(),(t.dirtyMimicRotation||t.dirtyPivotRotation)&&(t.dirtyMimicRotation=!1,t.dirtyPivotRotation=!1,t.dirtyRotation=!0),t.dirtyMimicScale&&(t.dirtyMimicScale=!1,t.dirtyScale=!0),e(!0)})},t.apply=function(){$t(),this.prepareStamp();let t=this;this.stamp().then(()=>{Pi(t.name),t.dirtyPathObject=!0,t.cleanPathObject()}).catch(t=>console.log(t))},t}function Xe(t={}){let e={breakToBanner:3,breakToLandscape:1.5,breakToPortrait:.65,breakToSkyscraper:.35,actionBannerShape:null,actionLandscapeShape:null,actionRectangleShape:null,actionPortraitShape:null,actionSkyscraperShape:null,breakToSmallest:2e4,breakToSmaller:8e4,breakToLarger:18e4,breakToLargest:32e4,actionSmallestArea:null,actionSmallerArea:null,actionRegularArea:null,actionLargerArea:null,actionLargestArea:null};t.defs=G(t.defs,e),G(t,e),t.packetFunctions=Z(t.packetFunctions,["actionBannerShape","actionLandscapeShape","actionRectangleShape","actionPortraitShape","actionSkyscraperShape"]);let i=t.getters,s=t.setters;return i.displayShape=function(){return this.currentDisplayShape},i.displayShapeBreakpoints=function(){return{breakToBanner:this.breakToBanner,breakToLandscape:this.breakToLandscape,breakToPortrait:this.breakToPortrait,breakToSkyscraper:this.breakToSkyscraper,breakToSmallest:this.breakToSmallest,breakToSmaller:this.breakToSmaller,breakToLarger:this.breakToLarger,breakToLargest:this.breakToLargest}},s.displayShapeBreakpoints=function(t={}){for(let[e,i]of Object.entries(t))if(W(i))switch(e){case"breakToBanner":this.breakToBanner=i;break;case"breakToLandscape":this.breakToLandscape=i;break;case"breakToPortrait":this.breakToPortrait=i;break;case"breakToSkyscraper":this.breakToSkyscraper=i;break;case"breakToSmallest":this.breakToSmallest=i;break;case"breakToSmaller":this.breakToSmaller=i;break;case"breakToLarger":this.breakToLarger=i;break;case"breakToLargest":this.breakToLargest=i}this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},t.setDisplayShapeBreakpoints=s.displayShapeBreakpoints,s.breakToBanner=function(t){W(t)&&(this.breakToBanner=t),this.dirtyDisplayShape=!0},s.breakToLandscape=function(t){W(t)&&(this.breakToLandscape=t),this.dirtyDisplayShape=!0},s.breakToPortrait=function(t){W(t)&&(this.breakToPortrait=t),this.dirtyDisplayShape=!0},s.breakToSkyscraper=function(t){W(t)&&(this.breakToSkyscraper=t),this.dirtyDisplayShape=!0},s.breakToSmallest=function(t){W(t)&&(this.breakToSmallest=t),this.dirtyDisplayArea=!0},s.breakToSmaller=function(t){W(t)&&(this.breakToSmaller=t),this.dirtyDisplayArea=!0},s.breakToLarger=function(t){W(t)&&(this.breakToLarger=t),this.dirtyDisplayArea=!0},s.breakToLargest=function(t){W(t)&&(this.breakToLargest=t),this.dirtyDisplayArea=!0},s.actionBannerShape=function(t){N(t)&&(this.actionBannerShape=t),this.dirtyDisplayShape=!0},t.setActionBannerShape=s.actionBannerShape,s.actionLandscapeShape=function(t){N(t)&&(this.actionLandscapeShape=t),this.dirtyDisplayShape=!0},t.setActionLandscapeShape=s.actionLandscapeShape,s.actionRectangleShape=function(t){N(t)&&(this.actionRectangleShape=t),this.dirtyDisplayShape=!0},t.setActionRectangleShape=s.actionRectangleShape,s.actionPortraitShape=function(t){N(t)&&(this.actionPortraitShape=t),this.dirtyDisplayShape=!0},t.setActionPortraitShape=s.actionPortraitShape,s.actionSkyscraperShape=function(t){N(t)&&(this.actionSkyscraperShape=t),this.dirtyDisplayShape=!0},t.setActionSkyscraperShape=s.actionSkyscraperShape,s.actionSmallestArea=function(t){N(t)&&(this.actionSmallestArea=t),this.dirtyDisplayArea=!0},t.setActionSmallestArea=s.actionSmallestArea,s.actionSmallerArea=function(t){N(t)&&(this.actionSmallerArea=t),this.dirtyDisplayArea=!0},t.setActionSmallerArea=s.actionSmallerArea,s.actionRegularArea=function(t){N(t)&&(this.actionRegularArea=t),this.dirtyDisplayArea=!0},t.setActionRegularArea=s.actionRegularArea,s.actionLargerArea=function(t){N(t)&&(this.actionLargerArea=t),this.dirtyDisplayArea=!0},t.setActionLargerArea=s.actionLargerArea,s.actionLargestArea=function(t){N(t)&&(this.actionLargestArea=t),this.dirtyDisplayArea=!0},t.setActionLargestArea=s.actionLargestArea,t.initializeDisplayShapeActions=function(){this.actionBannerShape=B,this.actionLandscapeShape=B,this.actionRectangleShape=B,this.actionPortraitShape=B,this.actionSkyscraperShape=B,this.currentDisplayShape="",this.dirtyDisplayShape=!0,this.actionSmallestArea=B,this.actionSmallerArea=B,this.actionRegularArea=B,this.actionLargerArea=B,this.actionLargestArea=B,this.currentDisplayArea="",this.dirtyDisplayArea=!0},t.cleanDisplayShape=function(){this.dirtyDisplayShape=!1;let[t,e]=this.currentDimensions;if(t>0&&e>0){let i=t/e,s=this.currentDisplayShape,n=this.breakToBanner,r=this.breakToLandscape,o=this.breakToPortrait,a=this.breakToSkyscraper;return i>n?"banner"!==s&&(this.currentDisplayShape="banner",this.actionBannerShape(),!0):i>r?"landscape"!==s&&(this.currentDisplayShape="landscape",this.actionLandscapeShape(),!0):i0&&e>0){let i=t*e,s=this.currentDisplayArea,n=this.breakToLargest,r=this.breakToLarger,o=this.breakToSmaller,a=this.breakToSmallest;return i>n?"largest"!==s&&(this.currentDisplayArea="largest",this.actionLargestArea(),!0):i>r?"larger"!==s&&(this.currentDisplayArea="larger",this.actionLargerArea(),!0):i=0?t:"none"},We.title=function(t){this.title=t,this.dirtyAria=!0},We.label=function(t){this.label=t,this.dirtyAria=!0},We.description=function(t){this.description=t,this.dirtyAria=!0},Ne.backgroundColor=function(){return this.base.backgroundColor},We.backgroundColor=function(t){this.base&&this.base.set({backgroundColor:t})},Ne.alpha=function(){return this.base.alpha},We.alpha=function(t){this.base&&this.base.set({alpha:t})},Ve.alpha=function(t){this.base&&this.base.deltaSet({alpha:t})},Ne.composite=function(){return this.base.composite},We.composite=function(t){this.base&&this.base.set({composite:t})},Ye.setAsCurrentCanvas=function(){return this.base&&li(this),this},Ye.setBase=function(t){return this.base&&(this.base.set(t),this.setBaseHelper()),this},Ye.deltaSetBase=function(t){return this.base&&(this.base.deltaSet(t),this.setBaseHelper()),this},Ye.updateBaseHere=function(){this.base&&this.base.updateBaseHere(this.here,this.fit)},Ye.setBaseHelper=function(){let t={};this.base.dirtyScale&&(t.dirtyScale=!0),this.base.dirtyDimensions&&(t.dirtyDimensions=!0),this.base.dirtyLock&&(t.dirtyLock=!0),this.base.dirtyStart&&(t.dirtyStart=!0),this.base.dirtyOffset&&(t.dirtyOffset=!0),this.base.dirtyHandle&&(t.dirtyHandle=!0),this.base.dirtyRotation&&(t.dirtyRotation=!0),this.cleanCells(),this.base.prepareStamp(),this.updateCells(t)},Ye.updateCells=function(t={}){this.cells.forEach(e=>{let i=a[e];i&&(t.dirtyScale&&(i.dirtyScale=!0),t.dirtyDimensions&&(i.dirtyDimensions=!0),t.dirtyLock&&(i.dirtyLock=!0),t.dirtyStart&&(i.dirtyStart=!0),t.dirtyOffset&&(i.dirtyOffset=!0),t.dirtyHandle&&(i.dirtyHandle=!0),t.dirtyRotation&&(i.dirtyRotation=!0))})},Ye.buildCell=function(t={}){t.host||!1||(t.host=this.base.name);let e=Ae(t);return this.addCell(e),this.cleanCells(),e},Ye.cleanDimensionsAdditionalActions=function(){this.cells&&this.updateCells({dirtyDimensions:!0}),this.dirtyDomDimensions=!0,this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},Ye.addCell=function(t){return(t=t.substring?t:t.name||!1)&&(Z(this.cells,t),a[t].prepareStamp(),this.dirtyCells=!0),t},Ye.removeCell=function(t){return(t=t.substring?t:t.name||!1)&&(_(this.cells,t),this.dirtyCells=!0),this},Ye.killCell=function(t){let e=t.substring?a[t]:t;return e&&e.kill(),this.dirtyCells=!0,this},Ye.clear=function(){let t=this;t.dirtyCells&&t.cleanCells();let e=i=>new Promise((s,n)=>{let r=t.cellBatchesClear[i];r?r.clear().then(t=>{e(i+1).then(t=>s(!0)).catch(t=>n(t))}).catch(t=>n(t)):s(!0)});return e(0)},Ye.compile=function(){let t=this;t.dirtyCells&&t.cleanCells();let e=i=>new Promise((s,n)=>{let r=t.cellBatchesCompile[i];r?r.compile().then(t=>{e(i+1).then(t=>s(!0)).catch(t=>n(t))}).catch(t=>n(t)):(t.prepareStamp(),t.stamp().then(t=>s(!0)).catch(t=>n(t)))});return e(0)},Ye.show=function(){let t=this;t.dirtyCells&&t.cleanCells();let e=i=>new Promise((s,n)=>{let r=t.cellBatchesShow[i];r?r.show().then(t=>{e(i+1).then(t=>s(!0)).catch(t=>n(t))}).catch(t=>n(t)):(t.engine.clearRect(0,0,t.localWidth,t.localHeight),t.base.show().then(t=>{Pi(),this.dirtyAria&&this.cleanAria(),s(!0)}).catch(t=>n(t)))});return e(0)},Ye.render=function(){let t=this;return new Promise(e=>{t.clear().then(()=>t.compile()).then(()=>t.show()).then(()=>e(!0)).catch(()=>e(!1))})},Ye.cleanCells=function(){this.dirtyCells=!1;let t,e=[],i=[],s=[];this.cells.forEach(n=>{let r=a[n];r&&(r.cleared&&e.push(r),r.compiled&&(t=r.compileOrder,i[t]||(i[t]=[]),i[t].push(r)),r.shown&&(t=r.showOrder,s[t]||(s[t]=[]),s[t].push(r)))}),this.cellBatchesClear=[].concat(e),this.cellBatchesCompile=i.reduce((t,e)=>t.concat(e),[]),this.cellBatchesShow=s.reduce((t,e)=>t.concat(e),[])},Ye.cascadeEventAction=function(t){this.currentActiveEntityNames||(this.currentActiveEntityNames=[]);let e=this.currentActiveEntityNames,s=[],n=[],r=[],o=[],h=[],c=[];this.cells.forEach(t=>{let e=a[t];e&&(e.shown||e.isBase)&&s.push(e.getEntityHits())}),s=s.reduce((t,e)=>t.concat(e),[]),s.forEach(t=>{let i=t.name;n.indexOf(i)<0&&(n.push(i),e.indexOf(i)<0?(r.push(t),o.push(i)):(h.push(t),c.push(i)))});let l=r.concat(h),u=function(){e.length&&(o.forEach(t=>_(e,t)),c.forEach(t=>_(e,t)),e.forEach(t=>{let e=i[t];e&&e.onLeave()}))};switch(t){case"down":l.forEach(t=>t.onDown());break;case"up":l.forEach(t=>t.onUp());break;case"enter":r.forEach(t=>t.onEnter());break;case"leave":u();break;case"move":u(),r.forEach(t=>t.onEnter())}return this.currentActiveEntityNames=o.concat(c),this.currentActiveEntityNames},Ye.cleanAria=function(){this.dirtyAria=!1,this.domElement.setAttribute("title",this.title),this.ariaLabelElement.textContent=this.label,this.ariaDescriptionElement.textContent=this.description};const qe=function(t){return new Canvas(t)};k.Canvas=Canvas;const Element=function(t={}){let e=t.domElement;return this.makeName(t.name),this.register(),e&&(t.text?e.textContent=t.text:t.content&&(e.innerHTML=t.content)),this.initializePositions(),this.dimensions[0]=this.dimensions[1]=100,this.pathCorners=[],this.css={},this.here={},this.initializeDomLayout(t),this.set(this.defs),this.set(t),e=this.domElement,e&&(e.id=this.name),this.apply(),this};let Ge=Element.prototype=Object.create(Object.prototype);Ge.type="Element",Ge.lib="element",Ge.isArtefact=!0,Ge.isAsset=!1,Ge=Pt(Ge),Ge=Ie(Ge),Ge.factoryKill=function(){_(Ct,this.name),this.domElement.remove()};let Ue=Ge.setters;Ue.text=function(t){if(Y(this.domElement)){let e=this.domElement,i=e.querySelectorAll('[data-corner-div="sc"]');e.textContent=t,i.forEach(t=>e.appendChild(t)),this.dirtyContent=!0}},Ue.content=function(t){if(this.domElement){let e=this.domElement,i=e.querySelectorAll('[data-corner-div="sc"]');e.innerHTML=t,i.forEach(t=>e.appendChild(t)),this.dirtyContent=!0}},Ge.cleanDimensionsAdditionalActions=function(){this.dirtyDomDimensions=!0},Ge.addCanvas=function(t={}){if(!this.canvas){let e=document.createElement("canvas"),i=this.domElement,s=i.getBoundingClientRect();window.getComputedStyle(i);i.parentNode.insertBefore(e,this.domElement);let n=qe({name:this.name+"-canvas",domElement:e,position:"absolute",width:s.width,height:s.height,mimic:this.name,lockTo:"mimic",useMimicDimensions:!0,useMimicScale:!0,useMimicStart:!0,useMimicHandle:!0,useMimicOffset:!0,useMimicRotation:!0,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1});return n.set(t),this.canvas=n,n}};const Ze=function(t){return new Element(t)};k.Element=Element;const Stack=function(t={}){let e,i;return this.makeName(t.name),this.register(),this.initializePositions(),this.initializeCascade(),this.dimensions[0]=300,this.dimensions[1]=150,this.pathCorners=[],this.css={},this.here={},this.perspective={x:"50%",y:"50%",z:0},this.dirtyPerspective=!0,this.initializeDomLayout(t),e=Ee({name:this.name,host:this.name}),this.addGroups(e.name),this.set(this.defs),this.initializeDisplayShapeActions(),this.set(t),i=this.domElement,i&&"root"===i.getAttribute("data-group")&&(Z(ei,this.name),ii()),this};let _e=Stack.prototype=Object.create(Object.prototype);_e.type="Stack",_e.lib="stack",_e.isArtefact=!0,_e.isAsset=!1,_e=Pt(_e),_e=me(_e),_e=Ie(_e),_e=Xe(_e);_e.defs=G(_e.defs,{position:"relative",perspective:null,trackHere:"subscribe",isResponsive:!1,containElementsInHeight:!1}),_e.stringifyFunction=B,_e.processPacketOut=B,_e.finalizePacketOut=B,_e.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},_e.clone=$,_e.factoryKill=function(){let t=this.name;_(ei,t),ii(),_(Ct,t),u[t]&&u[t].kill(),Object.entries(i).forEach(([e,i])=>{i.host===t&&i.kill()}),this.domElement.remove()};let Qe=_e.getters,Ke=_e.setters,Je=_e.deltaSetters;Qe.perspectiveX=function(){return this.perspective.x},Qe.perspectiveY=function(){return this.perspective.y},Qe.perspectiveZ=function(){return this.perspective.z},Ke.perspectiveX=function(t){this.perspective.x=t,this.dirtyPerspective=!0},Ke.perspectiveY=function(t){this.perspective.y=t,this.dirtyPerspective=!0},Ke.perspectiveZ=function(t){this.perspective.z=t,this.dirtyPerspective=!0},Ke.perspective=function(t={}){this.perspective.x=Q(t.x)?t.x:this.perspective.x,this.perspective.y=Q(t.y)?t.y:this.perspective.y,this.perspective.z=Q(t.z)?t.z:this.perspective.z,this.dirtyPerspective=!0},Je.perspectiveX=function(t){this.perspective.x=H(this.perspective.x,t),this.dirtyPerspective=!0},Je.perspectiveY=function(t){this.perspective.y=H(this.perspective.y,t),this.dirtyPerspective=!0},_e.updateArtefacts=function(t={}){this.groupBuckets.forEach(e=>{e.artefactBuckets.forEach(e=>{t.dirtyScale&&(e.dirtyScale=!0),t.dirtyDimensions&&(e.dirtyDimensions=!0),t.dirtyLock&&(e.dirtyLock=!0),t.dirtyStart&&(e.dirtyStart=!0),t.dirtyOffset&&(e.dirtyOffset=!0),t.dirtyHandle&&(e.dirtyHandle=!0),t.dirtyRotation&&(e.dirtyRotation=!0),t.dirtyPathObject&&(e.dirtyPathObject=!0)})})},_e.cleanDimensionsAdditionalActions=function(){this.groupBuckets&&this.updateArtefacts({dirtyDimensions:!0,dirtyPath:!0,dirtyStart:!0,dirtyHandle:!0}),this.dirtyDomDimensions=!0,this.dirtyPath=!0,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},_e.cleanPerspective=function(){this.dirtyPerspective=!1;let t=this.perspective;this.domPerspectiveString=`perspective-origin: ${t.x} ${t.y}; perspective: ${t.z}px;`,this.domShowRequired=!0,this.groupBuckets&&this.updateArtefacts({dirtyHandle:!0,dirtyPathObject:!0})},_e.checkResponsive=function(){this.isResponsive&&this.trackHere&&(this.currentVportWidth||(this.currentVportWidth=Dt.w),this.currentVportHeight||(this.currentVportHeight=Dt.h),this.dirtyHeight&&this.containElementsInHeight&&(console.log("stack height final fixes need to be done"),this.dirtyHeight=!1),this.currentVportWidth!==Dt.w&&(console.log("need to update for resized viewport width"),this.currentVportWidth=Dt.w,this.containElementsInHeight&&(this.dirtyHeight=!0)),this.currentVportHeight!==Dt.h&&(console.log("need to update for resized viewport height"),this.currentVportHeight=Dt.h))},_e.clear=function(){return this.checkResponsive(),Promise.resolve(!0)},_e.compile=function(){let t=this;return new Promise((e,i)=>{t.sortGroups(),t.prepareStamp(),t.stamp().then(()=>{let e=[];return t.groupBuckets.forEach(t=>e.push(t.stamp())),Promise.all(e)}).then(()=>e(!0)).catch(t=>i(!1))})},_e.show=function(){return new Promise(t=>{Pi(),t(!0)})},_e.render=function(){let t=this;return new Promise((e,i)=>{t.compile().then(()=>t.show()).then(()=>e(!0)).catch(t=>i(!1))})},_e.addExistingDomElements=function(t){let e,i,s,n,r;if(Q(t))for(e=t.substring?document.querySelectorAll(t):[].concat(t),n=0,r=e.length;n{ni=!0},si=[],ni=!0;const ri=function(t){let e=t.getAttribute("data-group"),i=t.id||t.getAttribute("name"),s="absolute";e||(t.setAttribute("data-group","root"),e="root",s="relative"),i||(i=z(),t.id=i);let n=ti({name:i,domElement:t,group:e,host:e,position:s,setInitialDimensions:!0});return oi(t,i),n},oi=function(t,e){let i=t.getBoundingClientRect(),s=0;Array.from(t.children).forEach(t=>{if(null!=t.getAttribute("data-stack")||X(t)||"SCRIPT"===t.tagName)t.setAttribute("data-group",e);else{let n=t.getBoundingClientRect(),r=window.getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.borderTopWidth)+parseFloat(r.paddingTop)+parseFloat(r.paddingBottom)+parseFloat(r.borderBottomWidth)+parseFloat(r.marginBottom);s=s||n.top-i.top;let a={name:t.id||t.getAttribute("name"),domElement:t,group:e,host:e,position:"absolute",width:n.width,height:n.height,startX:n.left-i.left,startY:s,classes:t.className?t.className:""};s+=o+n.height,Ze(a)}})},ai=function(t){let e=t.getAttribute("data-group"),i=t.id||t.getAttribute("name"),s="absolute";return e||(t.setAttribute("data-group","root"),e="root",s=t.style.position),i||(i=z(),t.id=i),qe({name:i,domElement:t,group:e,host:e,position:s,setInitialDimensions:!0})};let hi=null,ci=null;const li=function(t){let e=!1;if(t)if(t.substring){let i=o[t];i&&(hi=i,e=!0)}else"Canvas"===t.type&&(hi=t,e=!0);if(e&&hi.base){let t=u[hi.base.name];t&&(ci=t)}},ui=function(...t){return pi(t),mi("clear")},di=function(...t){return pi(t),mi("compile")},fi=function(...t){return pi(t),mi("show")},pi=function(t){t.length?si=t:ni&&function(){let t=Math.floor;if(ni){ni=!1;let e,s,n=[];ei.forEach(r=>{e=i[r],e&&(s=t(e.order)||0,n[s]||(n[s]=[]),n[s].push(e.name))}),si=n.reduce((t,e)=>t.concat(e),[])}}()},mi=function(t){return new Promise((e,s)=>{let n,r=[];si.forEach(e=>{n=i[e],n&&n[t]&&r.push(n[t]())}),Promise.all(r).then(()=>e(!0)).catch(t=>s(t))})},gi=[],yi=function(t=""){if(!t)throw new Error("core/document addDomShowElement() error - false argument supplied: "+t);if(!t.substring)throw new Error("core/document addDomShowElement() error - argument not a string: "+t);Z(gi,t)};let bi=!1;const Si=function(t=!0){bi=t},Pi=function(t=""){if(bi||t){let e,s,n,r,o,a,h,c,l,u,d,f,p,m,g,y,b,S;for(t?e=[t]:(bi=!1,e=[].concat(gi),gi.length=0),s=0,n=e.length;sconsole.log(t))):(h.width=u+"px",h.height=d?d+"px":"auto")),o.dirtyTransformOrigin&&(o.dirtyTransformOrigin=!1,h.transformOrigin=o.currentTransformOriginString),o.dirtyTransform&&(o.dirtyTransform=!1,h.transform=o.currentTransformString),o.dirtyVisibility&&(o.dirtyVisibility=!1,h.display=o.visibility?"block":"none"),o.dirtyCss)for(o.dirtyCss=!1,m=o.css||{},g=Object.keys(m),f=0,p=g.length;f{let s=Object.assign({},t);s.name=`${s.name}_${i.name}`,s.target=i,e.push(new RenderAnimation(s))}),e}e=t.target.substring?i[t.target]:t.target}else e={clear:ui,compile:di,show:fi};if(!(e&&e.clear&&e.compile&&e.show))return!1;this.makeName(t.name),this.order=Q(t.order)?t.order:this.defs.order,this.onRun=t.onRun||B,this.onHalt=t.onHalt||B,this.onKill=t.onKill||B,this.target=e,this.commence=t.commence||B,this.afterClear=t.afterClear||B,this.afterCompile=t.afterCompile||B,this.afterShow=t.afterShow||B,this.afterCreated=t.afterCreated||B,this.error=t.error||B,this.readyToInitialize=!0;let s=this;return this.fn=function(){return new Promise((t,e)=>{Promise.resolve(s.commence()).then(()=>s.target.clear()).then(()=>Promise.resolve(s.afterClear())).then(()=>s.target.compile()).then(()=>Promise.resolve(s.afterCompile())).then(()=>s.target.show()).then(()=>Promise.resolve(s.afterShow())).then(()=>{s.readyToInitialize&&(s.afterCreated(),s.readyToInitialize=!1),t(!0)}).catch(t=>{s.error(t),e(t)})})},this.register(),t.observer&&(this.observer=et(this,this.target)),t.delay||this.run(),this};let xi=RenderAnimation.prototype=Object.create(Object.prototype);xi.type="RenderAnimation",xi.lib="animation",xi.isArtefact=!1,xi.isAsset=!1,xi=Pt(xi);xi.defs=G(xi.defs,{order:1,onRun:null,onHalt:null,onKill:null,commence:null,afterClear:null,afterCompile:null,afterShow:null,afterCreated:null,error:null,target:null}),xi.stringifyFunction=B,xi.processPacketOut=B,xi.finalizePacketOut=B,xi.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},xi.clone=$,xi.kill=function(){return this.onKill(),_(E,this.name),T(),this.deregister(),!0},xi.run=function(){return this.onRun(),Z(E,this.name),T(),this},xi.isRunning=function(){return E.indexOf(this.name)>=0},xi.halt=function(){return this.onHalt(),_(E,this.name),T(),this};const Ci=function(t){return new RenderAnimation(t)};k.RenderAnimation=RenderAnimation;const UnstackedElement=function(t){let e=t.id||t.name;return this.makeName(e),this.register(),t.setAttribute("data-scrawl-name",this.name),this.domElement=t,this.elementComputedStyles=window.getComputedStyle(t),this.hostStyles={},this.canvasStartX=0,this.canvasStartY=0,this.canvasWidth=0,this.canvasHeight=0,this.canvasZIndex=0,this};let Ai=UnstackedElement.prototype=Object.create(Object.prototype);Ai.type="UnstackedElement",Ai.lib="unstackedelement",Ai.isArtefact=!1,Ai.isAsset=!1,Ai=Pt(Ai);Ai.defs=G(Ai.defs,{canvasOnTop:!1});Ai.getters,Ai.setters,Ai.deltaSetters;Ai.demolish=function(t=!1){return!0},Ai.addCanvas=function(t={}){if(!this.canvas){let e=document.createElement("canvas"),i=this.domElement,s=i.style;"static"===s.position&&(s.position="relative"),i.prepend(e);let n=qe({name:this.name+"-canvas",domElement:e,position:"absolute"});return this.canvas=n,n.set(t),this.updateCanvas(),n}},Ai.includedStyles=["width","height","zIndex","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],Ai.mimickedStyles=["borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],Ai.checkElementStyleValues=function(){let t={},e=this.domElement,i=this.canvas;if(e&&i&&i.domElement){let s=this.hostStyles,n=this.elementComputedStyles,r=i.domElement,o=this.includedStyles,a=Math.max,{x:h,y:c,width:l,height:u}=e.getBoundingClientRect(),{x:d,y:f}=r.getBoundingClientRect();o.forEach(e=>{switch(e){case"width":let i=a(parseFloat(n.width),l);this.canvasWidth!==i&&(this.canvasWidth=i,this.dirtyDimensions=!0);break;case"height":let r=a(parseFloat(n.height),u);this.canvasHeight!==r&&(this.canvasHeight=r,this.dirtyDimensions=!0);break;case"zIndex":let o="auto"===n.zIndex?0:parseInt(n.zIndex,10);o=this.canvasOnTop?o+1:o-1,this.canvasZIndex!==o&&(this.canvasZIndex=o,this.dirtyZIndex=!0);break;default:let h=s[e],c=n[e];Q(h)&&h===c||(s[e]=c,t[e]=c)}});let p=h-d,m=c-f;(p||m)&&(this.canvasStartX+=p,this.canvasStartY+=m,this.dirtyStart=!0)}return t},Ai.updateCanvas=function(){if(this.canvas&&this.canvas.domElement){let t=this.canvas,e=t.domElement.style,i=this.mimickedStyles,s=this.checkElementStyleValues();for(let[t,n]of Object.entries(s))i.indexOf(t)>=0&&(e[t]=n);if(this.dirtyStart&&(this.dirtyStart=!1,t.set({startX:this.canvasStartX,startY:this.canvasStartY})),this.dirtyDimensions){this.dirtyDimensions=!1;let e=this.canvasWidth,i=this.canvasHeight;t.set({width:e,height:i}),t.dirtyDimensions=!0,t.base.set({width:e,height:i}),t.base.dirtyDimensions=!0,t.cleanDimensions(),t.base.cleanDimensions()}this.dirtyZIndex&&(this.dirtyZIndex=!1,e.zIndex=this.canvasZIndex)}};k.UnstackedElement=UnstackedElement;const wi=function(t,e,s,n){let r=i[t.id];if(!r)return!1;e.isComponent=!0;let o=r.addCanvas(e);s.name=r.name+"-animation",s.target=o;let a=Ci(s),h=et(a,r,n);return{element:r,canvas:o,animation:a,demolish:()=>{h(),a.kill(),o.demolish(),r.demolish(!0)}}},Di=function(t,e,i,s,n){let r,o=t.id;o&&P[o]?r=P[o]:r=new UnstackedElement(t),e.isComponent=!0;let a=!!n&&r.addCanvas(e);i.name=r.name+"-animation",a&&(i.afterClear||(i.afterClear=()=>r.updateCanvas()),i.target=a);let h=Ci(i),c=et(h,r,s);return{element:r,canvas:a,animation:h,demolish:()=>{c(),h.kill(),a&&a.demolish(),r.demolish(!0)}}},Oi=["artefact","group","animation","tween","styles"],Ei=t=>{if(t&&t.substring){let e;return!!Oi.some(i=>(e=A[i][t],e))&&e}return!1};function Ti(t={}){t.defs=G(t.defs,{order:1,ticker:"",targets:null,time:0,action:null,reverseOnCycleEnd:!1,reversed:!1}),t.kill=function(){let t,i=this.ticker;return i===this.name+"_ticker"?(t=e[i],t&&t.kill()):i&&this.removeFromTicker(i),this.deregister(),!0};let i=t.getters,s=t.setters;return i.targets=function(){return[].concat(this.targets)},s.targets=function(t=[]){this.setTargets(t)},s.action=function(t){this.action=t,"function"!=typeof this.action&&(this.action=B)},t.calculateEffectiveTime=function(t){let i,s=J(t,this.time),n=L(s),r=n[1],o=n[0],a=0;return this.effectiveTime=0,"%"===o&&r<=100?this.ticker&&(i=e[this.ticker],i&&(a=i.effectiveDuration,this.effectiveTime=a*(r/100))):this.effectiveTime=r,this},t.addToTicker=function(t){let i;return Q(t)&&(this.ticker&&this.ticker!==t&&this.removeFromTicker(this.ticker),i=e[t],Q(i)&&(this.ticker=t,i.subscribe(this.name),this.calculateEffectiveTime())),this},t.removeFromTicker=function(t){let i;return(t=Q(t)?t:this.ticker)&&(i=e[t],Q(i)&&(this.ticker="",i.unsubscribe(this.name))),this},t.setTargets=function(t){t=[].concat(t);let e=[];return t.forEach(t=>{if(N(t))N(t.set)&&e.push(t);else if(V(t)&&Q(t.name))e.push(t);else{let i=Ei(t);i&&e.push(i)}}),this.targets=e,this},t.addToTargets=function(t){return(t=[].concat(t)).forEach(t=>{"function"==typeof t?"function"==typeof t.set&&this.targets.push(t):(result=Ei(t),result&&this.targets.push(result))},this),this},t.removeFromTargets=function(t){t=[].concat(t);let e=[],i=[].concat(this.targets);return i.forEach(t=>{let i=t.type||"unknown",s=t.name||"unnamed";"unknown"!==i&&"unnamed"!==s&&e.push(`${i}_${s}`)}),t.forEach(t=>{let s;if(s="function"==typeof t?t:Ei(t),s){let t=s.type||"unknown",n=s.name||"unnamed";if("unknown"!==t&&"unnamed"!==n){let s=`${t}_${n}`,r=e.indexOf(s);r>=0&&(i[r]=!1)}}}),this.targets=[],i.forEach(t=>{t&&this.targets.push(t)},this),this},t.checkForTarget=function(t){return!!t.substring&&this.targets.some(e=>e.name===t)},t}const Action=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.calculateEffectiveTime(),Q(t.ticker)&&this.addToTicker(t.ticker),this};let Ri=Action.prototype=Object.create(Object.prototype);Ri.type="Action",Ri.lib="tween",Ri.isArtefact=!1,Ri.isAsset=!1,Ri=Pt(Ri),Ri=Ti(Ri);Ri.defs=G(Ri.defs,{revert:null}),Ri.packetExclusions=Z(Ri.packetExclusions,["targets"]),Ri.packetFunctions=Z(Ri.packetFunctions,["revert","action"]),Ri.finalizePacketOut=function(t,e){return Array.isArray(this.targets)&&(t.targets=this.targets.map(t=>t.name)),t};let Fi=Ri.setters;Fi.revert=function(t){this.revert=t,"function"!=typeof this.revert&&(this.revert=B)},Fi.triggered=function(t){this.triggered!==t&&(t?this.action():this.revert(),this.triggered=t)},Ri.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs,n=!!Q(t.ticker)&&this.ticker;Object.entries(t).forEach(([t,n])=>{"name"!==t&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this),n?(this.ticker=n,this.addToTicker(t.ticker)):Q(t.time)&&this.calculateEffectiveTime()}return this},Ri.getEndTime=function(){return this.effectiveTime},Ri.update=function(t){let e=this.reversed,i=this.effectiveTime,s=this.triggered,n=(this.reverseOnCycleEnd,t.tick),r=t.reverseTick,o=t.willLoop;t.next;return e?r>=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1):n>=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1),o&&(this.triggered=!this.triggered),!0};function Hi(t={}){(t=ye(t=pe(t=ue(t=le(t=ce(t=he(t=ae(t)))))))).defs=G(t.defs,{method:"fill",pathObject:null,winding:"nonzero",flipReverse:!1,flipUpend:!1,scaleOutline:!0,lockFillStyleToEntity:!1,lockStrokeStyleToEntity:!1,onEnter:null,onLeave:null,onDown:null,onUp:null}),t.packetExclusions=Z(t.packetExclusions,["state"]),t.packetFunctions=Z(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processEntityPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=G(t,i),t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),e.sharedState&&(t.state=this.state),e.anchor&&(e.anchor.host=t,Q(e.anchor.focusAction)||(e.anchor.focusAction=this.anchor.focusAction),Q(e.anchor.blurAction)||(e.anchor.blurAction=this.anchor.blurAction),t.buildAnchor(e.anchor),e.anchor.clickAction||(t.anchor.clickAction=this.anchor.clickAction)),t};let e=t.getters,i=t.setters;t.deltaSetters;return e.group=function(){return this.group?this.group.name:""},i.lockStylesToEntity=function(t){this.lockFillStyleToEntity=t,this.lockStrokeStyleToEntity=t},t.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):null)}},t.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=r?r.setters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,h])=>{t&&"name"!==t&&null!=h&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,h):void 0!==n[t]?this[t]=h:void 0!==a[t]&&(r[t]=h))},this)}return this},t.setDelta=function(t={}){if(Object.keys(t).length){let e,i,s=this.deltaSetters,n=this.defs,r=this.state,o=r?r.deltaSetters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,h])=>{t&&"name"!==t&&null!=h&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,h):void 0!==n[t]?this[t]=H(this[t],h):void 0!==a[t]&&(r[t]=H(r[t],h)))},this)}return this},t.entityInit=function(t={}){this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.state=Gt(),t.group||(t.group=ci),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.set(t),this.midInitActions(t),this.purge&&this.purgeArtefact(this.purge)},t.midInitActions=B,t.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1,this.dirtyDimensions=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.anchor&&this.dirtyAnchorHold&&(this.dirtyAnchorHold=!1,this.buildAnchor(this.anchor))},t.cleanPathObject=B,t.stamp=function(t=!1,e,i){let s=!(this.noFilters||!this.filters||!this.filters.length);return t?(e&&"Cell"===e.type&&(this.currentHost=e),i&&(this.set(i),this.prepareStamp()),s?this.filteredStamp():this.regularStamp()):this.visibility?this.stashOutput||s?this.filteredStamp():this.regularStamp():Promise.resolve("entity.stamp")},t.regularStamp=function(){let t=this;return new Promise((e,i)=>{t.currentHost&&(t.regularStampSynchronousActions(),e("entity.regularStamp resolving")),i("entity.regularStamp - no currentHost")})},t.filteredStamp=function(){!this.dirtyFilters&&this.currentFilters||this.cleanFilters();let t=this;return new Promise((e,i)=>{let s=function(){if(u&&Yt(u),o.save(),o.setTransform(1,0,0,1,0,0),o.drawImage(c,0,0),t.stashOutput){t.stashOutput=!1;let[e,i,s,n]=t.getCellCoverage(l.getImageData(0,0,c.width,c.height));if(t.stashedImageData=l.getImageData(e,i,s,n),t.stashOutputAsAsset)if(t.stashOutputAsAsset=!1,c.width=s,c.height=n,l.putImageData(t.stashedImageData,0,0),t.stashedImage)t.stashedImage.src=c.toDataURL();else{let e=t.stashedImage=document.createElement("img");e.id=t.name+"-image",e.onload=function(){ki.appendChild(e),re("#"+e.id)},e.src=c.toDataURL()}}Ce(h),o.restore(),t.currentHost=n,t.noCanvasEngineUpdates=m},n=t.currentHost,r=n.element,o=n.engine,a=n.currentDimensions,h=xe(),c=h.element,l=h.engine;t.currentHost=h;let u,d,f=c.width=a[0]||r.width,p=c.height=a[1]||r.height,m=t.noCanvasEngineUpdates;t.noCanvasEngineUpdates=!1,t.regularStampSynchronousActions(),!t.noFilters&&t.filters&&t.filters.length?(t.isStencil&&(l.save(),l.globalCompositeOperation="source-in",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.drawImage(r,0,0),l.restore()),l.setTransform(1,0,0,1,0,0),d=l.getImageData(0,0,f,p),u=Xt(),Wt(u,{image:d,filters:t.currentFilters}).then(t=>{if(!t)throw new Error("image issue");l.globalCompositeOperation="source-over",l.globalAlpha=1,l.setTransform(1,0,0,1,0,0),l.putImageData(t,0,0),s(),e(!0)}).catch(t=>{s(),i(t)})):(s(),e(!0))})},t.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,h=s,c=n,l=3;for(i=0;ie&&(h=e),oi&&(c=i),a=1)return.9999;let e=this.unitPositions;if(e&&e.length){let e,i,s,n,r,o,a,h=this.length,c=this.unitProgression,l=this.unitPositions,u=t*h,d=-1;for(let t=0,e=c.length;t=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},t.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyDimensions&&(this.cleanSpecies(),this.pathCalculatedOnce=!1),this.calculateLocalPath(this.pathDefinition),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyHandle&&this.cleanHandle(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=this.currentStampHandlePosition;this.pathObject=new Path2D(`m${-t[0]},${-t[1]}${this.localPath}`)}},t.calculateLocalPath=function(t,e){let i;if(this.pathCalculatedOnce||(i=function(t,e,i,s,n){let r,o,a,h,c=[],l=[],u="",d="",f=[],p=[],m=[],g=t.match(/([A-Za-z][0-9. ,\-]*)/g),y=0,b={},S=0,P=0,k=0,v=0,x=[],C=[],A=[],w=[],D=0,O=0,E=t=>{l.push({c:u.toLowerCase(),p:t||null,x:k,y:v,cx:S,cy:P,rx:D,ry:O}),s||(x.push(S),C.push(P)),k=S,v=P};for(r=0,o=g.length;r0&&l[r-1],{c:s,p:n,x:o,y:a,cx:h,cy:c,rx:u,ry:d}=e;if(n)switch(s){case"h":f[r]=["linear",o,a,n[0]+o,a];break;case"v":f[r]=["linear",o,a,o,n[0]+a];break;case"m":f[r]=["move",o,a];break;case"l":f[r]=["linear",o,a,n[0]+o,n[1]+a];break;case"t":i&&(i.rx||i.ry)?(Bi(t,i.rx-h,i.ry-c),$i(t,180),f[r]=["quadratic",o,a,t.x+h,t.y+c,n[0]+o,n[1]+a]):f[r]=["quadratic",o,a,o,a,n[0]+o,n[1]+a];break;case"q":f[r]=["quadratic",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"s":i&&(i.rx||i.ry)?(Bi(t,i.rx-h,i.ry-c),$i(t,180),f[r]=["bezier",o,a,t.x+h,t.y+c,n[0]+o,n[1]+a,n[2]+o,n[3]+a]):f[r]=["bezier",o,a,o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"c":f[r]=["bezier",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a,n[4]+o,n[5]+a];break;case"a":f[r]=["linear",o,a,n[5]+o,n[6]+a];break;case"z":isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["close",o,a];break;default:isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["unknown",o,a]}else f[r]=["no-points-"+s,o,a]}for(b.units=f,r=0,o=f.length;rt+e,0);let e=0;for(r=0,o=p.length;r{let e=i[t];e&&(e.currentPathData=!1,e.dirtyStart=!0,e.addPathHandle&&(e.dirtyHandle=!0),e.addPathOffset&&(e.dirtyOffset=!0),e.addPathRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))},this)},t.draw=function(t){t.stroke(this.pathObject),this.showBoundingBox&&this.drawBoundingBox(t)},t.fill=function(t){t.fill(this.pathObject,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillThenDraw=function(t){let e=this.pathObject;t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.clear=function(t){let e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(this.pathObject,this.winding),t.globalCompositeOperation=e,this.showBoundingBox&&this.drawBoundingBox(t)},t.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.strokeRect(...this.getBoundingBox()),t.restore()},t.getBoundingBox=function(){let t=Math.floor,e=Math.ceil,i=this.minimumBoundingBoxDimensions,[s,n,r,o]=this.localBox,[a,h]=this.currentStampHandlePosition,[c,l]=this.currentStampPosition;return r"string"!=typeof t?"":t.charAt(0).toUpperCase()+t.slice(1);function Yi(t={}){t.defs=G(t.defs,{end:null,endPivot:"",endPivotCorner:"",addEndPivotHandle:!1,addEndPivotOffset:!1,endPath:"",endPathPosition:0,addEndPathHandle:!1,addEndPathOffset:!0,endParticle:"",endLockTo:"",useStartAsControlPoint:!1}),t.packetExclusions=Z(t.packetExclusions,["controlledLineOffset"]),t.packetExclusionsByRegex=Z(t.packetExclusionsByRegex,[]),t.packetCoordinates=Z(t.packetCoordinates,["end"]),t.packetObjects=Z(t.packetObjects,["endPivot","endPath"]),t.packetFunctions=Z(t.packetFunctions,[]),t.factoryKill=function(){Object.entries(i).forEach(([t,e])=>{e.name!==this.name&&(e.startControlPivot&&e.startControlPivot.name===this.name&&e.set({startControlPivot:!1}),e.controlPivot&&e.controlPivot.name===this.name&&e.set({controlPivot:!1}),e.endControlPivot&&e.endControlPivot.name===this.name&&e.set({endControlPivot:!1}),e.endPivot&&e.endPivot.name===this.name&&e.set({endPivot:!1}),e.startControlPath&&e.startControlPath.name===this.name&&e.set({startControlPath:!1}),e.controlPath&&e.controlPath.name===this.name&&e.set({controlPath:!1}),e.endControlPath&&e.endControlPath.name===this.name&&e.set({endControlPath:!1}),e.endPath&&e.endPath.name===this.name&&e.set({endPath:!1}))})};t.getters;let e=t.setters,s=t.deltaSetters;return e.useStartAsControlPoint=function(t){if(this.useStartAsControlPoint=t,!t){let t=this.controlledLineOffset;t[0]=0,t[1]=0}this.updateDirty()},e.endPivot=function(t){this.setControlHelper(t,"endPivot","end"),this.updateDirty(),this.dirtyEnd=!0},e.endParticle=function(t){this.setControlHelper(t,"endParticle","end"),this.updateDirty(),this.dirtyEnd=!0},e.endPath=function(t){this.setControlHelper(t,"endPath","end"),this.updateDirty(),this.dirtyEnd=!0},e.endPathPosition=function(t){this.endPathPosition=t,this.dirtyEnd=!0,this.currentEndPathData=!1},s.endPathPosition=function(t){this.endPathPosition+=t,this.dirtyEnd=!0,this.currentEndPathData=!1},e.endX=function(t){null!=t&&(this.end[0]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},e.endY=function(t){null!=t&&(this.end[1]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},e.end=function(t,e){this.setCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endX=function(t){let e=this.end;e[0]=H(e[0],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endY=function(t){let e=this.end;e[1]=H(e[1],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},e.endLockTo=function(t){this.endLockTo=t,this.updateDirty(),this.dirtyEndLock=!0,this.currentEndPathData=!1},t.curveInit=function(t){this.end=Kt(),this.currentEnd=Kt(),this.endLockTo="coord",this.dirtyEnd=!0,this.dirtyPins=[],this.controlledLineOffset=Kt()},t.setControlHelper=function(t,e,s){if(I(t)&&!t)this[e]=null,"startControl"===s?this.dirtyStartControlLock=!0:"control"===s?this.dirtyControlLock=!0:"endControl"===s?this.dirtyEndControlLock=!0:this.dirtyEndLock=!0;else if(t){let n=this[e],r=t.substring?i[t]:t;e.indexOf("Pivot")>0?r&&r.isArtefact&&(n&&n.isArtefact&&_(n.pivoted,this.name),Z(r.pivoted,this.name),this[e]=r):e.indexOf("Path")>0?r&&r.isArtefact&&(n&&n.isArtefact&&_(n.pathed,this.name),Z(r.pathed,this.name),this[e]=r):e.indexOf("Particle")>0&&(r=t.substring?d[t]:t,r||(this.updateDirty(),"startControl"===s?this.dirtyStartControl=!0:"control"===s?this.dirtyControl=!0:"endControl"===s?this.dirtyEndControl=!0:this.dirtyEnd=!0,this[e]=t))}},t.buildPathPositionObject=function(t,e){if(t){let i,s,[n,...r]=t;switch(n){case"linear":i=this.positionPointOnPath(this.getLinearXY(e,...r)),s=this.getLinearAngle(e,...r);break;case"quadratic":i=this.positionPointOnPath(this.getQuadraticXY(e,...r)),s=this.getQuadraticAngle(e,...r);break;case"bezier":i=this.positionPointOnPath(this.getBezierXY(e,...r)),s=this.getBezierAngle(e,...r)}let o=0;this.flipReverse&&o++,this.flipUpend&&o++,1===o&&(s=-s),s+=this.roll;this.currentStampPosition;let a=this.controlledLineOffset;this.localBox;return i.x+=a[0],i.y+=a[1],i.angle=s,i}return!1},t.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.dirtyPins.length&&this.preparePinsForStamp(),this.dirtyLock&&this.cleanLock(),this.dirtyStartControlLock&&this.cleanControlLock("startControl"),this.dirtyEndControlLock&&this.cleanControlLock("endControl"),this.dirtyControlLock&&this.cleanControlLock("control"),this.dirtyEndLock&&this.cleanControlLock("end"),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd||this.dirtyHandle)&&(this.dirtyPathObject=!0,this.useStartAsControlPoint&&this.dirtyStart&&(this.dirtySpecies=!0,this.pathCalculatedOnce=!1),(this.dirtyScale||this.dirtySpecies||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.useStartAsControlPoint&&(this.dirtySpecies=!0,this.dirtyPathObject=!0,this.pathCalculatedOnce=!1)),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),(this.dirtyStartControl||"particle"===this.startControlLockTo)&&this.cleanControl("startControl"),(this.dirtyEndControl||"particle"===this.endControlLockTo)&&this.cleanControl("endControl"),(this.dirtyControl||"particle"===this.controlLockTo)&&this.cleanControl("control"),(this.dirtyEnd||"particle"===this.endLockTo)&&this.cleanControl("end"),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&(this.updatePositionSubscribers(),this.updateControlPathSubscribers())},t.cleanControlLock=function(t){let e=Xi(t);this[`dirty${e}Lock`]=!1,this["dirty"+e]=!0},t.cleanControl=function(t){let e=Xi(t);this["dirty"+e]=!1;let s,n,r=t+"Path",o=t+"Particle",a=this[t+"Pivot"],h=this[r],c=this[o];a&&a.substring&&(s=i[a],s&&(a=s)),h&&h.substring&&(s=i[h],s&&(h=s)),c&&c.substring&&(s=d[c],s&&(c=s));let l,u,f,p,m,g,y,b=this[t+"LockTo"],S=this[t],P=this["current"+e];switch(("pivot"!==b||a&&!a.substring)&&("path"!==b||h&&!h.substring)&&("particle"!==b||c&&!c.substring)||(b="coord"),b){case"pivot":this.pivotCorner&&a.getCornerCoordinate?[l,u]=a.getCornerCoordinate(this[t+"PivotCorner"]):[l,u]=a.currentStampPosition,this.addPivotOffset||([f,p]=a.currentOffset,l-=f,u-=p);break;case"path":n=this.getControlPathData(h,t,e),l=n.x,u=n.y,this.addPathOffset||(l-=h.currentOffset[0],u-=h.currentOffset[1]);break;case"particle":l=c.position.x,u=c.position.y,this.pathCalculatedOnce=!1;break;case"mouse":m=this.getHere(),l=m.x||0,u=m.y||0;break;default:l=u=0,g=this.getHost(),g&&(y=g.currentDimensions,y&&(this.cleanPosition(P,S,y),[l,u]=P))}P[0]=l,P[1]=u,this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPositionSubscribers=!0},t.getControlPathData=function(t,e,i){let s=this[`current${i}PathData`];if(s)return s;let n=this[e+"PathPosition"],r=n,o=t.getPathPositionData(n);if(n<0&&(n+=1),n>1&&(n%=1),n=parseFloat(n.toFixed(6)),n!==r&&(this[e+"PathPosition"]=n),o)return this[`current${i}PathData`]=o,o;{let t=this.getHost();if(t){let s=t.currentDimensions;if(s){let t=this["current"+i];return this.cleanPosition(t,this[e],s),{x:t[0],y:t[1]}}}return{x:0,y:0}}},t.updateControlPathSubscribers=function(){[].concat(this.endSubscriber,this.endControlSubscriber,this.controlSubscriber,this.startControlSubscriber).forEach(t=>{let e=i[t];e&&("Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||("Quadratic"===e.type?(e.dirtyControl=!0,e.currentControlPathData=!1):"Bezier"===e.type&&(e.dirtyStartControl=!0,e.dirtyEndControl=!0,e.currentStartControlPathData=!1,e.currentEndControlPathData=!1),e.currentEndPathData=!1,e.dirtyEnd=!0),e.currentPathData=!1,e.dirtyStart=!0)})},t}const Bezier=function(t={}){return this.startControl=Kt(),this.endControl=Kt(),this.currentStartControl=Kt(),this.currentEndControl=Kt(),this.startControlLockTo="coord",this.endControlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyStartControl=!0,this.dirtyEndControl=!0,this};let Ni=Bezier.prototype=Object.create(Object.prototype);Ni.type="Bezier",Ni.lib="entity",Ni.isArtefact=!0,Ni.isAsset=!1,Ni=Pt(Ni),Ni=Ii(Ni),Ni=Yi(Ni);Ni.defs=G(Ni.defs,{startControl:null,startControlPivot:"",startControlPivotCorner:"",addStartControlPivotHandle:!1,addStartControlPivotOffset:!1,startControlPath:"",startControlPathPosition:0,addStartControlPathHandle:!1,addStartControlPathOffset:!0,startControlParticle:"",endControl:null,endControlPivot:"",endControlPivotCorner:"",addEndControlPivotHandle:!1,addEndControlPivotOffset:!1,endControlPath:"",endControlPathPosition:0,addEndControlPathHandle:!1,addEndControlPathOffset:!0,endControlParticle:"",startControlLockTo:"",endControlLockTo:""}),Ni.packetExclusions=Z(Ni.packetExclusions,[]),Ni.packetExclusionsByRegex=Z(Ni.packetExclusionsByRegex,[]),Ni.packetCoordinates=Z(Ni.packetCoordinates,["startControl","endControl"]),Ni.packetObjects=Z(Ni.packetObjects,["startControlPivot","startControlPath","endControlPivot","endControlPath"]),Ni.packetFunctions=Z(Ni.packetFunctions,[]);Ni.getters;let Wi=Ni.setters,Vi=Ni.deltaSetters;Wi.endControlPivot=function(t){this.setControlHelper(t,"endControlPivot","endControl"),this.updateDirty(),this.dirtyEndControl=!0},Wi.endControlParticle=function(t){this.setControlHelper(t,"endControlParticle","endControl"),this.updateDirty(),this.dirtyEndControl=!0},Wi.endControlPath=function(t){this.setControlHelper(t,"endControlPath","endControl"),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Wi.endControlPathPosition=function(t){this.endControlPathPosition=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Vi.endControlPathPosition=function(t){this.endControlPathPosition+=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Wi.startControlPivot=function(t){this.setControlHelper(t,"startControlPivot","startControl"),this.updateDirty(),this.dirtyStartControl=!0},Wi.startControlParticle=function(t){this.setControlHelper(t,"startControlParticle","startControl"),this.updateDirty(),this.dirtyStartControl=!0},Wi.startControlPath=function(t){this.setControlHelper(t,"startControlPath","startControl"),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Wi.startControlPathPosition=function(t){this.startControlPathPosition=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Vi.startControlPathPosition=function(t){this.startControlPathPosition+=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Wi.startControlX=function(t){null!=t&&(this.startControl[0]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},Wi.startControlY=function(t){null!=t&&(this.startControl[1]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},Wi.startControl=function(t,e){this.setCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Vi.startControlX=function(t){let e=this.startControl;e[0]=H(e[0],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Vi.startControlY=function(t){let e=this.startControl;e[1]=H(e[1],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Vi.startControl=function(t,e){this.setDeltaCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},Wi.endControlX=function(t){null!=t&&(this.endControl[0]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},Wi.endControlY=function(t){null!=t&&(this.endControl[1]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},Wi.endControl=function(t,e){this.setCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Vi.endControlX=function(t){let e=this.endControl;e[0]=H(e[0],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Vi.endControlY=function(t){let e=this.endControl;e[1]=H(e[1],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Vi.endControl=function(t,e){this.setDeltaCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},Wi.startControlLockTo=function(t){this.startControlLockTo=t,this.updateDirty(),this.dirtyStartControlLock=!0},Wi.endControlLockTo=function(t){this.endControlLockTo=t,this.updateDirty(),this.dirtyEndControlLock=!0,this.currentEndControlPathData=!1},Ni.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeBezierPath(),this.pathDefinition=t},Ni.makeBezierPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentStartControl,[n,r]=this.currentEndControl,[o,a]=this.currentEnd;return`m0,0c${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)} ${(o-t).toFixed(2)},${(a-e).toFixed(2)}`},Ni.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyStartControl=!0,this.dirtyEndControl=!0,this.dirtyEnd=!0},Ni.preparePinsForStamp=function(){let t=this.endPivot,e=this.endPath,i=this.startControlPivot,s=this.startControlPath,n=this.endControlPivot,r=this.endControlPath;this.dirtyPins.forEach(o=>{(i&&i.name===o||s&&s.name===o)&&(this.dirtyStartControl=!0,this.startControlLockTo.includes("path")&&(this.currentStartControlPathData=!1)),(n&&n.name===o||r&&r.name===o)&&(this.dirtyEndControl=!0,this.endControlLockTo.includes("path")&&(this.currentEndControlPathData=!1)),(t&&t.name===o||e&&e.name===o)&&(this.dirtyEnd=!0,this.endLockTo.includes("path")&&(this.currentEndPathData=!1))}),this.dirtyPins.length=0};k.Bezier=Bezier;const Cog=function(t={}){return this.shapeInit(t),this};let qi=Cog.prototype=Object.create(Object.prototype);qi.type="Cog",qi.lib="entity",qi.isArtefact=!0,qi.isAsset=!1,qi=Pt(qi),qi=Ii(qi);qi.defs=G(qi.defs,{outerRadius:0,innerRadius:0,outerControlsDistance:0,innerControlsDistance:0,outerControlsOffset:0,innerControlsOffset:0,points:0,twist:0,curve:"bezier"});let Gi=qi.setters,Ui=qi.deltaSetters;Gi.outerRadius=function(t){this.outerRadius=t,this.updateDirty()},Ui.outerRadius=function(t){this.outerRadius+=t,this.updateDirty()},Gi.innerRadius=function(t){this.innerRadius=t,this.updateDirty()},Ui.innerRadius=function(t){this.innerRadius+=t,this.updateDirty()},Gi.outerControlsDistance=function(t){this.outerControlsDistance=t,this.updateDirty()},Ui.outerControlsDistance=function(t){this.outerControlsDistance+=t,this.updateDirty()},Gi.innerControlsDistance=function(t){this.innerControlsDistance=t,this.updateDirty()},Ui.innerControlsDistance=function(t){this.innerControlsDistance+=t,this.updateDirty()},Gi.outerControlsOffset=function(t){this.outerControlsOffset=t,this.updateDirty()},Ui.outerControlsOffset=function(t){this.outerControlsOffset+=t,this.updateDirty()},Gi.innerControlsOffset=function(t){this.innerControlsOffset=t,this.updateDirty()},Ui.innerControlsOffset=function(t){this.innerControlsOffset+=t,this.updateDirty()},Gi.points=function(t){this.points=t,this.updateDirty()},Ui.points=function(t){this.points+=t,this.updateDirty()},Gi.twist=function(t){this.twist=t,this.updateDirty()},Ui.twist=function(t){this.twist+=t,this.updateDirty()},Gi.curve=function(t){t&&["line","quadratic","bezier"].indexOf(t)>=0?(this.curve=t,this.updateDirty()):(this.curve="bezier",this.updateDirty())},qi.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeCogPath(),this.pathDefinition=t},qi.makeCogPath=function(){let t,e,i,s,n,r,o,{points:a,twist:h,outerRadius:c,innerRadius:l,outerControlsDistance:u,innerControlsDistance:d,outerControlsOffset:f,innerControlsOffset:p,curve:m}=this,g=360/a,y=[],b="";if(c.substring||l.substring||u.substring||d.substring||f.substring||p.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;c=c.substring?parseFloat(c)/100*e:c,l=l.substring?parseFloat(l)/100*e:l,u=u.substring?parseFloat(u)/100*e:u,d=d.substring?parseFloat(d)/100*e:d,f=f.substring?parseFloat(f)/100*e:f,p=p.substring?parseFloat(p)/100*e:p}}let S=Fe({x:0,y:-c}),P=Fe({x:0,y:-l}),k=Fe({x:u+f,y:-c}),v=Fe({x:-d+p,y:-l}),x=Fe({x:d+p,y:-l}),C=Fe({x:-u+f,y:-c});if(v.rotate(-g/2),v.rotate(h),P.rotate(-g/2),P.rotate(h),x.rotate(-g/2),x.rotate(h),t=S.x,e=S.y,y.push(t),"bezier"==m)for(o=0;o{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;V(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),V(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}}),this.deregister(),this},Zi.get=function(t){if(Q(t)){if("random"===t)return this.generateRandomColor(),this.get();if(t.toFixed)return this.getRangeColor(t);{let e=this.getters[t];if(e)return e.call(this);{let e=this.defs[t];if(void 0!==e){let i=this[t];return void 0!==i?i:e}return undef}}}{let{r:t,g:e,b:i,a:s}=this;return this.opaque?`rgb(${t}, ${e}, ${i})`:`rgba(${t}, ${e}, ${i}, ${s})`}},Zi.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs;Object.entries(t).forEach(([t,n])=>{"name"!==t&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this)}return t.random?this.generateRandomColor(t):this.checkValues(),this};let _i=Zi.setters;_i.color=function(t){this.convert(t)},Zi.setColor=function(t){return this.convert(t),this},_i.minimumColor=function(t){let{r:e,g:i,b:s,a:n}=this;this.convert(t),this.rMin=this.r,this.gMin=this.g,this.bMin=this.b,this.aMin=this.a,this.r=e,this.g=i,this.b=s,this.a=n},Zi.setMinimumColor=function(t){let{r:e,g:i,b:s,a:n}=this;return this.convert(t),this.rMin=this.r,this.gMin=this.g,this.bMin=this.b,this.aMin=this.a,this.r=e,this.g=i,this.b=s,this.a=n,this},_i.maximumColor=function(t){let{r:e,g:i,b:s,a:n}=this;this.convert(t),this.rMax=this.r,this.gMax=this.g,this.bMax=this.b,this.aMax=this.a,this.r=e,this.g=i,this.b=s,this.a=n},Zi.setMaximumColor=function(t){let{r:e,g:i,b:s,a:n}=this;return this.convert(t),this.rMax=this.r,this.gMax=this.g,this.bMax=this.b,this.aMax=this.a,this.r=e,this.g=i,this.b=s,this.a=n,this},Zi.getData=function(){return this.autoUpdate&&this.update(),this.checkValues(),this.get()},Zi.generateRandomColor=function(t={}){let e=Math.round,i=Math.random,s=this.rMax=J(t.rMax,this.rMax,255),n=this.gMax=J(t.gMax,this.gMax,255),r=this.bMax=J(t.bMax,this.bMax,255),o=this.rMin=J(t.rMin,this.rMin,0),a=this.gMin=J(t.gMin,this.gMin,0),h=this.bMin=J(t.bMin,this.bMin,0);return this.r=t.r||e(i()*(s-o)+o),this.g=t.g||e(i()*(n-a)+a),this.b=t.b||e(i()*(r-h)+h),this.opaque||(aMax=this.aMax=J(t.aMax,this.aMax,1),aMin=this.aMin=J(t.aMin,this.aMin,0),this.a=t.a||i()*(aMax-aMin)+aMin),this.checkValues(),this},Zi.getRangeColor=function(t){if(Q(t)&&t.toFixed){let e=Math.floor,{rMin:i,gMin:s,bMin:n,aMin:r,rMax:o,gMax:a,bMax:h,aMax:c}=this;t>1?t=1:t<0&&(t=0),isNaN(t)&&(t=1);let l=e(i+(o-i)*t),u=e(s+(a-s)*t),d=e(n+(h-n)*t),f=e(r+(c-r)*t);return this.opaque?`rgb(${l}, ${u}, ${d})`:`rgba(${l}, ${u}, ${d}, ${f})`}{let{r:t,g:e,b:i,a:s}=this;return this.opaque?`rgb(${t}, ${e}, ${i})`:`rgba(${t}, ${e}, ${i}, ${s})`}},Zi.checkValues=function(){let t=Math.floor,e=t(this.r)||0,i=t(this.g)||0,s=t(this.b)||0,n=this.a;return this.r=e>255?255:e<0?0:e,this.g=i>255?255:i<0?0:i,this.b=s>255?255:s<0?0:s,this.a=n>1?1:n<0?0:n,this},Zi.updateArray=["r","g","b","a"],Zi.update=function(){Q(this.rCurrent)||(this.rCurrent=this.r),Q(this.gCurrent)||(this.gCurrent=this.g),Q(this.bCurrent)||(this.bCurrent=this.b),Q(this.aCurrent)||(this.aCurrent=this.a);let t=this.updateArray;return(this.rShift||this.gShift||this.bShift||this.aShift)&&t.forEach(t=>{let e=this[t+"Shift"];if(e){this[t+"Current"]+=e;let i=this[t],s=this[t+"Min"],n=this[t+"Max"],r=this[t+"Bounce"],o=this[t+"Current"],a=Math.floor(o+e);(a>n||a(n+s)/2?n:s,e=0)),this[t]=a,this[t+"Shift"]=e}},this),this},Zi.updateByDelta=Zi.update,Zi.convert=function(t){let e,i,s,n,r,o=Math.round;return(t=t.substring?t:"").length&&(t.toLowerCase(),e=0,i=0,s=0,n=1,"#"===t[0]?4==t.length?(e=parseInt(t[1]+t[1],16),i=parseInt(t[2]+t[2],16),s=parseInt(t[3]+t[3],16)):5==t.length?(e=parseInt(t[1]+t[1],16),i=parseInt(t[2]+t[2],16),s=parseInt(t[3]+t[3],16),n=parseInt(t[4]+t[4],16)/255):7==t.length?(e=parseInt(t[1]+t[2],16),i=parseInt(t[3]+t[4],16),s=parseInt(t[5]+t[6],16)):9==t.length&&(e=parseInt(t[1]+t[2],16),i=parseInt(t[3]+t[4],16),s=parseInt(t[5]+t[6],16),n=parseInt(t[7]+t[8],16)/255):/rgb\(/.test(t)?(r=t.match(/([0-9.]+\b)/g),/%/.test(t)?(e=o(r[0]/100*255),i=o(r[1]/100*255),s=o(r[2]/100*255)):(e=o(r[0]),i=o(r[1]),s=o(r[2]))):/rgba\(/.test(t)?(r=t.match(/([0-9.]+\b)/g),/%/.test(t)?(e=o(r[0]/100*255),i=o(r[1]/100*255),s=o(r[2]/100*255),n=r[3]/100):(e=o(r[0]),i=o(r[1]),s=o(r[2]),n=r[3])):/hsl\(/.test(t)||/hsla\(/.test(t)||"transparent"===t?(e=0,i=0,s=0,n=0):(r=this.colorLibrary[t],r&&(e=parseInt(r[0]+r[1],16),i=parseInt(r[2]+r[3],16),s=parseInt(r[4]+r[5],16),n=1)),this.r=e,this.g=i,this.b=s,this.a=n,this.checkValues()),this},Zi.colorLibrary={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffe4c4",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"778899",lightslategrey:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};const Qi=function(t){return new Color(t)};k.Color=Color;const ParticleHistory=function(t){let e=[];return Object.setPrototypeOf(e,ParticleHistory.prototype),t&&e.set(t),e};let Ki=ParticleHistory.prototype=Object.create(Array.prototype);Ki.constructor=ParticleHistory,Ki.type="ParticleHistory";const Ji=[],ts=function(t){t&&"ParticleHistory"===t.type&&(t.length=0,Ji.push(t),Ji.length>100&&(Ji.length=0))};k.ParticleHistory=ParticleHistory;const Particle=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.initializePositions(),this.set(t),this};let es=Particle.prototype=Object.create(Object.prototype);es.type="Particle",es.lib="particle",es.isArtefact=!1,es.isAsset=!1,es=Pt(es);es.defs=G(es.defs,{position:null,velocity:null,load:null,history:null,historyLength:1,engine:"euler",forces:null,mass:1,fill:"#000000",stroke:"#000000"}),es.packetExclusions=Z(es.packetExclusions,[]),es.packetExclusionsByRegex=Z(es.packetExclusionsByRegex,["^(local|dirty|current)"]),es.packetCoordinates=Z(es.packetCoordinates,[]),es.packetObjects=Z(es.packetObjects,["position","velocity","acceleration"]),es.packetFunctions=Z(es.packetFunctions,[]),es.factoryKill=function(){this.history.forEach(t=>ts(t));let t=[];m.forEach(e=>{let i=p[e];(i.particleFrom&&i.particleFrom.name===this.name||i.particleTo&&i.particleTo.name===this.name)&&t.push[i]}),t.forEach(t=>t.kill())};let is=es.getters,ss=es.setters,ns=es.deltaSetters;is.positionX=function(){return this.position.x},is.positionY=function(){return this.position.y},is.positionZ=function(){return this.position.z},is.position=function(){let t=this.position;return[t.x,t.y,t.z]},ss.positionX=function(t){this.position.x=t},ss.positionY=function(t){this.position.y=t},ss.positionZ=function(t){this.position.z=t},ss.position=function(t){this.position.set(t)},ns.positionX=function(t){this.position.x+=t},ns.positionY=function(t){this.position.y+=t},ns.positionZ=function(t){this.position.z+=t},ns.position=B,is.velocityX=function(){return this.velocity.x},is.velocityY=function(){return this.velocity.y},is.velocityZ=function(){return this.velocity.z},is.velocity=function(){let t=this.velocity;return[t.x,t.y,t.z]},ss.velocityX=function(t){this.velocity.x=t},ss.velocityY=function(t){this.velocity.y=t},ss.velocityZ=function(t){this.velocity.z=t},ss.velocity=function(t,e,i){this.velocity.set(t,e,i)},ns.velocityX=function(t){this.velocity.x+=t},ns.velocityY=function(t){this.velocity.y+=t},ns.velocityZ=function(t){this.velocity.z+=t},ns.velocity=B,ss.forces=function(t){t&&(Array.isArray(t)?(this.forces.length=0,this.forces=this.forces.concat(t)):this.forces.push(t))},ss.load=B,ss.history=B,ns.load=B,es.initializePositions=function(){this.initialPosition=Le(),this.position=Le(),this.velocity=Le(),this.load=Le(),this.forces=[],this.history=[],this.isRunning=!1},es.applyForces=function(t,e){this.load.zero(),this.isBeingDragged||this.forces.forEach(i=>{let s=f[i];s&&s.action&&s.action(this,t,e)})},es.update=function(t,e){this.isBeingDragged?this.position.setFromVector(this.isBeingDragged).vectorAdd(this.dragOffset):cs[this.engine].call(this,t*e.tickMultiplier)},es.manageHistory=function(t,e){let{history:i,remainingTime:s,position:n,historyLength:r,hasLifetime:o,distanceLimit:a,initialPosition:h,killBeyondCanvas:c}=this,l=!0,u=0;if(o)if(u=s-t,u<=0){let t=i.pop();ts(t),l=!1,i.length||(this.isRunning=!1)}else this.remainingTime=u;let d=i[i.length-1];if(d){let[t,i,s,n]=d;if(c){let t=e.element.width,i=e.element.height;(s<0||n<0||s>t||n>i)&&(l=!1,this.isRunning=!1)}if(a){let t=Fe(h);t.vectorSubtractArray([s,n,i]),t.getMagnitude()>a&&(l=!1,this.isRunning=!1),He(t)}}if(l){let{x:t,y:e,z:s}=n,o=(Ji.length||Ji.push(new ParticleHistory),Ji.shift());if(o.push(u,s,t,e),i.unshift(o),i.length>r){i.splice(r).forEach(t=>ts(t))}}},es.run=function(t,e,i){this.hasLifetime=!1,t&&(this.remainingTime=t,this.hasLifetime=!0),this.distanceLimit=0,e&&(this.initialPosition.set(this.position),this.distanceLimit=e),this.killBeyondCanvas=i,this.isRunning=!0};const rs=function(t){return new Particle(t)};k.Particle=Particle;const os=[],as=function(t){os.length||os.push(new Particle);let e=os.shift();return e.set(t),e},hs=function(t){if(t&&"Particle"===t.type&&(t.history.forEach(t=>ts(t)),t.history.length=0,t.set(t.defs),os.push(t),os.length>50)){let t=[].concat(os);os.length=0,t.forEach(t=>t.kill())}},cs={euler:function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=Fe(),o=Fe(i);r.setFromVector(s).scalarDivide(n),o.vectorAdd(r.scalarMultiply(t)),i.setFromVector(o),e.vectorAdd(o.scalarMultiply(t)),He(r)},"improved-euler":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=Fe(),o=Fe(),a=Fe(),h=Fe(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t),a.setFromVector(r).vectorAdd(o).scalarDivide(2),h.vectorAdd(a),i.setFromVector(h),e.vectorAdd(h.scalarMultiply(t)),He(r)},"runge-kutta":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=Fe(),o=Fe(),a=Fe(),h=Fe(),c=Fe(),l=Fe(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t).scalarDivide(2),a.setFromVector(s).vectorAdd(o).scalarDivide(n).scalarMultiply(t).scalarDivide(2),h.setFromVector(s).vectorAdd(a).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.scalarMultiply(2),a.scalarMultiply(2),c.setFromVector(r).vectorAdd(o).vectorAdd(a).vectorAdd(h).scalarDivide(6),l.vectorAdd(c),i.setFromVector(l),e.vectorAdd(l.scalarMultiply(t)),He(r)}},Emitter=function(t={}){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.fillColorFactory=Qi({name:this.name+"-fillColorFactory"}),this.strokeColorFactory=Qi({name:this.name+"-strokeColorFactory"}),this.range=Le(),this.rangeFrom=Le(),this.preAction=B,this.stampAction=B,this.postAction=B,this.particleStore=[],this.deadParticles=[],this.liveParticles=[],t.group||(t.group=ci),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let ls=Emitter.prototype=Object.create(Object.prototype);ls.type="Emitter",ls.lib="entity",ls.isArtefact=!0,ls.isAsset=!1,ls=Pt(ls),ls=Hi(ls);ls.defs=G(ls.defs,{world:null,artefact:null,range:null,rangeFrom:null,generationRate:0,particleCount:0,generateAlongPath:!1,generateInArea:!1,generateFromExistingParticles:!1,generateFromExistingParticleHistories:!1,limitDirectionToAngleMultiples:0,generationChoke:15,killAfterTime:0,killAfterTimeVariation:0,killRadius:0,killRadiusVariation:0,killBeyondCanvas:!1,historyLength:1,forces:null,mass:1,massVariation:0,engine:"euler",hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),ls.packetExclusions=Z(ls.packetExclusions,["forces","particleStore","deadParticles","liveParticles","fillColorFactory","strokeColorFactory"]),ls.packetExclusionsByRegex=Z(ls.packetExclusionsByRegex,[]),ls.packetCoordinates=Z(ls.packetCoordinates,[]),ls.packetObjects=Z(ls.packetObjects,["world","artefact","generateInArea","generateAlongPath"]),ls.packetFunctions=Z(ls.packetFunctions,["preAction","stampAction","postAction"]),ls.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach(t=>{t.substring?e.push(t):V(t)&&t.name&&e.push(t.name)}),t.forces=e}let s=[];return this.particleStore.forEach(t=>s.push(t.saveAsPacket())),t.particleStore=s,t},ls.postCloneAction=function(t,e){return t},ls.factoryKill=function(t,e){this.isRunning=!1,t&&this.artefact.kill(),e&&this.world.kill(),this.fillColorFactory.kill(),this.strokeColorFactory.kill(),this.deadParticles.forEach(t=>t.kill()),this.liveParticles.forEach(t=>t.kill()),this.particleStore.forEach(t=>t.kill())};ls.getters;let us=ls.setters,ds=ls.deltaSetters;us.rangeX=function(t){this.range.x=t},us.rangeY=function(t){this.range.y=t},us.rangeZ=function(t){this.range.z=t},us.range=function(t){this.range.set(t)},us.rangeFromX=function(t){this.rangeFrom.x=t},us.rangeFromY=function(t){this.rangeFrom.y=t},us.rangeFromZ=function(t){this.rangeFrom.z=t},us.rangeFrom=function(t){this.rangeFrom.set(t)},us.preAction=function(t){N(t)&&(this.preAction=t)},us.stampAction=function(t){N(t)&&(this.stampAction=t)},us.postAction=function(t){N(t)&&(this.postAction=t)},us.world=function(t){let e;t.substring?e=g[t]:V(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},us.artefact=function(t){let e;t.substring?e=i[t]:V(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e)},us.generateAlongPath=function(t){let e;t.substring?e=i[t]:V(t)&&t.isArtefact&&(e=t),e&&e.useAsPath?this.generateAlongPath=e:this.generateAlongPath=!1},us.generateInArea=function(t){let e;t.substring?e=i[t]:V(t)&&t.isArtefact&&(e=t),this.generateInArea=e||!1},us.fillColor=function(t){this.fillColorFactory.set({color:t})},us.fillMinimumColor=function(t){this.fillColorFactory.set({minimumColor:t})},us.fillMaximumColor=function(t){this.fillColorFactory.set({maximumColor:t})},us.strokeColor=function(t){this.strokeColorFactory.set({color:t})},us.strokeMinimumColor=function(t){this.strokeColorFactory.set({minimumColor:t})},us.strokeMaximumColor=function(t){this.strokeColorFactory.set({maximumColor:t})},us.hitRadius=function(t){t.toFixed&&(this.hitRadius=t,this.width=this.height=2*t)},ds.hitRadius=function(t){t.toFixed&&(this.hitRadius+=t,this.width=this.height=2*this.hitRadius)},us.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},ds.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},us.height=us.width,ds.height=ds.width,ls.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1,this.dirtyDimensions=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=Date.now(),{particleStore:e,deadParticles:i,liveParticles:s,particleCount:n,generationRate:r,generatorChoke:o,resetAfterBlur:a}=this;o||(this.generatorChoke=o=t),e.forEach(t=>{t.isRunning?s.push(t):i.push(t)}),e.length=0,i.forEach(t=>hs(t)),i.length=0,e.push(...s),s.length=0;let h=t-o;if(h/1e3>a&&(h=0,this.generatorChoke=t),h>0&&r){let i=Math.floor(r/1e3*h);if(n){let t=n-e.length;t<=0?i=0:tO.isPointInPath(T,...t,M);w.rotateDestination(O,o,a,D);t:for(n=0;n1?([h,g,...y]=a[Math.floor(Math.random()*a.length)],y?D.setFromArray(y):D.setFromVector(o.position)):D.setFromVector(o.position)):D.setFromArray(b),r=as(),r.set({positionX:D.x,positionY:D.y,positionZ:D.z,historyLength:c,engine:l,forces:u,mass:i(d,f),fill:p.get("random"),stroke:m.get("random")}),T?(D.zero(),e=Math.floor(360/T),D.x=s(j,F),D.rotate(Math.floor(Math.random()*e)*T),r.set({velocityX:D.x,velocityY:D.y,velocityZ:s($,L)})):r.set({velocityX:s(j,F),velocityY:s(B,H),velocityZ:s($,L)}),He(D),r.velocity.rotate(A);let t=Math.abs(i(P,k)),n=Math.abs(i(v,x));r.run(t,n,C),S.push(r)}}else if(O){let e,o,a=S.length,h=Fe();for(n=0;na&&(i.forEach(t=>hs(t)),i.length=0,f=.016),i.forEach(e=>e.applyForces(t,d)),i.forEach(e=>e.update(f,t)),s.call(this,d),i.forEach(t=>{t.manageHistory(f,d),n.call(this,e,t,d)}),r.call(this,d),h){let t=d.engine;t.save(),t.lineWidth=1,t.strokeStyle=l,t.setTransform(1,0,0,1,0,0),t.beginPath(),t.arc(u[0],u[1],c,0,2*Math.PI),t.stroke(),t.restore()}this.lastUpdated=p},ls.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;let i,s,n=Array.isArray(t)?t:[t],r=this.currentStampPosition,o=!1;if(n.some(t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!K(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=Fe(r).vectorSubtract(t);return e.getMagnitude(){let{mass:s,load:n}=t,r=Fe();r.setFromVector(e.gravity).scalarMultiply(s),n.vectorAdd(r),He(r)}});const Palette=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.colors=t.colors||{"0 ":[0,0,0,1],"999 ":[255,255,255,1]},this.stops=Array(1e3),this.set(t),this.dirtyPalette=!0,this};let ms=Palette.prototype=Object.create(Object.prototype);ms.type="Palette",ms.lib="palette",ms.isArtefact=!1,ms.isAsset=!1,ms=Pt(ms);ms.defs=G(ms.defs,{colors:null,stops:null,cyclic:!1}),ms.packetExclusions=Z(ms.packetExclusions,["stops"]);ms.getters;let gs=ms.setters;gs.colors=function(t){if(V(t)){let e=this.factory;Object.entries(t).forEach(([i,s])=>{s.substring&&(e.convert(s),t[i]=[e.r,e.g,e.b,e.a])}),this.colors=t,this.dirtyPalette=!0}},gs.stops=B,ms.recalculateHold=[],ms.recalculate=function(){let t,e,i,s,n,r,o,a,h,c,l,u,d,f,p,m=this.colors,g=this.stops,y=this.makeColorString,b=this.recalculateHold;for(t=Object.keys(m),t=t.map(t=>parseInt(t,10)),t.sort((t,e)=>t-e),g.fill("rgba(0,0,0,0)"),this.dirtyPalette=!1,e=0,i=t.length-1;e999&&(r-=1e3);else{if(r=t[0],r>0)for(l=g[r],e=0,i=r;et=(t=ti?i:t;return e=o(r(t[0]),0,255),i=o(r(t[1]),0,255),s=o(r(t[2]),0,255),n=o(t[3],0,1),`rgba(${e},${i},${s},${n})`},ms.updateColor=function(t,e){let i=this.factory;K(t,e)&&(t=t.substring?parseInt(t,10):Math.floor(t))>=0&&t<=999&&(i.convert(e),t+=" ",this.colors[t]=[i.r,i.g,i.b,i.a],this.dirtyPalette=!0)},ms.removeColor=function(t){Q(t)&&(t=t.substring?parseInt(t,10):Math.floor(t))>=0&&t<=999&&(t+=" ",delete this.colors[t],this.dirtyPalette=!0)},ms.addStopsToGradient=function(t,e,i,s){let n,r,o,a,h,c,l=this.stops,u=Object.keys(this.colors);if(t){if(u=u.map(t=>parseInt(t,10)),u.sort((t,e)=>t-e),K(e,i)||(e=0,i=999),e===i)return l[e]||"rgba(0,0,0,0)";if(ee&&h0&&r<1&&t.addColorStop(r,l[h]));else if(s)for(t.addColorStop(0,l[e]),t.addColorStop(1,l[i]),c=999-e,n=c+i,o=0,a=u.length;oe)r=(h-e)/n;else{if(!(h0&&r<1&&t.addColorStop(r,l[h])}else for(t.addColorStop(0,l[e]),t.addColorStop(1,l[i]),n=e-i,o=0,a=u.length;oi&&(r=1-(h-i)/n,r>0&&r<1&&t.addColorStop(r,l[h]));return t}return"rgba(0,0,0,0)"},ms.factory=Qi({name:"palette-factory-color-calculator",opaque:!1});function ys(t={}){t.defs=G(t.defs,{start:null,end:null,palette:null,paletteStart:0,paletteEnd:999,cyclePalette:!1}),t.finalizePacketOut=function(t,e){return e.colors?t.colors=e.colors:this.palette&&this.palette.colors?t.colors=this.palette.colors:t.colors={"0 ":[0,0,0,1],"999 ":[255,255,255,1]},t},t.kill=function(){let t=this.name;return this.palette&&this.palette.kill&&this.palette.kill(),Object.entries(c).forEach(([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;V(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),V(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}}),this.deregister(),this};let e=t.getters,i=t.setters,s=t.deltaSetters;return e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},i.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},i.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},i.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},s.startX=function(t){let e=this.start;e[0]=H(e[0],t),this.dirtyStart=!0},s.startY=function(t){let e=this.start;e[1]=H(e[1],t),this.dirtyStart=!0},s.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.endX=function(){return this.currentEnd[0]},e.endY=function(){return this.currentEnd[1]},i.endX=function(t){null!=t&&(this.end[0]=t,this.dirtyEnd=!0)},i.endY=function(t){null!=t&&(this.end[1]=t,this.dirtyEnd=!0)},i.end=function(t,e){this.setCoordinateHelper("end",t,e),this.dirtyEnd=!0},s.endX=function(t){let e=this.end;e[0]=H(e[0],t),this.dirtyEnd=!0},s.endY=function(t){let e=this.end;e[1]=H(e[1],t),this.dirtyEnd=!0},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.dirtyEnd=!0},i.palette=function(t={}){"Palette"===t.type&&(this.palette=t)},i.paletteStart=function(t){t.toFixed&&(this.paletteStart=t,(t<0||t>999)&&(this.paletteStart=t>500?999:0))},s.paletteStart=function(t){let e;t.toFixed&&(e=this.paletteStart+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteStart=e)},i.paletteEnd=function(t){t.toFixed&&(this.paletteEnd=t,(t<0||t>999)&&(this.paletteEnd=t>500?999:0))},s.paletteEnd=function(t){let e;t.toFixed&&(e=this.paletteEnd+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteEnd=e)},i.colors=function(t){let e=this.palette;e&&e.colors&&e.set({colors:t})},i.delta=function(t={}){t&&(this.delta=U(this.delta,t))},t.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.palette;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},t.set=function(t={}){if(Object.keys(t).length){let e=this.setters,i=this.defs,s=this.palette,n=s?s.setters:{},r=s?s.defs:{};Object.entries(t).forEach(([t,o])=>{if(t&&"name"!==t&&null!=o){let a=e[t],h=!1;a||(a=n[t],h=!0),a?a.call(h?this.palette:this,o):void 0!==i[t]?this[t]=o:void 0!==r[t]&&(s[t]=o)}},this)}return this},t.setDelta=function(t={}){if(Object.keys(t).length){let e=this.deltaSetters,i=this.defs,s=this.palette,n=s?s.deltaSetters:{},r=s?s.defs:{};Object.entries(t).forEach(([t,o])=>{if(t&&"name"!==t&&null!=o){let a=e[t],h=!1;a||(a=n[t],h=!0),a?a.call(h?this.palette:this,o):void 0!==i[t]?this[t]=H(this[t],o):void 0!==r[t]&&(s[t]=H(this[t],o))}},this)}return this},t.setCoordinateHelper=function(t,e,i){let s=this[t];Array.isArray(e)?(s[0]=e[0],s[1]=e[1]):(s[0]=e,s[1]=i)},t.setDeltaCoordinateHelper=function(t,e,i){let s=this[t],n=s[0],r=s[1];Array.isArray(e)?(s[0]=H(n,e[0]),s[1]=H(r,e[1])):(s[0]=H(n,e),s[1]=H(r,i))},t.updateByDelta=function(){return this.setDelta(this.delta),this},t.stylesInit=function(t={}){this.makeName(t.name),this.register(),this.gradientArgs=[],this.start=Kt(),this.end=Kt(),this.currentStart=Kt(),this.currentEnd=Kt(),this.palette=function(t){return new Palette(t)}({name:this.name+"_palette"}),this.delta={},this.set(this.defs),this.set(t)},t.getData=function(t,e){return this.palette&&this.palette.dirtyPalette&&this.palette.recalculate(),this.cleanStyle(t,e),this.finalizeCoordinates(t),this.buildStyle(e)},t.cleanStyle=function(t={},e={}){let i,s,n,r;t.lockFillStyleToEntity||t.lockStrokeStyleToEntity?(i=t.currentDimensions,r=t.currentScale,s=i[0]*r,n=i[1]*r):(i=e.currentDimensions,s=i[0],n=i[1]),this.cleanPosition(this.currentStart,this.start,[s,n]),this.cleanPosition(this.currentEnd,this.end,[s,n]),this.cleanRadius(s)},t.cleanPosition=function(t,e,i){let s,n;for(let r=0;r<2;r++)s=e[r],n=i[r],s.toFixed?t[r]=s:t[r]="left"===s||"top"===s?0:"right"===s||"bottom"===s?n:"center"===s?n/2:parseFloat(s)/100*n},t.finalizeCoordinates=function(t={}){this.currentStart,this.currentEnd;let e,i,s=t.currentStampPosition,n=t.currentStampHandlePosition,r=t.currentScale;t.lockFillStyleToEntity||t.lockStrokeStyleToEntity?(e=-n[0]*r||0,i=-n[1]*r||0):(e=-s[0]||0,i=-s[1]||0),this.updateGradientArgs(e,i)},t.cleanRadius=B,t.buildStyle=function(t){return"rgba(0,0,0,0)"},t.addStopsToGradient=function(t,e,i,s){return this.palette?this.palette.addStopsToGradient(t,e,i,s):t},t.updateColor=function(t,e){return this.palette&&this.palette.updateColor(t,e),this},t.removeColor=function(t){return this.palette&&this.palette.removeColor(t),this},t}k.Palette=Palette;const Gradient=function(t={}){return this.stylesInit(t),this};let bs=Gradient.prototype=Object.create(Object.prototype);bs.type="Gradient",bs.lib="styles",bs.isArtefact=!1,bs.isAsset=!1,bs=Pt(bs),bs=ys(bs),bs.packetObjects=Z(bs.packetObjects,["palette"]),bs.buildStyle=function(t={}){if(t){let e=t.engine;if(e){let t=e.createLinearGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgba(0,0,0,0)"},bs.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.currentEnd,r=s[0]+t,o=s[1]+e,a=n[0]+t,h=n[1]+e;r===a&&o===h&&a++,i.length=0,i.push(r,o,a,h)};k.Gradient=Gradient;const Grid=function(t={}){return this.tileFill=[],this.tileSources=[],this.entityInit(t),t.tileSources||(this.tileSources=[].concat([{type:"color",source:"#000000"},{type:"color",source:"#ffffff"}])),t.tileFill?Array.isArray(t.tileFill)&&this.tileFill.length===t.tileFill.length&&(this.tileFill=t.tileFill):(this.tileFill.length=this.columns*this.rows,this.tileFill.fill(0)),this.tilePaths=[],this.tileRealCoordinates=[],this.tileVirtualCoordinates=[],t.dimensions||(t.width||(this.currentDimensions[0]=this.dimensions[0]=20),t.height||(this.currentDimensions[1]=this.dimensions[1]=20)),this};let Ss=Grid.prototype=Object.create(Object.prototype);Ss.type="Grid",Ss.lib="entity",Ss.isArtefact=!0,Ss.isAsset=!1,Ss=Pt(Ss),Ss=Hi(Ss);Ss.defs=G(Ss.defs,{columns:2,rows:2,columnGutterWidth:1,rowGutterWidth:1,tileSources:null,tileFill:null,gutterColor:"#808080"}),Ss.packetExclusions=Z(Ss.packetExclusions,["tileSources"]),Ss.finalizePacketOut=function(t,e){let i=t.tileSources=[];this.tileSources.forEach(t=>{i.push({type:t.type,source:V(t.source)?t.source.name:t.source})}),V(t.gutterColor)&&(t.gutterColor=t.gutterColor.name);let s=JSON.parse(this.state.saveAsPacket(e))[3];return t=G(t,s),t=this.handlePacketAnchor(t,e)};Ss.getters;let Ps=Ss.setters,ks=Ss.deltaSetters;Ps.columns=function(t){if(W(t)&&(Number.isInteger(t)||(t=parseInt(t,10)),t!==this.columns)){let e,i,s,n=this.tileFill,r=this.columns,o=[];for(this.columns=t,e=0,i=this.rows;e{W(t)&&(i[t]=e)}))},Ss.setTileSourceTo=function(t,e){W(t)&&V(e)&&e.type&&e.source&&(this.tileSources[t]=e)},Ss.removeTileSource=function(t){W(t)&&t&&(this.tileSources[t]=null,this.tileFill=this.tileFill.map(e=>e===t?0:e))},Ss.getTileSource=function(t,e){if(W(t))return W(e)?this.tileFill[t*this.rows+e]:this.tileFill[t]},Ss.getTilesUsingSource=function(t){let e=[];return W(t)&&this.tileFill.forEach((i,s)=>i==t&&e.push(s)),e},Ss.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=new Path2D,i=new Path2D,s=this.currentStampHandlePosition,n=this.currentScale,r=this.currentDimensions,o=-s[0]*n,a=-s[1]*n,h=r[0]*n,c=r[1]*n;t.rect(o,a,h,c);let l,u,d,f,p=this.columns,m=this.rows,g=h/p,y=c/m,b=this.tilePaths,S=this.tileRealCoordinates,P=this.tileVirtualCoordinates;for(e.moveTo(o,a),e.lineTo(o+h,a),l=1;l<=m;l++){let t=a+l*y;e.moveTo(o,t),e.lineTo(o+h,t)}for(this.rowLines=e,i.moveTo(o,a),i.lineTo(o,a+c),u=1;u<=p;u++){let t=o+u*g;i.moveTo(t,a),i.lineTo(t,a+c)}for(this.columnLines=i,b.length=0,S.length=0,P.length=0,l=0;l{if(r&&r.type)switch(r.type){case"color":t.fillStyle=r.source;break;case"cellGradient":this.lockFillStyleToEntity=!1,t.fillStyle=r.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.fillStyle=r.source.getData(this,this.currentHost)}let y=o.map(t=>t===g);if(y.length)switch(r.type){case"gridPicture":e=r.source.substring?c[r.source]:r.source,e.simpleStamp&&(n.width=m[0]*p,n.height=m[1]*p,s.globalCompositeOperation="source-over",s.fillStyle="#000000",y.forEach((t,e)=>{t&&s.fillRect(l[e][0],l[e][1],d,f)}),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*p,height:m[1]*p,method:"fill"}),t.drawImage(n,h[0][0],h[0][1]));break;case"tilePicture":e=r.source.substring?c[r.source]:r.source,e.simpleStamp&&(n.width=d,n.height=f,s.globalCompositeOperation="source-over",e.simpleStamp(i,{startX:0,startY:0,width:d,height:f,method:"fill"}),y.forEach((e,i)=>e&&t.drawImage(n,h[i][0],h[i][1])));break;default:y.forEach((e,i)=>e&&t.fill(a[i],u))}});let g,y=this.gutterColor,b=this.rowGutterWidth,S=this.columnGutterWidth;if(Q(y)){switch(y.substring?g={type:"color",source:this.gutterColor}:V(y)?g=y:W(y)&&V(r[y])&&(g=r[y]),g.type){case"cellGradient":this.lockFillStyleToEntity=!1,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"color":t.strokeStyle=g.source}switch(g.type){case"gridPicture":case"tilePicture":if((b||S)&&(e=g.source.substring?c[g.source]:g.source,e.simpleStamp)){let r=this.currentStampHandlePosition,o=this.currentScale,a=r[0]*o,c=r[1]*o;n.width=m[0]*o,n.height=m[1]*o,s.globalCompositeOperation="source-over",s.strokeStyle="#000000",s.translate(a,c),b&&(s.lineWidth=b,s.stroke(this.rowLines)),S&&(s.lineWidth=S,s.stroke(this.columnLines)),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*o,height:m[1]*o,method:"fill"}),t.drawImage(n,h[0][0],h[0][1]),s.translate(0,0)}break;default:b&&(t.lineWidth=b,t.stroke(this.rowLines)),S&&(t.lineWidth=S,t.stroke(this.columnLines))}}Ce(i),t.restore()},Ss.fill=function(t){this.performFill(t)},Ss.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t)},Ss.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t),t.stroke(e)},Ss.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),this.performFill(t)},Ss.fillThenDraw=function(t){let e=this.pathObject;this.performFill(t),t.stroke(e)},Ss.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=xe(),s=!0);let n,r,o,a=e.engine,h=this.currentStampPosition,c=h[0],l=h[1],u=new Set,d=this.tilePaths;const f=t=>{let e,i;if(Array.isArray(t))e=t[0],i=t[1];else{if(!K(t,t.x,t.y))return[!1];e=t.x,i=t.y}return!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i)?[!1]:[!0,e,i]};return e.rotateDestination(a,c,l,this),i.some(t=>([n,r,o]=f(t),!!n&&a.isPointInPath(this.pathObject,r,o,this.winding)),this)?(i.forEach(t=>{[n,r,o]=f(t),n&&d.some((t,e)=>!!a.isPointInPath(t,r,o,this.winding)&&(u.add(e),!0))}),s&&Ce(e),{x:r,y:o,tiles:[...u],artefact:this}):(s&&Ce(e),!1)};k.Grid=Grid;const Line=function(t={}){return this.curveInit(t),this.shapeInit(t),this};let vs=Line.prototype=Object.create(Object.prototype);vs.type="Line",vs.lib="entity",vs.isArtefact=!0,vs.isAsset=!1,vs=Pt(vs),vs=Ii(vs),vs=Yi(vs),vs.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeLinePath(),this.pathDefinition=t},vs.makeLinePath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentEnd;return`m0,0l${(i-t).toFixed(2)},${(s-e).toFixed(2)}`},vs.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyEnd=!0},vs.preparePinsForStamp=function(){let t=this.endPivot,e=this.endPath;this.dirtyPins.forEach(i=>{(t&&t.name===i||e&&e.name===i)&&(this.dirtyEnd=!0,this.endLockTo.includes("path")&&(this.currentEndPathData=!1))}),this.dirtyPins.length=0};k.Line=Line;const Loom=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.state=Gt(),t.group||(t.group=ci),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.delta={},this.set(t),this.fromPathData=[],this.toPathData=[],this.watchFromPath=null,this.watchIndex=-1,this.engineInstructions=[],this.engineDeltaLengths=[],this};let xs=Loom.prototype=Object.create(Object.prototype);xs.type="Loom",xs.lib="entity",xs.isArtefact=!0,xs.isAsset=!1,xs=Pt(xs),xs=pe(xs);xs.defs=G(xs.defs,{fromPath:null,toPath:null,fromPathStart:0,fromPathEnd:1,toPathStart:0,toPathEnd:1,synchronizePathCursors:!0,loopPathCursors:!0,constantPathSpeed:!0,isHorizontalCopy:!0,showBoundingBox:!1,boundingBoxColor:"#000000",source:null,sourceIsVideoOrSprite:!1,interferenceLoops:2,interferenceFactor:1.03,visibility:!0,order:0,delta:null,host:null,group:null,anchor:null,noCanvasEngineUpdates:!1,noDeltaUpdates:!1,onEnter:null,onLeave:null,onDown:null,onUp:null,noUserInteraction:!1,method:"fill"}),xs.packetExclusions=Z(xs.packetExclusions,["pathObject","state"]),xs.packetExclusionsByRegex=Z(xs.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),xs.packetCoordinates=Z(xs.packetCoordinates,[]),xs.packetObjects=Z(xs.packetObjects,["group","fromPath","toPath","source"]),xs.packetFunctions=Z(xs.packetFunctions,["onEnter","onLeave","onDown","onUp"]),xs.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},xs.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=G(t,i),t=this.handlePacketAnchor(t,e)},xs.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},xs.clone=$;let Cs=xs.getters,As=xs.setters,ws=xs.deltaSetters;xs.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},xs.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=r?r.setters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,h])=>{t&&"name"!==t&&null!=h&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,h):void 0!==n[t]?this[t]=h:void 0!==a[t]&&(r[t]=h))},this)}return this},xs.setDelta=function(t={}){if(Object.keys(t).length){let e,i,s=this.deltaSetters,n=this.defs,r=this.state,o=r?r.deltaSetters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,h])=>{t&&"name"!==t&&null!=h&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,h):void 0!==n[t]?this[t]=addStrings(this[t],h):void 0!==a[t]&&(r[t]=addStrings(r[t],h)))},this)}return this},As.host=function(t){if(t){let e=i[t];e&&e.here?this.host=e.name:this.host=t}else this.host=""},Cs.group=function(){return this.group?this.group.name:""},As.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=group[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},xs.getHere=function(){return currentCorePosition},As.delta=function(t={}){t&&(this.delta=U(this.delta,t))},As.fromPath=function(t){if(t){let e=this.fromPath,s=t.substring?i[t]:t,n=this.name;s&&s.name&&s.useAsPath&&(e&&e.name!==s.name&&removeItem(e.pathed,n),Z(s.pathed,n),this.fromPath=s,this.dirtyStart=!0)}},As.toPath=function(t){if(t){let e=this.toPath,s=t.substring?i[t]:t,n=this.name;s&&s.name&&s.useAsPath&&(e&&e.name!==s.name&&removeItem(e.pathed,n),Z(s.pathed,n),this.toPath=s,this.dirtyStart=!0)}},As.source=function(t){if((t=t.substring?i[t]:t)&&"Picture"===t.type){let e=this.source;e&&"Picture"===e.type&&e.imageUnsubscribe(this.name),this.source=t,t.imageSubscribe(this.name),this.dirtyInput=!0}},As.isHorizontalCopy=function(t){this.isHorizontalCopy=!!t,this.dirtyPathData=!0},As.synchronizePathCursors=function(t){this.synchronizePathCursors=!!t,t&&(this.toPathStart=this.fromPathStart,this.toPathEnd=this.fromPathEnd),this.dirtyPathData=!0},As.loopPathCursors=function(t){if(this.loopPathCursors=!!t,t){let t,e=Math.floor;t=this.fromPathStart,(t<0||t>1)&&(this.fromPathStart=t-e(t)),t=this.fromPathEnd,(t<0||t>1)&&(this.fromPathEnd=t-e(t)),t=this.toPathStart,(t<0||t>1)&&(this.toPathStart=t-e(t)),t=this.toPathEnd,(t<0||t>1)&&(this.toPathEnd=t-e(t))}this.dirtyOutput=!0},As.fromPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathStart=t,this.synchronizePathCursors&&(this.toPathStart=t),this.dirtyPathData=!0},ws.fromPathStart=function(t){let e=this.fromPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathStart=e,this.synchronizePathCursors&&(this.toPathStart=e),this.dirtyPathData=!0},As.fromPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathEnd=t,this.synchronizePathCursors&&(this.toPathEnd=t),this.dirtyPathData=!0},ws.fromPathEnd=function(t){let e=this.fromPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathEnd=e,this.synchronizePathCursors&&(this.toPathEnd=e),this.dirtyPathData=!0},As.toPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathStart=t,this.synchronizePathCursors&&(this.fromPathStart=t),this.dirtyPathData=!0},ws.toPathStart=function(t){let e=this.toPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathStart=e,this.synchronizePathCursors&&(this.fromPathStart=e),this.dirtyPathData=!0},As.toPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathEnd=t,this.synchronizePathCursors&&(this.fromPathEnd=t),this.dirtyPathData=!0},ws.toPathEnd=function(t){let e=this.toPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathEnd=e,this.synchronizePathCursors&&(this.fromPathEnd=e),this.dirtyPathData=!0},xs.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=i[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return currentCorePosition},xs.updateByDelta=function(){return this.setDelta(this.delta),this},xs.reverseByDelta=function(){let t={};return Object.entries(this.delta).forEach(([e,i])=>{i=i.substring?-parseFloat(i)+"%":-i,t[e]=i}),this.setDelta(t),this},xs.setDeltaValues=function(t={}){let e,i,s=this.delta;return Object.entries(t).forEach(([t,n])=>{if(xt(s[t]))switch(i=n,e=s[t],i){case"reverse":e.toFixed&&(s[t]=-e);break;case"zero":e.toFixed&&(s[t]=0)}}),this},xs.midInitActions=B,xs.cleanCollisionData=function(){return[0,[]]},xs.getSensors=function(){return[]},xs.prepareStamp=function(){let t=this.fromPath,e=this.toPath,[i,s,n,r]=this.getBoundingBox();if(!this.dirtyPathData){let{x:i,y:s}=t.getPathPositionData(0),{x:n,y:r}=t.getPathPositionData(1),{x:o,y:a}=e.getPathPositionData(0),{x:h,y:c}=e.getPathPositionData(1),l=[i,s,n,r,o,a,h,c];this.pathTests&&!this.pathTests.some((t,e)=>t!==l[e])||(this.pathTests=l,this.dirtyPathData=!0)}if(this.dirtyPathData||!this.fromPathData.length){this.dirtyPathData=!1,this.watchIndex=-1,this.engineInstructions.length=0,this.engineDeltaLengths.length=0;let n=Math.ceil,r=Math.max,o=Math.min,a=this.fromPathData;a.length=0;let h=this.toPathData;if(h.length=0,t&&e){let c,l,u,d,f=n(t.length),p=n(e.length);c=this.setSourceDimension(r(f,p));let m,g,y,b=this.fromPathStart,S=this.fromPathEnd,P=this.toPathStart,k=this.toPathEnd,v=this.constantPathSpeed;m=b{t.cleanInput().catch(i=>{console.log(t.name+" - cleanInput Error: source has a zero dimension"),e(!1)}).then(e=>(t.sourceImageData=e,t.cleanOutput())).then(e=>(t.output=e,t.regularStamp())).then(t=>{e(!0)}).catch(t=>{i(t)})}):i?new Promise((e,i)=>{t.cleanOutput().then(e=>(t.output=e,t.regularStamp())).then(t=>{e(!0)}).catch(t=>{i(t)})}):this.regularStamp()}return Promise.resolve(!1)},xs.cleanInput=function(){let t=this;return new Promise((e,i)=>{t.dirtyInput=!1,t.setSourceDimension();let s=t.sourceDimension;s||(t.dirtyInput=!0,i());let n=xe(),r=n.engine,o=n.element;o.width=s,o.height=s,r.setTransform(1,0,0,1,0,0),t.source.stamp(!0,n,{startX:0,startY:0,handleX:0,handleY:0,offsetX:0,offsetY:0,roll:0,scale:1,width:s,height:s,method:"fill"}).then(t=>{let i=r.getImageData(0,0,s,s);Ce(n),e(i)}).catch(t=>{Ce(n),i(t)})})},xs.cleanOutput=function(){let t=this;return new Promise((e,i)=>{t.dirtyOutput=!1,t.setSourceDimension();let s=t.sourceDimension,n=t.sourceImageData;if(s&&n){let i,r,o,a,h,c,l,u,d,f,p,m=Math.hypot,g=Math.floor,y=Math.ceil,b=Math.atan2,S=Math.cos,P=Math.sin,k=t.fromPathData,v=t.toPathData,x=k.length,C=t.fromPathStart*x,A=t.fromPathSteps||1,w=t.toPathStart*x,D=t.toPathSteps||1,O=.5*Math.PI,E=O-1.5708,T=t.isHorizontalCopy,R=t.loopPathCursors,F=t.watchFromPath,H=t.watchIndex,L=t.engineInstructions,j=t.engineDeltaLengths,[B,$,M,z]=t.getBoundingBox(),I=xe(),X=I.engine,Y=I.element;Y.width=s,Y.height=s,X.setTransform(1,0,0,1,0,0),X.putImageData(n,0,0);let N=xe(),W=N.engine,V=N.element;if(V.width=M,V.height=z,W.globalAlpha=t.state.globalAlpha,W.setTransform(1,0,0,1,0,0),!L.length){for(let t=0;t=0&&w>=0?([i,r]=k[g(C)],[o,a]=v[g(w)],h=o-i,c=a-r,l=m(h,c),T?(u=-b(h,c)+O,d=S(u),f=P(u),L.push([d,f,-f,d,i,r]),j.push(l)):(u=-b(h,c)+E,d=S(u),f=P(u),L.push([d,f,-f,d,i,r,l]),j.push(l))):(L.push(!1),j.push(!1)),C+=A,w+=D,R&&(C>=x&&(C-=x),w>=x&&(w-=x));H<0&&(H=0),t.watchIndex=H}if(T)for(let t=0;t=s&&(H=0);else for(let t=0;t=s&&(H=0);let q=t.interferenceFactor,G=t.interferenceLoops,U=y(M*q),Z=y(z*q);Y.width=U,Y.height=Z,W.setTransform(1,0,0,1,0,0),X.setTransform(1,0,0,1,0,0);for(let t=0;t{t.currentHost&&(t.regularStampSynchronousActions(),e(!0)),i(new Error(t.name+" has no current host"))})},xs.regularStampSynchronousActions=function(){let t=this.currentHost;if(t){let e=t.engine;this.noCanvasEngineUpdates||t.setEngine(this),this[this.method](e)}},xs.getBoundingBox=function(){let t=this.fromPath,e=this.toPath;if(t&&e){if(this.dirtyStart)if(t.getBoundingBox&&e.getBoundingBox){this.dirtyStart=!1;let[i,s,n,r,o,a]=t.getBoundingBox(),[h,c,l,u,d,f]=e.getBoundingBox();(isNaN(i)||isNaN(s)||isNaN(n)||isNaN(r)||isNaN(o)||isNaN(a)||isNaN(h)||isNaN(c)||isNaN(l)||isNaN(u)||isNaN(d)||isNaN(f))&&(this.dirtyStart=!0),i==h&&s==c&&n==l&&r==u&&o==d&&a==f&&(this.dirtyStart=!0),i+=o,s+=a,h+=d,c+=f;let p=Math.min(i,h),m=Math.max(i+n,h+l),g=Math.min(s,c),y=Math.max(s+r,c+u);this.boundingBox=[p,g,m-p,y-g],this.dirtyPathData=!0}else this.boundingBox=[0,0,0,0]}else this.boundingBox=[0,0,0,0];return this.boundingBox},xs.fill=function(t){this.doFill(t),this.showBoundingBox&&this.drawBoundingBox(t)},xs.draw=function(t){this.doStroke(t),this.showBoundingBox&&this.drawBoundingBox(t)},xs.drawAndFill=function(t){this.doStroke(t),this.currentHost.clearShadow(),this.doFill(t),this.showBoundingBox&&this.drawBoundingBox(t)},xs.fillAndDraw=function(t){this.doFill(t),this.currentHost.clearShadow(),this.doStroke(t),this.showBoundingBox&&this.drawBoundingBox(t)},xs.drawThenFill=function(t){this.doStroke(t),this.doFill(t),this.showBoundingBox&&this.drawBoundingBox(t)},xs.fillThenDraw=function(t){this.doFill(t),this.doStroke(t),this.showBoundingBox&&this.drawBoundingBox(t)},xs.clear=function(t){let e=this.output,i=!!this.currentHost&&this.currentHost.element,s=t.globalCompositeOperation;if(e&&i){let i=xe(),n=i.engine,r=i.element,[o,a,h,c]=this.getBoundingBox();r.width=h,r.height=c,n.putImageData(e,0,0),t.setTransform(1,0,0,1,0,0),t.globalCompositeOperation="destination-out",t.drawImage(r,0,0,h,c,o,a,h,c),t.globalCompositeOperation=s,Ce(i),this.showBoundingBox&&this.drawBoundingBox(t)}},xs.none=B,xs.doStroke=function(t){let e=this.fromPath,i=this.toPath;if(e&&e.getBoundingBox&&i&&i.getBoundingBox){let s=this.currentHost;if(s){let n=e.currentStampPosition,r=e.getPathPositionData(1),o=i.currentStampPosition,a=i.getPathPositionData(1);s.rotateDestination(t,n[0],n[1],e),t.stroke(e.pathObject),s.rotateDestination(t,o[0],o[1],e),t.stroke(i.pathObject),t.setTransform(1,0,0,1,0,0),t.beginPath(),t.moveTo(r.x,r.y),t.lineTo(a.x,a.y),t.moveTo(...o),t.lineTo(...n),t.closePath(),t.stroke()}}},xs.doFill=function(t){let e=this.output,i=!!this.currentHost&&this.currentHost.element;if(e&&i){let i=xe(),s=i.engine,n=i.element,[r,o,a,h]=this.getBoundingBox();n.width=a,n.height=h,s.putImageData(e,0,0),t.setTransform(1,0,0,1,0,0),t.drawImage(n,0,0,a,h,r,o,a,h),Ce(i)}},xs.drawBoundingBox=function(t){this.dirtyStart&&this.getBoundingBox(),t.save();let e=t.getTransform();t.setTransform(1,0,0,1,0,0),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.strokeRect(...this.boundingBox),t.restore(),t.setTransform(e)},xs.checkHit=function(t=[]){if(this.noUserInteraction)return!1;let e,i,s,n,r,o=Array.isArray(t)?t:[t],a=!(!this.output||!this.output.data)&&this.output.data;if(a){let[t,h,c,l]=this.getBoundingBox();if(o.some(o=>{if(Array.isArray(o))e=o[0],i=o[1];else{if(!K(o,o.x,o.y))return!1;e=o.x,i=o.y}return!(!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i))&&(s=e-t,n=i-h,!(s<0||s>c||n<0||n>l)&&(r=4*(n*c+s)+3,!!a&&a[r]>0))},this))return{x:e,y:i,artefact:this}}return!1};k.Loom=Loom;const Spring=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.action||(this.action=B),this};let Ds=Spring.prototype=Object.create(Object.prototype);Ds.type="Spring",Ds.lib="spring",Ds.isArtefact=!1,Ds.isAsset=!1,Ds=Pt(Ds);Ds.defs=G(Ds.defs,{particleFrom:null,particleFromIsStatic:!1,particleTo:null,particleToIsStatic:!1,springConstant:50,damperConstant:10,restLength:1}),Ds.packetObjects=Z(Ds.packetObjects,["particleFrom","particleTo"]),Ds.kill=function(){return this.deregister(),!0};let Os=Ds.setters;Os.particleFrom=function(t){t.substring&&(t=d[t]),t&&"Particle"===t.type&&(this.particleFrom=t)},Os.particleTo=function(t){t.substring&&(t=d[t]),t&&"Particle"===t.type&&(this.particleTo=t)},Ds.applySpring=function(){let{particleFrom:t,particleTo:e,particleFromIsStatic:i,particleToIsStatic:s,springConstant:n,damperConstant:r,restLength:o}=this;if(t&&e){let{position:a,velocity:h,load:c}=t,{position:l,velocity:u,load:d}=e,f=Fe(u).vectorSubtract(h),p=Fe(l).vectorSubtract(a),m=Fe(p).normalize(),g=Fe(m);m.scalarMultiply(n*(p.getMagnitude()-o)),f.vectorMultiply(g).scalarMultiply(r).vectorMultiply(g);let y=Fe(m).vectorAdd(f);i||c.vectorAdd(y),s||d.vectorSubtract(y),He(f)}};const Es=function(t){return new Spring(t)};k.Spring=Spring;const Net=function(t={}){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.generate=B,this.postGenerate=B,this.stampAction=B,this.particleStore=[],this.springs=[],t.group||(t.group=ci),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Ts=Net.prototype=Object.create(Object.prototype);Ts.type="Net",Ts.lib="entity",Ts.isArtefact=!0,Ts.isAsset=!1,Ts=Pt(Ts),Ts=Hi(Ts);Ts.defs=G(Ts.defs,{world:null,artefact:null,historyLength:1,forces:null,mass:1,engine:"euler",springConstant:50,damperConstant:10,restLength:1,showSprings:!1,showSpringsColor:"#000000",rows:0,columns:0,rowDistance:0,columnDistance:0,shapeTemplate:null,precision:20,joinTemplateEnds:!1,particlesAreDraggable:!1,hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),Ts.packetExclusions=Z(Ts.packetExclusions,["forces","springs","particleStore"]),Ts.packetExclusionsByRegex=Z(Ts.packetExclusionsByRegex,[]),Ts.packetCoordinates=Z(Ts.packetCoordinates,[]),Ts.packetObjects=Z(Ts.packetObjects,["world","artefact","shapeTemplate"]),Ts.packetFunctions=Z(Ts.packetFunctions,["generate","postGenerate","stampAction"]),Ts.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach(t=>{t.substring?e.push(t):V(t)&&t.name&&e.push(t.name)}),t.forces=e}let s=[];return this.particleStore.forEach(t=>s.push(t.saveAsPacket())),t.particleStore=s,t},Ts.postCloneAction=function(t,e){return t},Ts.factoryKill=function(t,e){this.isRunning=!1,t&&(this.artefact.kill(),this.shapeTemplate&&this.shapeTemplate.kill()),e&&this.world.kill(),this.purgeParticlesFromLibrary()},Ts.purgeParticlesFromLibrary=function(){let{particleStore:t,springs:e}=this;s.forEach(t=>{let e=i[t];e&&(e.particle&&!e.particle.substring&&e.particle.name&&(e.particle=e.particle.name),"Polyline"===e.type&&e.useParticlesAsPins&&e.pins.forEach((t,i)=>{V(t)&&"Particle"===t.type&&(e.pins[i]=t.name,e.dirtyPins=!0)}))}),t.forEach(t=>t.kill()),t.length=0,e.forEach(t=>t.kill()),e.length=0};Ts.getters;let Rs=Ts.setters;Ts.deltaSetters;Rs.generate=function(t){N(t)?this.generate=t:t.substring&&Fs[t]&&(this.generate=Fs[t])},Rs.postGenerate=function(t){N(t)&&(this.postGenerate=t)},Rs.stampAction=function(t){N(t)&&(this.stampAction=t)},Rs.world=function(t){let e;t.substring?e=g[t]:V(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},Rs.artefact=function(t){let e;t.substring?e=i[t]:V(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e)},Rs.shapeTemplate=function(t){let e;t.substring?e=c[t]:V(t)&&t.isArtefact&&Q(t.species)&&(e=t),e&&(this.shapeTemplate=e)},Ts.regularStampSynchronousActions=function(){let{world:t,artefact:e,particleStore:i,springs:s,generate:n,postGenerate:r,stampAction:o,lastUpdated:a,resetAfterBlur:h,showSprings:c,showSpringsColor:l,showHitRadius:u,hitRadius:d,hitRadiusColor:f}=this,p=1,m="source-over";this.state&&(p=this.state.globalAlpha,m=this.state.globalCompositeOperation);let g=this.currentHost,y=.016,b=Date.now();if(a&&(y=(b-a)/1e3),y>h&&(this.purgeParticlesFromLibrary(),y=.016),i.length||(n.call(this,g),r.call(this)),i.forEach(e=>e.applyForces(t,g)),s.forEach(t=>t.applySpring()),i.forEach(e=>e.update(y,t)),c){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.strokeStyle=l,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgba(0,0,0,0)",t.lineWidth=1,t.setTransform(1,0,0,1,0,0),t.beginPath(),s.forEach(e=>{let{particleFrom:i,particleTo:s}=e;t.moveTo(i.position.x,i.position.y),t.lineTo(s.position.x,s.position.y)}),t.stroke(),t.restore()}if(i.forEach(t=>{t.manageHistory(y,g),o.call(this,e,t,g)}),u){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.lineWidth=1,t.strokeStyle=f,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgba(0,0,0,0)",t.setTransform(1,0,0,1,0,0),t.beginPath(),i.forEach(e=>{t.moveTo(e.position.x,e.position.y),t.arc(e.position.x,e.position.y,d,0,2*Math.PI)}),t.stroke(),t.restore()}this.lastUpdated=b},Ts.restart=function(){return this.purgeParticlesFromLibrary(),this.lastUpdated=Date.now(),this},Ts.checkHit=function(t=[],e){if(this.lastHitParticle=null,!this.particlesAreDraggable)return!1;if(this.noUserInteraction)return!1;let i,s,n,r,o,a=Array.isArray(t)?t:[t],h=this.particleStore,c=!1;if(a.some(t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!K(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=Fe();for(n=0,r=h.length;n0&&c>0){let f,p,S,P,k,[v,x]=this.currentStampPosition,[C,A]=t.currentDimensions,w=l.substring?parseFloat(l)/100*A:l,D=u.substring?parseFloat(u)/100*A:u;for(P=0;P0&&c>0){let f,p,S,P,k,[v,x]=this.currentStampPosition,[C,A]=t.currentDimensions,w=l.substring?parseFloat(l)/100*A:l,D=u.substring?parseFloat(u)/100*A:u;for(P=0;P0;k--)E=d[`${m}-${k}-${P}`],T=d[`${m}-${k-1}-${P+1}`],O(E,T,`${m}-${k}-${P}~${m}-${k-1}-${P+1}`)}},"weak-shape":function(t){let{particleStore:e,artefact:i,historyLength:s,engine:n,forces:r,springs:o,mass:a,showSprings:h,showSpringsColor:c,name:l,springConstant:u,damperConstant:f,restLength:p,shapeTemplate:m,precision:g,joinTemplateEnds:y}=this;const b=function(t,e,i){let s,n,r;s=Fe(t.position).vectorSubtract(e.position),n=s.getMagnitude(),r=Es({name:i,particleFrom:t,particleTo:e,springConstant:u,damperConstant:f,restLength:n*p}),o.push(r),He(s)};let S,P,k,v;if(m&&g){for(S=0;S=0){for(S=0;S=0||t.type;let[C,A]=e.get("position");x=rs({name:f+"-hub",positionX:C,positionY:A,positionZ:0,velocityX:0,velocityY:0,velocityZ:0,historyLength:r,engine:o,forces:a,mass:c,fill:n.get("fillStyle"),stroke:n.get("strokeStyle")}),x.run(0,0,!1),s.forEach((t,e)=>b(t,x,`${f}-${e}-hub`)),s.push(x)}}};k.Net=Net;const Oval=function(t={}){return this.shapeInit(t),this};let Hs=Oval.prototype=Object.create(Object.prototype);Hs.type="Oval",Hs.lib="entity",Hs.isArtefact=!0,Hs.isAsset=!1,Hs=Pt(Hs),Hs=Ii(Hs);Hs.defs=G(Hs.defs,{radiusX:5,radiusY:5,intersectX:.5,intersectY:.5,offshootA:.55,offshootB:0});let Ls=Hs.setters,js=Hs.deltaSetters;Ls.radius=function(t){this.setRectHelper(t,["radiusX","radiusY"])},Ls.radiusX=function(t){this.setRectHelper(t,["radiusX"])},Ls.radiusY=function(t){this.setRectHelper(t,["radiusY"])},js.radius=function(t){this.deltaRectHelper(t,["radiusX","radiusY"])},js.radiusX=function(t){this.deltaRectHelper(t,["radiusX"])},js.radiusY=function(t){this.deltaRectHelper(t,["radiusY"])},Ls.offshootA=function(t){this.offshootA=t,this.updateDirty()},Ls.offshootB=function(t){this.offshootB=t,this.updateDirty()},js.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},js.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},Ls.intersectA=function(t){this.intersectA=t,this.updateDirty()},Ls.intersectB=function(t){this.intersectB=t,this.updateDirty()},js.intersectA=function(t){t.toFixed&&(this.intersectA+=t,this.updateDirty())},js.intersectB=function(t){t.toFixed&&(this.intersectB+=t,this.updateDirty())},Hs.setRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=t},this)},Hs.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=addStrings(this[e],t)},this)},Hs.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeOvalPath(),this.pathDefinition=t},Hs.makeOvalPath=function(){let t,e,i=parseFloat(this.offshootA.toFixed(6)),s=parseFloat(this.offshootB.toFixed(6)),n=this.radiusX,r=this.radiusY;if(n.substring||r.substring){let i=this.getHost();if(i){let[s,o]=i.currentDimensions;t=2*(n.substring?parseFloat(n)/100*s:n),e=2*(r.substring?parseFloat(r)/100*o:r)}}else t=2*n,e=2*r;let o=parseFloat((t*this.intersectX).toFixed(2)),a=parseFloat((t-o).toFixed(2)),h=parseFloat((e*this.intersectY).toFixed(2)),c=parseFloat((e-h).toFixed(2)),l="m0,0";return l+=`c${a*i},${h*s} ${a-a*s},${h-h*i}, ${a},${h} `,l+=`${-a*s},${c*i} ${a*i-a},${c-c*s} ${-a},${c} `,l+=`${-o*i},${-c*s} ${o*s-o},${c*i-c} ${-o},${-c} `,l+=`${o*s},${-h*i} ${o-o*i},${h*s-h} ${o},${-h}z`,l},Hs.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};k.Oval=Oval;const VideoAsset=function(t={}){return this.assetConstructor(t)};let Bs=VideoAsset.prototype=Object.create(Object.prototype);Bs.type="Video",Bs.lib="asset",Bs.isArtefact=!1,Bs.isAsset=!0,Bs=Pt(Bs),Bs=Jt(Bs),Bs.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Bs.stringifyFunction=B,Bs.processPacketOut=B,Bs.finalizePacketOut=B,Bs.clone=$;Bs.getters;let $s=Bs.setters;Bs.deltaSetters;$s.source=function(t={}){t&&("VIDEO"===t.tagName.toUpperCase()&&(this.source=t,this.sourceNaturalWidth=t.videoWidth||0,this.sourceNaturalHeight=t.videoHeight||0,this.sourceLoaded=t.readyState>2),this.sourceLoaded&&this.notifySubscribers())},Bs.checkSource=function(t,e){let i=this.source;i&&i.readyState>2?(this.sourceLoaded=!0,this.sourceNaturalWidth===i.videoWidth&&this.sourceNaturalHeight===i.videoHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.videoWidth,this.sourceNaturalHeight=i.videoHeight,this.notifySubscribers())):this.sourceLoaded=!1},Bs.addTextTrack=function(t,e,i){let s=this.source;s&&s.addTextTrack&&s.addTextTrack(t,e,i)},Bs.captureStream=function(){let t=this.source;return!(!t||!t.captureStream)&&t.captureStream()},Bs.canPlayType=function(t){let e=this.source;return e?e.canPlayType(t):"maybe"},Bs.fastSeek=function(t){let e=this.source;e&&e.fastSeek&&e.fastSeek(t)},Bs.load=function(){let t=this.source;t&&t.load()},Bs.pause=function(){let t=this.source;t&&t.pause()},Bs.play=function(){let t=this.source;return t?t.play().catch(t=>console.log(t.code,t.name,t.message)):Promise.reject("Source not defined")},Bs.setMediaKeys=function(t){let e=this.source;return e?e.setMediaKeys?e.setMediaKeys(t):Promise.reject("setMediaKeys not supported"):Promise.reject("Source not defined")},Bs.setSinkId=function(){let t=this.source;return t?t.setSinkId?t.setSinkId():Promise.reject("setSinkId not supported"):Promise.reject("Source not defined")};const Ms=["video_audioTracks","video_autoPlay","video_buffered","video_controller","video_controls","video_controlsList","video_crossOrigin","video_currentSrc","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_duration","video_ended","video_error","video_loop","video_mediaGroup","video_mediaKeys","video_muted","video_networkState","video_paused","video_playbackRate","video_readyState","video_seekable","video_seeking","video_sinkId","video_src","video_srcObject","video_textTracks","video_videoTracks","video_volume"],zs=["video_autoPlay","video_controller","video_controls","video_crossOrigin","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_loop","video_mediaGroup","video_muted","video_playbackRate","video_src","video_srcObject","video_volume"],Is=function(...t){let e=/.*\/(.*?)\./,i="";if(t.length){let s,n,r,o,a,h,c=!1,l=t[0];if(l.substring){let i=e.exec(l);s=i&&i[1]?i[1]:"",a=[...t],n="",r=!1,o=null,h="auto",c=!0}else l&&l.src&&(s=l.name||"",a=[...l.src],n=l.className||"",r=l.visibility||!1,o=document.querySelector(o),h=l.preload||"auto",c=!0);let u=Xs({name:s});if(c){let t=document.createElement("video");t.name=s,t.className=n,t.style.display=r?"block":"none",t.crossOrigin="anonymous",t.preload=h,a.forEach(e=>{let i=document.createElement("source");i.src=e,t.appendChild(i)}),t.onload=()=>{u.set({source:t}),o&&o.appendChild(t)},u.set({source:t}),i=s}}return i},Xs=function(t){return new VideoAsset(t)};k.VideoAsset=VideoAsset;const SpriteAsset=function(t={}){return this.assetConstructor(t),this};let Ys=SpriteAsset.prototype=Object.create(Object.prototype);Ys.type="Sprite",Ys.lib="asset",Ys.isArtefact=!1,Ys.isAsset=!0,Ys=Pt(Ys),Ys=Jt(Ys);Ys.defs=G(Ys.defs,{manifest:null}),Ys.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Ys.stringifyFunction=B,Ys.processPacketOut=B,Ys.finalizePacketOut=B,Ys.clone=$;Ys.getters;let Ns=Ys.setters;Ys.deltaSetters;Ns.source=function(t=[]){if(t&&t[0]){this.sourceHold||(this.sourceHold={});let e=this.sourceHold;t.forEach(t=>{let i=t.id||t.name;i&&(e[i]=t)}),this.source=t[0],this.sourceNaturalWidth=t[0].naturalWidth,this.sourceNaturalHeight=t[0].naturalHeight,this.sourceLoaded=t[0].complete}},Ys.checkSource=B;const Ws=function(...t){let e=/.*\/(.*?)\./,i=/\.(jpeg|jpg|png|gif|webp|svg|JPEG|JPG|PNG|GIF|WEBP|SVG)/,s=[];return t.forEach(t=>{let n,r,o,a,h,c=!1,l=!1;if(t.substring){let s=e.exec(t);n=s&&s[1]?s[1]:"",r=[t],o="",a=!1,h=t.replace(i,".json"),l=!0}else V(t)&&t.imageSrc&&t.manifestSrc?(n=t.name||"",r=Array.isArray(t.imageSrc)?t.imageSrc:[t.imageSrc],h=t.manifestSrc,o=t.className||"",a=t.visibility||!1,c=document.querySelector(t.parent),l=!0):s.push(!1);if(l){let t=Vs({name:n});V(h)?t.manifest=h:fetch(h).then(t=>{if(200!==t.status)throw new Error("Failed to load manifest");return t.json()}).then(e=>t.manifest=e).catch(t=>console.log(t.message));let l=[];r.forEach(t=>{let s,r,h=document.createElement("img");i.test(t)&&(r=e.exec(t),s=r&&r[1]?r[1]:""),h.name=s||n,h.className=o,h.crossorigin="anonymous",h.style.display=a?"block":"none",c&&c.appendChild(h),h.src=t,l.push(h)}),t.set({source:l}),s.push(n)}else s.push(!1)}),s},Vs=function(t){return new SpriteAsset(t)};function qs(t={}){t.defs=G(t.defs,{asset:null,removeAssetOnKill:!1,spriteIsRunning:!1,spriteLastFrameChange:0,spriteCurrentFrame:0,spriteTrack:"default",spriteForward:!0,spriteFrameDuration:100,spriteWillLoop:!0});let e=t.setters;return e.asset=function(t){let e=this.asset,i=t&&t.name?t.name:t;e&&!e.substring&&e.unsubscribe(this),this.asset=i,this.dirtyAsset=!0},e.imageSource=function(t){let e=ne(t);if(e){let t=n[e[0]];if(t){let e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},e.videoSource=function(t){let e=Is(t);if(e){let t=n[e];if(t){let e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},e.spriteSource=function(t){let e=Ws(t);if(e){let t=n[e];if(t){let e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},t.cleanAsset=function(){let t=this.asset;if(t&&t.substring){let e=n[t];e&&(this.dirtyAsset=!1,e.subscribe(this))}},t.videoAction=function(t,...e){let i=this.asset;if(i&&"Video"===i.type)return i[t](...e)},t.videoPromiseAction=function(t,...e){let i=this.asset;return i&&"Video"===i.type?i[t](...e):Promise.reject("Asset not a video")},t.videoAddTextTrack=function(t,e,i){return this.videoAction("addTextTrack",t,e,i)},t.videoCaptureStream=function(){return this.videoAction("captureStream")},t.videoCanPlayType=function(t){return this.videoAction("canPlayType",t)},t.videoFastSeek=function(t){return this.videoAction("fastSeek",t)},t.videoLoad=function(){return this.videoAction("load")},t.videoPause=function(){return this.videoAction("pause")},t.videoPlay=function(){return this.videoPromiseAction("play")},t.videoSetMediaKeys=function(t){return this.videoPromiseAction("setMediaKeys",t)},t.videoSetSinkId=function(){return this.videoPromiseAction("setSinkId")},t.checkSpriteFrame=function(){let t=this.asset;if(t&&"Sprite"===t.type){let e=this.copyArray;if(this.spriteIsRunning){let i=this.spriteLastFrameChange,s=this.spriteFrameDuration,n=Date.now();if(n>i+s){let i=t.manifest;if(i){let s=i[this.spriteTrack],r=s.length,o=this.spriteCurrentFrame,a=this.spriteWillLoop;o=this.spriteForward?o+1:o-1,o<0&&(o=a?r-1:0),o>=r&&(o=a?0:r-1);let[h,c,l,u,d]=s[o];if(e.length=0,e.push(c,l,u,d),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1,h!==(this.source.id||this.source.name)){let e=t.sourceHold[h];e&&(this.source=e)}this.spriteCurrentFrame=o,this.spriteLastFrameChange=n}}}else{let[i,s,n,r,o]=t.manifest[this.spriteTrack][this.spriteCurrentFrame],[a,h,c,l]=e;a===s&&h===n&&c===r&&l===o||(e.length=0,e.push(s,n,r,o),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1)}}},t.playSprite=function(t,e,i,s,n){Q(t)&&(this.spriteFrameDuration=t),Q(e)&&(this.spriteWillLoop=e),Q(i)&&(this.spriteTrack=i),Q(s)&&(this.spriteForward=s),Q(n)&&(this.spriteCurrentFrame=n),this.spriteLastFrameChange=Date.now(),this.spriteIsRunning=!0},t.haltSprite=function(t,e,i,s,n){Q(t)&&(this.spriteFrameDuration=t),Q(e)&&(this.spriteWillLoop=e),Q(i)&&(this.spriteTrack=i),Q(s)&&(this.spriteForward=s),Q(n)&&(this.spriteCurrentFrame=n),this.spriteIsRunning=!1},t}k.SpriteAsset=SpriteAsset;const Pattern=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this};let Gs=Pattern.prototype=Object.create(Object.prototype);Gs.type="Pattern",Gs.lib="styles",Gs.isArtefact=!1,Gs.isAsset=!1,Gs=Pt(Gs),Gs=ge(Gs),Gs=qs(Gs);Gs.defs=G(Gs.defs,{}),Gs.packetObjects=Z(Gs.packetObjects,["asset"]),Gs.finalizePacketOut=function(t,e){if(Array.isArray(e.patternMatrix))t.patternMatrix=e.patternMatrix;else{let e=this.patternMatrix;e&&(t.patternMatrix=[e.a,e.b,e.c,e.d,e.e,e.f])}return t},Gs.kill=function(){let{name:t,asset:e,removeAssetOnKill:i}=this;return V(e)&&e.unsubscribe(this),Object.entries(c).forEach(([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;V(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),V(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}}),i&&(i.substring?e.kill(!0):e.kill()),this.deregister(),this},Gs.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t];return void 0!==i?(e=this[t],void 0!==e?e:i):undef}}return Ms.indexOf(t)>=0||ie.indexOf(t)>=0?e[t.substring(6)]:void 0},Gs.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs,n=this.source;Object.entries(t).forEach(([t,r])=>{0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!n?t&&"name"!==t&&null!=r&&(e=i[t],e?e.call(this,r):void 0!==s[t]&&(this[t]=r)):(zs.indexOf(t)>=0||se.indexOf(t)>=0)&&(n[t.substring(6)]=r)},this)}return this},Gs.getData=function(t,e){return this.dirtyAsset&&this.cleanAsset(),this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight),this.buildStyle(e)};k.Pattern=Pattern;const FontAttributes=function(t={}){return this.makeName(t.name),this.set(this.defs),this.set(t),this};let Us=FontAttributes.prototype=Object.create(Object.prototype);Us.type="FontAttributes",Us.lib="fontattribute",Us=Pt(Us);Us.defs=G(Us.defs,{style:"normal",variant:"normal",weight:"normal",stretch:"normal",sizeValue:12,sizeMetric:"px",family:"sans-serif"});let Zs=Us.getters,_s=Us.setters;Us.deltaSetters;Zs.size=function(){return this.sizeValue?`${this.sizeValue}${this.sizeMetric}`:this.sizeMetric},_s.size=function(t){if(Q(t)){let e,i=0,s="medium";t.indexOf("xx-small")>=0?s="xx-small":t.indexOf("x-small")>=0?s="x-small":t.indexOf("smaller")>=0?s="smaller":t.indexOf("small")>=0?s="small":t.indexOf("xx-large")>=0?s="xx-large":t.indexOf("x-large")>=0?s="x-large":t.indexOf("larger")>=0?s="larger":t.indexOf("large")>=0?s="large":t.indexOf("medium")>=0?s="medium":(i=12,s="px"),/.* (\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i.test(t)?(e=t.match(/.* (\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i),i="."!==e[1]?parseFloat(e[1]):12,s=e[2]):/^(\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i.test(t)&&(e=t.match(/^(\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i),i="."!==e[1]?parseFloat(e[1]):12,s=e[2]),this.sizeValue=i,this.sizeMetric=s}},_s.font=function(t){Q(t)&&(_s.style.call(this,t),_s.variant.call(this,t),_s.weight.call(this,t),_s.stretch.call(this,t),_s.size.call(this,t),_s.family.call(this,t))},_s.style=function(t){let e="normal";Q(t)&&(e=t.indexOf("italic")>=0?"italic":e,e=t.indexOf("oblique")>=0?"oblique":e),this.style=e},_s.variant=function(t){let e="normal";e=t.indexOf("small-caps")>=0?"small-caps":e,this.variant=e},_s.weight=function(t){let e="normal";Q(t)&&(t.toFixed?e=t:(e=t.indexOf("bold")>=0?"bold":e,e=t.indexOf("lighter")>=0?"lighter":e,e=t.indexOf("bolder")>=0?"bolder":e,e=t.indexOf(" 100 ")>=0?"100":e,e=t.indexOf(" 200 ")>=0?"200":e,e=t.indexOf(" 300 ")>=0?"300":e,e=t.indexOf(" 400 ")>=0?"400":e,e=t.indexOf(" 500 ")>=0?"500":e,e=t.indexOf(" 600 ")>=0?"600":e,e=t.indexOf(" 700 ")>=0?"700":e,e=t.indexOf(" 800 ")>=0?"800":e,e=t.indexOf(" 900 ")>=0?"900":e,e=/^\d00$/.test(t)?t:e)),this.weight=e},_s.stretch=function(t){let e="normal";Q(t)&&(e=t.indexOf("semi-condensed")>=0?"semi-condensed":e,e=t.indexOf("condensed")>=0?"condensed":e,e=t.indexOf("extra-condensed")>=0?"extra-condensed":e,e=t.indexOf("ultra-condensed")>=0?"ultra-condensed":e,e=t.indexOf("semi-condensed")>=0?"semi-condensed":e,e=t.indexOf("condensed")>=0?"condensed":e,e=t.indexOf("extra-condensed")>=0?"extra-condensed":e,e=t.indexOf("ultra-condensed")>=0?"ultra-condensed":e),this.stretch=e},_s.family=function(t){if(Q(t)){let e=t.match(/( xx-small| x-small| small| medium| large| x-large| xx-large| smaller| larger|\d%|\dem|\dch|\dex|\drem|\dvh|\dvw|\dvmin|\dvmax|\dpx|\dcm|\dmm|\din|\dpc|\dpt) (.*)$/i);this.family=e&&e[2]?e[2]:t}},Us.buildFont=function(t=1){let e="";"normal"!==this.style&&(e+=this.style+" "),"normal"!==this.variant&&(e+=this.variant+" "),"normal"!==this.weight&&(e+=this.weight+" "),"normal"!==this.stretch&&(e+=this.stretch+" "),this.sizeValue?e+=`${this.sizeValue*t}${this.sizeMetric} `:e+=this.sizeMetric+" ",e+=""+this.family;let i=xe();return i.engine.font=e,e=i.engine.font,Ce(i),e},Us.update=function(t=1,e){return e&&this.set(e),this.buildFont(t)};k.FontAttributes=FontAttributes;const Qs=document.createElement("div");Qs.style.padding=0,Qs.style.border=0,Qs.style.margin=0,Qs.style.height="auto",Qs.style.lineHeight=1,Qs.style.boxSizing="border-box",Qs.innerHTML="|/}ÁÅþ§¶¿∑ƒ⌈⌊qwertyd0123456789QWERTY",Qs.setAttribute("aria-hidden","true"),ki.appendChild(Qs);const Ks=document.createElement("textarea"),Js=(t,e)=>(t=parseFloat(t),W(t)||(t=0),W(e)||(e=0),parseFloat(t.toFixed(e))),tn=(t,e)=>(t=parseFloat(t),W(t)||(t=0),W(e)||(e=0),Math.abs(parseFloat(t.toFixed(e)))),Phrase=function(t={}){return this.fontAttributes=function(t){return new FontAttributes(t)}(t),delete t.font,delete t.style,delete t.variant,delete t.weight,delete t.stretch,delete t.size,delete t.sizeValue,delete t.sizeMetric,delete t.family,this.entityInit(t),this.sectionStyles=[],this.sectionClasses={DEFAULTS:{defaults:!0},BOLD:{weight:"bold"},ITALIC:{style:"italic"},"SMALL-CAPS":{variant:"small-caps"},HIGHLIGHT:{highlight:!0},UNDERLINE:{underline:!0},OVERLINE:{overline:!0},"/BOLD":{weight:"normal"},"/ITALIC":{style:"normal"},"/SMALL-CAPS":{variant:"normal"},"/HIGHLIGHT":{highlight:!1},"/UNDERLINE":{underline:!1},"/OVERLINE":{overline:!1}},this.dirtyDimensions=!0,this.dirtyText=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this};let en=Phrase.prototype=Object.create(Object.prototype);en.type="Phrase",en.lib="entity",en.isArtefact=!0,en.isAsset=!1,en=Pt(en),en=Hi(en);en.defs=G(en.defs,{text:"",width:"auto",exposeText:!0,lineHeight:1.15,letterSpacing:0,justify:"left",sectionClassMarker:"§",sectionClasses:null,overlinePosition:-.1,overlineStyle:"rgb(250,0,0)",underlinePosition:.6,underlineStyle:"rgb(250,0,0)",highlightStyle:"rgba(250,218,94,0.4)",boundingBoxColor:"rgba(0,0,0,0.5)",showBoundingBox:!1,textPath:"",textPathPosition:0,textPathLoop:!0,addTextPathRoll:!0,textPathDirection:"ltr",treatWordAsGlyph:!1}),en.packetExclusions=Z(en.packetExclusions,["textPositions","textLines","textLineWidths","textLineWords","textGlyphs","textGlyphWidths","fontAttributes"]),en.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];t=G(t,i);let s=JSON.parse(this.fontAttributes.saveAsPacket(e))[3];return delete s.name,t=G(t,s),t=this.handlePacketAnchor(t,e)},en.factoryKill=function(){this.exposedTextHold&&this.exposedTextHold.remove()};let sn=en.getters,nn=en.setters,rn=en.deltaSetters;nn.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},nn.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},nn.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},rn.handleX=function(t){let e=this.handle;e[0]=addStrings(e[0],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},rn.handleY=function(t){let e=this.handle;e[1]=addStrings(e[1],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},rn.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},sn.text=function(){return this.currentText||this.text||""},nn.text=function(t){var e;this.text=(e=t).substring?e:e.toString,this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyDimensions=!0},en.permittedJustifications=["left","right","center","full"],nn.justify=function(t){this.permittedJustifications.indexOf(t)>=0&&(this.justify=t),this.dirtyText=!0,this.dirtyPathObject=!0},nn.width=function(t){this.dimensions[0]=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},rn.width=function(t){let e=this.dimensions;e[0]=addStrings(e[0],t),this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},nn.scale=function(t){this.scale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},rn.scale=function(t){this.scale+=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},nn.lineHeight=function(t){this.lineHeight=tn(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0},rn.lineHeight=function(t){this.lineHeight+=Js(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0},nn.letterSpacing=function(t){this.letterSpacing=tn(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},rn.letterSpacing=function(t){this.letterSpacing+=Js(t,3),this.letterSpacing<0&&(this.letterSpacing=0),this.dirtyPathObject=!0,this.dirtyText=!0},nn.overlinePosition=function(t){this.overlinePosition=Js(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},rn.overlinePosition=function(t){this.overlinePosition+=Js(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},nn.underlinePosition=function(t){this.underlinePosition=Js(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},rn.underlinePosition=function(t){this.underlinePosition+=Js(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},nn.textPath=function(t){this.textPath=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},nn.textPathPosition=function(t){this.textPathLoop?(t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.textPathPosition=parseFloat(t.toFixed(6))):this.textPathPosition=t},rn.textPathPosition=function(t){let e=this.textPathPosition+t;this.textPathLoop?(e<0&&(e+=1),e>1&&(e%=1),this.textPathPosition=parseFloat(e.toFixed(6))):this.textPathPosition=e},sn.font=function(){return this.fontAttributes.get("font")},nn.font=function(t){this.fontAttributes.set({font:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.style=function(){return this.fontAttributes.get("style")},nn.style=function(t){this.fontAttributes.set({style:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.variant=function(){return this.fontAttributes.get("variant")},nn.variant=function(t){this.fontAttributes.set({variant:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.weight=function(){return this.fontAttributes.get("weight")},nn.weight=function(t){this.fontAttributes.set({weight:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.stretch=function(){return this.fontAttributes.get("stretch")},nn.stretch=function(t){this.fontAttributes.set({stretch:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.size=function(){return this.fontAttributes.get("size")},nn.size=function(t){this.fontAttributes.set({size:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.sizeValue=function(){return this.fontAttributes.get("sizeValue")},nn.sizeValue=function(t){this.fontAttributes.set({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},rn.sizeValue=function(t){this.fontAttributes.deltaSet({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.sizeMetric=function(){return this.fontAttributes.get("sizeMetric")},nn.sizeMetric=function(t){this.fontAttributes.set({sizeMetric:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},sn.family=function(){return this.fontAttributes.get("family")},nn.family=function(t){this.fontAttributes.set({family:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},en.cleanDimensionsAdditionalActions=function(){if("auto"===this.dimensions[0]){this.buildText();let t=xe(),e=t.engine;e.font=this.fontAttributes.buildFont(),this.currentDimensions[0]=Math.ceil(e.measureText(this.currentText).width),Ce(t)}this.textLines?this.currentDimensions[1]=Math.ceil(this.textHeight*this.textLines.length*this.lineHeight/this.scale):this.dirtyDimensions=!0},en.setSectionStyles=function(t){let e,i,s,n=new RegExp(this.sectionClassMarker),r=t.split(n),o=this.sectionStyles,a=this.sectionClasses,h="";return o.length=0,r.forEach(t=>{e=a[t],e?(i=h.length,s=o[i],s?Object.assign(s,e):o[i]=Object.assign({},e)):Q(t)&&(h+=t)}),h},en.addSectionClass=function(t,e){return K(t,e)&&t.substring&&V(e)&&(this.sectionClasses[t]=e),this.dirtyText=!0,this.dirtyPathObject=!0,this},en.removeSectionClass=function(t){return delete this.sectionClasses[t],this.dirtyText=!0,this.dirtyPathObject=!0,this},en.getTextPath=function(){let t=this.textPath;return t&&t.substring&&(t=this.textPath=i[this.textPath],"Shape"===t.type&&t.useAsPath?t.pathed.push(this.name):t=this.path=!1),t},en.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyFont&&this.fontAttributes&&(this.dirtyFont=!1,this.fontAttributes.buildFont(this.scale),this.dirtyText=!0,this.dirtyMimicDimensions=!0,this.dirtyPositionSubscribers=!0),this.dirtyText&&this.buildText(),this.dirtyHandle&&this.cleanHandle();let t=this.pathObject=new Path2D,e=this.currentHandle,i=this.currentDimensions,s=this.currentScale,n=-e[0]*s,r=-e[1]*s,o=i[0]*s,a=i[1]*s;this.boxStartValues=[n,r],t.rect(n,r,o,a)}},en.buildText=function(){this.dirtyText=!1;let t=this.convertTextEntityCharacters(this.text);if(t=this.setSectionStyles(t),this.currentText=t,isNaN(this.currentDimensions[0]))this.dirtyText=!0;else if(this.calculateTextPositions(t),this.exposeText){if(!this.exposedTextHold){let t=document.createElement("div");t.id=this.name+"-text-hold",t.setAttribute("aria-live","polite"),this.exposedTextHold=t,this.exposedTextHoldAttached=!1}this.exposedTextHold.textContent=t,this.exposedTextHoldAttached||this.currentHost&&this.currentHost.controller&&this.currentHost.controller.textHold&&(this.currentHost.controller.textHold.appendChild(this.exposedTextHold),this.exposedTextHoldAttached=!0)}},en.convertTextEntityCharacters=function(t){let e=t.trim();return e=e.replace(/[\s\uFEFF\xA0]+/g," "),Ks.innerHTML=e,Ks.value},en.calculateTextPositions=function(t){const e=function(t){if(!H)return F.dirtyPathObject=!0,F.dirtyText=!0,"black";if(t.substring){let e=!1;if(S.indexOf(t)>=0?e=b[t]:h.indexOf(t)>=0&&(e=a[t]),e)return e}return t};let i,s,n,r,o,c,l,u,d,f,p,m,g,y,P,k,v,x,C,A,w,D,O,E,T=xe(),R=T.engine,F=this,H=!(!this.group||!this.group.getHost)&&this.group.getHost(),L=[],j=[],B=[],$=[],M=[],z=[],I=[],X=this.getTextPath(),Y=this.fontAttributes,N=Y.clone({}),W=this.sectionStyles,V=this.state,q={},G=[],U=this.currentScale,Z=this.currentDimensions,_=Z[0]*U,K=this.treatWordAsGlyph,J=this.lineHeight,tt=this.justify,et=Y.update(U),it=e(V.fillStyle),st=e(V.strokeStyle),nt=this.letterSpacing*U,rt=et,ot=it,at=st,ht=nt,ct=(!!this.highlightStyle&&e(this.highlightStyle),!1),lt=(!!this.underlineStyle&&e(this.underlineStyle),this.underlinePosition,!1),ut=(!!this.overlineStyle&&e(this.overlineStyle),this.overlinePosition,!1),dt=0;for(i=K?t.split(" "):t.split(""),G.push(rt),f=0,p=i.length;f{Qs.style.font=t,r=Qs.clientHeight,q[t]=r}),dt=Math.max(...Object.values(q)),w=A=o=c=0,f=0,p=M.length;fv&&!n[0]&&(z[f]-=P-v));for(f=0,p=M.length;f=_&&ot+e,0),B.push(P),A-=P,o=c+1),f+1===p&&(A===w?(y=t,j.push(y),$.push(K?y.split(" ").length-1:y.split(" ").length),B.push(w)):(y=i.slice(o).join(""),j.push(y),P=K?y.split(" ").length-1:y.split(" ").length,$.push(P),P=L.slice(o).reduce((t,e)=>t+e,0),B.push(P))),Q(k[3])&&(ct=k[3]),Q(k[4])&&(lt=k[4]),Q(k[5])&&(ut=k[5]),k[3]=ct,k[4]=lt,k[5]=ut;if(U<=0&&(U=1),Z[1]=Math.ceil(dt*j.length*J/U),this.cleanHandle(),this.dirtyHandle=!1,D=this.currentHandle,O=-D[0]*U,E=-D[1]*U,!X)if("full"===tt)for(l=0,u=E,f=0,p=B.length;f1?(_-B[f])/($[f]-1):0,m=0,g=j[f].length;m1||n<0)&&(n=n>.5?n-1:n+1),t[10]=n<=1&&n>=0&&r.getPathPositionData(n,f),t[9]=s,c?l+=s/o:l-=s/o,d&&(l>1||l<0)&&(l=l>.5?l-1:l+1)}},en.preStamper=function(t,e,i,s){const n=function(e){return e.getData?e.getData(i,t):e};let[r,o,a,h,c,l,...u]=s;if(r&&(e.font=r),h||c||l){let t=i.highlightStyle,s=i.textHeight,r=i.underlineStyle,o=i.underlinePosition,a=i.overlineStyle,d=i.overlinePosition;e.save(),h&&(e.fillStyle=n(t),e.fillRect(u[1],u[2],u[3],s)),c&&(e.strokeStyle=n(r),e.strokeRect(u[1],u[2]+s*o,u[3],1)),l&&(e.strokeStyle=n(a),e.strokeRect(u[1],u[2]+s*d,u[3],1)),e.restore()}return o&&(e.strokeStyle=n(o)),a&&(e.fillStyle=n(a)),u},en.stamper={draw:function(t,e,i){t.strokeText(...i)},fill:function(t,e,i){t.fillText(...i)},drawAndFill:function(t,e,i){t.strokeText(...i),e.currentHost.clearShadow(),t.fillText(...i),e.currentHost.restoreShadow(e)},fillAndDraw:function(t,e,i){t.strokeText(...i),e.currentHost.clearShadow(),t.fillText(...i),t.strokeText(...i),e.currentHost.restoreShadow(e)},drawThenFill:function(t,e,i){t.strokeText(...i),t.fillText(...i)},fillThenDraw:function(t,e,i){t.fillText(...i),t.strokeText(...i)},clear:function(t,e,i){let s=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fillText(...i),t.globalCompositeOperation=s}},en.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.stroke(this.pathObject),t.restore()},en.performRotation=function(t){let e=this.currentHost;if(e){let[i,s]=this.currentStampPosition;e.rotateDestination(t,i,s,this)}};k.Phrase=Phrase;const Picture=function(t={}){return this.copyStart=Kt(),this.currentCopyStart=Kt(),this.copyDimensions=Kt(),this.currentCopyDimensions=Kt(),this.copyArray=[],this.pasteArray=[],this.entityInit(t),t.copyStart||(t.copyStartX||(this.copyStart[0]=0),t.copyStartY||(this.copyStart[1]=0)),t.copyDimensions||(t.copyWidth||(this.copyDimensions[0]=1),t.copyHeight||(this.copyDimensions[1]=1)),this.imageSubscribers=[],this.dirtyCopyStart=!0,this.dirtyCopyDimensions=!0,this.dirtyImage=!0,this};let on=Picture.prototype=Object.create(Object.prototype);on.type="Picture",on.lib="entity",on.isArtefact=!0,on.isAsset=!1,on=Pt(on),on=Hi(on),on=qs(on);on.defs=G(on.defs,{copyStart:null,copyDimensions:null,checkHitIgnoreTransparency:!1}),on.packetCoordinates=Z(on.packetCoordinates,["copyStart","copyDimensions"]),on.packetObjects=Z(on.packetObjects,["asset"]),on.factoryKill=function(t=!1){let{asset:e,removeAssetOnKill:i}=this;V(e)&&e.unsubscribe(this),i&&(i.substring?e.kill(!0):e.kill())};let an=on.getters,hn=on.setters,cn=on.deltaSetters;an.copyStartX=function(){return this.currentCopyStart[0]},an.copyStartY=function(){return this.currentCopyStart[1]},hn.copyStartX=function(t){null!=t&&(this.copyStart[0]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0)},hn.copyStartY=function(t){null!=t&&(this.copyStart[1]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0)},hn.copyStart=function(t,e){this.setCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0},cn.copyStartX=function(t){let e=this.copyStart;e[0]=H(e[0],t),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0},cn.copyStartY=function(t){let e=this.copyStart;e[1]=H(e[1],t),this.dirtyCopyStart=!0},cn.copyStart=function(t,e){this.setDeltaCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0},an.copyWidth=function(){return this.currentCopyDimensions[0]},an.copyHeight=function(){return this.currentCopyDimensions[1]},hn.copyWidth=function(t){null!=t&&(this.copyDimensions[0]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0)},hn.copyHeight=function(t){null!=t&&(this.copyDimensions[1]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0)},hn.copyDimensions=function(t,e){this.setCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},cn.copyWidth=function(t){let e=this.copyDimensions;e[0]=H(e[0],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},cn.copyHeight=function(t){let e=this.copyDimensions;e[1]=H(e[1],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},cn.copyDimensions=function(t,e){this.setDeltaCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},hn.checkHitIgnoreTransparency=function(t){this.checkHitIgnoreTransparency=t,t&&(this.stashOutput=!0)},on.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}}return Ms.indexOf(t)>=0||ie.indexOf(t)>=0?e[t.substring(6)]:void 0},on.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=this.source,a=r?r.setters:{},h=r?r.defs:{};Object.entries(t).forEach(([t,c])=>{0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!o?t&&"name"!==t&&null!=c&&(e=s[t],i=!1,e||(e=a[t],i=!0),e?e.call(i?this.state:this,c):void 0!==n[t]?this[t]=c:void 0!==h[t]&&(r[t]=c)):(zs.indexOf(t)>=0||se.indexOf(t)>=0)&&(o[t.substring(6)]=c)},this)}return this},on.updateImageSubscribers=function(){this.dirtyImageSubscribers=!1,this.imageSubscribers.length&&this.imageSubscribers.forEach(t=>{let e=i[t];e&&(e.dirtyInput=!0)})},on.imageSubscribe=function(t){t&&t.substring&&Z(this.imageSubscribers,t)},on.imageUnsubscribe=function(t){t&&t.substring&&_(this.imageSubscribers,t)},on.cleanImage=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(K(t,e)){this.dirtyImage=!1;let i=this.currentCopyStart,s=i[0],n=i[1],r=this.currentCopyDimensions,o=r[0],a=r[1];s+o>t&&(i[0]=t-o),n+a>e&&(i[1]=e-a);let h=this.copyArray;h.length=0,h.push(i[0],i[1],o,a)}},on.cleanCopyStart=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(K(t,e)){this.dirtyCopyStart=!1,this.cleanPosition(this.currentCopyStart,this.copyStart,[t,e]);let i=this.currentCopyStart,s=i[0],n=i[1];(s<0||s>t)&&(i[0]=s<0?0:t-1),(n<0||n>e)&&(i[1]=n<0?0:e-1),this.dirtyImage=!0}},on.cleanCopyDimensions=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(K(t,e)){this.dirtyCopyDimensions=!1;let i=this.copyDimensions,s=this.currentCopyDimensions,n=i[0],r=i[1];n.substring?s[0]=parseFloat(n)/100*t:s[0]=n,r.substring?s[1]=parseFloat(r)/100*e:s[1]=r;let o=s[0],a=s[1];(o<=0||o>t)&&(s[0]=o<=0?1:t),(a<=0||a>e)&&(s[1]=a<=0?1:e),this.dirtyImage=!0}},on.prepareStamp=function(){this.dirtyAsset&&this.cleanAsset(),this.asset&&("Sprite"===this.asset.type?this.checkSpriteFrame(this):this.asset.checkSource?this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight):this.dirtyAsset=!0),(this.dirtyDimensions||this.dirtyHandle||this.dirtyScale)&&(this.dirtyPaste=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyCopyStart&&this.cleanCopyStart(),this.dirtyCopyDimensions&&this.cleanCopyDimensions(),this.dirtyImage&&this.cleanImage(),this.dirtyPaste&&this.preparePasteObject(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyImageSubscribers&&this.updateImageSubscribers()},on.preparePasteObject=function(){this.dirtyPaste=!1;let t=this.currentStampHandlePosition,e=this.currentDimensions,i=this.currentScale,s=-t[0]*i,n=-t[1]*i,r=e[0]*i,o=e[1]*i,a=this.pasteArray;a.length=0,a.push(s,n,r,o),this.dirtyPathObject=!0},on.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.pasteArray||this.preparePasteObject(),(this.pathObject=new Path2D).rect(...this.pasteArray)}},on.draw=function(t){t.stroke(this.pathObject)},on.fill=function(t){this.source&&t.drawImage(this.source,...this.copyArray,...this.pasteArray)},on.drawAndFill=function(t){t.stroke(this.pathObject),this.source&&(this.currentHost.clearShadow(),t.drawImage(this.source,...this.copyArray,...this.pasteArray))},on.fillAndDraw=function(t){t.stroke(this.pathObject),this.source&&(this.currentHost.clearShadow(),t.drawImage(this.source,...this.copyArray,...this.pasteArray)),t.stroke(this.pathObject)},on.drawThenFill=function(t){t.stroke(this.pathObject),this.source&&t.drawImage(this.source,...this.copyArray,...this.pasteArray)},on.fillThenDraw=function(t){this.source&&t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject)},on.checkHitReturn=function(t,e,i){if(this.checkHitIgnoreTransparency&&i&&i.engine){let[s,n,r,o]=this.copyArray,[a,h,c,l]=this.pasteArray,[u,d]=this.currentStampPosition,f=4*((e-d)*c+(t-u))+3;return!!i.engine.getImageData(s,n,r,o).data[f]&&{x:t,y:e,artefact:this}}return{x:t,y:e,artefact:this}};k.Picture=Picture;const Polygon=function(t={}){return this.shapeInit(t),this};let ln=Polygon.prototype=Object.create(Object.prototype);ln.type="Polygon",ln.lib="entity",ln.isArtefact=!0,ln.isAsset=!1,ln=Pt(ln),ln=Ii(ln);ln.defs=G(ln.defs,{sides:0,radius:0});let un=ln.setters,dn=ln.deltaSetters;un.sides=function(t){this.sides=t,this.updateDirty()},dn.sides=function(t){this.sides+=t,this.updateDirty()},un.radius=function(t){this.radius=t,this.updateDirty()},dn.radius=function(t){this.radius+=t,this.updateDirty()},ln.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolygonPath(),this.pathDefinition=t},ln.makePolygonPath=function(){let t,e,i,s=this.radius,n=this.sides,r=360/n,o="",a=[],h=0,c=Fe({x:0,y:-s});for(let t=0;t{if("pins"===e){let e=[];t.pins.forEach(t=>{V(t)?e.push(t.name):Array.isArray(t)?e.push([].concat(t)):e.push(t)}),t.pins=e}}),t};let pn=fn.getters,mn=fn.setters,gn=fn.deltaSetters;pn.pins=function(t){return Q(t)?this.getPinAt(t):this.currentPins.concat()},mn.pins=function(t){if(Q(t)){let e=this.pins;if(Array.isArray(t))e.forEach((t,e)=>this.removePinAt(e)),e.length=0,e.push(...t),this.updateDirty();else if(V(t)&&Q(t.index)){let i=e[t.index];Array.isArray(i)&&(Q(t.x)&&(i[0]=t.x),Q(t.y)&&(i[1]=t.y),this.updateDirty())}}},gn.pins=function(t){if(Q(t)){let e=this.pins;if(V(t)&&Q(t.index)){let i=e[t.index];Array.isArray(i)&&(Q(t.x)&&(i[0]=addStrings(i[0],t.x)),Q(t.y)&&(i[1]=addStrings(i[1],t.y)),this.updateDirty())}}},mn.tension=function(t){t.toFixed&&(this.tension=t,this.updateDirty())},gn.tension=function(t){t.toFixed&&(this.tension+=t,this.updateDirty())},mn.closed=function(t){this.closed=t,this.updateDirty()},mn.mapToPins=function(t){this.mapToPins=t,this.updateDirty()},mn.flipUpend=function(t){this.flipUpend=t,this.updateDirty()},mn.flipReverse=function(t){this.flipReverse=t,this.updateDirty()},mn.useAsPath=function(t){this.useAsPath=t,this.updateDirty()},mn.pivot=function(t){if(I(t)&&!t)this.pivot=null,"pivot"===this.lockTo[0]&&(this.lockTo[0]="start"),"pivot"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.pivot,s=t.substring?i[t]:t,n=this.name;s&&s.name&&(e&&e.name!==s.name&&_(e.pivoted,n),Z(s.pivoted,n),this.pivot=s,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}this.updateDirty()},fn.updateDirty=function(){this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPins=!0},fn.getPinAt=function(t){let e=Math.floor(t);if(this.useAsPath){let t=this.getPathPositionData(this.unitPartials[e]);return[t.x,t.y]}{let t,i,s=this.currentPins,n=s[e],[r,o,a,h]=this.localBox,[c,l]=n,[u,d]=s[0],[f,p]=this.localOffset,[m,g]=this.currentStampPosition;return this.mapToPins?(t=c-u+r,i=l-u+o):(t=c-f,i=l-p),[m+t,g+i]}},fn.updatePinAt=function(t,e){if(K(t,e)){e=Math.floor(e);let i=this.pins;if(e=0){let s=i[e];V(s)&&s.pivoted&&_(s.pivoted,this.name),i[e]=t,this.updateDirty()}}},fn.removePinAt=function(t){t=Math.floor(t);let e=this.pins;if(t=0){let i=e[t];V(i)&&i.pivoted&&_(i.pivoted,this.name),e[t]=null,this.updateDirty()}},fn.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.useParticlesAsPins&&(this.dirtyPins=!0),(this.dirtyPins||this.dirtyLock)&&(this.dirtySpecies=!0),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyHandle)&&(this.dirtyPathObject=!0,(this.dirtyScale||this.dirtySpecies)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&(this.cleanPathObject(),this.updatePathSubscribers()),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},fn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolylinePath(),this.pathDefinition=t},fn.getPathParts=function(t,e,i,s,n,r,o){let a=Math.sqrt,h=Math.pow,c=a(h(i-t,2)+h(s-e,2)),l=a(h(n-i,2)+h(r-s,2)),u=o*c/(c+l),d=o*l/(c+l);return[i-u*(n-t),s-u*(r-e),i,s,i+d*(n-t),s+d*(r-e)]},fn.buildLine=function(t,e,i){let s="m0,0l";for(let n=2;n2&&(t=i[r],e=i[r+1],n=0);return s},fn.cleanCoordinate=function(t,e){return t.toFixed?t:"left"===t||"top"===t?0:"right"===t||"bottom"===t?e:"center"===t?e/2:parseFloat(t)/100*e},fn.cleanPinsArray=function(){this.dirtyPins=!1;let t=this.pins,e=this.currentPins;if(e.length=0,this.useParticlesAsPins)t.forEach((i,s)=>{let n;i&&i.substring?(n=d[i],n&&(t[s]=n)):n=i;let r=!(!n||!n.position)&&n.position;r&&e.push([r.x,r.y])}),e.length||(this.dirtyPins=!0);else{let s,n,r,o=1,a=1,h=this.getHost(),c=this.cleanCoordinate;h&&(r=h.currentDimensions,r&&([o,a]=r)),t.forEach((r,h)=>{let l;if(r&&r.substring?(l=i[r],t[h]=l):l=r,l)if(Array.isArray(l))[s,n]=l,e.push([c(s,o),c(n,a)]);else if(V(l)&&l.currentStart){let t=this.name;l.pivoted.indexOf(t)<0&&Z(l.pivoted,t),e.push([...l.currentStampPosition])}})}if(e.length){let t=e[0][0],i=e[0][1];e.forEach(e=>{e[0]{let e=i[t];e&&(e.dirtyStart=!0)})};k.Polyline=Polyline;const Quadratic=function(t={}){return this.control=Kt(),this.currentControl=Kt(),this.controlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyControl=!0,this};let yn=Quadratic.prototype=Object.create(Object.prototype);yn.type="Quadratic",yn.lib="entity",yn.isArtefact=!0,yn.isAsset=!1,yn=Pt(yn),yn=Ii(yn),yn=Yi(yn);yn.defs=G(yn.defs,{control:null,controlPivot:"",controlPivotCorner:"",addControlPivotHandle:!1,addControlPivotOffset:!1,controlPath:"",controlPathPosition:0,addControlPathHandle:!1,addControlPathOffset:!0,controlParticle:"",controlLockTo:""}),yn.packetExclusions=Z(yn.packetExclusions,[]),yn.packetExclusionsByRegex=Z(yn.packetExclusionsByRegex,[]),yn.packetCoordinates=Z(yn.packetCoordinates,["control"]),yn.packetObjects=Z(yn.packetObjects,["controlPivot","controlPath"]),yn.packetFunctions=Z(yn.packetFunctions,[]);yn.getters;let bn=yn.setters,Sn=yn.deltaSetters;bn.controlPivot=function(t){this.setControlHelper(t,"controlPivot","control"),this.updateDirty(),this.dirtyControl=!0},bn.controlParticle=function(t){this.setControlHelper(t,"controlParticle","control"),this.updateDirty(),this.dirtyControl=!0},bn.controlPath=function(t){this.setControlHelper(t,"controlPath","control"),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},bn.controlPathPosition=function(t){this.controlPathPosition=t,this.dirtyControl=!0,this.currentControlPathData=!1},Sn.controlPathPosition=function(t){this.controlPathPosition+=t,this.dirtyControl=!0,this.currentControlPathData=!1},bn.controlX=function(t){null!=t&&(this.control[0]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},bn.controlY=function(t){null!=t&&(this.control[1]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},bn.control=function(t,e){this.setCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Sn.controlX=function(t){let e=this.control;e[0]=H(e[0],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Sn.controlY=function(t){let e=this.control;e[1]=H(e[1],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},Sn.control=function(t,e){this.setDeltaCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},bn.controlLockTo=function(t){this.controlLockTo=t,this.updateDirty(),this.dirtyControlLock=!0,this.currentControlPathData=!1},yn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeQuadraticPath(),this.pathDefinition=t},yn.makeQuadraticPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentControl,[n,r]=this.currentEnd;return`m0,0q${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)}`},yn.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyControl=!0,this.dirtyEnd=!0},yn.preparePinsForStamp=function(){let t=this.endPivot,e=this.endPath,i=this.controlPivot,s=this.controlPath;this.dirtyPins.forEach(n=>{(i&&i.name===n||s&&s.name===n)&&(this.dirtyControl=!0,this.controlLockTo.includes("path")&&(this.currentControlPathData=!1)),(t&&t.name===n||e&&e.name===n)&&(this.dirtyEnd=!0,this.endLockTo.includes("path")&&(this.currentEndPathData=!1))}),this.dirtyPins.length=0};k.Quadratic=Quadratic;const RadialGradient=function(t={}){return this.stylesInit(t),this};let Pn=RadialGradient.prototype=Object.create(Object.prototype);Pn.type="RadialGradient",Pn.lib="styles",Pn.isArtefact=!1,Pn.isAsset=!1,Pn=Pt(Pn),Pn=ys(Pn);Pn.defs=G(Pn.defs,{startRadius:0,endRadius:0}),Pn.packetObjects=Z(Pn.packetObjects,["palette"]);let kn=Pn.getters,vn=Pn.setters,xn=Pn.deltaSetters;kn.startRadius=function(t){return this.currentStartRadius},kn.endRadius=function(t){return this.currentEndRadius},vn.startRadius=function(t){this.startRadius=t,this.dirtyStyle=!0},vn.endRadius=function(t){this.endRadius=t,this.dirtyStyle=!0},xn.startRadius=function(t){this.startRadius=H(this.startRadius,t),this.dirtyStyle=!0},xn.endRadius=function(t){this.endRadius=H(this.endRadius,t),this.dirtyStyle=!0},Pn.cleanRadius=function(t){const e=(t,e)=>{if(W(t))return t;switch(t){case"top":case"left":return 0;case"bottom":case"right":return e;case"center":return e/2;default:return t=parseFloat(t),W(t)?t/100*e:0}};this.currentStartRadius=t?e(this.startRadius,t):this.defs.startRadius,this.currentEndRadius=t?e(this.endRadius,t):this.defs.endRadius},Pn.buildStyle=function(t={}){if(t){let e=t.engine;if(e){let t=e.createRadialGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgba(0,0,0,0)"},Pn.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.currentEnd,r=this.currentStartRadius,o=this.currentEndRadius,a=s[0]+t,h=s[1]+e,c=n[0]+t,l=n[1]+e;a===c&&h===l&&r===o&&o++,i.length=0,i.push(a,h,r,c,l,o)};k.RadialGradient=RadialGradient;const Rectangle=function(t={}){return this.shapeInit(t),this.currentRectangleWidth=1,this.currentRectangleHeight=1,this};let Cn=Rectangle.prototype=Object.create(Object.prototype);Cn.type="Rectangle",Cn.lib="entity",Cn.isArtefact=!0,Cn.isAsset=!1,Cn=Pt(Cn),Cn=Ii(Cn);Cn.defs=G(Cn.defs,{rectangleWidth:10,rectangleHeight:10,radiusTLX:0,radiusTLY:0,radiusTRX:0,radiusTRY:0,radiusBRX:0,radiusBRY:0,radiusBLX:0,radiusBLY:0,offshootA:.55,offshootB:0});let An=Cn.setters,wn=Cn.deltaSetters;An.radius=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},An.radiusX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},An.radiusY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},An.radiusT=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},An.radiusB=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},An.radiusL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},An.radiusR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},An.radiusTX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX"])},An.radiusBX=function(t){this.setRectHelper(t,["radiusBRX","radiusBLX"])},An.radiusLX=function(t){this.setRectHelper(t,["radiusTLX","radiusBLX"])},An.radiusRX=function(t){this.setRectHelper(t,["radiusTRX","radiusBRX"])},An.radiusTY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY"])},An.radiusBY=function(t){this.setRectHelper(t,["radiusBRY","radiusBLY"])},An.radiusLY=function(t){this.setRectHelper(t,["radiusTLY","radiusBLY"])},An.radiusRY=function(t){this.setRectHelper(t,["radiusTRY","radiusBRY"])},An.radiusTL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY"])},An.radiusTR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY"])},An.radiusBL=function(t){this.setRectHelper(t,["radiusBLX","radiusBLY"])},An.radiusBR=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY"])},An.radiusTLX=function(t){this.setRectHelper(t,["radiusTLX"])},An.radiusTLY=function(t){this.setRectHelper(t,["radiusTLY"])},An.radiusTRX=function(t){this.setRectHelper(t,["radiusTRX"])},An.radiusTRY=function(t){this.setRectHelper(t,["radiusTRY"])},An.radiusBRX=function(t){this.setRectHelper(t,["radiusBRX"])},An.radiusBRY=function(t){this.setRectHelper(t,["radiusBRY"])},An.radiusBLX=function(t){this.setRectHelper(t,["radiusBLX"])},An.radiusBLY=function(t){this.setRectHelper(t,["radiusBLY"])},wn.radius=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},wn.radiusX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},wn.radiusY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},wn.radiusT=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},wn.radiusB=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},wn.radiusL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},wn.radiusR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},wn.radiusTX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX"])},wn.radiusBX=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBLX"])},wn.radiusLX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusBLX"])},wn.radiusRX=function(t){this.deltaRectHelper(t,["radiusTRX","radiusBRX"])},wn.radiusTY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY"])},wn.radiusBY=function(t){this.deltaRectHelper(t,["radiusBRY","radiusBLY"])},wn.radiusLY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusBLY"])},wn.radiusRY=function(t){this.deltaRectHelper(t,["radiusTRY","radiusBRY"])},wn.radiusTL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY"])},wn.radiusTR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY"])},wn.radiusBL=function(t){this.deltaRectHelper(t,["radiusBLX","radiusBLY"])},wn.radiusBR=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY"])},wn.radiusTLX=function(t){this.deltaRectHelper(t,["radiusTLX"])},wn.radiusTLY=function(t){this.deltaRectHelper(t,["radiusTLY"])},wn.radiusTRX=function(t){this.deltaRectHelper(t,["radiusTRX"])},wn.radiusTRY=function(t){this.deltaRectHelper(t,["radiusTRY"])},wn.radiusBRX=function(t){this.deltaRectHelper(t,["radiusBRX"])},wn.radiusBRY=function(t){this.deltaRectHelper(t,["radiusBRY"])},wn.radiusBLX=function(t){this.deltaRectHelper(t,["radiusBLX"])},wn.radiusBLY=function(t){this.deltaRectHelper(t,["radiusBLY"])},An.offshootA=function(t){this.offshootA=t,this.updateDirty()},An.offshootB=function(t){this.offshootB=t,this.updateDirty()},wn.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},wn.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},An.rectangleWidth=function(t){null!=t&&(this.rectangleWidth=t,this.dirtyDimensions=!0)},An.rectangleHeight=function(t){null!=t&&(this.rectangleHeight=t,this.dirtyDimensions=!0)},wn.rectangleWidth=function(t){this.rectangleWidth=H(this.rectangleWidth,t),this.dirtyDimensions=!0},wn.rectangleHeight=function(t){this.rectangleHeight=H(this.rectangleHeight,t),this.dirtyDimensions=!0},Cn.setRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=t},this)},Cn.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=H(this[e],t)},this)},Cn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeRectanglePath(),this.pathDefinition=t},Cn.cleanDimensions=function(){let t=this.getHost();if(t){let e=t.currentDimensions?t.currentDimensions:[t.w,t.h],i=this.rectangleWidth,s=this.rectangleHeight,n=this.currentRectangleWidth||1,r=this.currentRectangleHeight||1;i.substring&&(i=parseFloat(i)/100*e[0]),s.substring&&(s=parseFloat(s)/100*e[1]);let o,a=this.mimic;a&&a.name&&this.useMimicDimensions&&(o=a.currentDimensions),o?(this.currentRectangleWidth=this.addOwnDimensionsToMimic?o[0]+i:o[0],this.currentRectangleHeight=this.addOwnDimensionsToMimic?o[1]+s:o[1]):(this.currentRectangleWidth=i,this.currentRectangleHeight=s),this.currentDimensions[0]=this.currentRectangleWidth,this.currentDimensions[1]=this.currentRectangleHeight,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,n===this.currentRectangleWidth&&r===this.currentRectangleHeight||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0)}else this.dirtyDimensions=!0},Cn.makeRectanglePath=function(){this.dirtyDimensions&&this.cleanDimensions();let t=this.currentRectangleWidth,e=this.currentRectangleHeight,i=this.offshootA,s=this.offshootB,n=this.radiusTLX,r=this.radiusTLY,o=this.radiusTRX,a=this.radiusTRY,h=this.radiusBRX,c=this.radiusBRY,l=this.radiusBLX,u=this.radiusBLY;(n.substring||r.substring||o.substring||a.substring||h.substring||c.substring||l.substring||u.substring)&&(n=n.substring?parseFloat(n)/100*t:n,r=r.substring?parseFloat(r)/100*e:r,o=o.substring?parseFloat(o)/100*t:o,a=a.substring?parseFloat(a)/100*e:a,h=h.substring?parseFloat(h)/100*t:h,c=c.substring?parseFloat(c)/100*e:c,l=l.substring?parseFloat(l)/100*t:l,u=u.substring?parseFloat(u)/100*e:u);let d="m0,0";return t-n-o!=0&&(d+="h"+(t-n-o)),o+a!==0&&(d+=`c${o*i},${a*s} ${o-o*s},${a-a*i}, ${o},${a}`),e-a-c!=0&&(d+="v"+(e-a-c)),h+c!==0&&(d+=`c${-h*s},${c*i} ${h*i-h},${c-c*s} ${-h},${c}`),-t+l+h!==0&&(d+="h"+(-t+l+h)),l+u!==0&&(d+=`c${-l*i},${-u*s} ${l*s-l},${u*i-u} ${-l},${-u}`),-e+r+u!==0&&(d+="v"+(-e+r+u)),n+r!==0&&(d+=`c${n*s},${-r*i} ${n-n*i},${r*s-r} ${n},${-r}`),d+="z",d},Cn.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};k.Rectangle=Rectangle;const Shape=function(t={}){return this.shapeInit(t),this};let Dn=Shape.prototype=Object.create(Object.prototype);Dn.type="Shape",Dn.lib="entity",Dn.isArtefact=!0,Dn.isAsset=!1,Dn=Pt(Dn),Dn=Ii(Dn);Dn.defs=G(Dn.defs,{}),Dn.cleanSpecies=function(){this.dirtySpecies=!1},Dn.cleanStampHandlePositionsAdditionalActions=function(){let t=this.localBox,e=this.currentStampHandlePosition;e[0]+=t[0],e[1]+=t[1]};k.Shape=Shape;const Spiral=function(t={}){return this.shapeInit(t),this};let On=Spiral.prototype=Object.create(Object.prototype);On.type="Spiral",On.lib="entity",On.isArtefact=!0,On.isAsset=!1,On=Pt(On),On=Ii(On);On.defs=G(On.defs,{loops:1,loopIncrement:1,drawFromLoop:0});let En=On.setters,Tn=On.deltaSetters;En.loops=function(t){this.loops=t,this.updateDirty()},Tn.loops=function(t){this.loops+=t,this.updateDirty()},En.loopIncrement=function(t){this.loopIncrement=t,this.updateDirty()},Tn.loopIncrement=function(t){this.loopIncrement+=t,this.updateDirty()},En.drawFromLoop=function(t){this.drawFromLoop=Math.floor(t),this.updateDirty()},Tn.drawFromLoop=function(t){this.drawFromLoop=Math.floor(this.drawFromLoop+t),this.updateDirty()},On.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeSpiralPath(),this.pathDefinition=t},On.firstTurn=[[.043,0,.082,-.035,.088,-.088],[.007,-.057,-.024,-.121,-.088,-.162],[-.07,-.045,-.169,-.054,-.265,-.015],[-.106,.043,-.194,.138,-.235,.265],[-.044,.139,-.026,.3,.058,.442],[.091,.153,.25,.267,.442,.308],[.206,.044,.431,-.001,.619,-.131],[.2,-.139,.34,-.361,.381,-.619]],On.subsequentTurns=[[0,-.27,-.11,-.52,-.29,-.71],[-.19,-.19,-.44,-.29,-.71,-.29],[-.27,0,-.52,.11,-.71,.29],[-.19,.19,-.29,.44,-.29,.71],[0,.27,.11,.52,.29,.71],[.19,.19,.44,.29,.71,.29],[.27,0,.52,-.11,.71,-.29],[.19,-.19,.29,-.44,.29,-.71]],On.makeSpiralPath=function(){let t,e,i,s,n,r,o,a,h,c,l,u,d=Math.floor(this.loops),f=this.loopIncrement,p=Math.floor(this.drawFromLoop),m=this.firstTurn,g=this.subsequentTurns,y=[];for(let o=0;o=p&&(b+=`c${t},${e} ${i},${s} ${n},${r}`),[o,a,h,c,l,u]=g[d],y[d]=[t+o*f,e+a*f,i+h*f,s+c*f,n+l*f,r+u*f];return b},On.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox,n=this.scale;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t/n},${-e/n}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};k.Spiral=Spiral;const Star=function(t={}){return this.shapeInit(t),this};let Rn=Star.prototype=Object.create(Object.prototype);Rn.type="Star",Rn.lib="entity",Rn.isArtefact=!0,Rn.isAsset=!1,Rn=Pt(Rn),Rn=Ii(Rn);Rn.defs=G(Rn.defs,{radius1:0,radius2:0,points:0,twist:0});let Fn=Rn.setters,Hn=Rn.deltaSetters;Fn.radius1=function(t){this.radius1=t,this.updateDirty()},Hn.radius1=function(t){this.radius1+=t,this.updateDirty()},Fn.radius2=function(t){this.radius2=t,this.updateDirty()},Hn.radius2=function(t){this.radius2+=t,this.updateDirty()},Fn.points=function(t){this.points=t,this.updateDirty()},Hn.points=function(t){this.points+=t,this.updateDirty()},Fn.twist=function(t){this.twist=t,this.updateDirty()},Hn.twist=function(t){this.twist+=t,this.updateDirty()},Rn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeStarPath(),this.pathDefinition=t},Rn.makeStarPath=function(){let t,e,i,s,n,r,o,a=this.points,h=this.twist,c=this.radius1,l=this.radius2,u=360/a,d=[],f="";if(c.substring||l.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;c=c.substring?parseFloat(c)/100*e:c,l=l.substring?parseFloat(l)/100*e:l}}let p=Fe({x:0,y:-c}),m=Fe({x:0,y:-l});for(t=p.x,e=p.y,d.push(t),m.rotate(-u/2),m.rotate(h),o=0;o{this[e]=t},this)},Ln.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=addStrings(this[e],t)},this)},Ln.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeTetragonPath(),this.pathDefinition=t},Ln.makeTetragonPath=function(){let t,e,i=this.radiusX,s=this.radiusY;if(i.substring||s.substring){let n=this.getHost();if(n){let[r,o]=n.currentDimensions;t=2*(i.substring?parseFloat(i)/100*r:i),e=2*(s.substring?parseFloat(s)/100*o:s)}}else t=2*i,e=2*s;let n=parseFloat((t*this.intersectX).toFixed(2)),r=parseFloat((t-n).toFixed(2)),o=parseFloat((e*this.intersectY).toFixed(2)),a=parseFloat((e-o).toFixed(2)),h="m0,0";return h+=`l${r},${o} ${-r},${a} ${-n},${-a} ${n},${-o}z`,h},Ln.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};k.Tetragon=Tetragon;const Ticker=function(t={}){return this.makeName(t.name),this.register(),this.subscribers=[],this.subscriberObjects=[],this.set(this.defs),this.set(t),this.cycleCount=0,this.active=!1,this.effectiveDuration=0,this.startTime=0,this.currentTime=0,this.tick=0,this.lastEvent=0,t.subscribers&&this.subscribe(t.subscribers),this.setEffectiveDuration(),this};let $n=Ticker.prototype=Object.create(Object.prototype);$n.type="Ticker",$n.lib="animationtickers",$n.isArtefact=!1,$n.isAsset=!1,$n=Pt($n);$n.defs=G($n.defs,{order:1,duration:0,subscribers:null,killOnComplete:!1,cycles:1,eventChoke:0,onRun:null,onHalt:null,onReverse:null,onResume:null,onSeekTo:null,onSeekFor:null,onComplete:null,onReset:null}),$n.packetExclusions=Z($n.packetExclusions,["subscribers"]),$n.packetFunctions=Z($n.packetFunctions,["onRun","onHalt","onReverse","onResume","onSeekTo","onSeekFor","onComplete","onReset"]),$n.kill=function(){return this.active&&this.halt(),_(In,this.name),Xn=!0,this.deregister(),!0},$n.killTweens=function(t=!1){let e,i,s;for(e=0,i=this.subscribers.length;e{t=y[i],t&&e.push(t)})},$n.getSubscriberObjects=function(){return this.subscribers.length&&!this.subscriberObjects.length&&this.repopulateSubscriberObjects(),this.subscriberObjects},$n.sortSubscribers=function(){let t=this.subscribers;if(t.length>1){let e=[].concat(t),i=Math.floor,s=[];e.forEach(t=>{let e=i(t.effectiveTime)||0;s[e]||(s[e]=[]),s[e].push(t)}),this.subscribers=s.reduce((t,e)=>t.concat(e),[])}this.repopulateSubscriberObjects()},$n.updateSubscribers=function(t,e){e=!!Q(e)&&e;let i,s,n=this.getSubscriberObjects();if(e)for(i=n.length-1;i>=0;i--)n[i].set(t);else for(i=0,s=n.length;it.reversed=!t.reversed),this},$n.makeTickerUpdateEvent=function(){return new CustomEvent("tickerupdate",{detail:{name:this.name,type:"Ticker",tick:this.tick,reverseTick:this.effectiveDuration-this.tick},bubbles:!0,cancelable:!0})},$n.recalculateEffectiveDuration=function(){let t,e=this.getSubscriberObjects(),i=0;return this.duration?this.setEffectiveDuration():(e.forEach(e=>{t=e.getEndTime(),t>i&&(i=t)}),this.effectiveDuration=i),this},$n.setEffectiveDuration=function(){let t;return this.duration&&(t=L(this.duration),"%"===t[0]?(this.duration=0,this.recalculateEffectiveDuration()):this.effectiveDuration=t[1]),this},$n.fn=function(t){let e=Nn();t=!!Q(t)&&t;let i,s,n,r,o,a,h,c,l=this.active,u=this.startTime,d=this.cycles,f=this.cycleCount,p=this.effectiveDuration,m=this.eventChoke;if(l&&u&&(!d||f=p?(c=this.tick=0,this.startTime=this.currentTime,e.tick=p,e.reverseTick=0,e.willLoop=!0,d&&(f++,this.cycleCount=f)):(e.tick=c,e.reverseTick=p-c),e.next=!0):c>=p?(e.tick=p,e.reverseTick=0,l=this.active=!1,d&&(f++,this.cycleCount=f)):(e.tick=c,e.reverseTick=p-c,e.next=!0),n=this.getSubscriberObjects(),t)for(i=n.length-1;i>=0;i--)n[i].update(e);else for(i=0,s=n.length;i=d&&this.killTweens(!0)}Wn(e)},$n.run=function(){return this.active||(this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,Z(In,this.name),Xn=!0,"function"==typeof this.onRun&&this.onRun()),this},$n.isRunning=function(){return this.active},$n.reset=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,this.fn(!0),this.active=!1,"function"==typeof this.onReset&&this.onReset(),this},$n.complete=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!0}),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onComplete&&this.onComplete(),this},$n.reverse=function(t=!1){let e;return t=J(t,!1),this.active&&this.halt(),e=this.currentTime-this.startTime,this.startTime=this.currentTime-(this.effectiveDuration-e),this.changeSubscriberDirection(),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onReverse&&this.onReverse(),t&&this.resume(),this},$n.halt=function(){return this.active=!1,Z(In,this.name),Xn=!0,"function"==typeof this.onHalt&&this.onHalt(),this},$n.resume=function(){let t,e,i;return this.active||(t=Date.now(),e=this.currentTime,i=this.startTime,this.startTime=t-(e-i),this.currentTime=t,this.active=!0,Z(In,this.name),Xn=!0,"function"==typeof this.onResume&&this.onResume()),this},$n.seekTo=function(t,e=!1){let i=!1;return t=J(t,0),this.active&&this.halt(),this.cycles&&this.cycleCount>=this.cycles&&(this.cycleCount=this.cycles-1),t=this.cycles&&(this.cycleCount=this.cycles-1),this.startTime-=t,t<0&&(i=!0),this.active=!0,this.fn(i),this.active=!1,"function"==typeof this.onSeekFor&&this.onSeekFor(),e&&this.resume(),this};let In=[],Xn=!0;vt({name:"coreTickersAnimation",order:0,fn:function(){return new Promise(t=>{if(Xn){Xn=!1;let t=[].concat(In),i=Math.floor,s=[];t.forEach(t=>{let n=e[t];if(Q(n)){let t=i(n.order)||0;s[t]||(s[t]=[]),s[t].push(n.name)}}),In=s.reduce((t,e)=>t.concat(e),[])}In.forEach(t=>{let i=e[t];i&&i.fn&&i.fn()}),t(!0)})}});const Yn=[],Nn=function(){return Yn.length||Yn.push({tick:0,reverseTick:0,willLoop:!1,next:!1}),Yn.shift()},Wn=function(t){t&&(t.tick=0,t.reverseTick=0,t.willLoop=!1,t.next=!1,Yn.push(t))},Vn=function(t){return new Ticker(t)};k.Ticker=Ticker;const Tracer=function(t={}){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.stampAction=B,this.trace=rs(t),t.group||(t.group=ci),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let qn=Tracer.prototype=Object.create(Object.prototype);qn.type="Tracer",qn.lib="entity",qn.isArtefact=!0,qn.isAsset=!1,qn=Pt(qn),qn=Hi(qn);qn.defs=G(qn.defs,{artefact:null,historyLength:1,hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000"}),qn.packetExclusions=Z(qn.packetExclusions,[]),qn.packetExclusionsByRegex=Z(qn.packetExclusionsByRegex,[]),qn.packetCoordinates=Z(qn.packetCoordinates,[]),qn.packetObjects=Z(qn.packetObjects,["artefact","particle"]),qn.packetFunctions=Z(qn.packetFunctions,["stampAction"]),qn.finalizePacketOut=function(t,e){return t},qn.postCloneAction=function(t,e){return t.trace=rs({name:t.name,historyLength:e.historyLength||this.historyLength||1}),t},qn.factoryKill=function(t){t&&this.artefact.kill(),this.trace.kill()};qn.getters;let Gn=qn.setters;qn.deltaSetters;Gn.stampAction=function(t){N(t)&&(this.stampAction=t)},Gn.artefact=function(t){let e;t.substring?e=i[t]:V(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e)},qn.regularStampSynchronousActions=function(){let{artefact:t,trace:e,stampAction:i,showHitRadius:s,hitRadius:n,hitRadiusColor:r,currentStampPosition:o}=this,a=this.currentHost;if(e.set({position:o}),e.manageHistory(0,a),i.call(this,t,e,a),s){let t=a.engine;t.save(),t.lineWidth=1,t.strokeStyle=r,t.setTransform(1,0,0,1,0,0),t.beginPath(),t.arc(o[0],o[1],n,0,2*Math.PI),t.stroke(),t.restore()}},qn.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;let i,s,n=Array.isArray(t)?t:[t],r=this.currentStampPosition,o=!1;if(n.some(t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!K(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=Fe(r).vectorSubtract(t);return e.getMagnitude()t.name)),Array.isArray(this.definitions)&&(t.definitions=this.definitions.map(t=>{let e={};if(e.attribute=t.attribute,e.start=t.start,e.end=t.end,t.engine&&t.engine.substring)e.engine=t.engine.substring;else if(Q(t.engine)&&null!==t.engine){let i=this.stringifyFunction(t.engine);i&&(e.engine=i,e.engineIsFunction=!0)}return e})),t},Un.postCloneAction=function(t,i){if(i.useNewTicker){let s=e[this.ticker];Q(i.cycles)?t.cycles=i.cycles:t.cycles=s?s.cycles:1;let n=e[t.ticker];n.cycles=t.cycles,Q(i.duration)&&(t.duration=i.duration,t.calculateEffectiveDuration(),n&&n.recalculateEffectiveDuration())}return Array.isArray(t.definitions)&&t.definitions.forEach((t,e)=>{t.engineIsFunction&&(t.engine=this.definitions[e].engine)}),t};let Zn=Un.getters,_n=Un.setters;Zn.definitions=function(){return[].concat(this.definitions)},_n.definitions=function(t){this.definitions=[].concat(t),this.setDefinitionsValues()},_n.commenceAction=function(t){this.commenceAction=t,"function"!=typeof this.commenceAction&&(this.commenceAction=B)},_n.completeAction=function(t){this.completeAction=t,"function"!=typeof this.completeAction&&(this.completeAction=B)},Un.set=function(t={}){if(Object.keys(t).length){let e,i,s,n,r=this.setters,o=Object.keys(t),a=this.defs,h=!!Q(t.ticker)&&this.ticker;for(i=0,s=o.length;ie?r=1:ni&&(r=1)),a?r&&r==this.status||(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=h?-1:1)):r!=this.status&&(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=h?-1:1)),t.willLoop&&(this.reverseOnCycleEnd?this.reversed=!h:this.status=-1)},Un.doSimpleUpdate=function(t={}){let e,i,s,n,r,o,a,h,c,l,u,d,f,p,m=this.effectiveTime,g=this.engineActions,y=this.effectiveDuration,b=this.status,S=this.definitions,P=this.targets,k=this.action,v=this.setObj||{},x=Math.round;for(e=this.reversed?t.reverseTick-m:t.tick-m,o=y&&!b?e/y:b>0?1:0,i=0,s=S.length;i(t=parseFloat(t),W(t)||(t=0),W(e)||(e=0),parseFloat(t.toFixed(e))),Wheel=function(t={}){return tt(t.dimensions,t.width,t.height,t.radius)||(t.radius=5),this.entityInit(t),this};let Kn=Wheel.prototype=Object.create(Object.prototype);Kn.type="Wheel",Kn.lib="entity",Kn.isArtefact=!0,Kn.isAsset=!1,Kn=Pt(Kn),Kn=Hi(Kn);Kn.defs=G(Kn.defs,{radius:5,startAngle:0,endAngle:360,clockwise:!0,includeCenter:!1,closed:!0});Kn.getters;let Jn=Kn.setters,tr=Kn.deltaSetters;Jn.width=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},tr.width=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Jn.height=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},tr.height=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Jn.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},tr.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Jn.radius=function(t){this.radius=t,this.radiusHelper()},tr.radius=function(t){this.radius=addStrings(this.radius,t),this.radiusHelper()},Jn.startAngle=function(t){this.startAngle=Qn(t,4),this.dirtyPathObject=!0},tr.startAngle=function(t){this.startAngle+=Qn(t,4),this.dirtyPathObject=!0},Jn.endAngle=function(t){this.endAngle=Qn(t,4),this.dirtyPathObject=!0},tr.endAngle=function(t){this.endAngle+=Qn(t,4),this.dirtyPathObject=!0},Jn.closed=function(t){Q(t)&&(this.closed=!!t,this.dirtyPathObject=!0)},Jn.includeCenter=function(t){Q(t)&&(this.includeCenter=!!t,this.dirtyPathObject=!0)},Jn.clockwise=function(t){Q(t)&&(this.clockwise=!!t,this.dirtyPathObject=!0)},Kn.dimensionsHelper=function(){let t=this.dimensions[0];t.substring?this.radius=parseFloat(t)/2+"%":this.radius=t/2,this.dirtyDimensions=!0},Kn.radiusHelper=function(){let t=this.radius,e=this.dimensions;t.substring?e[0]=e[1]=2*parseFloat(t)+"%":e[0]=e[1]=2*t,this.dirtyDimensions=!0},Kn.cleanDimensionsAdditionalActions=function(){let t=this.radius,e=this.currentDimensions,i=t.substring?parseFloat(t)/100*e[0]:t;e[0]!==2*i?(e[1]=e[0],this.currentRadius=e[0]/2):this.currentRadius=i},Kn.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentRadius*i,n=s-e[0]*i,r=s-e[1]*i,o=this.startAngle*v,a=this.endAngle*v;t.arc(n,r,s,o,a,!this.clockwise),this.includeCenter?(t.lineTo(n,r),t.closePath()):this.closed&&t.closePath()}};k.Wheel=Wheel;const World=function(t={}){this.makeName(t.name),this.register(),this.set(this.defs);let e=t.keytypes||{};return e.gravity||(e.gravity="Vector"),t.gravity||(t.gravity=[0,9.81,0]),t.userAttributes&&t.userAttributes.forEach(t=>{this.addAttribute(t),t.type&&(e[t.key]=t.type)}),this.initializeAttributes(e),this.set(t),this};let er=World.prototype=Object.create(Object.prototype);er.type="World",er.lib="world",er.isArtefact=!1,er.isAsset=!1,er=Pt(er);er.defs=G(er.defs,{gravity:null,tickMultiplier:1,keytypes:null}),er.kill=function(){return this.deregister(),!0};let ir=er.getters,sr=er.setters,nr=er.deltaSetters;sr.gravityX=function(t){this.gravity&&Q(t)&&this.gravity.setX(t)},sr.gravityY=function(t){this.gravity&&Q(t)&&this.gravity.setY(t)},sr.gravityZ=function(t){this.gravity&&Q(t)&&this.gravity.setZ(t)},sr.gravity=function(t){this.gravity&&Q(t)&&this.gravity.set(t)},er.addAttribute=function(t={}){let{key:e,defaultValue:i,setter:s,deltaSetter:n,getter:r}=t;return e&&e.substring&&(this.defs[e]=Q(i)?i:null,this[e]=Q(i)?i:null,N(s)&&(sr[e]=s),N(n)&&(nr[e]=n),N(r)&&(ir[e]=r)),this},er.removeAttribute=function(t){return t&&t.substring&&(delete this.defs[t],delete this[t],delete ir[t],delete sr[t],delete nr[t]),this},er.initializeAttributes=function(t){for(let[e,i]of Object.entries(t))switch(i){case"Quaternion":this[e]=ze();break;case"Vector":this[e]=Le();break;case"Coordinate":this[e]=Kt()}};k.World=World;window.scrawlEnvironmentTouchSupported=!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch),window.scrawlEnvironmentOffscreenCanvasSupported="OffscreenCanvas"in window,document.querySelectorAll("[data-stack]").forEach(t=>ri(t)),function(){let t;document.querySelectorAll("canvas").forEach((e,i)=>{t=ai(e),i||li(t)})}(),F(),$t(),Et(),wt=!0,jt();var rr={library:A,startCoreAnimationLoop:F,stopCoreAnimationLoop:function(){w=!1},currentCorePosition:Dt,startCoreListeners:jt,stopCoreListeners:function(){At=!1,wt=!1,Lt.halt(),Bt("removeEventListener")},observeAndUpdate:function(t={}){if(!K(t.event,t.origin,t.updates))return!1;let e=t.target.substring&&t.targetLibrarySection?A[t.targetLibrarySection][t.target]:t.target;if(!e)return!1;let i=t.event,s=t.origin,n=t.useNativeListener?at:it,r=t.useNativeListener?ht:st,o=B;t.preventDefault&&(o=t=>{t.preventDefault(),t.returnValue=!1});let a=function(i){o(i);let s=!(!i||!i.target)&&i.target.id;if(s){let n=t.updates[s];if(n){let t,s=n[0],r=n[1],o=i.target.value,a=!0;switch(r){case"float":t=parseFloat(o);break;case"int":t=parseInt(o,10);break;case"round":t=Math.round(o);break;case"roundDown":t=Math.floor(o);break;case"roundUp":t=Math.ceil(o);break;case"raw":t=o;break;case"string":t=""+o;break;case"boolean":t=!!Q(o)&&(o.substring?"true"===o.toLowerCase()||"false"!==o.toLowerCase()&&!!parseFloat(o):!!o);break;default:r.substring?t=`${parseFloat(o)}${r}`:a=!1}a&&("Group"===e.type?e.setArtefacts({[s]:t}):e.set({[s]:t}))}}};return n(i,a,s),function(){r(i,a,s)}},makeDragZone:function(t={}){let{zone:e,coordinateSource:i,collisionGroup:s,startOn:n,endOn:r,updateOnStart:o,updateOnEnd:a,exposeCurrentArtefact:h}=t;if(!e)return new Error("dragZone constructor - no zone supplied");if(e.substring&&(e=artefact[e]),!e||["Canvas","Stack"].indexOf(e.type)<0)return new Error("dragZone constructor - zone object is not a Stack or Canvas wrapper");let c=e.domElement;if(!c)return new Error("dragZone constructor - zone does not contain a target DOM element");if(s?s.substring&&(s=u[s]):s="Canvas"===e.type?u[e.base.name]:u[e.name],!s||"Group"!==s.type)return new Error("dragZone constructor - unable to recover collisionGroup group");if(i?i.here?i=i.here:K(i.x,i.y)||(i=!1):i="Canvas"===e.type?e.base.here:e.here,!i)return new Error("dragZone constructor - unable to discover a usable coordinateSource object");Array.isArray(n)||(n=["down"]),Array.isArray(r)||(r=["up"]);let l=!1;V(o)&&(o=function(){l.artefact.set(t.updateOnStart)}),N(o)||(o=B),V(a)&&(a=function(){l.artefact.set(t.updateOnEnd)}),N(a)||(a=B),I(h)||(h=!1);const d=function(t){t.cancelable&&(t.preventDefault(),t.returnValue=!1)},f=function(t){d(t);let e=t.type;"touchstart"!==e&&"touchcancel"!==e||Rt(t),l=s.getArtefactAt(i),l&&(l.artefact.pickupArtefact(i),o())};let p=function(t){d(t),l&&(l.artefact.dropArtefact(),a(),l=!1)};const m=function(){st(n,f,c),st(r,p,c)};return it(n,f,c),it(r,p,c),h?function(t=!1){if(!t)return l;m()}:m},makeComponent:function(t){let e=!!Y(t.domElement)&&t.domElement,s=V(t.animationHooks)?t.animationHooks:{},n=V(t.canvasSpecs)?t.canvasSpecs:{},r=V(t.observerSpecs)?t.observerSpecs:{},o=!I(t.includeCanvas)||t.includeCanvas;return e&&e.id&&i[e.id]?wi(e,n,s,r):Di(e,n,s,r,o)},addStack:function(t={}){let e,s,n,r,o,a,h="absolute";return e=t.element&&t.element.substring?document.querySelector(t.element):Y(t.element)?t.element:document.createElement("div"),t.host&&t.host.substring?(s=document.querySelector(t.host),s||(s=document.body)):s=Y(t.host)?t.host:Q(e.parentElement)?e.parentElement:document.body,Q(t.width)&&(e.style.width=t.width.toFixed?t.width+"px":t.width),Q(t.height)&&(e.style.height=t.height.toFixed?t.height+"px":t.height),a=t.name||e.id||e.getAttribute("name")||"",a||(a=z()),e.id=a,e.setAttribute("data-stack","data-stack"),s&&null!=s.getAttribute("data-stack")?(n=i[s.id],o=n?n.name:"root"):o="root",e.setAttribute("data-group",o),"root"===o&&(h="relative"),e.parentElement&&s.id===e.parentElement.id||s.appendChild(e),r=ti({name:a,domElement:e,group:o,host:o,position:h,setInitialDimensions:!0}),oi(e,a),Array.from(e.childNodes).forEach(t=>{t.id&&ei.indexOf(t.id)>=0&&_(ei,t.id)}),delete t.name,delete t.element,delete t.host,delete t.width,delete t.height,r.set(t),ni=!0,r},getStack:function(t){let e,i=document.querySelector(t);return i&&(e=ri(i)),e},addCanvas:function(t={}){let e=document.createElement("canvas"),s=t.name?t.name:z(),n=t.host,r="root",o=t.width||300,a=t.height||150,h="relative";if(n.substring){let t=i[n];!t&&n?(n=document.querySelector(n),n&&(r=n.id)):n=t}n?"Stack"===n.type?(r=n.name,h="absolute",n=n.domElement):Y(n)||(n=document.body):n=document.body,e.id=s,e.setAttribute("data-group",r),e.width=o,e.height=a,e.style.position=h,n.appendChild(e);let c=qe({name:s,domElement:e,group:r,host:r,position:h,setInitialDimensions:!1,setAsCurrentCanvas:!Q(t.setAsCurrentCanvas)||t.setAsCurrentCanvas,trackHere:Q(t.trackHere)?t.trackHere:"subscribe"});return delete t.group,delete t.host,delete t.name,delete t.element,delete t.position,delete t.setInitialDimensions,delete t.setAsCurrentCanvas,delete t.trackHere,c.set(t),c},getCanvas:function(t){let e=document.querySelector(t),i=!1;return e&&(i=ai(e)),li(i),i},setCurrentCanvas:li,clear:ui,compile:di,show:fi,render:function(...t){return pi(t),mi("render")},addListener:it,removeListener:st,addNativeListener:at,removeNativeListener:ht,makeAnimationObserver:et,reducedMotionActions:pt,setReduceMotionAction:t=>dt=t,setNoPreferenceMotionAction:t=>ft=t,colorSchemeActions:St,setColorSchemeDarkAction:t=>yt=t,setColorSchemeLightAction:t=>bt=t,makeAction:function(t){return new Action(t)},makeAnimation:vt,makeBezier:function(t={}){return t.species="bezier",new Bezier(t)},makeBlock:function(t){return new Block(t)},makeCog:function(t={}){return t.species="cog",new Cog(t)},makeColor:Qi,requestCoordinate:_t,releaseCoordinate:Qt,makeEmitter:function(t){return new Emitter(t)},makeFilter:function(t){return new Filter(t)},makeForce:ps,makeGradient:function(t){return new Gradient(t)},makeGrid:function(t){return new Grid(t)},makeGroup:Ee,importImage:ne,importDomImage:re,createImageFromCell:function(t,e=!1){let i=t.substring?a[t]||o[t]:t;"Canvas"===i.type&&(i=i.base),"Cell"===i.type&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=!0))},createImageFromGroup:function(t,e=!1){let i;t&&!t.substring?"Group"===t.type?i=t:"Cell"===t.type?i=u[t.name]:"Canvas"===t.type&&(i=u[t.base.name]):t&&t.substring&&(i=u[t]),i&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=!0))},createImageFromEntity:function(t,e=!1){let s=t.substring?i[t]:t;s.isArtefact&&(s.stashOutput=!0,e&&(s.stashOutputAsAsset=!0))},makeLine:function(t={}){return t.species="line",new Line(t)},makeLoom:function(t){return new Loom(t)},makeNet:function(t){return new Net(t)},makeOval:function(t={}){return t.species="oval",new Oval(t)},makePattern:function(t){return new Pattern(t)},makePhrase:function(t){return new Phrase(t)},makePicture:function(t){return new Picture(t)},makePolygon:function(t={}){return t.species="polygon",new Polygon(t)},makePolyline:function(t={}){return t.species="polyline",new Polyline(t)},makeQuadratic:function(t={}){return t.species="quadratic",new Quadratic(t)},requestQuaternion:$e,releaseQuaternion:Me,makeRadialGradient:function(t){return new RadialGradient(t)},makeRectangle:function(t={}){return t.species="rectangle",new Rectangle(t)},makeRender:Ci,makeShape:function(t){return new Shape(t)},makeSpiral:function(t={}){return t.species="spiral",new Spiral(t)},makeSpring:Es,importSprite:Ws,makeStar:function(t={}){return t.species="star",new Star(t)},makeTetragon:function(t={}){return t.species="tetragon",new Tetragon(t)},makeTicker:Vn,makeTracer:function(t){return new Tracer(t)},makeTween:function(t){return new Tween(t)},requestVector:Fe,releaseVector:He,importDomVideo:function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach(t=>{let i;if("VIDEO"===t.tagName.toUpperCase()){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=Xs({name:i,source:t});t.readyState<=2&&(t.oncanplay=()=>{s.set({source:t})})}})},importVideo:Is,importMediaStream:function(t={}){let e={};e.audio=!Q(t.audio)||t.audio,e.video={};let i=e.video.width={};t.minWidth&&(i.min=t.minWidth),t.maxWidth&&(i.max=t.maxWidth),i.ideal=t.width?t.width:1280;let s=e.video.height={};t.minHeight&&(s.min=t.minHeight),t.maxHeight&&(s.max=t.maxHeight),s.ideal=t.height?t.height:720,t.facing&&(e.video.facingMode=t.facing);let n=t.name||z(),r=document.createElement("video"),o=Xs({name:n,source:r});return new Promise((t,i)=>{navigator&&navigator.mediaDevices?navigator.mediaDevices.getUserMedia(e).then(e=>{let i,s=e.getVideoTracks();Array.isArray(s)&&s[0]&&(i=s[0].getConstraints()),r.id=o.name,i&&(r.width=i.width,r.height=i.height),r.srcObject=e,r.onloadedmetadata=function(t){r.play()},t(o)}).catch(e=>{console.log(e.message),t(o)}):i("Navigator.mediaDevices object not found")})},makeWheel:function(t){return new Wheel(t)},makeWorld:function(t){return new World(t)}};export default rr; +const t={},e={},i={},s=[],n={},r=[],o={},a={},l=[],h={},c={},u={},d={},f={},p={},m=[],g={},y={},b={},k=[],S={},O={},P=Math.PI/180,v=new Set(["all","background","backgroundAttachment","backgroundBlendMode","backgroundClip","backgroundColor","backgroundOrigin","backgroundPosition","backgroundRepeat","border","borderBottom","borderBottomColor","borderBottomStyle","borderBottomWidth","borderCollapse","borderColor","borderLeft","borderLeftColor","borderLeftStyle","borderLeftWidth","borderRight","borderRightColor","borderRightStyle","borderRightWidth","borderSpacing","borderStyle","borderTop","borderTopColor","borderTopStyle","borderTopWidth","borderWidth","clear","color","columns","content","counterIncrement","counterReset","cursor","direction","display","emptyCells","float","font","fontFamily","fontSize","fontSizeAdjust","fontStretch","fontStyle","fontSynthesis","fontVariant","fontVariantAlternates","fontVariantCaps","fontVariantEastAsian","fontVariantLigatures","fontVariantNumeric","fontVariantPosition","fontWeight","grid","gridArea","gridAutoColumns","gridAutoFlow","gridAutoPosition","gridAutoRows","gridColumn","gridColumnStart","gridColumnEnd","gridRow","gridRowStart","gridRowEnd","gridTemplate","gridTemplateAreas","gridTemplateRows","gridTemplateColumns","imageResolution","imeMode","inherit","inlineSize","isolation","letterSpacing","lineBreak","lineHeight","listStyle","listStyleImage","listStylePosition","listStyleType","margin","marginBlockStart","marginBlockEnd","marginInlineStart","marginInlineEnd","marginBottom","marginLeft","marginRight","marginTop","marks","mask","maskType","maxWidth","maxHeight","maxBlockSize","maxInlineSize","maxZoom","minWidth","minHeight","minBlockSize","minInlineSize","minZoom","mixBlendMode","objectFit","objectPosition","offsetBlockStart","offsetBlockEnd","offsetInlineStart","offsetInlineEnd","orphans","overflow","overflowWrap","overflowX","overflowY","pad","padding","paddingBlockStart","paddingBlockEnd","paddingInlineStart","paddingInlineEnd","paddingBottom","paddingLeft","paddingRight","paddingTop","pageBreakAfter","pageBreakBefore","pageBreakInside","pointerEvents","position","prefix","quotes","rubyAlign","rubyMerge","rubyPosition","scrollBehavior","scrollSnapCoordinate","scrollSnapDestination","scrollSnapPointsX","scrollSnapPointsY","scrollSnapType","scrollSnapTypeX","scrollSnapTypeY","shapeImageThreshold","shapeMargin","shapeOutside","tableLayout","textAlign","textDecoration","textIndent","textOrientation","textOverflow","textRendering","textShadow","textTransform","textUnderlinePosition","unicodeRange","unset","verticalAlign","widows","willChange","wordBreak","wordSpacing","wordWrap","zIndex"]),w=new Set(["alignContent","alignItems","alignSelf","animation","animationDelay","animationDirection","animationDuration","animationFillMode","animationIterationCount","animationName","animationPlayState","animationTimingFunction","backfaceVisibility","backgroundImage","backgroundSize","borderBottomLeftRadius","borderBottomRightRadius","borderImage","borderImageOutset","borderImageRepeat","borderImageSlice","borderImageSource","borderImageWidth","borderRadius","borderTopLeftRadius","borderTopRightRadius","boxDecorationBreak","boxShadow","boxSizing","columnCount","columnFill","columnGap","columnRule","columnRuleColor","columnRuleStyle","columnRuleWidth","columnSpan","columnWidth","filter","flex","flexBasis","flexDirection","flexFlow","flexGrow","flexShrink","flexWrap","fontFeatureSettings","fontKerning","fontLanguageOverride","hyphens","imageRendering","imageOrientation","initial","justifyContent","linearGradient","opacity","order","orientation","outline","outlineColor","outlineOffset","outlineStyle","outlineWidth","resize","tabSize","textAlignLast","textCombineUpright","textDecorationColor","textDecorationLine","textDecorationStyle","touchAction","transformStyle","transition","transitionDelay","transitionDuration","transitionProperty","transitionTimingFunction","unicodeBidi","whiteSpace","writingMode"]);var A=Object.freeze({__proto__:null,version:"8.4.0",anchor:{},anchornames:[],animation:t,animationnames:[],asset:n,assetnames:r,animationtickers:e,animationtickersnames:[],artefact:i,artefactnames:s,canvas:o,canvasnames:[],cell:a,cellnames:l,element:{},elementnames:[],entity:h,entitynames:[],filter:c,filternames:[],fontattribute:{},fontattributenames:[],force:f,forcenames:[],group:u,groupnames:[],palette:{},palettenames:[],particle:d,particlenames:[],spring:p,springnames:m,stack:{},stacknames:[],styles:b,stylesnames:k,tween:y,tweennames:[],unstackedelement:S,unstackedelementnames:[],world:g,worldnames:[],constructors:O,radian:P,css:v,xcss:w});let x=!1,C=!0,D=[],R=[];const E=function(){C=!0},F=function(){let e=[];C&&function(){if(C){C=!1;let e,i,s=Math.floor,n=[];R.forEach(r=>{e=t[r],e&&(i=s(e.order)||0,n[i]||(n[i]=[]),n[i].push(e))}),D=n.reduce((t,e)=>t.concat(e),[])}}(),D.forEach(t=>{t&&t.fn&&e.push(t.fn())}),Promise.all(e).then(()=>{x&&window.requestAnimationFrame(()=>F())}).catch(t=>console.log("animationLoop error: ",t))},T=function(){x=!0,F()},H=(t,e)=>{if(!J(e))throw new Error(`core/utilities addStrings() error - no delta argument supplied ${t}, ${e}`);if(null!=e){let i=!(!t.substring&&!e.substring);return V(t)?t+=V(e)?e:parseFloat(e):t=parseFloat(t)+(V(e)?e:parseFloat(e)),i?t+"%":t}return t},M=t=>{let e,i,s;if(!J(t))throw new Error("core/utilities convertTime() error - no argument supplied");if(V(t))return["ms",t];if(!t.substring)throw new Error("core/utilities convertTime() error - invalid argument: "+t);if(e=t.match(/^\d+\.?\d*(\D*)/),i=e[1].toLowerCase?e[1].toLowerCase():"ms",s=parseFloat(t),!V(s))throw new Error("core/base error - convertTime() argument converts to NaN: "+t);switch(i){case"s":s*=1e3;break;case"%":break;default:i="ms"}return[i,s]},I=t=>t.toFixed?0==t?t:isNaN(t)?0:t<-1e-6||t>1e-6?t:0:t,B=()=>{},L=function(t){return t},$=function(){return this},j=()=>Promise.resolve(!0),X=()=>performance.now().toString(36)+Math.random().toString(36).substr(2),Y=function(t,e,i){return e+t*(i-e)},N=t=>"boolean"==typeof t,z=t=>"[object HTMLCanvasElement]"===Object.prototype.toString.call(t),G=t=>!!(t&&t.querySelector&&t.dispatchEvent),W=t=>"function"==typeof t,V=t=>!(void 0===t||!t.toFixed||Number.isNaN(t)),U=t=>"[object Object]"===Object.prototype.toString.call(t),q=t=>!(!t||!t.type||"Quaternion"!==t.type),_=(t,e)=>{if(!U(t)||!U(e))throw new Error(`core/utilities mergeOver() error - insufficient arguments supplied ${t}, ${e}`);for(let i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t},Z=(t,e)=>{if(!U(t)||!U(e))throw new Error(`core/utilities mergeDiscard() error - insufficient arguments supplied ${t}, ${e}`);return Object.entries(e).forEach(([i,s])=>{null===s?delete t[i]:t[i]=e[i]}),t},Q=(t,e)=>{if(!tt(t,e))throw new Error(`core/utilities pushUnique() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error("core/utilities pushUnique() error - argument not an array "+t);return Array.isArray(e)?e.forEach(e=>Q(t,e)):t.indexOf(e)<0&&t.push(e),t},K=(t,e)=>{if(!tt(t,e))throw new Error(`core/utilities removeItem() error - insufficient arguments supplied ${t}, ${e}`);if(!Array.isArray(t))throw new Error("core/utilities removeItem() error - argument not an array "+t);let i=t.indexOf(e);return i>=0&&t.splice(i,1),t},J=t=>void 0!==t,tt=(...t)=>t.every(t=>void 0!==t),et=(...t)=>t.find(t=>void 0!==t),it=(...t)=>!!t.find(t=>void 0!==t);var st=function(){var t=4022871197;return function(e){if(e){e=e.toString();for(var i=0;i>>0,t=(s*=t)>>>0,t+=4294967296*(s-=t)}return 2.3283064365386963e-10*(t>>>0)}t=4022871197}},nt=function(t){return function(){var e,i,s=48,n=1,r=s,o=new Array(s),a=0,l=new st;for(e=0;e=s&&(r=0);var t=1768863*o[r]+2.3283064365386963e-10*n;return o[r]=t-(n=0|t)},c=function(t){return Math.floor(t*(h()+11102230246251565e-32*(2097152*h()|0)))};c.string=function(t){var e,i="";for(e=0;e0){var o=i.indexOf(this);~o?i.splice(o+1):i.push(this),~o?s.splice(o,1/0,n):s.push(n),~i.indexOf(r)&&(r=e.call(this,n,r))}else i.push(r);return null==t?r:t.call(this,n,r)}}(i,n),s)),c.initState(),c.hashString(t)},c.addEntropy=function(){var t=[];for(e=0;e{e.forEach(e=>{e.isIntersecting?!t.isRunning()&&t.run():e.isIntersecting||t.isRunning()&&t.halt()})},i);return e&&e.domElement&&s.observe(e.domElement),function(){s.disconnect()}}return B},Lt=function(t,e,i){if(!W(e))throw new Error(`core/document addListener() error - no function supplied: ${t}, ${i}`);return jt(t,e,i,"removeEventListener"),jt(t,e,i,"addEventListener"),function(){$t(t,e,i)}},$t=function(t,e,i){if(!W(e))throw new Error(`core/document removeListener() error - no function supplied: ${t}, ${i}`);jt(t,e,i,"removeEventListener")},jt=function(t,e,i,s){let n,r=[].concat(t);n=i.substring?document.body.querySelectorAll(i):Array.isArray(i)?i:[i],navigator.pointerEnabled||navigator.msPointerEnabled?Yt(r,e,n,s):Xt(r,e,n,s)},Xt=function(t,e,i,s){t.forEach(t=>{i.forEach(i=>{if(!(G(i)||i.document||i.characterSet))throw new Error(`core/document actionMouseListener() error - bad target: ${t}, ${i}`);switch(t){case"move":i[s]("mousemove",e,!1),i[s]("touchmove",e,!1),i[s]("touchfollow",e,!1);break;case"up":i[s]("mouseup",e,!1),i[s]("touchend",e,!1);break;case"down":i[s]("mousedown",e,!1),i[s]("touchstart",e,!1);break;case"leave":i[s]("mouseleave",e,!1),i[s]("touchleave",e,!1);break;case"enter":i[s]("mouseenter",e,!1),i[s]("touchenter",e,!1)}})})},Yt=function(t,e,i,s){t.forEach(t=>{i.forEach(i=>{if(!(G(i)||i.document||i.characterSet))throw new Error(`core/document actionPointerListener() error - bad target: ${t}, ${i}`);switch(t){case"move":i[s]("pointermove",e,!1);break;case"up":i[s]("pointerup",e,!1);break;case"down":i[s]("pointerdown",e,!1);break;case"leave":i[s]("pointerleave",e,!1);break;case"enter":i[s]("pointerenter",e,!1)}})})},Nt=function(t,e,i){if(!W(e))throw new Error(`core/document addNativeListener() error - no function supplied: ${t}, ${i}`);return Gt(t,e,i,"removeEventListener"),Gt(t,e,i,"addEventListener"),function(){zt(t,e,i)}},zt=function(t,e,i){if(!W(e))throw new Error(`core/document removeNativeListener() error - no function supplied: ${t}, ${i}`);Gt(t,e,i,"removeEventListener")},Gt=function(t,e,i,s){let n,r=[].concat(t);n=i.substring?document.body.querySelectorAll(i):Array.isArray(i)?i:[i],r.forEach(t=>{n.forEach(i=>{if(!(G(i)||i.document||i.characterSet))throw new Error(`core/document actionNativeListener() error - bad target: ${t}, ${i}`);i[s](t,e,!1)})})},Wt=window.matchMedia("(prefers-reduced-motion: reduce)");let Vt=Wt.matches,Ut=B,qt=B;const _t=()=>{Vt?Ut():qt()};Wt.addEventListener("change",()=>{Vt=Wt.matches,_t()});const Zt=window.matchMedia("(prefers-color-scheme: dark)");let Qt=Zt.matches,Kt=B,Jt=B;const te=()=>{Qt?Kt():Jt()};Zt.addEventListener("change",()=>{Qt=Zt.matches,te()});function ee(t={}){t.defs={},t.getters={},t.setters={},t.deltaSetters={},t.get=function(t){if(J(t)){let e=this.getters[t];if(e)return e.call(this);{let e=this.defs[t];if(void 0!==e){let i=this[t];return void 0!==i?i:e}}}return null},t.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs;Object.entries(t).forEach(([t,n])=>{t&&"name"!==t&&null!=n&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this)}return this},t.setDelta=function(t={}){if(Object.keys(t).length){let e,i=this.deltaSetters,s=this.defs;Object.entries(t).forEach(([t,n])=>{t&&"name"!==t&&null!=n&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=H(this[t],n)))},this)}return this};return t.defs=_(t.defs,{name:""}),t.packetExclusions=[],t.packetExclusionsByRegex=[],t.packetCoordinates=[],t.packetObjects=[],t.packetFunctions=[],t.saveAsPacket=function(t={}){N(t)&&t&&(t={includeDefaults:!0});let e=this.defs,i=Object.keys(e),s=this.packetExclusions,n=this.packetExclusionsByRegex,r=this.packetCoordinates,o=this.packetObjects,a=this.packetFunctions,l=t.includeDefaults||!1,h={};return l&&!Array.isArray(l)?l=Object.keys(e):l||(l=[]),Object.entries(this).forEach(([t,e])=>{let c,u=!0;if(i.indexOf(t)<0&&(u=!1),u&&s.indexOf(t)>=0&&(u=!1),u&&(c=n.some(e=>new RegExp(e).test(t)),c&&(u=!1)),u)if(a.indexOf(t)>=0){if(J(e)&&null!==e){let i=this.stringifyFunction(e);i&&i.length&&(h[t]=i)}}else o.indexOf(t)>=0&&this[t]&&this[t].name?h[t]=this[t].name:r.indexOf(t)>=0?(l.indexOf(t)>=0||e[0]||e[1])&&(h[t]=e):(c=this.processPacketOut(t,e,l),c&&(h[t]=e))},this),h=this.finalizePacketOut(h,t),JSON.stringify([this.name,this.type,this.lib,h])},t.stringifyFunction=function(t){let e=t.toString().match(/\(([\s\S]*?)\)[\s\S]*?\{([\s\S]*)\}/),i=e[1],s=e[2];return!!tt(i,s)&&`${i}~~~${s}`},t.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){return t},t.importPacket=function(t){let e=this;const i=function(t){return new Promise((i,s)=>{let n;t.substring||s(new Error("Packet url supplied for import is not a string")),"["===t[0]?(n=e.actionPacket(t),n&&n.lib?i(n):s(n)):t.indexOf('"name":')>=0?s(new Error("Bad packet supplied for import")):fetch(t).then(t=>{if(!t.ok)throw new Error(`Packet import from server failed - ${t.status}: ${t.statusText} - ${t.url}`);return t.text()}).then(t=>{if(n=e.actionPacket(t),!n||!n.lib)throw n;i(n)}).catch(t=>s(t))})};if(Array.isArray(t)){let e=[];return t.forEach(t=>e.push(i(t))),new Promise((t,i)=>{Promise.all(e).then(e=>t(e)).catch(t=>i(t))})}if(t.substring)return i(t);Promise.reject(new Error("Argument supplied for packet import is not a string or array of strings"))},t.actionPacketExclusions=["Image","Sprite","Video","Canvas","Stack"],t.actionPacket=function(t){try{if(t&&t.substring){if("["===t[0]){let e,i,s,n;try{[e,i,s,n]=JSON.parse(t)}catch(t){throw new Error("Failed to process packet due to JSON parsing error - "+t.message)}if(tt(e,i,s,n)){if(this.actionPacketExclusions.indexOf(i)>=0)throw new Error("Failed to process packet - Stacks, Canvases and visual assets are excluded from the packet system");let t=A[s][e];if(t)t.set(n);else{if(n.outerHTML&&n.host){let t=document.querySelector("#"+n.host);if(t){let i=document.createElement("div");i.innerHTML=n.outerHTML;let s=i.firstElementChild;s&&(s.id=e,t.appendChild(s),n.domElement=s)}}if(t=new O[i](n),!t)throw new Error("Failed to create Scrawl-canvas object from supplied packet")}if(t.packetFunctions.forEach(e=>this.actionPacketFunctions(t,e)),n.anchor&&t.anchor&&t.anchor.packetFunctions.forEach(e=>{t.anchor[e]=n.anchor[e],this.actionPacketFunctions(t.anchor,e),t.anchor.build()}),n.glyphStyles&&t.glyphStyles&&n.glyphStyles.forEach((e,i)=>{U(e)&&t.setGlyphStyles(e,i)}),t)return t;throw new Error("Failed to process supplied packet")}throw new Error("Failed to process packet - JSON string holds incomplete data")}throw new Error("Failed to process packet - JSON string does not represent an array")}throw new Error("Failed to process packet - not a JSON string")}catch(t){return console.log(t),t}},t.actionPacketFunctions=function(t,e){let i=t[e];if(J(i)&&null!==i&&i.substring)if("~~~"===i)t[e]=B;else{let s,n,r;[s,n]=i.split("~~~"),s=s.split(","),s=s.map(t=>t.trim()),n.indexOf("[native code]")<0?(r=new Function(...s,n),t[e]=r.bind(t)):t[e]=B}},t.clone=function(t={}){let e,i,s=this.name;this.name=t.name||"",t.useNewTicker?(i=this.ticker,this.ticker=null,e=this.saveAsPacket(),this.ticker=i):e=this.saveAsPacket(),this.name=s;let n=this.actionPacket(e);return this.packetFunctions.forEach(t=>{this[t]&&(n[t]=this[t])}),n=this.postCloneAction(n,t),n.set(t),n},t.postCloneAction=function(t,e){return t},t.kill=function(){return this.deregister()},t.makeName=function(t){return t&&t.substring&&A[this.lib+"names"].indexOf(t)<0?this.name=t:this.name=X(),this},t.register=function(){if(!J(this.name))throw new Error("core/base error - register() name not set: "+this);let t=A[this.lib+"names"],e=A[this.lib];return this.isArtefact&&(Q(s,this.name),i[this.name]=this),this.isAsset&&(Q(r,this.name),n[this.name]=this),Q(t,this.name),e[this.name]=this,this},t.deregister=function(){if(!J(this.name))throw new Error("core/base error - deregister() name not set: "+this);let t=A[this.lib+"names"],e=A[this.lib];return this.isArtefact&&(K(s,this.name),delete i[this.name]),this.isAsset&&(K(r,this.name),delete n[this.name]),K(t,this.name),delete e[this.name],this},t}const Animation=function(t={}){return this.makeName(t.name),this.order=J(t.order)?t.order:this.defs.order,this.fn=t.fn||j,this.onRun=t.onRun||B,this.onHalt=t.onHalt||B,this.onKill=t.onKill||B,this.register(),t.delay||this.run(),this};let ie=Animation.prototype=Object.create(Object.prototype);ie.type="Animation",ie.lib="animation",ie.isArtefact=!1,ie.isAsset=!1,ie=ee(ie);ie.defs=_(ie.defs,{order:1,fn:null,onRun:null,onHalt:null,onKill:null}),ie.stringifyFunction=B,ie.processPacketOut=B,ie.finalizePacketOut=B,ie.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},ie.clone=$,ie.run=function(){return this.onRun(),Q(R,this.name),E(),this},ie.isRunning=function(){return R.indexOf(this.name)>=0},ie.halt=function(){return this.onHalt(),K(R,this.name),E(),this},ie.kill=function(){return this.onKill(),K(R,this.name),E(),this.deregister(),!0};const se=function(t){return new Animation(t)};O.Animation=Animation;const ne=[];let re=!1,oe=!1;const ae={x:0,y:0,scrollX:0,scrollY:0,w:0,h:0,type:"mouse"},le=function(t){let e=document.documentElement.clientWidth,i=document.documentElement.clientHeight;ae.w===e&&ae.h===i||(ae.w=e,ae.h=i,oe=!0)},he=function(t){let e=window.pageXOffset,i=window.pageYOffset;ae.scrollX===e&&ae.scrollY===i||(ae.x+=e-ae.scrollX,ae.y+=i-ae.scrollY,ae.scrollX=e,ae.scrollY=i,oe=!0)},ce=function(t){let e=Math.round(t.pageX),i=Math.round(t.pageY);ae.x===e&&ae.y===i||(ae.type=navigator.pointerEnabled?"pointer":"mouse",ae.x=e,ae.y=i,oe=!0)},ue=function(t){if(("touchstart"===t.type||"touchmove"===t.type)&&t.touches&&t.touches[0]){let e=t.touches[0],i=Math.round(e.pageX),s=Math.round(e.pageY);ae.x===i&&ae.y===s||(ae.type="touch",ae.x=i,ae.y=s,de())}},de=function(){ne.forEach(t=>fe(t))},fe=function(t){let e=i[t];if(!J(e))throw new Error("core/userInteraction updateUiSubscribedElement() error - artefact does not exist: "+t);let s=e.domElement;if(!G(s))throw new Error("core/userInteraction updateUiSubscribedElement() error - DOM element missing: "+t);let n=s.getBoundingClientRect(),r=Math.round(n.left+window.pageXOffset),o=Math.round(n.top+window.pageYOffset);e.here||(e.here={});let a=e.here;if(a.w=Math.round(n.width),a.h=Math.round(n.height),a.type=ae.type,e.localMouseListener?(a.localListener=!0,a.active=!1,a.normX=!!a.originalWidth&&a.x/a.originalWidth,a.normY=!!a.originalHeight&&a.y/a.originalHeight,a.offsetX=r,a.offsetY=o,a.x>e.activePadding&&a.x0+e.activePadding&&a.y1||a.normY<0||a.normY>1)&&(a.active=!1)),"Canvas"===e.type&&e.updateBaseHere(a,e.fit),e.checkForResize&&!e.dirtyDimensions&&!e.dirtyDomDimensions){let[t,i]=e.currentDimensions;if("Canvas"===e.type){e.computedStyles||(e.computedStyles=window.getComputedStyle(e.domElement));let s=e.computedStyles,n=Math.floor(a.w-parseFloat(s.borderLeftWidth)-parseFloat(s.borderRightWidth)-parseFloat(s.paddingLeft)-parseFloat(s.paddingRight)),r=Math.floor(a.h-parseFloat(s.borderTopWidth)-parseFloat(s.borderBottomWidth)-parseFloat(s.paddingTop)-parseFloat(s.paddingBottom));t===n&&i===r||e.set({dimensions:[n,r]})}else t===a.w&&i===a.h||e.set({dimensions:[a.w,a.h]})}},pe=se({name:"coreListenersTracker",order:0,delay:!0,fn:function(){return new Promise(t=>{ne.length||t(!1),re&&oe&&(oe=!1,de()),t(!0)})}}),me=function(){ge("removeEventListener"),ge("addEventListener"),re=!0,oe=!0,pe.run()},ge=function(t){navigator.pointerEnabled||navigator.msPointerEnabled?(window[t]("pointermove",ce,!1),window[t]("pointerup",ce,!1),window[t]("pointerdown",ce,!1),window[t]("pointerleave",ce,!1),window[t]("pointerenter",ce,!1)):(window[t]("mousemove",ce,!1),window[t]("mouseup",ce,!1),window[t]("mousedown",ce,!1),window[t]("mouseleave",ce,!1),window[t]("mouseenter",ce,!1),window[t]("touchmove",ue,!1),window[t]("touchstart",ue,!1),window[t]("touchend",ue,!1),window[t]("touchcancel",ue,!1)),window[t]("scroll",he,!1),window[t]("resize",le,!1)},ye=function(){le(),oe=!0},be=URL.createObjectURL(new Blob(['let packet,packetFiltersArray,source,work,cache,actions,workstore={},workstoreLastAccessed={};const createResultObject=function(e){return{r:new Uint8ClampedArray(e),g:new Uint8ClampedArray(e),b:new Uint8ClampedArray(e),a:new Uint8ClampedArray(e)}},unknit=function(e){let t=e.data,l=Math.floor(t.length/4);source=createResultObject(l),e.channels=source;let n=source.r,r=source.g,o=source.b,s=source.a,u=(work=createResultObject(l)).r,a=work.g,c=work.b,i=work.a,f=0;for(let e=0,l=t.length;e{workstoreLastAccessed[e]actions.push(...e.actions)),actions.length&&(unknit(cache.source),actions.forEach(e=>theBigActionsObject[e.action]&&theBigActionsObject[e.action](e)),knit()),postMessage(packet)},onerror=function(e){console.log("error"+e.message),postMessage(packet)};const buildImageGrid=function(e){if(e||(e=cache.source),e&&e.width&&e.height){let t=`grid-${e.width}-${e.height}`;if(workstore[t])return workstoreLastAccessed[t]=Date.now(),workstore[t];let l=[],n=0;for(let t=0,r=e.height;t=s&&(e=s-l-1),t+(n=n.toFixed&&!isNaN(n)?n:1)>=a&&(t=a-n-1),e<1&&(e=1),t<1&&(t=1),e+l>=s&&(l=s-e-1),t+n>=a&&(n=a-t-1);let c=e+l,i=t+n;(r=r.toFixed&&!isNaN(r)?r:0)<0&&(r=0),r>=c&&(r=c-1),(o=o.toFixed&&!isNaN(o)?o:0)<0&&(o=0),o>=i&&(o=i-1);let f=`alphatileset-${s}-${a}-${e}-${t}-${l}-${n}-${r}-${o}`;if(workstore[f])return workstoreLastAccessed[f]=Date.now(),workstore[f];let h,g,p,d,b,k,w,R=[];for(d=o-i,b=a;d=0&&k=0&&t=0&&k=0&&t=0&&k=0&&t=0&&k=0&&t=o&&(e=o-1),(t=t.toFixed&&!isNaN(t)?t:1)<1&&(t=1),t>=s&&(t=s-1),(l=l.toFixed&&!isNaN(l)?l:0)<0&&(l=0),l>=e&&(l=e-1),(n=n.toFixed&&!isNaN(n)?n:0)<0&&(n=0),n>=t&&(n=t-1);let u=`imagetileset-${o}-${s}-${e}-${t}-${l}-${n}`;if(workstore[u])return workstoreLastAccessed[u]=Date.now(),workstore[u];let a=[];for(let r=n-t,u=s;r=0&&y=0&&t=0&&n=0&&s=e&&(l=e-1),null==n||n<0?n=0:n>=t&&(n=t-1);let s=o.width,u=o.height,a=`matrix-${s}-${u}-${e}-${t}-${l}-${n}`;if(workstore[a])return workstoreLastAccessed[a]=Date.now(),workstore[a];let c,i,f,h,g,p,d=o.data.length,b=[],k=[];for(f=-n,h=t-n;f=d&&(l-=d),t.push(l)}k.push(t)}return workstore[a]=k,workstoreLastAccessed[a]=Date.now(),k},checkChannelLevelsParameters=function(e){const t=function(e,t=!1){if(e.toFixed)return e<0?[[0,255,0]]:e>255?[[0,255,255]]:isNaN(e)?t?[[0,255,255]]:[[0,255,0]]:[[0,255,e]];if(e.substring&&(e=e.split(",")),Array.isArray(e)){if(!e.length)return e;if(Array.isArray(e[0]))return e;if((e=e.map(e=>parseInt(e,10))).sort((e,t)=>e-t),1==e.length)return[[0,255,e[0]]];let t,l,n=[];for(let r=0,o=e.length;r0){antiRatio=1-l;for(let e=0,t=n.length;e1&&(s-=1),u<0&&(u+=1),u>1&&(u-=1),a<0&&(a+=1),a>1&&(a-=1),[255*o(s,n,r),255*o(u,n,r),255*o(a,n,r)]},theBigActionsObject={"alpha-to-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,includeRed:o,includeGreen:s,includeBlue:u,excludeRed:a,excludeGreen:c,excludeBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=!0),null==s&&(s=!0),null==u&&(u=!0),null==a&&(a=!0),null==c&&(c=!0),null==i&&(i=!0);const{r:h,g:g,b:p,a:d}=t,{r:b,g:k,b:w,a:R}=l;for(let e=0;e{for(let l=0,n=e.length;lo?255:0:i[e],d[e]=s?f[e]>s?255:0:f[e],b[e]=u?h[e]>u?255:0:h[e],k[e]=a?g[e]>a?255:0:g[e];c?processResults(l,work,1-r):processResults(work,l,r)},blend:function(e){let[t,l,n]=getInputAndOutputChannels(e),{opacity:r,blend:o,offsetX:s,offsetY:u,lineOut:a}=(l.r.length,e);null==r&&(r=1),null==o&&(o=""),null==s&&(s=0),null==u&&(u=0);const{r:c,g:i,b:f,a:h}=t,{r:g,g:p,b:d,a:b}=l,{r:k,g:w,b:R,a:O}=n;let[A,y,I,m,M,x]=getInputAndOutputDimensions(e);const B=function(e,t,l){g[t]=l.r[e],p[t]=l.g[e],d[t]=l.b[e],b[t]=l.a[e]},G=function(e,t){let l=e-s,n=t-u,r=-1;return l>=0&&l=0&&n255*(e+t*(1-e));switch(o){case"color-burn":const e=(e,t)=>1==t?255:0==e?0:255*(1-Math.min(1,(1-t)/e));for(let l=0;l0==t?0:1==e?255:255*Math.min(1,t/(1-e));for(let e=0;ee255*Math.abs(e-t);for(let e=0;e255*(e+t-2*t*e);for(let e=0;ee<=.5?e*t*255:255*(t+(e-t*e));for(let e=0;ee>t?e:t;for(let e=0;e255*(e+t);for(let e=0;ee*t*255;for(let e=0;ee>=.5?e*t*255:255*(t+(e-t*e));for(let e=0;e255*(t+(e-t*e));for(let e=0;e{let l=t<=.25?((16*t-12)*t+4)*t:Math.sqrt(t);return e<=.5?255*(t-(1-2*e)*t*(1-t)):255*(t+(2*e-1)*(l-t))};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(s,u,f)};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(s,i,f)};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(c,i,a)};for(let e=0;e{let[s,u,a]=getHSLfromRGB(e,t,l),[c,i,f]=getHSLfromRGB(n,r,o);return getRGBfromHSL(c,u,f)};for(let e=0;et*e+n*l*(1-t);for(let e=0;e=e&&l<=a&&n>=s&&n<=c&&r>=u&&r<=f){t=!0;break}}h[e]=u[e],g[e]=a[e],p[e]=c[e],d[e]=t?0:f[e]}s?processResults(l,work,1-r):processResults(work,l,r)},"clamp-channels":function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,lowRed:o,lowGreen:s,lowBlue:u,highRed:a,highGreen:c,highBlue:i,lineOut:f}=e;null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=255),null==c&&(c=255),null==i&&(i=255);const h=a-o,g=c-s,p=i-u,{r:d,g:b,b:k,a:w}=t,{r:R,g:O,b:A,a:y}=l;for(let e=0;eg?255:(n-h)/p*255},{r:b,g:k,b:w,a:R}=t,{r:O,g:A,b:y,a:I}=l;for(let e=0;e=0&&l=0&&nt*e*n+n*l*(1-t);for(let t=0;t=0){let t=h[n]/255,l=O[r]/255;g[n]=e(c[n],t,k[r],l),p[n]=e(i[n],t,w[r],l),d[n]=e(f[n],t,R[r],l),b[n]=255*(t*l+l*(1-t))}}break;case"source-in":const r=(e,t,l)=>t*e*l;for(let e=0;e=0){let e=h[l]/255,t=O[n]/255;g[l]=r(c[l],e,t),p[l]=r(i[l],e,t),d[l]=r(f[l],e,t),b[l]=e*t*255}}break;case"source-out":const s=(e,t,l)=>t*e*(1-l);for(let e=0;e=0&&B(r,l,n)}break;case"destination-atop":const u=(e,t,l,n)=>t*e*(1-n)+n*l*t;for(let e=0;et*e*(1-n)+n*l;for(let e=0;et*e*l;for(let e=0;e=0){let e=h[l]/255,t=O[n]/255;g[l]=I(k[n],t,e),p[l]=I(w[n],t,e),d[l]=I(R[n],t,e),b[l]=e*t*255}}break;case"destination-out":const m=(e,t,l)=>l*e*(1-t);for(let e=0;e=0){let e=h[l]/255,t=O[n]/255;g[l]=m(k[n],e,t),p[l]=m(w[n],e,t),d[l]=m(R[n],e,t),b[l]=t*(1-e)*255}}break;case"clear":break;case"xor":const M=(e,t,l,n)=>t*e*(1-n)+n*l*(1-t);for(let e=0;et*e+n*l*(1-t);for(let e=0;e=0&&l=0&&n=0){let c,i=Math.floor(l+(127-o[r])/127*u),h=Math.floor(e+(127-s[r])/127*a);f?c=i<0||i>=M||h<0||h>=x?-1:h*M+i:(i<0&&(i=0),i>=M&&(i=M-1),h<0&&(h=0),h>=x&&(h=x-1),c=h*M+i),$(c,n,t)}else $(n,n,t)}h?processResults(l,work,1-r):processResults(work,l,r)},emboss:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,strength:o,angle:s,tolerance:u,keepOnlyChangedAreas:a,postProcessResults:c,lineOut:i}=e;for(null==r&&(r=1),null==o&&(o=1),null==s&&(s=0),null==u&&(u=0),null==a&&(a=!1),null==c&&(c=!1),o=Math.abs(o);s<0;)s+=360;s%=360;let f=Math.floor(s/45),h=s%45/45*o,g=new Array(9);(g=g.fill(0,0,9))[4]=1,0==f?(g[5]=o-h,g[8]=h,g[3]=-g[5],g[0]=-g[8]):1==f?(g[8]=o-h,g[7]=h,g[0]=-g[8],g[1]=-g[7]):2==f?(g[7]=o-h,g[6]=h,g[1]=-g[7],g[2]=-g[6]):3==f?(g[6]=o-h,g[3]=h,g[2]=-g[6],g[5]=-g[3]):4==f?(g[3]=o-h,g[0]=h,g[5]=-g[3],g[8]=-g[0]):5==f?(g[0]=o-h,g[1]=h,g[8]=-g[0],g[7]=-g[1]):6==f?(g[1]=o-h,g[2]=h,g[7]=-g[1],g[6]=-g[2]):(g[2]=o-h,g[5]=h,g[6]=-g[2],g[3]=-g[5]);const{r:p,g:d,b:b,a:k}=t,{r:w,g:R,b:O,a:A}=l;grid=buildMatrixGrid(3,3,1,1);const y=function(e,t){let l=0;for(let n=0,r=t.length;n=p[e]-u&&w[e]<=p[e]+u&&R[e]>=d[e]-u&&R[e]<=d[e]+u&&O[e]>=b[e]-u&&O[e]<=b[e]+u&&(a?A[e]=0:(w[e]=127,R[e]=127,O[e]=127)));i?processResults(l,work,1-r):processResults(work,l,r)},flood:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,red:o,green:s,blue:u,alpha:a,lineOut:c}=(Math.floor,e);null==r&&(r=1),null==o&&(o=0),null==s&&(s=0),null==u&&(u=0),null==a&&(a=255);const{r:i,g:f,b:h,a:g}=l;i.fill(o,0,n-1),f.fill(s,0,n-1),h.fill(u,0,n-1),g.fill(a,0,n-1),c?processResults(l,work,1-r):processResults(work,l,r)},grayscale:function(e){let[t,l]=getInputAndOutputChannels(e),n=t.r.length,{opacity:r,lineOut:o}=e;null==r&&(r=1);const{r:s,g:u,b:a,a:c}=t,{r:i,g:f,b:h,a:g}=l;for(let e=0;e=n&&e<=r)return o}};let[l,n]=getInputAndOutputChannels(e),r=l.r.length,{opacity:o,red:s,green:u,blue:a,alpha:c,lineOut:i}=e;null==o&&(o=1),null==s&&(s=[0]),null==u&&(u=[0]),null==a&&(a=[0]),null==c&&(c=[255]);const{r:f,g:h,b:g,a:p}=l,{r:d,g:b,b:k,a:w}=n;for(let e=0;e=0&&y=0&&I=0&&y=0&&I=0&&m=0&&M=0&&x=0&&B=0&&G=0&&Ct+e[l],0);n=Math.floor(n/l.length);for(let e=0,r=l.length;e{i?t(b,O,e):l(b,O,e),f?t(k,A,e):l(k,A,e),h?t(w,y,e):l(w,y,e),g?t(R,I,e):l(R,I,e)}),p?processResults(r,work,1-o):processResults(work,r,o)},"process-image":function(e){const{assetData:t,lineOut:l}=e;if(l&&l.substring&&l.length&&t&&t.width&&t.height&&t.data){let e=t.data,n=e.length,r=createResultObject(n/4),o=r.r,s=r.g,u=r.b,a=r.a,c=0;for(let t=0;t{let s=i.filters;s&&s.indexOf(t)>=0&&K(s,t)}),Object.entries(u).forEach(([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&K(s,t)}),Object.entries(a).forEach(([e,i])=>{let s=i.filters;s&&s.indexOf(t)>=0&&K(s,t)}),this.deregister(),this};ke.setters,ke.deltaSetters;ke.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs;Object.entries(t).forEach(([t,n])=>{t&&"name"!==t&&null!=n&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this)}return this.method&&Se[this.method]&&Se[this.method](this),this},ke.setDelta=function(t={}){if(Object.keys(t).length){let e,i=this.deltaSetters,s=this.defs;Object.entries(t).forEach(([t,n])=>{t&&"name"!==t&&null!=n&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=addStrings(this[t],n)))},this)}return this.method&&Se[this.method]&&Se[this.method](this),this};const Se={alphaToChannels:function(t){t.actions=[{action:"alpha-to-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,excludeRed:null==t.excludeRed||t.excludeRed,excludeGreen:null==t.excludeGreen||t.excludeGreen,excludeBlue:null==t.excludeBlue||t.excludeBlue}]},areaAlpha:function(t){t.actions=[{action:"area-alpha",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,tileWidth:null!=t.tileWidth?t.tileWidth:1,tileHeight:null!=t.tileHeight?t.tileHeight:1,offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,gutterWidth:null!=t.gutterWidth?t.gutterWidth:1,gutterHeight:null!=t.gutterHeight?t.gutterHeight:1,areaAlphaLevels:null!=t.areaAlphaLevels?t.areaAlphaLevels:[255,0,0,0]}]},binary:function(t){t.actions=[{action:"binary",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:null!=t.red?t.red:0,green:null!=t.green?t.green:0,blue:null!=t.blue?t.blue:0,alpha:null!=t.alpha?t.alpha:0}]},blend:function(t){t.actions=[{action:"blend",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",blend:null!=t.blend?t.blend:"normal",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,opacity:null!=t.opacity?t.opacity:1}]},blue:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeRed:!0,excludeGreen:!0}]},blur:function(t){t.actions=[{action:"blur",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,processHorizontal:null==t.processHorizontal||t.processHorizontal,processVertical:null==t.processVertical||t.processVertical,radius:null!=t.radius?t.radius:1,passes:null!=t.passes?t.passes:1,step:null!=t.step?t.step:1}]},brightness:function(t){let e=null!=t.level?t.level:1;t.actions=[{action:"modulate-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:e,blue:e}]},channelLevels:function(t){t.actions=[{action:"lock-channels-to-levels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:null!=t.red?t.red:[0],green:null!=t.green?t.green:[0],blue:null!=t.blue?t.blue:[0],alpha:null!=t.alpha?t.alpha:[255]}]},channels:function(t){t.actions=[{action:"modulate-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:null!=t.red?t.red:1,green:null!=t.green?t.green:1,blue:null!=t.blue?t.blue:1,alpha:null!=t.alpha?t.alpha:1}]},channelstep:function(t){t.actions=[{action:"step-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:null!=t.red?t.red:1,green:null!=t.green?t.green:1,blue:null!=t.blue?t.blue:1}]},channelsToAlpha:function(t){t.actions=[{action:"channels-to-alpha",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue}]},chroma:function(t){t.actions=[{action:"chroma",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,ranges:null!=t.ranges?t.ranges:[]}]},chromakey:function(t){t.actions=[{action:"colors-to-alpha",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:null!=t.red?t.red:0,green:null!=t.green?t.green:255,blue:null!=t.blue?t.blue:0,transparentAt:null!=t.transparentAt?t.transparentAt:0,opaqueAt:null!=t.opaqueAt?t.opaqueAt:1}]},clampChannels:function(t){t.actions=[{action:"clamp-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,lowRed:null!=t.lowRed?t.lowRed:0,lowGreen:null!=t.lowGreen?t.lowGreen:0,lowBlue:null!=t.lowBlue?t.lowBlue:0,highRed:null!=t.highRed?t.highRed:255,highGreen:null!=t.highGreen?t.highGreen:255,highBlue:null!=t.highBlue?t.highBlue:255}]},compose:function(t){t.actions=[{action:"compose",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",compose:null!=t.compose?t.compose:"source-over",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,opacity:null!=t.opacity?t.opacity:1}]},cyan:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeGreen:!0,includeBlue:!0,excludeRed:!0}]},displace:function(t){t.actions=[{action:"displace",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",lineMix:null!=t.lineMix?t.lineMix:"",opacity:null!=t.opacity?t.opacity:1,channelX:null!=t.channelX?t.channelX:"red",channelY:null!=t.channelY?t.channelY:"green",offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,scaleX:null!=t.scaleX?t.scaleX:1,scaleY:null!=t.scaleY?t.scaleY:1,transparentEdges:null!=t.transparentEdges&&t.transparentEdges}]},edgeDetect:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:!0,includeGreen:!0,includeBlue:!0,includeAlpha:!1,weights:[0,1,0,1,-4,1,0,1,0]}]},emboss:function(t){const e=[];t.useNaturalGrayscale?e.push({action:"grayscale",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:"emboss-work"}):e.push({action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:"emboss-work",includeRed:!0,includeGreen:!0,includeBlue:!0}),t.clamp&&e.push({action:"clamp-channels",lineIn:"emboss-work",lineOut:"emboss-work",lowRed:0+t.clamp,lowGreen:0+t.clamp,lowBlue:0+t.clamp,highRed:255-t.clamp,highGreen:255-t.clamp,highBlue:255-t.clamp}),t.smoothing&&e.push({action:"blur",lineIn:"emboss-work",lineOut:"emboss-work",radius:t.smoothing,passes:2}),e.push({action:"emboss",lineIn:"emboss-work",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,angle:null!=t.angle?t.angle:0,strength:null!=t.strength?t.strength:1,tolerance:null!=t.tolerance?t.tolerance:0,keepOnlyChangedAreas:null!=t.keepOnlyChangedAreas&&t.keepOnlyChangedAreas,postProcessResults:null==t.postProcessResults||t.postProcessResults}),t.actions=e},flood:function(t){t.actions=[{action:"flood",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:null!=t.red?t.red:0,green:null!=t.green?t.green:0,blue:null!=t.blue?t.blue:0,alpha:null!=t.alpha?t.alpha:255}]},gray:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,includeBlue:!0}]},grayscale:function(t){t.actions=[{action:"grayscale",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1}]},green:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeRed:!0,excludeBlue:!0}]},image:function(t){t.actions=[{action:"process-image",lineOut:null!=t.lineOut?t.lineOut:"",asset:null!=t.asset?t.asset:"",width:null!=t.width?t.width:1,height:null!=t.height?t.height:1,copyWidth:null!=t.copyWidth?t.copyWidth:1,copyHeight:null!=t.copyHeight?t.copyHeight:1,copyX:null!=t.copyX?t.copyX:0,copyY:null!=t.copyY?t.copyY:0}]},invert:function(t){t.actions=[{action:"invert-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,includeBlue:!0}]},magenta:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeBlue:!0,excludeGreen:!0}]},matrix:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,weights:null!=t.weights?t.weights:[0,0,0,0,1,0,0,0,0]}]},matrix5:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:5,height:5,offsetX:2,offsetY:2,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha,weights:null!=t.weights?t.weights:[0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]}]},notblue:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeBlue:!0,level:0}]},notgreen:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeGreen:!0,level:0}]},notred:function(t){t.actions=[{action:"set-channel-to-level",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,level:0}]},offset:function(t){t.actions=[{action:"offset",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,offsetRedX:null!=t.offsetX?t.offsetX:0,offsetRedY:null!=t.offsetY?t.offsetY:0,offsetGreenX:null!=t.offsetX?t.offsetX:0,offsetGreenY:null!=t.offsetY?t.offsetY:0,offsetBlueX:null!=t.offsetX?t.offsetX:0,offsetBlueY:null!=t.offsetY?t.offsetY:0,offsetAlphaX:null!=t.offsetX?t.offsetX:0,offsetAlphaY:null!=t.offsetY?t.offsetY:0}]},offsetChannels:function(t){t.actions=[{action:"offset",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,offsetRedX:null!=t.offsetRedX?t.offsetRedX:0,offsetRedY:null!=t.offsetRedY?t.offsetRedY:0,offsetGreenX:null!=t.offsetGreenX?t.offsetGreenX:0,offsetGreenY:null!=t.offsetGreenY?t.offsetGreenY:0,offsetBlueX:null!=t.offsetBlueX?t.offsetBlueX:0,offsetBlueY:null!=t.offsetBlueY?t.offsetBlueY:0,offsetAlphaX:null!=t.offsetAlphaX?t.offsetAlphaX:0,offsetAlphaY:null!=t.offsetAlphaY?t.offsetAlphaY:0}]},pixelate:function(t){t.actions=[{action:"pixelate",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,tileWidth:null!=t.tileWidth?t.tileWidth:1,tileHeight:null!=t.tileHeight?t.tileHeight:1,offsetX:null!=t.offsetX?t.offsetX:0,offsetY:null!=t.offsetY?t.offsetY:0,includeRed:null==t.includeRed||t.includeRed,includeGreen:null==t.includeGreen||t.includeGreen,includeBlue:null==t.includeBlue||t.includeBlue,includeAlpha:null!=t.includeAlpha&&t.includeAlpha}]},red:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,excludeGreen:!0,excludeBlue:!0}]},saturation:function(t){let e=null!=t.level?t.level:1;t.actions=[{action:"modulate-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,red:e,green:e,blue:e,saturation:!0}]},sepia:function(t){t.actions=[{action:"tint-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,redInRed:.393,redInGreen:.349,redInBlue:.272,greenInRed:.769,greenInGreen:.686,greenInBlue:.534,blueInRed:.189,blueInGreen:.168,blueInBlue:.131}]},sharpen:function(t){t.actions=[{action:"matrix",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,width:3,height:3,offsetX:1,offsetY:1,includeRed:!0,includeGreen:!0,includeBlue:!0,includeAlpha:!1,weights:[0,-1,0,-1,5,-1,0,-1,0]}]},threshold:function(t){let e=null!=t.lowRed?t.lowRed:0,i=null!=t.lowGreen?t.lowGreen:0,s=null!=t.lowBlue?t.lowBlue:0,n=null!=t.highRed?t.highRed:255,r=null!=t.highGreen?t.highGreen:255,o=null!=t.highBlue?t.highBlue:255,a=null!=t.low?t.low:[e,i,s],l=null!=t.high?t.high:[n,r,o];t.actions=[{action:"threshold",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,level:null!=t.level?t.level:128,low:a,high:l}]},tint:function(t){t.actions=[{action:"tint-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,redInRed:null!=t.redInRed?t.redInRed:1,redInGreen:null!=t.redInGreen?t.redInGreen:0,redInBlue:null!=t.redInBlue?t.redInBlue:0,greenInRed:null!=t.greenInRed?t.greenInRed:0,greenInGreen:null!=t.greenInGreen?t.greenInGreen:1,greenInBlue:null!=t.greenInBlue?t.greenInBlue:0,blueInRed:null!=t.blueInRed?t.blueInRed:0,blueInGreen:null!=t.blueInGreen?t.blueInGreen:0,blueInBlue:null!=t.blueInBlue?t.blueInBlue:1}]},userDefined:function(t){t.actions=[{action:"user-defined-legacy",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1}]},yellow:function(t){t.actions=[{action:"average-channels",lineIn:null!=t.lineIn?t.lineIn:"",lineOut:null!=t.lineOut?t.lineOut:"",opacity:null!=t.opacity?t.opacity:1,includeRed:!0,includeGreen:!0,excludeBlue:!0}]}},Oe=[],Pe=function(){return Oe.length||Oe.push(new Worker(be)),Oe.shift()},ve=function(t){Oe.push(t)},we=function(t,e){return new Promise((i,s)=>{t.onmessage=t=>{t&&t.data&&t.data.image?i(t.data.image):i(!1)},t.onerror=t=>{console.log("error",t.lineno,t.message),i(!1)},t.postMessage(e)})};O.Filter=Filter;const State=function(t={}){return this.set(this.defs),this.lineDash=[],this.set(t),this};let Ae=State.prototype=Object.create(Object.prototype);Ae.type="State",Ae=ee(Ae),Ae.defs={fillStyle:"rgba(0,0,0,1)",strokeStyle:"rgba(0,0,0,1)",globalAlpha:1,globalCompositeOperation:"source-over",lineWidth:1,lineCap:"butt",lineJoin:"miter",lineDash:null,lineDashOffset:0,miterLimit:10,shadowOffsetX:0,shadowOffsetY:0,shadowBlur:0,shadowColor:"rgba(0,0,0,0)",font:"12px sans-serif",textAlign:"left",textBaseline:"top",filter:"none"},Ae.processPacketOut=function(t,e,i){let s=!0;switch(t){case"lineDash":e.length||(s=i.indexOf("lineDash")>=0);break;default:i.indexOf(t)<0&&e===this.defs[t]&&(s=!1)}return s},Ae.finalizePacketOut=function(t,e){let i=t.fillStyle,s=t.strokeStyle;return i&&!i.substring&&(t.fillStyle=i.name),s&&!s.substring&&(t.strokeStyle=s.name),t},Ae.set=function(t={}){if(Object.keys(t).length){let e,i,s,n=Object.keys(t),r=this.defs;for(i=0,s=n.length;i0&&(this[0]/=t,this[1]/=t),this};const Re=[],Ee=function(t,e){Re.length||Re.push(new Coordinate);let i=Re.shift();return i.set(t,e),i},Fe=function(t){t&&"Coordinate"===t.type&&Re.push(t.zero())},Te=function(t,e){return new Coordinate(t,e)};function He(t={}){t.defs=_(t.defs,{sourceLoaded:!1,source:null,subscribers:null}),t.packetExclusions=Q(t.packetExclusions,["sourceLoaded","source","subscribers"]),t.finalizePacketOut=function(t,e){return this.subscribers&&this.subscribers.length&&(t.subscribers=this.subscribers.map(t=>t.name)),t},t.kill=function(t=!1){return t&&this.source&&this.source.remove(),this.deregister()};t.getters;let e=t.setters;t.deltaSetters;return e.source=function(t={}){t&&this.sourceLoaded&&this.notifySubscribers()},e.subscribers=B,t.assetConstructor=function(t={}){return this.makeName(t.name),this.register(),this.subscribers=[],this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this},t.subscribe=function(t={}){if(t&&t.name){let e=t.name;this.subscribers.every(t=>t.name!==e)&&this.subscribeAction(t)}},t.subscribeAction=function(t={}){this.subscribers.push(t),t.asset=this,t.source=this.source,this.notifySubscriber(t)},t.unsubscribe=function(t={}){if(t.name){let e=t.name,i=this.subscribers.findIndex(t=>t.name===e);i>=0&&(t.source=null,t.asset=null,t.sourceNaturalHeight=0,t.sourceNaturalWidth=0,t.sourceLoaded=!1,this.subscribers.splice(i,1))}},t.notifySubscribers=function(){this.subscribers.forEach(t=>this.notifySubscriber(t),this)},t.notifySubscriber=function(t){t.sourceNaturalWidth=this.sourceNaturalWidth,t.sourceNaturalHeight=this.sourceNaturalHeight,t.sourceLoaded=this.sourceLoaded,t.source=this.source,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0},t}O.Coordinate=Coordinate;const ImageAsset=function(t={}){return this.assetConstructor(t)};let Me=ImageAsset.prototype=Object.create(Object.prototype);Me.type="Image",Me.lib="asset",Me.isArtefact=!1,Me.isAsset=!0,Me=ee(Me),Me=He(Me);Me.defs=_(Me.defs,{intrinsicDimensions:null}),Me.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},Me.stringifyFunction=B,Me.processPacketOut=B,Me.finalizePacketOut=B,Me.clone=$;Me.getters;let Ie=Me.setters;Me.deltaSetters;Ie.source=function(t={}){t&&(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0&&(this.source=t,this.sourceNaturalWidth=t.naturalWidth,this.sourceNaturalHeight=t.naturalHeight,this.sourceLoaded=t.complete),this.sourceLoaded&&this.notifySubscribers())},Ie.currentSrc=function(t){this.currentSrc=t,this.currentFile=this.currentSrc.split("/").pop()},Me.checkSource=function(t,e){let i=this.source,s="element";if(this.sourceLoaded){let n=this.intrinsicDimensions[this.currentFile];switch(this.currentSrc!==i.currentSrc?(this.set({currentSrc:i.currentSrc}),n=this.intrinsicDimensions[this.currentFile],s=n?"intrinsic":"zero"):n&&(s="intrinsic"),s){case"zero":this.sourceNaturalWidth=0,this.sourceNaturalHeight=0,this.notifySubscribers();break;case"intrinsic":this.sourceNaturalWidth===n[0]&&this.sourceNaturalHeight===n[1]||(this.sourceNaturalWidth=n[0],this.sourceNaturalHeight=n[1],this.notifySubscribers());break;default:this.sourceNaturalWidth===i.naturalWidth&&this.sourceNaturalHeight===i.naturalHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.naturalWidth,this.sourceNaturalHeight=i.naturalHeight,this.notifySubscribers())}}};const Be=[],Le=[],$e=function(...t){let e=/.*\/(.*?)\./,i=[];return t.forEach(t=>{let s,n,r,o,a=!1,l=!1;if(t.substring){let i=e.exec(t);s=i&&i[1]?i[1]:"",n=t,r="",o=!1,l=!0}else(t=!!U(t)&&t)&&t.src&&(s=t.name||"",n=t.src,r=t.className||"",o=t.visibility||!1,t.parent&&(a=document.querySelector(t.parent)),l=!0);if(l){let t=Xe({name:s,intrinsicDimensions:{}}),e=document.createElement("img");e.name=s,e.className=r,e.crossorigin="anonymous",e.style.display=o?"block":"none",a&&a.appendChild(e),e.onload=()=>{t.set({source:e})},e.src=n,t.set({source:e}),i.push(s)}else i.push(!1)}),i},je=function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach(t=>{let i;if(["IMG","PICTURE"].indexOf(t.tagName.toUpperCase())>=0){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=t.dataset.dimensions||{};s.substring&&(s=JSON.parse(s));let n=Xe({name:i,source:t,intrinsicDimensions:s,currentSrc:t.currentSrc});t.onload=()=>{n.set({source:t})}}})},Xe=function(t){return new ImageAsset(t)};function Ye(t={}){t.defs=_(t.defs,{group:null,visibility:!0,order:0,start:null,handle:null,offset:null,dimensions:null,pivoted:null,mimicked:null,particle:null,lockTo:null,bringToFrontOnDrag:!0,scale:1,roll:0,noUserInteraction:!1,noPositionDependencies:!1,noCanvasEngineUpdates:!1,noFilters:!1,noPathUpdates:!1,purge:null}),t.packetExclusions=Q(t.packetExclusions,["pathObject","mimicked","pivoted"]),t.packetExclusionsByRegex=Q(t.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),t.packetCoordinates=Q(t.packetCoordinates,["start","handle","offset"]),t.packetObjects=Q(t.packetObjects,["group"]),t.packetFunctions=Q(t.packetFunctions,[]),t.processPacketOut=function(t,e,i){let s=!0;switch(t){case"lockTo":"start"===e[0]&&"start"===e[1]&&(s=i.indexOf("lockTo")>=0);break;default:"entity"===this.lib?s=this.processEntityPacketOut(t,e,i):this.isArtefact&&(s=this.processDOMPacketOut(t,e,i))}return s},t.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},t.kill=function(t=!1,e=!1){let s=this.name;return Object.entries(u).forEach(([t,e])=>{e.artefacts.indexOf(s)>=0&&e.removeArtefacts(s)}),this.anchor&&this.demolishAnchor(),Object.entries(i).forEach(([t,e])=>{e.name!==s&&(e.pivot&&e.pivot.name===s&&e.set({pivot:!1}),e.mimic&&e.mimic.name===s&&e.set({mimic:!1}),e.path&&e.path.name===s&&e.set({path:!1}),e.generateAlongPath&&e.generateAlongPath.name===s&&e.set({generateAlongPath:!1}),e.generateInArea&&e.generateInArea.name===s&&e.set({generateInArea:!1}),e.artefact&&e.artefact.name===s&&e.set({artefact:!1}),Array.isArray(e.pins)&&e.pins.forEach((t,i)=>{U(t)&&t.name===s&&e.removePinAt(i)}))}),Object.entries(y).forEach(([t,e])=>{e.checkForTarget(s)&&e.removeFromTargets(this)}),this.factoryKill(t,e),this.deregister(),this},t.factoryKill=B;let e=t.getters,s=t.setters,n=t.deltaSetters;return e.positionX=function(){return this.currentStampPosition[0]},e.positionY=function(){return this.currentStampPosition[1]},e.position=function(){return[].concat(this.currentStampPosition)},e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},e.start=function(){return[].concat(this.currentStart)},s.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},s.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},s.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},n.startX=function(t){let e=this.start;e[0]=H(e[0],t),this.dirtyStart=!0},n.startY=function(t){let e=this.start;e[1]=H(e[1],t),this.dirtyStart=!0},n.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.handleX=function(){return this.currentHandle[0]},e.handleY=function(){return this.currentHandle[1]},e.handle=function(){return[].concat(this.currentHandle)},s.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0)},s.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0)},s.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0},n.handleX=function(t){let e=this.handle;e[0]=H(e[0],t),this.dirtyHandle=!0},n.handleY=function(t){let e=this.handle;e[1]=H(e[1],t),this.dirtyHandle=!0},n.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0},e.offsetX=function(){return this.currentOffset[0]},e.offsetY=function(){return this.currentOffset[1]},e.offset=function(){return[].concat(this.currentOffset)},s.offsetX=function(t){null!=t&&(this.offset[0]=t,this.dirtyOffset=!0)},s.offsetY=function(t){null!=t&&(this.offset[1]=t,this.dirtyOffset=!0)},s.offset=function(t,e){this.setCoordinateHelper("offset",t,e),this.dirtyOffset=!0},n.offsetX=function(t){let e=this.offset;e[0]=H(e[0],t),this.dirtyOffset=!0},n.offsetY=function(t){let e=this.offset;e[1]=H(e[1],t),this.dirtyOffset=!0},n.offset=function(t,e){this.setDeltaCoordinateHelper("offset",t,e),this.dirtyOffset=!0},e.width=function(){return this.currentDimensions[0]},e.height=function(){return this.currentDimensions[1]},e.dimensions=function(){return[].concat(this.currentDimensions)},s.width=function(t){null!=t&&(this.dimensions[0]=t,this.dirtyDimensions=!0)},s.height=function(t){null!=t&&(this.dimensions[1]=t,this.dirtyDimensions=!0)},s.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},n.width=function(t){let e=this.dimensions;e[0]=H(e[0],t),this.dirtyDimensions=!0},n.height=function(t){let e=this.dimensions;e[1]=H(e[1],t),this.dirtyDimensions=!0},n.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dirtyDimensions=!0},s.particle=function(t){N(t)&&!t?(this.particle=null,"particle"===this.lockTo[0]&&(this.lockTo[0]="start"),"particle"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0):(this.particle=t,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)},s.lockTo=function(t){Array.isArray(t)?(this.lockTo[0]=t[0],this.lockTo[1]=t[1]):(this.lockTo[0]=t,this.lockTo[1]=t),this.dirtyLock=!0,this.dirtyStampPositions=!0},s.lockXTo=function(t){this.lockTo[0]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},s.lockYTo=function(t){this.lockTo[1]=t,this.dirtyLock=!0,this.dirtyStampPositions=!0},e.roll=function(){return this.currentRotation},s.roll=function(t){this.roll=t,this.dirtyRotation=!0},n.roll=function(t){this.roll+=t,this.dirtyRotation=!0},e.scale=function(){return this.currentScale},s.scale=function(t){this.scale=t,this.dirtyScale=!0},n.scale=function(t){this.scale+=t,this.dirtyScale=!0},s.host=function(t){if(t){let e=i[t];e&&e.here?this.host=e.name:this.host=t}else this.host="";this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyStart=!0,this.dirtyOffset=!0},s.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=u[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},t.purgeArtefact=function(t){return t.substring&&(t="all"===t?["pivot","mimic","path","filter"]:[t]),Array.isArray(t)&&t.forEach(t=>function(t,e){switch(e){case"pivot":delete t.pivot,delete t.pivotCorner,delete t.pivotPin,delete t.addPivotHandle,delete t.addPivotOffset,delete t.addPivotRotation;break;case"mimic":delete t.mimic,delete t.useMimicDimensions,delete t.useMimicScale,delete t.useMimicStart,delete t.useMimicHandle,delete t.useMimicOffset,delete t.useMimicRotation,delete t.useMimicFlip,delete t.addOwnDimensionsToMimic,delete t.addOwnScaleToMimic,delete t.addOwnStartToMimic,delete t.addOwnHandleToMimic,delete t.addOwnOffsetToMimic,delete t.addOwnRotationToMimic;break;case"path":delete t.path,delete t.pathPosition,delete t.addPathHandle,delete t.addPathOffset,delete t.addPathRotation,delete t.constantPathSpeed;break;case"filter":delete t.filter,delete t.filters,delete t.isStencil}}(this,t)),this},t.initializePositions=function(){this.dimensions=Te(),this.start=Te(),this.handle=Te(),this.offset=Te(),this.currentDimensions=Te(),this.currentStart=Te(),this.currentHandle=Te(),this.currentOffset=Te(),this.currentDragOffset=Te(),this.currentDragCache=Te(),this.currentStartCache=Te(),this.currentStampPosition=Te(),this.currentStampHandlePosition=Te(),this.delta={},this.lockTo=["start","start"],this.pivoted=[],this.mimicked=[],this.dirtyScale=!0,this.dirtyDimensions=!0,this.dirtyLock=!0,this.dirtyStart=!0,this.dirtyOffset=!0,this.dirtyHandle=!0,this.dirtyRotation=!0,this.isBeingDragged=!1,this.initializeDomPositions()},t.initializeDomPositions=B,t.setCoordinateHelper=function(t,e,i){let s=this[t];Array.isArray(e)?(s[0]=e[0],s[1]=e[1]):U(e)?it(e.x,e.y)?(s[0]=et(e.x,s[0]),s[1]=et(e.y,s[1])):(s[0]=et(e.width,e.w,s[0]),s[1]=et(e.height,e.h,s[1])):(s[0]=e,s[1]=i)},t.setDeltaCoordinateHelper=function(t,e,i){let s=this[t],n=s[0],r=s[1];Array.isArray(e)?(s[0]=H(n,e[0]),s[1]=H(r,e[1])):U(e)?it(e.x,e.y)?(s[0]=H(n,et(e.x,0)),s[1]=H(r,et(e.y,0))):(s[0]=H(n,et(e.width,e.w,0)),s[1]=H(r,et(e.height,e.h,0))):(s[0]=H(n,e),s[1]=H(r,i))},t.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=i[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return ae},t.getHere=function(){let t=this.getHost();if(t){if(t.here&&Object.keys(t.here))return t.here;if(t.currentDimensions){let e=t.currentDimensions;if(e)return{w:e[0],h:e[1]}}}return ae},t.cleanPosition=function(t,e,i){let s,n;for(let r=0;r<2;r++)s=e[r],n=i[r],s.toFixed?t[r]=s:t[r]="left"===s||"top"===s?0:"right"===s||"bottom"===s?n:"center"===s?n/2:parseFloat(s)/100*n},t.cleanScale=function(){this.dirtyScale=!1;let t,e=this.scale,i=this.mimic,s=this.currentScale;i&&this.useMimicScale?i.currentScale?(t=i.currentScale,this.addOwnScaleToMimic&&(t+=e)):(t=e,this.dirtyMimicScale=!0):t=e,this.currentScale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,s!==this.currentScale&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicScale=!0)},t.cleanDimensions=function(){this.dirtyDimensions=!1;let t=this.getHost(),e=this.dimensions,i=this.currentDimensions;if(t){let s=t.currentDimensions?t.currentDimensions:[t.w,t.h],[n,r]=e,o=i[0],a=i[1];n.substring&&(n=parseFloat(n)/100*s[0]),r.substring&&(r="auto"===r?0:parseFloat(r)/100*s[1]);let l,h=this.mimic;h&&h.name&&this.useMimicDimensions&&(l=h.currentDimensions),l?(i[0]=this.addOwnDimensionsToMimic?l[0]+n:l[0],i[1]=this.addOwnDimensionsToMimic?l[1]+r:l[1]):(i[0]=n,i[1]=r),this.cleanDimensionsAdditionalActions(),this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,o===i[0]&&a===i[1]||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0)}else this.dirtyDimensions=!0},t.cleanDimensionsAdditionalActions=B,t.cleanLock=function(){this.dirtyLock=!1,this.dirtyStart=!0,this.dirtyHandle=!0},t.cleanStart=function(){let t,e,i=this.getHost();i&&(this.dirtyStart=!1,tt(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyStart=!0),this.dirtyStart||(this.cleanPosition(this.currentStart,this.start,[t,e]),this.dirtyStampPositions=!0)},t.cleanOffset=function(){let t,e,i=this.getHost();i&&(this.dirtyOffset=!1,tt(i.w,i.h)?(t=i.w,e=i.h):i.currentDimensions?[t,e]=i.currentDimensions:this.dirtyOffset=!0),this.dirtyStart||(this.cleanPosition(this.currentOffset,this.offset,[t,e]),this.dirtyStampPositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicOffset=!0))},t.cleanHandle=function(){this.dirtyHandle=!1;let t=this.currentHandle;this.cleanPosition(t,this.handle,this.currentDimensions),this.dirtyStampHandlePositions=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicHandle=!0)},t.cleanRotation=function(){this.dirtyRotation=!1;let t,e=this.roll,i=this.currentRotation,s=this.path,n=this.mimic,r=this.pivot,o=this.lockTo;if(s&&o.indexOf("path")>=0){if(t=e,this.addPathRotation){let e=this.getPathData();e&&(t+=e.angle)}}else n&&this.useMimicRotation&&o.indexOf("mimic")>=0?J(n.currentRotation)?(t=n.currentRotation,this.addOwnRotationToMimic&&(t+=e)):this.dirtyMimicRotation=!0:(t=e,r&&this.addPivotRotation&&o.indexOf("pivot")>=0&&(J(r.currentRotation)?t+=r.currentRotation:this.dirtyPivotRotation=!0));this.currentRotation=t,t!==i&&(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0)},t.cleanStampPositions=function(){this.dirtyStampPositions=!1;let{currentStampPosition:t,currentStart:e,currentOffset:i,currentStartCache:s,currentDragOffset:n}=this,[r,o]=t;if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let{isBeingDragged:r,lockTo:o,pivot:a,pivotCorner:l,pivotPin:h,addPivotOffset:c,path:u,addPathOffset:f,mimic:p,useMimicStart:m,useMimicOffset:g,addOwnStartToMimic:y,addOwnOffsetToMimic:b,particle:k}=this;const S={start:function(t){t.setFromArray(e).add(i)},path:function(t){w?(t.setFromVector(w),f||t.subtract(u.currentOffset)):t.setFromArray(e).add(i)},pivot:function(t){l&&a.getCornerCoordinate?t.setFromArray(a.getCornerCoordinate(l)):"Polyline"==a.type?t.setFromArray(a.getPinAt(h)):t.setFromArray(a.currentStampPosition),c||t.subtract(a.currentOffset),t.add(i)},mimic:function(t){m||g?(t.setFromArray(p.currentStampPosition),m&&y&&t.add(e),g&&b&&t.add(i),m||t.subtract(p.currentStart).add(e),g||t.subtract(p.currentOffset).add(i)):t.setFromArray(e).add(i)},particle:function(t){k.substring&&(k=d[k]),k?t.setFromVector(k.position):t.setFromArray(e).add(i)},mouse:function(t){t.setFromVector(v),r&&(s.setFromArray(t),t.add(n)),t.add(i)}};let O,P,v,w,A=Ee(),x=!1;if(A.length=0,r)A.push("mouse","mouse"),x=!0,this.getCornerCoordinate&&this.cleanPathObject();else for(O=0;O<2;O++)P=o[O],("pivot"!==P||a)&&("path"!==P||u)&&("mimic"!==P||p)&&("particle"!==P||d)||(P="start"),"mouse"===P&&(x=!0),A.push(P);x&&(v=this.getHere()),A.indexOf("path")>=0&&(w=this.getPathData());let[C,D]=A,R=Ee(),E=Ee();S[C](R),C==D?E.setFromArray(R):S[D](E),t[0]=R[0],t[1]=E[1],Fe(A)}r===t[0]&&o===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositions=function(){this.dirtyStampHandlePositions=!1;let t=this.currentStampHandlePosition,e=this.currentHandle,i=t[0],s=t[1];if(this.noPositionDependencies)t[0]=e[0],t[1]=e[1];else{let i,s,n,r=this.lockTo,o=this.pivot,a=this.path,l=this.mimic;for(s=0;s<2;s++){switch(i=r[s],"pivot"!==i||o||(i="start"),"path"!==i||a||(i="start"),"mimic"!==i||l||(i="start"),n=e[s],i){case"pivot":this.addPivotHandle&&(n+=o.currentHandle[s]);break;case"path":this.addPathHandle&&(n+=a.currentHandle[s]);break;case"mimic":this.useMimicHandle&&(n=l.currentHandle[s],this.addOwnHandleToMimic&&(n+=e[s]))}t[s]=n}}this.cleanStampHandlePositionsAdditionalActions(),i===t[0]&&s===t[1]||(this.dirtyPositionSubscribers=!0)},t.cleanStampHandlePositionsAdditionalActions=B,t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=si(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition,l=a[0],h=a[1];if(i.some(t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!tt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&(e.rotateDestination(o,l,h,this),o.isPointInPath(this.pathObject,n,r,this.winding))},this)){let t=this.checkHitReturn(n,r,e);return s&&ni(e),t}return s&&ni(e),!1},t.checkHitReturn=function(t,e,i){return{x:t,y:e,artefact:this}},t.pickupArtefact=function(t={}){let{x:e,y:i}=t;return tt(e,i)&&(this.isBeingDragged=!0,this.currentDragCache.set(this.currentDragOffset),"start"===this.lockTo[0]?this.currentDragOffset[0]=this.currentStart[0]-e:"pivot"===this.lockTo[0]&&this.pivot?this.currentDragOffset[0]=this.pivot.get("startX")-e:"mimic"===this.lockTo[0]&&this.mimic&&(this.currentDragOffset[0]=this.mimic.get("startX")-e),"start"===this.lockTo[1]?this.currentDragOffset[1]=this.currentStart[1]-i:"pivot"===this.lockTo[1]&&this.pivot?this.currentDragOffset[1]=this.pivot.get("startY")-i:"mimic"===this.lockTo[1]&&this.mimic&&(this.currentDragOffset[1]=this.mimic.get("startY")-i),this.bringToFrontOnDrag&&(this.order+=9999,this.group.batchResort=!0),J(this.dirtyPathObject)&&(this.dirtyPathObject=!0)),this},t.dropArtefact=function(){return this.start.set(this.currentStartCache).add(this.currentDragOffset),this.dirtyStart=!0,this.currentDragOffset.set(this.currentDragCache),this.bringToFrontOnDrag&&(this.order-=9999,this.order<0&&(this.order=0),this.group.batchResort=!0),J(this.dirtyPathObject)&&(this.dirtyPathObject=!0),this.isBeingDragged=!1,this},t.updatePositionSubscribers=function(){this.dirtyPositionSubscribers=!1,this.pivoted&&this.pivoted.length&&this.updatePivotSubscribers(),this.mimicked&&this.mimicked.length&&this.updateMimicSubscribers(),this.pathed&&this.pathed.length&&this.updatePathSubscribers()},t.updatePivotSubscribers=B,t.updateMimicSubscribers=B,t.updatePathSubscribers=B,t.updateImageSubscribers=B,t}function Ne(t={}){let e={delta:null,noDeltaUpdates:!1};t.defs=_(t.defs,e),_(t,e);let i=t.setters;t.deltaSetters;return i.delta=function(t={}){t&&(this.delta=Z(this.delta,t))},t.updateByDelta=function(){return"kaliedoscope-clock-background"==this.name&&console.log(this.name,"updateByDelta"),this.setDelta(this.delta),this},t.reverseByDelta=function(){let t={};return Object.entries(this.delta).forEach(([e,i])=>{i=i.substring?-parseFloat(i)+"%":-i,t[e]=i}),this.setDelta(t),this},t.setDeltaValues=function(t={}){let e,i,s=this.delta;return Object.entries(t).forEach(([t,n])=>{if(J(s[t]))switch(i=n,e=s[t],i){case"reverse":e.toFixed&&(s[t]=-e);break;case"zero":e.toFixed&&(s[t]=0)}}),this},t}function ze(t={}){let e={pivot:"",pivotCorner:"",pivotPin:0,addPivotHandle:!1,addPivotOffset:!0,addPivotRotation:!1};t.defs=_(t.defs,e),_(t,e),t.packetObjects=Q(t.packetObjects,["pivot"]);t.getters;let s=t.setters;t.deltaSetters;return s.pivot=function(t){if(N(t)&&!t)this.pivot=null,"pivot"===this.lockTo[0]&&(this.lockTo[0]="start"),"pivot"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.pivot,s=this.name,r=t.substring?i[t]:t;r||(r=n[t],r&&"Cell"!==r.type&&(r=!1)),r&&r.name&&(e&&e.name!==r.name&&K(e.pivoted,s),Q(r.pivoted,s),this.pivot=r,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},t.pivotCorners=["topLeft","topRight","bottomRight","bottomLeft"],s.pivotCorner=function(t){this.pivotCorners.indexOf(t)>=0&&(this.pivotCorner=t)},s.addPivotHandle=function(t){this.addPivotHandle=t,this.dirtyHandle=!0},s.addPivotOffset=function(t){this.addPivotOffset=t,this.dirtyOffset=!0},s.addPivotRotation=function(t){this.addPivotRotation=t,this.dirtyRotation=!0},t.updatePivotSubscribers=function(){this.pivoted.forEach(t=>{let e=i[t];e||(e=n[t],e&&"Cell"===e.type||(e=!1)),e&&(e.dirtyStart=!0,e.addPivotHandle&&(e.dirtyHandle=!0),e.addPivotOffset&&(e.dirtyOffset=!0),e.addPivotRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))},this)},t}function Ge(t={}){let e={mimic:"",useMimicDimensions:!1,useMimicScale:!1,useMimicStart:!1,useMimicHandle:!1,useMimicOffset:!1,useMimicRotation:!1,useMimicFlip:!1,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1};t.defs=_(t.defs,e),_(t,e),t.packetObjects=Q(t.packetObjects,["mimic"]);t.getters;let s=t.setters;t.deltaSetters;return s.mimic=function(t){if(N(t)&&!t)this.mimic=null,"mimic"===this.lockTo[0]&&(this.lockTo[0]="start"),"mimic"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.mimic,s=this.name,r=t.substring?i[t]:t;r||(r=n[t],r&&"Cell"!==r.type&&(r=!1)),r&&r.name&&(e&&e.name!==r.name&&removeItem(e.mimicked,s),Q(r.mimicked,s),this.mimic=r,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},s.useMimicDimensions=function(t){this.useMimicDimensions=t,this.dirtyDimensions=!0},s.useMimicScale=function(t){this.useMimicScale=t,this.dirtyScale=!0},s.useMimicStart=function(t){this.useMimicStart=t,this.dirtyStart=!0},s.useMimicHandle=function(t){this.useMimicHandle=t,this.dirtyHandle=!0},s.useMimicOffset=function(t){this.useMimicOffset=t,this.dirtyOffset=!0},s.useMimicRotation=function(t){this.useMimicRotation=t,this.dirtyRotation=!0},s.addOwnDimensionsToMimic=function(t){this.addOwnDimensionsToMimic=t,this.dirtyDimensions=!0},s.addOwnScaleToMimic=function(t){this.addOwnScaleToMimic=t,this.dirtyScale=!0},s.addOwnStartToMimic=function(t){this.addOwnStartToMimic=t,this.dirtyStart=!0},s.addOwnHandleToMimic=function(t){this.addOwnHandleToMimic=t,this.dirtyHandle=!0},s.addOwnOffsetToMimic=function(t){this.addOwnOffsetToMimic=t,this.dirtyOffset=!0},s.addOwnRotationToMimic=function(t){this.addOwnRotationToMimic=t,this.dirtyRotation=!0},t.updateMimicSubscribers=function(){let t=this.dirtyMimicHandle,e=this.dirtyMimicOffset,s=this.dirtyMimicRotation,r=this.dirtyMimicScale,o=this.dirtyMimicDimensions;this.mimicked.forEach(a=>{let l=i[a];l||(l=n[a],l&&"Cell"===l.type||(l=!1)),l&&(l.useMimicStart&&(l.dirtyStart=!0),t&&l.useMimicHandle&&(l.dirtyHandle=!0),e&&l.useMimicOffset&&(l.dirtyOffset=!0),s&&l.useMimicRotation&&(l.dirtyRotation=!0),r&&l.useMimicScale&&(l.dirtyScale=!0),o&&l.useMimicDimensions&&(l.dirtyDimensions=!0))}),this.dirtyMimicHandle=!1,this.dirtyMimicOffset=!1,this.dirtyMimicRotation=!1,this.dirtyMimicScale=!1,this.dirtyMimicDimensions=!1},t}function We(t={}){let e={path:"",pathPosition:0,addPathHandle:!1,addPathOffset:!0,addPathRotation:!1,constantPathSpeed:!1};t.defs=_(t.defs,e),_(t,e),t.packetObjects=Q(t.packetObjects,["path"]);let s=t.setters,n=t.deltaSetters;return s.path=function(t){if(N(t)&&!t)this.path=null,"path"===this.lockTo[0]&&(this.lockTo[0]="start"),"path"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.path,s=t.substring?i[t]:t,n=this.name;s&&s.name&&s.useAsPath&&(e&&e.name!==s.name&&K(e.pathed,n),Q(s.pathed,n),this.path=s,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}},s.pathPosition=function(t){t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.pathPosition=parseFloat(t.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},n.pathPosition=function(t){let e=this.pathPosition+t;e<0&&(e+=1),e>1&&(e%=1),this.pathPosition=parseFloat(e.toFixed(6)),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0,this.currentPathData=!1},s.addPathHandle=function(t){this.addPathHandle=t,this.dirtyHandle=!0},s.addPathOffset=function(t){this.addPathOffset=t,this.dirtyOffset=!0},s.addPathRotation=function(t){this.addPathRotation=t,this.dirtyRotation=!0},t.getPathData=function(){if(this.currentPathData)return this.currentPathData;let t,e=this.pathPosition,i=this.path;return!!i&&(t=i.getPathPositionData(e,this.constantPathSpeed),this.addPathRotation&&(this.dirtyRotation=!0),this.currentPathData=t,t)},t}O.ImageAsset=ImageAsset;const Anchor=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.build(),this};let Ve=Anchor.prototype=Object.create(Object.prototype);Ve.type="Anchor",Ve.lib="anchor",Ve.isArtefact=!1,Ve.isAsset=!1,Ve=ee(Ve);Ve.defs=_(Ve.defs,{host:null,description:"",download:"",href:"",hreflang:"",ping:"",referrerpolicy:"",rel:"noreferrer",target:"_blank",anchorType:"",clickAction:null,focusAction:!1,blurAction:!1}),Ve.packetExclusions=Q(Ve.packetExclusions,["domElement"]),Ve.packetObjects=Q(Ve.packetExclusions,["host"]),Ve.packetFunctions=Q(Ve.packetFunctions,["clickAction"]),Ve.demolish=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.deregister()};let Ue=Ve.setters;Ue.host=function(t){let e=t.substring?i[t]:t;e&&e.name&&(this.host=e)},Ue.hold=function(t){G(t)&&(this.domElement&&this.hold&&this.hold.removeChild(this.domElement),this.hold=t,this.domElement&&this.hold.appendChild(this.domElement))},Ue.download=function(t){this.download=t,this.domElement&&this.update("download")},Ue.href=function(t){this.href=t,this.domElement&&this.update("href")},Ue.hreflang=function(t){this.hreflang=t,this.domElement&&this.update("hreflang")},Ue.ping=function(t){this.ping=t,this.domElement&&this.update("ping")},Ue.referrerpolicy=function(t){this.referrerpolicy=t,this.domElement&&this.update("referrerpolicy")},Ue.rel=function(t){this.rel=t,this.domElement&&this.update("rel")},Ue.target=function(t){this.target=t,this.domElement&&this.update("target")},Ue.anchorType=function(t){this.anchorType=t,this.domElement&&this.update("type")},Ue.description=function(t){this.description=t,this.domElement&&(this.domElement.textContent=t)},Ue.clickAction=function(t){W(t)&&(this.clickAction=t,this.domElement&&this.domElement.setAttribute("onclick",t()))},Ve.build=function(){this.domElement&&this.hold&&this.hold.removeChild(this.domElement);let t=document.createElement("a");t.id=this.name,this.download&&t.setAttribute("download",this.download),this.href&&t.setAttribute("href",this.href),this.hreflang&&t.setAttribute("hreflang",this.hreflang),this.ping&&t.setAttribute("ping",this.ping),this.referrerpolicy&&t.setAttribute("referrerpolicy",this.referrerpolicy),this.rel&&t.setAttribute("rel",this.rel),this.target&&t.setAttribute("target",this.target),this.anchorType&&t.setAttribute("type",this.anchorType),this.clickAction&&W(this.clickAction)&&t.setAttribute("onclick",this.clickAction()),this.description&&(t.textContent=this.description),this.focusAction&&t.addEventListener("focus",t=>this.host.onEnter(),!1),this.blurAction&&t.addEventListener("blur",t=>this.host.onLeave(),!1),this.domElement=t,this.hold&&this.hold.appendChild(t)},Ve.update=function(t){this.domElement&&this.domElement.setAttribute(t,this[t])},Ve.click=function(){if(this.hasBeenRecentlyClicked)return!1;{let t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});this.hasBeenRecentlyClicked=!0;let e=this;return setTimeout(()=>e.hasBeenRecentlyClicked=!1,200),this.domElement.dispatchEvent(t)}};function qe(t={}){t.defs=_(t.defs,{anchor:null}),t.demolishAnchor=function(){this.anchor&&this.anchor.demolish()};let e=t.getters,i=t.setters;t.deltaSetters;return e.anchorDescription=function(){return this.anchor?this.anchor.get("description"):""},i.anchorDescription=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.description(t)},e.anchorType=function(){return this.anchor?this.anchor.get("type"):""},i.anchorType=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.anchorType(t)},e.anchorTarget=function(){return this.anchor?this.anchor.get("target"):""},i.anchorTarget=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.target(t)},e.anchorRel=function(){return this.anchor?this.anchor.get("rel"):""},i.anchorRel=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.rel(t)},e.anchorReferrerPolicy=function(){return this.anchor?this.anchor.get("referrerpolicy"):""},i.anchorReferrerPolicy=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.referrerpolicy(t)},e.anchorPing=function(){return this.anchor?this.anchor.get("ping"):""},i.anchorPing=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.ping(t)},e.anchorHreflang=function(){return this.anchor?this.anchor.get("hreflang"):""},i.anchorHreflang=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.hreflang(t)},e.anchorHref=function(){return this.anchor?this.anchor.get("href"):""},i.anchorHref=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.href(t)},e.anchorDownload=function(){return this.anchor?this.anchor.get("download"):""},i.anchorDownload=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.download(t)},i.anchorFocusAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.focusAction(t)},i.anchorBlurAction=function(t){this.anchor||this.buildAnchor(),this.anchor&&this.anchor.setters.blurAction(t)},i.anchor=function(t={}){this.anchor?this.anchor.set(t):this.buildAnchor(t)},t.buildAnchor=function(t={}){this.anchor&&this.anchor.demolish(),t.name||(t.name=this.name+"-anchor"),t.description||(t.description=`Anchor link for ${this.name} ${this.type}`),t.host=this,t.hold=this.getAnchorHold(),this.anchor=function(t){return new Anchor(t)}(t)},t.getAnchorHold=function(){let t=this.currentHost;if(t){if("Canvas"===t.type)return t.navigation;if("Cell"===t.type){let e=t.currentHost?t.currentHost:o[t.host];if(e&&"Canvas"===e.type)return e.navigation}}return this.dirtyAnchorHold=!0,is},t.rebuildAnchor=function(){this.anchor&&this.anchor.build()},t.clickAnchor=function(){this.anchor&&this.anchor.click()},t}function _e(t={}){t.defs=_(t.defs,{groups:null,groupBuckets:null,batchResort:!0});let e=t.getters,i=t.setters;return e.groups=function(){return[].concat(this.groups)},i.groups=function(t){this.groups=[],this.addGroups(t)},t.sortGroups=function(t=!1){if(this.batchResort){this.batchResort=!1;let t,e,i=Math.floor,s=this.groups,n=[];s.forEach(s=>{t=u[s],e=t?i(t.order):0,n[e]||(n[e]=[]),n[e].push(t)}),this.groupBuckets=n.reduce((t,e)=>t.concat(e),[])}},t.initializeCascade=function(){this.groups=[],this.groupBuckets=[]},t.addGroups=function(...t){return t.forEach(t=>{t&&t.substring?Q(this.groups,t):u[t]&&Q(this.groups,t.name)},this),this.batchResort=!0,this},t.removeGroups=function(...t){return t.forEach(t=>{t&&t.substring?K(this.groups,t):u[t]&&K(this.groups,t.name)},this),this.batchResort=!0,this},t.cascadeAction=function(t,e){let i;return console.log("cascadeAction"),this.groups.forEach(s=>{i=u[s],i&&i[e](t)},this),this},t.updateArtefacts=function(t){return this.cascadeAction(t,"updateArtefacts"),this},t.setArtefacts=function(t){return this.cascadeAction(t,"setArtefacts"),this},t.addArtefactClasses=function(t){return this.cascadeAction(t,"addArtefactClasses"),this},t.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeArtefactClasses"),this},t.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},t.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},t.getArtefactAt=function(t){if(t=et(t,this.here,!1)){let e,i;for(let s=this.groups.length-1;s>=0;s--)if(e=u[this.groups[s]],e&&(i=e.getArtefactAt(t),i))return i}return!1},t.getAllArtefactsAt=function(t){if(t=et(t,this.here,!1)){let e,i,s=[];for(let n=this.groups.length-1;n>=0;n--)e=u[this.groups[n]],e&&(i=e.getAllArtefactsAt(t),i&&(s=s.concat(i)));return s}return[]},t}function Ze(t={}){t.defs=_(t.defs,{repeat:"repeat",patternMatrix:null});let e=t.setters;return t.repeatValues=["repeat","repeat-x","repeat-y","no-repeat"],e.repeat=function(t){this.repeatValues.indexOf(t)>=0?this.repeat=t:this.repeat=this.defs.repeat},t.matrixNumberPosCheck=["a","b","c","d","e","f"],t.updateMatrixNumber=function(t,e){this.patternMatrix||(this.patternMatrix=new DOMMatrix),t=t.substring?parseFloat(t):t;let i=this.matrixNumberPosCheck.indexOf(e);V(t)&&i>=0&&(this.patternMatrix[e]=t)},e.matrixA=function(t){this.updateMatrixNumber(t,"a")},e.matrixB=function(t){this.updateMatrixNumber(t,"b")},e.matrixC=function(t){this.updateMatrixNumber(t,"c")},e.matrixD=function(t){this.updateMatrixNumber(t,"d")},e.matrixE=function(t){this.updateMatrixNumber(t,"e")},e.matrixF=function(t){this.updateMatrixNumber(t,"f")},e.patternMatrix=function(t){if(Array.isArray(t)){let e=this.updateMatrixNumber;e(t[0],"a"),e(t[1],"b"),e(t[2],"c"),e(t[3],"d"),e(t[4],"e"),e(t[5],"f")}},t.buildStyle=function(t={}){if(t){t.substring&&(t=a[t]);let e=this.source,i=this.sourceLoaded,s=this.repeat,n=t.engine;if("Cell"!==this.type&&"Noise"!==this.type||(e=this.element,i=!0),n&&i){let t=n.createPattern(e,s);return t.setTransform(this.patternMatrix),t}}return"rgba(0,0,0,0)"},t}function Qe(t={}){return t.defs=_(t.defs,{filters:null,isStencil:!1}),t.setters.filters=function(t){Array.isArray(this.filters)||(this.filters=[]),t&&(Array.isArray(t)?(this.filters=t,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0):t.substring&&(Q(this.filters,t),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0))},t.cleanFilters=function(){this.dirtyFilters=!1,this.filters||(this.filters=[]);let t,e,i=this.filters,s=Math.floor,n=[];i.forEach(i=>{t=c[i],t&&(e=s(t.order)||0,n[e]||(n[e]=[]),n[e].push(t))}),this.currentFilters=n.reduce((t,e)=>t.concat(e),[])},t.addFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach(t=>{t&&"Filter"===t.type&&(t=t.name),Q(this.filters,t)},this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this},t.removeFilters=function(...t){return Array.isArray(this.filters)||(this.filters=[]),t.forEach(t=>{t&&"Filter"===t.type&&(t=t.name),K(this.filters,t)},this),this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this},t.clearFilters=function(){return Array.isArray(this.filters)||(this.filters=[]),this.filters.length=0,this.dirtyFilters=!0,this.dirtyImageSubscribers=!0,this},t.preprocessFilters=function(t){t.forEach(t=>{t.actions.forEach(t=>{if("process-image"==t.action){let e=!0,i=n[t.asset];if(i){"Noise"===i.type&&i.checkSource();let s=i.sourceNaturalWidth||i.sourceNaturalDimensions[0]||i.currentDimensions[0],n=i.sourceNaturalHeight||i.sourceNaturalDimensions[1]||i.currentDimensions[1];if(s&&n){e=!1;let r=t.copyX||0,o=t.copyY||0,a=t.copyWidth||1,l=t.copyHeight||1,h=t.width||1,c=t.height||1;r.substring&&(r=parseFloat(r)/100*s),o.substring&&(o=parseFloat(o)/100*n),a.substring&&(a=parseFloat(a)/100*s),l.substring&&(l=parseFloat(l)/100*n),r=Math.abs(r),o=Math.abs(o),a=Math.abs(a),l=Math.abs(l),r>s&&(r=s-2,a=1),o>n&&(o=n-2,l=1),a>s&&(a=s-1,r=0),l>n&&(l=n-1,o=0),r+a>s&&(r=s-a-1),o+l>n&&(o=n-l-1);let u=si(),d=u.engine,f=u.element;f.width=h,f.height=c,d.setTransform(1,0,0,1,0,0),d.globalCompositeOperation="source-over",d.globalAlpha=1;let p=i.source||i.element;d.drawImage(p,r,o,a,l,0,0,h,c),t.assetData=d.getImageData(0,0,h,c),ni(u)}}e&&(t.assetData={width:1,height:1,data:[0,0,0,0]})}})})},t}O.Anchor=Anchor;const Cell=function(t={}){if(this.makeName(t.name),t.isPool||this.register(),this.initializePositions(),this.initializeCascade(),!z(t.element)){let e=document.createElement("canvas");e.id=this.name,e.width=300,e.height=150,t.element=e}return this.installElement(t.element),t.isPool?this.set(this.poolDefs):this.set(this.defs),this.set(t),this.state.setStateFromEngine(this.engine),t.isPool||hi({name:this.name,host:this.name}),this.subscribers=[],this.sourceNaturalDimensions=Te(),this.sourceLoaded=!0,this.here={},this};let Ke=Cell.prototype=Object.create(Object.prototype);Ke.type="Cell",Ke.lib="cell",Ke.isArtefact=!1,Ke.isAsset=!0,Ke=ee(Ke),Ke=He(Ke),Ke=Ye(Ke),Ke=Ne(Ke),Ke=ze(Ke),Ke=Ge(Ke),Ke=We(Ke),Ke=qe(Ke),Ke=_e(Ke),Ke=Ze(Ke),Ke=Qe(Ke);Ke.defs=_(Ke.defs,{cleared:!0,compiled:!0,shown:!0,compileOrder:0,showOrder:0,backgroundColor:"",clearAlpha:0,alpha:1,composite:"source-over",scale:1,flipReverse:!1,flipUpend:!1,filter:"none",isBase:!1,controller:null}),delete Ke.defs.source,delete Ke.defs.sourceLoaded,Ke.stringifyFunction=B,Ke.processPacketOut=B,Ke.finalizePacketOut=B,Ke.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Ke.clone=$,Ke.factoryKill=function(){let t=this.name;Object.entries(o).forEach(([e,i])=>{i.cells.indexOf(t)>=0&&i.removeCell(t),i.base&&i.base.name===t&&i.set({visibility:!1})}),Object.entries(i).forEach(([e,i])=>{if(i.name!==t){let e=i.state;if(e){let i=e.fillStyle,s=e.strokeStyle;i.name&&i.name===t&&(e.fillStyle=e.defs.fillStyle),s.name&&s.name===t&&(e.strokeStyle=e.defs.strokeStyle)}}}),u[t]&&u[t].kill()};let Je=Ke.getters,ti=Ke.setters,ei=Ke.deltaSetters;Ke.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},Je.width=function(){return this.currentDimensions[0]||this.element.getAttribute("width")},ti.width=function(t){this.dimensions[0]=t,this.dirtyDimensions=!0},Je.height=function(){return this.currentDimensions[1]||this.element.getAttribute("height")},ti.height=function(t){this.dimensions[1]=t,this.dirtyDimensions=!0},ti.source=function(){},ti.engine=function(t){},ti.state=function(t){},ti.element=function(t){z(t)&&this.installElement(t)},ti.cleared=function(t){this.cleared=t,this.updateControllerCells()},ti.compiled=function(t){this.compiled=t,this.updateControllerCells()},ti.shown=function(t){this.shown=t,this.updateControllerCells()},ti.compileOrder=function(t){this.compileOrder=t,this.updateControllerCells()},ti.showOrder=function(t){this.showOrder=t,this.updateControllerCells()},ti.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[0]=t},ti.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]),this.stashCoordinates[1]=t},ti.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[0]=t},ti.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}this.stashDimensions[1]=t},ei.stashX=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[0]=addStrings(e[0],t)},ei.stashY=function(t){this.stashCoordinates||(this.stashCoordinates=[0,0]);let e=this.stashCoordinates;e[1]=addStrings(e[1],t)},ei.stashWidth=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[0]=addStrings(e[0],t)},ei.stashHeight=function(t){if(!this.stashDimensions){let t=this.currentDimensions;this.stashDimensions=[t[0],t[1]]}let e=this.stashDimensions;e[1]=addStrings(e[1],t)},ti.clearAlpha=function(t){t.toFixed&&(t>1?t=1:t<0&&(t=0),this.clearAlpha=t)},ei.clearAlpha=function(t){t.toFixed&&((t+=this.clearAlpha)>1?t=1:t<0&&(t=0),this.clearAlpha=t)},Ke.checkSource=function(t,e){this.currentDimensions[0]===t&&this.currentDimensions[1]===e||this.notifySubscribers()},Ke.getData=function(t,e){return this.checkSource(this.sourceNaturalDimensions[0],this.sourceNaturalDimensions[1]),this.buildStyle(e)},Ke.updateArtefacts=function(t={}){this.groupBuckets.forEach(e=>{e.artefactBuckets.forEach(e=>{t.dirtyScale&&(e.dirtyScale=!0),t.dirtyDimensions&&(e.dirtyDimensions=!0),t.dirtyLock&&(e.dirtyLock=!0),t.dirtyStart&&(e.dirtyStart=!0),t.dirtyOffset&&(e.dirtyOffset=!0),t.dirtyHandle&&(e.dirtyHandle=!0),t.dirtyRotation&&(e.dirtyRotation=!0),t.dirtyPathObject&&(e.dirtyPathObject=!0)})})},Ke.cleanDimensionsAdditionalActions=function(){let t=this.element;if(t){let e=this.controller,i=this.currentDimensions,s=this.isBase;if(s&&e&&e.isComponent){let t=this.controller.currentDimensions,e=this.dimensions;e[0]=i[0]=t[0],e[1]=i[1]=t[1]}let[n,r]=i;t.width=n,t.height=r,this.setEngineFromState(this.engine),s&&e&&e.updateBaseHere(),this.groupBuckets&&this.updateArtefacts({dirtyDimensions:!0})}},Ke.notifySubscriber=function(t){t.sourceNaturalDimensions||(t.sourceNaturalDimensions=[]),t.sourceNaturalWidth=this.currentDimensions[0],t.sourceNaturalHeight=this.currentDimensions[1],t.sourceLoaded=!0,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0},Ke.subscribeAction=function(t={}){this.subscribers.push(t),t.asset=this,t.source=this.element,this.notifySubscriber(t)},Ke.installElement=function(t){return this.element=t,this.engine=this.element.getContext("2d"),this.state=Ce({engine:this.engine}),this},Ke.updateControllerCells=function(){this.controller&&(this.controller.dirtyCells=!0)},Ke.setEngineFromState=function(t){let e=this.state;return e.allKeys.forEach(i=>{"lineDash"===i?(t.lineDash=e.lineDash,t.setLineDash(t.lineDash)):t[i]=e[i]},e),t.textAlign=e.textAlign,t.textBaseline=e.textBaseline,this},Ke.setToDefaults=function(){let t=this.state.defs,e=this.state,i=this.engine,s=Array.isArray;return Object.entries(t).forEach(([t,n])=>{"lineDash"===t?(s(i.lineDash)?i.lineDash.length=0:i.lineDash=[],s(e.lineDash)?e.lineDash.length=0:e.lineDash=[]):(i[t]=n,e[t]=n)}),i.textAlign=e.textAlign="left",i.textBaseline=e.textBaseline="top",this},Ke.stylesArray=["Gradient","RadialGradient","Pattern"],Ke.setEngine=function(t){let e,i,s=this.state,n=t.state.getChanges(t,s),r=this.setEngineActions,o=this.stylesArray;if(Object.keys(n).length)for(i in e=this.engine,n)r[i](n[i],e,o,t,this),s[i]=n[i];return t},Ke.setEngineActions={fillStyle:function(t,e,i,s,n){if(t.substring){let i=!1;k.indexOf(t)>=0?i=b[t]:l.indexOf(t)>=0&&(i=a[t]),i?(s.state.fillStyle=i,e.fillStyle=i.getData(s,n)):e.fillStyle=t}else e.fillStyle=t.getData(s,n)},filter:function(t,e){e.filter=t},font:function(t,e){e.font=t},globalAlpha:function(t,e){e.globalAlpha=t},globalCompositeOperation:function(t,e){e.globalCompositeOperation=t},lineCap:function(t,e){e.lineCap=t},lineDash:function(t,e){e.lineDash=t,e.setLineDash&&e.setLineDash(t)},lineDashOffset:function(t,e){e.lineDashOffset=t},lineJoin:function(t,e){e.lineJoin=t},lineWidth:function(t,e){e.lineWidth=t},miterLimit:function(t,e){e.miterLimit=t},shadowBlur:function(t,e){e.shadowBlur=t},shadowColor:function(t,e){e.shadowColor=t},shadowOffsetX:function(t,e){e.shadowOffsetX=t},shadowOffsetY:function(t,e){e.shadowOffsetY=t},strokeStyle:function(t,e,i,s,n){if(t.substring){let i=!1;k.indexOf(t)>=0?i=b[t]:l.indexOf(t)>=0&&(i=a[t]),i?(s.state.strokeStyle=i,e.strokeStyle=i.getData(s,n)):e.strokeStyle=t}else e.strokeStyle=t.getData(s,n)}},Ke.clearShadow=function(){return this.engine.shadowOffsetX=0,this.engine.shadowOffsetY=0,this.engine.shadowBlur=0,this.state.shadowOffsetX=0,this.state.shadowOffsetY=0,this.state.shadowBlur=0,this},Ke.restoreShadow=function(t){let e=t.state;return this.engine.shadowOffsetX=e.shadowOffsetX,this.engine.shadowOffsetY=e.shadowOffsetY,this.engine.shadowBlur=e.shadowBlur,this.state.shadowOffsetX=e.shadowOffsetX,this.state.shadowOffsetY=e.shadowOffsetY,this.state.shadowBlur=e.shadowBlur,this},Ke.setToClearShape=function(){return this.engine.fillStyle="rgba(0,0,0,0)",this.engine.strokeStyle="rgba(0,0,0,0)",this.engine.shadowColor="rgba(0,0,0,0)",this.state.fillStyle="rgba(0,0,0,0)",this.state.strokeStyle="rgba(0,0,0,0)",this.state.shadowColor="rgba(0,0,0,0)",this},Ke.saveEngine=function(){return this.engine.save(),this},Ke.restoreEngine=function(){return this.engine.restore(),this},Ke.clear=function(){let t=this;return new Promise(e=>{const{element:i,engine:s,backgroundColor:n,clearAlpha:r,currentDimensions:o}=t,[a,l]=o;if(t.prepareStamp(),s.setTransform(1,0,0,1,0,0),n){let t=s.fillStyle,e=s.globalCompositeOperation,i=s.globalAlpha;s.fillStyle=n,s.globalCompositeOperation="source-over",s.globalAlpha=1,s.fillRect(0,0,a,l),s.fillStyle=t,s.globalCompositeOperation=e,s.globalAlpha=i}else if(r){let t=si(),{engine:e,element:i}=t;i.width=a,i.height=l;let n=s.getImageData(0,0,a,l);e.putImageData(n,0,0);let o=s.globalAlpha;s.clearRect(0,0,a,l),s.globalAlpha=r,s.drawImage(i,0,0),s.globalAlpha=o}else s.clearRect(0,0,a,l);e(!0)})},Ke.compile=function(){this.stashOutput;this.sortGroups(),this.prepareStamp(),!this.dirtyFilters&&this.currentFilters||this.cleanFilters();let t=this,e=i=>new Promise((s,n)=>{let r=t.groupBuckets[i];r&&r.stamp?r.stamp().then(t=>{e(i+1).then(t=>{s(!0)}).catch(t=>n(t))}).catch(t=>n(t)):!t.noFilters&&t.filters&&t.filters.length?t.applyFilters().then(e=>t.stashOutputAction()).then(t=>s(!0)).catch(t=>n(t)):t.stashOutputAction().then(t=>s(!0)).catch(t=>n(t))});return e(0)},Ke.show=function(){var t=this;return new Promise(e=>{let i=t.getHost(),s=!(!i||!i.engine)&&i.engine;if(s){let n=Math.floor,r=i.currentDimensions,o=n(r[0]),a=n(r[1]);o&&a||e(!1);let l,h=t.currentScale,c=t.currentDimensions,u=n(c[0]),d=n(c[1]),f=t.composite,p=t.alpha,m=t.controller,g=t.element;if(s.save(),s.setTransform(1,0,0,1,0,0),s.filter=t.filter,t.isBase){let e,i;switch(t.basePaste||(t.basePaste=[]),l=t.basePaste,t.prepareStamp(),s.globalCompositeOperation="source-over",s.globalAlpha=1,s.clearRect(0,0,o,a),s.globalCompositeOperation=f,s.globalAlpha=p,m?m.fit:"none"){case"contain":e=o/(u||1),i=a/(d||1),e>i?(l[0]=n((o-u*i)/2),l[1]=0,l[2]=n(u*i),l[3]=n(d*i)):(l[0]=0,l[1]=n((a-d*e)/2),l[2]=n(u*e),l[3]=n(d*e));break;case"cover":e=o/(u||1),i=a/(d||1),e0){t.paste||(t.paste=[]),l=t.paste,t.noDeltaUpdates||t.setDelta(t.delta),t.prepareStamp(),s.globalCompositeOperation=f,s.globalAlpha=p;let e=t.currentStampHandlePosition,i=t.currentStampPosition;l[0]=n(-e[0]*h),l[1]=n(-e[1]*h),l[2]=n(u*h),l[3]=n(d*h),t.rotateDestination(s,i[0],i[1])}s.drawImage(g,0,0,u,d,...l),s.restore(),e(!0)}else e(!1)})},Ke.applyFilters=function(){let t=this;return new Promise((function(e){let i,s,n=t.engine;i=n.getImageData(0,0,t.currentDimensions[0],t.currentDimensions[1]),s=Pe(),t.preprocessFilters(t.currentFilters),we(s,{image:i,filters:t.currentFilters}).then(t=>{ve(s),t?(n.putImageData(t,0,0),e(!0)):e(!1)}).catch(t=>{ve(s),e(!1)})}))},Ke.stashOutputAction=function(){let t=this;return this.stashOutput?(this.stashOutput=!1,new Promise((e,i)=>{let[s,n]=t.currentDimensions,r=t.stashCoordinates,o=t.stashDimensions,a=r?r[0]:0,l=r?r[1]:0,h=o?o[0]:s,c=o?o[1]:n;if((h.substring||c.substring||a.substring||l.substring||a||l||h!==s||c!==n)&&(h.substring&&(h=parseFloat(h)/100*s),(isNaN(h)||h<=0)&&(h=1),h>s&&(h=s),c.substring&&(c=parseFloat(c)/100*n),(isNaN(c)||c<=0)&&(c=1),c>n&&(c=n),a.substring&&(a=parseFloat(a)/100*s),(isNaN(a)||a<0)&&(a=0),a+h>s&&(a=s-h),l.substring&&(l=parseFloat(l)/100*n),(isNaN(l)||l<0)&&(l=0),l+c>n&&(l=n-c)),t.engine.save(),t.engine.setTransform(1,0,0,1,0,0),t.stashedImageData=t.engine.getImageData(a,l,h,c),t.engine.restore(),t.stashOutputAsAsset){let e,i;if(t.stashOutputAsAsset=!1,i=si(),e=i.element,e.width=h,e.height=c,i.engine.putImageData(t.stashedImageData,0,0),t.stashedImage)t.stashedImage.src=e.toDataURL();else{let i=t.stashedImage=document.createElement("img");i.id=t.name+"-image",i.onload=function(){es.appendChild(i),je("#"+i.id)},i.src=e.toDataURL()}ni(i)}e(!0)})):Promise.resolve(!1)},Ke.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=n[this.host]||i[this.host];return t&&(this.currentHost=t),!!t&&this.currentHost}return!1},Ke.updateBaseHere=function(t,e){if(this.isBase){this.here||(this.here={});let i=this.here,s=this.currentDimensions,n=t.active,r=t.localListener?t.originalWidth:t.w,o=t.localListener?t.originalHeight:t.h;if(s[0]!==r||s[1]!==o){this.basePaste||(this.basePaste=[]);let a,l,h=this.basePaste[0],c=s[0],u=s[1],d=r,f=o,p=t.x,m=t.y,g=c/d||1,y=u/f||1,b=Math.round;switch(i.w=c,i.h=u,e){case"contain":case"cover":h?(a=(d-c/y)/2,i.x=b((p-a)*y),i.y=b(m*y)):(l=(f-u/g)/2,i.x=b(p*g),i.y=b((m-l)*g));break;case"fill":i.x=b(p*g),i.y=b(m*y);break;case"none":default:a=(d-c)/2,l=(f-u)/2,i.x=b(p-a),i.y=b(m-l)}(i.x<0||i.x>c)&&(n=!1),(i.y<0||i.y>u)&&(n=!1),i.active=n}else i.x=t.x,i.y=t.y,i.w=r,i.h=o,i.active=n;t.baseActive=n}},Ke.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&(this.cleanDimensions(),this.dirtyAssetSubscribers=!0),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyAssetSubscribers&&(this.dirtyAssetSubscribers=!1,this.notifySubscribers())},Ke.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentDimensions,n=-e[0]*i,r=-e[1]*i,o=s[0]*i,a=s[1]*i;t.rect(n,r,o,a)}},Ke.updateHere=function(){this.here||(this.here={});let t=this.here,[e,i]=this.currentDimensions;t.w=e,t.h=i,t.x=-1e4,t.y=-1e4,t.active=!1;let s=this.currentHost;if(s){let e=s.here;if(e&&e.active){let{x:i,y:s,w:n,h:r}=e;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let o=si(),a=o.engine,[l,h]=this.currentStampPosition;o.rotateDestination(a,l,h,this);let c=a.isPointInPath(this.pathObject,i,s);if(ni(o),t.active=c,c){let[e,n]=this.currentStampHandlePosition,{flipUpend:r,flipReverse:o,roll:a,scale:c}=this;if(c){let u=(i-l)/c,d=(s-h)/c;if(o&&(u=-u),r&&(d=-d),a){(o&&!r||!o&&r)&&(a=-a);let t=Ee(u,d);t.rotate(-a),[u,d]=t,Fe(t)}u+=e,d+=n,t.x=u,t.y=d}}}}},Ke.getEntityHits=function(){let t=[],e=[],i=[];return this.groupBuckets&&this.groupBuckets.forEach(t=>{t.visibility&&e.push(t.getAllArtefactsAt(this.here))},this),e.length&&(e=e.reduce((t,e)=>t.concat(e),[]),e.forEach(e=>{let s=e.artefact;s.visibility&&i.indexOf(s.name)<0&&(i.push(s.name),t.push(s))})),t},Ke.rotateDestination=function(t,e,i,s){let n,r,o=s||this,a=o.mimic,l=o.pivot,h=o.currentRotation;if(a&&a.name&&o.useMimicFlip?(n=a.flipReverse?-1:1,r=a.flipUpend?-1:1):(n=o.flipReverse?-1:1,r=o.flipUpend?-1:1),a&&a.name&&o.useMimicRotation?h=a.currentRotation:l&&l.name&&o.addPivotRotation&&(h=l.currentRotation),h){h*=P;let s=Math.cos(h),o=Math.sin(h);t.setTransform(s*n,o*n,-o*r,s*r,e,i)}else t.setTransform(n,0,0,r,e,i);return this};const ii=[];Ke.poolDefs={element:null,engine:null,state:null,width:300,height:100,alpha:1,composite:"source-over"};const si=function(){return ii.length||ii.push(ri({name:"pool_"+X(),isPool:!0})),ii.shift()},ni=function(t){t&&"Cell"===t.type&&(t.engine.setTransform(1,0,0,1,0,0),ii.push(t.setToDefaults()))},ri=function(t){return new Cell(t)};O.Cell=Cell;const Group=function(t={}){return this.makeName(t.name),this.register(),this.artefacts=[],this.artefactBuckets=[],this.set(this.defs),this.set(t),this};let oi=Group.prototype=Object.create(Object.prototype);oi.type="Group",oi.lib="group",oi.isArtefact=!1,oi.isAsset=!1,oi=ee(oi),oi=Qe(oi);oi.defs=_(oi.defs,{artefacts:null,order:0,visibility:!0,regionRadius:0}),oi.packetExclusions=Q(oi.packetExclusions,["artefactBuckets","batchResort"]),oi.postCloneAction=function(t,e){let s;return s=e.host?i[e.host]:this.currentHost?this.currentHost:!!this.host&&i[this.host],s&&(s.addGroups(t.name),t.host||(t.host=s.name)),t},oi.kill=function(t=!1){let e=this.name;return Object.entries(i).forEach(([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(K(i.groups,e),i.batchResort=!0)}),Object.entries(a).forEach(([t,i])=>{Array.isArray(i.groups)&&i.groups.indexOf(e)>=0&&(K(i.groups,e),i.batchResort=!0)}),t&&this.artefactBuckets.forEach(t=>t.kill()),this.deregister()},oi.killArtefacts=function(){return this.artefactBuckets.forEach(t=>t.kill()),this};let ai=oi.getters,li=oi.setters;ai.artefacts=function(){return[].concat(this.artefacts)},li.artefacts=function(t){this.artefacts=[],this.addArtefacts(t)},li.host=function(t){let e=this.getHost(t);e&&e.addGroups&&(this.host=t,e.addGroups(this.name),this.dirtyHost=!0)},li.order=function(t){let e=this.getHost(this.host);this.order=t,e&&e.set({batchResort:!0})},oi.getHost=function(t){let e=this.currentHost;return!e||e.substring?i[t]||a[t]||i[e]||a[e]||null:e},oi.forceStamp=function(){var t=this;return new Promise(e=>{let i=t.visibility;t.visibility=!0,t.stamp().then(s=>{t.visibility=i,e(s)}).catch(s=>{t.visibility=i,e(s)})})},oi.stamp=function(){if(this.dirtyHost||!this.currentHost){this.dirtyHost=!1;let t=this.getHost(this.host);t?this.currentHost=t:this.dirtyHost=!0}let t=this;return new Promise((e,i)=>{if(t.visibility){let s=t.currentHost;if(s){t.sortArtefacts();let n=!!(t.stashOutput||!t.noFilters&&t.filters&&t.filters.length)&&si();if(n&&n.element){let t=s.currentDimensions;t&&(n.element.width=t[0],n.element.height=t[1]),n.engine.save()}else s.engine&&s.engine.save();t.prepareStamp(n),t.stampAction(n).then(i=>{n?(n.engine.restore(),ni(n)):s.engine&&(s.engine.restore(),s.setEngineFromState(s.engine)),e(t.name)}).catch(t=>{n?(n.engine.restore(),ni(n)):s.engine&&(s.engine.restore(),s.setEngineFromState(s.engine)),i(t)})}else e(!1)}else e(!1)})},oi.sortArtefacts=function(){if(this.batchResort){this.batchResort=!1;let t=Math.floor,e=[];this.artefacts.forEach(s=>{let n=i[s],r=t(n.order)||0;e[r]||(e[r]=[]),e[r].push(n)}),this.artefactBuckets=e.reduce((t,e)=>t.concat(e),[])}},oi.prepareStamp=function(t){let e=this.currentHost;t&&(e=t),this.artefactBuckets.forEach(i=>{"entity"===i.lib&&(i.currentHost&&i.currentHost.name===e.name||(i.currentHost=e,t||(i.dirtyHost=!0))),i.noDeltaUpdates||i.updateByDelta(),i.prepareStamp()})},oi.stampAction=function(t){!this.currentHost||this.currentHost.stashOutput;!this.dirtyFilters&&this.currentFilters||this.cleanFilters();let e=this,i=s=>new Promise((n,r)=>{let o=e.artefactBuckets[s];if(o&&o.stamp)o.stamp().then(()=>{i(s+1).then(t=>n(!0)).catch(t=>r(t))}).catch(t=>r(t));else if(t)if(!e.noFilters&&e.filters&&e.filters.length)e.applyFilters(t).then(t=>e.stashAction(t)).then(t=>n(!0)).catch(t=>r(t));else if(e.stashOutput){let i=t.element,s=t.engine,o=!(!e.currentHost||!e.currentHost.engine)&&e.currentHost.engine;if(o){o.save(),o.globalCompositeOperation="source-over",o.globalAlpha=1,o.setTransform(1,0,0,1,0,0),o.drawImage(i,0,0),o.restore();let t=s.getImageData(0,0,i.width,i.height);e.stashAction(t).then(t=>n(!0)).catch(t=>r(t))}else r("Could not find real engine")}else n(!0);else n(!0)});return i(0)},oi.applyFilters=function(t){let e=this;return new Promise((i,s)=>{let n=e.currentHost,r=t;n&&r||s("Group.applyFilters - no host");let o=function(){ve(d),l.save(),l.setTransform(1,0,0,1,0,0),l.drawImage(h,0,0),l.restore()},a=n.element,l=n.engine,h=r.element,c=r.engine;e.isStencil&&(c.save(),c.globalCompositeOperation="source-in",c.globalAlpha=1,c.setTransform(1,0,0,1,0,0),c.drawImage(a,0,0),c.restore()),c.setTransform(1,0,0,1,0,0);let u=c.getImageData(0,0,h.width,h.height),d=Pe();e.preprocessFilters(e.currentFilters),we(d,{image:u,filters:e.currentFilters}).then(t=>{if(!t)throw new Error("image issue");c.globalCompositeOperation="source-over",c.globalAlpha=1,c.setTransform(1,0,0,1,0,0),c.putImageData(t,0,0),o(),i(t)}).catch(t=>{o(),s(t)})})},oi.stashAction=function(t){if(!t)return Promise.reject("No image data supplied to stashAction");if(this.stashOutput){this.stashOutput=!1;let e=this;return new Promise((i,s)=>{let[n,r,o,a]=e.getCellCoverage(t),l=si(),h=l.engine,c=l.element;if(c.width=o,c.height=a,h.putImageData(t,-n,-r),e.stashedImageData=h.getImageData(0,0,o,a),e.stashOutputAsAsset)if(e.stashOutputAsAsset=!1,e.stashedImage)e.stashedImage.src=c.toDataURL();else{let t=e.stashedImage=document.createElement("img");t.id=e.name+"-groupimage",t.onload=function(){es.appendChild(t),je("#"+t.id)},t.src=c.toDataURL()}ni(l),i(!0)})}return Promise.resolve(!1)},oi.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,l=s,h=n,c=3;for(i=0;ie&&(l=e),oi&&(h=i),a{t&&(t.substring?Q(this.artefacts,t):t.name&&Q(this.artefacts,t.name))},this),this.batchResort=!0,this},oi.removeArtefacts=function(...t){return t.forEach(t=>{t&&(t.substring?K(this.artefacts,t):t.name&&K(this.artefacts,t.name))},this),this.batchResort=!0,this},oi.moveArtefactsIntoGroup=function(...t){let e,s;return t.forEach(t=>{t&&(s=t.substring?i[t]:t,s&&s.isArtefact&&(e=s.group?s.group:!!s.host&&u[s.host]),e&&(e.removeArtefacts(t),e.batchResort=!0),Q(this.artefacts,t))},this),this.batchResort=!0,this},oi.clearArtefacts=function(){return this.artefacts.length=0,this.artefactBuckets.length=0,this.batchResort=!0,this},oi.updateArtefacts=function(t){return this.cascadeAction(t,"setDelta"),this},oi.setArtefacts=function(t){return this.cascadeAction(t,"set"),this},oi.updateByDelta=function(){return this.cascadeAction(!1,"updateByDelta"),this},oi.reverseByDelta=function(){return this.cascadeAction(!1,"reverseByDelta"),this},oi.addArtefactClasses=function(t){return this.cascadeAction(t,"addClasses"),this},oi.removeArtefactClasses=function(t){return this.cascadeAction(t,"removeClasses"),this},oi.cascadeAction=function(t,e){return this.artefacts.forEach(s=>{let n=i[s];n&&n[e]&&n[e](t)}),this},oi.setDeltaValues=function(t={}){return this.artefactBuckets.forEach(e=>e.setDeltaValues(t)),this},oi.addFiltersToEntitys=function(...t){return this.artefacts.forEach(e=>{let i=h[e];i&&i.addFilters&&i.addFilters(t)}),this},oi.removeFiltersFromEntitys=function(...t){return this.artefacts.forEach(e=>{let i=h[e];i&&i.removeFilters&&i.removeFilters(t)}),this},oi.clearFiltersFromEntitys=function(){return this.artefacts.forEach(t=>{let e=h[t];e&&e.clearFilters&&e.clearFilters()}),this},oi.getArtefactAt=function(t){let e=si(),i=this.artefactBuckets;this.sortArtefacts();for(let s=i.length-1;s>=0;s--){let n=i[s];if(n){let i=n.checkHit(t,e);if(i)return ni(e),i}}return ni(e),!1},oi.getAllArtefactsAt=function(t){let e=si(),i=this.artefactBuckets,s=[],n=[];this.sortArtefacts();for(let r=i.length-1;r>=0;r--){let o=i[r];if(o){let i=o.checkHit(t,e);if(i&&i.artefact){let t=i.artefact;s.indexOf(t.name)<0&&(s.push(t.name),n.push(i))}}}return ni(e),n},oi.getArtefactCollisions=function(t){if(!t||!t.isArtefact||!this.artefactBuckets.length)return[];if(t.substring&&(t=i[t]),!t.collides)return[];let e,s,n,r=this.artefactBuckets,o=[],[a,l]=t.cleanCollisionData();for(s=0,n=r.length;sh&&(o[s]=!1)}let g=si();for(s=0,n=o.length;s!!t)};const hi=function(t){return new Group(t)};O.Group=Group;const Vector=function(t,e,i){return this.x=0,this.y=0,this.z=0,J(t)&&this.set(t,e,i),this};let ci=Vector.prototype=Object.create(Object.prototype);ci.type="Vector",ci.getXYCoordinate=function(){return[this.x,this.y]},ci.getXYZCoordinate=function(){return[this.x,this.y,this.z]},ci.setX=function(t){if(!J(t))throw new Error(`${this.name} Vector error - setX() arguments error: ${t}`);return this.x=t,this},ci.setY=function(t){if(!J(t))throw new Error(`${this.name} Vector error - setY() arguments error: ${t}`);return this.y=t,this},ci.setZ=function(t){if(!J(t))throw new Error(`${this.name} Vector error - setZ() arguments error: ${t}`);return this.z=t,this},ci.setXY=function(t,e){if(!tt(t,e))throw new Error(`${this.name} Vector error - setXY() arguments error: ${t}, ${e}`);return this.x=t,this.y=e,this},ci.set=function(t,e,i){return U(t)?this.setFromVector(t):Array.isArray(t)?this.setFromArray(t):tt(t,e)?this.setFromArray([t,e,i]):this},ci.setFromArray=function(t){if(!Array.isArray(t))throw new Error(`${this.name} Vector error - setFromArray() arguments error: ${t}`);let[e,i,s]=t;return V(e)&&(this.x=e),V(i)&&(this.y=i),V(s)&&(this.z=s),this},ci.setFromVector=function(t){if(!U(t))throw new Error(`${this.name} Vector error - setFromVector() arguments error: ${JSON.stringify(t)}`);let{x:e,y:i,z:s}=t;return V(e)&&(this.x=e),V(i)&&(this.y=i),V(s)&&(this.z=s),this},ci.zero=function(){return this.x=0,this.y=0,this.z=0,this},ci.vectorAdd=function(t={}){if(Array.isArray(t))return this.vectorAddArray(t);let{x:e,y:i,z:s}=t;return V(e)&&(this.x+=e),V(i)&&(this.y+=i),V(s)&&(this.z+=s),this},ci.vectorAddArray=function(t=[]){let[e,i,s]=t;return V(e)&&(this.x+=e),V(i)&&(this.y+=i),V(s)&&(this.z+=s),this},ci.vectorSubtract=function(t={}){if(Array.isArray(t))return this.vectorSubtractArray(t);let{x:e,y:i,z:s}=t;return V(e)&&(this.x-=e),V(i)&&(this.y-=i),V(s)&&(this.z-=s),this},ci.vectorSubtractArray=function(t){let[e,i,s]=t;return V(e)&&(this.x-=e),V(i)&&(this.y-=i),V(s)&&(this.z-=s),this},ci.scalarMultiply=function(t){if(!V(t))throw new Error(`${this.name} Vector error - scalarMultiply() argument not a number: ${t}`);return this.x*=t,this.y*=t,this.z*=t,this},ci.vectorMultiply=function(t={}){if(Array.isArray(t))return this.vectorMultiplyArray(t);let{x:e,y:i,z:s}=t;return V(e)&&(this.x*=e),V(i)&&(this.y*=i),V(s)&&(this.z*=s),this},ci.vectorMultiplyArray=function(t){let[e,i,s]=t;return V(e)&&(this.x*=e),V(i)&&(this.y*=i),V(s)&&(this.z*=s),this},ci.scalarDivide=function(t){if(!V(t))throw new Error(`${this.name} Vector error - scalarDivide() argument not a number: ${t}`);if(!t)throw new Error(`${this.name} Vector error - scalarDivide() division by zero: ${t}`);return this.x/=t,this.y/=t,this.z/=t,this},ci.getMagnitude=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},ci.rotate=function(t){if(!V(t))throw new Error(`${this.name} Vector error - rotate() argument not a number: ${t}`);let e=Math.atan2(this.y,this.x);e+=.01745329251*t;let i=this.getMagnitude();return this.x=i*Math.cos(e),this.y=i*Math.sin(e),this},ci.reverse=function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},ci.normalize=function(){let t=this.getMagnitude();return t>0&&(this.x/=t,this.y/=t,this.z/=t),this};const ui=[],di=function(t,e,i){ui.length||ui.push(new Vector);let s=ui.shift();return s.set(t,e,i),s},fi=function(t){t&&"Vector"===t.type&&ui.push(t.zero())},pi=function(t,e,i){return new Vector(t,e,i)};O.Vector=Vector;const Quaternion=function(t={}){return this.name=t.name||"generic",this.n=t.n||1,this.v=pi(),this.set(t),this};let mi=Quaternion.prototype=Object.create(Object.prototype);mi.type="Quaternion",mi.set=function(t={}){if(q(t))return this.setFromQuaternion(t);if(t&&t.type&&"Vector"===t.type)return this.setFromVector(t);if(it(t.pitch,t.yaw,t.roll))return this.setFromEuler(t);let e,i,s,n,r,o=this.v;return r=!(!J(t.vector)&&!J(t.v))&&(t.vector||t.v),n=!(!J(t.scalar)&&!J(t.n))&&(t.scalar||t.n||0),e=r?r.x||0:t.x||!1,i=r?r.y||0:t.y||!1,s=r?r.z||0:t.z||!1,this.n=V(n)?n:this.n,o.x=V(e)?e:o.x,o.y=V(i)?i:o.y,o.z=V(s)?s:o.z,this},mi.setFromQuaternion=function(t){if(!q(t))throw new Error(`${this.name} Quaternion error - setFromQuaternion() bad argument: ${t}`);let e=this.v,i=t.v;return this.n=t.n,e.x=i.x,e.y=i.y,e.z=i.z,this},mi.setFromEuler=function(t={}){let e,i,s,n,r,o,a,l,h,c=Math.cos,u=Math.sin,d=this.v;return e=(t.pitch||t.x||0)*P,i=(t.yaw||t.y||0)*P,s=(t.roll||t.z||0)*P,n=c(e/2),r=c(i/2),o=c(s/2),a=u(e/2),l=u(i/2),h=u(s/2),d.x=a*r*o+n*l*h,d.y=n*l*o+a*r*h,d.z=n*r*h-a*l*o,this.n=n*r*o-a*l*h,this},mi.zero=function(){let t=this.v;return this.n=1,t.x=0,t.y=0,t.z=0,this},mi.getMagnitude=function(){let t=this.v;return Math.sqrt(this.n*this.n+t.x*t.x+t.y*t.y+t.z*t.z)},mi.normalize=function(){let t=this.getMagnitude(),e=this.v;if(!t)throw new Error(`${this.name} Quaternion error - normalize() division by zero: ${t}`);return this.n/=t,this.n=this.n>-1e-6&&this.n<1e-6?0:this.n,e.x/=t,e.x=e.x>-1e-6&&e.x<1e-6?0:e.x,e.y/=t,e.y=e.y>-1e-6&&e.y<1e-6?0:e.y,e.z/=t,e.z=e.z>-1e-6&&e.z<1e-6?0:e.z,this},mi.quaternionMultiply=function(t){if(!q(t))throw new Error(`${this.name} Quaternion error - quaternionMultiply() bad argument: ${t}`);let e=this.v,i=t.v,s=this.n,n=e.x,r=e.y,o=e.z,a=t.n,l=i.x,h=i.y,c=i.z;return this.n=s*a-n*l-r*h-o*c,e.x=s*l+n*a+r*c-o*h,e.y=s*h+r*a+o*l-n*c,e.z=s*c+o*a+n*h-r*l,this},mi.getAngle=function(t){let e;return t=!!J(t)&&t,e=2*Math.acos(this.n),t&&(e*=1/P),e>-1e-6&&e<1e-6?0:e},mi.quaternionRotate=function(t){if(!q(t))throw new Error(`${this.name} Quaternion error - quaternionRotate() bad argument: ${t}`);let e=yi(t),i=yi(this);return this.setFromQuaternion(e.quaternionMultiply(i)),bi(e),bi(i),this};const gi=[],yi=function(t){gi.length||gi.push(ki({name:"pool"}));let e=gi.shift();return e.set(t),e},bi=function(t){t&&"Quaternion"===t.type&&gi.push(t.zero())},ki=function(t={}){return new Quaternion(t)};function Si(t={}){(t=qe(t=We(t=Ge(t=ze(t=Ne(t=Ye(t))))))).defs=_(t.defs,{domElement:"",pitch:0,yaw:0,offsetZ:0,css:null,classes:"",position:"absolute",checkForResize:!1,trackHere:"",activePadding:5}),t.packetExclusions=Q(t.packetExclusions,["domElement","pathCorners","rotation"]),t.packetFunctions=Q(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processDOMPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){if(G(this.domElement)){let e=this.domElement,i=e.cloneNode(!0);i.querySelectorAll('[data-corner-div="sc"]').forEach(t=>i.removeChild(t)),t.outerHTML=i.outerHTML,t.host=e.parentElement.id}return t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),t};let e=t.setters,s=t.deltaSetters;e.trackHere=function(t){var e;J(t)&&(t?(Q(ne,this.name),"local"===t&&(U(e=this)&&(e.localMouseListener&&e.localMouseListener(),e.here||(e.here={}),e.here.originalWidth=e.currentDimensions[0],e.here.originalHeight=e.currentDimensions[1],e.localMouseListener=Lt("move",(function(t){e.here&&(e.here.x=Math.round(parseFloat(t.offsetX)),e.here.y=Math.round(parseFloat(t.offsetY)))}),e.domElement)))):(K(ne,this.name),function(t){U(t)&&(t.localMouseListener&&t.localMouseListener(),t.localMouseListener=!1)}(this)),this.trackHere=t)},e.position=function(t){this.position=t,this.dirtyPosition=!0},e.visibility=function(t){this.visibility=t,this.dirtyVisibility=!0},e.offsetZ=function(t){this.offsetZ=t,this.dirtyOffsetZ=!0},s.offsetZ=function(t){this.offsetZ+=t,this.dirtyOffsetZ=!0},e.roll=function(t){this.roll=this.checkRotationAngle(t),this.dirtyRotation=!0},s.roll=function(t){this.roll=this.checkRotationAngle(this.roll+t),this.dirtyRotation=!0},e.pitch=function(t){this.pitch=this.checkRotationAngle(t),this.dirtyRotation=!0},s.pitch=function(t){this.pitch=this.checkRotationAngle(this.pitch+t),this.dirtyRotation=!0},e.yaw=function(t){this.yaw=this.checkRotationAngle(t),this.dirtyRotation=!0},s.yaw=function(t){this.yaw=this.checkRotationAngle(this.yaw+t),this.dirtyRotation=!0},e.css=function(t){this.css=this.css?_(this.css,t):t,this.dirtyCss=!0},e.classes=function(t){this.classes=t,this.dirtyClasses=!0},e.domAttributes=function(t){this.updateDomAttributes(t)},t.checkRotationAngle=function(t){return(t<-180||t>180)&&(t+=t>0?-360:360),t},t.updateDomAttributes=function(t,e){if(this.domElement){let i=this.domElement;t.substring&&J(e)?e?i.setAttribute(t,e):i.removeAttribute(t):U(t)&&Object.entries(t).forEach(([t,e])=>{e?i.setAttribute(t,e):i.removeAttribute(t)})}return this},t.initializeDomLayout=function(t){let e=t.domElement,s=e.style;if(s.boxSizing="border-box",e&&t.setInitialDimensions){let n,r=e.getBoundingClientRect(),o=(e.style.transform,e.style.transformOrigin,!1);if(t&&t.host&&(o=t.host,o.substring&&i[o]&&(o=i[o])),this.currentDimensions[0]=r.width,this.currentDimensions[1]=r.height,t.width=r.width,t.height=r.height,e.className&&(t.classes=e.className),o&&o.domElement&&(n=o.domElement.getBoundingClientRect(),n&&(t.startX=r.left-n.left,t.startY=r.top-n.top)),"Stack"===this.type){J(t.perspective)||J(t.perspectiveZ)||(t.perspectiveZ=J(s.perspective)&&s.perspective?parseFloat(s.perspective):0);let e=s.perspectiveOrigin;e.length&&(e=e.split(" "),e.length>0&&!J(t.perspective)&&!J(t.perspectiveX)&&(t.perspectiveX=e[0]),J(t.perspective)||J(t.perspectiveY)||(e.length>1?t.perspectiveY=e[1]:t.perspectiveY=e[0]))}}},t.addClasses=function(t){if(t.substring){let e=this.classes;e+=" "+t,e=e.trim(),e=e.replace(/[\s\uFEFF\xA0]+/g," "),e!==this.classes&&(this.classes=e,this.dirtyClasses=!0)}return this},t.removeClasses=function(t){if(t.substring){let e,i=this.classes;t.split().forEach(t=>{e=new RegExp(" ?"+t+" ?"),i=i.replace(e," "),i=i.trim(),i=i.replace(/[\s\uFEFF\xA0]+/g," ")}),i!==this.classes&&(this.classes=i,this.dirtyClasses=!0)}return this},t.addPathCorners=function(){if(this.domElement&&!this.noUserInteraction){let t=function(){let t=document.createElement("div");return t.style.width=0,t.style.height=0,t.style.position="absolute",t},e=t(),i=t(),s=t(),n=t();e.style.top="0%",e.style.left="0%",e.setAttribute("data-corner-div","sc"),i.style.top="0%",i.style.left="100%",i.setAttribute("data-corner-div","sc"),s.style.top="100%",s.style.left="100%",s.setAttribute("data-corner-div","sc"),n.style.top="100%",n.style.left="0%",n.setAttribute("data-corner-div","sc");let r=this.domElement;r.appendChild(e),r.appendChild(i),r.appendChild(s),r.appendChild(n),this.pathCorners.push(e),this.pathCorners.push(i),this.pathCorners.push(s),this.pathCorners.push(n),this.currentCornersData||(this.currentCornersData=[])}return this},t.checkCornerPositions=function(t){let e=this.pathCorners;if(4===e.length){let i,s=this.getHere(),n=ae.scrollX-(s.offsetX||0),r=ae.scrollY-(s.offsetY||0),o=Math.round,a=[];const l=function(t){let e=t[0];e?(a.push(o(e.left+n)),a.push(o(e.top+r))):a.push(0,0)};switch(t){case"topLeft":return i=e[0].getClientRects(),l(i),a;case"topRight":return i=e[1].getClientRects(),l(i),a;case"bottomRight":return i=e[2].getClientRects(),l(i),a;case"bottomLeft":return i=e[3].getClientRects(),l(i),a;default:return e.forEach(t=>{G(t)&&(i=t.getClientRects(),l(i))}),a}}};const n=["topLeft","topRight","bottomRight","bottomLeft"];return t.getCornerCoordinate=function(t){return n.indexOf(t)>=0?this.checkCornerPositions(t):[].concat(this.currentStampPosition)},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,this.domElement&&!this.noUserInteraction){this.pathCorners.length||this.addPathCorners(),this.currentCornersData||(this.currentCornersData=[]);let t=this.currentCornersData;t.length=0,t.push(...this.checkCornerPositions());let e=this.pathObject=new Path2D;e.moveTo(t[0],t[1]),e.lineTo(t[2],t[3]),e.lineTo(t[4],t[5]),e.lineTo(t[6],t[7]),e.closePath()}},t.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=requestCell(),s=!0);let n,r,o=e.engine,a=this.currentStampPosition;a[0],a[1];return i.some(t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!tt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r)},this)?(s&&releaseCell(e),{x:n,y:r,artefact:this}):(s&&releaseCell(e),!1)},t.cleanRotation=function(){this.dirtyRotation=!1,this.rotation&&q(this.rotation)||(this.rotation=ki()),this.currentRotation&&q(this.rotation)||(this.currentRotation=ki());let t=this.rotation;t.setFromEuler({pitch:this.pitch||0,yaw:this.yaw||0,roll:this.roll||0}),1!==t.getMagnitude()&&t.normalize();let e=yi(),i=this.path,s=this.mimic,n=this.pivot,r=this.lockTo;i&&r.indexOf("path")>=0?e.set(t):s&&this.useMimicRotation&&r.indexOf("mimic")>=0?J(s.currentRotation)?(e.set(s.currentRotation),this.addOwnRotationToMimic&&e.quaternionRotate(t)):this.dirtyMimicRotation=!0:(e.set(t),n&&this.addPivotRotation&&r.indexOf("pivot")>=0&&(J(n.currentRotation)?e.quaternionRotate(n.currentRotation):this.dirtyPivotRotation=!0)),this.currentRotation.set(e),bi(e),this.dirtyPositionSubscribers=!0,this.mimicked&&this.mimicked.length&&(this.dirtyMimicRotation=!0)},t.cleanOffsetZ=function(){this.dirtyOffsetZ=!1},t.cleanContent=function(){this.dirtyContent=!1,this.domElement&&(this.dirtyDimensions=!0)},t.cleanDisplayShape=B,t.cleanDisplayArea=B,t.prepareStamp=function(){(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle||this.dirtyRotation)&&(this.dirtyPathObject=!0),this.dirtyContent&&this.cleanContent(),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyDisplayArea&&this.cleanDisplayArea(),this.dirtyDisplayShape&&this.cleanDisplayShape(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyOffsetZ&&this.cleanOffsetZ(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.pivoted.length&&(this.dirtyStampPositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject()},t.stamp=function(){let t=this;return new Promise((e,i)=>{t.domElement||i(!1);let s,n,r,o,a,[l,h]=t.currentStampPosition,[c,u]=t.currentStampHandlePosition,d=t.currentScale,f=t.currentRotation,p=`${c}px ${u}px 0`,m=`translate(${l-c}px,${h-u}px)`;(t.yaw||t.pitch||t.roll||t.pivot&&t.addPivotRotation||t.mimic&&t.useMimicRotation||t.path&&t.addPathRotation)&&(s=f.v,n=s.x,r=s.y,o=s.z,a=f.getAngle(!1),m+=` rotate3d(${n},${r},${o},${a}rad)`),t.offsetZ&&(m+=` translateZ(${t.offsetZ}px)`),1!==d&&(m+=` scale(${d},${d})`),m!==t.currentTransformString&&(t.currentTransformString=m,t.dirtyTransform=!0),p!==t.currentTransformOriginString&&(t.currentTransformOriginString=p,t.dirtyTransformOrigin=!0),(t.dirtyTransform||t.dirtyPerspective||t.dirtyPosition||t.dirtyDomDimensions||t.dirtyTransformOrigin||t.dirtyVisibility||t.dirtyCss||t.dirtyClasses||t.domShowRequired)&&(Qi(t.name),Ji(!0)),t.dirtyPositionSubscribers&&t.updatePositionSubscribers(),(t.dirtyMimicRotation||t.dirtyPivotRotation)&&(t.dirtyMimicRotation=!1,t.dirtyPivotRotation=!1,t.dirtyRotation=!0),t.dirtyMimicScale&&(t.dirtyMimicScale=!1,t.dirtyScale=!0),e(!0)})},t.apply=function(){ye(),this.prepareStamp();let t=this;this.stamp().then(()=>{ts(t.name),t.dirtyPathObject=!0,t.cleanPathObject()}).catch(t=>console.log(t))},t}function Oi(t={}){let e={breakToBanner:3,breakToLandscape:1.5,breakToPortrait:.65,breakToSkyscraper:.35,actionBannerShape:null,actionLandscapeShape:null,actionRectangleShape:null,actionPortraitShape:null,actionSkyscraperShape:null,breakToSmallest:2e4,breakToSmaller:8e4,breakToLarger:18e4,breakToLargest:32e4,actionSmallestArea:null,actionSmallerArea:null,actionRegularArea:null,actionLargerArea:null,actionLargestArea:null};t.defs=_(t.defs,e),_(t,e),t.packetFunctions=Q(t.packetFunctions,["actionBannerShape","actionLandscapeShape","actionRectangleShape","actionPortraitShape","actionSkyscraperShape"]);let i=t.getters,s=t.setters;return i.displayShape=function(){return this.currentDisplayShape},i.displayShapeBreakpoints=function(){return{breakToBanner:this.breakToBanner,breakToLandscape:this.breakToLandscape,breakToPortrait:this.breakToPortrait,breakToSkyscraper:this.breakToSkyscraper,breakToSmallest:this.breakToSmallest,breakToSmaller:this.breakToSmaller,breakToLarger:this.breakToLarger,breakToLargest:this.breakToLargest}},s.displayShapeBreakpoints=function(t={}){for(let[e,i]of Object.entries(t))if(V(i))switch(e){case"breakToBanner":this.breakToBanner=i;break;case"breakToLandscape":this.breakToLandscape=i;break;case"breakToPortrait":this.breakToPortrait=i;break;case"breakToSkyscraper":this.breakToSkyscraper=i;break;case"breakToSmallest":this.breakToSmallest=i;break;case"breakToSmaller":this.breakToSmaller=i;break;case"breakToLarger":this.breakToLarger=i;break;case"breakToLargest":this.breakToLargest=i}this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},t.setDisplayShapeBreakpoints=s.displayShapeBreakpoints,s.breakToBanner=function(t){V(t)&&(this.breakToBanner=t),this.dirtyDisplayShape=!0},s.breakToLandscape=function(t){V(t)&&(this.breakToLandscape=t),this.dirtyDisplayShape=!0},s.breakToPortrait=function(t){V(t)&&(this.breakToPortrait=t),this.dirtyDisplayShape=!0},s.breakToSkyscraper=function(t){V(t)&&(this.breakToSkyscraper=t),this.dirtyDisplayShape=!0},s.breakToSmallest=function(t){V(t)&&(this.breakToSmallest=t),this.dirtyDisplayArea=!0},s.breakToSmaller=function(t){V(t)&&(this.breakToSmaller=t),this.dirtyDisplayArea=!0},s.breakToLarger=function(t){V(t)&&(this.breakToLarger=t),this.dirtyDisplayArea=!0},s.breakToLargest=function(t){V(t)&&(this.breakToLargest=t),this.dirtyDisplayArea=!0},s.actionBannerShape=function(t){W(t)&&(this.actionBannerShape=t),this.dirtyDisplayShape=!0},t.setActionBannerShape=s.actionBannerShape,s.actionLandscapeShape=function(t){W(t)&&(this.actionLandscapeShape=t),this.dirtyDisplayShape=!0},t.setActionLandscapeShape=s.actionLandscapeShape,s.actionRectangleShape=function(t){W(t)&&(this.actionRectangleShape=t),this.dirtyDisplayShape=!0},t.setActionRectangleShape=s.actionRectangleShape,s.actionPortraitShape=function(t){W(t)&&(this.actionPortraitShape=t),this.dirtyDisplayShape=!0},t.setActionPortraitShape=s.actionPortraitShape,s.actionSkyscraperShape=function(t){W(t)&&(this.actionSkyscraperShape=t),this.dirtyDisplayShape=!0},t.setActionSkyscraperShape=s.actionSkyscraperShape,s.actionSmallestArea=function(t){W(t)&&(this.actionSmallestArea=t),this.dirtyDisplayArea=!0},t.setActionSmallestArea=s.actionSmallestArea,s.actionSmallerArea=function(t){W(t)&&(this.actionSmallerArea=t),this.dirtyDisplayArea=!0},t.setActionSmallerArea=s.actionSmallerArea,s.actionRegularArea=function(t){W(t)&&(this.actionRegularArea=t),this.dirtyDisplayArea=!0},t.setActionRegularArea=s.actionRegularArea,s.actionLargerArea=function(t){W(t)&&(this.actionLargerArea=t),this.dirtyDisplayArea=!0},t.setActionLargerArea=s.actionLargerArea,s.actionLargestArea=function(t){W(t)&&(this.actionLargestArea=t),this.dirtyDisplayArea=!0},t.setActionLargestArea=s.actionLargestArea,t.initializeDisplayShapeActions=function(){this.actionBannerShape=B,this.actionLandscapeShape=B,this.actionRectangleShape=B,this.actionPortraitShape=B,this.actionSkyscraperShape=B,this.currentDisplayShape="",this.dirtyDisplayShape=!0,this.actionSmallestArea=B,this.actionSmallerArea=B,this.actionRegularArea=B,this.actionLargerArea=B,this.actionLargestArea=B,this.currentDisplayArea="",this.dirtyDisplayArea=!0},t.cleanDisplayShape=function(){this.dirtyDisplayShape=!1;let[t,e]=this.currentDimensions;if(t>0&&e>0){let i=t/e,s=this.currentDisplayShape,n=this.breakToBanner,r=this.breakToLandscape,o=this.breakToPortrait,a=this.breakToSkyscraper;return i>n?"banner"!==s&&(this.currentDisplayShape="banner",this.actionBannerShape(),!0):i>r?"landscape"!==s&&(this.currentDisplayShape="landscape",this.actionLandscapeShape(),!0):i0&&e>0){let i=t*e,s=this.currentDisplayArea,n=this.breakToLargest,r=this.breakToLarger,o=this.breakToSmaller,a=this.breakToSmallest;return i>n?"largest"!==s&&(this.currentDisplayArea="largest",this.actionLargestArea(),!0):i>r?"larger"!==s&&(this.currentDisplayArea="larger",this.actionLargerArea(),!0):i=0?t:"none"},wi.title=function(t){this.title=t,this.dirtyAria=!0},wi.label=function(t){this.label=t,this.dirtyAria=!0},wi.description=function(t){this.description=t,this.dirtyAria=!0},vi.backgroundColor=function(){return this.base.backgroundColor},wi.backgroundColor=function(t){this.base&&this.base.set({backgroundColor:t})},vi.alpha=function(){return this.base.alpha},wi.alpha=function(t){this.base&&this.base.set({alpha:t})},Ai.alpha=function(t){this.base&&this.base.deltaSet({alpha:t})},vi.composite=function(){return this.base.composite},wi.composite=function(t){this.base&&this.base.set({composite:t})},Pi.setAsCurrentCanvas=function(){return this.base&&Gi(this),this},Pi.setBase=function(t){return this.base&&(this.base.set(t),this.setBaseHelper()),this},Pi.deltaSetBase=function(t){return this.base&&(this.base.deltaSet(t),this.setBaseHelper()),this},Pi.updateBaseHere=function(){this.base&&this.base.updateBaseHere(this.here,this.fit)},Pi.setBaseHelper=function(){let t={};this.base.dirtyScale&&(t.dirtyScale=!0),this.base.dirtyDimensions&&(t.dirtyDimensions=!0),this.base.dirtyLock&&(t.dirtyLock=!0),this.base.dirtyStart&&(t.dirtyStart=!0),this.base.dirtyOffset&&(t.dirtyOffset=!0),this.base.dirtyHandle&&(t.dirtyHandle=!0),this.base.dirtyRotation&&(t.dirtyRotation=!0),this.cleanCells(),this.base.prepareStamp(),this.updateCells(t)},Pi.updateCells=function(t={}){this.cells.forEach(e=>{let i=a[e];i&&(t.dirtyScale&&(i.dirtyScale=!0),t.dirtyDimensions&&(i.dirtyDimensions=!0),t.dirtyLock&&(i.dirtyLock=!0),t.dirtyStart&&(i.dirtyStart=!0),t.dirtyOffset&&(i.dirtyOffset=!0),t.dirtyHandle&&(i.dirtyHandle=!0),t.dirtyRotation&&(i.dirtyRotation=!0))})},Pi.buildCell=function(t={}){t.host||!1||(t.host=this.base.name);let e=ri(t);return this.addCell(e),this.cleanCells(),e},Pi.cleanDimensionsAdditionalActions=function(){this.cells&&this.updateCells({dirtyDimensions:!0}),this.dirtyDomDimensions=!0,this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},Pi.addCell=function(t){return(t=t.substring?t:t.name||!1)&&(Q(this.cells,t),a[t].prepareStamp(),this.dirtyCells=!0),t},Pi.removeCell=function(t){return(t=t.substring?t:t.name||!1)&&(K(this.cells,t),this.dirtyCells=!0),this},Pi.killCell=function(t){let e=t.substring?a[t]:t;return e&&e.kill(),this.dirtyCells=!0,this},Pi.clear=function(){let t=this;t.dirtyCells&&t.cleanCells();let e=i=>new Promise((s,n)=>{let r=t.cellBatchesClear[i];r?r.clear().then(t=>{e(i+1).then(t=>s(!0)).catch(t=>n(t))}).catch(t=>n(t)):s(!0)});return e(0)},Pi.compile=function(){let t=this;t.dirtyCells&&t.cleanCells();let e=i=>new Promise((s,n)=>{let r=t.cellBatchesCompile[i];r?r.compile().then(t=>{e(i+1).then(t=>s(!0)).catch(t=>n(t))}).catch(t=>n(t)):(t.prepareStamp(),t.stamp().then(t=>s(!0)).catch(t=>n(t)))});return e(0)},Pi.show=function(){let t=this;t.dirtyCells&&t.cleanCells();let e=i=>new Promise((s,n)=>{let r=t.cellBatchesShow[i];r?r.show().then(t=>{e(i+1).then(t=>s(!0)).catch(t=>n(t))}).catch(t=>n(t)):(t.engine.clearRect(0,0,t.localWidth,t.localHeight),t.base.show().then(t=>{ts(),this.dirtyAria&&this.cleanAria(),s(!0)}).catch(t=>n(t)))});return e(0)},Pi.render=function(){let t=this;return new Promise(e=>{t.clear().then(()=>t.compile()).then(()=>t.show()).then(()=>e(!0)).catch(()=>e(!1))})},Pi.cleanCells=function(){this.dirtyCells=!1;let t,e=[],i=[],s=[];this.cells.forEach(n=>{let r=a[n];r&&(r.cleared&&e.push(r),r.compiled&&(t=r.compileOrder,i[t]||(i[t]=[]),i[t].push(r)),r.shown&&(t=r.showOrder,s[t]||(s[t]=[]),s[t].push(r)))}),this.cellBatchesClear=[].concat(e),this.cellBatchesCompile=i.reduce((t,e)=>t.concat(e),[]),this.cellBatchesShow=s.reduce((t,e)=>t.concat(e),[])},Pi.cascadeEventAction=function(t){this.currentActiveEntityNames||(this.currentActiveEntityNames=[]);let e=this.currentActiveEntityNames,s=[],n=[],r=[],o=[],l=[],h=[];this.cells.forEach(t=>{let e=a[t];e&&(e.shown||e.isBase)&&s.push(e.getEntityHits())}),s=s.reduce((t,e)=>t.concat(e),[]),s.forEach(t=>{let i=t.name;n.indexOf(i)<0&&(n.push(i),e.indexOf(i)<0?(r.push(t),o.push(i)):(l.push(t),h.push(i)))});let c=r.concat(l),u=function(){e.length&&(o.forEach(t=>K(e,t)),h.forEach(t=>K(e,t)),e.forEach(t=>{let e=i[t];e&&e.onLeave()}))};switch(t){case"down":c.forEach(t=>t.onDown());break;case"up":c.forEach(t=>t.onUp());break;case"enter":r.forEach(t=>t.onEnter());break;case"leave":u();break;case"move":u(),r.forEach(t=>t.onEnter())}return this.currentActiveEntityNames=o.concat(h),this.currentActiveEntityNames},Pi.cleanAria=function(){this.dirtyAria=!1,this.domElement.setAttribute("title",this.title),this.ariaLabelElement.textContent=this.label,this.ariaDescriptionElement.textContent=this.description};const xi=function(t){return new Canvas(t)};O.Canvas=Canvas;const Element=function(t={}){let e=t.domElement;return this.makeName(t.name),this.register(),e&&(t.text?e.textContent=t.text:t.content&&(e.innerHTML=t.content)),this.initializePositions(),this.dimensions[0]=this.dimensions[1]=100,this.pathCorners=[],this.css={},this.here={},this.initializeDomLayout(t),this.set(this.defs),this.set(t),e=this.domElement,e&&(e.id=this.name),this.apply(),this};let Ci=Element.prototype=Object.create(Object.prototype);Ci.type="Element",Ci.lib="element",Ci.isArtefact=!0,Ci.isAsset=!1,Ci=ee(Ci),Ci=Si(Ci),Ci.factoryKill=function(){K(ne,this.name),this.domElement.remove()};let Di=Ci.setters;Di.text=function(t){if(G(this.domElement)){let e=this.domElement,i=e.querySelectorAll('[data-corner-div="sc"]');e.textContent=t,i.forEach(t=>e.appendChild(t)),this.dirtyContent=!0}},Di.content=function(t){if(this.domElement){let e=this.domElement,i=e.querySelectorAll('[data-corner-div="sc"]');e.innerHTML=t,i.forEach(t=>e.appendChild(t)),this.dirtyContent=!0}},Ci.cleanDimensionsAdditionalActions=function(){this.dirtyDomDimensions=!0},Ci.addCanvas=function(t={}){if(!this.canvas){let e=document.createElement("canvas"),i=this.domElement,s=i.getBoundingClientRect();window.getComputedStyle(i);i.parentNode.insertBefore(e,this.domElement);let n=xi({name:this.name+"-canvas",domElement:e,position:"absolute",width:s.width,height:s.height,mimic:this.name,lockTo:"mimic",useMimicDimensions:!0,useMimicScale:!0,useMimicStart:!0,useMimicHandle:!0,useMimicOffset:!0,useMimicRotation:!0,addOwnDimensionsToMimic:!1,addOwnScaleToMimic:!1,addOwnStartToMimic:!1,addOwnHandleToMimic:!1,addOwnOffsetToMimic:!1,addOwnRotationToMimic:!1});return n.set(t),this.canvas=n,n}};const Ri=function(t){return new Element(t)};O.Element=Element;const Stack=function(t={}){let e,i;return this.makeName(t.name),this.register(),this.initializePositions(),this.initializeCascade(),this.dimensions[0]=300,this.dimensions[1]=150,this.pathCorners=[],this.css={},this.here={},this.perspective={x:"50%",y:"50%",z:0},this.dirtyPerspective=!0,this.initializeDomLayout(t),e=hi({name:this.name,host:this.name}),this.addGroups(e.name),this.set(this.defs),this.initializeDisplayShapeActions(),this.set(t),i=this.domElement,i&&"root"===i.getAttribute("data-group")&&(Q(Ii,this.name),Bi()),this};let Ei=Stack.prototype=Object.create(Object.prototype);Ei.type="Stack",Ei.lib="stack",Ei.isArtefact=!0,Ei.isAsset=!1,Ei=ee(Ei),Ei=_e(Ei),Ei=Si(Ei),Ei=Oi(Ei);Ei.defs=_(Ei.defs,{position:"relative",perspective:null,trackHere:"subscribe",isResponsive:!1,containElementsInHeight:!1}),Ei.stringifyFunction=B,Ei.processPacketOut=B,Ei.finalizePacketOut=B,Ei.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},Ei.clone=$,Ei.factoryKill=function(){let t=this.name;K(Ii,t),Bi(),K(ne,t),u[t]&&u[t].kill(),Object.entries(i).forEach(([e,i])=>{i.host===t&&i.kill()}),this.domElement.remove()};let Fi=Ei.getters,Ti=Ei.setters,Hi=Ei.deltaSetters;Fi.perspectiveX=function(){return this.perspective.x},Fi.perspectiveY=function(){return this.perspective.y},Fi.perspectiveZ=function(){return this.perspective.z},Ti.perspectiveX=function(t){this.perspective.x=t,this.dirtyPerspective=!0},Ti.perspectiveY=function(t){this.perspective.y=t,this.dirtyPerspective=!0},Ti.perspectiveZ=function(t){this.perspective.z=t,this.dirtyPerspective=!0},Ti.perspective=function(t={}){this.perspective.x=J(t.x)?t.x:this.perspective.x,this.perspective.y=J(t.y)?t.y:this.perspective.y,this.perspective.z=J(t.z)?t.z:this.perspective.z,this.dirtyPerspective=!0},Hi.perspectiveX=function(t){this.perspective.x=H(this.perspective.x,t),this.dirtyPerspective=!0},Hi.perspectiveY=function(t){this.perspective.y=H(this.perspective.y,t),this.dirtyPerspective=!0},Ei.updateArtefacts=function(t={}){this.groupBuckets.forEach(e=>{e.artefactBuckets.forEach(e=>{t.dirtyScale&&(e.dirtyScale=!0),t.dirtyDimensions&&(e.dirtyDimensions=!0),t.dirtyLock&&(e.dirtyLock=!0),t.dirtyStart&&(e.dirtyStart=!0),t.dirtyOffset&&(e.dirtyOffset=!0),t.dirtyHandle&&(e.dirtyHandle=!0),t.dirtyRotation&&(e.dirtyRotation=!0),t.dirtyPathObject&&(e.dirtyPathObject=!0)})})},Ei.cleanDimensionsAdditionalActions=function(){this.groupBuckets&&this.updateArtefacts({dirtyDimensions:!0,dirtyPath:!0,dirtyStart:!0,dirtyHandle:!0}),this.dirtyDomDimensions=!0,this.dirtyPath=!0,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyDisplayShape=!0,this.dirtyDisplayArea=!0},Ei.cleanPerspective=function(){this.dirtyPerspective=!1;let t=this.perspective;this.domPerspectiveString=`perspective-origin: ${t.x} ${t.y}; perspective: ${t.z}px;`,this.domShowRequired=!0,this.groupBuckets&&this.updateArtefacts({dirtyHandle:!0,dirtyPathObject:!0})},Ei.checkResponsive=function(){this.isResponsive&&this.trackHere&&(this.currentVportWidth||(this.currentVportWidth=ae.w),this.currentVportHeight||(this.currentVportHeight=ae.h),this.dirtyHeight&&this.containElementsInHeight&&(console.log("stack height final fixes need to be done"),this.dirtyHeight=!1),this.currentVportWidth!==ae.w&&(console.log("need to update for resized viewport width"),this.currentVportWidth=ae.w,this.containElementsInHeight&&(this.dirtyHeight=!0)),this.currentVportHeight!==ae.h&&(console.log("need to update for resized viewport height"),this.currentVportHeight=ae.h))},Ei.clear=function(){return this.checkResponsive(),Promise.resolve(!0)},Ei.compile=function(){let t=this;return new Promise((e,i)=>{t.sortGroups(),t.prepareStamp(),t.stamp().then(()=>{let e=[];return t.groupBuckets.forEach(t=>e.push(t.stamp())),Promise.all(e)}).then(()=>e(!0)).catch(t=>i(!1))})},Ei.show=function(){return new Promise(t=>{ts(),t(!0)})},Ei.render=function(){let t=this;return new Promise((e,i)=>{t.compile().then(()=>t.show()).then(()=>e(!0)).catch(t=>i(!1))})},Ei.addExistingDomElements=function(t){let e,i,s,n,r;if(J(t))for(e=t.substring?document.querySelectorAll(t):[].concat(t),n=0,r=e.length;n{$i=!0},Li=[],$i=!0;const ji=function(t){let e=t.getAttribute("data-group"),i=t.id||t.getAttribute("name"),s="absolute";e||(t.setAttribute("data-group","root"),e="root",s="relative"),i||(i=X(),t.id=i);let n=Mi({name:i,domElement:t,group:e,host:e,position:s,setInitialDimensions:!0});return Xi(t,i),n},Xi=function(t,e){let i=t.getBoundingClientRect(),s=0;Array.from(t.children).forEach(t=>{if(null!=t.getAttribute("data-stack")||z(t)||"SCRIPT"===t.tagName)t.setAttribute("data-group",e);else{let n=t.getBoundingClientRect(),r=window.getComputedStyle(t),o=parseFloat(r.marginTop)+parseFloat(r.borderTopWidth)+parseFloat(r.paddingTop)+parseFloat(r.paddingBottom)+parseFloat(r.borderBottomWidth)+parseFloat(r.marginBottom);s=s||n.top-i.top;let a={name:t.id||t.getAttribute("name"),domElement:t,group:e,host:e,position:"absolute",width:n.width,height:n.height,startX:n.left-i.left,startY:s,classes:t.className?t.className:""};s+=o+n.height,Ri(a)}})},Yi=function(t){let e=t.getAttribute("data-group"),i=t.id||t.getAttribute("name"),s="absolute";return e||(t.setAttribute("data-group","root"),e="root",s=t.style.position),i||(i=X(),t.id=i),xi({name:i,domElement:t,group:e,host:e,position:s,setInitialDimensions:!0})};let Ni=null,zi=null;const Gi=function(t){let e=!1;if(t)if(t.substring){let i=o[t];i&&(Ni=i,e=!0)}else"Canvas"===t.type&&(Ni=t,e=!0);if(e&&Ni.base){let t=u[Ni.base.name];t&&(zi=t)}},Wi=function(...t){return qi(t),_i("clear")},Vi=function(...t){return qi(t),_i("compile")},Ui=function(...t){return qi(t),_i("show")},qi=function(t){t.length?Li=t:$i&&function(){let t=Math.floor;if($i){$i=!1;let e,s,n=[];Ii.forEach(r=>{e=i[r],e&&(s=t(e.order)||0,n[s]||(n[s]=[]),n[s].push(e.name))}),Li=n.reduce((t,e)=>t.concat(e),[])}}()},_i=function(t){return new Promise((e,s)=>{let n,r=[];Li.forEach(e=>{n=i[e],n&&n[t]&&r.push(n[t]())}),Promise.all(r).then(()=>e(!0)).catch(t=>s(t))})},Zi=[],Qi=function(t=""){if(!t)throw new Error("core/document addDomShowElement() error - false argument supplied: "+t);if(!t.substring)throw new Error("core/document addDomShowElement() error - argument not a string: "+t);Q(Zi,t)};let Ki=!1;const Ji=function(t=!0){Ki=t},ts=function(t=""){if(Ki||t){let e,s,n,r,o,a,l,h,c,u,d,f,p,m,g,y,b,k;for(t?e=[t]:(Ki=!1,e=[].concat(Zi),Zi.length=0),s=0,n=e.length;sconsole.log(t))):(l.width=u+"px",l.height=d?d+"px":"auto")),o.dirtyTransformOrigin&&(o.dirtyTransformOrigin=!1,l.transformOrigin=o.currentTransformOriginString),o.dirtyTransform&&(o.dirtyTransform=!1,l.transform=o.currentTransformString),o.dirtyVisibility&&(o.dirtyVisibility=!1,l.display=o.visibility?"block":"none"),o.dirtyCss)for(o.dirtyCss=!1,m=o.css||{},g=Object.keys(m),f=0,p=g.length;f{let s=Object.assign({},t);s.name=`${s.name}_${i.name}`,s.target=i,e.push(new RenderAnimation(s))}),e}e=t.target.substring?i[t.target]:t.target}else e={clear:Wi,compile:Vi,show:Ui};if(!(e&&e.clear&&e.compile&&e.show))return!1;this.makeName(t.name),this.order=J(t.order)?t.order:this.defs.order,this.onRun=t.onRun||B,this.onHalt=t.onHalt||B,this.onKill=t.onKill||B,this.target=e,this.commence=t.commence||B,this.afterClear=t.afterClear||B,this.afterCompile=t.afterCompile||B,this.afterShow=t.afterShow||B,this.afterCreated=t.afterCreated||B,this.error=t.error||B,this.readyToInitialize=!0;let s=this;return this.fn=function(){return new Promise((t,e)=>{Promise.resolve(s.commence()).then(()=>s.target.clear()).then(()=>Promise.resolve(s.afterClear())).then(()=>s.target.compile()).then(()=>Promise.resolve(s.afterCompile())).then(()=>s.target.show()).then(()=>Promise.resolve(s.afterShow())).then(()=>{s.readyToInitialize&&(s.afterCreated(),s.readyToInitialize=!1),t(!0)}).catch(t=>{s.error(t),e(t)})})},this.register(),t.observer&&(this.observer=Bt(this,this.target)),t.delay||this.run(),this};let ss=RenderAnimation.prototype=Object.create(Object.prototype);ss.type="RenderAnimation",ss.lib="animation",ss.isArtefact=!1,ss.isAsset=!1,ss=ee(ss);ss.defs=_(ss.defs,{order:1,onRun:null,onHalt:null,onKill:null,commence:null,afterClear:null,afterCompile:null,afterShow:null,afterCreated:null,error:null,target:null}),ss.stringifyFunction=B,ss.processPacketOut=B,ss.finalizePacketOut=B,ss.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},ss.clone=$,ss.kill=function(){return this.onKill(),K(R,this.name),E(),this.deregister(),!0},ss.run=function(){return this.onRun(),Q(R,this.name),E(),this},ss.isRunning=function(){return R.indexOf(this.name)>=0},ss.halt=function(){return this.onHalt(),K(R,this.name),E(),this};const ns=function(t){return new RenderAnimation(t)};O.RenderAnimation=RenderAnimation;const UnstackedElement=function(t){let e=t.id||t.name;return this.makeName(e),this.register(),t.setAttribute("data-scrawl-name",this.name),this.domElement=t,this.elementComputedStyles=window.getComputedStyle(t),this.hostStyles={},this.canvasStartX=0,this.canvasStartY=0,this.canvasWidth=0,this.canvasHeight=0,this.canvasZIndex=0,this};let rs=UnstackedElement.prototype=Object.create(Object.prototype);rs.type="UnstackedElement",rs.lib="unstackedelement",rs.isArtefact=!1,rs.isAsset=!1,rs=ee(rs);rs.defs=_(rs.defs,{canvasOnTop:!1});rs.getters,rs.setters,rs.deltaSetters;rs.demolish=function(t=!1){return!0},rs.addCanvas=function(t={}){if(!this.canvas){let e=document.createElement("canvas"),i=this.domElement,s=i.style;"static"===s.position&&(s.position="relative"),i.prepend(e);let n=xi({name:this.name+"-canvas",domElement:e,position:"absolute"});return this.canvas=n,n.set(t),this.updateCanvas(),n}},rs.includedStyles=["width","height","zIndex","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],rs.mimickedStyles=["borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius"],rs.checkElementStyleValues=function(){let t={},e=this.domElement,i=this.canvas;if(e&&i&&i.domElement){let s=this.hostStyles,n=this.elementComputedStyles,r=i.domElement,o=this.includedStyles,a=Math.max,{x:l,y:h,width:c,height:u}=e.getBoundingClientRect(),{x:d,y:f}=r.getBoundingClientRect();o.forEach(e=>{switch(e){case"width":let i=a(parseFloat(n.width),c);this.canvasWidth!==i&&(this.canvasWidth=i,this.dirtyDimensions=!0);break;case"height":let r=a(parseFloat(n.height),u);this.canvasHeight!==r&&(this.canvasHeight=r,this.dirtyDimensions=!0);break;case"zIndex":let o="auto"===n.zIndex?0:parseInt(n.zIndex,10);o=this.canvasOnTop?o+1:o-1,this.canvasZIndex!==o&&(this.canvasZIndex=o,this.dirtyZIndex=!0);break;default:let l=s[e],h=n[e];J(l)&&l===h||(s[e]=h,t[e]=h)}});let p=l-d,m=h-f;(p||m)&&(this.canvasStartX+=p,this.canvasStartY+=m,this.dirtyStart=!0)}return t},rs.updateCanvas=function(){if(this.canvas&&this.canvas.domElement){let t=this.canvas,e=t.domElement.style,i=this.mimickedStyles,s=this.checkElementStyleValues();for(let[t,n]of Object.entries(s))i.indexOf(t)>=0&&(e[t]=n);if(this.dirtyStart&&(this.dirtyStart=!1,t.set({startX:this.canvasStartX,startY:this.canvasStartY})),this.dirtyDimensions){this.dirtyDimensions=!1;let e=this.canvasWidth,i=this.canvasHeight;t.set({width:e,height:i}),t.dirtyDimensions=!0,t.base.set({width:e,height:i}),t.base.dirtyDimensions=!0,t.cleanDimensions(),t.base.cleanDimensions()}this.dirtyZIndex&&(this.dirtyZIndex=!1,e.zIndex=this.canvasZIndex)}};O.UnstackedElement=UnstackedElement;const os=function(t,e,s,n){let r=i[t.id];if(!r)return!1;e.isComponent=!0;let o=r.addCanvas(e);s.name=r.name+"-animation",s.target=o;let a=ns(s),l=Bt(a,r,n);return{element:r,canvas:o,animation:a,demolish:()=>{l(),a.kill(),o.demolish(),r.demolish(!0)}}},as=function(t,e,i,s,n){let r,o=t.id;o&&S[o]?r=S[o]:r=new UnstackedElement(t),e.isComponent=!0;let a=!!n&&r.addCanvas(e);i.name=r.name+"-animation",a&&(i.afterClear||(i.afterClear=()=>r.updateCanvas()),i.target=a);let l=ns(i),h=Bt(l,r,s);return{element:r,canvas:a,animation:l,demolish:()=>{h(),l.kill(),a&&a.demolish(),r.demolish(!0)}}},ls=["artefact","group","animation","tween","styles"],hs=t=>{if(t&&t.substring){let e;return!!ls.some(i=>(e=A[i][t],e))&&e}return!1};function cs(t={}){t.defs=_(t.defs,{order:1,ticker:"",targets:null,time:0,action:null,reverseOnCycleEnd:!1,reversed:!1}),t.kill=function(){let t,i=this.ticker;return i===this.name+"_ticker"?(t=e[i],t&&t.kill()):i&&this.removeFromTicker(i),this.deregister(),!0};let i=t.getters,s=t.setters;return i.targets=function(){return[].concat(this.targets)},s.targets=function(t=[]){this.setTargets(t)},s.action=function(t){this.action=t,"function"!=typeof this.action&&(this.action=B)},t.calculateEffectiveTime=function(t){let i,s=et(t,this.time),n=M(s),r=n[1],o=n[0],a=0;return this.effectiveTime=0,"%"===o&&r<=100?this.ticker&&(i=e[this.ticker],i&&(a=i.effectiveDuration,this.effectiveTime=a*(r/100))):this.effectiveTime=r,this},t.addToTicker=function(t){let i;return J(t)&&(this.ticker&&this.ticker!==t&&this.removeFromTicker(this.ticker),i=e[t],J(i)&&(this.ticker=t,i.subscribe(this.name),this.calculateEffectiveTime())),this},t.removeFromTicker=function(t){let i;return(t=J(t)?t:this.ticker)&&(i=e[t],J(i)&&(this.ticker="",i.unsubscribe(this.name))),this},t.setTargets=function(t){t=[].concat(t);let e=[];return t.forEach(t=>{if(W(t))W(t.set)&&e.push(t);else if(U(t)&&J(t.name))e.push(t);else{let i=hs(t);i&&e.push(i)}}),this.targets=e,this},t.addToTargets=function(t){return(t=[].concat(t)).forEach(t=>{"function"==typeof t?"function"==typeof t.set&&this.targets.push(t):(result=hs(t),result&&this.targets.push(result))},this),this},t.removeFromTargets=function(t){t=[].concat(t);let e=[],i=[].concat(this.targets);return i.forEach(t=>{let i=t.type||"unknown",s=t.name||"unnamed";"unknown"!==i&&"unnamed"!==s&&e.push(`${i}_${s}`)}),t.forEach(t=>{let s;if(s="function"==typeof t?t:hs(t),s){let t=s.type||"unknown",n=s.name||"unnamed";if("unknown"!==t&&"unnamed"!==n){let s=`${t}_${n}`,r=e.indexOf(s);r>=0&&(i[r]=!1)}}}),this.targets=[],i.forEach(t=>{t&&this.targets.push(t)},this),this},t.checkForTarget=function(t){return!!t.substring&&this.targets.some(e=>e.name===t)},t}const Action=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.calculateEffectiveTime(),J(t.ticker)&&this.addToTicker(t.ticker),this};let us=Action.prototype=Object.create(Object.prototype);us.type="Action",us.lib="tween",us.isArtefact=!1,us.isAsset=!1,us=ee(us),us=cs(us);us.defs=_(us.defs,{revert:null}),us.packetExclusions=Q(us.packetExclusions,["targets"]),us.packetFunctions=Q(us.packetFunctions,["revert","action"]),us.finalizePacketOut=function(t,e){return Array.isArray(this.targets)&&(t.targets=this.targets.map(t=>t.name)),t};let ds=us.setters;ds.revert=function(t){this.revert=t,"function"!=typeof this.revert&&(this.revert=B)},ds.triggered=function(t){this.triggered!==t&&(t?this.action():this.revert(),this.triggered=t)},us.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs,n=!!J(t.ticker)&&this.ticker;Object.entries(t).forEach(([t,n])=>{"name"!==t&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this),n?(this.ticker=n,this.addToTicker(t.ticker)):J(t.time)&&this.calculateEffectiveTime()}return this},us.getEndTime=function(){return this.effectiveTime},us.update=function(t){let e=this.reversed,i=this.effectiveTime,s=this.triggered,n=(this.reverseOnCycleEnd,t.tick),r=t.reverseTick,o=t.willLoop;t.next;return e?r>=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1):n>=i?s||(this.action(),this.triggered=!0):s&&(this.revert(),this.triggered=!1),o&&(this.triggered=!this.triggered),!0};function fs(t={}){(t=Qe(t=qe(t=We(t=Ge(t=ze(t=Ne(t=Ye(t)))))))).defs=_(t.defs,{method:"fill",pathObject:null,winding:"nonzero",flipReverse:!1,flipUpend:!1,scaleOutline:!0,lockFillStyleToEntity:!1,lockStrokeStyleToEntity:!1,onEnter:null,onLeave:null,onDown:null,onUp:null}),t.packetExclusions=Q(t.packetExclusions,["state"]),t.packetFunctions=Q(t.packetFunctions,["onEnter","onLeave","onDown","onUp"]),t.processEntityPacketOut=function(t,e,i){return this.processFactoryPacketOut(t,e,i)},t.processFactoryPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},t.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=_(t,i),t=this.handlePacketAnchor(t,e)},t.postCloneAction=function(t,e){return this.onEnter&&(t.onEnter=this.onEnter),this.onLeave&&(t.onLeave=this.onLeave),this.onDown&&(t.onDown=this.onDown),this.onUp&&(t.onUp=this.onUp),e.sharedState&&(t.state=this.state),e.anchor&&(e.anchor.host=t,J(e.anchor.focusAction)||(e.anchor.focusAction=this.anchor.focusAction),J(e.anchor.blurAction)||(e.anchor.blurAction=this.anchor.blurAction),t.buildAnchor(e.anchor),e.anchor.clickAction||(t.anchor.clickAction=this.anchor.clickAction)),t};let e=t.getters,i=t.setters;t.deltaSetters;return e.group=function(){return this.group?this.group.name:""},i.lockStylesToEntity=function(t){this.lockFillStyleToEntity=t,this.lockStrokeStyleToEntity=t},t.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):null)}},t.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=r?r.setters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,l])=>{t&&"name"!==t&&null!=l&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,l):void 0!==n[t]?this[t]=l:void 0!==a[t]&&(r[t]=l))},this)}return this},t.setDelta=function(t={}){if(Object.keys(t).length){let e,i,s=this.deltaSetters,n=this.defs,r=this.state,o=r?r.deltaSetters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,l])=>{t&&"name"!==t&&null!=l&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,l):void 0!==n[t]?this[t]=H(this[t],l):void 0!==a[t]&&(r[t]=H(r[t],l)))},this)}return this},t.entityInit=function(t={}){this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.state=Ce(),t.group||(t.group=zi),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.set(t),this.midInitActions(t),this.purge&&this.purgeArtefact(this.purge)},t.midInitActions=B,t.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1,this.dirtyDimensions=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.anchor&&this.dirtyAnchorHold&&(this.dirtyAnchorHold=!1,this.buildAnchor(this.anchor))},t.cleanPathObject=B,t.stamp=function(t=!1,e,i){let s=!(this.noFilters||!this.filters||!this.filters.length);return t?(e&&"Cell"===e.type&&(this.currentHost=e),i&&(this.set(i),this.prepareStamp()),s?this.filteredStamp():this.regularStamp()):this.visibility?this.stashOutput||s?this.filteredStamp():this.regularStamp():Promise.resolve("entity.stamp")},t.regularStamp=function(){let t=this;return new Promise((e,i)=>{t.currentHost&&(t.regularStampSynchronousActions(),e("entity.regularStamp resolving")),i("entity.regularStamp - no currentHost")})},t.filteredStamp=function(){!this.dirtyFilters&&this.currentFilters||this.cleanFilters();let t=this;return new Promise((e,i)=>{let s=function(){if(u&&ve(u),o.save(),o.globalAlpha=t.state.globalAlpha,o.globalCompositeOperation=t.state.globalCompositeOperation,o.setTransform(1,0,0,1,0,0),o.drawImage(h,0,0),t.stashOutput){t.stashOutput=!1;let[e,i,s,n]=t.getCellCoverage(c.getImageData(0,0,h.width,h.height));if(t.stashedImageData=c.getImageData(e,i,s,n),t.stashOutputAsAsset)if(t.stashOutputAsAsset=!1,h.width=s,h.height=n,c.putImageData(t.stashedImageData,0,0),t.stashedImage)t.stashedImage.src=h.toDataURL();else{let e=t.stashedImage=document.createElement("img");e.id=t.name+"-image",e.onload=function(){es.appendChild(e),je("#"+e.id)},e.src=h.toDataURL()}}ni(l),o.restore(),t.currentHost=n,t.noCanvasEngineUpdates=m},n=t.currentHost,r=n.element,o=n.engine,a=n.currentDimensions,l=si(),h=l.element,c=l.engine;t.currentHost=l;let u,d,f=h.width=a[0]||r.width,p=h.height=a[1]||r.height,m=t.noCanvasEngineUpdates;t.noCanvasEngineUpdates=!1,t.regularStampSynchronousActions(),!t.noFilters&&t.filters&&t.filters.length?(t.isStencil&&(c.save(),c.globalCompositeOperation="source-in",c.globalAlpha=1,c.setTransform(1,0,0,1,0,0),c.drawImage(r,0,0),c.restore()),c.setTransform(1,0,0,1,0,0),d=c.getImageData(0,0,f,p),u=Pe(),t.preprocessFilters(t.currentFilters),we(u,{image:d,filters:t.currentFilters}).then(t=>{if(!t)throw new Error("image issue");c.globalCompositeOperation="source-over",c.globalAlpha=1,c.setTransform(1,0,0,1,0,0),c.putImageData(t,0,0),s(),e(!0)}).catch(t=>{s(),i(t)})):(s(),e(!0))})},t.getCellCoverage=function(t){let e,i,s=t.width,n=t.height,r=t.data,o=0,a=0,l=s,h=n,c=3;for(i=0;ie&&(l=e),oi&&(h=i),a=1)return.9999;let e=this.unitPositions;if(e&&e.length){let e,i,s,n,r,o,a,l=this.length,h=this.unitProgression,c=this.unitPositions,u=t*l,d=-1;for(let t=0,e=h.length;t=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},t.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0},t.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyDimensions&&(this.cleanSpecies(),this.pathCalculatedOnce=!1),this.calculateLocalPath(this.pathDefinition),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyHandle&&this.cleanHandle(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=this.currentStampHandlePosition;this.pathObject=new Path2D(`m${-t[0]},${-t[1]}${this.localPath}`)}},t.calculateLocalPath=function(t,e){let i;if(this.pathCalculatedOnce||(i=function(t,e,i,s,n){let r,o,a,l,h=[],c=[],u="",d="",f=[],p=[],m=[],g=t.match(/([A-Za-z][0-9. ,\-]*)/g),y=0,b={},k=0,S=0,O=0,P=0,v=[],w=[],A=[],x=[],C=0,D=0,R=t=>{c.push({c:u.toLowerCase(),p:t||null,x:O,y:P,cx:k,cy:S,rx:C,ry:D}),s||(v.push(k),w.push(S)),O=k,P=S};for(r=0,o=g.length;r0&&c[r-1],{c:s,p:n,x:o,y:a,cx:l,cy:h,rx:u,ry:d}=e;if(n)switch(s){case"h":f[r]=["linear",o,a,n[0]+o,a];break;case"v":f[r]=["linear",o,a,o,n[0]+a];break;case"m":f[r]=["move",o,a];break;case"l":f[r]=["linear",o,a,n[0]+o,n[1]+a];break;case"t":i&&(i.rx||i.ry)?(gs(t,i.rx-l,i.ry-h),ys(t,180),f[r]=["quadratic",o,a,t.x+l,t.y+h,n[0]+o,n[1]+a]):f[r]=["quadratic",o,a,o,a,n[0]+o,n[1]+a];break;case"q":f[r]=["quadratic",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"s":i&&(i.rx||i.ry)?(gs(t,i.rx-l,i.ry-h),ys(t,180),f[r]=["bezier",o,a,t.x+l,t.y+h,n[0]+o,n[1]+a,n[2]+o,n[3]+a]):f[r]=["bezier",o,a,o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a];break;case"c":f[r]=["bezier",o,a,n[0]+o,n[1]+a,n[2]+o,n[3]+a,n[4]+o,n[5]+a];break;case"a":f[r]=["linear",o,a,n[5]+o,n[6]+a];break;case"z":isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["close",o,a];break;default:isNaN(o)&&(o=0),isNaN(a)&&(a=0),f[r]=["unknown",o,a]}else f[r]=["no-points-"+s,o,a]}for(b.units=f,r=0,o=f.length;rt+e,0);let e=0;for(r=0,o=p.length;r{let e=i[t];e&&(e.currentPathData=!1,e.dirtyStart=!0,e.addPathHandle&&(e.dirtyHandle=!0),e.addPathOffset&&(e.dirtyOffset=!0),e.addPathRotation&&(e.dirtyRotation=!0),"Polyline"===e.type?e.dirtyPins=!0:"Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||e.dirtyPins.push(this.name))},this)},t.draw=function(t){t.stroke(this.pathObject),this.showBoundingBox&&this.drawBoundingBox(t)},t.fill=function(t){t.fill(this.pathObject,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),t.fill(e,this.winding),this.showBoundingBox&&this.drawBoundingBox(t)},t.fillThenDraw=function(t){let e=this.pathObject;t.fill(e,this.winding),t.stroke(e),this.showBoundingBox&&this.drawBoundingBox(t)},t.clear=function(t){let e=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fill(this.pathObject,this.winding),t.globalCompositeOperation=e,this.showBoundingBox&&this.drawBoundingBox(t)},t.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.strokeRect(...this.getBoundingBox()),t.restore()},t.getBoundingBox=function(){let t=Math.floor,e=Math.ceil,i=this.minimumBoundingBoxDimensions,[s,n,r,o]=this.localBox,[a,l]=this.currentStampHandlePosition,[h,c]=this.currentStampPosition;return r"string"!=typeof t?"":t.charAt(0).toUpperCase()+t.slice(1);function Ps(t={}){t.defs=_(t.defs,{end:null,endPivot:"",endPivotCorner:"",addEndPivotHandle:!1,addEndPivotOffset:!1,endPath:"",endPathPosition:0,addEndPathHandle:!1,addEndPathOffset:!0,endParticle:"",endLockTo:"",useStartAsControlPoint:!1}),t.packetExclusions=Q(t.packetExclusions,["controlledLineOffset"]),t.packetExclusionsByRegex=Q(t.packetExclusionsByRegex,[]),t.packetCoordinates=Q(t.packetCoordinates,["end"]),t.packetObjects=Q(t.packetObjects,["endPivot","endPath"]),t.packetFunctions=Q(t.packetFunctions,[]),t.factoryKill=function(){Object.entries(i).forEach(([t,e])=>{e.name!==this.name&&(e.startControlPivot&&e.startControlPivot.name===this.name&&e.set({startControlPivot:!1}),e.controlPivot&&e.controlPivot.name===this.name&&e.set({controlPivot:!1}),e.endControlPivot&&e.endControlPivot.name===this.name&&e.set({endControlPivot:!1}),e.endPivot&&e.endPivot.name===this.name&&e.set({endPivot:!1}),e.startControlPath&&e.startControlPath.name===this.name&&e.set({startControlPath:!1}),e.controlPath&&e.controlPath.name===this.name&&e.set({controlPath:!1}),e.endControlPath&&e.endControlPath.name===this.name&&e.set({endControlPath:!1}),e.endPath&&e.endPath.name===this.name&&e.set({endPath:!1}))})};t.getters;let e=t.setters,s=t.deltaSetters;return e.useStartAsControlPoint=function(t){if(this.useStartAsControlPoint=t,!t){let t=this.controlledLineOffset;t[0]=0,t[1]=0}this.updateDirty()},e.endPivot=function(t){this.setControlHelper(t,"endPivot","end"),this.updateDirty(),this.dirtyEnd=!0},e.endParticle=function(t){this.setControlHelper(t,"endParticle","end"),this.updateDirty(),this.dirtyEnd=!0},e.endPath=function(t){this.setControlHelper(t,"endPath","end"),this.updateDirty(),this.dirtyEnd=!0},e.endPathPosition=function(t){this.endPathPosition=t,this.dirtyEnd=!0,this.currentEndPathData=!1},s.endPathPosition=function(t){this.endPathPosition+=t,this.dirtyEnd=!0,this.currentEndPathData=!1},e.endX=function(t){null!=t&&(this.end[0]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},e.endY=function(t){null!=t&&(this.end[1]=t,this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1)},e.end=function(t,e){this.setCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endX=function(t){let e=this.end;e[0]=H(e[0],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.endY=function(t){let e=this.end;e[1]=H(e[1],t),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.updateDirty(),this.dirtyEnd=!0,this.currentEndPathData=!1},e.endLockTo=function(t){this.endLockTo=t,this.updateDirty(),this.dirtyEndLock=!0,this.currentEndPathData=!1},t.curveInit=function(t){this.end=Te(),this.currentEnd=Te(),this.endLockTo="coord",this.dirtyEnd=!0,this.dirtyPins=[],this.controlledLineOffset=Te()},t.setControlHelper=function(t,e,s){if(N(t)&&!t)this[e]=null,"startControl"===s?this.dirtyStartControlLock=!0:"control"===s?this.dirtyControlLock=!0:"endControl"===s?this.dirtyEndControlLock=!0:this.dirtyEndLock=!0;else if(t){let n=this[e],r=t.substring?i[t]:t;e.indexOf("Pivot")>0?r&&r.isArtefact&&(n&&n.isArtefact&&K(n.pivoted,this.name),Q(r.pivoted,this.name),this[e]=r):e.indexOf("Path")>0?r&&r.isArtefact&&(n&&n.isArtefact&&K(n.pathed,this.name),Q(r.pathed,this.name),this[e]=r):e.indexOf("Particle")>0&&(r=t.substring?d[t]:t,r||(this.updateDirty(),"startControl"===s?this.dirtyStartControl=!0:"control"===s?this.dirtyControl=!0:"endControl"===s?this.dirtyEndControl=!0:this.dirtyEnd=!0,this[e]=t))}},t.buildPathPositionObject=function(t,e){if(t){let i,s,[n,...r]=t;switch(n){case"linear":i=this.positionPointOnPath(this.getLinearXY(e,...r)),s=this.getLinearAngle(e,...r);break;case"quadratic":i=this.positionPointOnPath(this.getQuadraticXY(e,...r)),s=this.getQuadraticAngle(e,...r);break;case"bezier":i=this.positionPointOnPath(this.getBezierXY(e,...r)),s=this.getBezierAngle(e,...r)}let o=0;this.flipReverse&&o++,this.flipUpend&&o++,1===o&&(s=-s),s+=this.roll;this.currentStampPosition;let a=this.controlledLineOffset;this.localBox;return i.x+=a[0],i.y+=a[1],i.angle=s,i}return!1},t.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.dirtyPins.length&&this.preparePinsForStamp(),this.dirtyLock&&this.cleanLock(),this.dirtyStartControlLock&&this.cleanControlLock("startControl"),this.dirtyEndControlLock&&this.cleanControlLock("endControl"),this.dirtyControlLock&&this.cleanControlLock("control"),this.dirtyEndLock&&this.cleanControlLock("end"),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd||this.dirtyHandle)&&(this.dirtyPathObject=!0,this.useStartAsControlPoint&&this.dirtyStart&&(this.dirtySpecies=!0,this.pathCalculatedOnce=!1),(this.dirtyScale||this.dirtySpecies||this.dirtyStartControl||this.dirtyEndControl||this.dirtyControl||this.dirtyEnd)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.useStartAsControlPoint&&(this.dirtySpecies=!0,this.dirtyPathObject=!0,this.pathCalculatedOnce=!1)),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),(this.dirtyStartControl||"particle"===this.startControlLockTo)&&this.cleanControl("startControl"),(this.dirtyEndControl||"particle"===this.endControlLockTo)&&this.cleanControl("endControl"),(this.dirtyControl||"particle"===this.controlLockTo)&&this.cleanControl("control"),(this.dirtyEnd||"particle"===this.endLockTo)&&this.cleanControl("end"),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&(this.updatePositionSubscribers(),this.updateControlPathSubscribers())},t.cleanControlLock=function(t){let e=Os(t);this[`dirty${e}Lock`]=!1,this["dirty"+e]=!0},t.cleanControl=function(t){let e=Os(t);this["dirty"+e]=!1;let s,n,r=t+"Path",o=t+"Particle",a=this[t+"Pivot"],l=this[r],h=this[o];a&&a.substring&&(s=i[a],s&&(a=s)),l&&l.substring&&(s=i[l],s&&(l=s)),h&&h.substring&&(s=d[h],s&&(h=s));let c,u,f,p,m,g,y,b=this[t+"LockTo"],k=this[t],S=this["current"+e];switch(("pivot"!==b||a&&!a.substring)&&("path"!==b||l&&!l.substring)&&("particle"!==b||h&&!h.substring)||(b="coord"),b){case"pivot":this.pivotCorner&&a.getCornerCoordinate?[c,u]=a.getCornerCoordinate(this[t+"PivotCorner"]):[c,u]=a.currentStampPosition,this.addPivotOffset||([f,p]=a.currentOffset,c-=f,u-=p);break;case"path":n=this.getControlPathData(l,t,e),c=n.x,u=n.y,this.addPathOffset||(c-=l.currentOffset[0],u-=l.currentOffset[1]);break;case"particle":c=h.position.x,u=h.position.y,this.pathCalculatedOnce=!1;break;case"mouse":m=this.getHere(),c=m.x||0,u=m.y||0;break;default:c=u=0,g=this.getHost(),g&&(y=g.currentDimensions,y&&(this.cleanPosition(S,k,y),[c,u]=S))}S[0]=c,S[1]=u,this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPositionSubscribers=!0},t.getControlPathData=function(t,e,i){let s=this[`current${i}PathData`];if(s)return s;let n=this[e+"PathPosition"],r=n,o=t.getPathPositionData(n);if(n<0&&(n+=1),n>1&&(n%=1),n=parseFloat(n.toFixed(6)),n!==r&&(this[e+"PathPosition"]=n),o)return this[`current${i}PathData`]=o,o;{let t=this.getHost();if(t){let s=t.currentDimensions;if(s){let t=this["current"+i];return this.cleanPosition(t,this[e],s),{x:t[0],y:t[1]}}}return{x:0,y:0}}},t.updateControlPathSubscribers=function(){[].concat(this.endSubscriber,this.endControlSubscriber,this.controlSubscriber,this.startControlSubscriber).forEach(t=>{let e=i[t];e&&("Line"!==e.type&&"Quadratic"!==e.type&&"Bezier"!==e.type||("Quadratic"===e.type?(e.dirtyControl=!0,e.currentControlPathData=!1):"Bezier"===e.type&&(e.dirtyStartControl=!0,e.dirtyEndControl=!0,e.currentStartControlPathData=!1,e.currentEndControlPathData=!1),e.currentEndPathData=!1,e.dirtyEnd=!0),e.currentPathData=!1,e.dirtyStart=!0)})},t}const Bezier=function(t={}){return this.startControl=Te(),this.endControl=Te(),this.currentStartControl=Te(),this.currentEndControl=Te(),this.startControlLockTo="coord",this.endControlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyStartControl=!0,this.dirtyEndControl=!0,this};let vs=Bezier.prototype=Object.create(Object.prototype);vs.type="Bezier",vs.lib="entity",vs.isArtefact=!0,vs.isAsset=!1,vs=ee(vs),vs=Ss(vs),vs=Ps(vs);vs.defs=_(vs.defs,{startControl:null,startControlPivot:"",startControlPivotCorner:"",addStartControlPivotHandle:!1,addStartControlPivotOffset:!1,startControlPath:"",startControlPathPosition:0,addStartControlPathHandle:!1,addStartControlPathOffset:!0,startControlParticle:"",endControl:null,endControlPivot:"",endControlPivotCorner:"",addEndControlPivotHandle:!1,addEndControlPivotOffset:!1,endControlPath:"",endControlPathPosition:0,addEndControlPathHandle:!1,addEndControlPathOffset:!0,endControlParticle:"",startControlLockTo:"",endControlLockTo:""}),vs.packetExclusions=Q(vs.packetExclusions,[]),vs.packetExclusionsByRegex=Q(vs.packetExclusionsByRegex,[]),vs.packetCoordinates=Q(vs.packetCoordinates,["startControl","endControl"]),vs.packetObjects=Q(vs.packetObjects,["startControlPivot","startControlPath","endControlPivot","endControlPath"]),vs.packetFunctions=Q(vs.packetFunctions,[]);vs.getters;let ws=vs.setters,As=vs.deltaSetters;ws.endControlPivot=function(t){this.setControlHelper(t,"endControlPivot","endControl"),this.updateDirty(),this.dirtyEndControl=!0},ws.endControlParticle=function(t){this.setControlHelper(t,"endControlParticle","endControl"),this.updateDirty(),this.dirtyEndControl=!0},ws.endControlPath=function(t){this.setControlHelper(t,"endControlPath","endControl"),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},ws.endControlPathPosition=function(t){this.endControlPathPosition=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1},As.endControlPathPosition=function(t){this.endControlPathPosition+=t,this.dirtyEndControl=!0,this.currentEndControlPathData=!1},ws.startControlPivot=function(t){this.setControlHelper(t,"startControlPivot","startControl"),this.updateDirty(),this.dirtyStartControl=!0},ws.startControlParticle=function(t){this.setControlHelper(t,"startControlParticle","startControl"),this.updateDirty(),this.dirtyStartControl=!0},ws.startControlPath=function(t){this.setControlHelper(t,"startControlPath","startControl"),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},ws.startControlPathPosition=function(t){this.startControlPathPosition=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1},As.startControlPathPosition=function(t){this.startControlPathPosition+=t,this.dirtyStartControl=!0,this.currentStartControlPathData=!1},ws.startControlX=function(t){null!=t&&(this.startControl[0]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},ws.startControlY=function(t){null!=t&&(this.startControl[1]=t,this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1)},ws.startControl=function(t,e){this.setCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},As.startControlX=function(t){let e=this.startControl;e[0]=H(e[0],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},As.startControlY=function(t){let e=this.startControl;e[1]=H(e[1],t),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},As.startControl=function(t,e){this.setDeltaCoordinateHelper("startControl",t,e),this.updateDirty(),this.dirtyStartControl=!0,this.currentStartControlPathData=!1},ws.endControlX=function(t){null!=t&&(this.endControl[0]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},ws.endControlY=function(t){null!=t&&(this.endControl[1]=t,this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1)},ws.endControl=function(t,e){this.setCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},As.endControlX=function(t){let e=this.endControl;e[0]=H(e[0],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},As.endControlY=function(t){let e=this.endControl;e[1]=H(e[1],t),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},As.endControl=function(t,e){this.setDeltaCoordinateHelper("endControl",t,e),this.updateDirty(),this.dirtyEndControl=!0,this.currentEndControlPathData=!1},ws.startControlLockTo=function(t){this.startControlLockTo=t,this.updateDirty(),this.dirtyStartControlLock=!0},ws.endControlLockTo=function(t){this.endControlLockTo=t,this.updateDirty(),this.dirtyEndControlLock=!0,this.currentEndControlPathData=!1},vs.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeBezierPath(),this.pathDefinition=t},vs.makeBezierPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentStartControl,[n,r]=this.currentEndControl,[o,a]=this.currentEnd;return`m0,0c${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)} ${(o-t).toFixed(2)},${(a-e).toFixed(2)}`},vs.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyStartControl=!0,this.dirtyEndControl=!0,this.dirtyEnd=!0},vs.preparePinsForStamp=function(){let t=this.endPivot,e=this.endPath,i=this.startControlPivot,s=this.startControlPath,n=this.endControlPivot,r=this.endControlPath;this.dirtyPins.forEach(o=>{(i&&i.name===o||s&&s.name===o)&&(this.dirtyStartControl=!0,this.startControlLockTo.includes("path")&&(this.currentStartControlPathData=!1)),(n&&n.name===o||r&&r.name===o)&&(this.dirtyEndControl=!0,this.endControlLockTo.includes("path")&&(this.currentEndControlPathData=!1)),(t&&t.name===o||e&&e.name===o)&&(this.dirtyEnd=!0,this.endLockTo.includes("path")&&(this.currentEndPathData=!1))}),this.dirtyPins.length=0};O.Bezier=Bezier;const Cog=function(t={}){return this.shapeInit(t),this};let xs=Cog.prototype=Object.create(Object.prototype);xs.type="Cog",xs.lib="entity",xs.isArtefact=!0,xs.isAsset=!1,xs=ee(xs),xs=Ss(xs);xs.defs=_(xs.defs,{outerRadius:0,innerRadius:0,outerControlsDistance:0,innerControlsDistance:0,outerControlsOffset:0,innerControlsOffset:0,points:0,twist:0,curve:"bezier"});let Cs=xs.setters,Ds=xs.deltaSetters;Cs.outerRadius=function(t){this.outerRadius=t,this.updateDirty()},Ds.outerRadius=function(t){this.outerRadius+=t,this.updateDirty()},Cs.innerRadius=function(t){this.innerRadius=t,this.updateDirty()},Ds.innerRadius=function(t){this.innerRadius+=t,this.updateDirty()},Cs.outerControlsDistance=function(t){this.outerControlsDistance=t,this.updateDirty()},Ds.outerControlsDistance=function(t){this.outerControlsDistance+=t,this.updateDirty()},Cs.innerControlsDistance=function(t){this.innerControlsDistance=t,this.updateDirty()},Ds.innerControlsDistance=function(t){this.innerControlsDistance+=t,this.updateDirty()},Cs.outerControlsOffset=function(t){this.outerControlsOffset=t,this.updateDirty()},Ds.outerControlsOffset=function(t){this.outerControlsOffset+=t,this.updateDirty()},Cs.innerControlsOffset=function(t){this.innerControlsOffset=t,this.updateDirty()},Ds.innerControlsOffset=function(t){this.innerControlsOffset+=t,this.updateDirty()},Cs.points=function(t){this.points=t,this.updateDirty()},Ds.points=function(t){this.points+=t,this.updateDirty()},Cs.twist=function(t){this.twist=t,this.updateDirty()},Ds.twist=function(t){this.twist+=t,this.updateDirty()},Cs.curve=function(t){t&&["line","quadratic","bezier"].indexOf(t)>=0?(this.curve=t,this.updateDirty()):(this.curve="bezier",this.updateDirty())},xs.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeCogPath(),this.pathDefinition=t},xs.makeCogPath=function(){let t,e,i,s,n,r,o,{points:a,twist:l,outerRadius:h,innerRadius:c,outerControlsDistance:u,innerControlsDistance:d,outerControlsOffset:f,innerControlsOffset:p,curve:m}=this,g=360/a,y=[],b="";if(h.substring||c.substring||u.substring||d.substring||f.substring||p.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*e:c,u=u.substring?parseFloat(u)/100*e:u,d=d.substring?parseFloat(d)/100*e:d,f=f.substring?parseFloat(f)/100*e:f,p=p.substring?parseFloat(p)/100*e:p}}let k=di({x:0,y:-h}),S=di({x:0,y:-c}),O=di({x:u+f,y:-h}),P=di({x:-d+p,y:-c}),v=di({x:d+p,y:-c}),w=di({x:-u+f,y:-h});if(P.rotate(-g/2),P.rotate(l),S.rotate(-g/2),S.rotate(l),v.rotate(-g/2),v.rotate(l),t=k.x,e=k.y,y.push(t),"bezier"==m)for(o=0;o{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;U(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),U(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}}),this.deregister(),this},Rs.get=function(t){if(J(t)){if("random"===t)return this.generateRandomColor(),this.get();if(t.toFixed)return this.getRangeColor(t);{let e=this.getters[t];if(e)return e.call(this);{let e=this.defs[t];if(void 0!==e){let i=this[t];return void 0!==i?i:e}return undef}}}{let{r:t,g:e,b:i,a:s}=this;return this.opaque?`rgb(${t}, ${e}, ${i})`:`rgba(${t}, ${e}, ${i}, ${s})`}},Rs.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs;Object.entries(t).forEach(([t,n])=>{"name"!==t&&(e=i[t],e?e.call(this,n):void 0!==s[t]&&(this[t]=n))},this)}return t.random?this.generateRandomColor(t):this.checkValues(),this};let Es=Rs.setters;Es.color=function(t){this.convert(t)},Rs.setColor=function(t){return this.convert(t),this},Es.minimumColor=function(t){let{r:e,g:i,b:s,a:n}=this;this.convert(t),this.rMin=this.r,this.gMin=this.g,this.bMin=this.b,this.aMin=this.a,this.r=e,this.g=i,this.b=s,this.a=n},Rs.setMinimumColor=function(t){let{r:e,g:i,b:s,a:n}=this;return this.convert(t),this.rMin=this.r,this.gMin=this.g,this.bMin=this.b,this.aMin=this.a,this.r=e,this.g=i,this.b=s,this.a=n,this},Es.maximumColor=function(t){let{r:e,g:i,b:s,a:n}=this;this.convert(t),this.rMax=this.r,this.gMax=this.g,this.bMax=this.b,this.aMax=this.a,this.r=e,this.g=i,this.b=s,this.a=n},Rs.setMaximumColor=function(t){let{r:e,g:i,b:s,a:n}=this;return this.convert(t),this.rMax=this.r,this.gMax=this.g,this.bMax=this.b,this.aMax=this.a,this.r=e,this.g=i,this.b=s,this.a=n,this},Rs.getData=function(){return this.autoUpdate&&this.update(),this.checkValues(),this.get()},Rs.generateRandomColor=function(t={}){let e=Math.round,i=Math.random,s=this.rMax=et(t.rMax,this.rMax,255),n=this.gMax=et(t.gMax,this.gMax,255),r=this.bMax=et(t.bMax,this.bMax,255),o=this.rMin=et(t.rMin,this.rMin,0),a=this.gMin=et(t.gMin,this.gMin,0),l=this.bMin=et(t.bMin,this.bMin,0);return this.r=t.r||e(i()*(s-o)+o),this.g=t.g||e(i()*(n-a)+a),this.b=t.b||e(i()*(r-l)+l),this.opaque||(aMax=this.aMax=et(t.aMax,this.aMax,1),aMin=this.aMin=et(t.aMin,this.aMin,0),this.a=t.a||i()*(aMax-aMin)+aMin),this.checkValues(),this},Rs.getRangeColor=function(t){if(J(t)&&t.toFixed){let e=Math.floor,{rMin:i,gMin:s,bMin:n,aMin:r,rMax:o,gMax:a,bMax:l,aMax:h,easing:c}=this;if("linear"!==c)switch(c){case"easeOutSine":t=rt(t);break;case"easeInSine":t=ot(t);break;case"easeOutInSine":t=at(t);break;case"easeOutQuad":t=lt(t);break;case"easeInQuad":t=ht(t);break;case"easeOutInQuad":t=ct(t);break;case"easeOutCubic":t=ut(t);break;case"easeInCubic":t=dt(t);break;case"easeOutInCubic":t=ft(t);break;case"easeOutQuart":t=pt(t);break;case"easeInQuart":t=mt(t);break;case"easeOutInQuart":t=gt(t);break;case"easeOutQuint":t=yt(t);break;case"easeInQuint":t=bt(t);break;case"easeOutInQuint":t=kt(t);break;case"easeOutExpo":t=St(t);break;case"easeInExpo":t=Ot(t);break;case"easeOutInExpo":t=Pt(t);break;case"easeOutCirc":t=vt(t);break;case"easeInCirc":t=wt(t);break;case"easeOutInCirc":t=At(t);break;case"easeOutBack":t=Ct(t);break;case"easeInBack":t=Dt(t);break;case"easeOutInBack":t=Rt(t);break;case"easeOutElastic":t=Et(t);break;case"easeInElastic":t=Ft(t);break;case"easeOutInElastic":t=Tt(t);break;case"easeOutBounce":t=Ht(t);break;case"easeInBounce":t=Mt(t);break;case"easeOutInBounce":t=It(t)}t>1?t=1:t<0&&(t=0),isNaN(t)&&(t=1);let u=e(i+(o-i)*t),d=e(s+(a-s)*t),f=e(n+(l-n)*t),p=e(r+(h-r)*t);return this.opaque?`rgb(${u}, ${d}, ${f})`:`rgba(${u}, ${d}, ${f}, ${p})`}{let{r:t,g:e,b:i,a:s}=this;return this.opaque?`rgb(${t}, ${e}, ${i})`:`rgba(${t}, ${e}, ${i}, ${s})`}},Rs.checkValues=function(){let t=Math.floor,e=t(this.r)||0,i=t(this.g)||0,s=t(this.b)||0,n=this.a;return this.r=e>255?255:e<0?0:e,this.g=i>255?255:i<0?0:i,this.b=s>255?255:s<0?0:s,this.a=n>1?1:n<0?0:n,this},Rs.updateArray=["r","g","b","a"],Rs.update=function(){J(this.rCurrent)||(this.rCurrent=this.r),J(this.gCurrent)||(this.gCurrent=this.g),J(this.bCurrent)||(this.bCurrent=this.b),J(this.aCurrent)||(this.aCurrent=this.a);let t=this.updateArray;return(this.rShift||this.gShift||this.bShift||this.aShift)&&t.forEach(t=>{let e=this[t+"Shift"];if(e){this[t+"Current"]+=e;let i=this[t],s=this[t+"Min"],n=this[t+"Max"],r=this[t+"Bounce"],o=this[t+"Current"],a=Math.floor(o+e);(a>n||a(n+s)/2?n:s,e=0)),this[t]=a,this[t+"Shift"]=e}},this),this},Rs.updateByDelta=Rs.update,Rs.convert=function(t){let e,i,s,n,r,o=Math.round;return(t=t.substring?t:"").length&&(t.toLowerCase(),e=0,i=0,s=0,n=1,"#"===t[0]?4==t.length?(e=parseInt(t[1]+t[1],16),i=parseInt(t[2]+t[2],16),s=parseInt(t[3]+t[3],16)):5==t.length?(e=parseInt(t[1]+t[1],16),i=parseInt(t[2]+t[2],16),s=parseInt(t[3]+t[3],16),n=parseInt(t[4]+t[4],16)/255):7==t.length?(e=parseInt(t[1]+t[2],16),i=parseInt(t[3]+t[4],16),s=parseInt(t[5]+t[6],16)):9==t.length&&(e=parseInt(t[1]+t[2],16),i=parseInt(t[3]+t[4],16),s=parseInt(t[5]+t[6],16),n=parseInt(t[7]+t[8],16)/255):/rgb\(/.test(t)?(r=t.match(/([0-9.]+\b)/g),/%/.test(t)?(e=o(parseFloat(r[0])/100*255),i=o(parseFloat(r[1])/100*255),s=o(parseFloat(r[2])/100*255)):(e=o(parseFloat(r[0])),i=o(parseFloat(r[1])),s=o(parseFloat(r[2])))):/rgba\(/.test(t)?(r=t.match(/([0-9.]+\b)/g),/%/.test(t)?(e=o(parseFloat(r[0])/100*255),i=o(parseFloat(r[1])/100*255),s=o(parseFloat(r[2])/100*255),n=parseFloat(r[3])/100):(e=o(parseFloat(r[0])),i=o(parseFloat(r[1])),s=o(parseFloat(r[2])),n=r[3])):/hsl\(/.test(t)||/hsla\(/.test(t)?(r=t.match(/([0-9.]+\b)/g),this.setFromHSL(parseFloat(r[0]),parseFloat(r[1]),parseFloat(r[2]),parseFloat(r[3]))):"transparent"===t?(e=0,i=0,s=0,n=0):(r=this.colorLibrary[t],r&&(e=parseInt(r[0]+r[1],16),i=parseInt(r[2]+r[3],16),s=parseInt(r[4]+r[5],16),n=1)),this.r=e,this.g=i,this.b=s,this.a=n,this.checkValues()),this},Rs.getHSLfromRGB=function(t,e,i){let s=Math.min(t,e,i),n=Math.max(t,e,i),r=(s+n)/2,o=0;s!==n&&(o=r<=.5?(n-s)/(n+s):(n-s)/(2-n-s));let a=0;return a=n===t?(e-i)/(n-s):n===e?2+(i-t)/(n-s):4+(t-e)/(n-s),a*=60,a<0&&(a+=360),[a,o,r]},Rs.getHSL=function(){let{r:t,g:e,b:i}=this,s=Math.min(t,e,i),n=Math.max(t,e,i),r=(s+n)/2,o=0;s!==n&&(o=r<=.5?(n-s)/(n+s):(n-s)/(2-n-s));let a=0;return a=n===t?(e-i)/(n-s):n===e?2+(i-t)/(n-s):4+(t-e)/(n-s),a*=60,a<0&&(a+=360),[a,o,r]},Rs.getRGBfromHSL=function(t,e,i,s){if(!e){let t=Math.floor(255*i);return[t,t,t]}let n=i<.5?i*(e+1):i+e-i*e,r=2*i-n;const o=function(t,e,i){return 6*t<1?i+6*(e-i)*t:2*t<1?e:2*t<2?i+6*(e-i)*(.666*t):i};let a=(t/=360)+.333,l=t,h=t-.333;a<0&&(a+=1),a>1&&(a-=1),l<0&&(l+=1),l>1&&(l-=1),h<0&&(h+=1),h>1&&(h-=1);let c=255*o(a,n,r),u=255*o(l,n,r),d=255*o(h,n,r);return null==s?[c,u,d]:[c,u,d,255*s]},Rs.setFromHSL=function(t,e,i,s){if(!e){let t=Math.floor(255*i);return[t,t,t]}let n=i<.5?i*(e+1):i+e-i*e,r=2*i-n;const o=function(t,e,i){return 6*t<1?i+6*(e-i)*t:2*t<1?e:2*t<2?i+6*(e-i)*(.666*t):i};let a=(t/=360)+.333,l=t,h=t-.333;a<0&&(a+=1),a>1&&(a-=1),l<0&&(l+=1),l>1&&(l-=1),h<0&&(h+=1),h>1&&(h-=1),this.r=255*o(a,n,r),this.g=255*o(l,n,r),this.b=255*o(h,n,r),null!=s&&(this.a=255*s)},Rs.colorLibrary={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffe4c4",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"778899",lightslategrey:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};const Fs=function(t){return new Color(t)};O.Color=Color;const ParticleHistory=function(t){let e=[];return Object.setPrototypeOf(e,ParticleHistory.prototype),t&&e.set(t),e};let Ts=ParticleHistory.prototype=Object.create(Array.prototype);Ts.constructor=ParticleHistory,Ts.type="ParticleHistory";const Hs=[],Ms=function(t){t&&"ParticleHistory"===t.type&&(t.length=0,Hs.push(t),Hs.length>100&&(Hs.length=0))};O.ParticleHistory=ParticleHistory;const Particle=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.initializePositions(),this.set(t),this};let Is=Particle.prototype=Object.create(Object.prototype);Is.type="Particle",Is.lib="particle",Is.isArtefact=!1,Is.isAsset=!1,Is=ee(Is);Is.defs=_(Is.defs,{position:null,velocity:null,load:null,history:null,historyLength:1,engine:"euler",forces:null,mass:1,fill:"#000000",stroke:"#000000"}),Is.packetExclusions=Q(Is.packetExclusions,[]),Is.packetExclusionsByRegex=Q(Is.packetExclusionsByRegex,["^(local|dirty|current)"]),Is.packetCoordinates=Q(Is.packetCoordinates,[]),Is.packetObjects=Q(Is.packetObjects,["position","velocity","acceleration"]),Is.packetFunctions=Q(Is.packetFunctions,[]),Is.factoryKill=function(){this.history.forEach(t=>Ms(t));let t=[];m.forEach(e=>{let i=p[e];(i.particleFrom&&i.particleFrom.name===this.name||i.particleTo&&i.particleTo.name===this.name)&&t.push[i]}),t.forEach(t=>t.kill())};let Bs=Is.getters,Ls=Is.setters,$s=Is.deltaSetters;Bs.positionX=function(){return this.position.x},Bs.positionY=function(){return this.position.y},Bs.positionZ=function(){return this.position.z},Bs.position=function(){let t=this.position;return[t.x,t.y,t.z]},Ls.positionX=function(t){this.position.x=t},Ls.positionY=function(t){this.position.y=t},Ls.positionZ=function(t){this.position.z=t},Ls.position=function(t){this.position.set(t)},$s.positionX=function(t){this.position.x+=t},$s.positionY=function(t){this.position.y+=t},$s.positionZ=function(t){this.position.z+=t},$s.position=B,Bs.velocityX=function(){return this.velocity.x},Bs.velocityY=function(){return this.velocity.y},Bs.velocityZ=function(){return this.velocity.z},Bs.velocity=function(){let t=this.velocity;return[t.x,t.y,t.z]},Ls.velocityX=function(t){this.velocity.x=t},Ls.velocityY=function(t){this.velocity.y=t},Ls.velocityZ=function(t){this.velocity.z=t},Ls.velocity=function(t,e,i){this.velocity.set(t,e,i)},$s.velocityX=function(t){this.velocity.x+=t},$s.velocityY=function(t){this.velocity.y+=t},$s.velocityZ=function(t){this.velocity.z+=t},$s.velocity=B,Ls.forces=function(t){t&&(Array.isArray(t)?(this.forces.length=0,this.forces=this.forces.concat(t)):this.forces.push(t))},Ls.load=B,Ls.history=B,$s.load=B,Is.initializePositions=function(){this.initialPosition=pi(),this.position=pi(),this.velocity=pi(),this.load=pi(),this.forces=[],this.history=[],this.isRunning=!1},Is.applyForces=function(t,e){this.load.zero(),this.isBeingDragged||this.forces.forEach(i=>{let s=f[i];s&&s.action&&s.action(this,t,e)})},Is.update=function(t,e){this.isBeingDragged?this.position.setFromVector(this.isBeingDragged).vectorAdd(this.dragOffset):zs[this.engine].call(this,t*e.tickMultiplier)},Is.manageHistory=function(t,e){let{history:i,remainingTime:s,position:n,historyLength:r,hasLifetime:o,distanceLimit:a,initialPosition:l,killBeyondCanvas:h}=this,c=!0,u=0;if(o)if(u=s-t,u<=0){let t=i.pop();Ms(t),c=!1,i.length||(this.isRunning=!1)}else this.remainingTime=u;let d=i[i.length-1];if(d){let[t,i,s,n]=d;if(h){let t=e.element.width,i=e.element.height;(s<0||n<0||s>t||n>i)&&(c=!1,this.isRunning=!1)}if(a){let t=di(l);t.vectorSubtractArray([s,n,i]),t.getMagnitude()>a&&(c=!1,this.isRunning=!1),fi(t)}}if(c){let{x:t,y:e,z:s}=n,o=(Hs.length||Hs.push(new ParticleHistory),Hs.shift());if(o.push(u,s,t,e),i.unshift(o),i.length>r){i.splice(r).forEach(t=>Ms(t))}}},Is.run=function(t,e,i){this.hasLifetime=!1,t&&(this.remainingTime=t,this.hasLifetime=!0),this.distanceLimit=0,e&&(this.initialPosition.set(this.position),this.distanceLimit=e),this.killBeyondCanvas=i,this.isRunning=!0};const js=function(t){return new Particle(t)};O.Particle=Particle;const Xs=[],Ys=function(t){Xs.length||Xs.push(new Particle);let e=Xs.shift();return e.set(t),e},Ns=function(t){if(t&&"Particle"===t.type&&(t.history.forEach(t=>Ms(t)),t.history.length=0,t.set(t.defs),Xs.push(t),Xs.length>50)){let t=[].concat(Xs);Xs.length=0,t.forEach(t=>t.kill())}},zs={euler:function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=di(),o=di(i);r.setFromVector(s).scalarDivide(n),o.vectorAdd(r.scalarMultiply(t)),i.setFromVector(o),e.vectorAdd(o.scalarMultiply(t)),fi(r)},"improved-euler":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=di(),o=di(),a=di(),l=di(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t),a.setFromVector(r).vectorAdd(o).scalarDivide(2),l.vectorAdd(a),i.setFromVector(l),e.vectorAdd(l.scalarMultiply(t)),fi(r)},"runge-kutta":function(t){let{position:e,velocity:i,load:s,mass:n}=this,r=di(),o=di(),a=di(),l=di(),h=di(),c=di(i);r.setFromVector(s).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.setFromVector(s).vectorAdd(r).scalarDivide(n).scalarMultiply(t).scalarDivide(2),a.setFromVector(s).vectorAdd(o).scalarDivide(n).scalarMultiply(t).scalarDivide(2),l.setFromVector(s).vectorAdd(a).scalarDivide(n).scalarMultiply(t).scalarDivide(2),o.scalarMultiply(2),a.scalarMultiply(2),h.setFromVector(r).vectorAdd(o).vectorAdd(a).vectorAdd(l).scalarDivide(6),c.vectorAdd(h),i.setFromVector(c),e.vectorAdd(c.scalarMultiply(t)),fi(r)}},Emitter=function(t={}){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.fillColorFactory=Fs({name:this.name+"-fillColorFactory"}),this.strokeColorFactory=Fs({name:this.name+"-strokeColorFactory"}),this.range=pi(),this.rangeFrom=pi(),this.preAction=B,this.stampAction=B,this.postAction=B,this.particleStore=[],this.deadParticles=[],this.liveParticles=[],t.group||(t.group=zi),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Gs=Emitter.prototype=Object.create(Object.prototype);Gs.type="Emitter",Gs.lib="entity",Gs.isArtefact=!0,Gs.isAsset=!1,Gs=ee(Gs),Gs=fs(Gs);Gs.defs=_(Gs.defs,{world:null,artefact:null,range:null,rangeFrom:null,generationRate:0,particleCount:0,generateAlongPath:!1,generateInArea:!1,generateFromExistingParticles:!1,generateFromExistingParticleHistories:!1,limitDirectionToAngleMultiples:0,generationChoke:15,killAfterTime:0,killAfterTimeVariation:0,killRadius:0,killRadiusVariation:0,killBeyondCanvas:!1,historyLength:1,forces:null,mass:1,massVariation:0,engine:"euler",hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),Gs.packetExclusions=Q(Gs.packetExclusions,["forces","particleStore","deadParticles","liveParticles","fillColorFactory","strokeColorFactory"]),Gs.packetExclusionsByRegex=Q(Gs.packetExclusionsByRegex,[]),Gs.packetCoordinates=Q(Gs.packetCoordinates,[]),Gs.packetObjects=Q(Gs.packetObjects,["world","artefact","generateInArea","generateAlongPath"]),Gs.packetFunctions=Q(Gs.packetFunctions,["preAction","stampAction","postAction"]),Gs.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach(t=>{t.substring?e.push(t):U(t)&&t.name&&e.push(t.name)}),t.forces=e}let s=[];return this.particleStore.forEach(t=>s.push(t.saveAsPacket())),t.particleStore=s,t},Gs.postCloneAction=function(t,e){return t},Gs.factoryKill=function(t,e){this.isRunning=!1,t&&this.artefact.kill(),e&&this.world.kill(),this.fillColorFactory.kill(),this.strokeColorFactory.kill(),this.deadParticles.forEach(t=>t.kill()),this.liveParticles.forEach(t=>t.kill()),this.particleStore.forEach(t=>t.kill())};Gs.getters;let Ws=Gs.setters,Vs=Gs.deltaSetters;Ws.rangeX=function(t){this.range.x=t},Ws.rangeY=function(t){this.range.y=t},Ws.rangeZ=function(t){this.range.z=t},Ws.range=function(t){this.range.set(t)},Ws.rangeFromX=function(t){this.rangeFrom.x=t},Ws.rangeFromY=function(t){this.rangeFrom.y=t},Ws.rangeFromZ=function(t){this.rangeFrom.z=t},Ws.rangeFrom=function(t){this.rangeFrom.set(t)},Ws.preAction=function(t){W(t)&&(this.preAction=t)},Ws.stampAction=function(t){W(t)&&(this.stampAction=t)},Ws.postAction=function(t){W(t)&&(this.postAction=t)},Ws.world=function(t){let e;t.substring?e=g[t]:U(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},Ws.artefact=function(t){let e;t.substring?e=i[t]:U(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e)},Ws.generateAlongPath=function(t){let e;t.substring?e=i[t]:U(t)&&t.isArtefact&&(e=t),e&&e.useAsPath?this.generateAlongPath=e:this.generateAlongPath=!1},Ws.generateInArea=function(t){let e;t.substring?e=i[t]:U(t)&&t.isArtefact&&(e=t),this.generateInArea=e||!1},Ws.fillColor=function(t){this.fillColorFactory.set({color:t})},Ws.fillMinimumColor=function(t){this.fillColorFactory.set({minimumColor:t})},Ws.fillMaximumColor=function(t){this.fillColorFactory.set({maximumColor:t})},Ws.strokeColor=function(t){this.strokeColorFactory.set({color:t})},Ws.strokeMinimumColor=function(t){this.strokeColorFactory.set({minimumColor:t})},Ws.strokeMaximumColor=function(t){this.strokeColorFactory.set({maximumColor:t})},Ws.hitRadius=function(t){t.toFixed&&(this.hitRadius=t,this.width=this.height=2*t)},Vs.hitRadius=function(t){t.toFixed&&(this.hitRadius+=t,this.width=this.height=2*this.hitRadius)},Ws.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},Vs.width=function(t){t.toFixed&&(this.hitRadius=t/2,this.width=this.height=t)},Ws.height=Ws.width,Vs.height=Vs.width,Gs.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1,this.dirtyDimensions=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions();let t=Date.now(),{particleStore:e,deadParticles:i,liveParticles:s,particleCount:n,generationRate:r,generatorChoke:o,resetAfterBlur:a}=this;o||(this.generatorChoke=o=t),e.forEach(t=>{t.isRunning?s.push(t):i.push(t)}),e.length=0,i.forEach(t=>Ns(t)),i.length=0,e.push(...s),s.length=0;let l=t-o;if(l/1e3>a&&(l=0,this.generatorChoke=t),l>0&&r){let i=Math.floor(r/1e3*l);if(n){let t=n-e.length;t<=0?i=0:tD.isPointInPath(E,...t,$);x.rotateDestination(D,o,a,C);t:for(n=0;n1?([l,g,...y]=a[Math.floor(Math.random()*a.length)],y?C.setFromArray(y):C.setFromVector(o.position)):C.setFromVector(o.position)):C.setFromArray(b),r=Ys(),r.set({positionX:C.x,positionY:C.y,positionZ:C.z,historyLength:h,engine:c,forces:u,mass:i(d,f),fill:p.get("random"),stroke:m.get("random")}),E?(C.zero(),e=Math.floor(360/E),C.x=s(I,T),C.rotate(Math.floor(Math.random()*e)*E),r.set({velocityX:C.x,velocityY:C.y,velocityZ:s(L,M)})):r.set({velocityX:s(I,T),velocityY:s(B,H),velocityZ:s(L,M)}),fi(C),r.velocity.rotate(A);let t=Math.abs(i(S,O)),n=Math.abs(i(P,v));r.run(t,n,w),k.push(r)}}else if(D){let e,o,a=k.length,l=di();for(n=0;na&&(i.forEach(t=>Ns(t)),i.length=0,f=.016),i.forEach(e=>e.applyForces(t,d)),i.forEach(e=>e.update(f,t)),s.call(this,d),i.forEach(t=>{t.manageHistory(f,d),n.call(this,e,t,d)}),r.call(this,d),l){let t=d.engine;t.save(),t.lineWidth=1,t.strokeStyle=c,t.setTransform(1,0,0,1,0,0),t.beginPath(),t.arc(u[0],u[1],h,0,2*Math.PI),t.stroke(),t.restore()}this.lastUpdated=p},Gs.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;let i,s,n=Array.isArray(t)?t:[t],r=this.currentStampPosition,o=!1;if(n.some(t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!tt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=di(r).vectorSubtract(t);return e.getMagnitude(){let{mass:s,load:n}=t,r=di();r.setFromVector(e.gravity).scalarMultiply(s),n.vectorAdd(r),fi(r)}});const Palette=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.colors=t.colors||{"0 ":[0,0,0,1],"999 ":[255,255,255,1]},this.stops=Array(1e3),this.set(t),this.dirtyPalette=!0,this};let _s=Palette.prototype=Object.create(Object.prototype);_s.type="Palette",_s.lib="palette",_s.isArtefact=!1,_s.isAsset=!1,_s=ee(_s);_s.defs=_(_s.defs,{colors:null,stops:null,cyclic:!1}),_s.packetExclusions=Q(_s.packetExclusions,["stops"]);_s.getters;let Zs=_s.setters;Zs.colors=function(t){if(U(t)){let e=this.factory;Object.entries(t).forEach(([i,s])=>{s.substring&&(e.convert(s),t[i]=[e.r,e.g,e.b,e.a])}),this.colors=t,this.dirtyPalette=!0}},Zs.stops=B,_s.recalculateHold=[],_s.recalculate=function(){let t,e,i,s,n,r,o,a,l,h,c,u,d,f,p,m=this.colors,g=this.stops,y=this.makeColorString,b=this.recalculateHold;for(t=Object.keys(m),t=t.map(t=>parseInt(t,10)),t.sort((t,e)=>t-e),g.fill("rgba(0,0,0,0)"),this.dirtyPalette=!1,e=0,i=t.length-1;e999&&(r-=1e3);else{if(r=t[0],r>0)for(c=g[r],e=0,i=r;et=(t=ti?i:t;return e=o(r(t[0]),0,255),i=o(r(t[1]),0,255),s=o(r(t[2]),0,255),n=o(t[3],0,1),`rgba(${e},${i},${s},${n})`},_s.updateColor=function(t,e){let i=this.factory;tt(t,e)&&(t=t.substring?parseInt(t,10):Math.floor(t))>=0&&t<=999&&(i.convert(e),t+=" ",this.colors[t]=[i.r,i.g,i.b,i.a],this.dirtyPalette=!0)},_s.removeColor=function(t){J(t)&&(t=t.substring?parseInt(t,10):Math.floor(t))>=0&&t<=999&&(t+=" ",delete this.colors[t],this.dirtyPalette=!0)},_s.addStopsToGradient=function(t,e,i,s){let n,r,o,a,l,h,c=this.stops,u=Object.keys(this.colors);if(t){if(u=u.map(t=>parseInt(t,10)),u.sort((t,e)=>t-e),tt(e,i)||(e=0,i=999),e===i)return c[e]||"rgba(0,0,0,0)";if(ee&&l0&&r<1&&t.addColorStop(r,c[l]));else if(s)for(t.addColorStop(0,c[e]),t.addColorStop(1,c[i]),h=999-e,n=h+i,o=0,a=u.length;oe)r=(l-e)/n;else{if(!(l0&&r<1&&t.addColorStop(r,c[l])}else for(t.addColorStop(0,c[e]),t.addColorStop(1,c[i]),n=e-i,o=0,a=u.length;oi&&(r=1-(l-i)/n,r>0&&r<1&&t.addColorStop(r,c[l]));return t}return"rgba(0,0,0,0)"},_s.factory=Fs({name:"palette-factory-color-calculator",opaque:!1});function Qs(t={}){t.defs=_(t.defs,{start:null,end:null,palette:null,paletteStart:0,paletteEnd:999,cyclePalette:!1}),t.finalizePacketOut=function(t,e){return e.colors?t.colors=e.colors:this.palette&&this.palette.colors?t.colors=this.palette.colors:t.colors={"0 ":[0,0,0,1],"999 ":[255,255,255,1]},t},t.kill=function(){let t=this.name;return this.palette&&this.palette.kill&&this.palette.kill(),Object.entries(h).forEach(([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;U(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),U(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}}),this.deregister(),this};let e=t.getters,i=t.setters,s=t.deltaSetters;return e.startX=function(){return this.currentStart[0]},e.startY=function(){return this.currentStart[1]},i.startX=function(t){null!=t&&(this.start[0]=t,this.dirtyStart=!0)},i.startY=function(t){null!=t&&(this.start[1]=t,this.dirtyStart=!0)},i.start=function(t,e){this.setCoordinateHelper("start",t,e),this.dirtyStart=!0},s.startX=function(t){let e=this.start;e[0]=H(e[0],t),this.dirtyStart=!0},s.startY=function(t){let e=this.start;e[1]=H(e[1],t),this.dirtyStart=!0},s.start=function(t,e){this.setDeltaCoordinateHelper("start",t,e),this.dirtyStart=!0},e.endX=function(){return this.currentEnd[0]},e.endY=function(){return this.currentEnd[1]},i.endX=function(t){null!=t&&(this.end[0]=t,this.dirtyEnd=!0)},i.endY=function(t){null!=t&&(this.end[1]=t,this.dirtyEnd=!0)},i.end=function(t,e){this.setCoordinateHelper("end",t,e),this.dirtyEnd=!0},s.endX=function(t){let e=this.end;e[0]=H(e[0],t),this.dirtyEnd=!0},s.endY=function(t){let e=this.end;e[1]=H(e[1],t),this.dirtyEnd=!0},s.end=function(t,e){this.setDeltaCoordinateHelper("end",t,e),this.dirtyEnd=!0},i.palette=function(t={}){"Palette"===t.type&&(this.palette=t)},i.paletteStart=function(t){t.toFixed&&(this.paletteStart=t,(t<0||t>999)&&(this.paletteStart=t>500?999:0))},s.paletteStart=function(t){let e;t.toFixed&&(e=this.paletteStart+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteStart=e)},i.paletteEnd=function(t){t.toFixed&&(this.paletteEnd=t,(t<0||t>999)&&(this.paletteEnd=t>500?999:0))},s.paletteEnd=function(t){let e;t.toFixed&&(e=this.paletteEnd+t,(e<0||e>999)&&(e=this.cyclePalette?e>500?e-1e3:e+1e3:t>500?999:0),this.paletteEnd=e)},i.colors=function(t){let e=this.palette;e&&e.colors&&e.set({colors:t})},i.delta=function(t={}){t&&(this.delta=Z(this.delta,t))},t.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.palette;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},t.set=function(t={}){if(Object.keys(t).length){let e=this.setters,i=this.defs,s=this.palette,n=s?s.setters:{},r=s?s.defs:{};Object.entries(t).forEach(([t,o])=>{if(t&&"name"!==t&&null!=o){let a=e[t],l=!1;a||(a=n[t],l=!0),a?a.call(l?this.palette:this,o):void 0!==i[t]?this[t]=o:void 0!==r[t]&&(s[t]=o)}},this)}return this},t.setDelta=function(t={}){if(Object.keys(t).length){let e=this.deltaSetters,i=this.defs,s=this.palette,n=s?s.deltaSetters:{},r=s?s.defs:{};Object.entries(t).forEach(([t,o])=>{if(t&&"name"!==t&&null!=o){let a=e[t],l=!1;a||(a=n[t],l=!0),a?a.call(l?this.palette:this,o):void 0!==i[t]?this[t]=H(this[t],o):void 0!==r[t]&&(s[t]=H(this[t],o))}},this)}return this},t.setCoordinateHelper=function(t,e,i){let s=this[t];Array.isArray(e)?(s[0]=e[0],s[1]=e[1]):(s[0]=e,s[1]=i)},t.setDeltaCoordinateHelper=function(t,e,i){let s=this[t],n=s[0],r=s[1];Array.isArray(e)?(s[0]=H(n,e[0]),s[1]=H(r,e[1])):(s[0]=H(n,e),s[1]=H(r,i))},t.updateByDelta=function(){return this.setDelta(this.delta),this},t.stylesInit=function(t={}){this.makeName(t.name),this.register(),this.gradientArgs=[],this.start=Te(),this.end=Te(),this.currentStart=Te(),this.currentEnd=Te(),this.palette=function(t){return new Palette(t)}({name:this.name+"_palette"}),this.delta={},this.set(this.defs),this.set(t)},t.getData=function(t,e){return this.palette&&this.palette.dirtyPalette&&this.palette.recalculate(),this.cleanStyle(t,e),this.finalizeCoordinates(t),this.buildStyle(e)},t.cleanStyle=function(t={},e={}){let i,s,n,r;t.lockFillStyleToEntity||t.lockStrokeStyleToEntity?(i=t.currentDimensions,r=t.currentScale,s=i[0]*r,n=i[1]*r):(i=e.currentDimensions,s=i[0],n=i[1]),this.cleanPosition(this.currentStart,this.start,[s,n]),this.cleanPosition(this.currentEnd,this.end,[s,n]),this.cleanRadius(s)},t.cleanPosition=function(t,e,i){let s,n;for(let r=0;r<2;r++)s=e[r],n=i[r],s.toFixed?t[r]=s:t[r]="left"===s||"top"===s?0:"right"===s||"bottom"===s?n:"center"===s?n/2:parseFloat(s)/100*n},t.finalizeCoordinates=function(t={}){this.currentStart,this.currentEnd;let e,i,s=t.currentStampPosition,n=t.currentStampHandlePosition,r=t.currentScale;t.lockFillStyleToEntity||t.lockStrokeStyleToEntity?(e=-n[0]*r||0,i=-n[1]*r||0):(e=-s[0]||0,i=-s[1]||0),this.updateGradientArgs(e,i)},t.cleanRadius=B,t.buildStyle=function(t){return"rgba(0,0,0,0)"},t.addStopsToGradient=function(t,e,i,s){return this.palette?this.palette.addStopsToGradient(t,e,i,s):t},t.updateColor=function(t,e){return this.palette&&this.palette.updateColor(t,e),this},t.removeColor=function(t){return this.palette&&this.palette.removeColor(t),this},t}O.Palette=Palette;const Gradient=function(t={}){return this.stylesInit(t),this};let Ks=Gradient.prototype=Object.create(Object.prototype);Ks.type="Gradient",Ks.lib="styles",Ks.isArtefact=!1,Ks.isAsset=!1,Ks=ee(Ks),Ks=Qs(Ks),Ks.packetObjects=Q(Ks.packetObjects,["palette"]),Ks.buildStyle=function(t={}){if(t){let e=t.engine;if(e){let t=e.createLinearGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgba(0,0,0,0)"},Ks.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.currentEnd,r=s[0]+t,o=s[1]+e,a=n[0]+t,l=n[1]+e;r===a&&o===l&&a++,i.length=0,i.push(r,o,a,l)};O.Gradient=Gradient;const Grid=function(t={}){return this.tileFill=[],this.tileSources=[],this.entityInit(t),t.tileSources||(this.tileSources=[].concat([{type:"color",source:"#000000"},{type:"color",source:"#ffffff"}])),t.tileFill?Array.isArray(t.tileFill)&&this.tileFill.length===t.tileFill.length&&(this.tileFill=t.tileFill):(this.tileFill.length=this.columns*this.rows,this.tileFill.fill(0)),this.tilePaths=[],this.tileRealCoordinates=[],this.tileVirtualCoordinates=[],t.dimensions||(t.width||(this.currentDimensions[0]=this.dimensions[0]=20),t.height||(this.currentDimensions[1]=this.dimensions[1]=20)),this};let Js=Grid.prototype=Object.create(Object.prototype);Js.type="Grid",Js.lib="entity",Js.isArtefact=!0,Js.isAsset=!1,Js=ee(Js),Js=fs(Js);Js.defs=_(Js.defs,{columns:2,rows:2,columnGutterWidth:1,rowGutterWidth:1,tileSources:null,tileFill:null,gutterColor:"#808080"}),Js.packetExclusions=Q(Js.packetExclusions,["tileSources"]),Js.finalizePacketOut=function(t,e){let i=t.tileSources=[];this.tileSources.forEach(t=>{i.push({type:t.type,source:U(t.source)?t.source.name:t.source})}),U(t.gutterColor)&&(t.gutterColor=t.gutterColor.name);let s=JSON.parse(this.state.saveAsPacket(e))[3];return t=_(t,s),t=this.handlePacketAnchor(t,e)};Js.getters;let tn=Js.setters,en=Js.deltaSetters;tn.columns=function(t){if(V(t)&&(Number.isInteger(t)||(t=parseInt(t,10)),t!==this.columns)){let e,i,s,n=this.tileFill,r=this.columns,o=[];for(this.columns=t,e=0,i=this.rows;e{V(t)&&(i[t]=e)}))},Js.setTileSourceTo=function(t,e){V(t)&&U(e)&&e.type&&e.source&&(this.tileSources[t]=e)},Js.removeTileSource=function(t){V(t)&&t&&(this.tileSources[t]=null,this.tileFill=this.tileFill.map(e=>e===t?0:e))},Js.getTileSource=function(t,e){if(V(t))return V(e)?this.tileFill[t*this.rows+e]:this.tileFill[t]},Js.getTilesUsingSource=function(t){let e=[];return V(t)&&this.tileFill.forEach((i,s)=>i==t&&e.push(s)),e},Js.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=new Path2D,i=new Path2D,s=this.currentStampHandlePosition,n=this.currentScale,r=this.currentDimensions,o=-s[0]*n,a=-s[1]*n,l=r[0]*n,h=r[1]*n;t.rect(o,a,l,h);let c,u,d,f,p=this.columns,m=this.rows,g=l/p,y=h/m,b=this.tilePaths,k=this.tileRealCoordinates,S=this.tileVirtualCoordinates;for(e.moveTo(o,a),e.lineTo(o+l,a),c=1;c<=m;c++){let t=a+c*y;e.moveTo(o,t),e.lineTo(o+l,t)}for(this.rowLines=e,i.moveTo(o,a),i.lineTo(o,a+h),u=1;u<=p;u++){let t=o+u*g;i.moveTo(t,a),i.lineTo(t,a+h)}for(this.columnLines=i,b.length=0,k.length=0,S.length=0,c=0;c{if(r&&r.type)switch(r.type){case"color":t.fillStyle=r.source;break;case"cellGradient":this.lockFillStyleToEntity=!1,t.fillStyle=r.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.fillStyle=r.source.getData(this,this.currentHost)}let y=o.map(t=>t===g);if(y.length)switch(r.type){case"gridPicture":e=r.source.substring?h[r.source]:r.source,e.simpleStamp&&(n.width=m[0]*p,n.height=m[1]*p,s.globalCompositeOperation="source-over",s.fillStyle="#000000",y.forEach((t,e)=>{t&&s.fillRect(c[e][0],c[e][1],d,f)}),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*p,height:m[1]*p,method:"fill"}),t.drawImage(n,l[0][0],l[0][1]));break;case"tilePicture":e=r.source.substring?h[r.source]:r.source,e.simpleStamp&&(n.width=d,n.height=f,s.globalCompositeOperation="source-over",e.simpleStamp(i,{startX:0,startY:0,width:d,height:f,method:"fill"}),y.forEach((e,i)=>e&&t.drawImage(n,l[i][0],l[i][1])));break;default:y.forEach((e,i)=>e&&t.fill(a[i],u))}});let g,y=this.gutterColor,b=this.rowGutterWidth,k=this.columnGutterWidth;if(J(y)){switch(y.substring?g={type:"color",source:this.gutterColor}:U(y)?g=y:V(y)&&U(r[y])&&(g=r[y]),g.type){case"cellGradient":this.lockFillStyleToEntity=!1,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"gridGradient":this.lockFillStyleToEntity=!0,t.strokeStyle=g.source.getData(this,this.currentHost);break;case"color":t.strokeStyle=g.source}switch(g.type){case"gridPicture":case"tilePicture":if((b||k)&&(e=g.source.substring?h[g.source]:g.source,e.simpleStamp)){let r=this.currentStampHandlePosition,o=this.currentScale,a=r[0]*o,h=r[1]*o;n.width=m[0]*o,n.height=m[1]*o,s.globalCompositeOperation="source-over",s.strokeStyle="#000000",s.translate(a,h),b&&(s.lineWidth=b,s.stroke(this.rowLines)),k&&(s.lineWidth=k,s.stroke(this.columnLines)),s.globalCompositeOperation="source-in",e.simpleStamp(i,{startX:0,startY:0,width:m[0]*o,height:m[1]*o,method:"fill"}),t.drawImage(n,l[0][0],l[0][1]),s.translate(0,0)}break;default:b&&(t.lineWidth=b,t.stroke(this.rowLines)),k&&(t.lineWidth=k,t.stroke(this.columnLines))}}ni(i),t.restore()},Js.fill=function(t){this.performFill(t)},Js.drawAndFill=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t)},Js.fillAndDraw=function(t){let e=this.pathObject;t.stroke(e),this.currentHost.clearShadow(),this.performFill(t),t.stroke(e)},Js.drawThenFill=function(t){let e=this.pathObject;t.stroke(e),this.performFill(t)},Js.fillThenDraw=function(t){let e=this.pathObject;this.performFill(t),t.stroke(e)},Js.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;this.pathObject&&!this.dirtyPathObject||this.cleanPathObject();let i=Array.isArray(t)?t:[t],s=!1;e||(e=si(),s=!0);let n,r,o,a=e.engine,l=this.currentStampPosition,h=l[0],c=l[1],u=new Set,d=this.tilePaths;const f=t=>{let e,i;if(Array.isArray(t))e=t[0],i=t[1];else{if(!tt(t,t.x,t.y))return[!1];e=t.x,i=t.y}return!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i)?[!1]:[!0,e,i]};return e.rotateDestination(a,h,c,this),i.some(t=>([n,r,o]=f(t),!!n&&a.isPointInPath(this.pathObject,r,o,this.winding)),this)?(i.forEach(t=>{[n,r,o]=f(t),n&&d.some((t,e)=>!!a.isPointInPath(t,r,o,this.winding)&&(u.add(e),!0))}),s&&ni(e),{x:r,y:o,tiles:[...u],artefact:this}):(s&&ni(e),!1)};O.Grid=Grid;const Line=function(t={}){return this.curveInit(t),this.shapeInit(t),this};let sn=Line.prototype=Object.create(Object.prototype);sn.type="Line",sn.lib="entity",sn.isArtefact=!0,sn.isAsset=!1,sn=ee(sn),sn=Ss(sn),sn=Ps(sn),sn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeLinePath(),this.pathDefinition=t},sn.makeLinePath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentEnd;return`m0,0l${(i-t).toFixed(2)},${(s-e).toFixed(2)}`},sn.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyEnd=!0},sn.preparePinsForStamp=function(){let t=this.endPivot,e=this.endPath;this.dirtyPins.forEach(i=>{(t&&t.name===i||e&&e.name===i)&&(this.dirtyEnd=!0,this.endLockTo.includes("path")&&(this.currentEndPathData=!1))}),this.dirtyPins.length=0};O.Line=Line;const Loom=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.state=Ce(),t.group||(t.group=zi),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.delta={},this.set(t),this.fromPathData=[],this.toPathData=[],this.watchFromPath=null,this.watchIndex=-1,this.engineInstructions=[],this.engineDeltaLengths=[],this};let nn=Loom.prototype=Object.create(Object.prototype);nn.type="Loom",nn.lib="entity",nn.isArtefact=!0,nn.isAsset=!1,nn=ee(nn),nn=qe(nn);nn.defs=_(nn.defs,{fromPath:null,toPath:null,fromPathStart:0,fromPathEnd:1,toPathStart:0,toPathEnd:1,synchronizePathCursors:!0,loopPathCursors:!0,constantPathSpeed:!0,isHorizontalCopy:!0,showBoundingBox:!1,boundingBoxColor:"#000000",source:null,sourceIsVideoOrSprite:!1,interferenceLoops:2,interferenceFactor:1.03,visibility:!0,order:0,delta:null,host:null,group:null,anchor:null,noCanvasEngineUpdates:!1,noDeltaUpdates:!1,onEnter:null,onLeave:null,onDown:null,onUp:null,noUserInteraction:!1,method:"fill"}),nn.packetExclusions=Q(nn.packetExclusions,["pathObject","state"]),nn.packetExclusionsByRegex=Q(nn.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),nn.packetCoordinates=Q(nn.packetCoordinates,[]),nn.packetObjects=Q(nn.packetObjects,["group","fromPath","toPath","source"]),nn.packetFunctions=Q(nn.packetFunctions,["onEnter","onLeave","onDown","onUp"]),nn.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},nn.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=_(t,i),t=this.handlePacketAnchor(t,e)},nn.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},nn.clone=$;let rn=nn.getters,on=nn.setters,an=nn.deltaSetters;nn.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},nn.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=r?r.setters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,l])=>{t&&"name"!==t&&null!=l&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,l):void 0!==n[t]?this[t]=l:void 0!==a[t]&&(r[t]=l))},this)}return this},nn.setDelta=function(t={}){if(Object.keys(t).length){let e,i,s=this.deltaSetters,n=this.defs,r=this.state,o=r?r.deltaSetters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,l])=>{t&&"name"!==t&&null!=l&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,l):void 0!==n[t]?this[t]=addStrings(this[t],l):void 0!==a[t]&&(r[t]=addStrings(r[t],l)))},this)}return this},on.host=function(t){if(t){let e=i[t];e&&e.here?this.host=e.name:this.host=t}else this.host=""},rn.group=function(){return this.group?this.group.name:""},on.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=group[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},nn.getHere=function(){return currentCorePosition},on.delta=function(t={}){t&&(this.delta=Z(this.delta,t))},on.fromPath=function(t){if(t){let e=this.fromPath,s=t.substring?i[t]:t,n=this.name;s&&s.name&&s.useAsPath&&(e&&e.name!==s.name&&removeItem(e.pathed,n),Q(s.pathed,n),this.fromPath=s,this.dirtyStart=!0)}},on.toPath=function(t){if(t){let e=this.toPath,s=t.substring?i[t]:t,n=this.name;s&&s.name&&s.useAsPath&&(e&&e.name!==s.name&&removeItem(e.pathed,n),Q(s.pathed,n),this.toPath=s,this.dirtyStart=!0)}},on.source=function(t){if((t=t.substring?i[t]:t)&&"Picture"===t.type){let e=this.source;e&&"Picture"===e.type&&e.imageUnsubscribe(this.name),this.source=t,t.imageSubscribe(this.name),this.dirtyInput=!0}},on.isHorizontalCopy=function(t){this.isHorizontalCopy=!!t,this.dirtyPathData=!0},on.synchronizePathCursors=function(t){this.synchronizePathCursors=!!t,t&&(this.toPathStart=this.fromPathStart,this.toPathEnd=this.fromPathEnd),this.dirtyPathData=!0},on.loopPathCursors=function(t){if(this.loopPathCursors=!!t,t){let t,e=Math.floor;t=this.fromPathStart,(t<0||t>1)&&(this.fromPathStart=t-e(t)),t=this.fromPathEnd,(t<0||t>1)&&(this.fromPathEnd=t-e(t)),t=this.toPathStart,(t<0||t>1)&&(this.toPathStart=t-e(t)),t=this.toPathEnd,(t<0||t>1)&&(this.toPathEnd=t-e(t))}this.dirtyOutput=!0},on.fromPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathStart=t,this.synchronizePathCursors&&(this.toPathStart=t),this.dirtyPathData=!0},an.fromPathStart=function(t){let e=this.fromPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathStart=e,this.synchronizePathCursors&&(this.toPathStart=e),this.dirtyPathData=!0},on.fromPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.fromPathEnd=t,this.synchronizePathCursors&&(this.toPathEnd=t),this.dirtyPathData=!0},an.fromPathEnd=function(t){let e=this.fromPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.fromPathEnd=e,this.synchronizePathCursors&&(this.toPathEnd=e),this.dirtyPathData=!0},on.toPathStart=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathStart=t,this.synchronizePathCursors&&(this.fromPathStart=t),this.dirtyPathData=!0},an.toPathStart=function(t){let e=this.toPathStart+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathStart=e,this.synchronizePathCursors&&(this.fromPathStart=e),this.dirtyPathData=!0},on.toPathEnd=function(t){this.loopPathCursors&&(t<0||t>1)&&(t-=Math.floor(t)),this.toPathEnd=t,this.synchronizePathCursors&&(this.fromPathEnd=t),this.dirtyPathData=!0},an.toPathEnd=function(t){let e=this.toPathEnd+=t;this.loopPathCursors&&(e<0||e>1)&&(e-=Math.floor(e)),this.toPathEnd=e,this.synchronizePathCursors&&(this.fromPathEnd=e),this.dirtyPathData=!0},nn.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=i[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return currentCorePosition},nn.updateByDelta=function(){return this.setDelta(this.delta),this},nn.reverseByDelta=function(){let t={};return Object.entries(this.delta).forEach(([e,i])=>{i=i.substring?-parseFloat(i)+"%":-i,t[e]=i}),this.setDelta(t),this},nn.setDeltaValues=function(t={}){let e,i,s=this.delta;return Object.entries(t).forEach(([t,n])=>{if(xt(s[t]))switch(i=n,e=s[t],i){case"reverse":e.toFixed&&(s[t]=-e);break;case"zero":e.toFixed&&(s[t]=0)}}),this},nn.midInitActions=B,nn.cleanCollisionData=function(){return[0,[]]},nn.getSensors=function(){return[]},nn.prepareStamp=function(){let t=this.fromPath,e=this.toPath,[i,s,n,r]=this.getBoundingBox();if(!this.dirtyPathData){let{x:i,y:s}=t.getPathPositionData(0),{x:n,y:r}=t.getPathPositionData(1),{x:o,y:a}=e.getPathPositionData(0),{x:l,y:h}=e.getPathPositionData(1),c=[i,s,n,r,o,a,l,h];this.pathTests&&!this.pathTests.some((t,e)=>t!==c[e])||(this.pathTests=c,this.dirtyPathData=!0)}if(this.dirtyPathData||!this.fromPathData.length){this.dirtyPathData=!1,this.watchIndex=-1,this.engineInstructions.length=0,this.engineDeltaLengths.length=0;let n=Math.ceil,r=Math.max,o=Math.min,a=this.fromPathData;a.length=0;let l=this.toPathData;if(l.length=0,t&&e){let h,c,u,d,f=n(t.length),p=n(e.length);h=this.setSourceDimension(r(f,p));let m,g,y,b=this.fromPathStart,k=this.fromPathEnd,S=this.toPathStart,O=this.toPathEnd,P=this.constantPathSpeed;m=b{t.cleanInput().catch(i=>{console.log(t.name+" - cleanInput Error: source has a zero dimension"),e(!1)}).then(e=>(t.sourceImageData=e,t.cleanOutput())).then(e=>(t.output=e,t.regularStamp())).then(t=>{e(!0)}).catch(t=>{i(t)})}):i?new Promise((e,i)=>{t.cleanOutput().then(e=>(t.output=e,t.regularStamp())).then(t=>{e(!0)}).catch(t=>{i(t)})}):this.regularStamp()}return Promise.resolve(!1)},nn.cleanInput=function(){let t=this;return new Promise((e,i)=>{t.dirtyInput=!1,t.setSourceDimension();let s=t.sourceDimension;s||(t.dirtyInput=!0,i());let n=si(),r=n.engine,o=n.element;o.width=s,o.height=s,r.setTransform(1,0,0,1,0,0),t.source.stamp(!0,n,{startX:0,startY:0,handleX:0,handleY:0,offsetX:0,offsetY:0,roll:0,scale:1,width:s,height:s,method:"fill"}).then(t=>{let i=r.getImageData(0,0,s,s);ni(n),e(i)}).catch(t=>{ni(n),i(t)})})},nn.cleanOutput=function(){let t=this;return new Promise((e,i)=>{t.dirtyOutput=!1,t.setSourceDimension();let s=t.sourceDimension,n=t.sourceImageData;if(s&&n){let i,r,o,a,l,h,c,u,d,f,p,m=Math.hypot,g=Math.floor,y=Math.ceil,b=Math.atan2,k=Math.cos,S=Math.sin,O=t.fromPathData,P=t.toPathData,v=O.length,w=t.fromPathStart*v,A=t.fromPathSteps||1,x=t.toPathStart*v,C=t.toPathSteps||1,D=.5*Math.PI,R=D-1.5708,E=t.isHorizontalCopy,F=t.loopPathCursors,T=t.watchFromPath,H=t.watchIndex,M=t.engineInstructions,I=t.engineDeltaLengths,[B,L,$,j]=t.getBoundingBox(),X=si(),Y=X.engine,N=X.element;N.width=s,N.height=s,Y.setTransform(1,0,0,1,0,0),Y.putImageData(n,0,0);let z=si(),G=z.engine,W=z.element;if(W.width=$,W.height=j,G.globalAlpha=t.state.globalAlpha,G.setTransform(1,0,0,1,0,0),!M.length){for(let t=0;t=0&&x>=0?([i,r]=O[g(w)],[o,a]=P[g(x)],l=o-i,h=a-r,c=m(l,h),E?(u=-b(l,h)+D,d=k(u),f=S(u),M.push([d,f,-f,d,i,r]),I.push(c)):(u=-b(l,h)+R,d=k(u),f=S(u),M.push([d,f,-f,d,i,r,c]),I.push(c))):(M.push(!1),I.push(!1)),w+=A,x+=C,F&&(w>=v&&(w-=v),x>=v&&(x-=v));H<0&&(H=0),t.watchIndex=H}if(E)for(let t=0;t=s&&(H=0);else for(let t=0;t=s&&(H=0);let V=t.interferenceFactor,U=t.interferenceLoops,q=y($*V),_=y(j*V);N.width=q,N.height=_,G.setTransform(1,0,0,1,0,0),Y.setTransform(1,0,0,1,0,0);for(let t=0;t{t.currentHost&&(t.regularStampSynchronousActions(),e(!0)),i(new Error(t.name+" has no current host"))})},nn.regularStampSynchronousActions=function(){let t=this.currentHost;if(t){let e=t.engine;this.noCanvasEngineUpdates||t.setEngine(this),this[this.method](e)}},nn.getBoundingBox=function(){let t=this.fromPath,e=this.toPath;if(t&&e){if(this.dirtyStart)if(t.getBoundingBox&&e.getBoundingBox){this.dirtyStart=!1;let[i,s,n,r,o,a]=t.getBoundingBox(),[l,h,c,u,d,f]=e.getBoundingBox();(isNaN(i)||isNaN(s)||isNaN(n)||isNaN(r)||isNaN(o)||isNaN(a)||isNaN(l)||isNaN(h)||isNaN(c)||isNaN(u)||isNaN(d)||isNaN(f))&&(this.dirtyStart=!0),i==l&&s==h&&n==c&&r==u&&o==d&&a==f&&(this.dirtyStart=!0),i+=o,s+=a,l+=d,h+=f;let p=Math.min(i,l),m=Math.max(i+n,l+c),g=Math.min(s,h),y=Math.max(s+r,h+u);this.boundingBox=[p,g,m-p,y-g],this.dirtyPathData=!0}else this.boundingBox=[0,0,0,0]}else this.boundingBox=[0,0,0,0];return this.boundingBox},nn.fill=function(t){this.doFill(t),this.showBoundingBox&&this.drawBoundingBox(t)},nn.draw=function(t){this.doStroke(t),this.showBoundingBox&&this.drawBoundingBox(t)},nn.drawAndFill=function(t){this.doStroke(t),this.currentHost.clearShadow(),this.doFill(t),this.showBoundingBox&&this.drawBoundingBox(t)},nn.fillAndDraw=function(t){this.doFill(t),this.currentHost.clearShadow(),this.doStroke(t),this.showBoundingBox&&this.drawBoundingBox(t)},nn.drawThenFill=function(t){this.doStroke(t),this.doFill(t),this.showBoundingBox&&this.drawBoundingBox(t)},nn.fillThenDraw=function(t){this.doFill(t),this.doStroke(t),this.showBoundingBox&&this.drawBoundingBox(t)},nn.clear=function(t){let e=this.output,i=!!this.currentHost&&this.currentHost.element,s=t.globalCompositeOperation;if(e&&i){let i=si(),n=i.engine,r=i.element,[o,a,l,h]=this.getBoundingBox();r.width=l,r.height=h,n.putImageData(e,0,0),t.setTransform(1,0,0,1,0,0),t.globalCompositeOperation="destination-out",t.drawImage(r,0,0,l,h,o,a,l,h),t.globalCompositeOperation=s,ni(i),this.showBoundingBox&&this.drawBoundingBox(t)}},nn.none=B,nn.doStroke=function(t){let e=this.fromPath,i=this.toPath;if(e&&e.getBoundingBox&&i&&i.getBoundingBox){let s=this.currentHost;if(s){let n=e.currentStampPosition,r=e.getPathPositionData(1),o=i.currentStampPosition,a=i.getPathPositionData(1);s.rotateDestination(t,n[0],n[1],e),t.stroke(e.pathObject),s.rotateDestination(t,o[0],o[1],e),t.stroke(i.pathObject),t.setTransform(1,0,0,1,0,0),t.beginPath(),t.moveTo(r.x,r.y),t.lineTo(a.x,a.y),t.moveTo(...o),t.lineTo(...n),t.closePath(),t.stroke()}}},nn.doFill=function(t){let e=this.output,i=!!this.currentHost&&this.currentHost.element;if(e&&i){let i=si(),s=i.engine,n=i.element,[r,o,a,l]=this.getBoundingBox();n.width=a,n.height=l,s.putImageData(e,0,0),t.setTransform(1,0,0,1,0,0),t.drawImage(n,0,0,a,l,r,o,a,l),ni(i)}},nn.drawBoundingBox=function(t){this.dirtyStart&&this.getBoundingBox(),t.save();let e=t.getTransform();t.setTransform(1,0,0,1,0,0),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.strokeRect(...this.boundingBox),t.restore(),t.setTransform(e)},nn.checkHit=function(t=[]){if(this.noUserInteraction)return!1;let e,i,s,n,r,o=Array.isArray(t)?t:[t],a=!(!this.output||!this.output.data)&&this.output.data;if(a){let[t,l,h,c]=this.getBoundingBox();if(o.some(o=>{if(Array.isArray(o))e=o[0],i=o[1];else{if(!tt(o,o.x,o.y))return!1;e=o.x,i=o.y}return!(!e.toFixed||!i.toFixed||isNaN(e)||isNaN(i))&&(s=e-t,n=i-l,!(s<0||s>h||n<0||n>c)&&(r=4*(n*h+s)+3,!!a&&a[r]>0))},this))return{x:e,y:i,artefact:this}}return!1};O.Loom=Loom;const ln=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.state=Ce(),t.group||(t.group=zi),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.delta={},this.set(t),this.fromPathData=[],this.toPathData=[],this.watchFromPath=null,this.watchIndex=-1,this.engineInstructions=[],this.engineDeltaLengths=[],this};let hn=ln.prototype=Object.create(Object.prototype);hn.type="Mesh",hn.lib="entity",hn.isArtefact=!0,hn.isAsset=!1,hn=ee(hn),hn=qe(hn);hn.defs=_(hn.defs,{net:null,isHorizontalCopy:!0,source:null,sourceIsVideoOrSprite:!1,interferenceLoops:2,interferenceFactor:1.03,visibility:!0,order:0,delta:null,host:null,group:null,anchor:null,noCanvasEngineUpdates:!1,noDeltaUpdates:!1,onEnter:null,onLeave:null,onDown:null,onUp:null,noUserInteraction:!1,method:"fill"}),hn.packetExclusions=Q(hn.packetExclusions,["pathObject","state"]),hn.packetExclusionsByRegex=Q(hn.packetExclusionsByRegex,["^(local|dirty|current)","Subscriber$"]),hn.packetCoordinates=Q(hn.packetCoordinates,[]),hn.packetObjects=Q(hn.packetObjects,["group","net","source"]),hn.packetFunctions=Q(hn.packetFunctions,["onEnter","onLeave","onDown","onUp"]),hn.processPacketOut=function(t,e,i){let s=!0;return i.indexOf(t)<0&&e===this.defs[t]&&(s=!1),s},hn.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];return t=_(t,i),t=this.handlePacketAnchor(t,e)},hn.handlePacketAnchor=function(t,e){if(this.anchor){let i=JSON.parse(this.anchor.saveAsPacket(e))[3];t.anchor=i}return t},hn.clone=$;let cn=hn.getters,un=hn.setters;hn.deltaSetters;hn.get=function(t){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}},hn.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=r?r.setters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,l])=>{t&&"name"!==t&&null!=l&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,l):void 0!==n[t]?this[t]=l:void 0!==a[t]&&(r[t]=l))},this)}return this},hn.setDelta=function(t={}){if(Object.keys(t).length){let e,i,s=this.deltaSetters,n=this.defs,r=this.state,o=r?r.deltaSetters:{},a=r?r.defs:{};Object.entries(t).forEach(([t,l])=>{t&&"name"!==t&&null!=l&&(e=s[t],i=!1,e||(e=o[t],i=!0),e?e.call(i?this.state:this,l):void 0!==n[t]?this[t]=addStrings(this[t],l):void 0!==a[t]&&(r[t]=addStrings(r[t],l)))},this)}return this},un.host=function(t){if(t){let e=i[t];e&&e.here?this.host=e.name:this.host=t}else this.host=""},cn.group=function(){return this.group?this.group.name:""},un.group=function(t){let e;t&&(this.group&&"Group"===this.group.type&&this.group.removeArtefacts(this.name),t.substring?(e=group[t],this.group=e||t):this.group=t),this.group&&"Group"===this.group.type&&this.group.addArtefacts(this.name)},hn.getHere=function(){return currentCorePosition},un.delta=function(t={}){t&&(this.delta=Z(this.delta,t))},un.net=function(t){t&&(t=t.substring?i[t]:t)&&"Net"===t.type&&(this.net=t,this.dirtyStart=!0)},un.source=function(t){if((t=t.substring?i[t]:t)&&"Picture"===t.type){let e=this.source;e&&"Picture"===e.type&&e.imageUnsubscribe(this.name),this.source=t,t.imageSubscribe(this.name),this.dirtyInput=!0}},un.isHorizontalCopy=function(t){this.isHorizontalCopy=!!t,this.dirtyPathData=!0},hn.getHost=function(){if(this.currentHost)return this.currentHost;if(this.host){let t=i[this.host];if(t)return this.currentHost=t,this.dirtyHost=!0,this.currentHost}return currentCorePosition},hn.updateByDelta=function(){return this.setDelta(this.delta),this},hn.reverseByDelta=function(){let t={};return Object.entries(this.delta).forEach(([e,i])=>{i=i.substring?-parseFloat(i)+"%":-i,t[e]=i}),this.setDelta(t),this},hn.setDeltaValues=function(t={}){let e,i,s=this.delta;return Object.entries(t).forEach(([t,n])=>{if(xt(s[t]))switch(i=n,e=s[t],i){case"reverse":e.toFixed&&(s[t]=-e);break;case"zero":e.toFixed&&(s[t]=0)}}),this},hn.midInitActions=B,hn.cleanCollisionData=function(){return[0,[]]},hn.getSensors=function(){return[]},hn.prepareStamp=function(){this.badNet=!0,this.dirtyParticles=!1;let{net:t,particlePositions:e}=this;if(t&&t.particleStore&&t.particleStore.length>3){let{rows:i,columns:s,particleStore:n}=t;if(i&&s){this.badNet=!1,this.rows=i,this.columns=s,e||(e=[]);let t=[];n.forEach(e=>{let i=e.position,{x:s,y:n}=i;t.push([s,n])});let r=t.join(",");e.join(",")!==r&&(this.particlePositions=t,this.dirtyInput=!0),this.sourceIsVideoOrSprite&&(this.dirtyInput=!0)}}},hn.setSourceDimension=function(){if(!this.badNet){const{columns:t,rows:e,particlePositions:i}=this,s=[],n=[],r=[],o=[],a=[],l=[],h=[],c=[],u=[];let d,f,p,m,g,y,b,k,S,O,P,v,w,A,x,C,D,R;for(p=0;p{t.cleanInput().catch(i=>{console.log(t.name+" - cleanInput Error: source has a zero dimension"),e(!1)}).then(e=>(t.sourceImageData=e,t.cleanOutput())).then(e=>(t.output=e,t.regularStamp())).then(t=>{e(!0)}).catch(t=>{i(t)})}):this.regularStamp()}return Promise.resolve(!1)},hn.cleanInput=function(){let t=this;return new Promise((e,i)=>{t.dirtyInput=!1,t.setSourceDimension();let s=t.sourceDimension;s||(t.dirtyInput=!0,i());let n=si(),r=n.engine,o=n.element;o.width=s,o.height=s,r.setTransform(1,0,0,1,0,0),t.source.stamp(!0,n,{startX:0,startY:0,handleX:0,handleY:0,offsetX:0,offsetY:0,roll:0,scale:1,width:s,height:s,method:"fill"}).then(t=>{let i=r.getImageData(0,0,s,s);ni(n),e(i)}).catch(t=>{ni(n),i(t)})})},hn.cleanOutput=function(){let t=this;return new Promise((e,i)=>{const s=Math.PI/2;t.dirtyOutput=!1;let{sourceDimension:n,sourceImageData:r,columns:o,rows:a,struts:l,boundingBox:h}=t;if(r&&a-1>0){let[i,c,u,d]=h;u+=i,d+=c;const f=si(),p=f.engine,m=f.element;m.width=n,m.height=n,p.setTransform(1,0,0,1,0,0),p.putImageData(r,0,0);const g=si(),y=g.engine,b=g.element;b.width=u,b.height=d,y.globalAlpha=t.state.globalAlpha,y.setTransform(1,0,0,1,0,0);const k=n/(a-1),S=n/(o-1);let O,P,v,w,A,x,C,D,R,E,F,T,H,M,I,B,L,$,j,X,Y,N,z;for(Y=0,N=a-1;Y{t.currentHost&&(t.regularStampSynchronousActions(),e(!0)),i(new Error(t.name+" has no current host"))})},hn.regularStampSynchronousActions=function(){let t=this.currentHost;if(t){let e=t.engine;this.noCanvasEngineUpdates||t.setEngine(this),this[this.method](e)}},hn.fill=function(t){this.doFill(t)},hn.draw=function(t){this.doStroke(t)},hn.drawAndFill=function(t){this.doStroke(t),this.currentHost.clearShadow(),this.doFill(t)},hn.fillAndDraw=function(t){this.doFill(t),this.currentHost.clearShadow(),this.doStroke(t)},hn.drawThenFill=function(t){this.doStroke(t),this.doFill(t)},hn.fillThenDraw=function(t){this.doFill(t),this.doStroke(t)},hn.clear=function(t){let e=this.output,i=!!this.currentHost&&this.currentHost.element,s=t.globalCompositeOperation;if(e&&i){let n=si(),r=n.engine,o=n.element,a=i.width,l=i.height;o.width=a,o.height=l,r.putImageData(e,0,0),t.setTransform(1,0,0,1,0,0),t.globalCompositeOperation="destination-out",t.drawImage(o,0,0),t.globalCompositeOperation=s,ni(n)}},hn.none=B,hn.doStroke=function(t){t.setTransform(1,0,0,1,0,0),t.stroke(this.pathObject)},hn.doFill=function(t){let e=this.output,i=!!this.currentHost&&this.currentHost.element;if(e&&i){let s=si(),n=s.engine,r=s.element,o=i.width,a=i.height;r.width=o,r.height=a,n.putImageData(e,0,0),t.setTransform(1,0,0,1,0,0),t.drawImage(r,0,0),ni(s)}},hn.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;if(!this.pathObject)return!1;let i=Array.isArray(t)?t:[t],s=!1;e||(e=si(),s=!0);let n,r,o=e.engine;if(i.some(t=>{if(Array.isArray(t))n=t[0],r=t[1];else{if(!tt(t,t.x,t.y))return!1;n=t.x,r=t.y}return!(!n.toFixed||!r.toFixed||isNaN(n)||isNaN(r))&&o.isPointInPath(this.pathObject,n,r,this.winding)},this)){let t={x:n,y:r,artefact:this};return s&&ni(e),t}return s&&ni(e),!1};O.Mesh=ln;const Spring=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this.action||(this.action=B),this};let dn=Spring.prototype=Object.create(Object.prototype);dn.type="Spring",dn.lib="spring",dn.isArtefact=!1,dn.isAsset=!1,dn=ee(dn);dn.defs=_(dn.defs,{particleFrom:null,particleFromIsStatic:!1,particleTo:null,particleToIsStatic:!1,springConstant:50,damperConstant:10,restLength:1}),dn.packetObjects=Q(dn.packetObjects,["particleFrom","particleTo"]),dn.kill=function(){return this.deregister(),!0};let fn=dn.setters;fn.particleFrom=function(t){t.substring&&(t=d[t]),t&&"Particle"===t.type&&(this.particleFrom=t)},fn.particleTo=function(t){t.substring&&(t=d[t]),t&&"Particle"===t.type&&(this.particleTo=t)},dn.applySpring=function(){let{particleFrom:t,particleTo:e,particleFromIsStatic:i,particleToIsStatic:s,springConstant:n,damperConstant:r,restLength:o}=this;if(t&&e){let{position:a,velocity:l,load:h}=t,{position:c,velocity:u,load:d}=e,f=di(u).vectorSubtract(l),p=di(c).vectorSubtract(a),m=di(p).normalize(),g=di(m);m.scalarMultiply(n*(p.getMagnitude()-o)),f.vectorMultiply(g).scalarMultiply(r).vectorMultiply(g);let y=di(m).vectorAdd(f);i||h.vectorAdd(y),s||d.vectorSubtract(y),fi(f)}};const pn=function(t){return new Spring(t)};O.Spring=Spring;const Net=function(t={}){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.generate=B,this.postGenerate=B,this.stampAction=B,this.particleStore=[],this.springs=[],t.group||(t.group=zi),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let mn=Net.prototype=Object.create(Object.prototype);mn.type="Net",mn.lib="entity",mn.isArtefact=!0,mn.isAsset=!1,mn=ee(mn),mn=fs(mn);mn.defs=_(mn.defs,{world:null,artefact:null,historyLength:1,forces:null,mass:1,engine:"euler",springConstant:50,damperConstant:10,restLength:1,showSprings:!1,showSpringsColor:"#000000",rows:0,columns:0,rowDistance:0,columnDistance:0,shapeTemplate:null,precision:20,joinTemplateEnds:!1,particlesAreDraggable:!1,hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000",resetAfterBlur:3}),mn.packetExclusions=Q(mn.packetExclusions,["forces","springs","particleStore"]),mn.packetExclusionsByRegex=Q(mn.packetExclusionsByRegex,[]),mn.packetCoordinates=Q(mn.packetCoordinates,[]),mn.packetObjects=Q(mn.packetObjects,["world","artefact","shapeTemplate"]),mn.packetFunctions=Q(mn.packetFunctions,["generate","postGenerate","stampAction"]),mn.finalizePacketOut=function(t,e){let i=e.forces||this.forces||!1;if(i){let e=[];i.forEach(t=>{t.substring?e.push(t):U(t)&&t.name&&e.push(t.name)}),t.forces=e}let s=[];return this.particleStore.forEach(t=>s.push(t.saveAsPacket())),t.particleStore=s,t},mn.postCloneAction=function(t,e){return t},mn.factoryKill=function(t,e){this.isRunning=!1,t&&(this.artefact.kill(),this.shapeTemplate&&this.shapeTemplate.kill()),e&&this.world.kill(),this.purgeParticlesFromLibrary()},mn.purgeParticlesFromLibrary=function(){let{particleStore:t,springs:e}=this;s.forEach(t=>{let e=i[t];e&&(e.particle&&!e.particle.substring&&e.particle.name&&(e.particle=e.particle.name),"Polyline"===e.type&&e.useParticlesAsPins&&e.pins.forEach((t,i)=>{U(t)&&"Particle"===t.type&&(e.pins[i]=t.name,e.dirtyPins=!0)}))}),t.forEach(t=>t.kill()),t.length=0,e.forEach(t=>t.kill()),e.length=0};mn.getters;let gn=mn.setters;mn.deltaSetters;gn.generate=function(t){W(t)?this.generate=t:t.substring&&yn[t]&&(this.generate=yn[t])},gn.postGenerate=function(t){W(t)&&(this.postGenerate=t)},gn.stampAction=function(t){W(t)&&(this.stampAction=t)},gn.world=function(t){let e;t.substring?e=g[t]:U(t)&&"World"===t.type&&(e=t),e&&(this.world=e)},gn.artefact=function(t){let e;t.substring?e=i[t]:U(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e)},gn.shapeTemplate=function(t){let e;t.substring?e=h[t]:U(t)&&t.isArtefact&&J(t.species)&&(e=t),e&&(this.shapeTemplate=e)},mn.regularStampSynchronousActions=function(){let{world:t,artefact:e,particleStore:i,springs:s,generate:n,postGenerate:r,stampAction:o,lastUpdated:a,resetAfterBlur:l,showSprings:h,showSpringsColor:c,showHitRadius:u,hitRadius:d,hitRadiusColor:f}=this,p=1,m="source-over";this.state&&(p=this.state.globalAlpha,m=this.state.globalCompositeOperation);let g=this.currentHost,y=.016,b=Date.now();if(a&&(y=(b-a)/1e3),y>l&&(this.purgeParticlesFromLibrary(),y=.016),i.length||(n.call(this,g),r.call(this)),i.forEach(e=>e.applyForces(t,g)),s.forEach(t=>t.applySpring()),i.forEach(e=>e.update(y,t)),h){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.strokeStyle=c,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgba(0,0,0,0)",t.lineWidth=1,t.setTransform(1,0,0,1,0,0),t.beginPath(),s.forEach(e=>{let{particleFrom:i,particleTo:s}=e;t.moveTo(i.position.x,i.position.y),t.lineTo(s.position.x,s.position.y)}),t.stroke(),t.restore()}if(i.forEach(t=>{t.manageHistory(y,g),o.call(this,e,t,g)}),u){let t=g.engine;t.save(),t.globalAlpha=p,t.globalCompositeOperation=m,t.lineWidth=1,t.strokeStyle=f,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.shadowColor="rgba(0,0,0,0)",t.setTransform(1,0,0,1,0,0),t.beginPath(),i.forEach(e=>{t.moveTo(e.position.x,e.position.y),t.arc(e.position.x,e.position.y,d,0,2*Math.PI)}),t.stroke(),t.restore()}this.lastUpdated=b},mn.restart=function(){return this.purgeParticlesFromLibrary(),this.lastUpdated=Date.now(),this},mn.checkHit=function(t=[],e){if(this.lastHitParticle=null,!this.particlesAreDraggable)return!1;if(this.noUserInteraction)return!1;let i,s,n,r,o,a=Array.isArray(t)?t:[t],l=this.particleStore,h=!1;if(a.some(t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!tt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=di();for(n=0,r=l.length;n0&&h>0){let f,p,k,S,O,[P,v]=this.currentStampPosition,[w,A]=t.currentDimensions,x=c.substring?parseFloat(c)/100*A:c,C=u.substring?parseFloat(u)/100*A:u;for(S=0;S0&&h>0){let f,p,k,S,O,[P,v]=this.currentStampPosition,[w,A]=t.currentDimensions,x=c.substring?parseFloat(c)/100*A:c,C=u.substring?parseFloat(u)/100*A:u;for(S=0;S0;O--)R=d[`${m}-${O}-${S}`],E=d[`${m}-${O-1}-${S+1}`],D(R,E,`${m}-${O}-${S}~${m}-${O-1}-${S+1}`)}},"weak-shape":function(t){let{particleStore:e,artefact:i,historyLength:s,engine:n,forces:r,springs:o,mass:a,showSprings:l,showSpringsColor:h,name:c,springConstant:u,damperConstant:f,restLength:p,shapeTemplate:m,precision:g,joinTemplateEnds:y}=this;const b=function(t,e,i){let s,n,r;s=di(t.position).vectorSubtract(e.position),n=s.getMagnitude(),r=pn({name:i,particleFrom:t,particleTo:e,springConstant:u,damperConstant:f,restLength:n*p}),o.push(r),fi(s)};let k,S,O,P;if(m&&g){for(k=0;k=0){for(k=0;k=0||t.type;let[w,A]=e.get("position");v=js({name:f+"-hub",positionX:w,positionY:A,positionZ:0,velocityX:0,velocityY:0,velocityZ:0,historyLength:r,engine:o,forces:a,mass:h,fill:n.get("fillStyle"),stroke:n.get("strokeStyle")}),v.run(0,0,!1),s.forEach((t,e)=>b(t,v,`${f}-${e}-hub`)),s.push(v)}}};O.Net=Net;const bn=function(t={}){this.makeName(t.name),this.register();let e=document.createElement("canvas");return e.id=this.name,this.installElement(e),this.perm=[],this.permMod8=[],this.values=[],this.grad=[],this.subscribers=[],this.colorFactory=Fs({name:this.name+"-color-factory",minimumColor:t.gradientStart||"red",maximumColor:t.gradientEnd||"green"}),this.set(this.defs),this.set(t),t.subscribe&&this.subscribers.push(t.subscribe),this.dirtyOutput=!0,this};let kn=bn.prototype=Object.create(Object.prototype);kn.type="Noise",kn.lib="asset",kn.isArtefact=!1,kn.isAsset=!0,kn=ee(kn),kn=He(kn),kn=Ze(kn);kn.defs=_(kn.defs,{width:300,height:150,color:"monochrome",monochromeStart:0,monochromeRange:255,gradientStart:"#ff0000",gradientEnd:"#00ff00",hueStart:0,hueRange:120,saturation:100,luminosity:50,noiseEngine:"simplex",seed:"any_random_string_will_do",size:256,scale:50,octaves:1,octaveFunction:"none",persistence:.5,lacunarity:2,smoothing:"quintic",sumFunction:"none",sineFrequencyCoeff:1,modularAmplitude:5}),delete kn.defs.source,delete kn.defs.sourceLoaded,kn.stringifyFunction=B,kn.processPacketOut=B,kn.finalizePacketOut=B,kn.saveAsPacket=function(){return`[${this.name}, ${this.type}, ${this.lib}, {}]`},kn.clone=$;kn.getters;let Sn=kn.setters;kn.deltaSetters;Sn.source=B,Sn.subscribers=B,Sn.octaveFunction=function(t){this.octaveFunction=this.octaveFunctions[t]||L,this.dirtyNoise=!0,this.dirtyOutput=!0},Sn.sumFunction=function(t){this.sumFunction=this.sumFunctions[t]||L,this.dirtyNoise=!0,this.dirtyOutput=!0},Sn.smoothing=function(t){this.smoothing=this.smoothingFunctions[t]||L,this.dirtyNoise=!0,this.dirtyOutput=!0},Sn.noiseEngine=function(t){this.noiseEngine=this.noiseEngines[t]||this.noiseEngines.simplex,this.dirtyNoise=!0,this.dirtyOutput=!0},Sn.octaves=function(t){t.toFixed&&(this.octaves=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.seed=function(t){t.substring&&(this.seed=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},kn.supportedColorSchemes=["monochrome","gradient","hue"],Sn.color=function(t){this.supportedColorSchemes.indexOf(t)>=0&&(this.color=t,this.dirtyOutput=!0)},Sn.scale=function(t){t.toFixed&&(this.scale=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.size=function(t){t.toFixed&&(this.size=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.persistence=function(t){t.toFixed&&(this.persistence=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.lacunarity=function(t){t.toFixed&&(this.lacunarity=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.gradientStart=function(t){t.substring&&(this.colorFactory.setMinimumColor(t),this.dirtyOutput=!0)},Sn.gradientEnd=function(t){t.substring&&(this.colorFactory.setMaximumColor(t),this.dirtyOutput=!0)},Sn.monochromeStart=function(t){t.toFixed&&t>=0&&(this.monochromeStart=t%360,this.dirtyOutput=!0)},Sn.monochromeRange=function(t){t.toFixed&&t>=-255&&t<256&&(this.monochromeRange=Math.floor(t),this.dirtyOutput=!0)},Sn.hueStart=function(t){t.toFixed&&(this.hueStart=t,this.dirtyOutput=!0)},Sn.hueRange=function(t){t.toFixed&&(this.hueRange=t,this.dirtyOutput=!0)},Sn.saturation=function(t){t.toFixed&&t>=0&&t<=100&&(this.saturation=Math.floor(t),this.dirtyOutput=!0)},Sn.luminosity=function(t){t.toFixed&&t>=0&&t<=100&&(this.luminosity=Math.floor(t),this.dirtyOutput=!0)},Sn.sineFrequencyCoeff=function(t){t.toFixed&&(this.sineFrequencyCoeff=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.modularAmplitude=function(t){t.toFixed&&(this.modularAmplitude=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.width=function(t){t.toFixed&&(this.width=t,this.sourceNaturalWidth=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},Sn.height=function(t){t.toFixed&&(this.height=t,this.sourceNaturalHeight=t,this.dirtyNoise=!0,this.dirtyOutput=!0)},kn.installElement=function(t){return this.element=t,this.engine=this.element.getContext("2d"),this},kn.checkSource=function(t,e){this.notifySubscribers()},kn.getData=function(t,e){return this.notifySubscribers(),this.buildStyle(e)},kn.notifySubscribers=function(){(this.dirtyOutput||this.dirtyNoise)&&this.cleanOutput(),this.subscribers.forEach(t=>this.notifySubscriber(t),this)},kn.notifySubscriber=function(t){t.sourceNaturalWidth=this.width,t.sourceNaturalHeight=this.height,t.sourceLoaded=!0,t.source=this.element,t.dirtyImage=!0,t.dirtyCopyStart=!0,t.dirtyCopyDimensions=!0,t.dirtyImageSubscribers=!0},kn.cleanOutput=function(){this.dirtyNoise&&this.cleanNoise(),this.dirtyOutput&&this.paintCanvas()},kn.cleanNoise=function(){if(this.dirtyNoise){this.dirtyNoise=!1;let{noiseEngine:t,seed:e,width:i,height:s,element:n,engine:r,octaves:o,lacunarity:a,persistence:l,scale:h,octaveFunction:c,sumFunction:u}=this;if(t&&t.init){this.rndEngine=function(t){return new nt(t)}(e),this.generatePermutationTable(),t.init.call(this);let n,r,d,f,p,m,g,y,b=[];for(r=0;r0?a+l>255&&(l=255-a):l<0&&a-l<0&&(l=a);for(let e=0;em&&(S=1,O=0),b=h[g+S+l[y+O]],k+=i(p-S+n,m-O+n,b),.5+35*k}},value:{init:function(){const{values:t,size:e,rndEngine:i}=this;t.length=0;for(let s=0;s{this[e]=t},this)},On.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=addStrings(this[e],t)},this)},On.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeOvalPath(),this.pathDefinition=t},On.makeOvalPath=function(){let t,e,i=parseFloat(this.offshootA.toFixed(6)),s=parseFloat(this.offshootB.toFixed(6)),n=this.radiusX,r=this.radiusY;if(n.substring||r.substring){let i=this.getHost();if(i){let[s,o]=i.currentDimensions;t=2*(n.substring?parseFloat(n)/100*s:n),e=2*(r.substring?parseFloat(r)/100*o:r)}}else t=2*n,e=2*r;let o=parseFloat((t*this.intersectX).toFixed(2)),a=parseFloat((t-o).toFixed(2)),l=parseFloat((e*this.intersectY).toFixed(2)),h=parseFloat((e-l).toFixed(2)),c="m0,0";return c+=`c${a*i},${l*s} ${a-a*s},${l-l*i}, ${a},${l} `,c+=`${-a*s},${h*i} ${a*i-a},${h-h*s} ${-a},${h} `,c+=`${-o*i},${-h*s} ${o*s-o},${h*i-h} ${-o},${-h} `,c+=`${o*s},${-l*i} ${o-o*i},${l*s-l} ${o},${-l}z`,c},On.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};O.Oval=Oval;const VideoAsset=function(t={}){return this.assetConstructor(t)};let wn=VideoAsset.prototype=Object.create(Object.prototype);wn.type="Video",wn.lib="asset",wn.isArtefact=!1,wn.isAsset=!0,wn=ee(wn),wn=He(wn),wn.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},wn.stringifyFunction=B,wn.processPacketOut=B,wn.finalizePacketOut=B,wn.clone=$;wn.getters;let An=wn.setters;wn.deltaSetters;An.source=function(t={}){t&&("VIDEO"===t.tagName.toUpperCase()&&(this.source=t,this.sourceNaturalWidth=t.videoWidth||0,this.sourceNaturalHeight=t.videoHeight||0,this.sourceLoaded=t.readyState>2),this.sourceLoaded&&this.notifySubscribers())},wn.checkSource=function(t,e){let i=this.source;i&&i.readyState>2?(this.sourceLoaded=!0,this.sourceNaturalWidth===i.videoWidth&&this.sourceNaturalHeight===i.videoHeight&&this.sourceNaturalWidth===t&&this.sourceNaturalHeight===e||(this.sourceNaturalWidth=i.videoWidth,this.sourceNaturalHeight=i.videoHeight,this.notifySubscribers())):this.sourceLoaded=!1},wn.addTextTrack=function(t,e,i){let s=this.source;s&&s.addTextTrack&&s.addTextTrack(t,e,i)},wn.captureStream=function(){let t=this.source;return!(!t||!t.captureStream)&&t.captureStream()},wn.canPlayType=function(t){let e=this.source;return e?e.canPlayType(t):"maybe"},wn.fastSeek=function(t){let e=this.source;e&&e.fastSeek&&e.fastSeek(t)},wn.load=function(){let t=this.source;t&&t.load()},wn.pause=function(){let t=this.source;t&&t.pause()},wn.play=function(){let t=this.source;return t?t.play().catch(t=>console.log(t.code,t.name,t.message)):Promise.reject("Source not defined")},wn.setMediaKeys=function(t){let e=this.source;return e?e.setMediaKeys?e.setMediaKeys(t):Promise.reject("setMediaKeys not supported"):Promise.reject("Source not defined")},wn.setSinkId=function(){let t=this.source;return t?t.setSinkId?t.setSinkId():Promise.reject("setSinkId not supported"):Promise.reject("Source not defined")};const xn=["video_audioTracks","video_autoPlay","video_buffered","video_controller","video_controls","video_controlsList","video_crossOrigin","video_currentSrc","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_duration","video_ended","video_error","video_loop","video_mediaGroup","video_mediaKeys","video_muted","video_networkState","video_paused","video_playbackRate","video_readyState","video_seekable","video_seeking","video_sinkId","video_src","video_srcObject","video_textTracks","video_videoTracks","video_volume"],Cn=["video_autoPlay","video_controller","video_controls","video_crossOrigin","video_currentTime","video_defaultMuted","video_defaultPlaybackRate","video_disableRemotePlayback","video_loop","video_mediaGroup","video_muted","video_playbackRate","video_src","video_srcObject","video_volume"],Dn=function(...t){let e=/.*\/(.*?)\./,i="";if(t.length){let s,n,r,o,a,l,h=!1,c=t[0];if(c.substring){let i=e.exec(c);s=i&&i[1]?i[1]:"",a=[...t],n="",r=!1,o=null,l="auto",h=!0}else c&&c.src&&(s=c.name||"",a=[...c.src],n=c.className||"",r=c.visibility||!1,o=document.querySelector(o),l=c.preload||"auto",h=!0);let u=Rn({name:s});if(h){let t=document.createElement("video");t.name=s,t.className=n,t.style.display=r?"block":"none",t.crossOrigin="anonymous",t.preload=l,a.forEach(e=>{let i=document.createElement("source");i.src=e,t.appendChild(i)}),t.onload=()=>{u.set({source:t}),o&&o.appendChild(t)},u.set({source:t}),i=s}}return i},Rn=function(t){return new VideoAsset(t)};O.VideoAsset=VideoAsset;const SpriteAsset=function(t={}){return this.assetConstructor(t),this};let En=SpriteAsset.prototype=Object.create(Object.prototype);En.type="Sprite",En.lib="asset",En.isArtefact=!1,En.isAsset=!0,En=ee(En),En=He(En);En.defs=_(En.defs,{manifest:null}),En.saveAsPacket=function(){return[this.name,this.type,this.lib,{}]},En.stringifyFunction=B,En.processPacketOut=B,En.finalizePacketOut=B,En.clone=$;En.getters;let Fn=En.setters;En.deltaSetters;Fn.source=function(t=[]){if(t&&t[0]){this.sourceHold||(this.sourceHold={});let e=this.sourceHold;t.forEach(t=>{let i=t.id||t.name;i&&(e[i]=t)}),this.source=t[0],this.sourceNaturalWidth=t[0].naturalWidth,this.sourceNaturalHeight=t[0].naturalHeight,this.sourceLoaded=t[0].complete}},En.checkSource=B;const Tn=function(...t){let e=/.*\/(.*?)\./,i=/\.(jpeg|jpg|png|gif|webp|svg|JPEG|JPG|PNG|GIF|WEBP|SVG)/,s=[];return t.forEach(t=>{let n,r,o,a,l,h=!1,c=!1;if(t.substring){let s=e.exec(t);n=s&&s[1]?s[1]:"",r=[t],o="",a=!1,l=t.replace(i,".json"),c=!0}else U(t)&&t.imageSrc&&t.manifestSrc?(n=t.name||"",r=Array.isArray(t.imageSrc)?t.imageSrc:[t.imageSrc],l=t.manifestSrc,o=t.className||"",a=t.visibility||!1,h=document.querySelector(t.parent),c=!0):s.push(!1);if(c){let t=Hn({name:n});U(l)?t.manifest=l:fetch(l).then(t=>{if(200!==t.status)throw new Error("Failed to load manifest");return t.json()}).then(e=>t.manifest=e).catch(t=>console.log(t.message));let c=[];r.forEach(t=>{let s,r,l=document.createElement("img");i.test(t)&&(r=e.exec(t),s=r&&r[1]?r[1]:""),l.name=s||n,l.className=o,l.crossorigin="anonymous",l.style.display=a?"block":"none",h&&h.appendChild(l),l.src=t,c.push(l)}),t.set({source:c}),s.push(n)}else s.push(!1)}),s},Hn=function(t){return new SpriteAsset(t)};function Mn(t={}){t.defs=_(t.defs,{asset:null,removeAssetOnKill:!1,spriteIsRunning:!1,spriteLastFrameChange:0,spriteCurrentFrame:0,spriteTrack:"default",spriteForward:!0,spriteFrameDuration:100,spriteWillLoop:!0});let e=t.setters;return e.asset=function(t){let e=this.asset,i=t&&t.name?t.name:t;e&&!e.substring&&e.unsubscribe(this),this.asset=i,this.dirtyAsset=!0},e.imageSource=function(t){let e=$e(t);if(e){let t=n[e[0]];if(t){let e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},e.videoSource=function(t){let e=Dn(t);if(e){let t=n[e];if(t){let e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},e.spriteSource=function(t){let e=Tn(t);if(e){let t=n[e];if(t){let e=this.asset;e&&e.unsubscribe&&e.unsubscribe(this),t.subscribe(this)}}},t.cleanAsset=function(){let t=this.asset;if(t&&t.substring){let e=n[t];e&&(this.dirtyAsset=!1,e.subscribe(this))}},t.videoAction=function(t,...e){let i=this.asset;if(i&&"Video"===i.type)return i[t](...e)},t.videoPromiseAction=function(t,...e){let i=this.asset;return i&&"Video"===i.type?i[t](...e):Promise.reject("Asset not a video")},t.videoAddTextTrack=function(t,e,i){return this.videoAction("addTextTrack",t,e,i)},t.videoCaptureStream=function(){return this.videoAction("captureStream")},t.videoCanPlayType=function(t){return this.videoAction("canPlayType",t)},t.videoFastSeek=function(t){return this.videoAction("fastSeek",t)},t.videoLoad=function(){return this.videoAction("load")},t.videoPause=function(){return this.videoAction("pause")},t.videoPlay=function(){return this.videoPromiseAction("play")},t.videoSetMediaKeys=function(t){return this.videoPromiseAction("setMediaKeys",t)},t.videoSetSinkId=function(){return this.videoPromiseAction("setSinkId")},t.checkSpriteFrame=function(){let t=this.asset;if(t&&"Sprite"===t.type){let e=this.copyArray;if(this.spriteIsRunning){let i=this.spriteLastFrameChange,s=this.spriteFrameDuration,n=Date.now();if(n>i+s){let i=t.manifest;if(i){let s=i[this.spriteTrack],r=s.length,o=this.spriteCurrentFrame,a=this.spriteWillLoop;o=this.spriteForward?o+1:o-1,o<0&&(o=a?r-1:0),o>=r&&(o=a?0:r-1);let[l,h,c,u,d]=s[o];if(e.length=0,e.push(h,c,u,d),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1,l!==(this.source.id||this.source.name)){let e=t.sourceHold[l];e&&(this.source=e)}this.spriteCurrentFrame=o,this.spriteLastFrameChange=n}}}else{let[i,s,n,r,o]=t.manifest[this.spriteTrack][this.spriteCurrentFrame],[a,l,h,c]=e;a===s&&l===n&&h===r&&c===o||(e.length=0,e.push(s,n,r,o),this.dirtyCopyStart=!1,this.dirtyCopyDimensions=!1)}}},t.playSprite=function(t,e,i,s,n){J(t)&&(this.spriteFrameDuration=t),J(e)&&(this.spriteWillLoop=e),J(i)&&(this.spriteTrack=i),J(s)&&(this.spriteForward=s),J(n)&&(this.spriteCurrentFrame=n),this.spriteLastFrameChange=Date.now(),this.spriteIsRunning=!0},t.haltSprite=function(t,e,i,s,n){J(t)&&(this.spriteFrameDuration=t),J(e)&&(this.spriteWillLoop=e),J(i)&&(this.spriteTrack=i),J(s)&&(this.spriteForward=s),J(n)&&(this.spriteCurrentFrame=n),this.spriteIsRunning=!1},t}O.SpriteAsset=SpriteAsset;const Pattern=function(t={}){return this.makeName(t.name),this.register(),this.set(this.defs),this.set(t),this};let In=Pattern.prototype=Object.create(Object.prototype);In.type="Pattern",In.lib="styles",In.isArtefact=!1,In.isAsset=!1,In=ee(In),In=Ze(In),In=Mn(In);In.defs=_(In.defs,{}),In.packetObjects=Q(In.packetObjects,["asset"]),In.finalizePacketOut=function(t,e){if(Array.isArray(e.patternMatrix))t.patternMatrix=e.patternMatrix;else{let e=this.patternMatrix;e&&(t.patternMatrix=[e.a,e.b,e.c,e.d,e.e,e.f])}return t},In.kill=function(){let{name:t,asset:e,removeAssetOnKill:i}=this;return U(e)&&e.unsubscribe(this),Object.entries(h).forEach(([e,i])=>{let s=i.state;if(s){let e=s.fillStyle,i=s.strokeStyle;U(e)&&e.name===t&&(s.fillStyle=s.defs.fillStyle),U(i)&&i.name===t&&(s.strokeStyle=s.defs.strokeStyle)}}),i&&(i.substring?e.kill(!0):e.kill()),this.deregister(),this},In.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t];return void 0!==i?(e=this[t],void 0!==e?e:i):undef}}return xn.indexOf(t)>=0||Be.indexOf(t)>=0?e[t.substring(6)]:void 0},In.set=function(t={}){if(Object.keys(t).length){let e,i=this.setters,s=this.defs,n=this.source;Object.entries(t).forEach(([t,r])=>{0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!n?t&&"name"!==t&&null!=r&&(e=i[t],e?e.call(this,r):void 0!==s[t]&&(this[t]=r)):(Cn.indexOf(t)>=0||Le.indexOf(t)>=0)&&(n[t.substring(6)]=r)},this)}return this},In.getData=function(t,e){return this.dirtyAsset&&this.cleanAsset(),this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight),this.buildStyle(e)};O.Pattern=Pattern;const FontAttributes=function(t={}){return this.makeName(t.name),this.set(this.defs),this.set(t),this};let Bn=FontAttributes.prototype=Object.create(Object.prototype);Bn.type="FontAttributes",Bn.lib="fontattribute",Bn=ee(Bn);Bn.defs=_(Bn.defs,{style:"normal",variant:"normal",weight:"normal",stretch:"normal",sizeValue:12,sizeMetric:"px",family:"sans-serif"});let Ln=Bn.getters,$n=Bn.setters;Bn.deltaSetters;Ln.size=function(){return this.sizeValue?`${this.sizeValue}${this.sizeMetric}`:this.sizeMetric},$n.size=function(t){if(J(t)){let e,i=0,s="medium";t.indexOf("xx-small")>=0?s="xx-small":t.indexOf("x-small")>=0?s="x-small":t.indexOf("smaller")>=0?s="smaller":t.indexOf("small")>=0?s="small":t.indexOf("xx-large")>=0?s="xx-large":t.indexOf("x-large")>=0?s="x-large":t.indexOf("larger")>=0?s="larger":t.indexOf("large")>=0?s="large":t.indexOf("medium")>=0?s="medium":(i=12,s="px"),/.* (\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i.test(t)?(e=t.match(/.* (\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i),i="."!==e[1]?parseFloat(e[1]):12,s=e[2]):/^(\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i.test(t)&&(e=t.match(/^(\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i),i="."!==e[1]?parseFloat(e[1]):12,s=e[2]),this.sizeValue=i,this.sizeMetric=s}},$n.font=function(t){J(t)&&($n.style.call(this,t),$n.variant.call(this,t),$n.weight.call(this,t),$n.stretch.call(this,t),$n.size.call(this,t),$n.family.call(this,t))},$n.style=function(t){let e="normal";J(t)&&(e=t.indexOf("italic")>=0?"italic":e,e=t.indexOf("oblique")>=0?"oblique":e),this.style=e},$n.variant=function(t){let e="normal";e=t.indexOf("small-caps")>=0?"small-caps":e,this.variant=e},$n.weight=function(t){let e="normal";J(t)&&(t.toFixed?e=t:(e=t.indexOf("bold")>=0?"bold":e,e=t.indexOf("lighter")>=0?"lighter":e,e=t.indexOf("bolder")>=0?"bolder":e,e=t.indexOf(" 100 ")>=0?"100":e,e=t.indexOf(" 200 ")>=0?"200":e,e=t.indexOf(" 300 ")>=0?"300":e,e=t.indexOf(" 400 ")>=0?"400":e,e=t.indexOf(" 500 ")>=0?"500":e,e=t.indexOf(" 600 ")>=0?"600":e,e=t.indexOf(" 700 ")>=0?"700":e,e=t.indexOf(" 800 ")>=0?"800":e,e=t.indexOf(" 900 ")>=0?"900":e,e=/^\d00$/.test(t)?t:e)),this.weight=e},$n.stretch=function(t){let e="normal";J(t)&&(e=t.indexOf("semi-condensed")>=0?"semi-condensed":e,e=t.indexOf("condensed")>=0?"condensed":e,e=t.indexOf("extra-condensed")>=0?"extra-condensed":e,e=t.indexOf("ultra-condensed")>=0?"ultra-condensed":e,e=t.indexOf("semi-condensed")>=0?"semi-condensed":e,e=t.indexOf("condensed")>=0?"condensed":e,e=t.indexOf("extra-condensed")>=0?"extra-condensed":e,e=t.indexOf("ultra-condensed")>=0?"ultra-condensed":e),this.stretch=e},$n.family=function(t){if(J(t)){let e=t.match(/( xx-small| x-small| small| medium| large| x-large| xx-large| smaller| larger|\d%|\dem|\dch|\dex|\drem|\dvh|\dvw|\dvmin|\dvmax|\dpx|\dcm|\dmm|\din|\dpc|\dpt) (.*)$/i);this.family=e&&e[2]?e[2]:t}},Bn.buildFont=function(t=1){let e="";"normal"!==this.style&&(e+=this.style+" "),"normal"!==this.variant&&(e+=this.variant+" "),"normal"!==this.weight&&(e+=this.weight+" "),"normal"!==this.stretch&&(e+=this.stretch+" "),this.sizeValue?e+=`${this.sizeValue*t}${this.sizeMetric} `:e+=this.sizeMetric+" ",e+=""+this.family;let i=si();return i.engine.font=e,e=i.engine.font,ni(i),e},Bn.update=function(t=1,e){return e&&this.set(e),this.buildFont(t)};O.FontAttributes=FontAttributes;const jn=document.createElement("div");jn.style.padding=0,jn.style.border=0,jn.style.margin=0,jn.style.height="auto",jn.style.lineHeight=1,jn.style.boxSizing="border-box",jn.innerHTML="|/}ÁÅþ§¶¿∑ƒ⌈⌊qwertyd0123456789QWERTY",jn.setAttribute("aria-hidden","true"),es.appendChild(jn);const Xn=document.createElement("textarea"),Yn=(t,e)=>(t=parseFloat(t),V(t)||(t=0),V(e)||(e=0),parseFloat(t.toFixed(e))),Nn=(t,e)=>(t=parseFloat(t),V(t)||(t=0),V(e)||(e=0),Math.abs(parseFloat(t.toFixed(e)))),Phrase=function(t={}){return this.fontAttributes=function(t){return new FontAttributes(t)}(t),delete t.font,delete t.style,delete t.variant,delete t.weight,delete t.stretch,delete t.size,delete t.sizeValue,delete t.sizeMetric,delete t.family,this.entityInit(t),this.sectionStyles=[],this.sectionClasses={DEFAULTS:{defaults:!0},BOLD:{weight:"bold"},ITALIC:{style:"italic"},"SMALL-CAPS":{variant:"small-caps"},HIGHLIGHT:{highlight:!0},UNDERLINE:{underline:!0},OVERLINE:{overline:!0},"/BOLD":{weight:"normal"},"/ITALIC":{style:"normal"},"/SMALL-CAPS":{variant:"normal"},"/HIGHLIGHT":{highlight:!1},"/UNDERLINE":{underline:!1},"/OVERLINE":{overline:!1}},this.dirtyDimensions=!0,this.dirtyText=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this};let zn=Phrase.prototype=Object.create(Object.prototype);zn.type="Phrase",zn.lib="entity",zn.isArtefact=!0,zn.isAsset=!1,zn=ee(zn),zn=fs(zn);zn.defs=_(zn.defs,{text:"",width:"auto",exposeText:!0,lineHeight:1.15,letterSpacing:0,justify:"left",sectionClassMarker:"§",sectionClasses:null,overlinePosition:-.1,overlineStyle:"rgb(250,0,0)",underlinePosition:.6,underlineStyle:"rgb(250,0,0)",highlightStyle:"rgba(250,218,94,0.4)",boundingBoxColor:"rgba(0,0,0,0.5)",showBoundingBox:!1,textPath:"",textPathPosition:0,textPathLoop:!0,addTextPathRoll:!0,textPathDirection:"ltr",treatWordAsGlyph:!1}),zn.packetExclusions=Q(zn.packetExclusions,["textPositions","textLines","textLineWidths","textLineWords","textGlyphs","textGlyphWidths","fontAttributes"]),zn.finalizePacketOut=function(t,e){let i=JSON.parse(this.state.saveAsPacket(e))[3];t=_(t,i);let s=JSON.parse(this.fontAttributes.saveAsPacket(e))[3];return delete s.name,t=_(t,s),t=this.handlePacketAnchor(t,e)},zn.factoryKill=function(){this.exposedTextHold&&this.exposedTextHold.remove()};let Gn=zn.getters,Wn=zn.setters,Vn=zn.deltaSetters;Wn.handleX=function(t){null!=t&&(this.handle[0]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},Wn.handleY=function(t){null!=t&&(this.handle[1]=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0)},Wn.handle=function(t,e){this.setCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},Vn.handleX=function(t){let e=this.handle;e[0]=addStrings(e[0],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},Vn.handleY=function(t){let e=this.handle;e[1]=addStrings(e[1],t),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},Vn.handle=function(t,e){this.setDeltaCoordinateHelper("handle",t,e),this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},Gn.text=function(){return this.currentText||this.text||""},Wn.text=function(t){var e;this.text=(e=t).substring?e:e.toString,this.dirtyText=!0,this.dirtyPathObject=!0,this.dirtyDimensions=!0},zn.permittedJustifications=["left","right","center","full"],Wn.justify=function(t){this.permittedJustifications.indexOf(t)>=0&&(this.justify=t),this.dirtyText=!0,this.dirtyPathObject=!0},Wn.width=function(t){this.dimensions[0]=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},Vn.width=function(t){let e=this.dimensions;e[0]=addStrings(e[0],t),this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyPathObject=!0,this.dirtyText=!0},Wn.scale=function(t){this.scale=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},Vn.scale=function(t){this.scale+=t,this.dirtyDimensions=!0,this.dirtyHandle=!0,this.dirtyFont=!0,this.dirtyPathObject=!0,this.dirtyScale=!0},Wn.lineHeight=function(t){this.lineHeight=Nn(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0},Vn.lineHeight=function(t){this.lineHeight+=Yn(t,3),this.lineHeight<.5&&(this.lineHeight=.5),this.dirtyPathObject=!0,this.dirtyText=!0},Wn.letterSpacing=function(t){this.letterSpacing=Nn(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},Vn.letterSpacing=function(t){this.letterSpacing+=Yn(t,3),this.letterSpacing<0&&(this.letterSpacing=0),this.dirtyPathObject=!0,this.dirtyText=!0},Wn.overlinePosition=function(t){this.overlinePosition=Yn(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},Vn.overlinePosition=function(t){this.overlinePosition+=Yn(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},Wn.underlinePosition=function(t){this.underlinePosition=Yn(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},Vn.underlinePosition=function(t){this.underlinePosition+=Yn(t,3),this.dirtyPathObject=!0,this.dirtyText=!0},Wn.textPath=function(t){this.textPath=t,this.dirtyHandle=!0,this.dirtyText=!0,this.dirtyPathObject=!0},Wn.textPathPosition=function(t){this.textPathLoop?(t<0&&(t=Math.abs(t)),t>1&&(t%=1),this.textPathPosition=parseFloat(t.toFixed(6))):this.textPathPosition=t},Vn.textPathPosition=function(t){let e=this.textPathPosition+t;this.textPathLoop?(e<0&&(e+=1),e>1&&(e%=1),this.textPathPosition=parseFloat(e.toFixed(6))):this.textPathPosition=e},Gn.font=function(){return this.fontAttributes.get("font")},Wn.font=function(t){this.fontAttributes.set({font:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.style=function(){return this.fontAttributes.get("style")},Wn.style=function(t){this.fontAttributes.set({style:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.variant=function(){return this.fontAttributes.get("variant")},Wn.variant=function(t){this.fontAttributes.set({variant:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.weight=function(){return this.fontAttributes.get("weight")},Wn.weight=function(t){this.fontAttributes.set({weight:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.stretch=function(){return this.fontAttributes.get("stretch")},Wn.stretch=function(t){this.fontAttributes.set({stretch:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.size=function(){return this.fontAttributes.get("size")},Wn.size=function(t){this.fontAttributes.set({size:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.sizeValue=function(){return this.fontAttributes.get("sizeValue")},Wn.sizeValue=function(t){this.fontAttributes.set({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Vn.sizeValue=function(t){this.fontAttributes.deltaSet({sizeValue:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.sizeMetric=function(){return this.fontAttributes.get("sizeMetric")},Wn.sizeMetric=function(t){this.fontAttributes.set({sizeMetric:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},Gn.family=function(){return this.fontAttributes.get("family")},Wn.family=function(t){this.fontAttributes.set({family:t}),this.dirtyFont=!0,this.dirtyPathObject=!0},zn.cleanDimensionsAdditionalActions=function(){if("auto"===this.dimensions[0]){this.buildText();let t=si(),e=t.engine;e.font=this.fontAttributes.buildFont(),this.currentDimensions[0]=Math.ceil(e.measureText(this.currentText).width),ni(t)}this.textLines?this.currentDimensions[1]=Math.ceil(this.textHeight*this.textLines.length*this.lineHeight/this.scale):this.dirtyDimensions=!0},zn.setSectionStyles=function(t){let e,i,s,n=new RegExp(this.sectionClassMarker),r=t.split(n),o=this.sectionStyles,a=this.sectionClasses,l="";return o.length=0,r.forEach(t=>{e=a[t],e?(i=l.length,s=o[i],s?Object.assign(s,e):o[i]=Object.assign({},e)):J(t)&&(l+=t)}),l},zn.addSectionClass=function(t,e){return tt(t,e)&&t.substring&&U(e)&&(this.sectionClasses[t]=e),this.dirtyText=!0,this.dirtyPathObject=!0,this},zn.removeSectionClass=function(t){return delete this.sectionClasses[t],this.dirtyText=!0,this.dirtyPathObject=!0,this},zn.getTextPath=function(){let t=this.textPath;return t&&t.substring&&(t=this.textPath=i[this.textPath],"Shape"===t.type&&t.useAsPath?t.pathed.push(this.name):t=this.path=!1),t},zn.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.dirtyFont&&this.fontAttributes&&(this.dirtyFont=!1,this.fontAttributes.buildFont(this.scale),this.dirtyText=!0,this.dirtyMimicDimensions=!0,this.dirtyPositionSubscribers=!0),this.dirtyText&&this.buildText(),this.dirtyHandle&&this.cleanHandle();let t=this.pathObject=new Path2D,e=this.currentHandle,i=this.currentDimensions,s=this.currentScale,n=-e[0]*s,r=-e[1]*s,o=i[0]*s,a=i[1]*s;this.boxStartValues=[n,r],t.rect(n,r,o,a)}},zn.buildText=function(){this.dirtyText=!1;let t=this.convertTextEntityCharacters(this.text);if(t=this.setSectionStyles(t),this.currentText=t,isNaN(this.currentDimensions[0]))this.dirtyText=!0;else if(this.calculateTextPositions(t),this.exposeText){if(!this.exposedTextHold){let t=document.createElement("div");t.id=this.name+"-text-hold",t.setAttribute("aria-live","polite"),this.exposedTextHold=t,this.exposedTextHoldAttached=!1}this.exposedTextHold.textContent=t,this.exposedTextHoldAttached||this.currentHost&&this.currentHost.controller&&this.currentHost.controller.textHold&&(this.currentHost.controller.textHold.appendChild(this.exposedTextHold),this.exposedTextHoldAttached=!0)}},zn.convertTextEntityCharacters=function(t){let e=t.trim();return e=e.replace(/[\s\uFEFF\xA0]+/g," "),Xn.innerHTML=e,Xn.value},zn.calculateTextPositions=function(t){const e=function(t){if(!H)return T.dirtyPathObject=!0,T.dirtyText=!0,"black";if(t.substring){let e=!1;if(k.indexOf(t)>=0?e=b[t]:l.indexOf(t)>=0&&(e=a[t]),e)return e}return t};let i,s,n,r,o,h,c,u,d,f,p,m,g,y,S,O,P,v,w,A,x,C,D,R,E=si(),F=E.engine,T=this,H=!(!this.group||!this.group.getHost)&&this.group.getHost(),M=[],I=[],B=[],L=[],$=[],j=[],X=[],Y=this.getTextPath(),N=this.fontAttributes,z=N.clone({}),G=this.sectionStyles,W=this.state,V={},U=[],q=this.currentScale,_=this.currentDimensions,Z=_[0]*q,Q=this.treatWordAsGlyph,K=this.lineHeight,tt=this.justify,et=N.update(q),it=e(W.fillStyle),st=e(W.strokeStyle),nt=this.letterSpacing*q,rt=et,ot=it,at=st,lt=nt,ht=(!!this.highlightStyle&&e(this.highlightStyle),!1),ct=(!!this.underlineStyle&&e(this.underlineStyle),this.underlinePosition,!1),ut=(!!this.overlineStyle&&e(this.overlineStyle),this.overlinePosition,!1),dt=0;for(i=Q?t.split(" "):t.split(""),U.push(rt),f=0,p=i.length;f{jn.style.font=t,r=jn.clientHeight,V[t]=r}),dt=Math.max(...Object.values(V)),x=A=o=h=0,f=0,p=$.length;fP&&!n[0]&&(j[f]-=S-P));for(f=0,p=$.length;f=Z&&ot+e,0),B.push(S),A-=S,o=h+1),f+1===p&&(A===x?(y=t,I.push(y),L.push(Q?y.split(" ").length-1:y.split(" ").length),B.push(x)):(y=i.slice(o).join(""),I.push(y),S=Q?y.split(" ").length-1:y.split(" ").length,L.push(S),S=M.slice(o).reduce((t,e)=>t+e,0),B.push(S))),J(O[3])&&(ht=O[3]),J(O[4])&&(ct=O[4]),J(O[5])&&(ut=O[5]),O[3]=ht,O[4]=ct,O[5]=ut;if(q<=0&&(q=1),_[1]=Math.ceil(dt*I.length*K/q),this.cleanHandle(),this.dirtyHandle=!1,C=this.currentHandle,D=-C[0]*q,R=-C[1]*q,!Y)if("full"===tt)for(c=0,u=R,f=0,p=B.length;f1?(Z-B[f])/(L[f]-1):0,m=0,g=I[f].length;m1||n<0)&&(n=n>.5?n-1:n+1),t[10]=n<=1&&n>=0&&r.getPathPositionData(n,f),t[9]=s,h?c+=s/o:c-=s/o,d&&(c>1||c<0)&&(c=c>.5?c-1:c+1)}},zn.preStamper=function(t,e,i,s){const n=function(e){return e.getData?e.getData(i,t):e};let[r,o,a,l,h,c,...u]=s;if(r&&(e.font=r),l||h||c){let t=i.highlightStyle,s=i.textHeight,r=i.underlineStyle,o=i.underlinePosition,a=i.overlineStyle,d=i.overlinePosition;e.save(),l&&(e.fillStyle=n(t),e.fillRect(u[1],u[2],u[3],s)),h&&(e.strokeStyle=n(r),e.strokeRect(u[1],u[2]+s*o,u[3],1)),c&&(e.strokeStyle=n(a),e.strokeRect(u[1],u[2]+s*d,u[3],1)),e.restore()}return o&&(e.strokeStyle=n(o)),a&&(e.fillStyle=n(a)),u},zn.stamper={draw:function(t,e,i){t.strokeText(...i)},fill:function(t,e,i){t.fillText(...i)},drawAndFill:function(t,e,i){t.strokeText(...i),e.currentHost.clearShadow(),t.fillText(...i),e.currentHost.restoreShadow(e)},fillAndDraw:function(t,e,i){t.strokeText(...i),e.currentHost.clearShadow(),t.fillText(...i),t.strokeText(...i),e.currentHost.restoreShadow(e)},drawThenFill:function(t,e,i){t.strokeText(...i),t.fillText(...i)},fillThenDraw:function(t,e,i){t.fillText(...i),t.strokeText(...i)},clear:function(t,e,i){let s=t.globalCompositeOperation;t.globalCompositeOperation="destination-out",t.fillText(...i),t.globalCompositeOperation=s}},zn.drawBoundingBox=function(t){t.save(),t.strokeStyle=this.boundingBoxColor,t.lineWidth=1,t.globalCompositeOperation="source-over",t.globalAlpha=1,t.shadowOffsetX=0,t.shadowOffsetY=0,t.shadowBlur=0,t.stroke(this.pathObject),t.restore()},zn.performRotation=function(t){let e=this.currentHost;if(e){let[i,s]=this.currentStampPosition;e.rotateDestination(t,i,s,this)}};O.Phrase=Phrase;const Picture=function(t={}){return this.copyStart=Te(),this.currentCopyStart=Te(),this.copyDimensions=Te(),this.currentCopyDimensions=Te(),this.copyArray=[],this.pasteArray=[],this.entityInit(t),t.copyStart||(t.copyStartX||(this.copyStart[0]=0),t.copyStartY||(this.copyStart[1]=0)),t.copyDimensions||(t.copyWidth||(this.copyDimensions[0]=1),t.copyHeight||(this.copyDimensions[1]=1)),this.imageSubscribers=[],this.dirtyCopyStart=!0,this.dirtyCopyDimensions=!0,this.dirtyImage=!0,this};let Un=Picture.prototype=Object.create(Object.prototype);Un.type="Picture",Un.lib="entity",Un.isArtefact=!0,Un.isAsset=!1,Un=ee(Un),Un=fs(Un),Un=Mn(Un);Un.defs=_(Un.defs,{copyStart:null,copyDimensions:null,checkHitIgnoreTransparency:!1}),Un.packetCoordinates=Q(Un.packetCoordinates,["copyStart","copyDimensions"]),Un.packetObjects=Q(Un.packetObjects,["asset"]),Un.factoryKill=function(t=!1){let{asset:e,removeAssetOnKill:i}=this;U(e)&&e.unsubscribe(this),i&&(i.substring?e.kill(!0):e.kill())};let qn=Un.getters,_n=Un.setters,Zn=Un.deltaSetters;qn.copyStartX=function(){return this.currentCopyStart[0]},qn.copyStartY=function(){return this.currentCopyStart[1]},_n.copyStartX=function(t){null!=t&&(this.copyStart[0]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0)},_n.copyStartY=function(t){null!=t&&(this.copyStart[1]=t,this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0)},_n.copyStart=function(t,e){this.setCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0},Zn.copyStartX=function(t){let e=this.copyStart;e[0]=H(e[0],t),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0},Zn.copyStartY=function(t){let e=this.copyStart;e[1]=H(e[1],t),this.dirtyCopyStart=!0},Zn.copyStart=function(t,e){this.setDeltaCoordinateHelper("copyStart",t,e),this.dirtyCopyStart=!0,this.dirtyImageSubscribers=!0},qn.copyWidth=function(){return this.currentCopyDimensions[0]},qn.copyHeight=function(){return this.currentCopyDimensions[1]},_n.copyWidth=function(t){null!=t&&(this.copyDimensions[0]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0)},_n.copyHeight=function(t){null!=t&&(this.copyDimensions[1]=t,this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0)},_n.copyDimensions=function(t,e){this.setCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},Zn.copyWidth=function(t){let e=this.copyDimensions;e[0]=H(e[0],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},Zn.copyHeight=function(t){let e=this.copyDimensions;e[1]=H(e[1],t),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},Zn.copyDimensions=function(t,e){this.setDeltaCoordinateHelper("copyDimensions",t,e),this.dirtyCopyDimensions=!0,this.dirtyImageSubscribers=!0},_n.checkHitIgnoreTransparency=function(t){this.checkHitIgnoreTransparency=t,t&&(this.stashOutput=!0)},Un.get=function(t){let e=this.source;if(0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!e){let e=this.getters[t];if(e)return e.call(this);{let e,i=this.defs[t],s=this.state;return void 0!==i?(e=this[t],void 0!==e?e:i):(i=s.defs[t],void 0!==i?(e=s[t],void 0!==e?e:i):undef)}}return xn.indexOf(t)>=0||Be.indexOf(t)>=0?e[t.substring(6)]:void 0},Un.set=function(t={}){if(Object.keys(t).length){let e,i,s=this.setters,n=this.defs,r=this.state,o=this.source,a=r?r.setters:{},l=r?r.defs:{};Object.entries(t).forEach(([t,h])=>{0!==t.indexOf("video_")&&0!==t.indexOf("image_")||!o?t&&"name"!==t&&null!=h&&(e=s[t],i=!1,e||(e=a[t],i=!0),e?e.call(i?this.state:this,h):void 0!==n[t]?this[t]=h:void 0!==l[t]&&(r[t]=h)):(Cn.indexOf(t)>=0||Le.indexOf(t)>=0)&&(o[t.substring(6)]=h)},this)}return this},Un.updateImageSubscribers=function(){this.dirtyImageSubscribers=!1,this.imageSubscribers.length&&this.imageSubscribers.forEach(t=>{let e=i[t];e&&(e.dirtyInput=!0)})},Un.imageSubscribe=function(t){t&&t.substring&&Q(this.imageSubscribers,t)},Un.imageUnsubscribe=function(t){t&&t.substring&&K(this.imageSubscribers,t)},Un.cleanImage=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(tt(t,e)){this.dirtyImage=!1;let i=this.currentCopyStart,s=i[0],n=i[1],r=this.currentCopyDimensions,o=r[0],a=r[1];s+o>t&&(i[0]=t-o),n+a>e&&(i[1]=e-a);let l=this.copyArray;l.length=0,l.push(i[0],i[1],o,a)}},Un.cleanCopyStart=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(tt(t,e)){this.dirtyCopyStart=!1,this.cleanPosition(this.currentCopyStart,this.copyStart,[t,e]);let i=this.currentCopyStart,s=i[0],n=i[1];(s<0||s>t)&&(i[0]=s<0?0:t-1),(n<0||n>e)&&(i[1]=n<0?0:e-1),this.dirtyImage=!0}},Un.cleanCopyDimensions=function(){let t=this.sourceNaturalWidth,e=this.sourceNaturalHeight;if(tt(t,e)){this.dirtyCopyDimensions=!1;let i=this.copyDimensions,s=this.currentCopyDimensions,n=i[0],r=i[1];n.substring?s[0]=parseFloat(n)/100*t:s[0]=n,r.substring?s[1]=parseFloat(r)/100*e:s[1]=r;let o=s[0],a=s[1];(o<=0||o>t)&&(s[0]=o<=0?1:t),(a<=0||a>e)&&(s[1]=a<=0?1:e),this.dirtyImage=!0}},Un.prepareStamp=function(){this.dirtyAsset&&this.cleanAsset(),this.asset&&("Sprite"===this.asset.type?this.checkSpriteFrame(this):this.asset.checkSource?this.asset.checkSource(this.sourceNaturalWidth,this.sourceNaturalHeight):this.dirtyAsset=!0),(this.dirtyDimensions||this.dirtyHandle||this.dirtyScale)&&(this.dirtyPaste=!0),(this.dirtyScale||this.dirtyDimensions||this.dirtyStart||this.dirtyOffset||this.dirtyHandle)&&(this.dirtyPathObject=!0),this.dirtyScale&&this.cleanScale(),this.dirtyDimensions&&this.cleanDimensions(),this.dirtyLock&&this.cleanLock(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyHandle&&this.cleanHandle(),this.dirtyRotation&&this.cleanRotation(),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtyStampHandlePositions&&this.cleanStampHandlePositions(),this.dirtyCopyStart&&this.cleanCopyStart(),this.dirtyCopyDimensions&&this.cleanCopyDimensions(),this.dirtyImage&&this.cleanImage(),this.dirtyPaste&&this.preparePasteObject(),this.dirtyPathObject&&this.cleanPathObject(),this.dirtyPositionSubscribers&&this.updatePositionSubscribers(),this.dirtyImageSubscribers&&this.updateImageSubscribers()},Un.preparePasteObject=function(){this.dirtyPaste=!1;let t=this.currentStampHandlePosition,e=this.currentDimensions,i=this.currentScale,s=-t[0]*i,n=-t[1]*i,r=e[0]*i,o=e[1]*i,a=this.pasteArray;a.length=0,a.push(s,n,r,o),this.dirtyPathObject=!0},Un.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){this.pasteArray||this.preparePasteObject(),(this.pathObject=new Path2D).rect(...this.pasteArray)}},Un.draw=function(t){t.stroke(this.pathObject)},Un.fill=function(t){this.source&&t.drawImage(this.source,...this.copyArray,...this.pasteArray)},Un.drawAndFill=function(t){t.stroke(this.pathObject),this.source&&(this.currentHost.clearShadow(),t.drawImage(this.source,...this.copyArray,...this.pasteArray))},Un.fillAndDraw=function(t){t.stroke(this.pathObject),this.source&&(this.currentHost.clearShadow(),t.drawImage(this.source,...this.copyArray,...this.pasteArray)),t.stroke(this.pathObject)},Un.drawThenFill=function(t){t.stroke(this.pathObject),this.source&&t.drawImage(this.source,...this.copyArray,...this.pasteArray)},Un.fillThenDraw=function(t){this.source&&t.drawImage(this.source,...this.copyArray,...this.pasteArray),t.stroke(this.pathObject)},Un.checkHitReturn=function(t,e,i){if(this.checkHitIgnoreTransparency&&i&&i.engine){let[s,n,r,o]=this.copyArray,[a,l,h,c]=this.pasteArray,[u,d]=this.currentStampPosition,f=4*((e-d)*h+(t-u))+3;return!!i.engine.getImageData(s,n,r,o).data[f]&&{x:t,y:e,artefact:this}}return{x:t,y:e,artefact:this}};O.Picture=Picture;const Polygon=function(t={}){return this.shapeInit(t),this};let Qn=Polygon.prototype=Object.create(Object.prototype);Qn.type="Polygon",Qn.lib="entity",Qn.isArtefact=!0,Qn.isAsset=!1,Qn=ee(Qn),Qn=Ss(Qn);Qn.defs=_(Qn.defs,{sides:0,radius:0});let Kn=Qn.setters,Jn=Qn.deltaSetters;Kn.sides=function(t){this.sides=t,this.updateDirty()},Jn.sides=function(t){this.sides+=t,this.updateDirty()},Kn.radius=function(t){this.radius=t,this.updateDirty()},Jn.radius=function(t){this.radius+=t,this.updateDirty()},Qn.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolygonPath(),this.pathDefinition=t},Qn.makePolygonPath=function(){let t,e,i,s=this.radius,n=this.sides,r=360/n,o="",a=[],l=0,h=di({x:0,y:-s});for(let t=0;t{if("pins"===e){let e=[];t.pins.forEach(t=>{U(t)?e.push(t.name):Array.isArray(t)?e.push([].concat(t)):e.push(t)}),t.pins=e}}),t};let er=tr.getters,ir=tr.setters,sr=tr.deltaSetters;er.pins=function(t){return J(t)?this.getPinAt(t):this.currentPins.concat()},ir.pins=function(t){if(J(t)){let e=this.pins;if(Array.isArray(t))e.forEach((t,e)=>this.removePinAt(e)),e.length=0,e.push(...t),this.updateDirty();else if(U(t)&&J(t.index)){let i=e[t.index];Array.isArray(i)&&(J(t.x)&&(i[0]=t.x),J(t.y)&&(i[1]=t.y),this.updateDirty())}}},sr.pins=function(t){if(J(t)){let e=this.pins;if(U(t)&&J(t.index)){let i=e[t.index];Array.isArray(i)&&(J(t.x)&&(i[0]=addStrings(i[0],t.x)),J(t.y)&&(i[1]=addStrings(i[1],t.y)),this.updateDirty())}}},ir.tension=function(t){t.toFixed&&(this.tension=t,this.updateDirty())},sr.tension=function(t){t.toFixed&&(this.tension+=t,this.updateDirty())},ir.closed=function(t){this.closed=t,this.updateDirty()},ir.mapToPins=function(t){this.mapToPins=t,this.updateDirty()},ir.flipUpend=function(t){this.flipUpend=t,this.updateDirty()},ir.flipReverse=function(t){this.flipReverse=t,this.updateDirty()},ir.useAsPath=function(t){this.useAsPath=t,this.updateDirty()},ir.pivot=function(t){if(N(t)&&!t)this.pivot=null,"pivot"===this.lockTo[0]&&(this.lockTo[0]="start"),"pivot"===this.lockTo[1]&&(this.lockTo[1]="start"),this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0;else{let e=this.pivot,s=t.substring?i[t]:t,n=this.name;s&&s.name&&(e&&e.name!==s.name&&K(e.pivoted,n),Q(s.pivoted,n),this.pivot=s,this.dirtyStampPositions=!0,this.dirtyStampHandlePositions=!0)}this.updateDirty()},tr.updateDirty=function(){this.dirtySpecies=!0,this.dirtyPathObject=!0,this.dirtyPins=!0},tr.getPinAt=function(t){let e=Math.floor(t);if(this.useAsPath){let t=this.getPathPositionData(this.unitPartials[e]);return[t.x,t.y]}{let t,i,s=this.currentPins,n=s[e],[r,o,a,l]=this.localBox,[h,c]=n,[u,d]=s[0],[f,p]=this.localOffset,[m,g]=this.currentStampPosition;return this.mapToPins?(t=h-u+r,i=c-u+o):(t=h-f,i=c-p),[m+t,g+i]}},tr.updatePinAt=function(t,e){if(tt(t,e)){e=Math.floor(e);let i=this.pins;if(e=0){let s=i[e];U(s)&&s.pivoted&&K(s.pivoted,this.name),i[e]=t,this.updateDirty()}}},tr.removePinAt=function(t){t=Math.floor(t);let e=this.pins;if(t=0){let i=e[t];U(i)&&i.pivoted&&K(i.pivoted,this.name),e[t]=null,this.updateDirty()}},tr.prepareStamp=function(){this.dirtyHost&&(this.dirtyHost=!1),this.useParticlesAsPins&&(this.dirtyPins=!0),(this.dirtyPins||this.dirtyLock)&&(this.dirtySpecies=!0),(this.dirtyScale||this.dirtySpecies||this.dirtyDimensions||this.dirtyStart||this.dirtyHandle)&&(this.dirtyPathObject=!0,(this.dirtyScale||this.dirtySpecies)&&(this.pathCalculatedOnce=!1)),(this.isBeingDragged||this.lockTo.indexOf("mouse")>=0||this.lockTo.indexOf("particle")>=0)&&(this.dirtyStampPositions=!0),this.dirtyScale&&this.cleanScale(),this.dirtyStart&&this.cleanStart(),this.dirtyOffset&&this.cleanOffset(),this.dirtyRotation&&this.cleanRotation(),this.dirtyStampPositions&&this.cleanStampPositions(),this.dirtySpecies&&this.cleanSpecies(),this.dirtyPathObject&&(this.cleanPathObject(),this.updatePathSubscribers()),this.dirtyPositionSubscribers&&this.updatePositionSubscribers()},tr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makePolylinePath(),this.pathDefinition=t},tr.getPathParts=function(t,e,i,s,n,r,o){let a=Math.sqrt,l=Math.pow,h=a(l(i-t,2)+l(s-e,2)),c=a(l(n-i,2)+l(r-s,2)),u=o*h/(h+c),d=o*c/(h+c);return[i-u*(n-t),s-u*(r-e),i,s,i+d*(n-t),s+d*(r-e)]},tr.buildLine=function(t,e,i){let s="m0,0l";for(let n=2;n2&&(t=i[r],e=i[r+1],n=0);return s},tr.cleanCoordinate=function(t,e){return t.toFixed?t:"left"===t||"top"===t?0:"right"===t||"bottom"===t?e:"center"===t?e/2:parseFloat(t)/100*e},tr.cleanPinsArray=function(){this.dirtyPins=!1;let t=this.pins,e=this.currentPins;if(e.length=0,this.useParticlesAsPins)t.forEach((i,s)=>{let n;i&&i.substring?(n=d[i],n&&(t[s]=n)):n=i;let r=!(!n||!n.position)&&n.position;r&&e.push([r.x,r.y])}),e.length||(this.dirtyPins=!0);else{let s,n,r,o=1,a=1,l=this.getHost(),h=this.cleanCoordinate;l&&(r=l.currentDimensions,r&&([o,a]=r)),t.forEach((r,l)=>{let c;if(r&&r.substring?(c=i[r],t[l]=c):c=r,c)if(Array.isArray(c))[s,n]=c,e.push([h(s,o),h(n,a)]);else if(U(c)&&c.currentStart){let t=this.name;c.pivoted.indexOf(t)<0&&Q(c.pivoted,t),e.push([...c.currentStampPosition])}})}if(e.length){let t=e[0][0],i=e[0][1];e.forEach(e=>{e[0]{let e=i[t];e&&(e.dirtyStart=!0)})};O.Polyline=Polyline;const Quadratic=function(t={}){return this.control=Te(),this.currentControl=Te(),this.controlLockTo="coord",this.curveInit(t),this.shapeInit(t),this.dirtyControl=!0,this};let nr=Quadratic.prototype=Object.create(Object.prototype);nr.type="Quadratic",nr.lib="entity",nr.isArtefact=!0,nr.isAsset=!1,nr=ee(nr),nr=Ss(nr),nr=Ps(nr);nr.defs=_(nr.defs,{control:null,controlPivot:"",controlPivotCorner:"",addControlPivotHandle:!1,addControlPivotOffset:!1,controlPath:"",controlPathPosition:0,addControlPathHandle:!1,addControlPathOffset:!0,controlParticle:"",controlLockTo:""}),nr.packetExclusions=Q(nr.packetExclusions,[]),nr.packetExclusionsByRegex=Q(nr.packetExclusionsByRegex,[]),nr.packetCoordinates=Q(nr.packetCoordinates,["control"]),nr.packetObjects=Q(nr.packetObjects,["controlPivot","controlPath"]),nr.packetFunctions=Q(nr.packetFunctions,[]);nr.getters;let rr=nr.setters,or=nr.deltaSetters;rr.controlPivot=function(t){this.setControlHelper(t,"controlPivot","control"),this.updateDirty(),this.dirtyControl=!0},rr.controlParticle=function(t){this.setControlHelper(t,"controlParticle","control"),this.updateDirty(),this.dirtyControl=!0},rr.controlPath=function(t){this.setControlHelper(t,"controlPath","control"),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},rr.controlPathPosition=function(t){this.controlPathPosition=t,this.dirtyControl=!0,this.currentControlPathData=!1},or.controlPathPosition=function(t){this.controlPathPosition+=t,this.dirtyControl=!0,this.currentControlPathData=!1},rr.controlX=function(t){null!=t&&(this.control[0]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},rr.controlY=function(t){null!=t&&(this.control[1]=t,this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1)},rr.control=function(t,e){this.setCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},or.controlX=function(t){let e=this.control;e[0]=H(e[0],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},or.controlY=function(t){let e=this.control;e[1]=H(e[1],t),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},or.control=function(t,e){this.setDeltaCoordinateHelper("control",t,e),this.updateDirty(),this.dirtyControl=!0,this.currentControlPathData=!1},rr.controlLockTo=function(t){this.controlLockTo=t,this.updateDirty(),this.dirtyControlLock=!0,this.currentControlPathData=!1},nr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeQuadraticPath(),this.pathDefinition=t},nr.makeQuadraticPath=function(){let[t,e]=this.currentStampPosition,[i,s]=this.currentControl,[n,r]=this.currentEnd;return`m0,0q${(i-t).toFixed(2)},${(s-e).toFixed(2)} ${(n-t).toFixed(2)},${(r-e).toFixed(2)}`},nr.cleanDimensions=function(){this.dirtyDimensions=!1,this.dirtyHandle=!0,this.dirtyOffset=!0,this.dirtyStart=!0,this.dirtyControl=!0,this.dirtyEnd=!0},nr.preparePinsForStamp=function(){let t=this.endPivot,e=this.endPath,i=this.controlPivot,s=this.controlPath;this.dirtyPins.forEach(n=>{(i&&i.name===n||s&&s.name===n)&&(this.dirtyControl=!0,this.controlLockTo.includes("path")&&(this.currentControlPathData=!1)),(t&&t.name===n||e&&e.name===n)&&(this.dirtyEnd=!0,this.endLockTo.includes("path")&&(this.currentEndPathData=!1))}),this.dirtyPins.length=0};O.Quadratic=Quadratic;const RadialGradient=function(t={}){return this.stylesInit(t),this};let ar=RadialGradient.prototype=Object.create(Object.prototype);ar.type="RadialGradient",ar.lib="styles",ar.isArtefact=!1,ar.isAsset=!1,ar=ee(ar),ar=Qs(ar);ar.defs=_(ar.defs,{startRadius:0,endRadius:0}),ar.packetObjects=Q(ar.packetObjects,["palette"]);let lr=ar.getters,hr=ar.setters,cr=ar.deltaSetters;lr.startRadius=function(t){return this.currentStartRadius},lr.endRadius=function(t){return this.currentEndRadius},hr.startRadius=function(t){this.startRadius=t,this.dirtyStyle=!0},hr.endRadius=function(t){this.endRadius=t,this.dirtyStyle=!0},cr.startRadius=function(t){this.startRadius=H(this.startRadius,t),this.dirtyStyle=!0},cr.endRadius=function(t){this.endRadius=H(this.endRadius,t),this.dirtyStyle=!0},ar.cleanRadius=function(t){const e=(t,e)=>{if(V(t))return t;switch(t){case"top":case"left":return 0;case"bottom":case"right":return e;case"center":return e/2;default:return t=parseFloat(t),V(t)?t/100*e:0}};this.currentStartRadius=t?e(this.startRadius,t):this.defs.startRadius,this.currentEndRadius=t?e(this.endRadius,t):this.defs.endRadius},ar.buildStyle=function(t={}){if(t){let e=t.engine;if(e){let t=e.createRadialGradient(...this.gradientArgs);return this.addStopsToGradient(t,this.paletteStart,this.paletteEnd,this.cyclePalette)}}return"rgba(0,0,0,0)"},ar.updateGradientArgs=function(t,e){let i=this.gradientArgs,s=this.currentStart,n=this.currentEnd,r=this.currentStartRadius,o=this.currentEndRadius,a=s[0]+t,l=s[1]+e,h=n[0]+t,c=n[1]+e;a===h&&l===c&&r===o&&o++,i.length=0,i.push(a,l,r,h,c,o)};O.RadialGradient=RadialGradient;const Rectangle=function(t={}){return this.shapeInit(t),this.currentRectangleWidth=1,this.currentRectangleHeight=1,this};let ur=Rectangle.prototype=Object.create(Object.prototype);ur.type="Rectangle",ur.lib="entity",ur.isArtefact=!0,ur.isAsset=!1,ur=ee(ur),ur=Ss(ur);ur.defs=_(ur.defs,{rectangleWidth:10,rectangleHeight:10,radiusTLX:0,radiusTLY:0,radiusTRX:0,radiusTRY:0,radiusBRX:0,radiusBRY:0,radiusBLX:0,radiusBLY:0,offshootA:.55,offshootB:0});let dr=ur.setters,fr=ur.deltaSetters;dr.radius=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},dr.radiusX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},dr.radiusY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},dr.radiusT=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},dr.radiusB=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},dr.radiusL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},dr.radiusR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},dr.radiusTX=function(t){this.setRectHelper(t,["radiusTLX","radiusTRX"])},dr.radiusBX=function(t){this.setRectHelper(t,["radiusBRX","radiusBLX"])},dr.radiusLX=function(t){this.setRectHelper(t,["radiusTLX","radiusBLX"])},dr.radiusRX=function(t){this.setRectHelper(t,["radiusTRX","radiusBRX"])},dr.radiusTY=function(t){this.setRectHelper(t,["radiusTLY","radiusTRY"])},dr.radiusBY=function(t){this.setRectHelper(t,["radiusBRY","radiusBLY"])},dr.radiusLY=function(t){this.setRectHelper(t,["radiusTLY","radiusBLY"])},dr.radiusRY=function(t){this.setRectHelper(t,["radiusTRY","radiusBRY"])},dr.radiusTL=function(t){this.setRectHelper(t,["radiusTLX","radiusTLY"])},dr.radiusTR=function(t){this.setRectHelper(t,["radiusTRX","radiusTRY"])},dr.radiusBL=function(t){this.setRectHelper(t,["radiusBLX","radiusBLY"])},dr.radiusBR=function(t){this.setRectHelper(t,["radiusBRX","radiusBRY"])},dr.radiusTLX=function(t){this.setRectHelper(t,["radiusTLX"])},dr.radiusTLY=function(t){this.setRectHelper(t,["radiusTLY"])},dr.radiusTRX=function(t){this.setRectHelper(t,["radiusTRX"])},dr.radiusTRY=function(t){this.setRectHelper(t,["radiusTRY"])},dr.radiusBRX=function(t){this.setRectHelper(t,["radiusBRX"])},dr.radiusBRY=function(t){this.setRectHelper(t,["radiusBRY"])},dr.radiusBLX=function(t){this.setRectHelper(t,["radiusBLX"])},dr.radiusBLY=function(t){this.setRectHelper(t,["radiusBLY"])},fr.radius=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX","radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},fr.radiusX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX","radiusBRX","radiusBLX","radiusX"])},fr.radiusY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY","radiusBRY","radiusBLY","radiusY"])},fr.radiusT=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusTRX","radiusTRY"])},fr.radiusB=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY","radiusBLX","radiusBLY"])},fr.radiusL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY","radiusBLX","radiusBLY"])},fr.radiusR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY","radiusBRX","radiusBRY"])},fr.radiusTX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTRX"])},fr.radiusBX=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBLX"])},fr.radiusLX=function(t){this.deltaRectHelper(t,["radiusTLX","radiusBLX"])},fr.radiusRX=function(t){this.deltaRectHelper(t,["radiusTRX","radiusBRX"])},fr.radiusTY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusTRY"])},fr.radiusBY=function(t){this.deltaRectHelper(t,["radiusBRY","radiusBLY"])},fr.radiusLY=function(t){this.deltaRectHelper(t,["radiusTLY","radiusBLY"])},fr.radiusRY=function(t){this.deltaRectHelper(t,["radiusTRY","radiusBRY"])},fr.radiusTL=function(t){this.deltaRectHelper(t,["radiusTLX","radiusTLY"])},fr.radiusTR=function(t){this.deltaRectHelper(t,["radiusTRX","radiusTRY"])},fr.radiusBL=function(t){this.deltaRectHelper(t,["radiusBLX","radiusBLY"])},fr.radiusBR=function(t){this.deltaRectHelper(t,["radiusBRX","radiusBRY"])},fr.radiusTLX=function(t){this.deltaRectHelper(t,["radiusTLX"])},fr.radiusTLY=function(t){this.deltaRectHelper(t,["radiusTLY"])},fr.radiusTRX=function(t){this.deltaRectHelper(t,["radiusTRX"])},fr.radiusTRY=function(t){this.deltaRectHelper(t,["radiusTRY"])},fr.radiusBRX=function(t){this.deltaRectHelper(t,["radiusBRX"])},fr.radiusBRY=function(t){this.deltaRectHelper(t,["radiusBRY"])},fr.radiusBLX=function(t){this.deltaRectHelper(t,["radiusBLX"])},fr.radiusBLY=function(t){this.deltaRectHelper(t,["radiusBLY"])},dr.offshootA=function(t){this.offshootA=t,this.updateDirty()},dr.offshootB=function(t){this.offshootB=t,this.updateDirty()},fr.offshootA=function(t){t.toFixed&&(this.offshootA+=t,this.updateDirty())},fr.offshootB=function(t){t.toFixed&&(this.offshootB+=t,this.updateDirty())},dr.rectangleWidth=function(t){null!=t&&(this.rectangleWidth=t,this.dirtyDimensions=!0)},dr.rectangleHeight=function(t){null!=t&&(this.rectangleHeight=t,this.dirtyDimensions=!0)},fr.rectangleWidth=function(t){this.rectangleWidth=H(this.rectangleWidth,t),this.dirtyDimensions=!0},fr.rectangleHeight=function(t){this.rectangleHeight=H(this.rectangleHeight,t),this.dirtyDimensions=!0},ur.setRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=t},this)},ur.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=H(this[e],t)},this)},ur.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeRectanglePath(),this.pathDefinition=t},ur.cleanDimensions=function(){let t=this.getHost();if(t){let e=t.currentDimensions?t.currentDimensions:[t.w,t.h],i=this.rectangleWidth,s=this.rectangleHeight,n=this.currentRectangleWidth||1,r=this.currentRectangleHeight||1;i.substring&&(i=parseFloat(i)/100*e[0]),s.substring&&(s=parseFloat(s)/100*e[1]);let o,a=this.mimic;a&&a.name&&this.useMimicDimensions&&(o=a.currentDimensions),o?(this.currentRectangleWidth=this.addOwnDimensionsToMimic?o[0]+i:o[0],this.currentRectangleHeight=this.addOwnDimensionsToMimic?o[1]+s:o[1]):(this.currentRectangleWidth=i,this.currentRectangleHeight=s),this.currentDimensions[0]=this.currentRectangleWidth,this.currentDimensions[1]=this.currentRectangleHeight,this.dirtyStart=!0,this.dirtyHandle=!0,this.dirtyOffset=!0,n===this.currentRectangleWidth&&r===this.currentRectangleHeight||(this.dirtyPositionSubscribers=!0),this.mimicked&&this.mimicked.length&&(this.dirtyMimicDimensions=!0)}else this.dirtyDimensions=!0},ur.makeRectanglePath=function(){this.dirtyDimensions&&this.cleanDimensions();let t=this.currentRectangleWidth,e=this.currentRectangleHeight,i=this.offshootA,s=this.offshootB,n=this.radiusTLX,r=this.radiusTLY,o=this.radiusTRX,a=this.radiusTRY,l=this.radiusBRX,h=this.radiusBRY,c=this.radiusBLX,u=this.radiusBLY;(n.substring||r.substring||o.substring||a.substring||l.substring||h.substring||c.substring||u.substring)&&(n=n.substring?parseFloat(n)/100*t:n,r=r.substring?parseFloat(r)/100*e:r,o=o.substring?parseFloat(o)/100*t:o,a=a.substring?parseFloat(a)/100*e:a,l=l.substring?parseFloat(l)/100*t:l,h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*t:c,u=u.substring?parseFloat(u)/100*e:u);let d="m0,0";return t-n-o!=0&&(d+="h"+(t-n-o)),o+a!==0&&(d+=`c${o*i},${a*s} ${o-o*s},${a-a*i}, ${o},${a}`),e-a-h!=0&&(d+="v"+(e-a-h)),l+h!==0&&(d+=`c${-l*s},${h*i} ${l*i-l},${h-h*s} ${-l},${h}`),-t+c+l!==0&&(d+="h"+(-t+c+l)),c+u!==0&&(d+=`c${-c*i},${-u*s} ${c*s-c},${u*i-u} ${-c},${-u}`),-e+r+u!==0&&(d+="v"+(-e+r+u)),n+r!==0&&(d+=`c${n*s},${-r*i} ${n-n*i},${r*s-r} ${n},${-r}`),d+="z",d},ur.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};O.Rectangle=Rectangle;const Shape=function(t={}){return this.shapeInit(t),this};let pr=Shape.prototype=Object.create(Object.prototype);pr.type="Shape",pr.lib="entity",pr.isArtefact=!0,pr.isAsset=!1,pr=ee(pr),pr=Ss(pr);pr.defs=_(pr.defs,{}),pr.cleanSpecies=function(){this.dirtySpecies=!1},pr.cleanStampHandlePositionsAdditionalActions=function(){let t=this.localBox,e=this.currentStampHandlePosition;e[0]+=t[0],e[1]+=t[1]};O.Shape=Shape;const Spiral=function(t={}){return this.shapeInit(t),this};let mr=Spiral.prototype=Object.create(Object.prototype);mr.type="Spiral",mr.lib="entity",mr.isArtefact=!0,mr.isAsset=!1,mr=ee(mr),mr=Ss(mr);mr.defs=_(mr.defs,{loops:1,loopIncrement:1,drawFromLoop:0});let gr=mr.setters,yr=mr.deltaSetters;gr.loops=function(t){this.loops=t,this.updateDirty()},yr.loops=function(t){this.loops+=t,this.updateDirty()},gr.loopIncrement=function(t){this.loopIncrement=t,this.updateDirty()},yr.loopIncrement=function(t){this.loopIncrement+=t,this.updateDirty()},gr.drawFromLoop=function(t){this.drawFromLoop=Math.floor(t),this.updateDirty()},yr.drawFromLoop=function(t){this.drawFromLoop=Math.floor(this.drawFromLoop+t),this.updateDirty()},mr.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeSpiralPath(),this.pathDefinition=t},mr.firstTurn=[[.043,0,.082,-.035,.088,-.088],[.007,-.057,-.024,-.121,-.088,-.162],[-.07,-.045,-.169,-.054,-.265,-.015],[-.106,.043,-.194,.138,-.235,.265],[-.044,.139,-.026,.3,.058,.442],[.091,.153,.25,.267,.442,.308],[.206,.044,.431,-.001,.619,-.131],[.2,-.139,.34,-.361,.381,-.619]],mr.subsequentTurns=[[0,-.27,-.11,-.52,-.29,-.71],[-.19,-.19,-.44,-.29,-.71,-.29],[-.27,0,-.52,.11,-.71,.29],[-.19,.19,-.29,.44,-.29,.71],[0,.27,.11,.52,.29,.71],[.19,.19,.44,.29,.71,.29],[.27,0,.52,-.11,.71,-.29],[.19,-.19,.29,-.44,.29,-.71]],mr.makeSpiralPath=function(){let t,e,i,s,n,r,o,a,l,h,c,u,d=Math.floor(this.loops),f=this.loopIncrement,p=Math.floor(this.drawFromLoop),m=this.firstTurn,g=this.subsequentTurns,y=[];for(let o=0;o=p&&(b+=`c${t},${e} ${i},${s} ${n},${r}`),[o,a,l,h,c,u]=g[d],y[d]=[t+o*f,e+a*f,i+l*f,s+h*f,n+c*f,r+u*f];return b},mr.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox,n=this.scale;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t/n},${-e/n}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};O.Spiral=Spiral;const Star=function(t={}){return this.shapeInit(t),this};let br=Star.prototype=Object.create(Object.prototype);br.type="Star",br.lib="entity",br.isArtefact=!0,br.isAsset=!1,br=ee(br),br=Ss(br);br.defs=_(br.defs,{radius1:0,radius2:0,points:0,twist:0});let kr=br.setters,Sr=br.deltaSetters;kr.radius1=function(t){this.radius1=t,this.updateDirty()},Sr.radius1=function(t){this.radius1+=t,this.updateDirty()},kr.radius2=function(t){this.radius2=t,this.updateDirty()},Sr.radius2=function(t){this.radius2+=t,this.updateDirty()},kr.points=function(t){this.points=t,this.updateDirty()},Sr.points=function(t){this.points+=t,this.updateDirty()},kr.twist=function(t){this.twist=t,this.updateDirty()},Sr.twist=function(t){this.twist+=t,this.updateDirty()},br.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeStarPath(),this.pathDefinition=t},br.makeStarPath=function(){let t,e,i,s,n,r,o,a=this.points,l=this.twist,h=this.radius1,c=this.radius2,u=360/a,d=[],f="";if(h.substring||c.substring){let t=this.getHost();if(t){let[e,i]=t.currentDimensions;h=h.substring?parseFloat(h)/100*e:h,c=c.substring?parseFloat(c)/100*e:c}}let p=di({x:0,y:-h}),m=di({x:0,y:-c});for(t=p.x,e=p.y,d.push(t),m.rotate(-u/2),m.rotate(l),o=0;o{this[e]=t},this)},Or.deltaRectHelper=function(t,e){this.updateDirty(),e.forEach(e=>{this[e]=addStrings(this[e],t)},this)},Or.cleanSpecies=function(){this.dirtySpecies=!1;let t="M0,0";t=this.makeTetragonPath(),this.pathDefinition=t},Or.makeTetragonPath=function(){let t,e,i=this.radiusX,s=this.radiusY;if(i.substring||s.substring){let n=this.getHost();if(n){let[r,o]=n.currentDimensions;t=2*(i.substring?parseFloat(i)/100*r:i),e=2*(s.substring?parseFloat(s)/100*o:s)}}else t=2*i,e=2*s;let n=parseFloat((t*this.intersectX).toFixed(2)),r=parseFloat((t-n).toFixed(2)),o=parseFloat((e*this.intersectY).toFixed(2)),a=parseFloat((e-o).toFixed(2)),l="m0,0";return l+=`l${r},${o} ${-r},${a} ${-n},${-a} ${n},${-o}z`,l},Or.calculateLocalPathAdditionalActions=function(){let[t,e,i,s]=this.localBox;this.pathDefinition=this.pathDefinition.replace("m0,0",`m${-t},${-e}`),this.pathCalculatedOnce=!1,this.calculateLocalPath(this.pathDefinition,!0)};O.Tetragon=Tetragon;const Ticker=function(t={}){return this.makeName(t.name),this.register(),this.subscribers=[],this.subscriberObjects=[],this.set(this.defs),this.set(t),this.cycleCount=0,this.active=!1,this.effectiveDuration=0,this.startTime=0,this.currentTime=0,this.tick=0,this.lastEvent=0,t.subscribers&&this.subscribe(t.subscribers),this.setEffectiveDuration(),this};let wr=Ticker.prototype=Object.create(Object.prototype);wr.type="Ticker",wr.lib="animationtickers",wr.isArtefact=!1,wr.isAsset=!1,wr=ee(wr);wr.defs=_(wr.defs,{order:1,duration:0,subscribers:null,killOnComplete:!1,cycles:1,eventChoke:0,onRun:null,onHalt:null,onReverse:null,onResume:null,onSeekTo:null,onSeekFor:null,onComplete:null,onReset:null}),wr.packetExclusions=Q(wr.packetExclusions,["subscribers"]),wr.packetFunctions=Q(wr.packetFunctions,["onRun","onHalt","onReverse","onResume","onSeekTo","onSeekFor","onComplete","onReset"]),wr.kill=function(){return this.active&&this.halt(),K(Cr,this.name),Dr=!0,this.deregister(),!0},wr.killTweens=function(t=!1){let e,i,s;for(e=0,i=this.subscribers.length;e{t=y[i],t&&e.push(t)})},wr.getSubscriberObjects=function(){return this.subscribers.length&&!this.subscriberObjects.length&&this.repopulateSubscriberObjects(),this.subscriberObjects},wr.sortSubscribers=function(){let t=this.subscribers;if(t.length>1){let e=[].concat(t),i=Math.floor,s=[];e.forEach(t=>{let e=i(t.effectiveTime)||0;s[e]||(s[e]=[]),s[e].push(t)}),this.subscribers=s.reduce((t,e)=>t.concat(e),[])}this.repopulateSubscriberObjects()},wr.updateSubscribers=function(t,e){e=!!J(e)&&e;let i,s,n=this.getSubscriberObjects();if(e)for(i=n.length-1;i>=0;i--)n[i].set(t);else for(i=0,s=n.length;it.reversed=!t.reversed),this},wr.makeTickerUpdateEvent=function(){return new CustomEvent("tickerupdate",{detail:{name:this.name,type:"Ticker",tick:this.tick,reverseTick:this.effectiveDuration-this.tick},bubbles:!0,cancelable:!0})},wr.recalculateEffectiveDuration=function(){let t,e=this.getSubscriberObjects(),i=0;return this.duration?this.setEffectiveDuration():(e.forEach(e=>{t=e.getEndTime(),t>i&&(i=t)}),this.effectiveDuration=i),this},wr.setEffectiveDuration=function(){let t;return this.duration&&(t=M(this.duration),"%"===t[0]?(this.duration=0,this.recalculateEffectiveDuration()):this.effectiveDuration=t[1]),this},wr.fn=function(t){let e=Er();t=!!J(t)&&t;let i,s,n,r,o,a,l,h,c=this.active,u=this.startTime,d=this.cycles,f=this.cycleCount,p=this.effectiveDuration,m=this.eventChoke;if(c&&u&&(!d||f=p?(h=this.tick=0,this.startTime=this.currentTime,e.tick=p,e.reverseTick=0,e.willLoop=!0,d&&(f++,this.cycleCount=f)):(e.tick=h,e.reverseTick=p-h),e.next=!0):h>=p?(e.tick=p,e.reverseTick=0,c=this.active=!1,d&&(f++,this.cycleCount=f)):(e.tick=h,e.reverseTick=p-h,e.next=!0),n=this.getSubscriberObjects(),t)for(i=n.length-1;i>=0;i--)n[i].update(e);else for(i=0,s=n.length;i=d&&this.killTweens(!0)}Fr(e)},wr.run=function(){return this.active||(this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,Q(Cr,this.name),Dr=!0,"function"==typeof this.onRun&&this.onRun()),this},wr.isRunning=function(){return this.active},wr.reset=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!1}),this.active=!0,this.fn(!0),this.active=!1,"function"==typeof this.onReset&&this.onReset(),this},wr.complete=function(){return this.active&&this.halt(),this.startTime=this.currentTime=Date.now(),this.cycleCount=0,this.updateSubscribers({reversed:!0}),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onComplete&&this.onComplete(),this},wr.reverse=function(t=!1){let e;return t=et(t,!1),this.active&&this.halt(),e=this.currentTime-this.startTime,this.startTime=this.currentTime-(this.effectiveDuration-e),this.changeSubscriberDirection(),this.active=!0,this.fn(),this.active=!1,"function"==typeof this.onReverse&&this.onReverse(),t&&this.resume(),this},wr.halt=function(){return this.active=!1,Q(Cr,this.name),Dr=!0,"function"==typeof this.onHalt&&this.onHalt(),this},wr.resume=function(){let t,e,i;return this.active||(t=Date.now(),e=this.currentTime,i=this.startTime,this.startTime=t-(e-i),this.currentTime=t,this.active=!0,Q(Cr,this.name),Dr=!0,"function"==typeof this.onResume&&this.onResume()),this},wr.seekTo=function(t,e=!1){let i=!1;return t=et(t,0),this.active&&this.halt(),this.cycles&&this.cycleCount>=this.cycles&&(this.cycleCount=this.cycles-1),t=this.cycles&&(this.cycleCount=this.cycles-1),this.startTime-=t,t<0&&(i=!0),this.active=!0,this.fn(i),this.active=!1,"function"==typeof this.onSeekFor&&this.onSeekFor(),e&&this.resume(),this};let Cr=[],Dr=!0;se({name:"coreTickersAnimation",order:0,fn:function(){return new Promise(t=>{if(Dr){Dr=!1;let t=[].concat(Cr),i=Math.floor,s=[];t.forEach(t=>{let n=e[t];if(J(n)){let t=i(n.order)||0;s[t]||(s[t]=[]),s[t].push(n.name)}}),Cr=s.reduce((t,e)=>t.concat(e),[])}Cr.forEach(t=>{let i=e[t];i&&i.fn&&i.fn()}),t(!0)})}});const Rr=[],Er=function(){return Rr.length||Rr.push({tick:0,reverseTick:0,willLoop:!1,next:!1}),Rr.shift()},Fr=function(t){t&&(t.tick=0,t.reverseTick=0,t.willLoop=!1,t.next=!1,Rr.push(t))},Tr=function(t){return new Ticker(t)};O.Ticker=Ticker;const Tracer=function(t={}){return this.makeName(t.name),this.register(),this.initializePositions(),this.set(this.defs),this.onEnter=B,this.onLeave=B,this.onDown=B,this.onUp=B,this.stampAction=B,this.trace=js(t),t.group||(t.group=zi),this.set(t),this.purge&&this.purgeArtefact(this.purge),this};let Hr=Tracer.prototype=Object.create(Object.prototype);Hr.type="Tracer",Hr.lib="entity",Hr.isArtefact=!0,Hr.isAsset=!1,Hr=ee(Hr),Hr=fs(Hr);Hr.defs=_(Hr.defs,{artefact:null,historyLength:1,hitRadius:10,showHitRadius:!1,hitRadiusColor:"#000000"}),Hr.packetExclusions=Q(Hr.packetExclusions,[]),Hr.packetExclusionsByRegex=Q(Hr.packetExclusionsByRegex,[]),Hr.packetCoordinates=Q(Hr.packetCoordinates,[]),Hr.packetObjects=Q(Hr.packetObjects,["artefact","particle"]),Hr.packetFunctions=Q(Hr.packetFunctions,["stampAction"]),Hr.finalizePacketOut=function(t,e){return t},Hr.postCloneAction=function(t,e){return t.trace=js({name:t.name,historyLength:e.historyLength||this.historyLength||1}),t},Hr.factoryKill=function(t){t&&this.artefact.kill(),this.trace.kill()};Hr.getters;let Mr=Hr.setters;Hr.deltaSetters;Mr.stampAction=function(t){W(t)&&(this.stampAction=t)},Mr.artefact=function(t){let e;t.substring?e=i[t]:U(t)&&t.isArtefact&&(e=t),e&&(this.artefact=e)},Hr.regularStampSynchronousActions=function(){let{artefact:t,trace:e,stampAction:i,showHitRadius:s,hitRadius:n,hitRadiusColor:r,currentStampPosition:o}=this,a=this.currentHost;if(e.set({position:o}),e.manageHistory(0,a),i.call(this,t,e,a),s){let t=a.engine;t.save(),t.lineWidth=1,t.strokeStyle=r,t.setTransform(1,0,0,1,0,0),t.beginPath(),t.arc(o[0],o[1],n,0,2*Math.PI),t.stroke(),t.restore()}},Hr.checkHit=function(t=[],e){if(this.noUserInteraction)return!1;let i,s,n=Array.isArray(t)?t:[t],r=this.currentStampPosition,o=!1;if(n.some(t=>{if(Array.isArray(t))i=t[0],s=t[1];else{if(!tt(t,t.x,t.y))return!1;i=t.x,s=t.y}if(!i.toFixed||!s.toFixed||isNaN(i)||isNaN(s))return!1;let e=di(r).vectorSubtract(t);return e.getMagnitude()t.name)),Array.isArray(this.definitions)&&(t.definitions=this.definitions.map(t=>{let e={};if(e.attribute=t.attribute,e.start=t.start,e.end=t.end,t.engine&&t.engine.substring)e.engine=t.engine.substring;else if(J(t.engine)&&null!==t.engine){let i=this.stringifyFunction(t.engine);i&&(e.engine=i,e.engineIsFunction=!0)}return e})),t},Ir.postCloneAction=function(t,i){if(i.useNewTicker){let s=e[this.ticker];J(i.cycles)?t.cycles=i.cycles:t.cycles=s?s.cycles:1;let n=e[t.ticker];n.cycles=t.cycles,J(i.duration)&&(t.duration=i.duration,t.calculateEffectiveDuration(),n&&n.recalculateEffectiveDuration())}return Array.isArray(t.definitions)&&t.definitions.forEach((t,e)=>{t.engineIsFunction&&(t.engine=this.definitions[e].engine)}),t};let Br=Ir.getters,Lr=Ir.setters;Br.definitions=function(){return[].concat(this.definitions)},Lr.definitions=function(t){this.definitions=[].concat(t),this.setDefinitionsValues()},Lr.commenceAction=function(t){this.commenceAction=t,"function"!=typeof this.commenceAction&&(this.commenceAction=B)},Lr.completeAction=function(t){this.completeAction=t,"function"!=typeof this.completeAction&&(this.completeAction=B)},Ir.set=function(t={}){if(Object.keys(t).length){let e,i,s,n,r=this.setters,o=Object.keys(t),a=this.defs,l=!!J(t.ticker)&&this.ticker;for(i=0,s=o.length;ie?r=1:ni&&(r=1)),a?r&&r==this.status||(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=l?-1:1)):r!=this.status&&(this.status=r,this.doSimpleUpdate(t),t.next||(this.status=l?-1:1)),t.willLoop&&(this.reverseOnCycleEnd?this.reversed=!l:this.status=-1)},Ir.doSimpleUpdate=function(t={}){let e,i,s,n,r,o,a,l,h,c,u,d,f,p,m=this.effectiveTime,g=this.engineActions,y=this.effectiveDuration,b=this.status,k=this.definitions,S=this.targets,O=this.action,P=this.setObj||{},v=Math.round;for(e=this.reversed?t.reverseTick-m:t.tick-m,o=y&&!b?e/y:b>0?1:0,i=0,s=k.length;i(t=parseFloat(t),V(t)||(t=0),V(e)||(e=0),parseFloat(t.toFixed(e))),Wheel=function(t={}){return it(t.dimensions,t.width,t.height,t.radius)||(t.radius=5),this.entityInit(t),this};let jr=Wheel.prototype=Object.create(Object.prototype);jr.type="Wheel",jr.lib="entity",jr.isArtefact=!0,jr.isAsset=!1,jr=ee(jr),jr=fs(jr);jr.defs=_(jr.defs,{radius:5,startAngle:0,endAngle:360,clockwise:!0,includeCenter:!1,closed:!0});jr.getters;let Xr=jr.setters,Yr=jr.deltaSetters;Xr.width=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},Yr.width=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Xr.height=function(t){if(null!=t){let e=this.dimensions;e[0]=e[1]=t,this.dimensionsHelper()}},Yr.height=function(t){let e=this.dimensions;e[0]=e[1]=addStrings(e[0],t),this.dimensionsHelper()},Xr.dimensions=function(t,e){this.setCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Yr.dimensions=function(t,e){this.setDeltaCoordinateHelper("dimensions",t,e),this.dimensionsHelper()},Xr.radius=function(t){this.radius=t,this.radiusHelper()},Yr.radius=function(t){this.radius=addStrings(this.radius,t),this.radiusHelper()},Xr.startAngle=function(t){this.startAngle=$r(t,4),this.dirtyPathObject=!0},Yr.startAngle=function(t){this.startAngle+=$r(t,4),this.dirtyPathObject=!0},Xr.endAngle=function(t){this.endAngle=$r(t,4),this.dirtyPathObject=!0},Yr.endAngle=function(t){this.endAngle+=$r(t,4),this.dirtyPathObject=!0},Xr.closed=function(t){J(t)&&(this.closed=!!t,this.dirtyPathObject=!0)},Xr.includeCenter=function(t){J(t)&&(this.includeCenter=!!t,this.dirtyPathObject=!0)},Xr.clockwise=function(t){J(t)&&(this.clockwise=!!t,this.dirtyPathObject=!0)},jr.dimensionsHelper=function(){let t=this.dimensions[0];t.substring?this.radius=parseFloat(t)/2+"%":this.radius=t/2,this.dirtyDimensions=!0},jr.radiusHelper=function(){let t=this.radius,e=this.dimensions;t.substring?e[0]=e[1]=2*parseFloat(t)+"%":e[0]=e[1]=2*t,this.dirtyDimensions=!0},jr.cleanDimensionsAdditionalActions=function(){let t=this.radius,e=this.currentDimensions,i=t.substring?parseFloat(t)/100*e[0]:t;e[0]!==2*i?(e[1]=e[0],this.currentRadius=e[0]/2):this.currentRadius=i},jr.cleanPathObject=function(){if(this.dirtyPathObject=!1,!this.noPathUpdates||!this.pathObject){let t=this.pathObject=new Path2D,e=this.currentStampHandlePosition,i=this.currentScale,s=this.currentRadius*i,n=s-e[0]*i,r=s-e[1]*i,o=this.startAngle*P,a=this.endAngle*P;t.arc(n,r,s,o,a,!this.clockwise),this.includeCenter?(t.lineTo(n,r),t.closePath()):this.closed&&t.closePath()}};O.Wheel=Wheel;const World=function(t={}){this.makeName(t.name),this.register(),this.set(this.defs);let e=t.keytypes||{};return e.gravity||(e.gravity="Vector"),t.gravity||(t.gravity=[0,9.81,0]),t.userAttributes&&t.userAttributes.forEach(t=>{this.addAttribute(t),t.type&&(e[t.key]=t.type)}),this.initializeAttributes(e),this.set(t),this};let Nr=World.prototype=Object.create(Object.prototype);Nr.type="World",Nr.lib="world",Nr.isArtefact=!1,Nr.isAsset=!1,Nr=ee(Nr);Nr.defs=_(Nr.defs,{gravity:null,tickMultiplier:1,keytypes:null}),Nr.kill=function(){return this.deregister(),!0};let zr=Nr.getters,Gr=Nr.setters,Wr=Nr.deltaSetters;Gr.gravityX=function(t){this.gravity&&J(t)&&this.gravity.setX(t)},Gr.gravityY=function(t){this.gravity&&J(t)&&this.gravity.setY(t)},Gr.gravityZ=function(t){this.gravity&&J(t)&&this.gravity.setZ(t)},Gr.gravity=function(t){this.gravity&&J(t)&&this.gravity.set(t)},Nr.addAttribute=function(t={}){let{key:e,defaultValue:i,setter:s,deltaSetter:n,getter:r}=t;return e&&e.substring&&(this.defs[e]=J(i)?i:null,this[e]=J(i)?i:null,W(s)&&(Gr[e]=s),W(n)&&(Wr[e]=n),W(r)&&(zr[e]=r)),this},Nr.removeAttribute=function(t){return t&&t.substring&&(delete this.defs[t],delete this[t],delete zr[t],delete Gr[t],delete Wr[t]),this},Nr.initializeAttributes=function(t){for(let[e,i]of Object.entries(t))switch(i){case"Quaternion":this[e]=ki();break;case"Vector":this[e]=pi();break;case"Coordinate":this[e]=Te()}};O.World=World;window.scrawlEnvironmentTouchSupported=!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch),window.scrawlEnvironmentOffscreenCanvasSupported="OffscreenCanvas"in window,document.querySelectorAll("[data-stack]").forEach(t=>ji(t)),function(){let t;document.querySelectorAll("canvas").forEach((e,i)=>{t=Yi(e),i||Gi(t)})}(),T(),ye(),he(),oe=!0,me();var Vr={library:A,startCoreAnimationLoop:T,stopCoreAnimationLoop:function(){x=!1},currentCorePosition:ae,startCoreListeners:me,stopCoreListeners:function(){re=!1,oe=!1,pe.halt(),ge("removeEventListener")},observeAndUpdate:function(t={}){if(!tt(t.event,t.origin,t.updates))return!1;let e=t.target.substring&&t.targetLibrarySection?A[t.targetLibrarySection][t.target]:t.target;if(!e)return!1;let i=t.event,s=t.origin,n=t.useNativeListener?Nt:Lt,r=t.useNativeListener?zt:$t,o=B;t.preventDefault&&(o=t=>{t.preventDefault(),t.returnValue=!1});let a=function(i){o(i);let s=!(!i||!i.target)&&i.target.id;if(s){let n=t.updates[s];if(n){let t,s=n[0],r=n[1],o=i.target.value,a=!0;switch(r){case"float":t=parseFloat(o);break;case"int":t=parseInt(o,10);break;case"round":t=Math.round(o);break;case"roundDown":t=Math.floor(o);break;case"roundUp":t=Math.ceil(o);break;case"raw":t=o;break;case"string":t=""+o;break;case"boolean":t=!!J(o)&&(o.substring?"true"===o.toLowerCase()||"false"!==o.toLowerCase()&&!!parseFloat(o):!!o);break;default:r.substring?t=`${parseFloat(o)}${r}`:a=!1}a&&("Group"===e.type?e.setArtefacts({[s]:t}):e.set({[s]:t}))}}};return n(i,a,s),function(){r(i,a,s)}},makeDragZone:function(t={}){let{zone:e,coordinateSource:i,collisionGroup:s,startOn:n,endOn:r,updateOnStart:o,updateOnEnd:a,exposeCurrentArtefact:l}=t;if(!e)return new Error("dragZone constructor - no zone supplied");if(e.substring&&(e=artefact[e]),!e||["Canvas","Stack"].indexOf(e.type)<0)return new Error("dragZone constructor - zone object is not a Stack or Canvas wrapper");let h=e.domElement;if(!h)return new Error("dragZone constructor - zone does not contain a target DOM element");if(s?s.substring&&(s=u[s]):s="Canvas"===e.type?u[e.base.name]:u[e.name],!s||"Group"!==s.type)return new Error("dragZone constructor - unable to recover collisionGroup group");if(i?i.here?i=i.here:tt(i.x,i.y)||(i=!1):i="Canvas"===e.type?e.base.here:e.here,!i)return new Error("dragZone constructor - unable to discover a usable coordinateSource object");Array.isArray(n)||(n=["down"]),Array.isArray(r)||(r=["up"]);let c=!1;U(o)&&(o=function(){c.artefact.set(t.updateOnStart)}),W(o)||(o=B),U(a)&&(a=function(){c.artefact.set(t.updateOnEnd)}),W(a)||(a=B),N(l)||(l=!1);const d=function(t){t.cancelable&&(t.preventDefault(),t.returnValue=!1)},f=function(t){d(t);let e=t.type;"touchstart"!==e&&"touchcancel"!==e||ue(t),c=s.getArtefactAt(i),c&&(c.artefact.pickupArtefact(i),o())};let p=function(t){d(t),c&&(c.artefact.dropArtefact(),a(),c=!1)};const m=function(){$t(n,f,h),$t(r,p,h)};return Lt(n,f,h),Lt(r,p,h),l?function(t=!1){if(!t)return c;m()}:m},makeComponent:function(t){let e=!!G(t.domElement)&&t.domElement,s=U(t.animationHooks)?t.animationHooks:{},n=U(t.canvasSpecs)?t.canvasSpecs:{},r=U(t.observerSpecs)?t.observerSpecs:{},o=!N(t.includeCanvas)||t.includeCanvas;return e&&e.id&&i[e.id]?os(e,n,s,r):as(e,n,s,r,o)},addStack:function(t={}){let e,s,n,r,o,a,l="absolute";return e=t.element&&t.element.substring?document.querySelector(t.element):G(t.element)?t.element:document.createElement("div"),t.host&&t.host.substring?(s=document.querySelector(t.host),s||(s=document.body)):s=G(t.host)?t.host:J(e.parentElement)?e.parentElement:document.body,J(t.width)&&(e.style.width=t.width.toFixed?t.width+"px":t.width),J(t.height)&&(e.style.height=t.height.toFixed?t.height+"px":t.height),a=t.name||e.id||e.getAttribute("name")||"",a||(a=X()),e.id=a,e.setAttribute("data-stack","data-stack"),s&&null!=s.getAttribute("data-stack")?(n=i[s.id],o=n?n.name:"root"):o="root",e.setAttribute("data-group",o),"root"===o&&(l="relative"),e.parentElement&&s.id===e.parentElement.id||s.appendChild(e),r=Mi({name:a,domElement:e,group:o,host:o,position:l,setInitialDimensions:!0}),Xi(e,a),Array.from(e.childNodes).forEach(t=>{t.id&&Ii.indexOf(t.id)>=0&&K(Ii,t.id)}),delete t.name,delete t.element,delete t.host,delete t.width,delete t.height,r.set(t),$i=!0,r},getStack:function(t){let e,i=document.querySelector(t);return i&&(e=ji(i)),e},addCanvas:function(t={}){let e=document.createElement("canvas"),s=t.name?t.name:X(),n=t.host,r="root",o=t.width||300,a=t.height||150,l="relative";if(n.substring){let t=i[n];!t&&n?(n=document.querySelector(n),n&&(r=n.id)):n=t}n?"Stack"===n.type?(r=n.name,l="absolute",n=n.domElement):G(n)||(n=document.body):n=document.body,e.id=s,e.setAttribute("data-group",r),e.width=o,e.height=a,e.style.position=l,n.appendChild(e);let h=xi({name:s,domElement:e,group:r,host:r,position:l,setInitialDimensions:!1,setAsCurrentCanvas:!J(t.setAsCurrentCanvas)||t.setAsCurrentCanvas,trackHere:J(t.trackHere)?t.trackHere:"subscribe"});return delete t.group,delete t.host,delete t.name,delete t.element,delete t.position,delete t.setInitialDimensions,delete t.setAsCurrentCanvas,delete t.trackHere,h.set(t),h},getCanvas:function(t){let e=document.querySelector(t),i=!1;return e&&(i=Yi(e)),Gi(i),i},setCurrentCanvas:Gi,clear:Wi,compile:Vi,show:Ui,render:function(...t){return qi(t),_i("render")},addListener:Lt,removeListener:$t,addNativeListener:Nt,removeNativeListener:zt,makeAnimationObserver:Bt,reducedMotionActions:_t,setReduceMotionAction:t=>Ut=t,setNoPreferenceMotionAction:t=>qt=t,colorSchemeActions:te,setColorSchemeDarkAction:t=>Kt=t,setColorSchemeLightAction:t=>Jt=t,makeAction:function(t){return new Action(t)},makeAnimation:se,makeBezier:function(t={}){return t.species="bezier",new Bezier(t)},makeBlock:function(t){return new Block(t)},makeCog:function(t={}){return t.species="cog",new Cog(t)},makeColor:Fs,requestCoordinate:Ee,releaseCoordinate:Fe,makeEmitter:function(t){return new Emitter(t)},makeFilter:function(t){return new Filter(t)},makeForce:qs,makeGradient:function(t){return new Gradient(t)},makeGrid:function(t){return new Grid(t)},makeGroup:hi,importImage:$e,importDomImage:je,createImageFromCell:function(t,e=!1){let i=t.substring?a[t]||o[t]:t;"Canvas"===i.type&&(i=i.base),"Cell"===i.type&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=!0))},createImageFromGroup:function(t,e=!1){let i;t&&!t.substring?"Group"===t.type?i=t:"Cell"===t.type?i=u[t.name]:"Canvas"===t.type&&(i=u[t.base.name]):t&&t.substring&&(i=u[t]),i&&(i.stashOutput=!0,e&&(i.stashOutputAsAsset=!0))},createImageFromEntity:function(t,e=!1){let s=t.substring?i[t]:t;s.isArtefact&&(s.stashOutput=!0,e&&(s.stashOutputAsAsset=!0))},makeLine:function(t={}){return t.species="line",new Line(t)},makeLoom:function(t){return new Loom(t)},makeMesh:function(t){return new ln(t)},makeNet:function(t){return new Net(t)},makeNoise:function(t){return new bn(t)},makeOval:function(t={}){return t.species="oval",new Oval(t)},makePattern:function(t){return new Pattern(t)},makePhrase:function(t){return new Phrase(t)},makePicture:function(t){return new Picture(t)},makePolygon:function(t={}){return t.species="polygon",new Polygon(t)},makePolyline:function(t={}){return t.species="polyline",new Polyline(t)},makeQuadratic:function(t={}){return t.species="quadratic",new Quadratic(t)},requestQuaternion:yi,releaseQuaternion:bi,makeRadialGradient:function(t){return new RadialGradient(t)},makeRectangle:function(t={}){return t.species="rectangle",new Rectangle(t)},makeRender:ns,makeShape:function(t){return new Shape(t)},makeSpiral:function(t={}){return t.species="spiral",new Spiral(t)},makeSpring:pn,importSprite:Tn,makeStar:function(t={}){return t.species="star",new Star(t)},makeTetragon:function(t={}){return t.species="tetragon",new Tetragon(t)},makeTicker:Tr,makeTracer:function(t){return new Tracer(t)},makeTween:function(t){return new Tween(t)},requestVector:di,releaseVector:fi,importDomVideo:function(t){let e=/.*\/(.*?)\./;document.querySelectorAll(t).forEach(t=>{let i;if("VIDEO"===t.tagName.toUpperCase()){if(t.id||t.name)i=t.id||t.name;else{let s=e.exec(t.src);i=s&&s[1]?s[1]:""}let s=Rn({name:i,source:t});t.readyState<=2&&(t.oncanplay=()=>{s.set({source:t})})}})},importVideo:Dn,importMediaStream:function(t={}){let e={};e.audio=!J(t.audio)||t.audio,e.video={};let i=e.video.width={};t.minWidth&&(i.min=t.minWidth),t.maxWidth&&(i.max=t.maxWidth),i.ideal=t.width?t.width:1280;let s=e.video.height={};t.minHeight&&(s.min=t.minHeight),t.maxHeight&&(s.max=t.maxHeight),s.ideal=t.height?t.height:720,t.facing&&(e.video.facingMode=t.facing);let n=t.name||X(),r=document.createElement("video"),o=Rn({name:n,source:r});return new Promise((t,i)=>{navigator&&navigator.mediaDevices?navigator.mediaDevices.getUserMedia(e).then(e=>{let i,s=e.getVideoTracks();Array.isArray(s)&&s[0]&&(i=s[0].getConstraints()),r.id=o.name,i&&(r.width=i.width,r.height=i.height),r.srcObject=e,r.onloadedmetadata=function(t){r.play()},t(o)}).catch(e=>{console.log(e.message),t(o)}):i("Navigator.mediaDevices object not found")})},makeWheel:function(t){return new Wheel(t)},makeWorld:function(t){return new World(t)}};export default Vr; diff --git a/package.json b/package.json index f17eed751..85e3fc23a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "scrawl-canvas", - "version": "8.3.4", - "description": "Version 8.3.4 - 6 Jan 2021", + "version": "8.4.0", + "description": "Version 8.4.0 - 26 Jan 2021", "main": "min/scrawl.js", "scripts": { "build": "rollup -c && docco ./demo/**/*.js && docco ./demo/*.js && docco ./source/**/*.js && docco ./source/scrawl.js" diff --git a/source/core/library.js b/source/core/library.js index bad869d9f..d633faee1 100644 --- a/source/core/library.js +++ b/source/core/library.js @@ -9,7 +9,7 @@ // Current version -const version = '8.3.4'; +const version = '8.4.0'; // Objects created using the __makeAnchor__ factory diff --git a/source/factory/filter.js b/source/factory/filter.js index 6a7280b62..7fd3a6d96 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -1094,7 +1094,6 @@ const setActionsArray = { // + These workers (generally there's only one) are not exposed to developers using the scrawl object, thus only get called internally // START PRODUCTION CODE -/* const filterPool = []; import { filterUrl } from '../worker/filter-string.js'; @@ -1120,11 +1119,11 @@ const actionFilterWorker = function (worker, items) { worker.postMessage(items); }); }; -*/ // END PRODUCTION CODE // START DEV CODE +/* const filterPool = []; const requestFilterWorker = function () { @@ -1155,6 +1154,7 @@ const actionFilterWorker = function (worker, items) { worker.postMessage(items); }); }; +*/ // END DEV CODE diff --git a/source/factory/loom.js b/source/factory/loom.js index 59cd1463c..bb99e635d 100644 --- a/source/factory/loom.js +++ b/source/factory/loom.js @@ -1,7 +1,7 @@ // # Loom factory // A Loom offers functionality to render an image onto a <canvas> element, where the image is not a rectangle - it can have curved borders. It can also offer the illusion of flat 3D images in the canvas, giving them perspective. // -// Loom entitys are ___composite entitys___ - an wentity that relies on other entitys for its basic functionality. +// Loom entitys are ___composite entitys___ - an entity that relies on other entitys for its basic functionality. // + Every Loom object requires two (or one) path-enabled [Shape](./shape.html) entitys to act as its left and right tracks. // + A Loom entity also requires a [Picture](./picture.html) entity to act as its image source. // + Looms can use CSS color Strings for their strokeStyle values, alongside __Gradient__, __RadialGradient__, __Color__ and __Pattern__ objects. diff --git a/source/scrawl.js b/source/scrawl.js index bf0c5676b..777b65a03 100644 --- a/source/scrawl.js +++ b/source/scrawl.js @@ -1,6 +1,6 @@ // # Scrawl-canvas // -// #### Version 8.3.4 - 6 Jan 2021 +// #### Version 8.4.0 - 26 Jan 2021 // // --------------------------------------------------------------------------------- // The MIT License (MIT) diff --git a/source/worker/filter.js b/source/worker/filter.js index ef5b53ac3..37e041bc5 100644 --- a/source/worker/filter.js +++ b/source/worker/filter.js @@ -5,8 +5,12 @@ // ##### Road map // At some point we shall attempt to convert this code into something that can be run as WebAssembly code, possibly using Rust or AssemblyScript. - - +// +// ##### Development +// Compress this file using https://javascript-minifier.com/ +// +// Copy the results of the compression into the string in worker/filter-string.js +// // ### Common variables // __packet__ and `packetFiltersArray` will hold data contained in the message sent to the web worker; the packet object will be returned to the main program when processing completes (or errors) in the worker let packet, packetFiltersArray; From 7f359cf8f71c090f3f878822e230b2a5c5c3d613 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Tue, 26 Jan 2021 17:10:32 +0000 Subject: [PATCH 21/28] MacOS Safari Picture entity bugfix --- source/factory/picture.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/source/factory/picture.js b/source/factory/picture.js index c0949878f..89a21894b 100644 --- a/source/factory/picture.js +++ b/source/factory/picture.js @@ -599,7 +599,8 @@ P.draw = function (engine) { // `fill` P.fill = function (engine) { - if (this.source) engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); + let [x, y, w, h] = this.copyArray; + if (this.source && w && h) engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); }; // `drawAndFill` @@ -607,7 +608,8 @@ P.drawAndFill = function (engine) { engine.stroke(this.pathObject); - if (this.source) { + let [x, y, w, h] = this.copyArray; + if (this.source && w && h) { this.currentHost.clearShadow(); engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); @@ -619,11 +621,13 @@ P.fillAndDraw = function (engine) { engine.stroke(this.pathObject); - if (this.source) { + let [x, y, w, h] = this.copyArray; + if (this.source && w && h) { this.currentHost.clearShadow(); engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); } + engine.stroke(this.pathObject); }; @@ -631,13 +635,17 @@ P.fillAndDraw = function (engine) { P.drawThenFill = function (engine) { engine.stroke(this.pathObject); - if (this.source) engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); + + let [x, y, w, h] = this.copyArray; + if (this.source && w && h) engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); }; // `fillThenDraw` P.fillThenDraw = function (engine) { - if (this.source) engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); + let [x, y, w, h] = this.copyArray; + if (this.source && w && h) engine.drawImage(this.source, ...this.copyArray, ...this.pasteArray); + engine.stroke(this.pathObject); }; From b25e4a01cb8634b174a8193e4a413aa761d87a5a Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Sat, 30 Jan 2021 21:04:53 +0000 Subject: [PATCH 22/28] fixing Safari bugs; Phrase entity font handling functionality --- demo/canvas-013.js | 44 +-- demo/canvas-016.html | 33 +++ demo/canvas-016.js | 2 +- demo/canvas-017.html | 9 +- demo/canvas-017.js | 2 +- demo/canvas-029.js | 6 +- demo/canvas-040.html | 2 + demo/particles-007.html | 3 + demo/particles-009.html | 3 + demo/particles-011.html | 3 + source/factory/cell.js | 18 ++ source/factory/filter.js | 4 +- source/factory/fontAttributes.js | 490 ++++++++++++++++++++++--------- source/factory/phrase.js | 32 +- source/mixin/entity.js | 4 +- 15 files changed, 467 insertions(+), 188 deletions(-) diff --git a/demo/canvas-013.js b/demo/canvas-013.js index a6454387c..4aede97c6 100644 --- a/demo/canvas-013.js +++ b/demo/canvas-013.js @@ -108,26 +108,26 @@ scrawl.makeLine({ }).clone({ name: 'secondLine', - startY: '22%', - endY: '19.2%', + startY: '16.5%', + endY: '13.7%', }).clone({ name: 'thirdLine', startX: '20%', - startY: '18.5%', + startY: '14%', endX: '85%', - endY: '18.5%', + endY: '14%', }); // ##### makeQuadratic factory function scrawl.makeQuadratic({ name: 'firstQuad', startX: '5%', - startY: '30.5%', + startY: '20%', controlX: '50%', - controlY: '22%', + controlY: '15%', endX: '95%', - endY: '30.5%', + endY: '20%', lineWidth: 3, lineCap: 'round', strokeStyle: 'darkseagreen', @@ -138,28 +138,30 @@ scrawl.makeQuadratic({ }).clone({ name: 'secondQuad', - startX: '7%', - controlY: '18.5%', - endX: '93%', + startX: '12%', + endX: '88%', + startY: '21.5%', + endY: '21.5%', }).clone({ name: 'thirdQuad', - startX: '9%', - controlY: '15%', - endX: '91%', + startX: '19%', + endX: '81%', + startY: '23%', + endY: '23%', }); // ##### makeBezier factory function scrawl.makeBezier({ name: 'firstBezier', startX: '5%', - startY: '36%', + startY: '27%', startControlX: '40%', - startControlY: '31%', + startControlY: '22%', endControlX: '60%', - endControlY: '41%', + endControlY: '32%', endX: '95%', - endY: '36%', + endY: '27%', lineWidth: 3, lineCap: 'round', strokeStyle: 'linen', @@ -171,15 +173,15 @@ scrawl.makeBezier({ }).clone({ name: 'secondBezier', startX: '7%', - startControlY: '25%', - endControlY: '47%', + startControlY: '18%', + endControlY: '36%', endX: '93%', }).clone({ name: 'thirdBezier', startX: '9%', - startControlY: '19%', - endControlY: '53%', + startControlY: '14%', + endControlY: '40%', endX: '91%', }); diff --git a/demo/canvas-016.html b/demo/canvas-016.html index 5ceff0531..d3aad8c08 100644 --- a/demo/canvas-016.html +++ b/demo/canvas-016.html @@ -13,6 +13,9 @@ .controls { grid-template-columns: 1fr 2fr 2fr 1fr 2fr 2fr; } + canvas { + font-size: 120%; + } @@ -152,6 +155,9 @@

      Phrase entity position and font attributes; Block mimic functionality

      + + +
    •  
      @@ -159,6 +165,25 @@

      Phrase entity position and font attributes; Block mimic functionality

      Font size
       
      diff --git a/demo/canvas-016.js b/demo/canvas-016.js index 025f7dc77..d09749243 100644 --- a/demo/canvas-016.js +++ b/demo/canvas-016.js @@ -185,4 +185,4 @@ document.querySelector('#style').options.selectedIndex = 0; document.querySelector('#variant').options.selectedIndex = 0; document.querySelector('#family').options.selectedIndex = 0; document.querySelector('#size_px').value = 16; -document.querySelector('#size_string').options.selectedIndex = 4; +document.querySelector('#size_string').options.selectedIndex = 0; diff --git a/demo/canvas-017.html b/demo/canvas-017.html index 6a6d6a5c9..8c8715208 100644 --- a/demo/canvas-017.html +++ b/demo/canvas-017.html @@ -61,14 +61,11 @@

      Phrase entity - test lineHeight, letterSpacing and justify attributes
      S
      Font size
      diff --git a/demo/canvas-017.js b/demo/canvas-017.js index d56ba69c1..6b73e8338 100644 --- a/demo/canvas-017.js +++ b/demo/canvas-017.js @@ -157,7 +157,7 @@ document.querySelector('#letterSpacing').value = 0; document.querySelector('#justify').options.selectedIndex = 0; document.querySelector('#family').options.selectedIndex = 0; document.querySelector('#size_px').value = 16; -document.querySelector('#size_string').options.selectedIndex = 4; +document.querySelector('#size_string').options.selectedIndex = 0; // #### Development and testing diff --git a/demo/canvas-029.js b/demo/canvas-029.js index bdf1da5c9..574d98754 100644 --- a/demo/canvas-029.js +++ b/demo/canvas-029.js @@ -19,7 +19,6 @@ let mygradient = scrawl.makeGradient({ name: 'gradient-1', endX: '100%', - // endY: '100%', paletteStart: 10, paletteEnd: 990, @@ -172,10 +171,7 @@ scrawl.makePhrase({ name: 'test-phrase-9', startX: '58%', - startY: '40%', - - width: '65%', - scale: 0.65, + scale: 0.8, letterSpacing: 3, lockFillStyleToEntity: true, diff --git a/demo/canvas-040.html b/demo/canvas-040.html index beb0d5bc9..ed93913d5 100644 --- a/demo/canvas-040.html +++ b/demo/canvas-040.html @@ -47,6 +47,8 @@

      Trace out a Shape path over time

      Test purpose

      +

      Note that this functionality - for reasons unknown - does not work on Safari-based browsers.

      +
      • Create an arrow Shape entity
      • Setup the entity's stroke line to use a dash (lineDash array)
      • diff --git a/demo/particles-007.html b/demo/particles-007.html index 2c34cdd27..2ee3d3f6e 100644 --- a/demo/particles-007.html +++ b/demo/particles-007.html @@ -58,6 +58,9 @@

        Particle Force objects: generation and functionality

        Test purpose

        + +

        Be aware that applying a filter to a particle system can cause it to fail in interesting yet mysterious ways! In some browsers, the addition of a filter can also cause a significant degradation in canvas animation speeds

        +
        • Create a Block entity to match the canvas dimensions, to act as a generation area for an Emitter with a set number of required particles.
        • Create additional forces to act on the particles.
        • diff --git a/demo/particles-009.html b/demo/particles-009.html index 0c7befde7..efe382ae3 100644 --- a/demo/particles-009.html +++ b/demo/particles-009.html @@ -47,6 +47,9 @@

          The yellow beads and the orange ball are draggable

          Test purpose

          + +

          Be aware that applying a filter to a particle system can cause it to fail in interesting yet mysterious ways! In some browsers, the addition of a filter can also cause a significant degradation in canvas animation speeds

          +
          • Create a particle world object and a Net entity. Make all the particles in the top row static, and mark them as draggable.
          • Create a Wheel entity, and a Force object that uses that entity's position and radius to create a repulsing force (simulating a collision effect). Make the Wheel entity draggable; and that particles appear above it when it is dragged.
          • diff --git a/demo/particles-011.html b/demo/particles-011.html index 216e1aa80..91d43a19d 100644 --- a/demo/particles-011.html +++ b/demo/particles-011.html @@ -46,6 +46,9 @@

            Tracer entity: generation and functionality

            Test purpose

            + +

            Be aware that applying a filter to a particle system can cause it to fail in interesting yet mysterious ways! In some browsers, the addition of a filter can also cause a significant degradation in canvas animation speeds

            +
            • Create a path-based Shape entity.
            • Create a Tracer entity; set it to delta-animate along the Shape entity's path.
            • diff --git a/source/factory/cell.js b/source/factory/cell.js index 220ec0099..fe48a32dd 100644 --- a/source/factory/cell.js +++ b/source/factory/cell.js @@ -766,6 +766,9 @@ P.setEngineActions = { }; // The following functions are used as part of entity object `stamp` functionality - specifically for those with a __method__ whose appearance is affected by shadows, and for the `clear` method +// + Scrawl-canvas, for the most part, avoids using engine.save() and engine.restore() functionality, instead preferring to keep track of engine state in State objects. +// + When clearing and restoring shadows - a frequent operation given Scrawl-canvas functionality around stamping methods - both the Cell's state object and the Canvas context engine need to be updated with the necessary data +// + The same reasoning holds when setting up the context engine to 'clear' an entity from the canvas display instead of stamping it onto the canvas // `clearShadow` P.clearShadow = function () { @@ -821,6 +824,21 @@ P.restoreEngine = function () { return this; }; +// `getComputedFontSizes` - internal function - the Cell wrapper gets passed by Phrase entitys to its fontAttributes object, which then invokes it when calculating font sizes +P.getComputedFontSizes = function () { + + let host = this.getHost(); + + if (host) { + + let em = window.getComputedStyle(host.domElement), + rem = window.getComputedStyle(document.documentElement); + + return [parseFloat(em.fontSize), parseFloat(rem.fontSize), window.innerWidth, window.innerHeight]; + } + return false; +} + // #### Display cycle functionality // This functionality is entirely Promise-based, and triggered by the Cell's Canvas wrapper controller diff --git a/source/factory/filter.js b/source/factory/filter.js index 7fd3a6d96..6a7280b62 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -1094,6 +1094,7 @@ const setActionsArray = { // + These workers (generally there's only one) are not exposed to developers using the scrawl object, thus only get called internally // START PRODUCTION CODE +/* const filterPool = []; import { filterUrl } from '../worker/filter-string.js'; @@ -1119,11 +1120,11 @@ const actionFilterWorker = function (worker, items) { worker.postMessage(items); }); }; +*/ // END PRODUCTION CODE // START DEV CODE -/* const filterPool = []; const requestFilterWorker = function () { @@ -1154,7 +1155,6 @@ const actionFilterWorker = function (worker, items) { worker.postMessage(items); }); }; -*/ // END DEV CODE diff --git a/source/factory/fontAttributes.js b/source/factory/fontAttributes.js index 185dd010a..620925527 100644 --- a/source/factory/fontAttributes.js +++ b/source/factory/fontAttributes.js @@ -48,101 +48,78 @@ P = baseMix(P); // + Attributes defined in the [base mixin](../mixin/base.html): __name__. let defaultAttributes = { -// __font-style__ -// -// _values:_ -// + `normal`, `italic`, `oblique` -// -// CANVAS CONTEXT ENGINE - does not handle `oblique` slope values +// __font__ - pseudo-attribute String which gets broken down into its component parts. +// + Once the breakdown completes the font string gets reassembled and then passed through a <canvas> element's context engine to determine the actual font String that will be used by the engine. This value gets stored in the __temperedFontString__ attribute. + +// _font-style_ - saved in the __style__ String attribute - acceptable values are: `normal`, `italic` and `oblique`. Note that browser handling of oblique (sloped rather than explicitly italic) fonts by their respective canvas context engines is, at best, idiosyncratic. +// + To explicitly use an oblique font design (often called 'slanted' or 'sloped'), reference the font face directly in the `family` or font strings. style: 'normal', -// __font-variant__ - the standard indicates that canvas context engine should only recognise `normal` and `small-caps` values -// -// CANVAS CONTEXT ENGINE - complies with the standard, thus Scrawl-canvas ignores all other possible values. Do not use them in font strings: -// + `font-variant-caps` -// + `font-variant-numeric` -// + `font-variant-ligatures` -// + `font-variant-east-asian` -// + `font-variant-alternates` -// -// +// _font-variant_ - saved in the __variant__ String attribute - the standard indicates that canvas context engine should only recognise `normal` and `small-caps` values. Do not use other possibilities (_font-variant-caps, font-variant-numeric, font-variant-ligatures, font-variant-east-asian, font-variant-alternates_) in font strings; scrawl-canvas will remove and/or ignore them when it parses the font string. variant: 'normal', -// __font-weight__ -// -// _Values:_ -// + `normal`, `bold`, `lighter`, `bolder`; or -// + a number (between 1 and 1000, usually in 100 steps between 100 and 900) -// -// (`normal` translates to 400; `bold` translates to 700) -// -// CANVAS CONTEXT ENGINE - does seem to recognise both keyword and (x00) number values, but the interpretation of these values can be somewhat erratic. `normal` and `bold` keywords are generally respected and actioned as expected. +// _font-weight_ - saved in the __weight__ String attribute - acceptable values are: `normal`, `bold`, `lighter`, `bolder`; or a number (100. 200, 300, ... 900). Bold is generally the equivalent of 700, and normal is 400; lighter/bolder are values relative to the <canvas> element's computed font weight. Note that browser handling of font weight requirements by their respective canvas context engines is not entirely standards compliant - for instance Safari browsers will generally ignore weight assertions in font strings. +// + To explicitly use a light, bold or heavy font design, reference the font face directly in the `family` or font strings. weight: 'normal', -// __font-stretch__ -// -// _Values:_ -// + `normal` (default) -// + `semi-condensed`, `condensed`, `extra-condensed`, `ultra-condensed` -// + `semi-expanded`, `expanded`, `extra-expanded`, `ultra-expanded` -// -// We ignore number% values (permitted values are 50% - 200%) because the context engine only accepts a single font string and the syntax requirements for that font string are that "font-stretch may only be a single keyword value" -// -// CANVAS CONTEXT ENGINE - doesn't seem to recognise font-stretch values (for Garamond), but doesn't choke on their presence either +// __font-stretch__ - saved in the __stretch__ String attribute acceptable values are: `normal`, `semi-condensed`, `condensed`, `extra-condensed`, `ultra-condensed`, `semi-expanded`, `expanded`, `extra-expanded`, `ultra-expanded`. Browser support for these values by the <canvas> element's context engine is, for the most part, non-existant. +// + To explicitly use a condensed or stretched font design, reference the font face directly in the `family` or font strings. stretch: 'normal', -// __font-size__ -// -// Standard says: _"with the 'font-size' component converted to CSS pixels"_ -// + TODO: hoping this means that canvas font will do this for us, rather than having to convert in code - if not, extract it by sticking an interim css style against the internal <div> to get computed value? -// -// Values can be: -// -// _Absolute or relative string values:_ -// + `xx-small`, `x-small`, `small`, `medium`, `large`, `x-large`, `xx-large` -// + `smaller`, `larger` +// _font-size_ - broken into two parts and saved in the __sizeValue__ Number and __sizeMetric__ String, each of which can be set separately. The W3C HTML Canvas 2D Context Recommendation states: _"with the 'font-size' component converted to CSS pixels"_. However, Scrawl-canvas makes every effort to respect and interpret non-px-based font-size requests. +// + Note that these pixel values are representative of the <canvas> element's intrinsic drawing area dimensions, not of any such measure modified by CSS dimension rules (width, height, scale, skew, etc) applied to the canvas. // -// _Length values:_ -// + `1.2em`, `1.2ch`, `1.2ex`, `1.2rem` -// + (experimental!) `1.2cap`, `1.2ic`, `1.2lh`, `1.2rlh` -// + `1.2vh`, `1.2vw`, `1.2vmin`, `1.2vmax` -// + (experimental!) `1.2vi`, `1.2vb` -// + `1.2px`, `1.2cm`, `1.2mm`, `1.2in`, `1.2pc`, `1.2pt` -// + (experimental!) `1.2Q` +// Length values relative to some intrinsic propertly of the font - Scrawl-canvas will not attempt to interpret the following, instead treating them as some fixed proportion of the <canvas> element's computed font size: +// + `1em` is the <canvas> element's computed font size +// + `1rem` is the document root (<html>) element's computed font size +// + `1lh` is the <canvas> element's computed font size multiplied by the entity's line height value +// + `1rlh` is the document root (<html>) element's computed font size multiplied by the entity's line height value +// + `1ex` is ≈ '0.5em' +// + `1cap`, `1ch`, `1ic` are all ≈ '1em' // -// Note that only the following have wide support; these are the only metrics this code tests for: `em`, `ch`, `ex`, `rem`, `vh`, `vw`, `vmin`, `vmax`, `px`, `cm`, `mm`, `in`, `pc`, `pt` +// Length percentage values, with calculation based on the <canvas> element's computed font size: +// + `120%` = '1.2em' // -// _Percent values:_ -// + `1.2%` +// Non-numerical values (in the Fonts standards, 'absolute-size' and 'relative-size' keywords) will calculate a size based on the <canvas> element's computed font size: +// + `xx-small` = 60% of the computed font size +// + `x-small` = 75% of the computed font size +// + `small` = 89% of the computed font size +// + `medium` = 100% of the computed font size +// + `large` = 120% of the computed font size +// + `x-large` = 150% of the computed font size +// + `xx-large` = 200% of the computed font size +// + `xxx-large` = 300% of the computed font size +// + `smaller` = 80% of the computed font size +// + `larger` = 130% of the computed font size // -// (Percent values clash with font-stretch % values - assume any number followed by a % is a font-size value) -// -// GOTCHA NOTE 1: font-size is never a number; it must always have a metric. Tweens should be able to handle this requirement with no issues. -// -// GOTCHA NOTE 2: the canvas context engine refuses to handle line heights appended to the font size value (eg: `12px/1.2`) and expects all line height values to = `normal`. Scrawl-canvas handles line height for multiline phrases using an alternative mechanism. Thus including a `/lineheight` value in a font string may cause `Phrase.set` functionality to fail in unexpected ways. +// Length values relative to the browser's viewport (window) dimensions: +// + `1vw` and `1vh` represent 1% of the viewport's width and height, respectively +// + `1vmax` - is 1% of the larger viewport dimension +// + `1vmin` - is 1% of the smaller viewport dimension +// + Scrawl-canvas treats `1vi` as ≈ 1vw, and `1vb` as ≈ 1vh +// +// Absolute length values convert as follow: +// + `1in` (inch) = 96px +// + `1cm` (centimeter) = 37.80px +// + `1mm` (millimeter) = 3.78px +// + `1Q` (quarter mm) = 0.95px +// + `1pc` (pica) = 16px +// + `1pt` (point) = 1.33px +// + `1px` (pixel) = 1px +// +// Note: we break down the `size` attribute into two components: __sizeValue__ and __sizeMetric__. Line height values are ignored and, when present in a font string, may break the code! sizeValue: 12, sizeMetric: 'px', -// __font-family__ -// + Always comes at the end of the string. -// + More than one can be included, with each separated by commas -// + Be aware that string may often include quotes around font families with spaces in their names. -// -// Generic font names have been extended - values include: -// + `serif`, `sans-serif`, `monospace`, `cursive`, `fantasy`, `system-ui`, `math`, `emoji`, `fangsong` -// -// GOTCHA NOTE: current functionality tests the supplied string with the expectation that the font families will be preceded by a font size metric value. To set the fontFamily value direct, put a font size metric at the start of the string - % will do - followed by a space and then the font family string: -// ``` -// phraseInstance.set({ -// font: '% "Gill Sans", sans-serif' -// }) -// ``` +// __font-family__ - any part of the font string that comes after the above declarations. +// + It is generally a good idea to include one of the preset defaults - `serif`, `sans-serif`, `monospace`, `cursive`, `fantasy`, `system-ui`, `math`, `emoji`, `fangsong` - at the end of the font or family string, to act as a fallback default as other fonts load. +// + Scrawl-canvas will attempt to redraw the display when fonts complete their (asynchronous) upload, but this may fail and need to be triggered manually. family: 'sans-serif', }; @@ -182,57 +159,82 @@ S.size = function (item) { size = 0, metric = 'medium'; - // Canvas context engine (Chrome on MacBook Pro) interprets this as 9px Garamond if (item.indexOf('xx-small') >= 0) metric = 'xx-small'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 10px Garamond else if (item.indexOf('x-small') >= 0) metric = 'x-small'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 8.33px Garamond else if (item.indexOf('smaller') >= 0) metric = 'smaller'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 13px Garamond else if (item.indexOf('small') >= 0) metric = 'small'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 32px Garamond + else if (item.indexOf('medium') >= 0) metric = 'medium'; + else if (item.indexOf('xxx-large') >= 0) metric = 'xxx-large'; else if (item.indexOf('xx-large') >= 0) metric = 'xx-large'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 24px Garamond else if (item.indexOf('x-large') >= 0) metric = 'x-large'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 12px Garamond else if (item.indexOf('larger') >= 0) metric = 'larger'; - - // Canvas context engine (Chrome on MacBook Pro) interprets this as 18px Garamond else if (item.indexOf('large') >= 0) metric = 'large'; - // Canvas context engine (Chrome on MacBook Pro) interprets this as 16px Garamond - else if (item.indexOf('medium') >= 0) metric = 'medium'; else { size = 12; metric = 'px' } - // For when the size has stuff before it in the string (which can, sadly, include numbers) - if (/.* (\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i.test(item)) { - - res = item.match(/.* (\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i); - size = (res[1] !== '.') ? parseFloat(res[1]) : 12; - metric = res[2]; + let full, val, suffix; + + let r = item.match(/(\d+\.\d+|\d+|\.\d+)(rem|em|rlh|lh|ex|cap|ch|ic|%|vw|vh|vmax|vmin|vi|vb|in|cm|mm|Q|pc|pt|px)?/i); + + if (Array.isArray(r)) { + + [full, val, suffix] = r; + + if (val && suffix && val != '.') { + + size = val; + metric = suffix; + } + } + else { + + r = item.match(/\/(\d+\.\d+|\d+|\.\d+)(rem|em|rlh|lh|ex|cap|ch|ic|%|vw|vh|vmax|vmin|vi|vb|in|cm|mm|Q|pc|pt|px)?/i); + + if (Array.isArray(r)) { + + [full, val, suffix] = r; + + if (val && suffix && val != '.') { + + size = val; + metric = suffix; + } + } } - // For when the size starts the string - else if (/^(\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i.test(item)) { - - res = item.match(/^(\d+\.\d+|\d+|\.\d+)(%|em|ch|ex|rem|vh|vw|vmin|vmax|px|cm|mm|in|pc|pt)?/i); - size = (res[1] !== '.') ? parseFloat(res[1]) : 12; - metric = res[2]; + if (size !== this.sizeValue) { + + this.sizeValue = size; + this.dirtyFont = true; } + if (metric !== this.sizeMetric) { - this.sizeValue = size; - this.sizeMetric = metric; + this.sizeMetric = metric; + this.dirtyFont = true; + } } }; +S.sizeValue = function (item) { + + if (xt(item) && item !== this.sizeValue) { + + this.sizeValue = item; + this.dirtyFont = true; + } +} + +S.sizeMetric = function (item) { + + if (xt(item) && item !== this.sizeMetric) { + + this.sizeMetric = item; + this.dirtyFont = true; + } +} + // __font__ - pseudo-attribute which calls various functions to break down the font String into its constituent parts S.font = function (item) { @@ -250,34 +252,45 @@ S.font = function (item) { // __style__ S.style = function (item) { - let v = 'normal'; - if (xt(item)) { + let v = 'normal'; + v = (item.indexOf('italic') >= 0) ? 'italic' : v; v = (item.indexOf('oblique') >= 0) ? 'oblique' : v; - } - this.style = v; + if (v !== this.style) { + + this.style = v; + this.dirtyFont = true; + } + } }; // __variant__ S.variant = function (item) { - let v = 'normal'; + if (xt(item)) { + + let v = 'normal'; + + v = (item.indexOf('small-caps') >= 0) ? 'small-caps' : v; - v = (item.indexOf('small-caps') >= 0) ? 'small-caps' : v; + if (v !== this.variant) { - this.variant = v; + this.variant = v; + this.dirtyFont = true; + } + } }; // __weight__ S.weight = function (item) { - let v = 'normal'; - if (xt(item)) { + let v = 'normal'; + // Handling direct entry of numbers if (item.toFixed) v = item; else { @@ -300,48 +313,257 @@ S.weight = function (item) { // Also need to capture instances where a number value has been directly set with no other font attributes around it v = (/^\d00$/.test(item)) ? item : v; } - } - this.weight = v; + if (v !== this.weight) { + + this.weight = v; + this.dirtyFont = true; + } + } }; // __stretch__ S.stretch = function (item) { - let v = 'normal'; - if (xt(item)) { + let v = 'normal'; + v = (item.indexOf('semi-condensed') >= 0) ? 'semi-condensed' : v; v = (item.indexOf('condensed') >= 0) ? 'condensed' : v; v = (item.indexOf('extra-condensed') >= 0) ? 'extra-condensed' : v; v = (item.indexOf('ultra-condensed') >= 0) ? 'ultra-condensed' : v; - v = (item.indexOf('semi-condensed') >= 0) ? 'semi-condensed' : v; - v = (item.indexOf('condensed') >= 0) ? 'condensed' : v; - v = (item.indexOf('extra-condensed') >= 0) ? 'extra-condensed' : v; - v = (item.indexOf('ultra-condensed') >= 0) ? 'ultra-condensed' : v; - } + v = (item.indexOf('semi-expanded') >= 0) ? 'semi-expanded' : v; + v = (item.indexOf('expanded') >= 0) ? 'expanded' : v; + v = (item.indexOf('extra-expanded') >= 0) ? 'extra-expanded' : v; + v = (item.indexOf('ultra-expanded') >= 0) ? 'ultra-expanded' : v; + + if (v !== this.stretch) { - this.stretch = v; + this.stretch = v; + this.dirtyFont = true; + } + } }; // __family__ +P.rfsTestArray1 = ['italic','oblique','small-caps','normal','bold','lighter','bolder','ultra-condensed','extra-condensed','semi-condensed','condensed','ultra-expanded','extra-expanded','semi-expanded','expanded','xx-small','x-small','small','medium','xxx-large','xx-large','x-large','large']; +P.rfsTestArray2 = ['0','1','2','3','4','5','6','7','8','9']; S.family = function (item) { if (xt(item)) { - let guess = item.match(/( xx-small| x-small| small| medium| large| x-large| xx-large| smaller| larger|\d%|\dem|\dch|\dex|\drem|\dvh|\dvw|\dvmin|\dvmax|\dpx|\dcm|\dmm|\din|\dpc|\dpt) (.*)$/i); + let v = 'sans-serif'; + + let itemArray = item.split(' '), + len = itemArray.length; + + if (len === 1) v = item; + + let counter = 0, + flag = true; + + while (flag) { + + if (counter === len) flag = false; + else { - this.family = (guess && guess[2]) ? guess[2] : item; + let el = itemArray[counter]; + + if (!el.length) counter++; + else if (this.rfsTestArray1.indexOf(el) >= 0) counter++; + else if (this.rfsTestArray2.indexOf(el[0]) >= 0) counter++; + else flag = false; + } + } + if (counter < len) v = itemArray.slice(counter).join(' '); + + if (v !== this.family) { + + this.family = v; + this.dirtyFont = true; + } } }; // #### Prototype functions +P.getFontString = function() { + + if (!this.dirtyFont && this.temperedFontString) return this.temperedFontString; + else return this.buildFont(); +} + +P.updateMetadata = function (scale, lineHeight, host) { + + if (scale && scale.toFixed && scale > 0 && scale !== this.scale) { + + this.scale = scale; + this.dirtyFont = true; + } + + if (lineHeight && lineHeight.toFixed && lineHeight > 0 && lineHeight !== this.lineHeight) { + + this.lineHeight = lineHeight; + this.dirtyFont = true; + } + + let currentHost = (this.host && this.host.type && this.host.type === 'Cell') ? this.host.name : ''; + if (host && host.type && host.type === 'Cell' && host.name !== currentHost) { + + this.host = host; + this.dirtyFont = true; + } +}; + +P.calculateSize = function () { + + if (this.host) { + + let {scale, lineHeight, host, sizeValue, sizeMetric} = this; + + let [parentSize, rootSize, viewportWidth, viewportHeight] = host.getComputedFontSizes(); + + if (isNaN(sizeValue)) sizeValue = 12; + + let res = parentSize; + + switch (sizeMetric) { + + case 'rem' : + res = rootSize * sizeValue; + break; + + case 'em' : + res = parentSize * sizeValue; + break; + + case 'rlh' : + res = (rootSize * lineHeight) * sizeValue; + break; + + case 'lh' : + res = (parentSize * lineHeight) * sizeValue; + break; + + case 'ex' : + res = (parentSize / 2) * sizeValue; + break; + + case 'cap' : + res = parentSize * sizeValue; + break; + + case 'ch' : + res = parentSize * sizeValue; + break; + + case 'ic' : + res = parentSize * sizeValue; + break; + + case '%' : + res = (parentSize / 100) * sizeValue; + break; + + case 'vw' : + res = (viewportWidth / 100) * sizeValue; + break; + + case 'vh' : + res = (viewportHeight / 100) * sizeValue; + break; + + case 'vmax' : + res = (Math.max(viewportWidth, viewportHeight) / 100) * sizeValue; + break; + + case 'vmin' : + res = (Math.min(viewportWidth, viewportHeight) / 100) * sizeValue; + break; + + case 'vi' : + res = (viewportWidth / 100) * sizeValue; + break; + + case 'vb' : + res = (viewportHeight / 100) * sizeValue; + break; + + case 'in' : + res = 96 * sizeValue; + break; + + case 'cm' : + res = 37.8 * sizeValue; + break; + + case 'mm' : + res = 3.78 * sizeValue; + break; + + case 'Q' : + res = 0.95 * sizeValue; + break; + + case 'pc' : + res = 16 * sizeValue; + break; + + case 'pt' : + res = 1.33 * sizeValue; + break; + + case 'px' : + res = sizeValue; + break; + + case 'xx-small' : + res = 0.6 * parentSize; + break; + + case 'x-small' : + res = 0.75 * parentSize; + break; + + case 'smaller' : + res = 0.8 * parentSize; + break; + + case 'small' : + res = 0.89 * parentSize; + break; + + case 'xxx-large' : + res = 3 * parentSize; + break; + + case 'xx-large' : + res = 2 * parentSize; + break; + + case 'x-large' : + res = 1.5 * parentSize; + break; + + case 'larger' : + res = 1.3 * parentSize; + break; + + case 'large' : + res = 1.2 * parentSize; + break; + } + return `${res * scale}px`; + } + return '12px'; +} // `buildFont` - internal function // + Takes into account a scaling factor -P.buildFont = function (scale = 1) { +P.buildFont = function () { + + this.dirtyFont = false; let font = '' @@ -349,27 +571,27 @@ P.buildFont = function (scale = 1) { if (this.variant !== 'normal') font += `${this.variant} `; if (this.weight !== 'normal') font += `${this.weight} `; if (this.stretch !== 'normal') font += `${this.stretch} `; - if (this.sizeValue) font += `${this.sizeValue * scale}${this.sizeMetric} `; - else font += `${this.sizeMetric} `; + + font += `${this.calculateSize()} `; font += `${this.family}`; // Temper the font string. Submit it to a canvas context engine to see what it makes of it let myCell = requestCell(); - myCell.engine.font = font; font = myCell.engine.font; - releaseCell(myCell); + + this.temperedFontString = font; + return font; }; // `update` - `sets` items, then calls `buildFont` -P.update = function (scale = 1, items) { +P.update = function (items) { if (items) this.set(items); - - return this.buildFont(scale); + return this.getFontString(); }; diff --git a/source/factory/phrase.js b/source/factory/phrase.js index 3d867457a..dfeb39061 100644 --- a/source/factory/phrase.js +++ b/source/factory/phrase.js @@ -571,7 +571,7 @@ S.font = function (item) { this.dirtyPathObject = true; }; -// __style__ - CSS `font-style` String - `normal`, `italic` +// __style__ - CSS `font-style` String G.style = function () { return this.fontAttributes.get('style'); @@ -584,7 +584,7 @@ S.style = function (item) { this.dirtyPathObject = true; }; -// __variant__ - CSS `font-variant` String - `normal`, `small-caps` +// __variant__ - CSS `font-variant` String G.variant = function () { return this.fontAttributes.get('variant'); @@ -597,7 +597,7 @@ S.variant = function (item) { this.dirtyPathObject = true; }; -// __weight__ - CSS `font-weight` String - `normal`, `bold`, `lighter`, `bolder`, or an integer Number (between `1` and `1000`) +// __weight__ - CSS `font-weight` String G.weight = function () { return this.fontAttributes.get('weight'); @@ -610,7 +610,7 @@ S.weight = function (item) { this.dirtyPathObject = true; }; -// __stretch__ - CSS `font-stretch` String - `normal` +// __stretch__ - CSS `font-stretch` String G.stretch = function () { return this.fontAttributes.get('stretch'); @@ -623,11 +623,7 @@ S.stretch = function (item) { this.dirtyPathObject = true; }; -// __size__ - CSS `font-size` String: -// + `xx-small`, `x-small`, `small`, `medium`, `large`, `x-large`, `xx-large` -// + `smaller`, `larger` -// + `120%` -// + `1.2rem`, `12px`, etc - Scrawl-canvas will work with the following metrics: `em`, `ch`, `ex`, `rem`, `vh`, `vw`, `vmin`, `vmax`, `px`, `cm`, `mm`, `in`, `pc`, `pt` +// __size__ - CSS `font-size` String G.size = function () { return this.fontAttributes.get('size'); @@ -689,6 +685,7 @@ S.family = function (item) { // #### Prototype functions +// `cleanDimensionsAdditionalActions` - local overwrite P.cleanDimensionsAdditionalActions = function () { if (this.dimensions[0] === 'auto') { @@ -698,7 +695,8 @@ P.cleanDimensionsAdditionalActions = function () { let myCell = requestCell(), engine = myCell.engine; - engine.font = this.fontAttributes.buildFont(); + this.fontAttributes.updateMetadata(this.scale, this.lineHeight, this.getHost()); + engine.font = this.fontAttributes.getFontString(); this.currentDimensions[0] = Math.ceil(engine.measureText(this.currentText).width); @@ -794,7 +792,6 @@ P.cleanPathObject = function () { if (this.dirtyFont && this.fontAttributes) { this.dirtyFont = false; - this.fontAttributes.buildFont(this.scale); this.dirtyText = true; this.dirtyMimicDimensions = true; this.dirtyPositionSubscribers = true; @@ -811,7 +808,7 @@ P.cleanPathObject = function () { scale = this.currentScale, x = -handle[0] * scale, y = -handle[1] * scale, - w = dims[0] * scale, + w = dims[0], h = dims[1] * scale; this.boxStartValues = [x, y]; @@ -936,13 +933,16 @@ P.calculateTextPositions = function (mytext) { let scale = this.currentScale, dims = this.currentDimensions, - width = dims[0] * scale, + width = dims[0], treatWordAsGlyph = this.treatWordAsGlyph, lineHeight = this.lineHeight, justify = this.justify, handle, handleX, handleY; - let defaultFont = fontAttributes.update(scale), + fontAttributes.updateMetadata(scale, lineHeight, host); + glyphAttributes.updateMetadata(scale, lineHeight, host); + + let defaultFont = fontAttributes.getFontString(), defaultFillStyle = makeStyle(state.fillStyle), defaultStrokeStyle = makeStyle(state.strokeStyle), defaultSpace = this.letterSpacing * scale, @@ -1010,7 +1010,7 @@ P.calculateTextPositions = function (mytext) { } if (gStyle.defaults) { - currentFont = glyphAttributes.update(scale, fontAttributes); + currentFont = glyphAttributes.update(fontAttributes); currentStrokeStyle = defaultStrokeStyle; currentFillStyle = defaultFillStyle; currentSpace = defaultSpace; @@ -1062,7 +1062,7 @@ P.calculateTextPositions = function (mytext) { if (i !== 0 && (gStyle.variant || gStyle.weight || gStyle.style || gStyle.stretch || gStyle.size || gStyle.sizeValue || gStyle.sizeMetric || gStyle.family || gStyle.font)) { - item = glyphAttributes.update(scale, gStyle); + item = glyphAttributes.update(gStyle); if (item !== currentFont) { currentFont = item; diff --git a/source/mixin/entity.js b/source/mixin/entity.js index a3c0906ec..cb83ef11b 100644 --- a/source/mixin/entity.js +++ b/source/mixin/entity.js @@ -532,8 +532,8 @@ export default function (P = {}) { currentEngine.save(); - currentEngine.globalAlpha = self.state.globalAlpha; - currentEngine.globalCompositeOperation = self.state.globalCompositeOperation; + currentEngine.globalAlpha = (self.state && self.state.globalAlpha) ? self.state.globalAlpha : 1; + currentEngine.globalCompositeOperation = (self.state && self.state.globalCompositeOperation) ? self.state.globalCompositeOperation : 'source-over'; currentEngine.setTransform(1, 0, 0, 1, 0, 0); From 2a8160ccd764472600c110d33edb50acef3bf6d5 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Sun, 31 Jan 2021 20:57:57 +0000 Subject: [PATCH 23/28] minor bugfixes following tests in Safari --- demo/canvas-015.html | 1 + demo/canvas-019.html | 1 + demo/canvas-023.html | 1 + demo/canvas-025.html | 2 +- demo/canvas-027.js | 26 +++++++++++++------- demo/canvas-029.html | 2 +- demo/canvas-043.js | 2 +- demo/dom-002.html | 1 + demo/dom-008.html | 1 + demo/filters-501.html | 2 +- demo/filters-502.html | 2 +- demo/filters-503.html | 2 +- demo/filters-504.html | 2 +- demo/filters-505.html | 2 +- demo/particles-008.html | 1 + demo/particles-016.html | 7 +++++- source/factory/cell.js | 2 +- source/factory/fontAttributes.js | 16 ++++++++++++- source/factory/mesh.js | 22 +++++++++++++---- source/factory/phrase.js | 8 +++---- source/worker/filter.js | 41 ++++++++++++++++++-------------- 21 files changed, 98 insertions(+), 46 deletions(-) diff --git a/demo/canvas-015.html b/demo/canvas-015.html index 1e5f896b9..8751b0e20 100644 --- a/demo/canvas-015.html +++ b/demo/canvas-015.html @@ -30,6 +30,7 @@

              Test purpose

              • Kill and resurrect several entitys to make sure they remove themselves entirely from the Scrawl-canvas system, and cleanly recreate themselves from saved packets
              +

              Note: this Demo will appear differently on webkit-based (for example: Safari) and other browsers because webkit engines have difficulty understanding font strings that include a bold keyword. To achieve boldness in these browsers, use a font face that already has boldness applied to it.

              Annotated code

            diff --git a/demo/canvas-019.html b/demo/canvas-019.html index 9f1d625ec..2d435827d 100644 --- a/demo/canvas-019.html +++ b/demo/canvas-019.html @@ -51,6 +51,7 @@

            Test purpose

        • Check that all canvases display as expected, with in-focus areas of the image centred either on the mouse cursor, or in the middle of the canvas.
        +

        Known issue: generating the blurred images from the originals takes a very long time in some browsers (for example: Safari). once the images are generated, then the Demo should be performant across all browsers.

        Annotated code

        diff --git a/demo/canvas-023.html b/demo/canvas-023.html index d765dc403..0ec4e0baa 100644 --- a/demo/canvas-023.html +++ b/demo/canvas-023.html @@ -192,6 +192,7 @@

        Test purpose

      • Add controls to manipulate the Grid's positioning (start, handle, offset)
      • Add controls to manipulate the Grid's roll, scale and flip attributes
      +

      Known issue: in webkit-based browsers (for example: Safari), setting the Highlight fill or Grid line stroke to a video will lead to that video being displayed across the grid as if it was the Base fill

      Annotated code

      diff --git a/demo/canvas-025.html b/demo/canvas-025.html index 25478fc1e..7295fba50 100644 --- a/demo/canvas-025.html +++ b/demo/canvas-025.html @@ -59,7 +59,7 @@

      Test purpose

    • Check that when the browser selects a different srcset image, the canvas displays that image
    • Check that the canvas always displays the entire image, not a part of it
    - +

    Known issue: Webkit based browsers (for example: Safari) will load an appropriately sized image initially, but does not respond by uploading additional images as the browser dimensiopns change.

    Annotated code

    diff --git a/demo/canvas-027.js b/demo/canvas-027.js index 7d9dd2190..3c442352b 100644 --- a/demo/canvas-027.js +++ b/demo/canvas-027.js @@ -170,13 +170,21 @@ scrawl.makePhrase({ // Turn the swans pink scrawl.makeFilter({ - name: 'red', - method: 'red', -}).clone({ - - name: 'chroma', - method: 'chroma', - ranges: [[0, 0, 0, 190, 190, 190]], + name: 'swan-mask', + + actions: [ + { + action: 'threshold', + level: 200, + low: [0, 0, 0], + high: [255, 0, 0], + }, + { + action: 'channels-to-alpha', + includeGreen: false, + includeBlue: false, + }, + ], }); scrawl.makePicture({ @@ -195,7 +203,7 @@ scrawl.makePicture({ copyStartY: '25%', - filters: ['chroma', 'red'], + filters: ['swan-mask'], globalAlpha: 0.01, @@ -434,7 +442,7 @@ let vtPhrase = scrawl.makePhrase({ name: 'test-video-time-phrase', family: 'monospace', - size: '2em', + size: '1em', weight: '700', startX: '1%', diff --git a/demo/canvas-029.html b/demo/canvas-029.html index db6b05e5e..5f4dd6da7 100644 --- a/demo/canvas-029.html +++ b/demo/canvas-029.html @@ -56,7 +56,7 @@

    Test purpose

  • Check that the gradient appears as expected when it is horizontal (left-right)
  • Check that the gradient appears as expected for both cell-locked and entity-locked gradients
  • - +

    Known issue: this Demo is excessively slow in Webkit-based browsers (for instance: Safari)

    Annotated code

    diff --git a/demo/canvas-043.js b/demo/canvas-043.js index 91a848449..a344e3ec4 100644 --- a/demo/canvas-043.js +++ b/demo/canvas-043.js @@ -340,7 +340,7 @@ scrawl.makePhrase({ text: 'HELLO!', font: 'bold 120px serif', - lineHeight: 0.7, + lineHeight: 1, }); const canvasThreePostInitialization = function () { diff --git a/demo/dom-002.html b/demo/dom-002.html index 217ad26d9..a9d5c869f 100644 --- a/demo/dom-002.html +++ b/demo/dom-002.html @@ -152,6 +152,7 @@

    Test purpose

  • Set a stack element to pivot to another element
  • Check the attributes that allow a pivoted element to take into account the host element's handle and rotation values
  • +

    Note: transform-style: preserve-3d issue? Safari displays differently from other browsers. See Things to Watch Out for When Working with CSS 3D.

    Annotated code

    diff --git a/demo/dom-008.html b/demo/dom-008.html index 11dc27c79..bd47e6f15 100644 --- a/demo/dom-008.html +++ b/demo/dom-008.html @@ -41,6 +41,7 @@

    Test purpose

  • Animate the cube by animating just the one element to which the others are pivoted
  • (Cube animations up to scrawl v7 relied on direct manipulation of quaternions in user code; this should all be hidden in v8, leaving the user able to animate the cube entirely via rotation attributes - pitch, yaw, roll)
  • +

    Note: transform-style: preserve-3d or backface-visibility: hidden issue? Safari displays differently from other browsers. See Things to Watch Out for When Working with CSS 3D.

    Annotated code

    diff --git a/demo/filters-501.html b/demo/filters-501.html index 3f2c4f543..ad1661cbf 100644 --- a/demo/filters-501.html +++ b/demo/filters-501.html @@ -69,7 +69,7 @@

    Test purpose

  • Apply a set of CSS-based filter Strings to the entitys, and to the Cell
  • Check that the selected entity/Cell updates its display in line with the current filter String
  • - +

    Known issue: Webkit-based browsers (for instance, Safari) have not yet implemented the Canvas context 'filter' attribute functionality.

    Annotated code

    diff --git a/demo/filters-502.html b/demo/filters-502.html index da7adb152..d8524732a 100644 --- a/demo/filters-502.html +++ b/demo/filters-502.html @@ -56,7 +56,7 @@

    Test purpose

  • Apply the filter to the entity
  • Update the SVG filter's settings; check that they display on the entity as expected
  • - +

    Known issue: Webkit-based browsers (for instance, Safari) have not yet implemented the Canvas context 'filter' attribute functionality.

    Annotated code

    diff --git a/demo/filters-503.html b/demo/filters-503.html index e03528afe..4ab7e3069 100644 --- a/demo/filters-503.html +++ b/demo/filters-503.html @@ -61,7 +61,7 @@

    Test purpose

  • Apply the filter to the entity
  • Update the SVG filter's settings; check that they display on the entity as expected
  • - +

    Known issue: Webkit-based browsers (for instance, Safari) have not yet implemented the Canvas context 'filter' attribute functionality.

    Annotated code

    diff --git a/demo/filters-504.html b/demo/filters-504.html index 33f332a64..7f488526e 100644 --- a/demo/filters-504.html +++ b/demo/filters-504.html @@ -55,7 +55,7 @@

    Test purpose

  • Apply the filter to the entity
  • Update the SVG filter's settings; check that they display on the entity as expected
  • - +

    Known issue: Webkit-based browsers (for instance, Safari) have not yet implemented the Canvas context 'filter' attribute functionality.

    Annotated code

    diff --git a/demo/filters-505.html b/demo/filters-505.html index 892950c6f..b323b5004 100644 --- a/demo/filters-505.html +++ b/demo/filters-505.html @@ -74,7 +74,7 @@

    Test purpose

  • Apply the filter to the entity
  • Update the SVG filter's settings; check that they display on the entity as expected
  • - +

    Known issue: Webkit-based browsers (for instance, Safari) have not yet implemented the Canvas context 'filter' attribute functionality.

    Annotated code

    diff --git a/demo/particles-008.html b/demo/particles-008.html index f47795fbd..2a1a486a9 100644 --- a/demo/particles-008.html +++ b/demo/particles-008.html @@ -89,6 +89,7 @@

    Test purpose

  • Check the effect of changing the Net's 'generate' attribute
  • Navigate away from the web page (open another tab in the browser) and, a few seconds later, navigate back to the page - check that the animation resets and starts, and does not freeze the page
  • +

    Note: The Safari browser is particularly sensitive to attempts to display images on Net entitys (using the Mesh entity) - the Demo most often works for this scenario when the tick multiplier attribute is reduced.

    Annotated code

    diff --git a/demo/particles-016.html b/demo/particles-016.html index 4866cdb72..f71d581c0 100644 --- a/demo/particles-016.html +++ b/demo/particles-016.html @@ -30,7 +30,12 @@

    The red beads are draggable

    Test purpose

      -
    • TODO
    • +
    • Create a Net entity with 4 rows and 6 columns; remove all springs from the net particles; apply no forces to the particles; make the particles draggable.
    • +
    • Import the image asset and use it to create a Picture entity; set the Picture's visibility attribute to false.
    • +
    • Combine the Net and Picture entitys into a Mesh entity.
    • +
    • Check that when the user drags a particle, the image deforms appropriately.
    • +
    • Check that dragging any of the pins does not lead to the last row not displaying (bug is specific to Safari browsers - see this question on Stack Overflow
    • +
    • Check that the orange stroke only draws around the outside vertices of the Mesh, and that mose hovers within the stroke are correctly recognised (by the stroke width expanding).

    Annotated code

    diff --git a/source/factory/cell.js b/source/factory/cell.js index fe48a32dd..2f4619ee3 100644 --- a/source/factory/cell.js +++ b/source/factory/cell.js @@ -829,7 +829,7 @@ P.getComputedFontSizes = function () { let host = this.getHost(); - if (host) { + if (host && host.domElement) { let em = window.getComputedStyle(host.domElement), rem = window.getComputedStyle(document.documentElement); diff --git a/source/factory/fontAttributes.js b/source/factory/fontAttributes.js index 620925527..df972aad1 100644 --- a/source/factory/fontAttributes.js +++ b/source/factory/fontAttributes.js @@ -422,7 +422,21 @@ P.calculateSize = function () { let {scale, lineHeight, host, sizeValue, sizeMetric} = this; - let [parentSize, rootSize, viewportWidth, viewportHeight] = host.getComputedFontSizes(); + let gcfs = host.getComputedFontSizes(), + parentSize, rootSize, viewportWidth, viewportHeight; + + if (!gcfs) { + + if (['in', 'cm', 'mm', 'Q', 'pc', 'pt', 'px'].indexOf(sizeMetric) < 0) { + + this.dirtyFont = true; + return '12px'; + } + } + else { + + [parentSize, rootSize, viewportWidth, viewportHeight] = host.getComputedFontSizes(); + } if (isNaN(sizeValue)) sizeValue = 12; diff --git a/source/factory/mesh.js b/source/factory/mesh.js index 3cb2c9dcc..e76062c9a 100644 --- a/source/factory/mesh.js +++ b/source/factory/mesh.js @@ -670,6 +670,14 @@ P.setSourceDimension = function () { } this.sourceDimension = Math.max(...results); + // Sanity check - the particle system, when it breaks down, can create some massive dimension values! + let host = this.currentHost || this.getHost(); + if (host) { + + let max = Math.max(...host.currentDimensions); + if (this.sourceDimension > max) this.sourceDimension = max; + } + for (i = 0, iz = lengths.length; i < iz; i++) { l = results[i]; @@ -876,6 +884,8 @@ P.cleanOutput = function () { let {sourceDimension, sourceImageData, columns, rows, struts, boundingBox} = self; + sourceDimension = Math.ceil(sourceDimension); + if (sourceImageData && rows - 1 > 0) { let [startX, startY, outputWidth, outputHeight] = boundingBox; @@ -901,8 +911,8 @@ P.cleanOutput = function () { outputEngine.globalAlpha = self.state.globalAlpha; outputEngine.setTransform(1, 0, 0, 1, 0, 0); - const inputStrutHeight = sourceDimension / (rows - 1), - inputStrutWidth = sourceDimension / (columns - 1); + const inputStrutHeight = parseFloat((sourceDimension / (rows - 1)).toFixed(4)), + inputStrutWidth = parseFloat((sourceDimension / (columns - 1)).toFixed(4)); let topStruts, baseStruts, maxLen, tStep, bStep, iStep, xtStep, ytStep, xbStep, ybStep, tx, ty, bx, by, sx, sy, @@ -915,7 +925,7 @@ P.cleanOutput = function () { baseStruts = struts[r + 1]; for (c = 0, cz = columns - 1; c < cz; c++) { - + let [ltx, lty, rtx, rty, tLen] = topStruts[c]; let [lbx, lby, rbx, rby, bLen] = baseStruts[c]; @@ -950,7 +960,11 @@ P.cleanOutput = function () { outputEngine.setTransform(1, 0, 0, 1, tx, ty); outputEngine.rotate(stripAngle); - outputEngine.drawImage(inputCanvas, sx, sy, 1, inputStrutHeight, 0, 0, 1, stripLength); + // Safari bugfix because we fall foul of of the Safari source-out-of-bounds bug + // + [Stack Overflow question identifying the issue](https://stackoverflow.com/questions/35500999/cropping-with-drawimage-not-working-in-safari) + let testHeight = (sy + inputStrutHeight > sourceDimension) ? sourceDimension - sy : inputStrutHeight; + + outputEngine.drawImage(inputCanvas, sx, sy, 1, testHeight, 0, 0, 1, stripLength); } } } diff --git a/source/factory/phrase.js b/source/factory/phrase.js index dfeb39061..8ec8e3569 100644 --- a/source/factory/phrase.js +++ b/source/factory/phrase.js @@ -698,7 +698,7 @@ P.cleanDimensionsAdditionalActions = function () { this.fontAttributes.updateMetadata(this.scale, this.lineHeight, this.getHost()); engine.font = this.fontAttributes.getFontString(); - this.currentDimensions[0] = Math.ceil(engine.measureText(this.currentText).width); + this.currentDimensions[0] = Math.ceil(engine.measureText(this.currentText).width / this.scale); releaseCell(myCell); } @@ -808,7 +808,7 @@ P.cleanPathObject = function () { scale = this.currentScale, x = -handle[0] * scale, y = -handle[1] * scale, - w = dims[0], + w = dims[0] * scale, h = dims[1] * scale; this.boxStartValues = [x, y]; @@ -933,7 +933,7 @@ P.calculateTextPositions = function (mytext) { let scale = this.currentScale, dims = this.currentDimensions, - width = dims[0], + width = dims[0] * scale, treatWordAsGlyph = this.treatWordAsGlyph, lineHeight = this.lineHeight, justify = this.justify, @@ -1369,7 +1369,7 @@ P.regularStampSynchronousActions = function () { if (!this.noCanvasEngineUpdates) dest.setEngine(this); - pos = this.textPositions; + pos = this.textPositions || []; for (i = 0, iz = pos.length; i < iz; i++) { diff --git a/source/worker/filter.js b/source/worker/filter.js index 37e041bc5..1492cd65d 100644 --- a/source/worker/filter.js +++ b/source/worker/filter.js @@ -343,7 +343,7 @@ const buildImageTileSets = function (tileWidth, tileHeight, offsetX, offsetY, da }; // `buildHorizontalBlur` - creates an Array of Arrays detailing which pixels contribute to the horizontal part of each pixel's blur calculation. Resulting object will be cached in the store -const buildHorizontalBlur = function (grid, radius, alpha) { +const buildHorizontalBlur = function (grid, radius) { if (!radius || !radius.toFixed || isNaN(radius)) radius = 0; @@ -378,7 +378,7 @@ const buildHorizontalBlur = function (grid, radius, alpha) { }; // `buildVerticalBlur` - creates an Array of Arrays detailing which pixels contribute to the vertical part of each pixel's blur calculation. Resulting object will be cached in the store -const buildVerticalBlur = function (grid, radius, alpha) { +const buildVerticalBlur = function (grid, radius) { if (!radius || !radius.toFixed || isNaN(radius)) radius = 0; @@ -1430,9 +1430,9 @@ const theBigActionsObject = { let grid = buildImageGrid(); - if (processHorizontal) horizontalBlurGrid = buildHorizontalBlur(grid, radius, input.a); + if (processHorizontal) horizontalBlurGrid = buildHorizontalBlur(grid, radius); - if (processVertical) verticalBlurGrid = buildVerticalBlur(grid, radius, input.a); + if (processVertical) verticalBlurGrid = buildVerticalBlur(grid, radius); } const {r:inR, g:inG, b:inB, a:inA} = input; @@ -1442,27 +1442,32 @@ const theBigActionsObject = { if (flag) { - let h = gridStore[pos], - l = h.length, - counter = 0, - total = 0; + // TODO: for some reason Demo Particles-007 fails on this call, supplying pos values that are out of scope (too large for the grid that has been built for this filter effect) - but the other filters all seem to work fine. + let h = gridStore[pos]; - if (alpha) { + if (h != null) { - for (let t = 0; t < l; t += step) { + let l = h.length, + counter = 0, + total = 0; - if (alpha[h[t]]) { + if (alpha) { - total += holdChannel[h[t]]; - counter++; + for (let t = 0; t < l; t += step) { + + if (alpha[h[t]]) { + + total += holdChannel[h[t]]; + counter++; + } } + return total / counter; } - return total / counter; - } - for (let t = 0; t < l; t++) { - total += holdChannel[h[t]]; + for (let t = 0; t < l; t++) { + total += holdChannel[h[t]]; + } + return total / l; } - return total / l; } return holdChannel[pos]; } From 52d791b1cdf79a6c1cee237729904f1f7ebc2001 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Mon, 1 Feb 2021 14:17:08 +0000 Subject: [PATCH 24/28] updating Demo documentation for identified Firefox browser issues --- demo/canvas-022.js | 1 + demo/canvas-037.html | 2 +- demo/component-005.html | 1 + demo/dom-013.html | 7 +++++-- demo/dom-015.html | 4 ---- demo/particles-014.html | 1 + demo/particles-015.html | 1 + source/factory/filter.js | 1 + 8 files changed, 11 insertions(+), 7 deletions(-) diff --git a/demo/canvas-022.js b/demo/canvas-022.js index 36f7b3349..987d507bc 100644 --- a/demo/canvas-022.js +++ b/demo/canvas-022.js @@ -27,6 +27,7 @@ let cellGradient = scrawl.makeGradient({ let gridGradient = scrawl.makeGradient({ name: 'red-blue', endX: '100%', + endY: '100%', }) .updateColor(0, 'red') .updateColor(500, 'gold') diff --git a/demo/canvas-037.html b/demo/canvas-037.html index c2fa1d51d..42e45ed45 100644 --- a/demo/canvas-037.html +++ b/demo/canvas-037.html @@ -28,7 +28,7 @@

    Test purpose

  • Add event listeners that allow the user to zoom the image in/out within the Picture. Zooming out should be constrained so that no blank space appears at the Picture's edges: when the image edge zooms past the Picture edge, it sticks to the edge. Wherever possible (as constrained by edges), the zoom effect should center on the mouse cursor.
  • Add event listeners that allow the user to drag the image within the Picture; again, drag should be constrained so that no blank space appears at the Picture's edges
  • - +

    Known issue: the scroll functionality in Firefox is very much less responsive than in other browsers. This is not an issue with Scrawl-canvas, but rather with the coding of the Demo.

    Annotated code

    diff --git a/demo/component-005.html b/demo/component-005.html index 35207f9d8..6037b14db 100644 --- a/demo/component-005.html +++ b/demo/component-005.html @@ -111,6 +111,7 @@

    Test purpose

  • Render a range of charts from the JSON data sources
  • Results from each test will appear in the console

    +

    Known issue: this Demo is far less responsive in Firefox than in other browsers.

    Annotated code

    diff --git a/demo/dom-013.html b/demo/dom-013.html index 9d7fd5476..3334a711a 100644 --- a/demo/dom-013.html +++ b/demo/dom-013.html @@ -79,8 +79,11 @@

    Test purpose

  • Position and rotate the canvas within the stack, checking repeatedly that both Wheel entitys continue to track the mouse cursor position
  • -

    Note that resizing the canvas will lead to positioning failures. This is a known (lower priority) bug which will be fixed in due course.

    - +

    Known issues

    +
      +
    • Resizing the canvas (dimensions attributes) will lead to positioning failures.
    • +
    • The positioning accuracy on 3D-rotated canvases is not as accurate in Firefox as it is in other browsers.
    • +

    Annotated code

    diff --git a/demo/dom-015.html b/demo/dom-015.html index 0c8871c09..21c492618 100644 --- a/demo/dom-015.html +++ b/demo/dom-015.html @@ -82,10 +82,6 @@

    Test purpose

  • Drag and drop the element across the stack canvas, to check that element's sensors are correctly positioned and the artefact collision detection works as expected
  • Vary the element's attributes (handle, offset, 3d-rotation, scale) to make sure its sensors correctly account for these changes
  • - -

    Note: there is currently a very annoying, intermittent error which will often occur on first load. While the DOM element positions itself correctly (thanks to a temporary fix for a different bug), it fails get the message across to all the canvas entitys using it as a pivot that its position has corrected. This issue seems to be a consequence of the margin padding set on the Stack element (which has CSS styling "margin: 0 auto;") - when that is removed from the stack, the element and its pivoting entitys all align correctly on first display. Needs to be fixed.

    - -

    For details of the other persistent bug affecting this demo, see demo DOM-013.

    Annotated code

    diff --git a/demo/particles-014.html b/demo/particles-014.html index 47b16077a..3ab942584 100644 --- a/demo/particles-014.html +++ b/demo/particles-014.html @@ -25,6 +25,7 @@

    Test purpose

  • Check that the generated particles move only at specific angles (multiples of 45 degrees)
  • Check that the tween correctly updates the color range for new particles
  • +

    Known issue: the Demo in Firefox differs from other browsers as that browser is less tolerant to retaining previous paints during the clear stage of the Display cycle (based on the Cell wrapper's 'clearAlpha' attribute's value).

    Annotated code

    diff --git a/demo/particles-015.html b/demo/particles-015.html index 14b7f6783..57b41dfd3 100644 --- a/demo/particles-015.html +++ b/demo/particles-015.html @@ -25,6 +25,7 @@

    Test purpose

  • Check that the generated particles move only at specific angles (multiples of 60 degrees, all rotated by 15 degrees)
  • Check that the tween correctly updates the color range for new particles
  • +

    Known issue: the Demo in Firefox differs from other browsers as that browser is less tolerant to retaining previous paints during the clear stage of the Display cycle (based on the Cell wrapper's 'clearAlpha' attribute's value).

    Annotated code

    diff --git a/source/factory/filter.js b/source/factory/filter.js index 6a7280b62..31eab6bfa 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -1140,6 +1140,7 @@ const buildFilterWorker = function () { const releaseFilterWorker = function (f) { filterPool.push(f); + // console.log(filterPool.length) }; const actionFilterWorker = function (worker, items) { From 460c68499c4bad2bb9dd4c3a0fc9527544d9798b Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Mon, 1 Feb 2021 15:34:13 +0000 Subject: [PATCH 25/28] updating Demo documentation for identified Firefox browser issues --- source/factory/filter.js | 1 - 1 file changed, 1 deletion(-) diff --git a/source/factory/filter.js b/source/factory/filter.js index 31eab6bfa..6a7280b62 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -1140,7 +1140,6 @@ const buildFilterWorker = function () { const releaseFilterWorker = function (f) { filterPool.push(f); - // console.log(filterPool.length) }; const actionFilterWorker = function (worker, items) { From b9ed09f0f96b532dbe5c2b43d1c61b45cde0e5ce Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Mon, 1 Feb 2021 18:47:14 +0000 Subject: [PATCH 26/28] bugfix: blur filter on canvases with unequal dimensions --- demo/canvas-007.html | 2 +- source/factory/filter.js | 1 + source/worker/filter.js | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/demo/canvas-007.html b/demo/canvas-007.html index 469b8eff6..b73313a8a 100644 --- a/demo/canvas-007.html +++ b/demo/canvas-007.html @@ -85,7 +85,7 @@

    Apply filters at the entity, group and cell level

    - +

    diff --git a/source/factory/filter.js b/source/factory/filter.js index 6a7280b62..31eab6bfa 100644 --- a/source/factory/filter.js +++ b/source/factory/filter.js @@ -1140,6 +1140,7 @@ const buildFilterWorker = function () { const releaseFilterWorker = function (f) { filterPool.push(f); + // console.log(filterPool.length) }; const actionFilterWorker = function (worker, items) { diff --git a/source/worker/filter.js b/source/worker/filter.js index 1492cd65d..08da82f65 100644 --- a/source/worker/filter.js +++ b/source/worker/filter.js @@ -166,6 +166,7 @@ const buildImageGrid = function (data) { return workstore[name]; } + let grid = [], counter = 0; @@ -369,7 +370,7 @@ const buildHorizontalBlur = function (grid, radius) { if (c >= 0 && c < gridWidth) cellsToProcess.push(grid[y][c]); } - horizontalBlur[(y * gridHeight) + x] = cellsToProcess; + horizontalBlur[(y * gridWidth) + x] = cellsToProcess; } } workstore[name] = horizontalBlur; @@ -404,7 +405,7 @@ const buildVerticalBlur = function (grid, radius) { if (c >= 0 && c < gridHeight) cellsToProcess.push(grid[c][x]); } - verticalBlur[(y * gridHeight) + x] = cellsToProcess; + verticalBlur[(y * gridWidth) + x] = cellsToProcess; } } workstore[name] = verticalBlur; @@ -1442,7 +1443,6 @@ const theBigActionsObject = { if (flag) { - // TODO: for some reason Demo Particles-007 fails on this call, supplying pos values that are out of scope (too large for the grid that has been built for this filter effect) - but the other filters all seem to work fine. let h = gridStore[pos]; if (h != null) { From 2fe978a84108bbc01d25022ed3856021511f0b81 Mon Sep 17 00:00:00 2001 From: Rik Roots Date: Mon, 1 Feb 2021 20:49:53 +0000 Subject: [PATCH 27/28] Make fonts measured in viewport units responsive to changes in viewport dimensions --- demo/canvas-017.html | 2 +- demo/component-007.html | 5 ++++- source/core/userInteraction.js | 22 +++++++++++++++++++++- source/factory/filter.js | 1 - source/factory/phrase.js | 4 +++- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/demo/canvas-017.html b/demo/canvas-017.html index 8c8715208..3e79dabee 100644 --- a/demo/canvas-017.html +++ b/demo/canvas-017.html @@ -63,7 +63,7 @@

    Phrase entity - test lineHeight, letterSpacing and justify attributes
    S