@swf2es/player 0.1.0 → 0.1.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 (277) hide show
  1. package/package.json +7 -7
  2. package/dist/audio.d.ts +0 -22
  3. package/dist/audio.d.ts.map +0 -1
  4. package/dist/audio.js +0 -106
  5. package/dist/audio.js.map +0 -1
  6. package/dist/bitmap-filters.d.ts +0 -29
  7. package/dist/bitmap-filters.d.ts.map +0 -1
  8. package/dist/bitmap-filters.js +0 -906
  9. package/dist/bitmap-filters.js.map +0 -1
  10. package/dist/bitmap-ops.d.ts +0 -113
  11. package/dist/bitmap-ops.d.ts.map +0 -1
  12. package/dist/bitmap-ops.js +0 -725
  13. package/dist/bitmap-ops.js.map +0 -1
  14. package/dist/bitmap.d.ts +0 -98
  15. package/dist/bitmap.d.ts.map +0 -1
  16. package/dist/bitmap.js +0 -314
  17. package/dist/bitmap.js.map +0 -1
  18. package/dist/bounds.d.ts +0 -26
  19. package/dist/bounds.d.ts.map +0 -1
  20. package/dist/bounds.js +0 -300
  21. package/dist/bounds.js.map +0 -1
  22. package/dist/color.d.ts +0 -7
  23. package/dist/color.d.ts.map +0 -1
  24. package/dist/color.js +0 -42
  25. package/dist/color.js.map +0 -1
  26. package/dist/display.d.ts +0 -425
  27. package/dist/display.d.ts.map +0 -1
  28. package/dist/display.js +0 -1274
  29. package/dist/display.js.map +0 -1
  30. package/dist/drawing.d.ts +0 -52
  31. package/dist/drawing.d.ts.map +0 -1
  32. package/dist/drawing.js +0 -204
  33. package/dist/drawing.js.map +0 -1
  34. package/dist/filters.d.ts +0 -54
  35. package/dist/filters.d.ts.map +0 -1
  36. package/dist/filters.js +0 -155
  37. package/dist/filters.js.map +0 -1
  38. package/dist/fonts.d.ts +0 -23
  39. package/dist/fonts.d.ts.map +0 -1
  40. package/dist/fonts.js +0 -91
  41. package/dist/fonts.js.map +0 -1
  42. package/dist/geometry.d.ts +0 -21
  43. package/dist/geometry.d.ts.map +0 -1
  44. package/dist/geometry.js +0 -76
  45. package/dist/geometry.js.map +0 -1
  46. package/dist/gradients.d.ts +0 -29
  47. package/dist/gradients.d.ts.map +0 -1
  48. package/dist/gradients.js +0 -116
  49. package/dist/gradients.js.map +0 -1
  50. package/dist/images.d.ts +0 -22
  51. package/dist/images.d.ts.map +0 -1
  52. package/dist/images.js +0 -147
  53. package/dist/images.js.map +0 -1
  54. package/dist/input.d.ts +0 -79
  55. package/dist/input.d.ts.map +0 -1
  56. package/dist/input.js +0 -366
  57. package/dist/input.js.map +0 -1
  58. package/dist/keyboard.d.ts +0 -97
  59. package/dist/keyboard.d.ts.map +0 -1
  60. package/dist/keyboard.js +0 -583
  61. package/dist/keyboard.js.map +0 -1
  62. package/dist/morph.d.ts +0 -17
  63. package/dist/morph.d.ts.map +0 -1
  64. package/dist/morph.js +0 -218
  65. package/dist/morph.js.map +0 -1
  66. package/dist/pixi-blend.d.ts +0 -7
  67. package/dist/pixi-blend.d.ts.map +0 -1
  68. package/dist/pixi-blend.js +0 -253
  69. package/dist/pixi-blend.js.map +0 -1
  70. package/dist/pixi-color.d.ts +0 -54
  71. package/dist/pixi-color.d.ts.map +0 -1
  72. package/dist/pixi-color.js +0 -336
  73. package/dist/pixi-color.js.map +0 -1
  74. package/dist/pixi-filters.d.ts +0 -40
  75. package/dist/pixi-filters.d.ts.map +0 -1
  76. package/dist/pixi-filters.js +0 -953
  77. package/dist/pixi-filters.js.map +0 -1
  78. package/dist/pixi-resolve.d.ts +0 -4
  79. package/dist/pixi-resolve.d.ts.map +0 -1
  80. package/dist/pixi-resolve.js +0 -76
  81. package/dist/pixi-resolve.js.map +0 -1
  82. package/dist/pixi.d.ts +0 -219
  83. package/dist/pixi.d.ts.map +0 -1
  84. package/dist/pixi.js +0 -2169
  85. package/dist/pixi.js.map +0 -1
  86. package/dist/playerglobal/flash/filters/filters.d.ts +0 -26
  87. package/dist/playerglobal/flash/filters/filters.d.ts.map +0 -1
  88. package/dist/playerglobal/flash/filters/filters.js +0 -287
  89. package/dist/playerglobal/flash/filters/filters.js.map +0 -1
  90. package/dist/playerglobal/flash/system/FSCommand.d.ts +0 -4
  91. package/dist/playerglobal/flash/system/FSCommand.d.ts.map +0 -1
  92. package/dist/playerglobal/flash/system/FSCommand.js +0 -18
  93. package/dist/playerglobal/flash/system/FSCommand.js.map +0 -1
  94. package/dist/playerglobal/natives.d.ts +0 -10
  95. package/dist/playerglobal/natives.d.ts.map +0 -1
  96. package/dist/playerglobal/natives.js +0 -53
  97. package/dist/playerglobal/natives.js.map +0 -1
  98. package/dist/png.d.ts +0 -4
  99. package/dist/png.d.ts.map +0 -1
  100. package/dist/png.js +0 -140
  101. package/dist/png.js.map +0 -1
  102. package/dist/render/art.d.ts +0 -148
  103. package/dist/render/art.d.ts.map +0 -1
  104. package/dist/render/art.js +0 -575
  105. package/dist/render/art.js.map +0 -1
  106. package/dist/render/batchers.d.ts +0 -23
  107. package/dist/render/batchers.d.ts.map +0 -1
  108. package/dist/render/batchers.js +0 -52
  109. package/dist/render/batchers.js.map +0 -1
  110. package/dist/render/bitmaps.d.ts +0 -117
  111. package/dist/render/bitmaps.d.ts.map +0 -1
  112. package/dist/render/bitmaps.js +0 -422
  113. package/dist/render/bitmaps.js.map +0 -1
  114. package/dist/render/blend.d.ts +0 -37
  115. package/dist/render/blend.d.ts.map +0 -1
  116. package/dist/render/blend.js +0 -195
  117. package/dist/render/blend.js.map +0 -1
  118. package/dist/render/color.d.ts +0 -111
  119. package/dist/render/color.d.ts.map +0 -1
  120. package/dist/render/color.js +0 -533
  121. package/dist/render/color.js.map +0 -1
  122. package/dist/render/compositing.d.ts +0 -77
  123. package/dist/render/compositing.d.ts.map +0 -1
  124. package/dist/render/compositing.js +0 -188
  125. package/dist/render/compositing.js.map +0 -1
  126. package/dist/render/filters.d.ts +0 -98
  127. package/dist/render/filters.d.ts.map +0 -1
  128. package/dist/render/filters.js +0 -1326
  129. package/dist/render/filters.js.map +0 -1
  130. package/dist/render/hooks.d.ts +0 -4
  131. package/dist/render/hooks.d.ts.map +0 -1
  132. package/dist/render/hooks.js +0 -48
  133. package/dist/render/hooks.js.map +0 -1
  134. package/dist/render/node.d.ts +0 -139
  135. package/dist/render/node.d.ts.map +0 -1
  136. package/dist/render/node.js +0 -59
  137. package/dist/render/node.js.map +0 -1
  138. package/dist/render/patches.d.ts +0 -54
  139. package/dist/render/patches.d.ts.map +0 -1
  140. package/dist/render/patches.js +0 -154
  141. package/dist/render/patches.js.map +0 -1
  142. package/dist/render/planes.d.ts +0 -74
  143. package/dist/render/planes.d.ts.map +0 -1
  144. package/dist/render/planes.js +0 -267
  145. package/dist/render/planes.js.map +0 -1
  146. package/dist/render/pointer.d.ts +0 -5
  147. package/dist/render/pointer.d.ts.map +0 -1
  148. package/dist/render/pointer.js +0 -279
  149. package/dist/render/pointer.js.map +0 -1
  150. package/dist/render/pools.d.ts +0 -122
  151. package/dist/render/pools.d.ts.map +0 -1
  152. package/dist/render/pools.js +0 -238
  153. package/dist/render/pools.js.map +0 -1
  154. package/dist/render/resolve.d.ts +0 -4
  155. package/dist/render/resolve.d.ts.map +0 -1
  156. package/dist/render/resolve.js +0 -76
  157. package/dist/render/resolve.js.map +0 -1
  158. package/dist/render/saffron.d.ts +0 -135
  159. package/dist/render/saffron.d.ts.map +0 -1
  160. package/dist/render/saffron.js +0 -725
  161. package/dist/render/saffron.js.map +0 -1
  162. package/dist/render/settle.d.ts +0 -60
  163. package/dist/render/settle.d.ts.map +0 -1
  164. package/dist/render/settle.js +0 -128
  165. package/dist/render/settle.js.map +0 -1
  166. package/dist/render/shared.d.ts +0 -25
  167. package/dist/render/shared.d.ts.map +0 -1
  168. package/dist/render/shared.js +0 -33
  169. package/dist/render/shared.js.map +0 -1
  170. package/dist/render/snapshot.d.ts +0 -21
  171. package/dist/render/snapshot.d.ts.map +0 -1
  172. package/dist/render/snapshot.js +0 -91
  173. package/dist/render/snapshot.js.map +0 -1
  174. package/dist/render/spares.d.ts +0 -56
  175. package/dist/render/spares.d.ts.map +0 -1
  176. package/dist/render/spares.js +0 -160
  177. package/dist/render/spares.js.map +0 -1
  178. package/dist/render/strokes.d.ts +0 -107
  179. package/dist/render/strokes.d.ts.map +0 -1
  180. package/dist/render/strokes.js +0 -448
  181. package/dist/render/strokes.js.map +0 -1
  182. package/dist/render/table.d.ts +0 -213
  183. package/dist/render/table.d.ts.map +0 -1
  184. package/dist/render/table.js +0 -795
  185. package/dist/render/table.js.map +0 -1
  186. package/dist/render/tessellate.d.ts +0 -89
  187. package/dist/render/tessellate.d.ts.map +0 -1
  188. package/dist/render/tessellate.js +0 -386
  189. package/dist/render/tessellate.js.map +0 -1
  190. package/dist/render/text.d.ts +0 -40
  191. package/dist/render/text.d.ts.map +0 -1
  192. package/dist/render/text.js +0 -309
  193. package/dist/render/text.js.map +0 -1
  194. package/dist/render/three.d.ts +0 -83
  195. package/dist/render/three.d.ts.map +0 -1
  196. package/dist/render/three.js +0 -511
  197. package/dist/render/three.js.map +0 -1
  198. package/dist/render/triangles.d.ts +0 -28
  199. package/dist/render/triangles.d.ts.map +0 -1
  200. package/dist/render/triangles.js +0 -189
  201. package/dist/render/triangles.js.map +0 -1
  202. package/dist/render/view.d.ts +0 -238
  203. package/dist/render/view.d.ts.map +0 -1
  204. package/dist/render/view.js +0 -1173
  205. package/dist/render/view.js.map +0 -1
  206. package/dist/render/worker/bitmaps.d.ts +0 -43
  207. package/dist/render/worker/bitmaps.d.ts.map +0 -1
  208. package/dist/render/worker/bitmaps.js +0 -151
  209. package/dist/render/worker/bitmaps.js.map +0 -1
  210. package/dist/render/worker/drawing.d.ts +0 -21
  211. package/dist/render/worker/drawing.d.ts.map +0 -1
  212. package/dist/render/worker/drawing.js +0 -356
  213. package/dist/render/worker/drawing.js.map +0 -1
  214. package/dist/render/worker/filters.d.ts +0 -7
  215. package/dist/render/worker/filters.d.ts.map +0 -1
  216. package/dist/render/worker/filters.js +0 -125
  217. package/dist/render/worker/filters.js.map +0 -1
  218. package/dist/render/worker/frames.d.ts +0 -32
  219. package/dist/render/worker/frames.d.ts.map +0 -1
  220. package/dist/render/worker/frames.js +0 -124
  221. package/dist/render/worker/frames.js.map +0 -1
  222. package/dist/render/worker/host.d.ts +0 -60
  223. package/dist/render/worker/host.d.ts.map +0 -1
  224. package/dist/render/worker/host.js +0 -297
  225. package/dist/render/worker/host.js.map +0 -1
  226. package/dist/render/worker/libraries.d.ts +0 -36
  227. package/dist/render/worker/libraries.d.ts.map +0 -1
  228. package/dist/render/worker/libraries.js +0 -153
  229. package/dist/render/worker/libraries.js.map +0 -1
  230. package/dist/render/worker/presentation.d.ts +0 -18
  231. package/dist/render/worker/presentation.d.ts.map +0 -1
  232. package/dist/render/worker/presentation.js +0 -47
  233. package/dist/render/worker/presentation.js.map +0 -1
  234. package/dist/render/worker/renderer.d.ts +0 -4
  235. package/dist/render/worker/renderer.d.ts.map +0 -1
  236. package/dist/render/worker/renderer.js +0 -21
  237. package/dist/render/worker/renderer.js.map +0 -1
  238. package/dist/render/worker/scene.d.ts +0 -32
  239. package/dist/render/worker/scene.d.ts.map +0 -1
  240. package/dist/render/worker/scene.js +0 -611
  241. package/dist/render/worker/scene.js.map +0 -1
  242. package/dist/render/worker/text.d.ts +0 -47
  243. package/dist/render/worker/text.d.ts.map +0 -1
  244. package/dist/render/worker/text.js +0 -261
  245. package/dist/render/worker/text.js.map +0 -1
  246. package/dist/render/worker/thread.d.ts +0 -23
  247. package/dist/render/worker/thread.d.ts.map +0 -1
  248. package/dist/render/worker/thread.js +0 -107
  249. package/dist/render/worker/thread.js.map +0 -1
  250. package/dist/render/worker/values.d.ts +0 -18
  251. package/dist/render/worker/values.d.ts.map +0 -1
  252. package/dist/render/worker/values.js +0 -64
  253. package/dist/render/worker/values.js.map +0 -1
  254. package/dist/sha256.d.ts +0 -5
  255. package/dist/sha256.d.ts.map +0 -1
  256. package/dist/sha256.js +0 -96
  257. package/dist/sha256.js.map +0 -1
  258. package/dist/shapes.d.ts +0 -71
  259. package/dist/shapes.d.ts.map +0 -1
  260. package/dist/shapes.js +0 -340
  261. package/dist/shapes.js.map +0 -1
  262. package/dist/static-text.d.ts +0 -33
  263. package/dist/static-text.d.ts.map +0 -1
  264. package/dist/static-text.js +0 -105
  265. package/dist/static-text.js.map +0 -1
  266. package/dist/text-layout.d.ts +0 -66
  267. package/dist/text-layout.d.ts.map +0 -1
  268. package/dist/text-layout.js +0 -315
  269. package/dist/text-layout.js.map +0 -1
  270. package/dist/text.d.ts +0 -67
  271. package/dist/text.d.ts.map +0 -1
  272. package/dist/text.js +0 -383
  273. package/dist/text.js.map +0 -1
  274. package/dist/timeline.d.ts +0 -150
  275. package/dist/timeline.d.ts.map +0 -1
  276. package/dist/timeline.js +0 -266
  277. package/dist/timeline.js.map +0 -1
