@logomarks/core 0.1.11 → 0.2.1

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 (114) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +9 -2
  3. package/package.json +47 -4
  4. package/src/analyse/index.d.ts +1 -0
  5. package/src/analyse/index.js +3 -2
  6. package/src/analyse/optical.d.ts +20 -0
  7. package/src/analyse/optical.js +76 -0
  8. package/src/edit/cells.d.ts +13 -0
  9. package/src/edit/cells.js +26 -0
  10. package/src/edit/index.d.ts +3 -1
  11. package/src/edit/index.js +4 -2
  12. package/src/edit/pixelate.d.ts +2 -0
  13. package/src/edit/pixelate.js +15 -0
  14. package/src/font/glyphs.d.ts +31 -0
  15. package/src/font/glyphs.js +228 -0
  16. package/src/font/index.d.ts +10 -0
  17. package/src/font/index.js +10 -0
  18. package/src/font/measure.d.ts +16 -0
  19. package/src/font/measure.js +201 -0
  20. package/src/font/moves.d.ts +42 -0
  21. package/src/font/moves.js +263 -0
  22. package/src/forms/discs.d.ts +20 -0
  23. package/src/forms/discs.js +114 -0
  24. package/src/forms/emblems.d.ts +22 -0
  25. package/src/forms/emblems.js +109 -0
  26. package/src/forms/flow.d.ts +21 -0
  27. package/src/forms/flow.js +80 -0
  28. package/src/forms/folds.d.ts +18 -0
  29. package/src/forms/folds.js +147 -0
  30. package/src/forms/geo.d.ts +46 -0
  31. package/src/forms/geo.js +233 -0
  32. package/src/forms/hooks.d.ts +40 -0
  33. package/src/forms/hooks.js +204 -0
  34. package/src/forms/index.d.ts +22 -0
  35. package/src/forms/index.js +24 -0
  36. package/src/forms/jog.d.ts +33 -0
  37. package/src/forms/jog.js +162 -0
  38. package/src/forms/lines.d.ts +32 -0
  39. package/src/forms/lines.js +233 -0
  40. package/src/forms/ref.d.ts +41 -0
  41. package/src/forms/ref.js +246 -0
  42. package/src/forms/shatter.d.ts +40 -0
  43. package/src/forms/shatter.js +341 -0
  44. package/src/forms/slats.d.ts +35 -0
  45. package/src/forms/slats.js +78 -0
  46. package/src/forms/swash.d.ts +23 -0
  47. package/src/forms/swash.js +74 -0
  48. package/src/forms/tech.d.ts +40 -0
  49. package/src/forms/tech.js +293 -0
  50. package/src/forms/tracks.d.ts +36 -0
  51. package/src/forms/tracks.js +121 -0
  52. package/src/index.js +2 -1
  53. package/src/iso/index.d.ts +5 -0
  54. package/src/iso/index.js +13 -0
  55. package/src/iso/objects.d.ts +168 -0
  56. package/src/iso/objects.js +1042 -0
  57. package/src/iso/planes.d.ts +27 -0
  58. package/src/iso/planes.js +138 -0
  59. package/src/iso/voxels.d.ts +43 -0
  60. package/src/iso/voxels.js +255 -0
  61. package/src/letters/blackletter.d.ts +31 -0
  62. package/src/letters/blackletter.js +199 -0
  63. package/src/letters/dotstroke.d.ts +16 -0
  64. package/src/letters/dotstroke.js +77 -0
  65. package/src/letters/echo.d.ts +42 -0
  66. package/src/letters/echo.js +246 -0
  67. package/src/letters/frame.d.ts +6 -0
  68. package/src/letters/frame.js +14 -0
  69. package/src/letters/index.d.ts +16 -0
  70. package/src/letters/index.js +18 -0
  71. package/src/letters/inktrap.d.ts +66 -0
  72. package/src/letters/inktrap.js +244 -0
  73. package/src/letters/mono.d.ts +145 -0
  74. package/src/letters/mono.js +684 -0
  75. package/src/letters/pillar.d.ts +31 -0
  76. package/src/letters/pillar.js +257 -0
  77. package/src/letters/serif.d.ts +109 -0
  78. package/src/letters/serif.js +666 -0
  79. package/src/letters/stair.d.ts +8 -0
  80. package/src/letters/stair.js +43 -0
  81. package/src/letters/stem.d.ts +29 -0
  82. package/src/letters/stem.js +205 -0
  83. package/src/objects/animals.d.ts +105 -0
  84. package/src/objects/animals.js +469 -0
  85. package/src/objects/bio.d.ts +14 -0
  86. package/src/objects/bio.js +76 -0
  87. package/src/objects/devglyphs.d.ts +34 -0
  88. package/src/objects/devglyphs.js +226 -0
  89. package/src/objects/devices.d.ts +31 -0
  90. package/src/objects/devices.js +114 -0
  91. package/src/objects/faces.d.ts +94 -0
  92. package/src/objects/faces.js +344 -0
  93. package/src/objects/food.d.ts +12 -0
  94. package/src/objects/food.js +74 -0
  95. package/src/objects/index.d.ts +13 -0
  96. package/src/objects/index.js +18 -0
  97. package/src/objects/rosettes.d.ts +14 -0
  98. package/src/objects/rosettes.js +64 -0
  99. package/src/objects/sport.d.ts +8 -0
  100. package/src/objects/sport.js +37 -0
  101. package/src/objects/weapons.d.ts +31 -0
  102. package/src/objects/weapons.js +179 -0
  103. package/src/pixels/dither.d.ts +78 -0
  104. package/src/pixels/dither.js +399 -0
  105. package/src/pixels/emote.d.ts +6 -0
  106. package/src/pixels/emote.js +76 -0
  107. package/src/pixels/index.d.ts +7 -0
  108. package/src/pixels/index.js +8 -0
  109. package/src/sdf/index.d.ts +2 -0
  110. package/src/sdf/index.js +2 -0
  111. package/src/sdf/y2k.d.ts +12 -0
  112. package/src/sdf/y2k.js +80 -0
  113. package/src/util/vec.d.ts +14 -0
  114. package/src/util/vec.js +61 -0
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Small vector helpers several part families share (the Logomarks tools had a copy in each of the ink-trap, tech,
3
+ * echo and plane parts), each written once here so they all draw with the same arithmetic.
4
+ */
5
+ import { rect } from '../geometry/index.js';
6
+
7
+ /**
8
+ * a − b, in 2D.
9
+ *
10
+ * @param {readonly number[]} a The point.
11
+ * @param {readonly number[]} b The point taken away.
12
+ * @returns {import('../geometry/types.js').Point} The difference.
13
+ */
14
+ export const sub = (a, b) => [a[0] - b[0], a[1] - b[1]];
15
+
16
+ /**
17
+ * a + b, in 2D.
18
+ *
19
+ * @param {readonly number[]} a The point.
20
+ * @param {readonly number[]} b The point added.
21
+ * @returns {import('../geometry/types.js').Point} The sum.
22
+ */
23
+ export const add = (a, b) => [a[0] + b[0], a[1] + b[1]];
24
+
25
+ /**
26
+ * a scaled by k, in 2D.
27
+ *
28
+ * @param {readonly number[]} a The vector.
29
+ * @param {number} k The factor.
30
+ * @returns {import('../geometry/types.js').Point} The scaled vector.
31
+ */
32
+ export const mul = (a, k) => [a[0] * k, a[1] * k];
33
+
34
+ /**
35
+ * The cross product of two 3D vectors.
36
+ *
37
+ * @param {readonly number[]} a The first.
38
+ * @param {readonly number[]} b The second.
39
+ * @returns {import('../geometry/types.js').Point3} a × b.
40
+ */
41
+ export const cross3 = (a, b) => [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
42
+
43
+ /**
44
+ * A ring's signed area by the shoelace sum, added up point by point (positive when it runs clockwise on screen, y
45
+ * down). The geometry kit's signedArea() sums the same terms in another order, so the two can differ in the last bit.
46
+ *
47
+ * @param {readonly (readonly number[])[]} r The ring.
48
+ * @returns {number} The area, signed.
49
+ */
50
+ export const shoelace = (r) => r.reduce((s, p, i) => { const q = r[(i + 1) % r.length]; return s + p[0] * q[1] - q[0] * p[1]; }, 0) / 2;
51
+
52
+ /**
53
+ * A rectangle from its corners (x0, y0) and (x1, y1).
54
+ *
55
+ * @param {number} x0 Left.
56
+ * @param {number} y0 Top.
57
+ * @param {number} x1 Right.
58
+ * @param {number} y1 Bottom.
59
+ * @returns {import('../geometry/types.js').Polygon} The rectangle.
60
+ */
61
+ export const box = (x0, y0, x1, y1) => rect(x0, y0, x1 - x0, y1 - y0);