create-cogenta 0.5.2 → 0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/blueprint-defaults.js +1 -1
  2. package/dist/blueprint-defaults.js.map +1 -1
  3. package/dist/index.d.ts +2 -2
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/playground-reset.js +1 -1
  8. package/dist/playground-reset.js.map +1 -1
  9. package/dist/recap.js +1 -1
  10. package/dist/recap.js.map +1 -1
  11. package/dist/scaffold.d.ts +4 -2
  12. package/dist/scaffold.d.ts.map +1 -1
  13. package/dist/scaffold.js +10 -6
  14. package/dist/scaffold.js.map +1 -1
  15. package/dist/wizard.js +1 -1
  16. package/dist/wizard.js.map +1 -1
  17. package/package.json +14 -13
  18. package/dist/blueprints/assets/photos/association/community-cleanup.jpg +0 -0
  19. package/dist/blueprints/assets/photos/association/fundraising-dinner.jpg +0 -0
  20. package/dist/blueprints/assets/photos/association/garden-planting.jpg +0 -0
  21. package/dist/blueprints/assets/photos/association/harvest-food-drive.jpg +0 -0
  22. package/dist/blueprints/assets/photos/association/hero.jpg +0 -0
  23. package/dist/blueprints/assets/photos/association/volunteer-orientation.jpg +0 -0
  24. package/dist/blueprints/assets/photos/association/winter-coat-collection.jpg +0 -0
  25. package/dist/blueprints/assets/photos/blog/blog-runs-itself.jpg +0 -0
  26. package/dist/blueprints/assets/photos/blog/desk-setup.jpg +0 -0
  27. package/dist/blueprints/assets/photos/blog/editing.jpg +0 -0
  28. package/dist/blueprints/assets/photos/blog/hero.jpg +0 -0
  29. package/dist/blueprints/assets/photos/blog/notebooks.jpg +0 -0
  30. package/dist/blueprints/assets/photos/blog/plain-text-editor.jpg +0 -0
  31. package/dist/blueprints/assets/photos/blog/reading-nonfiction.jpg +0 -0
  32. package/dist/blueprints/assets/photos/blog/small-tool.jpg +0 -0
  33. package/dist/blueprints/assets/photos/blog/writing-schedule.jpg +0 -0
  34. package/dist/blueprints/assets/photos/magazine/business-2.jpg +0 -0
  35. package/dist/blueprints/assets/photos/magazine/business-3.jpg +0 -0
  36. package/dist/blueprints/assets/photos/magazine/business.jpg +0 -0
  37. package/dist/blueprints/assets/photos/magazine/culture-2.jpg +0 -0
  38. package/dist/blueprints/assets/photos/magazine/culture-3.jpg +0 -0
  39. package/dist/blueprints/assets/photos/magazine/culture.jpg +0 -0
  40. package/dist/blueprints/assets/photos/magazine/news-2.jpg +0 -0
  41. package/dist/blueprints/assets/photos/magazine/news-3.jpg +0 -0
  42. package/dist/blueprints/assets/photos/magazine/news.jpg +0 -0
  43. package/dist/blueprints/assets/photos/magazine/opinion-2.jpg +0 -0
  44. package/dist/blueprints/assets/photos/magazine/opinion-3.jpg +0 -0
  45. package/dist/blueprints/assets/photos/magazine/opinion.jpg +0 -0
  46. package/dist/blueprints/assets/photos/portfolio/adatum-publishing.jpg +0 -0
  47. package/dist/blueprints/assets/photos/portfolio/contoso-mobile-app.jpg +0 -0
  48. package/dist/blueprints/assets/photos/portfolio/fabrikam-annual-report.jpg +0 -0
  49. package/dist/blueprints/assets/photos/portfolio/hero.jpg +0 -0
  50. package/dist/blueprints/assets/photos/portfolio/litware-signage.jpg +0 -0
  51. package/dist/blueprints/assets/photos/portfolio/northwind-rebrand.jpg +0 -0
  52. package/dist/blueprints/assets/photos/portfolio/proseware-launch.jpg +0 -0
  53. package/dist/blueprints/assets/photos/portfolio/tailspin-streaming.jpg +0 -0
  54. package/dist/blueprints/assets/photos/portfolio/wingtip-wayfinding.jpg +0 -0
  55. package/dist/blueprints/assets/photos/restaurant/charred-octopus.jpg +0 -0
  56. package/dist/blueprints/assets/photos/restaurant/chocolate-tart.jpg +0 -0
  57. package/dist/blueprints/assets/photos/restaurant/creme-brulee.jpg +0 -0
  58. package/dist/blueprints/assets/photos/restaurant/hero.jpg +0 -0
  59. package/dist/blueprints/assets/photos/restaurant/house-red.jpg +0 -0
  60. package/dist/blueprints/assets/photos/restaurant/house-white.jpg +0 -0
  61. package/dist/blueprints/assets/photos/restaurant/pan-seared-trout.jpg +0 -0
  62. package/dist/blueprints/assets/photos/restaurant/poached-pear.jpg +0 -0
  63. package/dist/blueprints/assets/photos/restaurant/roasted-beet-salad.jpg +0 -0
  64. package/dist/blueprints/assets/photos/restaurant/slow-roast-duck-leg.jpg +0 -0
  65. package/dist/blueprints/assets/photos/restaurant/soup-of-the-day.jpg +0 -0
  66. package/dist/blueprints/assets/photos/restaurant/sparkling-water.jpg +0 -0
  67. package/dist/blueprints/assets/photos/restaurant/wild-mushroom-risotto.jpg +0 -0
  68. package/dist/blueprints/assets/photos/saas/avatar-1.jpg +0 -0
  69. package/dist/blueprints/assets/photos/saas/hero.jpg +0 -0
  70. package/dist/blueprints/assets/photos/store/camp-blanket.jpg +0 -0
  71. package/dist/blueprints/assets/photos/store/canvas-tote.jpg +0 -0
  72. package/dist/blueprints/assets/photos/store/cast-iron-skillet.jpg +0 -0
  73. package/dist/blueprints/assets/photos/store/ceramic-pour-over-set.jpg +0 -0
  74. package/dist/blueprints/assets/photos/store/enamel-mug.jpg +0 -0
  75. package/dist/blueprints/assets/photos/store/everyday-tee.jpg +0 -0
  76. package/dist/blueprints/assets/photos/store/field-jacket.jpg +0 -0
  77. package/dist/blueprints/assets/photos/store/hero.jpg +0 -0
  78. package/dist/blueprints/assets/photos/store/leather-card-holder.jpg +0 -0
  79. package/dist/blueprints/assets/photos/store/linen-table-runner.jpg +0 -0
  80. package/dist/blueprints/assets/photos/store/trail-tote.jpg +0 -0
  81. package/dist/blueprints/assets/photos/store/wool-beanie.jpg +0 -0
  82. package/dist/blueprints/assets/photos/store/wool-overshirt.jpg +0 -0
  83. package/dist/blueprints/assets/photos/vitrine/avatar-1.jpg +0 -0
  84. package/dist/blueprints/assets/photos/vitrine/avatar-2.jpg +0 -0
  85. package/dist/blueprints/assets/photos/vitrine/avatar-3.jpg +0 -0
  86. package/dist/blueprints/assets/photos/vitrine/dashboard.jpg +0 -0
  87. package/dist/blueprints/assets/photos/vitrine/hero.jpg +0 -0
  88. package/dist/blueprints/association.d.ts +0 -151
  89. package/dist/blueprints/association.d.ts.map +0 -1
  90. package/dist/blueprints/association.js +0 -732
  91. package/dist/blueprints/association.js.map +0 -1
  92. package/dist/blueprints/blog.d.ts +0 -198
  93. package/dist/blueprints/blog.d.ts.map +0 -1
  94. package/dist/blueprints/blog.js +0 -665
  95. package/dist/blueprints/blog.js.map +0 -1
  96. package/dist/blueprints/content-pack.d.ts +0 -143
  97. package/dist/blueprints/content-pack.d.ts.map +0 -1
  98. package/dist/blueprints/content-pack.js +0 -111
  99. package/dist/blueprints/content-pack.js.map +0 -1
  100. package/dist/blueprints/content-packs.d.ts +0 -11
  101. package/dist/blueprints/content-packs.d.ts.map +0 -1
  102. package/dist/blueprints/content-packs.js +0 -29
  103. package/dist/blueprints/content-packs.js.map +0 -1
  104. package/dist/blueprints/demo-media.d.ts +0 -39
  105. package/dist/blueprints/demo-media.d.ts.map +0 -1
  106. package/dist/blueprints/demo-media.js +0 -30
  107. package/dist/blueprints/demo-media.js.map +0 -1
  108. package/dist/blueprints/documentation.d.ts +0 -134
  109. package/dist/blueprints/documentation.d.ts.map +0 -1
  110. package/dist/blueprints/documentation.js +0 -678
  111. package/dist/blueprints/documentation.js.map +0 -1
  112. package/dist/blueprints/magazine.d.ts +0 -145
  113. package/dist/blueprints/magazine.d.ts.map +0 -1
  114. package/dist/blueprints/magazine.js +0 -543
  115. package/dist/blueprints/magazine.js.map +0 -1
  116. package/dist/blueprints/menus.d.ts +0 -25
  117. package/dist/blueprints/menus.d.ts.map +0 -1
  118. package/dist/blueprints/menus.js +0 -33
  119. package/dist/blueprints/menus.js.map +0 -1
  120. package/dist/blueprints/photo-assets.d.ts +0 -3
  121. package/dist/blueprints/photo-assets.d.ts.map +0 -1
  122. package/dist/blueprints/photo-assets.js +0 -33
  123. package/dist/blueprints/photo-assets.js.map +0 -1
  124. package/dist/blueprints/portfolio.d.ts +0 -141
  125. package/dist/blueprints/portfolio.d.ts.map +0 -1
  126. package/dist/blueprints/portfolio.js +0 -700
  127. package/dist/blueprints/portfolio.js.map +0 -1
  128. package/dist/blueprints/restaurant.d.ts +0 -124
  129. package/dist/blueprints/restaurant.d.ts.map +0 -1
  130. package/dist/blueprints/restaurant.js +0 -457
  131. package/dist/blueprints/restaurant.js.map +0 -1
  132. package/dist/blueprints/saas.d.ts +0 -133
  133. package/dist/blueprints/saas.d.ts.map +0 -1
  134. package/dist/blueprints/saas.js +0 -551
  135. package/dist/blueprints/saas.js.map +0 -1
  136. package/dist/blueprints/site-settings-seed.d.ts +0 -17
  137. package/dist/blueprints/site-settings-seed.d.ts.map +0 -1
  138. package/dist/blueprints/site-settings-seed.js +0 -45
  139. package/dist/blueprints/site-settings-seed.js.map +0 -1
  140. package/dist/blueprints/starting-skins.d.ts +0 -19
  141. package/dist/blueprints/starting-skins.d.ts.map +0 -1
  142. package/dist/blueprints/starting-skins.js +0 -301
  143. package/dist/blueprints/starting-skins.js.map +0 -1
  144. package/dist/blueprints/store.d.ts +0 -173
  145. package/dist/blueprints/store.d.ts.map +0 -1
  146. package/dist/blueprints/store.js +0 -643
  147. package/dist/blueprints/store.js.map +0 -1
  148. package/dist/blueprints/vitrine.d.ts +0 -178
  149. package/dist/blueprints/vitrine.d.ts.map +0 -1
  150. package/dist/blueprints/vitrine.js +0 -529
  151. package/dist/blueprints/vitrine.js.map +0 -1
  152. package/dist/demo-art/compositions.d.ts +0 -48
  153. package/dist/demo-art/compositions.d.ts.map +0 -1
  154. package/dist/demo-art/compositions.js +0 -690
  155. package/dist/demo-art/compositions.js.map +0 -1
  156. package/dist/demo-art/index.d.ts +0 -8
  157. package/dist/demo-art/index.d.ts.map +0 -1
  158. package/dist/demo-art/index.js +0 -5
  159. package/dist/demo-art/index.js.map +0 -1
  160. package/dist/demo-art/oklch.d.ts +0 -39
  161. package/dist/demo-art/oklch.d.ts.map +0 -1
  162. package/dist/demo-art/oklch.js +0 -79
  163. package/dist/demo-art/oklch.js.map +0 -1
  164. package/dist/demo-art/png.d.ts +0 -24
  165. package/dist/demo-art/png.d.ts.map +0 -1
  166. package/dist/demo-art/png.js +0 -110
  167. package/dist/demo-art/png.js.map +0 -1
  168. package/dist/demo-art/render.d.ts +0 -228
  169. package/dist/demo-art/render.d.ts.map +0 -1
  170. package/dist/demo-art/render.js +0 -478
  171. package/dist/demo-art/render.js.map +0 -1
