@oh-just-another/renderer-core 0.60.0 → 0.61.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 (154) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/caches/edge-cache-bitmap.d.ts.map +1 -0
  4. package/dist/caches/edge-cache-bitmap.js.map +1 -0
  5. package/dist/caches/edge-cache.d.ts.map +1 -0
  6. package/dist/caches/edge-cache.js.map +1 -0
  7. package/dist/caches/layer-cache-composite.d.ts.map +1 -0
  8. package/dist/caches/layer-cache-composite.js.map +1 -0
  9. package/dist/caches/lru-cache.d.ts.map +1 -0
  10. package/dist/caches/lru-cache.js.map +1 -0
  11. package/dist/caches/shape-cache-bitmap.d.ts.map +1 -0
  12. package/dist/caches/shape-cache-bitmap.js.map +1 -0
  13. package/dist/caches/shape-cache.d.ts.map +1 -0
  14. package/dist/caches/shape-cache.js.map +1 -0
  15. package/dist/caches/tile-renderer.d.ts.map +1 -0
  16. package/dist/caches/tile-renderer.js.map +1 -0
  17. package/dist/constants.d.ts +95 -9
  18. package/dist/constants.d.ts.map +1 -1
  19. package/dist/constants.js +98 -11
  20. package/dist/constants.js.map +1 -1
  21. package/dist/index.d.ts +40 -37
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +24 -21
  24. package/dist/index.js.map +1 -1
  25. package/dist/raster/animation-adapter.d.ts.map +1 -0
  26. package/dist/raster/animation-adapter.js.map +1 -0
  27. package/dist/raster/image-source-guard.d.ts +2 -0
  28. package/dist/raster/image-source-guard.d.ts.map +1 -0
  29. package/dist/raster/image-source-guard.js +44 -0
  30. package/dist/raster/image-source-guard.js.map +1 -0
  31. package/dist/raster/js-rasterizer.d.ts.map +1 -0
  32. package/dist/raster/js-rasterizer.js.map +1 -0
  33. package/dist/raster/rasterizer.d.ts.map +1 -0
  34. package/dist/raster/rasterizer.js.map +1 -0
  35. package/dist/raster/wasm-bytes.d.ts.map +1 -0
  36. package/dist/raster/wasm-bytes.js.map +1 -0
  37. package/dist/rendering/built-in-renderers.d.ts +85 -0
  38. package/dist/rendering/built-in-renderers.d.ts.map +1 -0
  39. package/dist/rendering/built-in-renderers.js +1087 -0
  40. package/dist/rendering/built-in-renderers.js.map +1 -0
  41. package/dist/{edge-renderer.d.ts → rendering/edge-renderer.d.ts} +3 -3
  42. package/dist/rendering/edge-renderer.d.ts.map +1 -0
  43. package/dist/{edge-renderer.js → rendering/edge-renderer.js} +4 -4
  44. package/dist/rendering/edge-renderer.js.map +1 -0
  45. package/dist/{grid-renderer.d.ts → rendering/grid-renderer.d.ts} +1 -1
  46. package/dist/rendering/grid-renderer.d.ts.map +1 -0
  47. package/dist/{grid-renderer.js → rendering/grid-renderer.js} +1 -1
  48. package/dist/rendering/grid-renderer.js.map +1 -0
  49. package/dist/rendering/lod.d.ts +26 -0
  50. package/dist/rendering/lod.d.ts.map +1 -0
  51. package/dist/rendering/lod.js +5 -0
  52. package/dist/rendering/lod.js.map +1 -0
  53. package/dist/{scene-renderer.d.ts → rendering/scene-renderer.d.ts} +21 -21
  54. package/dist/rendering/scene-renderer.d.ts.map +1 -0
  55. package/dist/{scene-renderer.js → rendering/scene-renderer.js} +26 -9
  56. package/dist/rendering/scene-renderer.js.map +1 -0
  57. package/dist/{shape-renderer.d.ts → rendering/shape-renderer.d.ts} +32 -2
  58. package/dist/rendering/shape-renderer.d.ts.map +1 -0
  59. package/dist/rendering/shape-renderer.js.map +1 -0
  60. package/dist/targets/dim-target.d.ts.map +1 -0
  61. package/dist/targets/dim-target.js.map +1 -0
  62. package/dist/targets/layers.d.ts.map +1 -0
  63. package/dist/targets/layers.js.map +1 -0
  64. package/dist/{render-target.d.ts → targets/render-target.d.ts} +8 -0
  65. package/dist/targets/render-target.d.ts.map +1 -0
  66. package/dist/targets/render-target.js.map +1 -0
  67. package/dist/{text-editing.d.ts → text/text-editing.d.ts} +22 -1
  68. package/dist/text/text-editing.d.ts.map +1 -0
  69. package/dist/{text-editing.js → text/text-editing.js} +53 -12
  70. package/dist/text/text-editing.js.map +1 -0
  71. package/dist/{text-layout.d.ts → text/text-layout.d.ts} +1 -1
  72. package/dist/text/text-layout.d.ts.map +1 -0
  73. package/dist/text/text-layout.js.map +1 -0
  74. package/dist/{text-shaper.d.ts → text/text-shaper.d.ts} +9 -1
  75. package/dist/text/text-shaper.d.ts.map +1 -0
  76. package/dist/text/text-shaper.js +32 -0
  77. package/dist/text/text-shaper.js.map +1 -0
  78. package/package.json +3 -3
  79. package/dist/animation-adapter.d.ts.map +0 -1
  80. package/dist/animation-adapter.js.map +0 -1
  81. package/dist/built-in-renderers.d.ts +0 -25
  82. package/dist/built-in-renderers.d.ts.map +0 -1
  83. package/dist/built-in-renderers.js +0 -601
  84. package/dist/built-in-renderers.js.map +0 -1
  85. package/dist/dim-target.d.ts.map +0 -1
  86. package/dist/dim-target.js.map +0 -1
  87. package/dist/edge-cache-bitmap.d.ts.map +0 -1
  88. package/dist/edge-cache-bitmap.js.map +0 -1
  89. package/dist/edge-cache.d.ts.map +0 -1
  90. package/dist/edge-cache.js.map +0 -1
  91. package/dist/edge-renderer.d.ts.map +0 -1
  92. package/dist/edge-renderer.js.map +0 -1
  93. package/dist/grid-renderer.d.ts.map +0 -1
  94. package/dist/grid-renderer.js.map +0 -1
  95. package/dist/js-rasterizer.d.ts.map +0 -1
  96. package/dist/js-rasterizer.js.map +0 -1
  97. package/dist/layer-cache-composite.d.ts.map +0 -1
  98. package/dist/layer-cache-composite.js.map +0 -1
  99. package/dist/layers.d.ts.map +0 -1
  100. package/dist/layers.js.map +0 -1
  101. package/dist/lru-cache.d.ts.map +0 -1
  102. package/dist/lru-cache.js.map +0 -1
  103. package/dist/rasterizer.d.ts.map +0 -1
  104. package/dist/rasterizer.js.map +0 -1
  105. package/dist/render-target.d.ts.map +0 -1
  106. package/dist/render-target.js.map +0 -1
  107. package/dist/scene-renderer.d.ts.map +0 -1
  108. package/dist/scene-renderer.js.map +0 -1
  109. package/dist/shape-cache-bitmap.d.ts.map +0 -1
  110. package/dist/shape-cache-bitmap.js.map +0 -1
  111. package/dist/shape-cache.d.ts.map +0 -1
  112. package/dist/shape-cache.js.map +0 -1
  113. package/dist/shape-renderer.d.ts.map +0 -1
  114. package/dist/shape-renderer.js.map +0 -1
  115. package/dist/text-editing.d.ts.map +0 -1
  116. package/dist/text-editing.js.map +0 -1
  117. package/dist/text-layout.d.ts.map +0 -1
  118. package/dist/text-layout.js.map +0 -1
  119. package/dist/text-shaper.d.ts.map +0 -1
  120. package/dist/text-shaper.js +0 -16
  121. package/dist/text-shaper.js.map +0 -1
  122. package/dist/tile-renderer.d.ts.map +0 -1
  123. package/dist/tile-renderer.js.map +0 -1
  124. package/dist/wasm-bytes.d.ts.map +0 -1
  125. package/dist/wasm-bytes.js.map +0 -1
  126. /package/dist/{edge-cache-bitmap.d.ts → caches/edge-cache-bitmap.d.ts} +0 -0
  127. /package/dist/{edge-cache-bitmap.js → caches/edge-cache-bitmap.js} +0 -0
  128. /package/dist/{edge-cache.d.ts → caches/edge-cache.d.ts} +0 -0
  129. /package/dist/{edge-cache.js → caches/edge-cache.js} +0 -0
  130. /package/dist/{layer-cache-composite.d.ts → caches/layer-cache-composite.d.ts} +0 -0
  131. /package/dist/{layer-cache-composite.js → caches/layer-cache-composite.js} +0 -0
  132. /package/dist/{lru-cache.d.ts → caches/lru-cache.d.ts} +0 -0
  133. /package/dist/{lru-cache.js → caches/lru-cache.js} +0 -0
  134. /package/dist/{shape-cache-bitmap.d.ts → caches/shape-cache-bitmap.d.ts} +0 -0
  135. /package/dist/{shape-cache-bitmap.js → caches/shape-cache-bitmap.js} +0 -0
  136. /package/dist/{shape-cache.d.ts → caches/shape-cache.d.ts} +0 -0
  137. /package/dist/{shape-cache.js → caches/shape-cache.js} +0 -0
  138. /package/dist/{tile-renderer.d.ts → caches/tile-renderer.d.ts} +0 -0
  139. /package/dist/{tile-renderer.js → caches/tile-renderer.js} +0 -0
  140. /package/dist/{animation-adapter.d.ts → raster/animation-adapter.d.ts} +0 -0
  141. /package/dist/{animation-adapter.js → raster/animation-adapter.js} +0 -0
  142. /package/dist/{js-rasterizer.d.ts → raster/js-rasterizer.d.ts} +0 -0
  143. /package/dist/{js-rasterizer.js → raster/js-rasterizer.js} +0 -0
  144. /package/dist/{rasterizer.d.ts → raster/rasterizer.d.ts} +0 -0
  145. /package/dist/{rasterizer.js → raster/rasterizer.js} +0 -0
  146. /package/dist/{wasm-bytes.d.ts → raster/wasm-bytes.d.ts} +0 -0
  147. /package/dist/{wasm-bytes.js → raster/wasm-bytes.js} +0 -0
  148. /package/dist/{shape-renderer.js → rendering/shape-renderer.js} +0 -0
  149. /package/dist/{dim-target.d.ts → targets/dim-target.d.ts} +0 -0
  150. /package/dist/{dim-target.js → targets/dim-target.js} +0 -0
  151. /package/dist/{layers.d.ts → targets/layers.d.ts} +0 -0
  152. /package/dist/{layers.js → targets/layers.js} +0 -0
  153. /package/dist/{render-target.js → targets/render-target.js} +0 -0
  154. /package/dist/{text-layout.js → text/text-layout.js} +0 -0
