diff --git a/my-patterns/README.md b/my-patterns/README.md index f504d328..c2ad8d40 100644 --- a/my-patterns/README.md +++ b/my-patterns/README.md @@ -1,16 +1,20 @@ # my-patterns -This directory can be used to save your own patterns. +This directory can be used to save your own patterns, which then get +made into a pattern swatch. -0. fork the strudel repo -1. Save one or more .txt files here. -2. and run `npm run repl` -3. open `http://localhost:3000/my-patterns` ! +0. fork and clone the strudel repository +1. run `npm run setup` in the strudel folder +1. Save one or more .txt files in this folder +2. run `npm run repl` in the top-level strudel folder +3. open `http://localhost:3000/swatch/` ! ## deploy 1. in your fork, go to settings -> pages and select "Github Actions" as source 2. edit `website/public/CNAME` to contain `.github.io/strudel` 3. edit `website/astro.config.mjs` to use site: `.github.io/strudel` and base `/strudel` -4. go to Actions -> "Build and Deploy" and click "Run workflow" -5. view your patterns at `.github.io/strudel/my-patterns` +4. go to Actions -> `Build and Deploy` and click `Run workflow` +5. view your patterns at `.github.io/strudel/swatch/` + +Alternatively, github pages allows you to use a custom domain, like https://mycooldomain.org/swatch/. [See their documentation for details](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site). diff --git a/packages/core/animate.mjs b/packages/core/animate.mjs index 78e6b290..6da97f08 100644 --- a/packages/core/animate.mjs +++ b/packages/core/animate.mjs @@ -1,17 +1,18 @@ import { controls, Pattern, getDrawContext, silence, scheduler } from './index.mjs'; const { createParams } = controls; -let clearColor = '#20001010'; -let currentSmear = 0.5; -export let syncAnimationWithScheduler = true; +let clearColor = '#22222210'; -Pattern.prototype.animate = function (callback) { +Pattern.prototype.animate = function ({ callback, sync = false, smear = 0.5 } = {}) { window.frame && cancelAnimationFrame(window.frame); const ctx = getDrawContext(); const { clientWidth: ww, clientHeight: wh } = ctx.canvas; + let smearPart = smear === 0 ? '99' : Number((1 - smear) * 100).toFixed(0); + smearPart = smearPart.length === 1 ? `0${smearPart}` : smearPart; + clearColor = `#200010${smearPart}`; const render = (t) => { let frame; - if (syncAnimationWithScheduler) { + if (sync) { t = scheduler.now(); frame = this.queryArc(t, t); } else { @@ -21,13 +22,7 @@ Pattern.prototype.animate = function (callback) { ctx.fillStyle = clearColor; ctx.fillRect(0, 0, ww, wh); frame.forEach((f) => { - let { x, y, w, h, s, r, a = 0, fill = 'darkseagreen', smear } = f.value; - if (smear && smear !== currentSmear) { - currentSmear = smear; - let smearPart = Number((1 - smear) * 100).toFixed(0); - smearPart = smearPart.length === 1 ? `0${smearPart}` : smearPart; - clearColor = `#200010${smearPart}`; - } + let { x, y, w, h, s, r, a = 0, fill = 'darkseagreen' } = f.value; w *= ww; h *= wh; if (r !== undefined && a !== undefined) { diff --git a/website/src/pages/my-patterns/[name].png.js b/website/src/pages/swatch/[name].png.js similarity index 100% rename from website/src/pages/my-patterns/[name].png.js rename to website/src/pages/swatch/[name].png.js diff --git a/website/src/pages/my-patterns/index.astro b/website/src/pages/swatch/index.astro similarity index 100% rename from website/src/pages/my-patterns/index.astro rename to website/src/pages/swatch/index.astro diff --git a/website/src/pages/my-patterns/list.json.js b/website/src/pages/swatch/list.json.js similarity index 100% rename from website/src/pages/my-patterns/list.json.js rename to website/src/pages/swatch/list.json.js