@@ -1,105 +0,0 @@
1
- import { flatten, inside, shapeLayers } from "./shapes.js";
2
- /**
3
- * The text's glyphs as placed, each record keeping what the one before set,
4
- * transparent and at the origin until one sets it, as adl draws a text that
5
- * sets no colour as nothing. A glyph of a font the SWF lacks, of none, or
6
- * past its font's glyphs, is not drawn and does not move the pen. `text` is
7
- * the glyphs' characters, a line feed before a record's first where its
8
- * line is not the last glyph's, as adl reads it; null where a glyph has no
9
- * font, or there are none. (adl reads a glyph past its font as some other
10
- * character; the player reads the text as null.)
11
- */
12
- export function placeGlyphs(character, characters) {
13
- const glyphs = [];
14
- const chars = [];
15
- let unknown = false;
16
- let font = null;
17
- let color = 0;
18
- let height = 0;
19
- let x = 0;
20
- let y = 0;
21
- let lineY = null;
22
- for (const record of character.definition.records) {
23
- if (record.font !== null) {
24
- const c = characters.get(record.font);
25
- font = c?.type === "font" ? c.font : null;
26
- height = record.height ?? height;
27
- }
28
- color = record.color ?? color;
29
- x = record.x ?? x;
30
- y = record.y ?? y;
31
- for (const { index, advance } of record.glyphs) {
32
- const glyph = font?.glyphs[index];
33
- if (!font || !glyph) {
34
- unknown = true;
35
- continue;
36
- }
37
- if (lineY !== null && lineY !== y) {
38
- chars.push("\n");
39
- }
40
- lineY = y;
41
- glyphs.push({ font, glyph, x, y, height, color });
42
- chars.push(String.fromCharCode(glyph.code));
43
- x += advance;
44
- }
45
- }
46
- const text = unknown || glyphs.length === 0 ? null : chars.join("");
47
- return { glyphs, text };
48
- }
49
- /** A glyph's outline as contours, in the font's units over 20, as shapeLayers reads twips; cached. */
50
- const outlines = new WeakMap();
51
- function outlineOf(glyph) {
52
- let contours = outlines.get(glyph);
53
- if (!contours) {
54
- const shape = {
55
- id: 0,
56
- bounds: { xMin: 0, xMax: 0, yMin: 0, yMax: 0 },
57
- edgeBounds: null,
58
- fills: [{ type: "solid", color: 0xffffffff }],
59
- lines: [],
60
- records: glyph.records,
61
- truncated: false,
62
- };
63
- contours = shapeLayers(shape).flatMap((layer) => layer.fills.flatMap((f) => f.contours));
64
- outlines.set(glyph, contours);
65
- }
66
- return contours;
67
- }
68
- /**
69
- * Whether the point (x, y), in the text's own pixels, is on one of its
70
- * glyphs: Flash hits static text by its glyphs' outlines, not its bounds,
71
- * and a glyph it draws transparent not at all, but as a mask, which clips
72
- * by its fills whatever their colour.
73
- */
74
- export function hitsGlyph(character, glyphs, x, y, mask = false) {
75
- const m = character.definition.matrix;
76
- const det = m.a * m.d - m.b * m.c;
77
- if (det === 0) {
78
- return false;
79
- }
80
- // Into the text's space, in twips, through the inverse of its matrix.
81
- const px = x * 20 - m.tx;
82
- const py = y * 20 - m.ty;
83
- const tx = (m.d * px - m.c * py) / det;
84
- const ty = (m.a * py - m.b * px) / det;
85
- for (const g of glyphs) {
86
- if ((!mask && g.color >>> 24 === 0) || g.height === 0) {
87
- continue;
88
- }
89
- // Into the glyph's outline: the font's units, over 20.
90
- const scale = g.height / g.font.em;
91
- const gx = (tx - g.x) / scale / 20;
92
- const gy = (ty - g.y) / scale / 20;
93
- let crossings = 0;
94
- for (const contour of outlineOf(g.glyph)) {
95
- if (inside(flatten(contour), gx, gy)) {
96
- crossings++;
97
- }
98
- }
99
- if (crossings % 2) {
100
- return true;
101
- }
102
- }
103
- return false;
104
- }
105
- //# sourceMappingURL=static-text.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"static-text.js","sourceRoot":"","sources":["../src/static-text.ts"],"names":[],"mappings":"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"}
@@ -1,66 +0,0 @@
1
- import { type Font, type Glyph } from "@swf2es/format";
2
- import { type FontSet } from "./fonts.js";
3
- import type { CharFormat } from "./text.js";
4
- /** The gutter: 2 pixels between the field's edge and its text, each side. */
5
- export declare const GUTTER: number;
6
- /** A character laid out: where it starts on its line and how far it advances, in twips. */
7
- export interface LaidChar {
8
- index: number;
9
- x: number;
10
- advance: number;
11
- /** Its pair's kerning, which shortens its advance and, drawn, moves it: its boundaries stay where they were. */
12
- kern: number;
13
- /** Its embedded font and glyph; null for a device font's character, or one the font lacks. */
14
- font: Font | null;
15
- glyph: Glyph | null;
16
- /** Whether it has boundaries: not a newline, nor a character an embedded font lacks. */
17
- shown: boolean;
18
- format: CharFormat;
19
- }
20
- export interface Line {
21
- /** Its characters, [start, end) of the text, a newline that ends it included. */
22
- start: number;
23
- end: number;
24
- /** Its left and top in the field, gutter, margins, indent and alignment in, and its width. */
25
- x: number;
26
- y: number;
27
- width: number;
28
- ascent: number;
29
- descent: number;
30
- leading: number;
31
- chars: LaidChar[];
32
- }
33
- export interface TextLayout {
34
- lines: Line[];
35
- /** textWidth and textHeight, in twips. */
36
- width: number;
37
- height: number;
38
- }
39
- /** What a field gives its layout. */
40
- export interface LayoutField {
41
- text: string;
42
- formats: readonly CharFormat[];
43
- defaultFormat: CharFormat;
44
- /** The field's width, in pixels. */
45
- width: number;
46
- wordWrap: boolean;
47
- embedFonts: boolean;
48
- fonts: FontSet | null;
49
- /** Whether a timeline placed it, from a DefineEditText, rather than a script made it. */
50
- authored: boolean;
51
- }
52
- /**
53
- * The field's text in lines: broken at each newline, and with word wrap
54
- * before a word that does not fit without its trailing spaces (one that
55
- * ends at the room's edge fits), or between the characters of a
56
- * word longer than the line.
57
- */
58
- export declare function layoutText(field: LayoutField): TextLayout;
59
- /** The line a character is on: the last one starting at or before it. */
60
- export declare function lineOf(layout: TextLayout, index: number): number;
61
- /** The lines of a field's layout that fit its height from line `first`: one at least. */
62
- export declare function shownLines(field: {
63
- layout: TextLayout;
64
- height: number;
65
- }, first: number): number;
66
- //# sourceMappingURL=text-layout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-layout.d.ts","sourceRoot":"","sources":["../src/text-layout.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,KAAK,EAAW,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,6EAA6E;AAC7E,eAAO,MAAM,MAAM,QAAY,CAAC;AAGhC,2FAA2F;AAC3F,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,OAAO,EAAE,MAAM,CAAC;IAChB,gHAAgH;IAChH,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,wFAAwF;IACxF,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,IAAI;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,8FAA8F;IAC9F,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IAC/B,aAAa,EAAE,UAAU,CAAC;IAC1B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IACtB,yFAAyF;IACzF,QAAQ,EAAE,OAAO,CAAC;CACnB;AAwED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,CAwJzD;AAqGD,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAahE;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB/F"}
@@ -1,315 +0,0 @@
1
- // A field's text laid out as Flash lays it out (docs/architecture.md,
2
- // "Text"): lines, and each character's place on them, in twips, which the
3
- // metrics, the line and character queries, autoSize and the renderer all
4
- // read. adl sets the rules, with fonts of rectangles from the tests' SWF
5
- // writer.
6
- import { glyphOf } from "@swf2es/format";
7
- import { deviceMetrics } from "./fonts.js";
8
- const TWIPS = 20;
9
- /** The gutter: 2 pixels between the field's edge and its text, each side. */
10
- export const GUTTER = 2 * TWIPS;
11
- const BULLET = 36 * TWIPS;
12
- /** Font units, or pixels for `em` 1, to twips at `size`, truncated as Flash does. */
13
- function twips(units, size, em) {
14
- return Math.trunc((units * size * TWIPS) / em);
15
- }
16
- /** A whole-pixel size, as a TextFormat keeps it; 0 for none. */
17
- function sizeOf(format) {
18
- return Math.max(0, format.size);
19
- }
20
- /** The line height a format asks, with no character: its font's ascent and descent. */
21
- function heightOf(field, format) {
22
- const size = sizeOf(format);
23
- if (field.embedFonts) {
24
- const font = field.fonts?.find(format.font, format.bold, format.italic) ?? null;
25
- return font?.layout
26
- ? { ascent: twips(font.ascent, size, font.em), descent: twips(font.descent, size, font.em) }
27
- : { ascent: 0, descent: 0 };
28
- }
29
- const m = deviceMetrics(format.font, size, format.bold, format.italic);
30
- return { ascent: twips(m.ascent, size, size), descent: twips(m.descent, size, size) };
31
- }
32
- function measure(field, code, format, previous) {
33
- const size = sizeOf(format);
34
- const spacing = Math.trunc(format.letterSpacing * TWIPS);
35
- if (field.embedFonts) {
36
- const font = field.fonts?.find(format.font, format.bold, format.italic) ?? null;
37
- if (!font?.layout) {
38
- return { font, glyph: null, advance: 0, kern: 0, ascent: 0, descent: 0, shown: false };
39
- }
40
- const ascent = twips(font.ascent, size, font.em);
41
- const descent = twips(font.descent, size, font.em);
42
- const glyph = glyphOf(font, code);
43
- if (!glyph) {
44
- return { font, glyph: null, advance: 0, kern: 0, ascent, descent, shown: false };
45
- }
46
- // A pair's kerning shortens the second character, as adl has it.
47
- const pair = format.kerning && previous >= 0 ? font.kerning.get((previous << 16) | code) : 0;
48
- const kern = pair ? twips(pair, size, font.em) : 0;
49
- const advance = twips(glyph.advance, size, font.em) + spacing + kern;
50
- return { font, glyph, advance, kern, ascent, descent, shown: true };
51
- }
52
- const m = deviceMetrics(format.font, size, format.bold, format.italic);
53
- return {
54
- font: null,
55
- glyph: null,
56
- advance: twips(m.advance(String.fromCharCode(code)), size, size) + spacing,
57
- kern: 0,
58
- ascent: twips(m.ascent, size, size),
59
- descent: twips(m.descent, size, size),
60
- shown: true,
61
- };
62
- }
63
- /**
64
- * The field's text in lines: broken at each newline, and with word wrap
65
- * before a word that does not fit without its trailing spaces (one that
66
- * ends at the room's edge fits), or between the characters of a
67
- * word longer than the line.
68
- */
69
- export function layoutText(field) {
70
- const { text, formats } = field;
71
- const lines = [];
72
- let y = GUTTER;
73
- let start = 0;
74
- do {
75
- let end = text.indexOf("\r", start);
76
- const newline = end >= 0;
77
- end = newline ? end : text.length;
78
- const format = formats[start] ?? field.defaultFormat;
79
- const measures = [];
80
- for (let i = start; i < end; i++) {
81
- const glyphs = measures[i - start - 1];
82
- const previous = i > start && glyphs?.shown ? text.charCodeAt(i - 1) : -1;
83
- measures.push(measure(field, text.charCodeAt(i), formats[i], previous));
84
- }
85
- // The paragraph's lines: [from, to) of its characters each.
86
- // A bullet's paragraph is set in 36 pixels, as adl sets it.
87
- const bullet = format.bullet ? BULLET : 0;
88
- const room = Math.trunc(field.width * TWIPS) -
89
- 2 * GUTTER -
90
- bullet -
91
- Math.trunc((format.leftMargin + format.rightMargin + format.blockIndent) * TWIPS);
92
- // A negative indent, a hanging one, moves the first line left, as far
93
- // as the gutter, and gives it no more room, as adl lays it out.
94
- const indent = Math.trunc(format.indent * TWIPS);
95
- const firstRoom = room - Math.max(0, indent);
96
- const margin = Math.trunc((format.leftMargin + format.blockIndent) * TWIPS);
97
- const breaks = [];
98
- let from = 0;
99
- while (from < measures.length || breaks.length === 0) {
100
- let to = measures.length;
101
- if (field.wordWrap) {
102
- to = wrap(text, start, measures, from, breaks.length === 0 ? firstRoom : room);
103
- }
104
- breaks.push([from, to]);
105
- from = to;
106
- if (from >= measures.length) {
107
- break;
108
- }
109
- }
110
- for (const [k, [a, b]] of breaks.entries()) {
111
- const chars = [];
112
- let x = 0;
113
- let ascent = 0;
114
- let descent = 0;
115
- for (let i = a; i < b; i++) {
116
- const m = measures[i];
117
- chars.push({
118
- index: start + i,
119
- x,
120
- advance: m.advance,
121
- kern: m.kern,
122
- font: m.font,
123
- glyph: m.glyph,
124
- shown: m.shown,
125
- format: formats[start + i],
126
- });
127
- x += m.advance;
128
- ascent = Math.max(ascent, m.ascent);
129
- descent = Math.max(descent, m.descent);
130
- }
131
- if (a === b) {
132
- ({ ascent, descent } = heightOf(field, formats[start + a] ?? format));
133
- }
134
- const last = k === breaks.length - 1;
135
- const lineEnd = last && newline ? end + 1 : start + b;
136
- if (last && newline) {
137
- chars.push({
138
- index: end,
139
- x,
140
- advance: 0,
141
- kern: 0,
142
- font: null,
143
- glyph: null,
144
- shown: false,
145
- format: formats[end],
146
- });
147
- }
148
- const left = GUTTER + bullet + (k === 0 ? Math.max(0, margin + indent) : margin);
149
- const lineRoom = k === 0 ? firstRoom : room;
150
- const space = lineRoom - x;
151
- // Justified, a wrapped line but the paragraph's last has its inner
152
- // spaces share the room left, its trailing spaces out.
153
- if (format.align === "justify" && !last) {
154
- x = justify(text, chars, lineRoom);
155
- }
156
- // Centred in the room left; right-aligned, one twip further left, as adl places it.
157
- const align = format.align === "center"
158
- ? Math.trunc(space / 2)
159
- : format.align === "right"
160
- ? space - 1
161
- : 0;
162
- const lineX = left + Math.max(0, align);
163
- for (const c of chars) {
164
- c.x += lineX;
165
- }
166
- const leading = Math.trunc(format.leading * TWIPS);
167
- lines.push({
168
- start: start + a,
169
- end: lineEnd,
170
- x: lineX,
171
- y,
172
- width: x,
173
- ascent,
174
- descent,
175
- leading,
176
- chars,
177
- });
178
- y += ascent + descent + leading;
179
- }
180
- start = end + 1;
181
- if (!newline) {
182
- break;
183
- }
184
- // A newline at the end leaves an empty line after it.
185
- if (start === text.length) {
186
- const f = formats[end] ?? field.defaultFormat;
187
- const { ascent, descent } = heightOf(field, f);
188
- lines.push({
189
- start,
190
- end: start,
191
- x: GUTTER +
192
- Math.max(0, Math.trunc((f.leftMargin + f.blockIndent) * TWIPS) + Math.trunc(f.indent * TWIPS)),
193
- y,
194
- width: 0,
195
- ascent,
196
- descent,
197
- leading: Math.trunc(f.leading * TWIPS),
198
- chars: [],
199
- });
200
- break;
201
- }
202
- } while (start <= text.length);
203
- return { lines, width: textWidth(lines), height: textHeight(text, lines, field.authored) };
204
- }
205
- /** A justified line's characters placed: its inner spaces widened alike to fill `room`; its width. */
206
- function justify(text, chars, room) {
207
- let end = chars.length;
208
- while (end > 0 && text[chars[end - 1].index] === " ") {
209
- end--;
210
- }
211
- let width = 0;
212
- let spaces = 0;
213
- for (let i = 0; i < end; i++) {
214
- width += chars[i].advance;
215
- if (text[chars[i].index] === " ") {
216
- spaces++;
217
- }
218
- }
219
- if (spaces > 0 && room > width) {
220
- const extra = Math.trunc((room - width) / spaces);
221
- for (let i = 0; i < end; i++) {
222
- if (text[chars[i].index] === " ") {
223
- chars[i].advance += extra;
224
- }
225
- }
226
- }
227
- let x = 0;
228
- for (const c of chars) {
229
- c.x = x;
230
- x += c.advance;
231
- }
232
- return x;
233
- }
234
- /** The end, exclusive, of a wrapped line from `from` with `room` twips. */
235
- function wrap(text, start, measures, from, room) {
236
- let width = 0;
237
- let i = from;
238
- while (i < measures.length) {
239
- // The next word, measured only until it runs past the room: a word
240
- // longer than many lines is not measured again for each of them.
241
- let wordEnd = i;
242
- let wordWidth = width;
243
- while (wordEnd < measures.length && text[start + wordEnd] !== " ") {
244
- wordWidth += measures[wordEnd].advance;
245
- if (wordWidth > room) {
246
- // On a line of its own, it breaks before the character that runs past, one at least.
247
- return i > from ? i : Math.max(wordEnd, from + 1);
248
- }
249
- wordEnd++;
250
- }
251
- width = wordWidth;
252
- i = wordEnd;
253
- while (i < measures.length && text[start + i] === " ") {
254
- width += measures[i].advance;
255
- i++;
256
- }
257
- }
258
- return measures.length;
259
- }
260
- function textWidth(lines) {
261
- let width = 0;
262
- for (const line of lines) {
263
- width = Math.max(width, line.width);
264
- }
265
- return width;
266
- }
267
- /**
268
- * The lines' heights, leading and all, but for the last one's leading
269
- * where there are two lines or more, as adl counts them; an empty field
270
- * counts nothing, and the empty line a final newline leaves counts only
271
- * in an authored field.
272
- */
273
- function textHeight(text, lines, authored) {
274
- if (text.length === 0) {
275
- return 0;
276
- }
277
- const counted = text.endsWith("\r") && !authored ? lines.slice(0, -1) : lines;
278
- let height = 0;
279
- for (const line of counted) {
280
- height += line.ascent + line.descent + line.leading;
281
- }
282
- return counted.length > 1 ? height - counted[counted.length - 1].leading : height;
283
- }
284
- /** The line a character is on: the last one starting at or before it. */
285
- export function lineOf(layout, index) {
286
- let lo = 0;
287
- let hi = layout.lines.length - 1;
288
- while (lo < hi) {
289
- const mid = (lo + hi + 1) >> 1;
290
- if (layout.lines[mid].start <= index) {
291
- lo = mid;
292
- }
293
- else {
294
- hi = mid - 1;
295
- }
296
- }
297
- return lo;
298
- }
299
- /** The lines of a field's layout that fit its height from line `first`: one at least. */
300
- export function shownLines(field, first) {
301
- const lines = field.layout.lines;
302
- const room = field.height * TWIPS - 2 * GUTTER;
303
- let n = 0;
304
- let used = 0;
305
- for (let i = first; i < lines.length; i++) {
306
- used += lines[i].ascent + lines[i].descent;
307
- if (n > 0 && used > room) {
308
- break;
309
- }
310
- used += lines[i].leading;
311
- n++;
312
- }
313
- return Math.max(1, n);
314
- }
315
- //# sourceMappingURL=text-layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-layout.js","sourceRoot":"","sources":["../src/text-layout.ts"],"names":[],"mappings":"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"}
package/dist/text.d.ts DELETED
@@ -1,67 +0,0 @@
1
- /** Every attribute a character's format has. */
2
- export interface CharFormat {
3
- font: string;
4
- size: number;
5
- color: number;
6
- bold: boolean;
7
- italic: boolean;
8
- underline: boolean;
9
- url: string;
10
- target: string;
11
- align: string;
12
- leftMargin: number;
13
- rightMargin: number;
14
- indent: number;
15
- leading: number;
16
- blockIndent: number;
17
- letterSpacing: number;
18
- kerning: boolean;
19
- bullet: boolean;
20
- tabStops: number[];
21
- display: string;
22
- }
23
- /** A TextFormat's values: null where it sets nothing, or where a range's characters differ. */
24
- export type PartialFormat = {
25
- [K in keyof CharFormat]: CharFormat[K] | null;
26
- };
27
- /** A new TextField's defaultTextFormat, as adl gives it. */
28
- export declare const DEFAULT_FORMAT: CharFormat;
29
- export declare const FORMAT_KEYS: (keyof CharFormat)[];
30
- /** A TextFormat that sets nothing. */
31
- export declare function emptyFormat(): PartialFormat;
32
- /** `base` with what `change` sets. */
33
- export declare function applied(base: CharFormat, change: PartialFormat): CharFormat;
34
- export declare class TextModel {
35
- text: string;
36
- /** Each character's format; runs share one object. */
37
- formats: CharFormat[];
38
- /** Counts the changes, text, formats or the default, for a layout to know it is current. */
39
- revision: number;
40
- private fallback;
41
- /** The format of text set as a whole, and of an empty field's line. */
42
- get defaultFormat(): CharFormat;
43
- set defaultFormat(format: CharFormat);
44
- /** The text, all in the default format, as `text` sets it. */
45
- setText(text: string): void;
46
- /**
47
- * `text` in place of [begin, end), as replaceText and appendText put it:
48
- * in the format of the character before, else of the one it replaces,
49
- * else the default.
50
- */
51
- replace(begin: number, end: number, text: string): void;
52
- /** What [begin, end) has in common: each value null where its characters differ; the default's for none. */
53
- formatOf(begin: number, end: number): PartialFormat;
54
- /** [begin, end) given what `change` sets, as setTextFormat does. */
55
- setFormat(change: PartialFormat, begin: number, end: number): void;
56
- /** The runs of each paragraph: its text up to a \r, in runs of one format. */
57
- private paragraphs;
58
- /** The text as htmlText gives it. */
59
- toHtml(): string;
60
- /**
61
- * htmlText set: tags read as Flash reads them, each run in the format
62
- * its tags give over the default; a paragraph's end and a BR end a line
63
- * only in a multiline field.
64
- */
65
- setHtml(html: string, multiline: boolean, trimTrailingBreak?: boolean): void;
66
- }
67
- //# sourceMappingURL=text.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"AAOA,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,+FAA+F;AAC/F,MAAM,MAAM,aAAa,GAAG;KAAG,CAAC,IAAI,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI;CAAE,CAAC;AAE9E,4DAA4D;AAC5D,eAAO,MAAM,cAAc,EAAE,UAoB5B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAkC,CAAC,MAAM,UAAU,CAAC,EAAE,CAAC;AAE/E,sCAAsC;AACtC,wBAAgB,WAAW,IAAI,aAAa,CAQ3C;AAED,sCAAsC;AACtC,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,UAAU,CAU3E;AAgBD,qBAAa,SAAS;IACpB,IAAI,SAAM;IACV,sDAAsD;IACtD,OAAO,EAAE,UAAU,EAAE,CAAM;IAC3B,4FAA4F;IAC5F,QAAQ,SAAK;IACb,OAAO,CAAC,QAAQ,CAAqC;IAErD,uEAAuE;IACvE,IAAI,aAAa,IAAI,UAAU,CAE9B;IAED,IAAI,aAAa,CAAC,MAAM,EAAE,UAAU,EAGnC;IAED,8DAA8D;IAC9D,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAI1B;IAED;;;;OAIG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAStD;IAED,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,aAAa,CAgBlD;IAED,oEAAoE;IACpE,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAajE;IAED,8EAA8E;IAC9E,OAAO,CAAC,UAAU;IA0BlB,qCAAqC;IACrC,MAAM,IAAI,MAAM,CAsEf;IAED;;;;OAIG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,UAAQ,GAAG,IAAI,CAmIzE;CACF"}