@@ -1,478 +0,0 @@
1
- import { encodePng } from './png.js';
2
- // ---------------------------------------------------------------- prng
3
- /**
4
- * A tiny, fast, deterministic PRNG (mulberry32) — used by `compositions.ts`
5
- * to place and vary shapes from a `seed`, never `Math.random()`. Returns a
6
- * generator of floats in `[0, 1)`.
7
- */
8
- export function mulberry32(seed) {
9
- let state = seed >>> 0;
10
- return () => {
11
- state = (state + 0x6d2b79f5) >>> 0;
12
- let t = state;
13
- t = Math.imul(t ^ (t >>> 15), t | 1);
14
- t ^= t + Math.imul(t ^ (t >>> 7), t | 61);
15
- return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
16
- };
17
- }
18
- /** A deterministic, spatial hash in `[-1, 1]` — grain's per-pixel jitter. Not a placement PRNG (that's `mulberry32`): this needs a value *per pixel*, not a stream. */
19
- function hashNoise(x, y, seed) {
20
- let h = (Math.imul(x, 374761393) + Math.imul(y, 668265263) + Math.imul(seed, 2654435761)) | 0;
21
- h = Math.imul(h ^ (h >>> 13), 1274126177);
22
- h ^= h >>> 16;
23
- return ((h >>> 0) / 4294967295) * 2 - 1;
24
- }
25
- // ---------------------------------------------------------------- math helpers
26
- function clamp01(x) {
27
- return x < 0 ? 0 : x > 1 ? 1 : x;
28
- }
29
- /**
30
- * Anti-aliased coverage from a signed distance: negative `d` is inside the
31
- * shape (coverage → 1), positive is outside (coverage → 0), with a soft
32
- * ~1px transition band at the edge (`aa`, in pixels).
33
- */
34
- function coverage(d, aa = 1.25) {
35
- return clamp01(0.5 - d / aa);
36
- }
37
- function lerp(a, b, t) {
38
- return a + (b - a) * t;
39
- }
40
- function lerpColor(a, b, t) {
41
- return { r: lerp(a.r, b.r, t), g: lerp(a.g, b.g, t), b: lerp(a.b, b.b, t) };
42
- }
43
- /** Rounded-box SDF, in a frame already centred and de-rotated around the box. */
44
- function sdRoundBox(x, y, halfW, halfH, radius) {
45
- const qx = Math.abs(x) - halfW + radius;
46
- const qy = Math.abs(y) - halfH + radius;
47
- const outsideX = Math.max(qx, 0);
48
- const outsideY = Math.max(qy, 0);
49
- return (Math.sqrt(outsideX * outsideX + outsideY * outsideY) + Math.min(Math.max(qx, qy), 0) - radius);
50
- }
51
- function blendOver(pixel, color, alpha) {
52
- const a = clamp01(alpha);
53
- if (a <= 0)
54
- return;
55
- pixel[0] = pixel[0] * (1 - a) + color.r * a;
56
- pixel[1] = pixel[1] * (1 - a) + color.g * a;
57
- pixel[2] = pixel[2] * (1 - a) + color.b * a;
58
- }
59
- function compileGradient(layer, width, height) {
60
- const angleRad = (((layer.angle ?? 90) * Math.PI) / 180);
61
- const dirX = Math.cos(angleRad);
62
- const dirY = Math.sin(angleRad);
63
- const stops = [...layer.stops].sort((a, b) => a.at - b.at);
64
- function colorAt(t) {
65
- if (stops.length === 0)
66
- return { r: 0, g: 0, b: 0 };
67
- const first = stops[0];
68
- if (t <= first.at)
69
- return first.color;
70
- for (let i = 1; i < stops.length; i++) {
71
- const prev = stops[i - 1];
72
- const cur = stops[i];
73
- if (t <= cur.at) {
74
- const span = cur.at - prev.at;
75
- const localT = span <= 0 ? 0 : clamp01((t - prev.at) / span);
76
- return lerpColor(prev.color, cur.color, localT);
77
- }
78
- }
79
- return stops[stops.length - 1].color;
80
- }
81
- const shorter = Math.min(width, height);
82
- const meshPoints = (layer.mesh ?? []).map((point) => ({
83
- cx: point.at[0] * width,
84
- cy: point.at[1] * height,
85
- sigma: Math.max((point.radius ?? 0.35) * shorter, 1),
86
- color: point.color,
87
- }));
88
- return (pixel, px, py) => {
89
- const u = px / width;
90
- const v = py / height;
91
- const t = clamp01(0.5 + ((u - 0.5) * dirX + (v - 0.5) * dirY));
92
- const base = colorAt(t);
93
- let r = base.r;
94
- let g = base.g;
95
- let b = base.b;
96
- if (meshPoints.length > 0) {
97
- let sumW = 0;
98
- let mr = 0;
99
- let mg = 0;
100
- let mb = 0;
101
- for (const point of meshPoints) {
102
- const dx = px - point.cx;
103
- const dy = py - point.cy;
104
- const d2 = dx * dx + dy * dy;
105
- const s2 = point.sigma * point.sigma;
106
- const w = Math.exp(-d2 / (2 * s2));
107
- sumW += w;
108
- mr += w * point.color.r;
109
- mg += w * point.color.g;
110
- mb += w * point.color.b;
111
- }
112
- if (sumW > 0.0005) {
113
- const mixT = clamp01(sumW);
114
- const meshR = mr / sumW;
115
- const meshG = mg / sumW;
116
- const meshB = mb / sumW;
117
- r = r * (1 - mixT) + meshR * mixT;
118
- g = g * (1 - mixT) + meshG * mixT;
119
- b = b * (1 - mixT) + meshB * mixT;
120
- }
121
- }
122
- pixel[0] = r;
123
- pixel[1] = g;
124
- pixel[2] = b;
125
- };
126
- }
127
- function compileGlow(layer, width, height) {
128
- const cx = layer.center[0] * width;
129
- const cy = layer.center[1] * height;
130
- const radiusPx = layer.radius * Math.min(width, height);
131
- const falloff = layer.falloff ?? 2;
132
- const { color, alpha } = layer;
133
- return (pixel, px, py) => {
134
- const dx = px - cx;
135
- const dy = py - cy;
136
- const dist = Math.sqrt(dx * dx + dy * dy);
137
- const t = clamp01(1 - dist / radiusPx);
138
- if (t <= 0)
139
- return;
140
- blendOver(pixel, color, alpha * t ** falloff);
141
- };
142
- }
143
- function compileDisc(layer, width, height) {
144
- const cx = layer.center[0] * width;
145
- const cy = layer.center[1] * height;
146
- const radiusPx = layer.radius * Math.min(width, height);
147
- const alphaMul = layer.alpha ?? 1;
148
- const { color } = layer;
149
- return (pixel, px, py) => {
150
- const dx = px - cx;
151
- const dy = py - cy;
152
- const d = Math.sqrt(dx * dx + dy * dy) - radiusPx;
153
- blendOver(pixel, color, coverage(d) * alphaMul);
154
- };
155
- }
156
- function compileRing(layer, width, height) {
157
- const cx = layer.center[0] * width;
158
- const cy = layer.center[1] * height;
159
- const s = Math.min(width, height);
160
- const inner = layer.innerRadius * s;
161
- const outer = layer.outerRadius * s;
162
- const alphaMul = layer.alpha ?? 1;
163
- const { color } = layer;
164
- return (pixel, px, py) => {
165
- const dx = px - cx;
166
- const dy = py - cy;
167
- const dist = Math.sqrt(dx * dx + dy * dy);
168
- const alpha = Math.min(coverage(dist - outer), coverage(inner - dist)) * alphaMul;
169
- blendOver(pixel, color, alpha);
170
- };
171
- }
172
- function compileRoundedBox(center, boxWidth, boxHeight, radiusFrac, rotationDeg, color, alphaMul, width, height) {
173
- const cx = center[0] * width;
174
- const cy = center[1] * height;
175
- const s = Math.min(width, height);
176
- const halfW = (boxWidth * s) / 2;
177
- const halfH = (boxHeight * s) / 2;
178
- const radius = Math.min(radiusFrac * s, Math.min(halfW, halfH));
179
- const rot = (-rotationDeg * Math.PI) / 180;
180
- const cosA = Math.cos(rot);
181
- const sinA = Math.sin(rot);
182
- return (pixel, px, py) => {
183
- const dx0 = px - cx;
184
- const dy0 = py - cy;
185
- const dx = dx0 * cosA - dy0 * sinA;
186
- const dy = dx0 * sinA + dy0 * cosA;
187
- const d = sdRoundBox(dx, dy, halfW, halfH, radius);
188
- blendOver(pixel, color, coverage(d) * alphaMul);
189
- };
190
- }
191
- function compileRect(layer, width, height) {
192
- return compileRoundedBox(layer.center, layer.width, layer.height, layer.radius ?? 0, layer.rotation ?? 0, layer.color, layer.alpha ?? 1, width, height);
193
- }
194
- function compileLine(layer, width, height) {
195
- return compileRoundedBox(layer.center, layer.length, layer.thickness, layer.thickness / 2, layer.rotation ?? 0, layer.color, layer.alpha ?? 1, width, height);
196
- }
197
- function compilePolygon(layer, width, height) {
198
- const cx = layer.center[0] * width;
199
- const cy = layer.center[1] * height;
200
- const radiusPx = layer.radius * Math.min(width, height);
201
- const sides = Math.max(3, Math.floor(layer.sides));
202
- const rot = (((layer.rotation ?? 0) - 90) * Math.PI) / 180;
203
- const angleStep = (2 * Math.PI) / sides;
204
- const apothem = radiusPx * Math.cos(Math.PI / sides);
205
- const alphaMul = layer.alpha ?? 1;
206
- const { color } = layer;
207
- return (pixel, px, py) => {
208
- const dx = px - cx;
209
- const dy = py - cy;
210
- let a = Math.atan2(dy, dx) - rot;
211
- a -= angleStep * Math.round(a / angleStep);
212
- const r = Math.sqrt(dx * dx + dy * dy);
213
- const d = r * Math.cos(a) - apothem;
214
- blendOver(pixel, color, coverage(d) * alphaMul);
215
- };
216
- }
217
- function compileWave(layer, width, height) {
218
- const s = Math.min(width, height);
219
- const baselinePx = layer.baseline * height;
220
- const amplitudePx = layer.amplitude * s;
221
- const { frequency } = layer;
222
- const phase = layer.phase ?? 0;
223
- const direction = layer.direction ?? 'down';
224
- const alphaMul = layer.alpha ?? 1;
225
- const { color } = layer;
226
- return (pixel, px, py) => {
227
- const u = px / width;
228
- const edgeY = baselinePx + amplitudePx * Math.sin(2 * Math.PI * frequency * u + phase);
229
- const d = direction === 'down' ? edgeY - py : py - edgeY;
230
- blendOver(pixel, color, coverage(d) * alphaMul);
231
- };
232
- }
233
- function compileStripes(layer, width, height) {
234
- const s = Math.min(width, height);
235
- const angleRad = (((layer.angle ?? 45) * Math.PI) / 180);
236
- const spacingPx = Math.max(layer.spacing * s, 1);
237
- const thicknessPx = layer.thickness * s;
238
- const cosA = Math.cos(angleRad);
239
- const sinA = Math.sin(angleRad);
240
- const { color, alpha: alphaMul } = layer;
241
- return (pixel, px, py) => {
242
- const t = px * cosA + py * sinA;
243
- let phase = t % spacingPx;
244
- if (phase < 0)
245
- phase += spacingPx;
246
- const d = Math.abs(phase - spacingPx / 2) - thicknessPx / 2;
247
- blendOver(pixel, color, coverage(d) * alphaMul);
248
- };
249
- }
250
- function compileDots(layer, width, height) {
251
- const s = Math.min(width, height);
252
- const spacingPx = Math.max(layer.spacing * s, 1);
253
- const radiusPx = layer.radius * s;
254
- const { color, alpha: alphaMul } = layer;
255
- const bounds = layer.center !== undefined && layer.width !== undefined && layer.height !== undefined
256
- ? {
257
- cx: layer.center[0] * width,
258
- cy: layer.center[1] * height,
259
- halfW: (layer.width * s) / 2,
260
- halfH: (layer.height * s) / 2,
261
- }
262
- : undefined;
263
- return (pixel, px, py) => {
264
- if (bounds &&
265
- (Math.abs(px - bounds.cx) > bounds.halfW || Math.abs(py - bounds.cy) > bounds.halfH)) {
266
- return;
267
- }
268
- const cellX = Math.floor(px / spacingPx);
269
- const cellY = Math.floor(py / spacingPx);
270
- const centerX = (cellX + 0.5) * spacingPx;
271
- const centerY = (cellY + 0.5) * spacingPx;
272
- const dx = px - centerX;
273
- const dy = py - centerY;
274
- const d = Math.sqrt(dx * dx + dy * dy) - radiusPx;
275
- blendOver(pixel, color, coverage(d) * alphaMul);
276
- };
277
- }
278
- function compileFill(layer) {
279
- const { color } = layer;
280
- return (pixel) => {
281
- pixel[0] = color.r;
282
- pixel[1] = color.g;
283
- pixel[2] = color.b;
284
- };
285
- }
286
- function compileBands(layer, width, height) {
287
- const angleRad = (((layer.angle ?? 90) * Math.PI) / 180);
288
- const cosA = Math.cos(angleRad);
289
- const sinA = Math.sin(angleRad);
290
- const corners = [
291
- [0, 0],
292
- [width, 0],
293
- [0, height],
294
- [width, height],
295
- ];
296
- let lo = Number.POSITIVE_INFINITY;
297
- let hi = Number.NEGATIVE_INFINITY;
298
- for (const [cx, cy] of corners) {
299
- const t = cx * cosA + cy * sinA;
300
- if (t < lo)
301
- lo = t;
302
- if (t > hi)
303
- hi = t;
304
- }
305
- const range = Math.max(hi - lo, 1);
306
- const colors = layer.colors;
307
- const bandCount = Math.max(Math.floor(layer.count ?? colors.length), 1);
308
- const spacing = range / bandCount;
309
- const phasePx = (layer.phase ?? 0) * spacing;
310
- const aa = 1.25;
311
- function pick(index) {
312
- const n = colors.length;
313
- return colors[((index % n) + n) % n];
314
- }
315
- return (pixel, px, py) => {
316
- const t = px * cosA + py * sinA - lo + phasePx;
317
- const pos = t / spacing;
318
- const index = Math.floor(pos);
319
- const frac = pos - index;
320
- const distNext = (1 - frac) * spacing;
321
- const distPrev = frac * spacing;
322
- let color = pick(index);
323
- if (distNext < aa) {
324
- color = lerpColor(color, pick(index + 1), coverage(distNext, aa));
325
- }
326
- else if (distPrev < aa) {
327
- color = lerpColor(color, pick(index - 1), coverage(distPrev, aa));
328
- }
329
- pixel[0] = color.r;
330
- pixel[1] = color.g;
331
- pixel[2] = color.b;
332
- };
333
- }
334
- function compileChecker(layer, width, height) {
335
- const cx = layer.center[0] * width;
336
- const cy = layer.center[1] * height;
337
- const s = Math.min(width, height);
338
- const halfW = (layer.width * s) / 2;
339
- const halfH = (layer.height * s) / 2;
340
- const rot = (-(layer.rotation ?? 0) * Math.PI) / 180;
341
- const cosA = Math.cos(rot);
342
- const sinA = Math.sin(rot);
343
- const cellPx = Math.max(layer.cell * s, 1);
344
- const alphaMul = layer.alpha ?? 1;
345
- const { color } = layer;
346
- return (pixel, px, py) => {
347
- const dx0 = px - cx;
348
- const dy0 = py - cy;
349
- const dx = dx0 * cosA - dy0 * sinA;
350
- const dy = dx0 * sinA + dy0 * cosA;
351
- if (Math.abs(dx) > halfW || Math.abs(dy) > halfH)
352
- return;
353
- const cellX = Math.floor((dx + halfW) / cellPx);
354
- const cellY = Math.floor((dy + halfH) / cellPx);
355
- if ((cellX + cellY) % 2 !== 0)
356
- return;
357
- blendOver(pixel, color, alphaMul);
358
- };
359
- }
360
- /** iq's polynomial smooth minimum — the organic join between two circles that still leaves a hard (non-blurred) final silhouette edge. */
361
- function smoothMin(a, b, k) {
362
- if (k <= 0)
363
- return Math.min(a, b);
364
- const h = clamp01(0.5 + (0.5 * (b - a)) / k);
365
- return lerp(b, a, h) - k * h * (1 - h);
366
- }
367
- function compileBlob(layer, width, height) {
368
- const s = Math.min(width, height);
369
- const k = Math.max((layer.smoothing ?? 0.05) * s, 0.0001);
370
- const points = layer.points.map((point) => ({
371
- cx: point.at[0] * width,
372
- cy: point.at[1] * height,
373
- r: point.radius * s,
374
- }));
375
- const alphaMul = layer.alpha ?? 1;
376
- const { color } = layer;
377
- return (pixel, px, py) => {
378
- let d = Number.POSITIVE_INFINITY;
379
- for (const point of points) {
380
- const dx = px - point.cx;
381
- const dy = py - point.cy;
382
- const dPoint = Math.sqrt(dx * dx + dy * dy) - point.r;
383
- d = d === Number.POSITIVE_INFINITY ? dPoint : smoothMin(d, dPoint, k);
384
- }
385
- blendOver(pixel, color, coverage(d) * alphaMul);
386
- };
387
- }
388
- function compileGrain(layer, seed) {
389
- const { amount } = layer;
390
- return (pixel, px, py) => {
391
- const delta = hashNoise(Math.floor(px), Math.floor(py), seed) * amount;
392
- pixel[0] = pixel[0] + delta;
393
- pixel[1] = pixel[1] + delta;
394
- pixel[2] = pixel[2] + delta;
395
- };
396
- }
397
- function compileVignette(layer, width, height) {
398
- const cx = width / 2;
399
- const cy = height / 2;
400
- const maxDist = Math.sqrt(cx * cx + cy * cy);
401
- const { strength } = layer;
402
- const color = layer.color ?? { r: 0, g: 0, b: 0 };
403
- return (pixel, px, py) => {
404
- const dx = px - cx;
405
- const dy = py - cy;
406
- const t = clamp01(Math.sqrt(dx * dx + dy * dy) / maxDist);
407
- const smooth = t * t * (3 - 2 * t);
408
- blendOver(pixel, color, strength * smooth);
409
- };
410
- }
411
- function compileLayer(layer, width, height, seed) {
412
- switch (layer.kind) {
413
- case 'gradient':
414
- return compileGradient(layer, width, height);
415
- case 'glow':
416
- return compileGlow(layer, width, height);
417
- case 'disc':
418
- return compileDisc(layer, width, height);
419
- case 'ring':
420
- return compileRing(layer, width, height);
421
- case 'rect':
422
- return compileRect(layer, width, height);
423
- case 'line':
424
- return compileLine(layer, width, height);
425
- case 'polygon':
426
- return compilePolygon(layer, width, height);
427
- case 'wave':
428
- return compileWave(layer, width, height);
429
- case 'stripes':
430
- return compileStripes(layer, width, height);
431
- case 'dots':
432
- return compileDots(layer, width, height);
433
- case 'grain':
434
- return compileGrain(layer, seed);
435
- case 'vignette':
436
- return compileVignette(layer, width, height);
437
- case 'fill':
438
- return compileFill(layer);
439
- case 'bands':
440
- return compileBands(layer, width, height);
441
- case 'checker':
442
- return compileChecker(layer, width, height);
443
- case 'blob':
444
- return compileBlob(layer, width, height);
445
- /* c8 ignore next 2 -- exhaustive switch over a closed union */
446
- default:
447
- return () => undefined;
448
- }
449
- }
450
- function toByte(value) {
451
- const clamped = value < 0 ? 0 : value > 1 ? 1 : value;
452
- return Math.round(clamped * 255);
453
- }
454
- /** Renders an `ArtSpec` to a PNG buffer. Deterministic: the same spec always produces the same bytes. */
455
- export function renderArt(spec) {
456
- const { width, height, seed } = spec;
457
- const ops = spec.layers.map((layer) => compileLayer(layer, width, height, seed));
458
- const rgb = new Uint8Array(width * height * 3);
459
- const pixel = new Float32Array(3);
460
- for (let y = 0; y < height; y++) {
461
- const py = y + 0.5;
462
- const rowOffset = y * width * 3;
463
- for (let x = 0; x < width; x++) {
464
- const px = x + 0.5;
465
- pixel[0] = 0;
466
- pixel[1] = 0;
467
- pixel[2] = 0;
468
- for (const op of ops)
469
- op(pixel, px, py);
470
- const idx = rowOffset + x * 3;
471
- rgb[idx] = toByte(pixel[0]);
472
- rgb[idx + 1] = toByte(pixel[1]);
473
- rgb[idx + 2] = toByte(pixel[2]);
474
- }
475
- }
476
- return encodePng(width, height, rgb);
477
- }
478
- //# sourceMappingURL=render.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/demo-art/render.ts"],"names":[],"mappings":"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"}