postext 1.35.1 → 1.37.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.
- package/dist/__bench__/composedPage.bench.test.d.ts +2 -0
- package/dist/__bench__/composedPage.bench.test.d.ts.map +1 -0
- package/dist/__bench__/composedPage.bench.test.js +95 -0
- package/dist/__bench__/composedPage.bench.test.js.map +1 -0
- package/dist/__tests__/composed/continuation.test.d.ts +2 -0
- package/dist/__tests__/composed/continuation.test.d.ts.map +1 -0
- package/dist/__tests__/composed/continuation.test.js +352 -0
- package/dist/__tests__/composed/continuation.test.js.map +1 -0
- package/dist/__tests__/composed/contrast.test.d.ts +2 -0
- package/dist/__tests__/composed/contrast.test.d.ts.map +1 -0
- package/dist/__tests__/composed/contrast.test.js +124 -0
- package/dist/__tests__/composed/contrast.test.js.map +1 -0
- package/dist/__tests__/composed/corpus.test.js +7 -1
- package/dist/__tests__/composed/corpus.test.js.map +1 -1
- package/dist/__tests__/composed/fit.test.d.ts +2 -0
- package/dist/__tests__/composed/fit.test.d.ts.map +1 -0
- package/dist/__tests__/composed/fit.test.js +408 -0
- package/dist/__tests__/composed/fit.test.js.map +1 -0
- package/dist/__tests__/composed/groups.test.js +14 -0
- package/dist/__tests__/composed/groups.test.js.map +1 -1
- package/dist/__tests__/composed/headingDesigns.test.d.ts +2 -0
- package/dist/__tests__/composed/headingDesigns.test.d.ts.map +1 -0
- package/dist/__tests__/composed/headingDesigns.test.js +262 -0
- package/dist/__tests__/composed/headingDesigns.test.js.map +1 -0
- package/dist/__tests__/composed/labels.test.d.ts +2 -0
- package/dist/__tests__/composed/labels.test.d.ts.map +1 -0
- package/dist/__tests__/composed/labels.test.js +326 -0
- package/dist/__tests__/composed/labels.test.js.map +1 -0
- package/dist/__tests__/composed/layout.test.js +2 -1
- package/dist/__tests__/composed/layout.test.js.map +1 -1
- package/dist/__tests__/composed/outsidePrint.test.js +5 -2
- package/dist/__tests__/composed/outsidePrint.test.js.map +1 -1
- package/dist/__tests__/composed/pageMemo.test.d.ts +2 -0
- package/dist/__tests__/composed/pageMemo.test.d.ts.map +1 -0
- package/dist/__tests__/composed/pageMemo.test.js +128 -0
- package/dist/__tests__/composed/pageMemo.test.js.map +1 -0
- package/dist/__tests__/composed/sourceMap.test.d.ts +2 -0
- package/dist/__tests__/composed/sourceMap.test.d.ts.map +1 -0
- package/dist/__tests__/composed/sourceMap.test.js +395 -0
- package/dist/__tests__/composed/sourceMap.test.js.map +1 -0
- package/dist/__tests__/composed/spreadLabels.test.d.ts +2 -0
- package/dist/__tests__/composed/spreadLabels.test.d.ts.map +1 -0
- package/dist/__tests__/composed/spreadLabels.test.js +131 -0
- package/dist/__tests__/composed/spreadLabels.test.js.map +1 -0
- package/dist/__tests__/composed/templateFrameRects.test.d.ts +2 -0
- package/dist/__tests__/composed/templateFrameRects.test.d.ts.map +1 -0
- package/dist/__tests__/composed/templateFrameRects.test.js +37 -0
- package/dist/__tests__/composed/templateFrameRects.test.js.map +1 -0
- package/dist/__tests__/design/imageAltText.test.js +2 -1
- package/dist/__tests__/design/imageAltText.test.js.map +1 -1
- package/dist/__tests__/exports.test.js +33 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/migrate/fixtures/textbookPort.d.ts +14 -0
- package/dist/__tests__/migrate/fixtures/textbookPort.d.ts.map +1 -0
- package/dist/__tests__/migrate/fixtures/textbookPort.js +116 -0
- package/dist/__tests__/migrate/fixtures/textbookPort.js.map +1 -0
- package/dist/__tests__/migrate/textToMarkdown.test.d.ts +2 -0
- package/dist/__tests__/migrate/textToMarkdown.test.d.ts.map +1 -0
- package/dist/__tests__/migrate/textToMarkdown.test.js +268 -0
- package/dist/__tests__/migrate/textToMarkdown.test.js.map +1 -0
- package/dist/__tests__/paragraphStyleLetterSpacing.test.d.ts +2 -0
- package/dist/__tests__/paragraphStyleLetterSpacing.test.d.ts.map +1 -0
- package/dist/__tests__/paragraphStyleLetterSpacing.test.js +89 -0
- package/dist/__tests__/paragraphStyleLetterSpacing.test.js.map +1 -0
- package/dist/__tests__/pictureBelowPrintSize.test.d.ts +2 -0
- package/dist/__tests__/pictureBelowPrintSize.test.d.ts.map +1 -0
- package/dist/__tests__/pictureBelowPrintSize.test.js +82 -0
- package/dist/__tests__/pictureBelowPrintSize.test.js.map +1 -0
- package/dist/__tests__/pipeline/contourWrap.test.d.ts +2 -0
- package/dist/__tests__/pipeline/contourWrap.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/contourWrap.test.js +412 -0
- package/dist/__tests__/pipeline/contourWrap.test.js.map +1 -0
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
- package/dist/__tests__/toc.test.js +3 -2
- package/dist/__tests__/toc.test.js.map +1 -1
- package/dist/bundle/codec.d.ts +16 -0
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +44 -2
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/index.d.ts +1 -1
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/index.js.map +1 -1
- package/dist/canvas-backend/composed.d.ts +5 -2
- package/dist/canvas-backend/composed.d.ts.map +1 -1
- package/dist/canvas-backend/composed.js +10 -5
- package/dist/canvas-backend/composed.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +37 -19
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts +5 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +60 -1
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/composed/continuation.d.ts +102 -0
- package/dist/composed/continuation.d.ts.map +1 -0
- package/dist/composed/continuation.js +87 -0
- package/dist/composed/continuation.js.map +1 -0
- package/dist/composed/contour.d.ts +21 -0
- package/dist/composed/contour.d.ts.map +1 -0
- package/dist/composed/contour.js +34 -0
- package/dist/composed/contour.js.map +1 -0
- package/dist/composed/geometry.d.ts +8 -0
- package/dist/composed/geometry.d.ts.map +1 -1
- package/dist/composed/geometry.js +26 -0
- package/dist/composed/geometry.js.map +1 -1
- package/dist/composed/ids.d.ts +22 -0
- package/dist/composed/ids.d.ts.map +1 -0
- package/dist/composed/ids.js +32 -0
- package/dist/composed/ids.js.map +1 -0
- package/dist/composed/labels.d.ts +154 -0
- package/dist/composed/labels.d.ts.map +1 -0
- package/dist/composed/labels.js +524 -0
- package/dist/composed/labels.js.map +1 -0
- package/dist/composed/pageMemo.d.ts +73 -0
- package/dist/composed/pageMemo.d.ts.map +1 -0
- package/dist/composed/pageMemo.js +289 -0
- package/dist/composed/pageMemo.js.map +1 -0
- package/dist/composed/paint.d.ts +29 -9
- package/dist/composed/paint.d.ts.map +1 -1
- package/dist/composed/paint.js +41 -7
- package/dist/composed/paint.js.map +1 -1
- package/dist/composed/reflowLog.d.ts +14 -2
- package/dist/composed/reflowLog.d.ts.map +1 -1
- package/dist/composed/reflowLog.js +64 -7
- package/dist/composed/reflowLog.js.map +1 -1
- package/dist/composed/slotChecks.d.ts.map +1 -1
- package/dist/composed/slotChecks.js +3 -1
- package/dist/composed/slotChecks.js.map +1 -1
- package/dist/composed/sourceMap.d.ts +97 -0
- package/dist/composed/sourceMap.d.ts.map +1 -0
- package/dist/composed/sourceMap.js +748 -0
- package/dist/composed/sourceMap.js.map +1 -0
- package/dist/composed/spread.d.ts +3 -0
- package/dist/composed/spread.d.ts.map +1 -1
- package/dist/composed/spread.js +11 -12
- package/dist/composed/spread.js.map +1 -1
- package/dist/composed/templates.d.ts +1 -0
- package/dist/composed/templates.d.ts.map +1 -1
- package/dist/composed/templates.js +4 -0
- package/dist/composed/templates.js.map +1 -1
- package/dist/composed/types.d.ts +15 -32
- package/dist/composed/types.d.ts.map +1 -1
- package/dist/composed/validate.d.ts.map +1 -1
- package/dist/composed/validate.js +3 -2
- package/dist/composed/validate.js.map +1 -1
- package/dist/composed/wrap.d.ts.map +1 -1
- package/dist/composed/wrap.js +7 -1
- package/dist/composed/wrap.js.map +1 -1
- package/dist/configWarnings.d.ts +15 -0
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +29 -17
- package/dist/configWarnings.js.map +1 -1
- package/dist/contour/index.d.ts +134 -0
- package/dist/contour/index.d.ts.map +1 -0
- package/dist/contour/index.js +354 -0
- package/dist/contour/index.js.map +1 -0
- package/dist/contour/png.d.ts +16 -0
- package/dist/contour/png.d.ts.map +1 -0
- package/dist/contour/png.js +173 -0
- package/dist/contour/png.js.map +1 -0
- package/dist/contrast.d.ts +5 -3
- package/dist/contrast.d.ts.map +1 -1
- package/dist/contrast.js +46 -5
- package/dist/contrast.js.map +1 -1
- package/dist/defaults/paragraphStyles.d.ts +1 -1
- package/dist/defaults/paragraphStyles.d.ts.map +1 -1
- package/dist/defaults/paragraphStyles.js +5 -1
- package/dist/defaults/paragraphStyles.js.map +1 -1
- package/dist/design/slots.d.ts +12 -10
- package/dist/design/slots.d.ts.map +1 -1
- package/dist/design/slots.js +26 -2
- package/dist/design/slots.js.map +1 -1
- package/dist/fonts/faces.d.ts.map +1 -1
- package/dist/fonts/faces.js +6 -0
- package/dist/fonts/faces.js.map +1 -1
- package/dist/highlightMarks.d.ts.map +1 -1
- package/dist/highlightMarks.js +6 -0
- package/dist/highlightMarks.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +42 -4
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +18 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +2 -0
- package/dist/measure/rich.js.map +1 -1
- package/dist/migrate/markdownRuns.d.ts +70 -0
- package/dist/migrate/markdownRuns.d.ts.map +1 -0
- package/dist/migrate/markdownRuns.js +215 -0
- package/dist/migrate/markdownRuns.js.map +1 -0
- package/dist/migrate/pageDesign.d.ts +119 -0
- package/dist/migrate/pageDesign.d.ts.map +1 -0
- package/dist/migrate/pageDesign.js +446 -0
- package/dist/migrate/pageDesign.js.map +1 -0
- package/dist/migrate/textToMarkdown.d.ts +124 -0
- package/dist/migrate/textToMarkdown.d.ts.map +1 -0
- package/dist/migrate/textToMarkdown.js +716 -0
- package/dist/migrate/textToMarkdown.js.map +1 -0
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +44 -3
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/types.d.ts +20 -0
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +298 -30
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildMeasurement.d.ts +7 -2
- package/dist/pipeline/buildMeasurement.d.ts.map +1 -1
- package/dist/pipeline/buildMeasurement.js +21 -5
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts +39 -14
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +50 -4
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/composedLayout.d.ts +51 -6
- package/dist/pipeline/composedLayout.d.ts.map +1 -1
- package/dist/pipeline/composedLayout.js +633 -78
- package/dist/pipeline/composedLayout.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +15 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +98 -4
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/floatPlacement.d.ts +2 -0
- package/dist/pipeline/floatPlacement.d.ts.map +1 -1
- package/dist/pipeline/floatPlacement.js +1 -0
- package/dist/pipeline/floatPlacement.js.map +1 -1
- package/dist/pipeline/frameLayout.d.ts +7 -4
- package/dist/pipeline/frameLayout.d.ts.map +1 -1
- package/dist/pipeline/frameLayout.js +5 -2
- package/dist/pipeline/frameLayout.js.map +1 -1
- package/dist/pipeline/headerFooter.d.ts +20 -1
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +225 -70
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +1 -0
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/mirrorFrame.d.ts.map +1 -1
- package/dist/pipeline/mirrorFrame.js +25 -2
- package/dist/pipeline/mirrorFrame.js.map +1 -1
- package/dist/pipeline/outline.d.ts.map +1 -1
- package/dist/pipeline/outline.js +2 -0
- package/dist/pipeline/outline.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +28 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +21 -0
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/styles.d.ts +1 -1
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +4 -0
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/pipeline/textWrap.d.ts +4 -1
- package/dist/pipeline/textWrap.d.ts.map +1 -1
- package/dist/pipeline/textWrap.js +17 -3
- package/dist/pipeline/textWrap.js.map +1 -1
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +1 -0
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/types.d.ts +77 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +290 -15
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js.map +1 -1
- package/dist/word/toDocx.d.ts.map +1 -1
- package/dist/word/toDocx.js +14 -0
- package/dist/word/toDocx.js.map +1 -1
- package/dist/word/word.test.js +11 -1
- package/dist/word/word.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
import { measurementGeneration } from '../measure/canvas';
|
|
2
|
+
import { layoutComposedPage } from '../pipeline/composedLayout';
|
|
3
|
+
const MEMO_SLOTS = 96;
|
|
4
|
+
const memo = new Map();
|
|
5
|
+
const stats = { hits: 0, misses: 0, skipped: 0 };
|
|
6
|
+
let enabled = true;
|
|
7
|
+
/** Drop every kept page (tests; a host that wants a cold build). */
|
|
8
|
+
export function clearComposedPageMemo() {
|
|
9
|
+
memo.clear();
|
|
10
|
+
stats.hits = 0;
|
|
11
|
+
stats.misses = 0;
|
|
12
|
+
stats.skipped = 0;
|
|
13
|
+
}
|
|
14
|
+
/** Turn the memo off (every composed page laid out afresh) or on again. */
|
|
15
|
+
export function setComposedPageMemo(on) {
|
|
16
|
+
enabled = on;
|
|
17
|
+
if (!on)
|
|
18
|
+
memo.clear();
|
|
19
|
+
}
|
|
20
|
+
/** Pages reused, laid out and kept, and laid out without keeping. */
|
|
21
|
+
export function composedPageMemoStats() {
|
|
22
|
+
return { ...stats, size: memo.size };
|
|
23
|
+
}
|
|
24
|
+
const configKeys = new WeakMap();
|
|
25
|
+
/** A 64-bit digest of `parts` (two 32-bit FNV-style lanes, mixed) and
|
|
26
|
+
* their total length: the memo's keys stay short whatever a page holds. */
|
|
27
|
+
export function digest(parts) {
|
|
28
|
+
let h1 = 0xdeadbeef;
|
|
29
|
+
let h2 = 0x41c6ce57;
|
|
30
|
+
let len = 0;
|
|
31
|
+
for (const p of parts) {
|
|
32
|
+
for (let i = 0; i < p.length; i++) {
|
|
33
|
+
const c = p.charCodeAt(i);
|
|
34
|
+
h1 = Math.imul(h1 ^ c, 2654435761);
|
|
35
|
+
h2 = Math.imul(h2 ^ c, 1597334677);
|
|
36
|
+
}
|
|
37
|
+
// A separator, so ["ab", "c"] and ["a", "bc"] differ.
|
|
38
|
+
h1 = Math.imul(h1 ^ 0x1f, 2654435761);
|
|
39
|
+
h2 = Math.imul(h2 ^ 0x1f, 1597334677);
|
|
40
|
+
len += p.length + 1;
|
|
41
|
+
}
|
|
42
|
+
h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507) ^ Math.imul(h2 ^ (h2 >>> 13), 3266489909);
|
|
43
|
+
h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507) ^ Math.imul(h1 ^ (h1 >>> 13), 3266489909);
|
|
44
|
+
return `${(h1 >>> 0).toString(36)}.${(h2 >>> 0).toString(36)}.${len}`;
|
|
45
|
+
}
|
|
46
|
+
/** A key of a resolved configuration (or any plain object the layout
|
|
47
|
+
* does not change, a resolved template), computed once per object. */
|
|
48
|
+
export function configKeyOf(resolved) {
|
|
49
|
+
const known = configKeys.get(resolved);
|
|
50
|
+
if (known !== undefined)
|
|
51
|
+
return known;
|
|
52
|
+
const key = digest([JSON.stringify(resolved)]);
|
|
53
|
+
configKeys.set(resolved, key);
|
|
54
|
+
return key;
|
|
55
|
+
}
|
|
56
|
+
/** Spans the memo cannot key: what prints something set elsewhere. */
|
|
57
|
+
export function spansReadOutside(spans) {
|
|
58
|
+
for (const s of spans ?? []) {
|
|
59
|
+
if (s.ref || s.footnote || s.citation)
|
|
60
|
+
return true;
|
|
61
|
+
if (s.chip && spansReadOutside(s.chip.spans))
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
/** Whether content block `b` lays out from what it holds and the key's
|
|
67
|
+
* context alone. */
|
|
68
|
+
export function blockMemoisable(b) {
|
|
69
|
+
if (spansReadOutside(b.spans))
|
|
70
|
+
return false;
|
|
71
|
+
if (b.type === 'directive' && (b.directiveName === 'toc' || b.directiveName === 'index' || b.directiveName === 'strip' || b.comic))
|
|
72
|
+
return false;
|
|
73
|
+
if (b.toc || b.footnoteDef !== undefined)
|
|
74
|
+
return false;
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
/** The ids of the containers `blocks` name, in order of first appearance. */
|
|
78
|
+
function containerIdsOf(blocks) {
|
|
79
|
+
const out = [];
|
|
80
|
+
const seen = new Set();
|
|
81
|
+
for (const b of blocks) {
|
|
82
|
+
if (b.containerId !== undefined && !seen.has(b.containerId)) {
|
|
83
|
+
seen.add(b.containerId);
|
|
84
|
+
out.push(b.containerId);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
const SOURCE_KEYS = new Set(['sourceStart', 'sourceEnd', 'textStart', 'textEnd']);
|
|
90
|
+
/** The page's blocks as a key: source offsets counted from `base`,
|
|
91
|
+
* container ids by their order. */
|
|
92
|
+
function blocksKey(blocks, base, ids) {
|
|
93
|
+
const ordinal = new Map(ids.map((id, i) => [id, i]));
|
|
94
|
+
return JSON.stringify(blocks, function (key, value) {
|
|
95
|
+
if (typeof value === 'number') {
|
|
96
|
+
if (SOURCE_KEYS.has(key))
|
|
97
|
+
return value - base;
|
|
98
|
+
if (key === 'containerId')
|
|
99
|
+
return `#${ordinal.get(value) ?? value}`;
|
|
100
|
+
}
|
|
101
|
+
// A block's character map follows from the page's Markdown, which the
|
|
102
|
+
// key holds whole.
|
|
103
|
+
if (key === 'sourceMap')
|
|
104
|
+
return undefined;
|
|
105
|
+
if (key === 'attrSources' && value && typeof value === 'object') {
|
|
106
|
+
// A heading's `{ start, end }` per attribute (the `{ sourceStart,
|
|
107
|
+
// sourceEnd }` of the others are read as any source offset).
|
|
108
|
+
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, Object.fromEntries(Object.entries(v).map(([f, n]) => [f, f === 'start' || f === 'end' ? n - base : n]))]));
|
|
109
|
+
}
|
|
110
|
+
return value;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/** Move a kept layout to where the page now stands (in place). */
|
|
114
|
+
function moveLayout(value, delta, indexDelta, ids, pageIndex, parentKey = '') {
|
|
115
|
+
if (Array.isArray(value)) {
|
|
116
|
+
if (parentKey === 'sourceMap') {
|
|
117
|
+
for (let i = 0; i < value.length; i++)
|
|
118
|
+
if (typeof value[i] === 'number')
|
|
119
|
+
value[i] += delta;
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
if (parentKey === 'calloutPath') {
|
|
123
|
+
for (let i = 0; i < value.length; i++)
|
|
124
|
+
if (typeof value[i] === 'number')
|
|
125
|
+
value[i] = ids.get(value[i]) ?? value[i];
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
for (const v of value)
|
|
129
|
+
moveLayout(v, delta, indexDelta, ids, pageIndex);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
if (value instanceof Set || value === null || typeof value !== 'object')
|
|
133
|
+
return;
|
|
134
|
+
const o = value;
|
|
135
|
+
for (const key of Object.keys(o)) {
|
|
136
|
+
const v = o[key];
|
|
137
|
+
if (typeof v === 'number') {
|
|
138
|
+
if (key === 'sourceStart' || key === 'sourceEnd')
|
|
139
|
+
o[key] = v + delta;
|
|
140
|
+
else if ((key === 'start' || key === 'end') && parentKey === 'attr')
|
|
141
|
+
o[key] = v + delta;
|
|
142
|
+
else if (key === 'contentIndex')
|
|
143
|
+
o[key] = v + indexDelta;
|
|
144
|
+
else if (key === 'containerId')
|
|
145
|
+
o[key] = ids.get(v) ?? v;
|
|
146
|
+
else if (key === 'pageIndex')
|
|
147
|
+
o[key] = pageIndex;
|
|
148
|
+
}
|
|
149
|
+
else if (v && typeof v === 'object') {
|
|
150
|
+
// `attrSources` of a block hold `{ start, end }` per attribute.
|
|
151
|
+
if (key === 'attrSources') {
|
|
152
|
+
for (const r of Object.values(v))
|
|
153
|
+
moveLayout(r, delta, indexDelta, ids, pageIndex, 'attr');
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
moveLayout(v, delta, indexDelta, ids, pageIndex, key);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/** Whether every container id and content index of `layout` falls in the
|
|
162
|
+
* page (so moving it is complete). */
|
|
163
|
+
function selfContained(layout, ids, from, to) {
|
|
164
|
+
let ok = true;
|
|
165
|
+
const visit = (value, parentKey) => {
|
|
166
|
+
if (!ok)
|
|
167
|
+
return;
|
|
168
|
+
if (Array.isArray(value)) {
|
|
169
|
+
if (parentKey === 'calloutPath') {
|
|
170
|
+
for (const v of value)
|
|
171
|
+
if (typeof v === 'number' && !ids.has(v))
|
|
172
|
+
ok = false;
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
for (const v of value)
|
|
176
|
+
visit(v, '');
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (value === null || typeof value !== 'object' || value instanceof Set)
|
|
180
|
+
return;
|
|
181
|
+
for (const [key, v] of Object.entries(value)) {
|
|
182
|
+
if (typeof v === 'number') {
|
|
183
|
+
if (key === 'containerId' && !ids.has(v))
|
|
184
|
+
ok = false;
|
|
185
|
+
else if (key === 'contentIndex' && (v < from || v > to))
|
|
186
|
+
ok = false;
|
|
187
|
+
}
|
|
188
|
+
else if (v && typeof v === 'object')
|
|
189
|
+
visit(v, key);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
visit(layout.blocks, '');
|
|
193
|
+
return ok;
|
|
194
|
+
}
|
|
195
|
+
/** `v` with every number rounded to a millionth. */
|
|
196
|
+
const rounded = (v) => JSON.parse(JSON.stringify(v, (_k, x) => (typeof x === 'number' ? Math.round(x * 1e6) / 1e6 : x)));
|
|
197
|
+
/**
|
|
198
|
+
* {@link layoutComposedPage}, kept by what it reads: the same page met
|
|
199
|
+
* again is taken from the memo and moved to where it now stands.
|
|
200
|
+
*/
|
|
201
|
+
export function layoutComposedPageMemo(input, ctx) {
|
|
202
|
+
if (!enabled)
|
|
203
|
+
return layoutComposedPage(input);
|
|
204
|
+
const blocks = input.pass.contentBlocks;
|
|
205
|
+
const from = input.startIdx;
|
|
206
|
+
const to = input.endIdx;
|
|
207
|
+
const range = blocks.slice(from, to + 1);
|
|
208
|
+
const context = range.every(blockMemoisable) ? ctx.contextKey(from, to) : undefined;
|
|
209
|
+
if (context === undefined) {
|
|
210
|
+
stats.skipped++;
|
|
211
|
+
return layoutComposedPage(input);
|
|
212
|
+
}
|
|
213
|
+
const first = range[0];
|
|
214
|
+
const last = range[range.length - 1];
|
|
215
|
+
const ids = containerIdsOf(range);
|
|
216
|
+
const key = digest([
|
|
217
|
+
'1',
|
|
218
|
+
ctx.configKey(),
|
|
219
|
+
String(measurementGeneration()),
|
|
220
|
+
configKeyOf(input.template),
|
|
221
|
+
String(input.fence.fenceIndex),
|
|
222
|
+
ctx.markdown.slice(first.sourceStart, last.sourceEnd),
|
|
223
|
+
blocksKey(range, first.sourceStart, ids),
|
|
224
|
+
// Geometry to a millionth of a pixel: a verso and a recto of the same
|
|
225
|
+
// margins differ in the last digits only.
|
|
226
|
+
JSON.stringify(rounded([input.areas, input.dpi, input.emPx, input.mirrored, input.pushGapPx, input.page.width, input.page.height, input.page.contentArea])),
|
|
227
|
+
[...input.stories.keys()].join('\u0000'),
|
|
228
|
+
context,
|
|
229
|
+
]);
|
|
230
|
+
const sourceBase = first.sourceStart + ctx.bodyOffset;
|
|
231
|
+
const hit = memo.get(key);
|
|
232
|
+
if (hit) {
|
|
233
|
+
memo.delete(key);
|
|
234
|
+
memo.set(key, hit);
|
|
235
|
+
const layout = { ...JSON.parse(hit.layout), laid: new Set(hit.laid) };
|
|
236
|
+
const idMap = new Map(hit.containerIds.map((id, i) => [id, ids[i] ?? id]));
|
|
237
|
+
moveLayout(layout.blocks, sourceBase - hit.sourceBase, from - hit.indexBase, idMap, input.page.index);
|
|
238
|
+
moveLayout(layout.composed, sourceBase - hit.sourceBase, from - hit.indexBase, idMap, input.page.index);
|
|
239
|
+
moveLayout(layout.warnings, sourceBase - hit.sourceBase, from - hit.indexBase, idMap, input.page.index);
|
|
240
|
+
layout.composed.layoutKey = key;
|
|
241
|
+
stats.hits++;
|
|
242
|
+
return layout;
|
|
243
|
+
}
|
|
244
|
+
const layout = layoutComposedPage(input);
|
|
245
|
+
// A page whose content goes on on pages it adds (#859) is laid out
|
|
246
|
+
// afresh with them: the added pages read where it cut its frames.
|
|
247
|
+
if (layout.continuations || ctx.sideEffectsIn(from, to) || !selfContained(layout, new Set(ids), from, to)) {
|
|
248
|
+
stats.skipped++;
|
|
249
|
+
return layout;
|
|
250
|
+
}
|
|
251
|
+
layout.composed.layoutKey = key;
|
|
252
|
+
memo.set(key, { layout: JSON.stringify({ composed: layout.composed, blocks: layout.blocks, warnings: layout.warnings }), laid: [...layout.laid], sourceBase, indexBase: from, containerIds: ids });
|
|
253
|
+
if (memo.size > MEMO_SLOTS) {
|
|
254
|
+
const oldest = memo.keys().next().value;
|
|
255
|
+
if (oldest !== undefined)
|
|
256
|
+
memo.delete(oldest);
|
|
257
|
+
}
|
|
258
|
+
stats.misses++;
|
|
259
|
+
return layout;
|
|
260
|
+
}
|
|
261
|
+
/** Fields of the VDT that say where things come from, not what they look
|
|
262
|
+
* like. */
|
|
263
|
+
const PAINT_FREE_KEYS = new Set(['sourceStart', 'sourceEnd', 'sourceMap', 'contentIndex', 'containerId', 'pageIndex', 'attrSources', 'titleSourceStart', 'titleSourceEnd']);
|
|
264
|
+
/**
|
|
265
|
+
* What a composed page paints, as a key (#857): its frames' layout key
|
|
266
|
+
* with what is laid round them (running heads, decoration, page number,
|
|
267
|
+
* paper, the floats and notes no frame holds). Two pages with the same
|
|
268
|
+
* key paint the same pixels with the same paint options, so a host can
|
|
269
|
+
* keep a page's bitmap across a relayout. Undefined for a page without a
|
|
270
|
+
* layout key (not a composed page, or one laid out afresh every time).
|
|
271
|
+
*/
|
|
272
|
+
export function composedPagePaintKey(page) {
|
|
273
|
+
const composed = page.composed;
|
|
274
|
+
if (!composed?.layoutKey)
|
|
275
|
+
return undefined;
|
|
276
|
+
const inFrames = new Set(composed.frames.flatMap((f) => f.blockIds));
|
|
277
|
+
const loose = (page.floats ?? []).filter((b) => !inFrames.has(b.id));
|
|
278
|
+
return digest([
|
|
279
|
+
composed.layoutKey,
|
|
280
|
+
JSON.stringify([
|
|
281
|
+
page.width, page.height, page.pageLabel, page.background ?? null, page.paper ?? null,
|
|
282
|
+
page.header ?? null, page.footer ?? null, composed.decoration ?? null, page.lineNumbers ?? null,
|
|
283
|
+
loose, page.marginNotes ?? null, page.footnoteAreas ?? null,
|
|
284
|
+
// Where the text is written does not change the pixels: an edit on
|
|
285
|
+
// an earlier page moves every offset after it.
|
|
286
|
+
], (key, value) => (PAINT_FREE_KEYS.has(key) ? undefined : value)),
|
|
287
|
+
]);
|
|
288
|
+
}
|
|
289
|
+
//# sourceMappingURL=pageMemo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pageMemo.js","sourceRoot":"","sources":["../../src/composed/pageMemo.ts"],"names":[],"mappings":"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"}
|
package/dist/composed/paint.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How the backends paint a composed page (#855, DESIGN §4): the frames in
|
|
3
3
|
* layer order with the template's decoration at layer 0, each frame's
|
|
4
|
-
* blocks turned by its matrix and clipped to its box
|
|
5
|
-
* overflows; on a page of a spread (#861) all of it
|
|
6
|
-
* share of the sheet. Shared by canvas, PDF and HTML
|
|
4
|
+
* blocks turned (and scaled, #858) by its matrix and clipped to its box
|
|
5
|
+
* when its content overflows; on a page of a spread (#861) all of it
|
|
6
|
+
* clipped to the page's share of the sheet. Shared by canvas, PDF and HTML
|
|
7
|
+
* so the three agree.
|
|
7
8
|
*/
|
|
8
9
|
import type { VDTBlock, VDTComposedPage, VDTFrame, VDTPage } from '../vdt';
|
|
9
10
|
/** One step of a composed page's paint order. */
|
|
@@ -22,11 +23,17 @@ export type ComposedPaintItem =
|
|
|
22
23
|
* them with their frames ({@link composedPaintOrder}), not with the
|
|
23
24
|
* page's other floats. Empty for any other page. */
|
|
24
25
|
export declare function composedFrameBlockIds(page: VDTPage): Set<string>;
|
|
26
|
+
/** The frames painted under the decoration (`'below'`: layers below 0)
|
|
27
|
+
* or over it (`'above'`), for a backend that paints the decoration
|
|
28
|
+
* apart (a page painted through a flow frame, whose decoration stands on
|
|
29
|
+
* the sheet). */
|
|
30
|
+
export type ComposedPaintPart = 'below' | 'above';
|
|
25
31
|
/** The paint order of a composed page: frames of a layer below 0, the
|
|
26
32
|
* decoration (layer 0), then the frames of layer 0 and up; frames of
|
|
27
33
|
* one layer in template order. Each frame comes with its blocks, in
|
|
28
|
-
* `page.floats` order (its box first).
|
|
29
|
-
|
|
34
|
+
* `page.floats` order (its box first). With `part`, only the frames on
|
|
35
|
+
* that side of the decoration, and no decoration item. */
|
|
36
|
+
export declare function composedPaintOrder(page: VDTPage, part?: ComposedPaintPart): ComposedPaintItem[];
|
|
30
37
|
/** The items of a paint order (`composedPaintOrder`) in reading order
|
|
31
38
|
* (#862): the decoration first, then the frames by the Markdown order of
|
|
32
39
|
* their content (the lowest content index of their blocks; a frame with
|
|
@@ -45,15 +52,27 @@ export declare function composedSheetClip(page: Pick<VDTPage, 'composed'>): {
|
|
|
45
52
|
width: number;
|
|
46
53
|
height: number;
|
|
47
54
|
} | undefined;
|
|
55
|
+
type Affine = [number, number, number, number, number, number];
|
|
48
56
|
/** The affine matrix `[a, b, c, d, e, f]` (canvas `transform` order,
|
|
49
|
-
* y down) that
|
|
50
|
-
* of its box;
|
|
51
|
-
|
|
57
|
+
* y down) that puts a frame's blocks on the sheet: scaled by the frame's
|
|
58
|
+
* text `scale` about the top-left of its box (#858; the blocks are laid
|
|
59
|
+
* out `1 / scale` as large), then turned `rotate` degrees clockwise about
|
|
60
|
+
* the centre of its box. Undefined for an upright frame at full size. */
|
|
61
|
+
export declare function frameMatrix(frame: Pick<VDTFrame, 'rect' | 'rotate'> & Partial<Pick<VDTFrame, 'scale'>>): Affine | undefined;
|
|
62
|
+
/** A frame's box in its blocks' own coordinates: `rect` itself, or, for a
|
|
63
|
+
* frame whose text the reflow ladder scaled (#858), the larger box its
|
|
64
|
+
* content was laid out in. Backends clip to it under {@link frameMatrix}. */
|
|
65
|
+
export declare function frameContentRect(frame: Pick<VDTFrame, 'rect'> & Partial<Pick<VDTFrame, 'scale'>>): {
|
|
66
|
+
x: number;
|
|
67
|
+
y: number;
|
|
68
|
+
width: number;
|
|
69
|
+
height: number;
|
|
70
|
+
};
|
|
52
71
|
/** Whether a frame's content is clipped to its box: some of it runs past
|
|
53
72
|
* the frame's foot. */
|
|
54
73
|
export declare function frameClips(frame: Pick<VDTFrame, 'overflowPx'>): boolean;
|
|
55
74
|
/** The axis-aligned box a frame covers on the page once turned. */
|
|
56
|
-
export declare function frameBounds(frame: Pick<VDTFrame, 'rect' | 'rotate'>): {
|
|
75
|
+
export declare function frameBounds(frame: Pick<VDTFrame, 'rect' | 'rotate'> & Partial<Pick<VDTFrame, 'scale'>>): {
|
|
57
76
|
x: number;
|
|
58
77
|
y: number;
|
|
59
78
|
width: number;
|
|
@@ -61,4 +80,5 @@ export declare function frameBounds(frame: Pick<VDTFrame, 'rect' | 'rotate'>): {
|
|
|
61
80
|
};
|
|
62
81
|
/** The frame of `composed` holding block `id`, if any. */
|
|
63
82
|
export declare function frameOfBlock(composed: VDTComposedPage | undefined, id: string): VDTFrame | undefined;
|
|
83
|
+
export {};
|
|
64
84
|
//# sourceMappingURL=paint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"paint.d.ts","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE3E,iDAAiD;AACjD,MAAM,MAAM,iBAAiB;AAC3B;4DAC4D;AAC1D;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC;AAE3B;;qDAEqD;AACrD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAIhE;AAED;;;kBAGkB;AAClB,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,CAAC;AAElD;;;;2DAI2D;AAC3D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,CAiC/F;AAED;;;;;;+CAM+C;AAC/C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,GAAG,iBAAiB,EAAE,CAoB7F;AAED;;;YAGY;AACZ,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAEtI;AAED,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAmB/D;;;;0EAI0E;AAC1E,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,GAAG,SAAS,CAY3H;AAED;;8EAE8E;AAC9E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAI1J;AAED;wBACwB;AACxB,wBAAgB,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,OAAO,CAEvE;AAED,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAahK;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,SAAS,EAAE,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEpG"}
|
package/dist/composed/paint.js
CHANGED
|
@@ -11,8 +11,14 @@ export function composedFrameBlockIds(page) {
|
|
|
11
11
|
/** The paint order of a composed page: frames of a layer below 0, the
|
|
12
12
|
* decoration (layer 0), then the frames of layer 0 and up; frames of
|
|
13
13
|
* one layer in template order. Each frame comes with its blocks, in
|
|
14
|
-
* `page.floats` order (its box first).
|
|
15
|
-
|
|
14
|
+
* `page.floats` order (its box first). With `part`, only the frames on
|
|
15
|
+
* that side of the decoration, and no decoration item. */
|
|
16
|
+
export function composedPaintOrder(page, part) {
|
|
17
|
+
if (part) {
|
|
18
|
+
const all = composedPaintOrder(page);
|
|
19
|
+
const at = all.findIndex((item) => item.kind === 'decoration');
|
|
20
|
+
return part === 'below' ? all.slice(0, at) : all.slice(at + 1);
|
|
21
|
+
}
|
|
16
22
|
const composed = page.composed;
|
|
17
23
|
if (!composed)
|
|
18
24
|
return [];
|
|
@@ -86,19 +92,47 @@ export function composedReadingOrder(paint) {
|
|
|
86
92
|
export function composedSheetClip(page) {
|
|
87
93
|
return page.composed?.sheetClip;
|
|
88
94
|
}
|
|
95
|
+
/** `m` then `n` (canvas `transform` order): the matrix of applying `n`
|
|
96
|
+
* first, then `m`. */
|
|
97
|
+
const multiply = (m, n) => [
|
|
98
|
+
m[0] * n[0] + m[2] * n[1],
|
|
99
|
+
m[1] * n[0] + m[3] * n[1],
|
|
100
|
+
m[0] * n[2] + m[2] * n[3],
|
|
101
|
+
m[1] * n[2] + m[3] * n[3],
|
|
102
|
+
m[0] * n[4] + m[2] * n[5] + m[4],
|
|
103
|
+
m[1] * n[4] + m[3] * n[5] + m[5],
|
|
104
|
+
];
|
|
105
|
+
/** The text scale of a frame, 1 when it has none (#858). */
|
|
106
|
+
const scaleOf = (frame) => {
|
|
107
|
+
const s = frame.scale;
|
|
108
|
+
return s !== undefined && Number.isFinite(s) && s > 0 && Math.abs(s - 1) > 1e-9 ? s : 1;
|
|
109
|
+
};
|
|
89
110
|
/** The affine matrix `[a, b, c, d, e, f]` (canvas `transform` order,
|
|
90
|
-
* y down) that
|
|
91
|
-
* of its box;
|
|
111
|
+
* y down) that puts a frame's blocks on the sheet: scaled by the frame's
|
|
112
|
+
* text `scale` about the top-left of its box (#858; the blocks are laid
|
|
113
|
+
* out `1 / scale` as large), then turned `rotate` degrees clockwise about
|
|
114
|
+
* the centre of its box. Undefined for an upright frame at full size. */
|
|
92
115
|
export function frameMatrix(frame) {
|
|
116
|
+
const s = scaleOf(frame);
|
|
117
|
+
const scaled = s === 1 ? undefined : [s, 0, 0, s, frame.rect.x * (1 - s), frame.rect.y * (1 - s)];
|
|
93
118
|
const deg = frame.rotate % 360;
|
|
94
119
|
if (!Number.isFinite(deg) || Math.abs(deg) < 1e-9)
|
|
95
|
-
return
|
|
120
|
+
return scaled;
|
|
96
121
|
const t = (deg * Math.PI) / 180;
|
|
97
122
|
const cos = Math.cos(t);
|
|
98
123
|
const sin = Math.sin(t);
|
|
99
124
|
const cx = frame.rect.x + frame.rect.width / 2;
|
|
100
125
|
const cy = frame.rect.y + frame.rect.height / 2;
|
|
101
|
-
|
|
126
|
+
const turn = [cos, sin, -sin, cos, cx - cos * cx + sin * cy, cy - sin * cx - cos * cy];
|
|
127
|
+
return scaled ? multiply(turn, scaled) : turn;
|
|
128
|
+
}
|
|
129
|
+
/** A frame's box in its blocks' own coordinates: `rect` itself, or, for a
|
|
130
|
+
* frame whose text the reflow ladder scaled (#858), the larger box its
|
|
131
|
+
* content was laid out in. Backends clip to it under {@link frameMatrix}. */
|
|
132
|
+
export function frameContentRect(frame) {
|
|
133
|
+
const s = scaleOf(frame);
|
|
134
|
+
const r = frame.rect;
|
|
135
|
+
return s === 1 ? { ...r } : { x: r.x, y: r.y, width: r.width / s, height: r.height / s };
|
|
102
136
|
}
|
|
103
137
|
/** Whether a frame's content is clipped to its box: some of it runs past
|
|
104
138
|
* the frame's foot. */
|
|
@@ -108,7 +142,7 @@ export function frameClips(frame) {
|
|
|
108
142
|
/** The axis-aligned box a frame covers on the page once turned. */
|
|
109
143
|
export function frameBounds(frame) {
|
|
110
144
|
const m = frameMatrix(frame);
|
|
111
|
-
const r = frame
|
|
145
|
+
const r = frameContentRect(frame);
|
|
112
146
|
if (!m)
|
|
113
147
|
return { ...r };
|
|
114
148
|
const pts = [[r.x, r.y], [r.x + r.width, r.y], [r.x, r.y + r.height], [r.x + r.width, r.y + r.height]].map(([x, y]) => [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"paint.js","sourceRoot":"","sources":["../../src/composed/paint.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* template declares it (its fixed size, or its `minHeight` when its height
|
|
6
6
|
* follows its content) is compared with the box the layout gave it.
|
|
7
7
|
*/
|
|
8
|
-
import type { ReflowEvent, VDTDocument } from '../vdt';
|
|
8
|
+
import type { FrameFitStep, FrameOverflowProposal, ReflowEvent, VDTDocument } from '../vdt';
|
|
9
9
|
import type { Rect } from './geometry';
|
|
10
10
|
/** A frame's declared and final boxes, and the names whose change moves
|
|
11
11
|
* it (what it anchors to, the frames before it in its group), nearest
|
|
@@ -20,8 +20,20 @@ export interface FrameMotion {
|
|
|
20
20
|
* per frame its size first (height, then width), then its moves. */
|
|
21
21
|
export declare function reflowEvents(motions: readonly FrameMotion[], pxPerMm: number): ReflowEvent[];
|
|
22
22
|
/** One event in words, in English (the command line's language):
|
|
23
|
-
* «dinero grew 8 mm», «gasto moved down 8 mm», «foto narrowed 4 mm
|
|
23
|
+
* «dinero grew 8 mm», «gasto moved down 8 mm», «foto narrowed 4 mm»,
|
|
24
|
+
* «dinero continued on page 9» (the page's index + 1; `composedReflowLog`
|
|
25
|
+
* names it by its printed number). */
|
|
24
26
|
export declare function describeReflowEvent(e: ReflowEvent): string;
|
|
27
|
+
/** A step of the reflow ladder in words, in English (#858): «text down to
|
|
28
|
+
* 90 %». `scale` / `imageScale`: where the frame's text and pictures were
|
|
29
|
+
* left. */
|
|
30
|
+
export declare function describeFitStep(step: FrameFitStep, at?: {
|
|
31
|
+
scale?: number;
|
|
32
|
+
imageScale?: number;
|
|
33
|
+
}): string;
|
|
34
|
+
/** A fix of a `frameOverflow` in words, in English (#858): «raise
|
|
35
|
+
* maxHeight to 64 mm». */
|
|
36
|
+
export declare function describeFrameOverflowProposal(p: FrameOverflowProposal): string;
|
|
25
37
|
/** A composed page's log, for the command line and the Sandbox. */
|
|
26
38
|
export interface ComposedPageReflow {
|
|
27
39
|
/** Book-absolute page index (`VDTPage.index`). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reflowLog.d.ts","sourceRoot":"","sources":["../../src/composed/reflowLog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"reflowLog.d.ts","sourceRoot":"","sources":["../../src/composed/reflowLog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC5F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC;;aAEa;AACb,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AASD;qEACqE;AACrE,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA8D5F;AAKD;;;uCAGuC;AACvC,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAE1D;AA8BD;;YAEY;AACZ,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAiB5G;AAID;2BAC2B;AAC3B,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAiB9E;AAED,mEAAmE;AACnE,MAAM,WAAW,kBAAkB;IACjC,kDAAkD;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,yDAAyD;IACzD,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,mEAAmE;AACnE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,kBAAkB,EAAE,CAmBvF"}
|