@kensio/colophon 2.11.1 → 2.12.0

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 (145) hide show
  1. package/dist/astro/index.d.ts.map +1 -1
  2. package/dist/astro/index.js +0 -1
  3. package/dist/astro/index.js.map +1 -1
  4. package/dist/config/defaults.d.ts.map +1 -1
  5. package/dist/config/defaults.js +5 -0
  6. package/dist/config/defaults.js.map +1 -1
  7. package/dist/measure/faces.d.ts.map +1 -1
  8. package/dist/measure/faces.js.map +1 -1
  9. package/dist/templates/banner/index.js +2 -2
  10. package/dist/templates/banner/index.js.map +1 -1
  11. package/dist/templates/card/index.js +2 -2
  12. package/dist/templates/card/index.js.map +1 -1
  13. package/dist/templates/code/bar.d.ts +24 -0
  14. package/dist/templates/code/bar.d.ts.map +1 -0
  15. package/dist/templates/code/bar.js +31 -0
  16. package/dist/templates/code/bar.js.map +1 -0
  17. package/dist/templates/code/gutter.d.ts +30 -0
  18. package/dist/templates/code/gutter.d.ts.map +1 -0
  19. package/dist/templates/code/gutter.js +64 -0
  20. package/dist/templates/code/gutter.js.map +1 -0
  21. package/dist/templates/code/index.d.ts.map +1 -1
  22. package/dist/templates/code/index.js +34 -15
  23. package/dist/templates/code/index.js.map +1 -1
  24. package/dist/templates/code/layout.d.ts +6 -1
  25. package/dist/templates/code/layout.d.ts.map +1 -1
  26. package/dist/templates/code/layout.js +8 -3
  27. package/dist/templates/code/layout.js.map +1 -1
  28. package/dist/templates/code/mark/draw.d.ts +26 -0
  29. package/dist/templates/code/mark/draw.d.ts.map +1 -0
  30. package/dist/templates/code/mark/draw.js +41 -0
  31. package/dist/templates/code/mark/draw.js.map +1 -0
  32. package/dist/templates/code/mark/index.d.ts +16 -0
  33. package/dist/templates/code/mark/index.d.ts.map +1 -0
  34. package/dist/templates/code/mark/index.js +34 -0
  35. package/dist/templates/code/mark/index.js.map +1 -0
  36. package/dist/templates/code/mark/locate.d.ts +20 -0
  37. package/dist/templates/code/mark/locate.d.ts.map +1 -0
  38. package/dist/templates/code/mark/locate.js +56 -0
  39. package/dist/templates/code/mark/locate.js.map +1 -0
  40. package/dist/templates/code/mark/read.d.ts +30 -0
  41. package/dist/templates/code/mark/read.d.ts.map +1 -0
  42. package/dist/templates/code/mark/read.js +61 -0
  43. package/dist/templates/code/mark/read.js.map +1 -0
  44. package/dist/templates/code/plate.d.ts +7 -1
  45. package/dist/templates/code/plate.d.ts.map +1 -1
  46. package/dist/templates/code/plate.js +14 -4
  47. package/dist/templates/code/plate.js.map +1 -1
  48. package/dist/templates/footer.d.ts +9 -1
  49. package/dist/templates/footer.d.ts.map +1 -1
  50. package/dist/templates/footer.js +24 -0
  51. package/dist/templates/footer.js.map +1 -1
  52. package/dist/templates/frame.d.ts.map +1 -1
  53. package/dist/templates/frame.js +5 -7
  54. package/dist/templates/frame.js.map +1 -1
  55. package/dist/templates/terminal/index.js +4 -4
  56. package/dist/templates/terminal/index.js.map +1 -1
  57. package/dist/templates/window/dots.d.ts +11 -0
  58. package/dist/templates/window/dots.d.ts.map +1 -0
  59. package/dist/templates/window/dots.js +32 -0
  60. package/dist/templates/window/dots.js.map +1 -0
  61. package/dist/templates/{terminal/window.d.ts → window/index.d.ts} +4 -2
  62. package/dist/templates/window/index.d.ts.map +1 -0
  63. package/dist/templates/window/index.js +48 -0
  64. package/dist/templates/window/index.js.map +1 -0
  65. package/dist/templates/window/title.d.ts +9 -0
  66. package/dist/templates/window/title.d.ts.map +1 -0
  67. package/dist/templates/window/title.js +24 -0
  68. package/dist/templates/window/title.js.map +1 -0
  69. package/dist/texture/chevrons.d.ts +13 -0
  70. package/dist/texture/chevrons.d.ts.map +1 -0
  71. package/dist/texture/chevrons.js +22 -0
  72. package/dist/texture/chevrons.js.map +1 -0
  73. package/dist/texture/grid.d.ts +14 -0
  74. package/dist/texture/grid.d.ts.map +1 -0
  75. package/dist/texture/grid.js +38 -0
  76. package/dist/texture/grid.js.map +1 -0
  77. package/dist/texture/halftone.d.ts +14 -0
  78. package/dist/texture/halftone.d.ts.map +1 -0
  79. package/dist/texture/halftone.js +55 -0
  80. package/dist/texture/halftone.js.map +1 -0
  81. package/dist/texture/honeycomb.d.ts +14 -0
  82. package/dist/texture/honeycomb.d.ts.map +1 -0
  83. package/dist/texture/honeycomb.js +43 -0
  84. package/dist/texture/honeycomb.js.map +1 -0
  85. package/dist/texture/index.d.ts +1 -2
  86. package/dist/texture/index.d.ts.map +1 -1
  87. package/dist/texture/index.js +44 -13
  88. package/dist/texture/index.js.map +1 -1
  89. package/dist/texture/moire.d.ts +18 -0
  90. package/dist/texture/moire.d.ts.map +1 -0
  91. package/dist/texture/moire.js +44 -0
  92. package/dist/texture/moire.js.map +1 -0
  93. package/dist/texture/pattern.d.ts +10 -0
  94. package/dist/texture/pattern.d.ts.map +1 -1
  95. package/dist/texture/pattern.js +36 -13
  96. package/dist/texture/pattern.js.map +1 -1
  97. package/dist/texture/rays.d.ts +13 -0
  98. package/dist/texture/rays.d.ts.map +1 -0
  99. package/dist/texture/rays.js +36 -0
  100. package/dist/texture/rays.js.map +1 -0
  101. package/dist/texture/scallops.d.ts +14 -0
  102. package/dist/texture/scallops.d.ts.map +1 -0
  103. package/dist/texture/scallops.js +29 -0
  104. package/dist/texture/scallops.js.map +1 -0
  105. package/dist/texture/tile.d.ts +14 -0
  106. package/dist/texture/tile.d.ts.map +1 -0
  107. package/dist/texture/tile.js +23 -0
  108. package/dist/texture/tile.js.map +1 -0
  109. package/dist/texture/topographic/contours.d.ts +13 -0
  110. package/dist/texture/topographic/contours.d.ts.map +1 -0
  111. package/dist/texture/topographic/contours.js +72 -0
  112. package/dist/texture/topographic/contours.js.map +1 -0
  113. package/dist/texture/topographic/field.d.ts +8 -0
  114. package/dist/texture/topographic/field.d.ts.map +1 -0
  115. package/dist/texture/topographic/field.js +29 -0
  116. package/dist/texture/topographic/field.js.map +1 -0
  117. package/dist/texture/topographic/index.d.ts +17 -0
  118. package/dist/texture/topographic/index.d.ts.map +1 -0
  119. package/dist/texture/topographic/index.js +48 -0
  120. package/dist/texture/topographic/index.js.map +1 -0
  121. package/dist/theme/presets.d.ts +13 -5
  122. package/dist/theme/presets.d.ts.map +1 -1
  123. package/dist/theme/presets.js +16 -5
  124. package/dist/theme/presets.js.map +1 -1
  125. package/dist/types.d.ts +231 -3
  126. package/dist/types.d.ts.map +1 -1
  127. package/dist/validate/collect.d.ts.map +1 -1
  128. package/dist/validate/collect.js +2 -1
  129. package/dist/validate/collect.js.map +1 -1
  130. package/dist/validate/keys.d.ts +37 -0
  131. package/dist/validate/keys.d.ts.map +1 -1
  132. package/dist/validate/keys.js +130 -2
  133. package/dist/validate/keys.js.map +1 -1
  134. package/dist/validate/texture.d.ts +4 -5
  135. package/dist/validate/texture.d.ts.map +1 -1
  136. package/dist/validate/texture.js +11 -20
  137. package/dist/validate/texture.js.map +1 -1
  138. package/dist/validate/values.d.ts +6 -0
  139. package/dist/validate/values.d.ts.map +1 -1
  140. package/dist/validate/values.js +16 -1
  141. package/dist/validate/values.js.map +1 -1
  142. package/package.json +3 -10
  143. package/dist/templates/terminal/window.d.ts.map +0 -1
  144. package/dist/templates/terminal/window.js +0 -84
  145. package/dist/templates/terminal/window.js.map +0 -1