@@ -1,601 +0,0 @@
1
- import { polygon as polygonMath } from "@oh-just-another/math";
2
- import { getCornerRadius, registerRenderOverflow, FRAME_HEADER_HEIGHT, FRAME_HEADER_PADDING_X, FRAME_HEADER_FONT_SIZE, sliceRuns, brushBodyColor, brushOutline, } from "@oh-just-another/scene";
3
- import { registerElementRenderer } from "./shape-renderer.js";
4
- import { layoutText } from "./text-editing.js";
5
- import { resolveImageSource } from "./animation-adapter.js";
6
- import { TEXT_DECORATION_THICKNESS, TEXT_UNDERLINE_OFFSET, TEXT_STRIKETHROUGH_OFFSET, ARROWHEAD_HEAD_RATIO, ARROWHEAD_BODY_THICKNESS, ARROWHEAD_RATIO_MIN, ARROWHEAD_RATIO_MAX, FRAME_STROKE_COLOR, FRAME_FILL_COLOR, FRAME_HEADER_BG_COLOR, FRAME_HEADER_TEXT_COLOR, } from "./constants.js";
7
- import { req } from "@oh-just-another/types";
8
- /**
9
- * Applies common style fields to a target. Returns whether any fill or stroke
10
- * was configured — shape renderers use the result to decide which paint call
11
- * to issue.
12
- */
13
- const applyStyle = (style, target) => {
14
- const hasFill = style.fill !== undefined && style.fill !== "transparent";
15
- const hasStroke = style.stroke !== undefined && style.stroke !== "transparent" && (style.strokeWidth ?? 1) > 0;
16
- if (hasFill)
17
- target.setFill(style.fill);
18
- if (hasStroke) {
19
- target.setStroke(style.stroke);
20
- target.setStrokeWidth(style.strokeWidth ?? 1);
21
- if (style.lineCap)
22
- target.setLineCap(style.lineCap);
23
- if (style.lineJoin)
24
- target.setLineJoin(style.lineJoin);
25
- if (style.dashArray)
26
- target.setDashArray(style.dashArray);
27
- }
28
- if (style.opacity !== undefined)
29
- target.setOpacity(style.opacity);
30
- return { fill: hasFill, stroke: hasStroke };
31
- };
32
- const drawRectangle = (shape, target) => {
33
- const { fill, stroke } = applyStyle(shape.style, target);
34
- if (!fill && !stroke)
35
- return;
36
- const r = getCornerRadius(shape.style.roundness, shape.width, shape.height);
37
- // Fill path — always uses the original shape geometry.
38
- if (fill) {
39
- target.beginPath();
40
- if (r > 0) {
41
- buildRoundedRectPath(target, 0, 0, shape.width, shape.height, r);
42
- }
43
- else {
44
- target.rect(0, 0, shape.width, shape.height);
45
- }
46
- target.fill();
47
- }
48
- // Stroke path — offset by `strokeAlign` so the stroke sits inside
49
- // / centred-on / outside the fill region. The default (omitted /
50
- // `center`) reuses the fill geometry. Implemented at this layer so
51
- // every backend (Canvas2D, WebGL2, SVG) honours strokeAlign without
52
- // backend-specific work — the math is purely on the rect bounds.
53
- if (stroke) {
54
- const offset = strokeAlignOffset(shape.style);
55
- const sx = offset;
56
- const sy = offset;
57
- const sw = shape.width - 2 * offset;
58
- const sh = shape.height - 2 * offset;
59
- if (sw <= 0 || sh <= 0)
60
- return; // degenerate offset — skip
61
- const sr = r > 0 ? Math.max(0, r - offset) : 0;
62
- target.beginPath();
63
- if (sr > 0) {
64
- buildRoundedRectPath(target, sx, sy, sw, sh, sr);
65
- }
66
- else {
67
- target.rect(sx, sy, sw, sh);
68
- }
69
- target.stroke();
70
- }
71
- };
72
- /**
73
- * Translate `Style.strokeAlign` into a path-offset distance in world
74
- * units. The rendered stroke geometry shifts by `±half-width` along
75
- * the inward / outward normal:
76
- * center → 0 (path centred — Canvas2D / SVG default).
77
- * inside → +half-width (path moves inward so the stroke's outer
78
- * edge sits on the original fill boundary).
79
- * outside → -half-width (path moves outward so the stroke's inner
80
- * edge sits on the boundary).
81
- *
82
- * Only used by axis-aligned primitives (rectangle, container) where
83
- * "inward" reduces to "subtract from bbox".
84
- */
85
- const strokeAlignOffset = (style) => {
86
- const align = style.strokeAlign ?? "center";
87
- if (align === "center")
88
- return 0;
89
- const half = (style.strokeWidth ?? 1) / 2;
90
- return align === "inside" ? half : -half;
91
- };
92
- /**
93
- * Build a rounded-rect path via the standard "4 corners with
94
- * quadratic Bezier arcs" pattern — same shape every backend
95
- * understands without a special `roundRect()` API:
96
- *
97
- * ┌───arc───┐
98
- * │ │
99
- * arc arc
100
- * │ │
101
- * └───arc───┘
102
- *
103
- * Quadratic control points sit at each corner of the rect; the
104
- * curve goes from `r` units along one side to `r` units along the
105
- * adjacent side.
106
- *
107
- * Radius `r` is pre-clamped by `getCornerRadius` to half the
108
- * smaller side, so no overlap-handling is needed here.
109
- */
110
- export const buildRoundedRectPath = (target, x, y, w, h, r) => {
111
- target.moveTo(x + r, y);
112
- target.lineTo(x + w - r, y);
113
- target.quadraticCurveTo(x + w, y, x + w, y + r);
114
- target.lineTo(x + w, y + h - r);
115
- target.quadraticCurveTo(x + w, y + h, x + w - r, y + h);
116
- target.lineTo(x + r, y + h);
117
- target.quadraticCurveTo(x, y + h, x, y + h - r);
118
- target.lineTo(x, y + r);
119
- target.quadraticCurveTo(x, y, x + r, y);
120
- target.closePath();
121
- };
122
- const drawEllipse = (shape, target) => {
123
- const { fill, stroke } = applyStyle(shape.style, target);
124
- if (!fill && !stroke)
125
- return;
126
- const rx = shape.width / 2;
127
- const ry = shape.height / 2;
128
- if (fill) {
129
- target.beginPath();
130
- target.ellipse(rx, ry, rx, ry);
131
- target.fill();
132
- }
133
- if (stroke) {
134
- // Inset / outset radii by `strokeAlignOffset` so the stroke
135
- // sits inside / centred-on / outside the fill ellipse. Centre
136
- // stays the same; radii shift uniformly. Degenerate (radius ≤ 0)
137
- // skips the pass.
138
- const offset = strokeAlignOffset(shape.style);
139
- const srx = rx - offset;
140
- const sry = ry - offset;
141
- if (srx <= 0 || sry <= 0)
142
- return;
143
- target.beginPath();
144
- target.ellipse(rx, ry, srx, sry);
145
- target.stroke();
146
- }
147
- };
148
- const drawPolygon = (shape, target) => {
149
- if (shape.points.length < 2)
150
- return;
151
- const { fill, stroke } = applyStyle(shape.style, target);
152
- if (!fill && !stroke)
153
- return;
154
- if (fill) {
155
- target.beginPath();
156
- polygonPath(target, shape.points);
157
- target.fill();
158
- }
159
- if (stroke) {
160
- const offset = strokeAlignOffset(shape.style);
161
- const pts = offset !== 0 ? polygonMath.offsetClosedPath(shape.points, offset) : shape.points;
162
- target.beginPath();
163
- polygonPath(target, pts);
164
- target.stroke();
165
- }
166
- };
167
- /** Emit a closed polygon outline as `moveTo` + `lineTo`s + `closePath`. */
168
- const polygonPath = (target, pts) => {
169
- const first = pts[0];
170
- if (first === undefined)
171
- return;
172
- target.moveTo(first.x, first.y);
173
- for (let i = 1; i < pts.length; i++) {
174
- const p = pts[i];
175
- if (p === undefined)
176
- continue;
177
- target.lineTo(p.x, p.y);
178
- }
179
- target.closePath();
180
- };
181
- const drawPath = (shape, target) => {
182
- if (shape.commands.length === 0)
183
- return;
184
- const { fill, stroke } = applyStyle(shape.style, target);
185
- if (!fill && !stroke)
186
- return;
187
- target.beginPath();
188
- for (const cmd of shape.commands) {
189
- switch (cmd.kind) {
190
- case "M":
191
- target.moveTo(cmd.to.x, cmd.to.y);
192
- break;
193
- case "L":
194
- target.lineTo(cmd.to.x, cmd.to.y);
195
- break;
196
- case "Q":
197
- target.quadraticCurveTo(cmd.control.x, cmd.control.y, cmd.to.x, cmd.to.y);
198
- break;
199
- case "C":
200
- target.bezierCurveTo(cmd.control1.x, cmd.control1.y, cmd.control2.x, cmd.control2.y, cmd.to.x, cmd.to.y);
201
- break;
202
- case "Z":
203
- target.closePath();
204
- break;
205
- }
206
- }
207
- if (fill)
208
- target.fill();
209
- if (stroke)
210
- target.stroke();
211
- };
212
- /**
213
- * Rich-text path: draw a text element whose glyphs carry per-run styling
214
- * (bold / italic / colour / decoration). Each visual line is split into
215
- * style segments (via `sliceRuns` against the line's source offsets) and each
216
- * segment is painted with its own font + fill at an accumulated x offset —
217
- * so it renders identically on Canvas2D, WebGL2 and SVG through the shared
218
- * `RenderTarget`. Line breaking uses the ELEMENT's base font metrics (matches
219
- * the plain-text path); per-run weight only affects glyph paint + segment
220
- * widths, an acceptable etap-1 approximation for wrapping.
221
- */
222
- const drawStyledText = (shape, target) => {
223
- const align = shape.style.textAlign ?? "left";
224
- const fontSize = shape.fontSize;
225
- target.setTextAlign("left");
226
- target.setTextBaseline(shape.style.textBaseline ?? "top");
227
- // Apply the resolved font for a run: run overlay wins, element style is
228
- // the fallback for any field the run omits.
229
- const setSegFont = (st) => {
230
- const weight = st?.fontWeight ?? shape.style.fontWeight;
231
- const style = st?.fontStyle ?? shape.style.fontStyle;
232
- target.setFont(shape.fontFamily, fontSize, {
233
- ...(weight ? { weight } : {}),
234
- ...(style ? { style } : {}),
235
- });
236
- };
237
- // Base-font line breaking — same metrics the plain path wraps with.
238
- setSegFont(undefined);
239
- const layout = layoutText(shape.text, (s) => target.measureText(s).width, {
240
- fontSize,
241
- ...(shape.maxWidth !== undefined ? { maxWidth: shape.maxWidth } : {}),
242
- });
243
- const perLine = layout.lines.map((line) => {
244
- const segs = sliceRuns(shape, line.start, line.end).map((r) => {
245
- setSegFont(r.style);
246
- return { text: r.text, style: r.style, width: target.measureText(r.text).width };
247
- });
248
- const total = segs.reduce((a, s) => a + s.width, 0);
249
- return { segs, total };
250
- });
251
- // Alignment box: fixed budget, or the widest STYLED line so bold text
252
- // stays self-consistently aligned.
253
- const blockWidth = shape.maxWidth ?? perLine.reduce((m, l) => Math.max(m, l.total), 0);
254
- const thickness = Math.max(1, fontSize * TEXT_DECORATION_THICKNESS);
255
- perLine.forEach((line, i) => {
256
- const top = i * layout.lineHeight;
257
- let x = align === "center"
258
- ? blockWidth / 2 - line.total / 2
259
- : align === "right"
260
- ? blockWidth - line.total
261
- : 0;
262
- for (const seg of line.segs) {
263
- const color = seg.style?.fill ?? shape.style.fill ?? "#000";
264
- const opacity = seg.style?.opacity ?? shape.style.opacity;
265
- setSegFont(seg.style);
266
- target.setFill(color);
267
- if (opacity !== undefined)
268
- target.setOpacity(opacity);
269
- target.fillText(seg.text, x, top);
270
- const deco = seg.style?.textDecoration ?? shape.style.textDecoration;
271
- if (seg.width > 0 && (deco?.underline || deco?.strikethrough)) {
272
- if (deco.underline) {
273
- target.beginPath();
274
- target.rect(x, top + fontSize * TEXT_UNDERLINE_OFFSET, seg.width, thickness);
275
- target.fill();
276
- }
277
- if (deco.strikethrough) {
278
- target.beginPath();
279
- target.rect(x, top + fontSize * TEXT_STRIKETHROUGH_OFFSET - thickness / 2, seg.width, thickness);
280
- target.fill();
281
- }
282
- }
283
- x += seg.width;
284
- }
285
- });
286
- };
287
- const drawText = (shape, target) => {
288
- // Rich text (styled runs) takes a dedicated path; plain text keeps the
289
- // original single-style path byte-for-byte (golden-SVG compatible).
290
- if (shape.runs !== undefined && shape.runs.length > 0) {
291
- drawStyledText(shape, target);
292
- return;
293
- }
294
- const align = shape.style.textAlign ?? "left";
295
- const weight = shape.style.fontWeight;
296
- const fontStyle = shape.style.fontStyle;
297
- target.setFont(shape.fontFamily, shape.fontSize, {
298
- ...(weight ? { weight } : {}),
299
- ...(fontStyle ? { style: fontStyle } : {}),
300
- });
301
- // Lines are positioned manually (per-line x below) so the caret
302
- // geometry computed from the same `layoutText` lines up exactly, so
303
- // the target always draws left-anchored.
304
- target.setTextAlign("left");
305
- target.setTextBaseline(shape.style.textBaseline ?? "top");
306
- // Color: use fill if specified, otherwise default to black.
307
- const color = shape.style.fill ?? "#000";
308
- target.setFill(color);
309
- if (shape.style.opacity !== undefined)
310
- target.setOpacity(shape.style.opacity);
311
- // Resolve per-line geometry once (x = align offset, top = i ×
312
- // lineHeight). Single-line text skips the wrap engine.
313
- const fontSize = shape.fontSize;
314
- let lines;
315
- if (shape.maxWidth === undefined && !shape.text.includes("\n")) {
316
- lines = [{ text: shape.text, x: 0, width: target.measureText(shape.text).width, top: 0 }];
317
- }
318
- else {
319
- // Measure with the target's own `measureText` so wrapping matches
320
- // exactly what this backend draws.
321
- const measure = (s) => target.measureText(s).width;
322
- const layout = layoutText(shape.text, measure, {
323
- fontSize,
324
- ...(shape.maxWidth !== undefined ? { maxWidth: shape.maxWidth } : {}),
325
- });
326
- lines = layout.lines.map((line, i) => ({
327
- text: line.text,
328
- x: align === "center"
329
- ? layout.blockWidth / 2 - line.width / 2
330
- : align === "right"
331
- ? layout.blockWidth - line.width
332
- : 0,
333
- width: line.width,
334
- top: i * layout.lineHeight,
335
- }));
336
- }
337
- for (const l of lines)
338
- target.fillText(l.text, l.x, l.top);
339
- // Underline / strikethrough — thin filled rects per line, same on
340
- // Canvas2D and WebGL2 (uses the current text fill colour).
341
- const deco = shape.style.textDecoration;
342
- if (deco?.underline || deco?.strikethrough) {
343
- const thickness = Math.max(1, fontSize * TEXT_DECORATION_THICKNESS);
344
- for (const l of lines) {
345
- if (l.width <= 0)
346
- continue;
347
- if (deco.underline) {
348
- target.beginPath();
349
- target.rect(l.x, l.top + fontSize * TEXT_UNDERLINE_OFFSET, l.width, thickness);
350
- target.fill();
351
- }
352
- if (deco.strikethrough) {
353
- target.beginPath();
354
- target.rect(l.x, l.top + fontSize * TEXT_STRIKETHROUGH_OFFSET - thickness / 2, l.width, thickness);
355
- target.fill();
356
- }
357
- }
358
- }
359
- };
360
- /**
361
- * Variable-width brush stroke. Each segment between two `BrushPoint`s
362
- * is drawn as a quad (two triangles) — its width interpolates from
363
- * `p.width` at the head to `q.width` at the tail. Renders
364
- * pressure-sensitive ink that gets thicker / thinner along the path
365
- * without needing per-segment `setStrokeWidth` calls (which most 2D
366
- * APIs treat as a single line width).
367
- */
368
- const drawBrush = (shape, target) => {
369
- const pts = shape.points;
370
- if (pts.length === 0)
371
- return;
372
- // Honour the stroke's opacity (drawBrush paints fills directly, so it can't
373
- // rely on the shared `applyStyle` the other renderers use). Set once up front
374
- // so both the enclosed-area fill and the body get it; the scene renderer resets
375
- // opacity to 1 between shapes.
376
- if (shape.style.opacity !== undefined)
377
- target.setOpacity(shape.style.opacity);
378
- // Closed stroke with a fill colour: paint the enclosed area FIRST (under the
379
- // stroke body) as a polygon through the centreline points. Needs ≥3 points to
380
- // enclose an area. Open strokes skip this entirely and are unchanged.
381
- if (shape.closed === true && shape.style.fill !== undefined && pts.length >= 3) {
382
- target.setFill(shape.style.fill);
383
- target.setStroke(null);
384
- target.beginPath();
385
- const start = req(pts[0]);
386
- target.moveTo(start.x, start.y);
387
- for (let i = 1; i < pts.length; i++) {
388
- const p = req(pts[i]);
389
- target.lineTo(p.x, p.y);
390
- }
391
- target.closePath();
392
- target.fill();
393
- }
394
- // The variable-width stroke body is painted with the shared brush-body colour
395
- // (the same resolution the live preview uses — see `brushBodyColor`).
396
- const paint = brushBodyColor(shape.style);
397
- target.setFill(paint);
398
- target.setStroke(null);
399
- // Single dot for one-point strokes — degenerate quad would be invisible.
400
- if (pts.length === 1) {
401
- const p = req(pts[0]);
402
- target.beginPath();
403
- target.ellipse(p.x, p.y, p.width, p.width);
404
- target.fill();
405
- return;
406
- }
407
- // Body as ONE closed outline polygon, filled once. Per-segment quads + joint
408
- // discs (the old approach) overlap, so at `opacity < 1` the joins double-blend
409
- // into dark blotches; a single fill paints every pixel exactly once.
410
- const outline = brushOutline(pts);
411
- if (outline.length >= 3) {
412
- target.beginPath();
413
- const first = req(outline[0]);
414
- target.moveTo(first.x, first.y);
415
- for (let i = 1; i < outline.length; i++) {
416
- const p = req(outline[i]);
417
- target.lineTo(p.x, p.y);
418
- }
419
- target.closePath();
420
- target.fill();
421
- }
422
- };
423
- const drawImage = (shape, target, ctx) => {
424
- // Priority: for an animated source prefer the per-frame image the
425
- // registered adapter returns; otherwise a preloaded handle in
426
- // `metadata.image`; otherwise the static `src` fallback.
427
- // `resolveImageSource` returns `null` while an async decode is still
428
- // in flight, which the backend's drawImage guard skips.
429
- // Sample at the per-instance clock when the caller threaded one via the
430
- // render context; `undefined` defers to `resolveImageSource`'s process-global
431
- // fallback clock (headless / preview paths).
432
- const t = ctx?.clock?.(shape);
433
- const handle = shape.animationKind
434
- ? resolveImageSource(shape, t)
435
- : (shape.metadata?.image ?? resolveImageSource(shape, t));
436
- // `dynamic` → backends that cache the upload (WebGL2) re-upload the
437
- // current frame. GIF / video sources flag `metadata.animated`, and
438
- // any adapter-driven source is dynamic by definition.
439
- const dynamic = shape.metadata?.animated === true || shape.animationKind !== undefined;
440
- target.drawImage(handle, 0, 0, shape.width, shape.height, dynamic, shape.crop);
441
- };
442
- /**
443
- * Registers renderers for every `BuiltinElement` type.
444
- */
445
- export const installBuiltinRenderers = () => {
446
- registerElementRenderer("rectangle", drawRectangle);
447
- registerElementRenderer("ellipse", drawEllipse);
448
- registerElementRenderer("polygon", drawPolygon);
449
- registerElementRenderer("path", drawPath);
450
- registerElementRenderer("text", drawText);
451
- registerElementRenderer("image", drawImage);
452
- // Group shapes are invisible containers — the shape itself paints nothing.
453
- registerElementRenderer("group", () => {
454
- /* intentional no-op: group shapes are invisible containers and paint nothing */
455
- });
456
- registerElementRenderer("frame", drawFrame);
457
- // The frame paints its header strip ABOVE the rectangle, so its dirty
458
- // region must extend up by the header height — otherwise deleting a
459
- // frame leaves the header behind.
460
- registerRenderOverflow("frame", () => ({ top: FRAME_HEADER_HEIGHT }));
461
- registerElementRenderer("block-arrow", drawBlockArrow);
462
- registerElementRenderer("brush", drawBrush);
463
- };
464
- /**
465
- * Block-arrow silhouette: a rectangle body whose tip is replaced
466
- * by a triangle, oriented by `direction`. Path is closed and filled
467
- * with `style.fill`; stroke applies to the outline.
468
- *
469
- * right → ┌────┐▶
470
- * │ body │
471
- * └────┘
472
- *
473
- * up ↑ ▲
474
- * ┌──┐
475
- * │ │
476
- * └──┘
477
- */
478
- const drawBlockArrow = (shape, target) => {
479
- const { fill, stroke } = applyStyle(shape.style, target);
480
- const direction = shape.direction ?? "right";
481
- const headRatio = Math.max(ARROWHEAD_RATIO_MIN, Math.min(ARROWHEAD_RATIO_MAX, shape.headRatio ?? ARROWHEAD_HEAD_RATIO));
482
- const bodyT = Math.max(ARROWHEAD_RATIO_MIN, Math.min(ARROWHEAD_RATIO_MAX, shape.bodyThickness ?? ARROWHEAD_BODY_THICKNESS));
483
- const w = shape.width;
484
- const h = shape.height;
485
- // Compute the local path for a `right`-pointing arrow inside
486
- // [0, w] × [0, h], then rotate the resulting points if the
487
- // direction is different. Keeps the drawing primitives in one
488
- // place.
489
- const headW = w * headRatio;
490
- const bodyW = w - headW;
491
- const bodyHalfH = (h * bodyT) / 2;
492
- const cy = h / 2;
493
- let points = [
494
- [0, cy - bodyHalfH],
495
- [bodyW, cy - bodyHalfH],
496
- [bodyW, 0],
497
- [w, cy],
498
- [bodyW, h],
499
- [bodyW, cy + bodyHalfH],
500
- [0, cy + bodyHalfH],
501
- ];
502
- if (direction !== "right") {
503
- points = points.map(([x, y]) => rotateLocal([x, y], direction, w, h));
504
- }
505
- const ptObjs = points.map(([x, y]) => ({ x, y }));
506
- if (fill) {
507
- target.beginPath();
508
- polygonPath(target, ptObjs);
509
- target.fill();
510
- }
511
- if (stroke) {
512
- const offset = strokeAlignOffset(shape.style);
513
- const sPts = offset !== 0 ? polygonMath.offsetClosedPath(ptObjs, offset) : ptObjs;
514
- target.beginPath();
515
- polygonPath(target, sPts);
516
- target.stroke();
517
- }
518
- };
519
- const rotateLocal = ([x, y], direction, w, h) => {
520
- switch (direction) {
521
- case "left":
522
- return [w - x, y];
523
- case "up":
524
- // Rotate 90° CCW around the box centre, then translate so the
525
- // result still fits inside [0, w] × [0, h].
526
- return [y * (w / h), h - x * (h / w)];
527
- case "down":
528
- return [(h - y) * (w / h), x * (h / w)];
529
- }
530
- };
531
- const FRAME_HEADER_ELLIPSIS = "…";
532
- /**
533
- * Trim `text` with a trailing ellipsis until it fits `maxWidth` (in the
534
- * font already set on `target`). Returns the full text when it fits, the
535
- * longest prefix + "…" otherwise, or just "…" when even one char can't
536
- * fit. Binary-searches the prefix length to keep `measureText` calls ~log.
537
- */
538
- const ellipsizeToWidth = (text, maxWidth, target) => {
539
- if (maxWidth <= 0)
540
- return "";
541
- if (target.measureText(text).width <= maxWidth)
542
- return text;
543
- let lo = 0;
544
- let hi = text.length;
545
- while (lo < hi) {
546
- const mid = Math.ceil((lo + hi) / 2);
547
- const w = target.measureText(text.slice(0, mid) + FRAME_HEADER_ELLIPSIS).width;
548
- if (w <= maxWidth)
549
- lo = mid;
550
- else
551
- hi = mid - 1;
552
- }
553
- return lo > 0 ? text.slice(0, lo) + FRAME_HEADER_ELLIPSIS : FRAME_HEADER_ELLIPSIS;
554
- };
555
- const drawFrame = (shape, target, ctx) => {
556
- // Body — solid fill + thin solid outline. Frames sit at the bottom
557
- // z-order, so the fill backs their members without covering them.
558
- // Honours an explicit `style.fill`, else default white.
559
- target.setFill(shape.style.fill ?? FRAME_FILL_COLOR);
560
- target.setStroke(null);
561
- target.setDashArray(null);
562
- target.beginPath();
563
- target.rect(0, 0, shape.width, shape.height);
564
- target.fill();
565
- // Outline on top of the fill — a 1px SCREEN-constant hairline (doesn't scale
566
- // with zoom). The renderer draws in local coords where 1 unit = zoom × scale
567
- // device px, so divide to keep the stroke at one device pixel. Falls back to
568
- // 1 world-px when no zoom context is supplied (preview / export at 1:1).
569
- const screenScale = (ctx?.zoom ?? 1) * (shape.scale.x || 1);
570
- target.setFill(null);
571
- target.setStroke(FRAME_STROKE_COLOR);
572
- target.setStrokeWidth(1 / (screenScale || 1));
573
- target.setDashArray(null);
574
- target.beginPath();
575
- target.rect(0, 0, shape.width, shape.height);
576
- target.stroke();
577
- // Header label: the strip hugs the text width but never exceeds the
578
- // frame's right edge; a name too long for the frame is ellipsised.
579
- const name = shape.name ?? "Frame";
580
- target.setFont("system-ui, sans-serif", FRAME_HEADER_FONT_SIZE);
581
- const avail = shape.width - FRAME_HEADER_PADDING_X * 2;
582
- const fits = target.measureText(name).width <= avail;
583
- // Fits → the strip hugs the text. Too long → ellipsise the text and
584
- // stretch the strip to the frame's full width (the label runs to the
585
- // right edge).
586
- const label = fits ? name : ellipsizeToWidth(name, avail, target);
587
- const headerWidth = fits
588
- ? Math.min(target.measureText(name).width + FRAME_HEADER_PADDING_X * 2, shape.width)
589
- : shape.width;
590
- // Header label background — stretches to fit the (possibly truncated) text.
591
- target.setFill(FRAME_HEADER_BG_COLOR);
592
- target.beginPath();
593
- target.rect(0, -FRAME_HEADER_HEIGHT, headerWidth, FRAME_HEADER_HEIGHT);
594
- target.fill();
595
- // Header label text.
596
- target.setFill(FRAME_HEADER_TEXT_COLOR);
597
- target.setTextBaseline("middle");
598
- target.setTextAlign("left");
599
- target.fillText(label, FRAME_HEADER_PADDING_X, -FRAME_HEADER_HEIGHT / 2);
600
- };
601
- //# sourceMappingURL=built-in-renderers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"built-in-renderers.js","sourceRoot":"","sources":["../src/built-in-renderers.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dim-target.d.ts","sourceRoot":"","sources":["../src/dim-target.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,YAAY,EAAE,QAAQ,MAAM,KAAG,YAiBrE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dim-target.js","sourceRoot":"","sources":["../src/dim-target.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAmB,EAAE,MAAc,EAAgB,EAAE;IACnF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,MAAM,gBAAgB,GAAG,CAAC,CAAS,EAAQ,EAAE;QAC3C,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC;IACF,MAAM,OAAO,GAA+B;QAC1C,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,KAAK,YAAY;gBAAE,OAAO,gBAAgB,CAAC;YACnD,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAsC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7F,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC1B,OAAO,QAAQ,CAAC;QAClB,CAAC;KACF,CAAC;IACF,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-cache-bitmap.d.ts","sourceRoot":"","sources":["../src/edge-cache-bitmap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAGnD;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS,CAAC;IACnD,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACpD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;IACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AASD,qBAAa,uBAAuB,CAAC,CAAC,CAAE,YAAW,eAAe,CAAC,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;gBAEzC,GAAG,SAAM;IAIrB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAWlD,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAInD,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAI5C,KAAK,IAAI,IAAI;CAGd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-cache-bitmap.js","sourceRoot":"","sources":["../src/edge-cache-bitmap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA+B1C,MAAM,MAAM,GAAG,CAAC,IAAU,EAAE,UAAkB,EAAU,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,UAAU,EAAE,CAAC;AAEtF,MAAM,OAAO,uBAAuB;IACjB,OAAO,CAA6B;IAErD,YAAY,GAAG,GAAG,GAAG;QACnB,IAAI,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,GAAG,CAAC,IAAU,EAAE,UAAkB;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QACzB,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,IAAU,EAAE,UAAkB,EAAE,KAAQ;QAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,CAAC,IAAU,EAAE,UAAkB;QACnC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edge-cache.d.ts","sourceRoot":"","sources":["../src/edge-cache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,KAAK,EACX,MAAM,wBAAwB,CAAC;AAEhC;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGpB;IAEJ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS;IAUxD,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI;IAKlE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI;IAMrD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,KAAK,IAAI,IAAI;IAIb,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMzB,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,OAAO,KAAK,EAAE,MAAM,IAAI,KAAG,MAAM,GAAG,IAyC1E,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAAuC,CAAC"}