Skip to content

Commit eaef7c3

Browse files
committed
hue-shift-pulse now uses a bezier curve
1 parent d91251a commit eaef7c3

13 files changed

+40
-26
lines changed

docs/asset-manifest.json

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
{
22
"files": {
3-
"main.js": "/partymoji/static/js/main.34197c14.chunk.js",
4-
"main.js.map": "/partymoji/static/js/main.34197c14.chunk.js.map",
3+
"main.js": "/partymoji/static/js/main.cb120b0a.chunk.js",
4+
"main.js.map": "/partymoji/static/js/main.cb120b0a.chunk.js.map",
55
"runtime-main.js": "/partymoji/static/js/runtime-main.39af959e.js",
66
"runtime-main.js.map": "/partymoji/static/js/runtime-main.39af959e.js.map",
77
"static/css/2.a5ca4c85.chunk.css": "/partymoji/static/css/2.a5ca4c85.chunk.css",
8-
"static/js/2.6eae5b00.chunk.js": "/partymoji/static/js/2.6eae5b00.chunk.js",
9-
"static/js/2.6eae5b00.chunk.js.map": "/partymoji/static/js/2.6eae5b00.chunk.js.map",
8+
"static/js/2.d0aef49f.chunk.js": "/partymoji/static/js/2.d0aef49f.chunk.js",
9+
"static/js/2.d0aef49f.chunk.js.map": "/partymoji/static/js/2.d0aef49f.chunk.js.map",
1010
"index.html": "/partymoji/index.html",
1111
"static/css/2.a5ca4c85.chunk.css.map": "/partymoji/static/css/2.a5ca4c85.chunk.css.map",
12-
"static/js/2.6eae5b00.chunk.js.LICENSE.txt": "/partymoji/static/js/2.6eae5b00.chunk.js.LICENSE.txt",
13-
"static/js/effect.worker.c57a2be0.worker.js": "/partymoji/static/js/effect.worker.c57a2be0.worker.js",
14-
"static/js/effect.worker.c57a2be0.worker.js.LICENSE.txt": "/partymoji/static/js/effect.worker.c57a2be0.worker.js.LICENSE.txt",
15-
"static/js/effect.worker.c57a2be0.worker.js.map": "/partymoji/static/js/effect.worker.c57a2be0.worker.js.map"
12+
"static/js/2.d0aef49f.chunk.js.LICENSE.txt": "/partymoji/static/js/2.d0aef49f.chunk.js.LICENSE.txt",
13+
"static/js/effect.worker.2897f54a.worker.js": "/partymoji/static/js/effect.worker.2897f54a.worker.js",
14+
"static/js/effect.worker.2897f54a.worker.js.LICENSE.txt": "/partymoji/static/js/effect.worker.2897f54a.worker.js.LICENSE.txt",
15+
"static/js/effect.worker.2897f54a.worker.js.map": "/partymoji/static/js/effect.worker.2897f54a.worker.js.map"
1616
},
1717
"entrypoints": [
1818
"static/js/runtime-main.39af959e.js",
1919
"static/css/2.a5ca4c85.chunk.css",
20-
"static/js/2.6eae5b00.chunk.js",
21-
"static/js/main.34197c14.chunk.js"
20+
"static/js/2.d0aef49f.chunk.js",
21+
"static/js/main.cb120b0a.chunk.js"
2222
]
2323
}