@@ -0,0 +1,29 @@
1
+ import { fallbackColor } from "./color.js";
2
+ import { tile } from "./tile.js";
3
+ const scallopDefaults = { opacity: 0.07, width: 2, size: 40 };
4
+ /** One arc of a row, bulging downwards from the two points it spans. */
5
+ function scallop(cx, y, radius) {
6
+ return (`M${String(cx - radius)} ${String(y)}` +
7
+ `A${String(radius)} ${String(radius)} 0 0 0 ${String(cx + radius)} ${String(y)}`);
8
+ }
9
+ /**
10
+ * Fish scales: rows of arcs, each row offset by half a scale from the one
11
+ * above, which is what makes them read as overlapping rather than as stacked
12
+ * semicircles.
13
+ *
14
+ * The tile holds two rows for that reason: one repeat has to contain both the
15
+ * offset row and the row it is offset from, since a `<pattern>` cannot stagger
16
+ * its own rows.
17
+ */
18
+ export function scallopsSvg(texture, dimensions, id) {
19
+ const size = texture.size ?? scallopDefaults.size;
20
+ const radius = size / 2;
21
+ const rows = scallop(radius, 0, radius) +
22
+ scallop(0, radius, radius) +
23
+ scallop(size, radius, radius);
24
+ const arcs = `<path d="${rows}" stroke="${texture.color ?? fallbackColor}"` +
25
+ ` stroke-width="${String(texture.width ?? scallopDefaults.width)}"` +
26
+ ` fill="none"/>`;
27
+ return tile(id, size, arcs, "", dimensions, texture.opacity ?? scallopDefaults.opacity);
28
+ }
29
+ //# sourceMappingURL=scallops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scallops.js","sourceRoot":"","sources":["../../src/texture/scallops.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,eAAe,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AAE9D,wEAAwE;AACxE,SAAS,OAAO,CAAC,EAAU,EAAE,CAAS,EAAE,MAAc;IACpD,OAAO,CACL,IAAI,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE;QACtC,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CACjF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CACzB,OAAwD,EACxD,UAAsB,EACtB,EAAU;IAEV,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC;IACxB,MAAM,IAAI,GACR,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC;QAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAEhC,MAAM,IAAI,GACR,YAAY,IAAI,aAAa,OAAO,CAAC,KAAK,IAAI,aAAa,GAAG;QAC9D,kBAAkB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG;QACnE,gBAAgB,CAAC;IAEnB,OAAO,IAAI,CACT,EAAE,EACF,IAAI,EACJ,IAAI,EACJ,EAAE,EACF,UAAU,EACV,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,CAC3C,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Dimensions } from "../types.js";
2
+ /**
3
+ * A tiled pattern over the whole image: the `<pattern>` under the given `id`,
4
+ * and the rect that fills with it.
5
+ *
6
+ * A tile is what makes a treatment cheap to store as well as to draw. PNG
7
+ * compresses along a row, and a repeating tile means a row that repeats, which
8
+ * is the difference between the dot grid's 20KB and the half a megabyte a
9
+ * pattern that never repeats costs.
10
+ */
11
+ export declare function tile(id: string,
12
+ /** The repeat: one number for a square tile, or both sides where it is not. */
13
+ gap: number | Dimensions, contents: string, transform: string, dimensions: Dimensions, opacity: number): string;
14
+ //# sourceMappingURL=tile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile.d.ts","sourceRoot":"","sources":["../../src/texture/tile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAClB,EAAE,EAAE,MAAM;AACV,+EAA+E;AAC/E,GAAG,EAAE,MAAM,GAAG,UAAU,EACxB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,GACd,MAAM,CAcR"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * A tiled pattern over the whole image: the `<pattern>` under the given `id`,
3
+ * and the rect that fills with it.
4
+ *
5
+ * A tile is what makes a treatment cheap to store as well as to draw. PNG
6
+ * compresses along a row, and a repeating tile means a row that repeats, which
7
+ * is the difference between the dot grid's 20KB and the half a megabyte a
8
+ * pattern that never repeats costs.
9
+ */
10
+ export function tile(id,
11
+ /** The repeat: one number for a square tile, or both sides where it is not. */
12
+ gap, contents, transform, dimensions, opacity) {
13
+ const { width, height } = dimensions;
14
+ const repeat = typeof gap === "number" ? { width: gap, height: gap } : { ...gap };
15
+ return (`<defs>` +
16
+ `<pattern id="${id}" width="${String(repeat.width)}"` +
17
+ ` height="${String(repeat.height)}"` +
18
+ ` patternUnits="userSpaceOnUse"${transform}>${contents}</pattern>` +
19
+ `</defs>` +
20
+ `<rect width="${String(width)}" height="${String(height)}"` +
21
+ ` fill="url(#${id})" opacity="${String(opacity)}"/>`);
22
+ }
23
+ //# sourceMappingURL=tile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tile.js","sourceRoot":"","sources":["../../src/texture/tile.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAClB,EAAU;AACV,+EAA+E;AAC/E,GAAwB,EACxB,QAAgB,EAChB,SAAiB,EACjB,UAAsB,EACtB,OAAe;IAEf,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IACrC,MAAM,MAAM,GACV,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC;IAErE,OAAO,CACL,QAAQ;QACR,gBAAgB,EAAE,YAAY,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG;QACrD,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG;QACpC,iCAAiC,SAAS,IAAI,QAAQ,YAAY;QAClE,SAAS;QACT,gBAAgB,MAAM,CAAC,KAAK,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,GAAG;QAC3D,eAAe,EAAE,eAAe,MAAM,CAAC,OAAO,CAAC,KAAK,CACrD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { Dimensions } from "../../types.js";
2
+ /**
3
+ * One contour of the landscape, as the segments where the ground passes
4
+ * through a given height.
5
+ *
6
+ * This is marching squares: the field is sampled on a grid, and each cell
7
+ * contributes the piece of the line that crosses it. Drawing the segments
8
+ * separately rather than joining them into loops costs a little more markup
9
+ * and saves the bookkeeping of walking a contour from cell to cell, which
10
+ * would not change the picture.
11
+ */
12
+ export declare function contourAt(level: number, step: number, dimensions: Dimensions, seed: number, relief: number): string;
13
+ //# sourceMappingURL=contours.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contours.d.ts","sourceRoot":"","sources":["../../../src/texture/topographic/contours.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAyEjD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,CAmBR"}
@@ -0,0 +1,72 @@
1
+ import { height } from "./field.js";
2
+ /**
3
+ * Where between two corners the contour crosses, by how far each of them is
4
+ * above or below the level. Interpolating rather than taking the midpoint is
5
+ * what makes the line smooth instead of stepped.
6
+ */
7
+ function between(a, b, above, below) {
8
+ const along = above / (above - below);
9
+ return { x: a.x + (b.x - a.x) * along, y: a.y + (b.y - a.y) * along };
10
+ }
11
+ /** The corners of one cell, clockwise from the top left. */
12
+ function corners(x, y, step) {
13
+ return [
14
+ { x, y },
15
+ { x: x + step, y },
16
+ { x: x + step, y: y + step },
17
+ { x, y: y + step },
18
+ ];
19
+ }
20
+ /**
21
+ * The segments of one contour crossing one cell.
22
+ *
23
+ * Which edges it crosses is decided by which corners are above the level, read
24
+ * as four bits. The two ambiguous cases, where opposite corners are above and
25
+ * the other two below, are drawn as two separate segments: a saddle can be
26
+ * joined either way and this is the reading that never crosses itself.
27
+ */
28
+ function cell(values, points, level) {
29
+ const above = values.map((value) => value > level);
30
+ const edges = [];
31
+ for (const [index, isAbove] of above.entries()) {
32
+ const next = (index + 1) % 4;
33
+ if (isAbove !== above[next]) {
34
+ edges.push(between(points[index], points[next], values[index] - level, values[next] - level));
35
+ }
36
+ }
37
+ if (edges.length === 2) {
38
+ return [[edges[0], edges[1]]];
39
+ }
40
+ return edges.length === 4
41
+ ? [
42
+ [edges[0], edges[1]],
43
+ [edges[2], edges[3]],
44
+ ]
45
+ : [];
46
+ }
47
+ /**
48
+ * One contour of the landscape, as the segments where the ground passes
49
+ * through a given height.
50
+ *
51
+ * This is marching squares: the field is sampled on a grid, and each cell
52
+ * contributes the piece of the line that crosses it. Drawing the segments
53
+ * separately rather than joining them into loops costs a little more markup
54
+ * and saves the bookkeeping of walking a contour from cell to cell, which
55
+ * would not change the picture.
56
+ */
57
+ export function contourAt(level, step, dimensions, seed, relief) {
58
+ let path = "";
59
+ for (let y = -step; y < dimensions.height + step; y += step) {
60
+ for (let x = -step; x < dimensions.width + step; x += step) {
61
+ const points = corners(x, y, step);
62
+ const values = points.map((point) => height(point.x, point.y, seed) * relief);
63
+ for (const [from, to] of cell(values, points, level)) {
64
+ path +=
65
+ `M${String(Math.round(from.x))} ${String(Math.round(from.y))}` +
66
+ `L${String(Math.round(to.x))} ${String(Math.round(to.y))}`;
67
+ }
68
+ }
69
+ }
70
+ return path;
71
+ }
72
+ //# sourceMappingURL=contours.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contours.js","sourceRoot":"","sources":["../../../src/texture/topographic/contours.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The height of the ground at a point, from -1 to 1.
3
+ *
4
+ * `seed` shifts each wave's phase by a different amount, so one number picks a
5
+ * whole landscape and the same number always picks the same one.
6
+ */
7
+ export declare function height(x: number, y: number, seed: number): number;
8
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/texture/topographic/field.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CASjE"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The waves the ground is made of: how far one runs before it repeats, which
3
+ * way it runs, and how much of the height it accounts for.
4
+ *
5
+ * Three at unrelated wavelengths and angles is enough to read as terrain
6
+ * rather than as a pattern. Deliberately not random: the rebuild stamp assumes
7
+ * one config draws one picture, so a texture that rolled dice would come out
8
+ * different every time nothing had changed.
9
+ */
10
+ const waves = [
11
+ { length: 260, dx: 1, dy: 0.35, weight: 0.5 },
12
+ { length: 170, dx: -0.4, dy: 1, weight: 0.32 },
13
+ { length: 95, dx: 0.7, dy: -0.8, weight: 0.18 },
14
+ ];
15
+ /**
16
+ * The height of the ground at a point, from -1 to 1.
17
+ *
18
+ * `seed` shifts each wave's phase by a different amount, so one number picks a
19
+ * whole landscape and the same number always picks the same one.
20
+ */
21
+ export function height(x, y, seed) {
22
+ let sum = 0;
23
+ for (const [index, wave] of waves.entries()) {
24
+ const along = (x * wave.dx + y * wave.dy) / wave.length;
25
+ sum += wave.weight * Math.sin(along + seed * (index + 1) * 1.7);
26
+ }
27
+ return sum;
28
+ }
29
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/texture/topographic/field.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,KAAK,GAAG;IACZ,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IAC7C,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9C,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;CAChD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY;IACvD,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACxD,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { Dimensions, Texture } from "../../types.js";
2
+ /**
3
+ * Contour lines, the look of a map: the height of a made-up landscape, drawn
4
+ * every `gap` pixels of it.
5
+ *
6
+ * These are the real thing rather than rings pretending: the field is sampled
7
+ * on a grid and each contour is the line where the ground passes through one
8
+ * height, so the shapes close where the ground has a summit, run off the edge
9
+ * where it keeps rising, and never cross each other. An earlier attempt drew
10
+ * circles pushed in and out by the same field, and no amount of pushing made
11
+ * it read as anything but a wobbly bullseye: what makes a map is that the
12
+ * shapes owe nothing to a centre.
13
+ */
14
+ export declare function topographicSvg(texture: Extract<Texture, {
15
+ readonly type: "topographic";
16
+ }>, dimensions: Dimensions): string;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/texture/topographic/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAqB1D;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC,EAC3D,UAAU,EAAE,UAAU,GACrB,MAAM,CAsBR"}
@@ -0,0 +1,48 @@
1
+ import { fallbackColor } from "../color.js";
2
+ import { contourAt } from "./contours.js";
3
+ const contourDefaults = {
4
+ opacity: 0.1,
5
+ width: 1.5,
6
+ gap: 34,
7
+ relief: 5,
8
+ seed: 1,
9
+ };
10
+ /**
11
+ * How finely the ground is sampled, as a fraction of the gap between contours.
12
+ *
13
+ * The cells have to be smaller than the features the field has, or the lines
14
+ * come out as polygons. Below about a third of the gap the picture stops
15
+ * changing and only the markup grows.
16
+ */
17
+ const sampleScale = 0.5;
18
+ /**
19
+ * Contour lines, the look of a map: the height of a made-up landscape, drawn
20
+ * every `gap` pixels of it.
21
+ *
22
+ * These are the real thing rather than rings pretending: the field is sampled
23
+ * on a grid and each contour is the line where the ground passes through one
24
+ * height, so the shapes close where the ground has a summit, run off the edge
25
+ * where it keeps rising, and never cross each other. An earlier attempt drew
26
+ * circles pushed in and out by the same field, and no amount of pushing made
27
+ * it read as anything but a wobbly bullseye: what makes a map is that the
28
+ * shapes owe nothing to a centre.
29
+ */
30
+ export function topographicSvg(texture, dimensions) {
31
+ const gap = texture.gap ?? contourDefaults.gap;
32
+ const relief = gap * (texture.relief ?? contourDefaults.relief);
33
+ const seed = texture.seed ?? contourDefaults.seed;
34
+ const step = Math.max(2, Math.round(gap * sampleScale));
35
+ let lines = "";
36
+ // The field runs from -relief to relief, so the levels either side of nought
37
+ // are what fits in it. One at nought as well would draw the coastline twice
38
+ // over, since the sum of the waves sits there more often than anywhere else.
39
+ for (let level = gap / 2; level < relief; level += gap) {
40
+ lines += contourAt(level, step, dimensions, seed, relief);
41
+ lines += contourAt(-level, step, dimensions, seed, relief);
42
+ }
43
+ return (`<path d="${lines}" fill="none"` +
44
+ ` stroke="${texture.color ?? fallbackColor}"` +
45
+ ` stroke-width="${String(texture.width ?? contourDefaults.width)}"` +
46
+ ` opacity="${String(texture.opacity ?? contourDefaults.opacity)}"/>`);
47
+ }
48
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/texture/topographic/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;CACR,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAC5B,OAA2D,EAC3D,UAAsB;IAEtB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC;IAC/C,MAAM,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC;IAExD,IAAI,KAAK,GAAG,EAAE,CAAC;IAEf,6EAA6E;IAC7E,4EAA4E;IAC5E,6EAA6E;IAC7E,KAAK,IAAI,KAAK,GAAG,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,GAAG,EAAE,CAAC;QACvD,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1D,KAAK,IAAI,SAAS,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CACL,YAAY,KAAK,eAAe;QAChC,YAAY,OAAO,CAAC,KAAK,IAAI,aAAa,GAAG;QAC7C,kBAAkB,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG;QACnE,aAAa,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CACrE,CAAC;AACJ,CAAC"}
@@ -22,11 +22,19 @@ export interface Theme {
22
22
  * image is usually asked to be, and two are light, because a site whose own
23
23
  * pages are light has nothing to reach for otherwise.
24
24
  *
25
- * None of them turns grain on, though it is the treatment they would most
26
- * obviously want. Per-pixel noise does not compress, and it takes a
27
- * 1200x1200 PNG from around 600KB to a little over 2MB: a cost worth paying
28
- * on purpose, and not one to hand someone who picked a theme by its name and
29
- * is committing the images next to their posts.
25
+ * All of them carry a texture, since a treatment is most of what separates a
26
+ * theme from a palette, and every one of them is drawn from the cheap end of
27
+ * the set. What that costs is worth writing down, measured on a 1200x1200
28
+ * card: `aurora` goes from 244KB to 279KB, `bloom` from 342KB to 372KB, and
29
+ * `ember` from 99KB to 192KB, which is the largest jump here and still the
30
+ * smallest image of the three.
31
+ *
32
+ * None of them turns grain, `waves` or `moire` on, though grain is the
33
+ * treatment they would most obviously want. Those three do not compress:
34
+ * grain takes a 1200x1200 PNG from around 82KB to 1.7MB, and the other two to
35
+ * around 600KB. That is a cost worth paying on purpose, and not one to hand
36
+ * someone who picked a theme by its name and is committing the images next to
37
+ * their posts.
30
38
  */
31
39
  export declare const THEMES: Readonly<Record<ThemeName, Theme>>;
32
40
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAkIrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAA0B,SAAS,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAqIrD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAA0B,SAAS,SAAS,EAAE,CAAC"}
@@ -11,11 +11,19 @@
11
11
  * image is usually asked to be, and two are light, because a site whose own
12
12
  * pages are light has nothing to reach for otherwise.
13
13
  *
14
- * None of them turns grain on, though it is the treatment they would most
15
- * obviously want. Per-pixel noise does not compress, and it takes a
16
- * 1200x1200 PNG from around 600KB to a little over 2MB: a cost worth paying
17
- * on purpose, and not one to hand someone who picked a theme by its name and
18
- * is committing the images next to their posts.
14
+ * All of them carry a texture, since a treatment is most of what separates a
15
+ * theme from a palette, and every one of them is drawn from the cheap end of
16
+ * the set. What that costs is worth writing down, measured on a 1200x1200
17
+ * card: `aurora` goes from 244KB to 279KB, `bloom` from 342KB to 372KB, and
18
+ * `ember` from 99KB to 192KB, which is the largest jump here and still the
19
+ * smallest image of the three.
20
+ *
21
+ * None of them turns grain, `waves` or `moire` on, though grain is the
22
+ * treatment they would most obviously want. Those three do not compress:
23
+ * grain takes a 1200x1200 PNG from around 82KB to 1.7MB, and the other two to
24
+ * around 600KB. That is a cost worth paying on purpose, and not one to hand
25
+ * someone who picked a theme by its name and is committing the images next to
26
+ * their posts.
19
27
  */
20
28
  export const THEMES = {
21
29
  midnight: {
@@ -52,6 +60,7 @@ export const THEMES = {
52
60
  { color: "#8b5cf6", x: 1, y: 0.9, radius: 0.5, opacity: 0.55 },
53
61
  ],
54
62
  },
63
+ texture: { type: "crosses", opacity: 0.07 },
55
64
  },
56
65
  ember: {
57
66
  colors: {
@@ -68,6 +77,7 @@ export const THEMES = {
68
77
  { offset: "100%", color: "#ea580c" },
69
78
  ],
70
79
  },
80
+ texture: { type: "rays", opacity: 0.06 },
71
81
  },
72
82
  forest: {
73
83
  colors: {
@@ -102,6 +112,7 @@ export const THEMES = {
102
112
  { color: "#7c3aed", x: 0.5, y: 1, radius: 0.75, opacity: 0.8 },
103
113
  ],
104
114
  },
115
+ texture: { type: "dots", opacity: 0.06 },
105
116
  },
106
117
  slate: {
107
118
  colors: {
@@ -1 +1 @@
1
- {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../src/theme/presets.ts"],"names":[],"mappings":"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"}