docs/index.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/partymoji/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="description" content="App for creating animated gifs and emojis"/><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/><script>window.ENV="PROD"</script><script src="https://unpkg.com/@material-ui/core@latest/umd/material-ui.production.min.js"></script><link rel="manifest" href="/partymoji/manifest.json"/><title>Partymoji</title><script>!function(e,a,t,n,g,c,o){e.GoogleAnalyticsObject=g,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),o=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",o.parentNode.insertBefore(c,o)}(window,document,"script",0,"ga"),ga("create","UA-XXXXX-Y","auto"),ga("send","pageview")</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-DG40RRJF9R"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-DG40RRJF9R")</script><link href="/partymoji/static/css/2.a5ca4c85.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div style="background-color:#effffd" id="root"/><script>!function(e){function r(r){for(var n,i,a=r[0],l=r[1],p=r[2],c=0,s=[];c<a.length;c++)i=a[c],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var l=t[a];0!==o[l]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="/partymoji/";var a=this.webpackJsonppartymoji=this.webpackJsonppartymoji||[],l=a.push.bind(a);a.push=r,a=a.slice();for(var p=0;p<a.length;p++)r(a[p]);var f=l;t()}([])</script><script src="/partymoji/static/js/2.6eae5b00.chunk.js"></script><script src="/partymoji/static/js/main.34197c14.chunk.js"></script></body><footer><div style="font-size:.7rem">Built: 01/05/24 10:22:31 PM EST</div></footer></html>
1+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/partymoji/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="description" content="App for creating animated gifs and emojis"/><link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons"/><script>window.ENV="PROD"</script><script src="https://unpkg.com/@material-ui/core@latest/umd/material-ui.production.min.js"></script><link rel="manifest" href="/partymoji/manifest.json"/><title>Partymoji</title><script>!function(e,a,t,n,g,c,o){e.GoogleAnalyticsObject=g,e.ga=e.ga||function(){(e.ga.q=e.ga.q||[]).push(arguments)},e.ga.l=1*new Date,c=a.createElement(t),o=a.getElementsByTagName(t)[0],c.async=1,c.src="https://www.google-analytics.com/analytics.js",o.parentNode.insertBefore(c,o)}(window,document,"script",0,"ga"),ga("create","UA-XXXXX-Y","auto"),ga("send","pageview")</script><script async src="https://www.googletagmanager.com/gtag/js?id=G-DG40RRJF9R"></script><script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-DG40RRJF9R")</script><link href="/partymoji/static/css/2.a5ca4c85.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div style="background-color:#effffd" id="root"/><script>!function(e){function r(r){for(var n,i,a=r[0],l=r[1],p=r[2],c=0,s=[];c<a.length;c++)i=a[c],Object.prototype.hasOwnProperty.call(o,i)&&o[i]&&s.push(o[i][0]),o[i]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(f&&f(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,a=1;a<t.length;a++){var l=t[a];0!==o[l]&&(n=!1)}n&&(u.splice(r--,1),e=i(i.s=t[0]))}return e}var n={},o={1:0},u=[];function i(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,i),t.l=!0,t.exports}i.m=e,i.c=n,i.d=function(e,r,t){i.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,r){if(1&r&&(e=i(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(i.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)i.d(t,n,function(r){return e[r]}.bind(null,n));return t},i.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(r,"a",r),r},i.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},i.p="/partymoji/";var a=this.webpackJsonppartymoji=this.webpackJsonppartymoji||[],l=a.push.bind(a);a.push=r,a=a.slice();for(var p=0;p<a.length;p++)r(a[p]);var f=l;t()}([])</script><script src="/partymoji/static/js/2.d0aef49f.chunk.js"></script><script src="/partymoji/static/js/main.cb120b0a.chunk.js"></script></body><footer><div style="font-size:.7rem">Built: 01/05/24 10:32:45 PM EST</div></footer></html>

docs/static/js/2.6eae5b00.chunk.js docs/static/js/2.d0aef49f.chunk.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/static/js/2.6eae5b00.chunk.js.map docs/static/js/2.d0aef49f.chunk.js.map

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/static/js/effect.worker.c57a2be0.worker.js docs/static/js/effect.worker.2897f54a.worker.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/static/js/effect.worker.2897f54a.worker.js.map

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/static/js/effect.worker.c57a2be0.worker.js.map

-1
This file was deleted.

docs/static/js/main.34197c14.chunk.js.map

-1
This file was deleted.

docs/static/js/main.34197c14.chunk.js docs/static/js/main.cb120b0a.chunk.js

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/static/js/main.cb120b0a.chunk.js.map

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/effects/hue-shift-pulse.ts

+18-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import { buildEffect } from '../domain/types';
22
import { shiftTowardsHue } from '../domain/utils/color';
33
import { mapImage } from '../domain/utils/image';
4-
import { huePickerParam } from '../params/huePickerParam';
4+
import { bezierCurve } from '../domain/utils/misc';
5+
import { huePickerParam, bezierParam } from '../params';
56

67
export const hueShiftPulse = buildEffect({
78
name: 'Hue Shift Pulse',
@@ -11,10 +12,23 @@ export const hueShiftPulse = buildEffect({
1112
name: 'Hue',
1213
defaultValue: 180,
1314
}),
14-
],
15+
bezierParam({
16+
name: 'Easing',
17+
defaultValue: [
18+
[0.25, 0.75],
19+
[0.75, 0.25],
20+
],
21+
}),
22+
] as const,
1523
fn: mapImage(
16-
({ coord, getSrcPixel, frameCount, frameIndex, parameters: [hue] }) => {
17-
const amount = Math.abs(Math.sin(Math.PI * (frameIndex / frameCount)));
24+
({
25+
coord,
26+
getSrcPixel,
27+
frameCount,
28+
frameIndex,
29+
parameters: [hue, easing],
30+
}) => {
31+
const amount = bezierCurve(easing, true)(frameIndex / frameCount);
1832
return shiftTowardsHue(getSrcPixel(coord), hue, amount * 360);
1933
}
2034
),

0 commit comments

Comments
 (0)