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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contour/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
import { decodePngAlpha, isPng } from './png';
|
|
2
|
+
export { decodePngAlpha, isPng } from './png';
|
|
3
|
+
/** `ResourceContour.threshold` when unset. */
|
|
4
|
+
export const DEFAULT_CONTOUR_THRESHOLD = 0.5;
|
|
5
|
+
/** The most rows a picture is cut into. */
|
|
6
|
+
export const MAX_CONTOUR_ROWS = 256;
|
|
7
|
+
/** The threshold a contour reads its alpha channel at, 0 to 1. */
|
|
8
|
+
export function contourThreshold(contour) {
|
|
9
|
+
const t = contour?.threshold;
|
|
10
|
+
return typeof t === 'number' && Number.isFinite(t) ? Math.min(1, Math.max(0, t)) : DEFAULT_CONTOUR_THRESHOLD;
|
|
11
|
+
}
|
|
12
|
+
/** Whether the contour's polygon can be used: three points or more, all
|
|
13
|
+
* finite. */
|
|
14
|
+
export function contourPolygon(contour) {
|
|
15
|
+
const pts = contour?.points;
|
|
16
|
+
if (!Array.isArray(pts) || pts.length < 3)
|
|
17
|
+
return undefined;
|
|
18
|
+
return pts.every((p) => p && Number.isFinite(p.x) && Number.isFinite(p.y)) ? pts : undefined;
|
|
19
|
+
}
|
|
20
|
+
/** Whether a resource's shape is read from its alpha channel: a bitmap
|
|
21
|
+
* with no polygon whose contour does not turn the alpha channel off. */
|
|
22
|
+
export function contourWantsAlpha(resource) {
|
|
23
|
+
return resource.kind === 'bitmap' && !contourPolygon(resource.contour) && resource.contour?.alpha !== false;
|
|
24
|
+
}
|
|
25
|
+
const round4 = (n) => Math.round(n * 10000) / 10000;
|
|
26
|
+
/**
|
|
27
|
+
* Trace an alpha raster at `threshold` (0 to 1): the picture is cut into
|
|
28
|
+
* at most {@link MAX_CONTOUR_ROWS} rows, and each row keeps the leftmost
|
|
29
|
+
* and rightmost edge of the pixels at least that opaque.
|
|
30
|
+
*/
|
|
31
|
+
export function traceAlpha(raster, threshold, fileId) {
|
|
32
|
+
const { width, height, alpha } = raster;
|
|
33
|
+
const rows = Math.max(1, Math.min(height, MAX_CONTOUR_ROWS));
|
|
34
|
+
// A pixel belongs to the shape from this opacity on (at least 1: a fully
|
|
35
|
+
// transparent pixel never does).
|
|
36
|
+
const min = Math.max(1, Math.ceil(threshold * 255));
|
|
37
|
+
const spans = [];
|
|
38
|
+
for (let r = 0; r < rows; r++) {
|
|
39
|
+
const y0 = Math.floor((r * height) / rows);
|
|
40
|
+
const y1 = Math.max(y0 + 1, Math.floor(((r + 1) * height) / rows));
|
|
41
|
+
let lo = width;
|
|
42
|
+
let hi = -1;
|
|
43
|
+
for (let y = y0; y < y1; y++) {
|
|
44
|
+
const row = y * width;
|
|
45
|
+
for (let x = 0; x < lo; x++) {
|
|
46
|
+
if (alpha[row + x] >= min) {
|
|
47
|
+
lo = x;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
for (let x = width - 1; x > hi; x--) {
|
|
52
|
+
if (alpha[row + x] >= min) {
|
|
53
|
+
hi = x;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (hi < lo)
|
|
59
|
+
spans.push(-1, -1);
|
|
60
|
+
else
|
|
61
|
+
spans.push(round4(lo / width), round4((hi + 1) / width));
|
|
62
|
+
}
|
|
63
|
+
return { fileId, threshold, rows, spans };
|
|
64
|
+
}
|
|
65
|
+
/** The alpha raster of RGBA pixels; `null` when every pixel is opaque. */
|
|
66
|
+
export function alphaOfRgba(pixels) {
|
|
67
|
+
const { width, height, data } = pixels;
|
|
68
|
+
const alpha = new Uint8Array(width * height);
|
|
69
|
+
let any = false;
|
|
70
|
+
for (let i = 0; i < alpha.length; i++) {
|
|
71
|
+
const a = data[i * 4 + 3];
|
|
72
|
+
alpha[i] = a;
|
|
73
|
+
if (a < 255)
|
|
74
|
+
any = true;
|
|
75
|
+
}
|
|
76
|
+
return any ? { width, height, alpha } : null;
|
|
77
|
+
}
|
|
78
|
+
/** The pixel rows the browser decoder reads at most (a large picture is
|
|
79
|
+
* traced from a smaller copy: rows are cut at 256 anyway). */
|
|
80
|
+
const DECODE_MAX = 1024;
|
|
81
|
+
async function decodeInBrowser(bytes, mime) {
|
|
82
|
+
const g = globalThis;
|
|
83
|
+
if (!g.createImageBitmap || !g.OffscreenCanvas || typeof Blob === 'undefined')
|
|
84
|
+
return undefined;
|
|
85
|
+
try {
|
|
86
|
+
const bitmap = await g.createImageBitmap(new Blob([bytes], { type: mime }));
|
|
87
|
+
const scale = Math.min(1, DECODE_MAX / Math.max(bitmap.width, bitmap.height));
|
|
88
|
+
const w = Math.max(1, Math.round(bitmap.width * scale));
|
|
89
|
+
const h = Math.max(1, Math.round(bitmap.height * scale));
|
|
90
|
+
const ctx = new g.OffscreenCanvas(w, h).getContext('2d');
|
|
91
|
+
if (!ctx)
|
|
92
|
+
return undefined;
|
|
93
|
+
ctx.drawImage(bitmap, 0, 0, w, h);
|
|
94
|
+
bitmap.close?.();
|
|
95
|
+
return ctx.getImageData(0, 0, w, h);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Trace the alpha channel of a bitmap resource from its file's bytes, for
|
|
103
|
+
* `contour.traced` (#883). A PNG is read here, in any host; another format
|
|
104
|
+
* goes through `options.decode` (by default the browser's decoder, where
|
|
105
|
+
* there is one). `null`: the picture has no transparency (a JPEG, an
|
|
106
|
+
* opaque PNG): it has no shape and runs round its box. `undefined`: the
|
|
107
|
+
* resource asks for no alpha contour, or the file cannot be read here.
|
|
108
|
+
*/
|
|
109
|
+
export async function traceResourceContour(resource, bytes, mime, options = {}) {
|
|
110
|
+
if (!contourWantsAlpha(resource) || !resource.bitmap)
|
|
111
|
+
return undefined;
|
|
112
|
+
const fileId = resource.bitmap.fileId;
|
|
113
|
+
const threshold = contourThreshold(resource.contour);
|
|
114
|
+
const u8 = bytes instanceof Uint8Array ? bytes : new Uint8Array(bytes);
|
|
115
|
+
if (isPng(u8)) {
|
|
116
|
+
const raster = decodePngAlpha(u8);
|
|
117
|
+
if (raster)
|
|
118
|
+
return traceAlpha(raster, threshold, fileId);
|
|
119
|
+
if (raster === null)
|
|
120
|
+
return null;
|
|
121
|
+
}
|
|
122
|
+
if (/jpe?g/i.test(mime))
|
|
123
|
+
return null;
|
|
124
|
+
const pixels = await (options.decode ?? decodeInBrowser)(u8, mime);
|
|
125
|
+
if (!pixels)
|
|
126
|
+
return undefined;
|
|
127
|
+
const raster = alphaOfRgba(pixels);
|
|
128
|
+
return raster ? traceAlpha(raster, threshold, fileId) : null;
|
|
129
|
+
}
|
|
130
|
+
/** The resource with `contour.traced` set to `trace` (or cleared). */
|
|
131
|
+
export function withContourTrace(resource, trace) {
|
|
132
|
+
const { traced: _old, ...rest } = resource.contour ?? {};
|
|
133
|
+
void _old;
|
|
134
|
+
return { ...resource, contour: trace ? { ...rest, traced: trace } : rest };
|
|
135
|
+
}
|
|
136
|
+
/** Whether a trace was made from the resource's file at its threshold. */
|
|
137
|
+
function traceFits(resource, trace) {
|
|
138
|
+
if (!trace || !resource.bitmap || trace.fileId !== resource.bitmap.fileId)
|
|
139
|
+
return false;
|
|
140
|
+
if (Math.abs(trace.threshold - contourThreshold(resource.contour)) > 1e-6)
|
|
141
|
+
return false;
|
|
142
|
+
return Number.isInteger(trace.rows) && trace.rows > 0 && Array.isArray(trace.spans) && trace.spans.length === trace.rows * 2;
|
|
143
|
+
}
|
|
144
|
+
const polygonCache = new WeakMap();
|
|
145
|
+
/** A polygon (fractions of the picture) as rows: per row the extent of the
|
|
146
|
+
* polygon's intersection with it. */
|
|
147
|
+
export function polygonRows(points, rows = MAX_CONTOUR_ROWS) {
|
|
148
|
+
const cached = rows === MAX_CONTOUR_ROWS ? polygonCache.get(points) : undefined;
|
|
149
|
+
if (cached)
|
|
150
|
+
return cached;
|
|
151
|
+
const spans = [];
|
|
152
|
+
const n = points.length;
|
|
153
|
+
for (let r = 0; r < rows; r++) {
|
|
154
|
+
const y0 = r / rows;
|
|
155
|
+
const y1 = (r + 1) / rows;
|
|
156
|
+
let lo = Infinity;
|
|
157
|
+
let hi = -Infinity;
|
|
158
|
+
// The band's intersection with the polygon is bounded across by the
|
|
159
|
+
// edges clipped to the band (a vertex inside it included).
|
|
160
|
+
for (let i = 0; i < n; i++) {
|
|
161
|
+
const a = points[i];
|
|
162
|
+
const b = points[(i + 1) % n];
|
|
163
|
+
const top = Math.min(a.y, b.y);
|
|
164
|
+
const bottom = Math.max(a.y, b.y);
|
|
165
|
+
if (bottom < y0 || top > y1)
|
|
166
|
+
continue;
|
|
167
|
+
const xs = [];
|
|
168
|
+
if (Math.abs(b.y - a.y) < 1e-12) {
|
|
169
|
+
xs.push(a.x, b.x);
|
|
170
|
+
}
|
|
171
|
+
else {
|
|
172
|
+
const at = (y) => a.x + ((b.x - a.x) * (y - a.y)) / (b.y - a.y);
|
|
173
|
+
xs.push(at(Math.max(top, y0)), at(Math.min(bottom, y1)));
|
|
174
|
+
}
|
|
175
|
+
for (const x of xs) {
|
|
176
|
+
if (x < lo)
|
|
177
|
+
lo = x;
|
|
178
|
+
if (x > hi)
|
|
179
|
+
hi = x;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (hi < lo)
|
|
183
|
+
spans.push(-1, -1);
|
|
184
|
+
else
|
|
185
|
+
spans.push(round4(Math.max(0, Math.min(1, lo))), round4(Math.max(0, Math.min(1, hi))));
|
|
186
|
+
}
|
|
187
|
+
const out = { rows, spans };
|
|
188
|
+
if (rows === MAX_CONTOUR_ROWS)
|
|
189
|
+
polygonCache.set(points, out);
|
|
190
|
+
return out;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The shape of a resource in rows, when it has one: its polygon, else the
|
|
194
|
+
* alpha channel its host traced (a trace of this file at this threshold).
|
|
195
|
+
* `undefined`: no shape is known (an SVG with no polygon, a bitmap whose
|
|
196
|
+
* alpha channel was not traced, or has no transparency).
|
|
197
|
+
*/
|
|
198
|
+
export function contourRowsOf(resource) {
|
|
199
|
+
const poly = contourPolygon(resource.contour);
|
|
200
|
+
if (poly)
|
|
201
|
+
return polygonRows(poly);
|
|
202
|
+
if (!contourWantsAlpha(resource))
|
|
203
|
+
return undefined;
|
|
204
|
+
const trace = resource.contour?.traced;
|
|
205
|
+
return traceFits(resource, trace) ? trace : undefined;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* The shape of a picture set on the page as `rb` (its body at
|
|
209
|
+
* `rb.bodyRect` from the block's origin, showing `rb.bodySource` of the
|
|
210
|
+
* picture: the crop within its safe area), in page px: the shape's rows
|
|
211
|
+
* inside the crop, scaled to the body; and `box` (page px), the rest of
|
|
212
|
+
* the figure (its caption and note under the picture) as bands of its own
|
|
213
|
+
* width. `undefined` when the resource
|
|
214
|
+
* has no known shape.
|
|
215
|
+
*/
|
|
216
|
+
export function contourOnPage(resource, rb, box, options) {
|
|
217
|
+
const shape = contourRowsOf(resource);
|
|
218
|
+
if (!shape)
|
|
219
|
+
return undefined;
|
|
220
|
+
const body = { x: rb.bodyRect.x + (options.originX ?? 0), y: rb.bodyRect.y + (options.originY ?? 0), width: rb.bodyRect.width, height: rb.bodyRect.height };
|
|
221
|
+
if (!(body.width > 0) || !(body.height > 0))
|
|
222
|
+
return undefined;
|
|
223
|
+
const crop = rb.bodySource ?? { x: 0, y: 0, width: 1, height: 1 };
|
|
224
|
+
if (!(crop.width > 0) || !(crop.height > 0))
|
|
225
|
+
return undefined;
|
|
226
|
+
const spans = [];
|
|
227
|
+
const push = (s) => {
|
|
228
|
+
const last = spans[spans.length - 1];
|
|
229
|
+
if (last && Math.abs(last.left - s.left) < 0.01 && Math.abs(last.right - s.right) < 0.01 && Math.abs(last.y + last.height - s.y) < 0.01) {
|
|
230
|
+
last.height = s.y + s.height - last.y;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
spans.push(s);
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
const cropRight = crop.x + crop.width;
|
|
237
|
+
const cropBottom = crop.y + crop.height;
|
|
238
|
+
for (let r = 0; r < shape.rows; r++) {
|
|
239
|
+
const l = shape.spans[r * 2];
|
|
240
|
+
const rr = shape.spans[r * 2 + 1];
|
|
241
|
+
if (l < 0 || rr < 0)
|
|
242
|
+
continue;
|
|
243
|
+
const sy0 = Math.max(crop.y, r / shape.rows);
|
|
244
|
+
const sy1 = Math.min(cropBottom, (r + 1) / shape.rows);
|
|
245
|
+
if (sy1 <= sy0)
|
|
246
|
+
continue;
|
|
247
|
+
const sl = Math.max(crop.x, l);
|
|
248
|
+
const sr = Math.min(cropRight, rr);
|
|
249
|
+
if (sr <= sl)
|
|
250
|
+
continue;
|
|
251
|
+
let u0 = (sl - crop.x) / crop.width;
|
|
252
|
+
let u1 = (sr - crop.x) / crop.width;
|
|
253
|
+
if (options.mirrored)
|
|
254
|
+
[u0, u1] = [1 - u1, 1 - u0];
|
|
255
|
+
const y = body.y + ((sy0 - crop.y) / crop.height) * body.height;
|
|
256
|
+
const yEnd = body.y + ((sy1 - crop.y) / crop.height) * body.height;
|
|
257
|
+
push({ y, height: yEnd - y, left: body.x + u0 * body.width, right: body.x + u1 * body.width });
|
|
258
|
+
}
|
|
259
|
+
if (box) {
|
|
260
|
+
// The caption and note keep their box: the figure's width, above or
|
|
261
|
+
// under the picture.
|
|
262
|
+
const bx = box.x;
|
|
263
|
+
const by = box.y;
|
|
264
|
+
const bottom = by + box.height;
|
|
265
|
+
if (body.y > by + 0.5)
|
|
266
|
+
spans.unshift({ y: by, height: body.y - by, left: bx, right: bx + box.width });
|
|
267
|
+
const bodyBottom = body.y + body.height;
|
|
268
|
+
if (bottom > bodyBottom + 0.5)
|
|
269
|
+
push({ y: bodyBottom, height: bottom - bodyBottom, left: bx, right: bx + box.width });
|
|
270
|
+
}
|
|
271
|
+
return { spans, margin: Math.max(0, options.margin), ...(options.quantum && options.quantum > 0 ? { quantum: options.quantum } : {}) };
|
|
272
|
+
}
|
|
273
|
+
/** A contour moved by `(dx, dy)`. */
|
|
274
|
+
export function shiftContour(c, dx, dy) {
|
|
275
|
+
return { ...c, spans: c.spans.map((s) => ({ y: s.y + dy, height: s.height, left: s.left + dx, right: s.right + dx })) };
|
|
276
|
+
}
|
|
277
|
+
/** A contour scaled by `s` about `(ox, oy)`: a frame's content laid out
|
|
278
|
+
* at another scale than it is painted (#858). `margin: false` keeps the
|
|
279
|
+
* margin (and the CJK quantum) as they are: they are page px already. */
|
|
280
|
+
export function scaleContourAbout(c, ox, oy, s, margin = true) {
|
|
281
|
+
return {
|
|
282
|
+
spans: c.spans.map((sp) => ({ y: oy + (sp.y - oy) * s, height: sp.height * s, left: ox + (sp.left - ox) * s, right: ox + (sp.right - ox) * s })),
|
|
283
|
+
margin: margin ? c.margin * s : c.margin,
|
|
284
|
+
...(c.quantum !== undefined ? { quantum: margin ? c.quantum * s : c.quantum } : {}),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/** The contour's bounds, its margin included. */
|
|
288
|
+
export function contourBounds(c) {
|
|
289
|
+
if (c.spans.length === 0)
|
|
290
|
+
return undefined;
|
|
291
|
+
let x0 = Infinity;
|
|
292
|
+
let y0 = Infinity;
|
|
293
|
+
let x1 = -Infinity;
|
|
294
|
+
let y1 = -Infinity;
|
|
295
|
+
for (const s of c.spans) {
|
|
296
|
+
x0 = Math.min(x0, s.left);
|
|
297
|
+
x1 = Math.max(x1, s.right);
|
|
298
|
+
y0 = Math.min(y0, s.y);
|
|
299
|
+
y1 = Math.max(y1, s.y + s.height);
|
|
300
|
+
}
|
|
301
|
+
const m = c.margin;
|
|
302
|
+
return { x: x0 - m, y: y0 - m, width: x1 - x0 + 2 * m, height: y1 - y0 + 2 * m };
|
|
303
|
+
}
|
|
304
|
+
/** The shape's extent across the band `[top, bottom]` of the page: the
|
|
305
|
+
* spans that lie within its margin of it. `undefined`: the band passes
|
|
306
|
+
* clear of the shape. */
|
|
307
|
+
export function contourExtent(c, top, bottom) {
|
|
308
|
+
let left = Infinity;
|
|
309
|
+
let right = -Infinity;
|
|
310
|
+
const m = c.margin;
|
|
311
|
+
for (const s of c.spans) {
|
|
312
|
+
if (s.y + s.height <= top - m + 0.01 || s.y >= bottom + m - 0.01)
|
|
313
|
+
continue;
|
|
314
|
+
if (s.left < left)
|
|
315
|
+
left = s.left;
|
|
316
|
+
if (s.right > right)
|
|
317
|
+
right = s.right;
|
|
318
|
+
}
|
|
319
|
+
return right > left ? { left: left - m, right: right + m } : undefined;
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* The insets of lines `from` to `to` (0-based, of a text whose line 0's
|
|
323
|
+
* top is at `y0`, lines `lineHeight` apart) beside a shape at `side` of a
|
|
324
|
+
* measure `[x, x + width]`: each line is set short by the room the shape
|
|
325
|
+
* takes across its band (its margin included), none where it passes clear
|
|
326
|
+
* of it. Line numbers in the steps count from `firstLine`.
|
|
327
|
+
*/
|
|
328
|
+
export function contourInsetSteps(c, side, x, width, y0, lineHeight, from, to, firstLine = 0) {
|
|
329
|
+
const steps = [];
|
|
330
|
+
const right = x + width;
|
|
331
|
+
for (let li = from; li <= to; li++) {
|
|
332
|
+
const top = y0 + li * lineHeight;
|
|
333
|
+
const ext = contourExtent(c, top, top + lineHeight);
|
|
334
|
+
let inset = 0;
|
|
335
|
+
if (ext)
|
|
336
|
+
inset = side === 'left' ? ext.right - x : right - ext.left;
|
|
337
|
+
inset = Math.max(0, Math.min(width, inset));
|
|
338
|
+
if (c.quantum && inset > 0)
|
|
339
|
+
inset = Math.min(width, Math.ceil((inset - 0.01) / c.quantum) * c.quantum);
|
|
340
|
+
if (inset <= 0.01)
|
|
341
|
+
continue;
|
|
342
|
+
const last = steps[steps.length - 1];
|
|
343
|
+
const startInsetPx = side === 'left' ? inset : 0;
|
|
344
|
+
const endInsetPx = side === 'right' ? inset : 0;
|
|
345
|
+
if (last && last.toLine === firstLine + li - 1 && Math.abs(last.startInsetPx - startInsetPx) < 0.01 && Math.abs(last.endInsetPx - endInsetPx) < 0.01) {
|
|
346
|
+
last.toLine = firstLine + li;
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
steps.push({ fromLine: firstLine + li, toLine: firstLine + li, startInsetPx, endInsetPx });
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
return steps;
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contour/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** One byte of opacity per pixel, row by row (0 transparent, 255 opaque). */
|
|
2
|
+
export interface AlphaRaster {
|
|
3
|
+
width: number;
|
|
4
|
+
height: number;
|
|
5
|
+
alpha: Uint8Array;
|
|
6
|
+
}
|
|
7
|
+
/** Whether `bytes` start as a PNG file. */
|
|
8
|
+
export declare function isPng(bytes: Uint8Array): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* The opacity of every pixel of a PNG. `null` when the picture has no
|
|
11
|
+
* transparency at all (no alpha channel and no `tRNS` chunk: every pixel
|
|
12
|
+
* is opaque); `undefined` when the file cannot be read here (not a PNG,
|
|
13
|
+
* damaged, interlaced).
|
|
14
|
+
*/
|
|
15
|
+
export declare function decodePngAlpha(input: ArrayBuffer | Uint8Array): AlphaRaster | null | undefined;
|
|
16
|
+
//# sourceMappingURL=png.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png.d.ts","sourceRoot":"","sources":["../../src/contour/png.ts"],"names":[],"mappings":"AAQA,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAMD,2CAA2C;AAC3C,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CA2H9F"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The alpha channel of a PNG, read synchronously (#883): the shape a
|
|
3
|
+
* contour wrap runs round is traced from it in any host, the browser's
|
|
4
|
+
* layout worker and Node alike, with no canvas. Only what the trace needs
|
|
5
|
+
* is decoded: the opacity of every pixel.
|
|
6
|
+
*/
|
|
7
|
+
import { unzlibSync } from 'fflate';
|
|
8
|
+
const SIGNATURE = [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a];
|
|
9
|
+
/** Channels per pixel by colour type. */
|
|
10
|
+
const CHANNELS = { 0: 1, 2: 3, 3: 1, 4: 2, 6: 4 };
|
|
11
|
+
/** Whether `bytes` start as a PNG file. */
|
|
12
|
+
export function isPng(bytes) {
|
|
13
|
+
if (bytes.length < 8)
|
|
14
|
+
return false;
|
|
15
|
+
for (let i = 0; i < 8; i++)
|
|
16
|
+
if (bytes[i] !== SIGNATURE[i])
|
|
17
|
+
return false;
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The opacity of every pixel of a PNG. `null` when the picture has no
|
|
22
|
+
* transparency at all (no alpha channel and no `tRNS` chunk: every pixel
|
|
23
|
+
* is opaque); `undefined` when the file cannot be read here (not a PNG,
|
|
24
|
+
* damaged, interlaced).
|
|
25
|
+
*/
|
|
26
|
+
export function decodePngAlpha(input) {
|
|
27
|
+
const bytes = input instanceof Uint8Array ? input : new Uint8Array(input);
|
|
28
|
+
if (!isPng(bytes))
|
|
29
|
+
return undefined;
|
|
30
|
+
const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
31
|
+
let width = 0;
|
|
32
|
+
let height = 0;
|
|
33
|
+
let depth = 0;
|
|
34
|
+
let type = -1;
|
|
35
|
+
let interlace = 0;
|
|
36
|
+
let trns;
|
|
37
|
+
const idat = [];
|
|
38
|
+
let at = 8;
|
|
39
|
+
while (at + 8 <= bytes.length) {
|
|
40
|
+
const len = view.getUint32(at);
|
|
41
|
+
const name = String.fromCharCode(bytes[at + 4], bytes[at + 5], bytes[at + 6], bytes[at + 7]);
|
|
42
|
+
const data = bytes.subarray(at + 8, at + 8 + len);
|
|
43
|
+
if (data.length < len)
|
|
44
|
+
return undefined;
|
|
45
|
+
if (name === 'IHDR') {
|
|
46
|
+
width = view.getUint32(at + 8);
|
|
47
|
+
height = view.getUint32(at + 12);
|
|
48
|
+
depth = bytes[at + 16];
|
|
49
|
+
type = bytes[at + 17];
|
|
50
|
+
interlace = bytes[at + 20];
|
|
51
|
+
}
|
|
52
|
+
else if (name === 'tRNS') {
|
|
53
|
+
trns = data;
|
|
54
|
+
}
|
|
55
|
+
else if (name === 'IDAT') {
|
|
56
|
+
idat.push(data);
|
|
57
|
+
}
|
|
58
|
+
else if (name === 'IEND') {
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
at += 12 + len;
|
|
62
|
+
}
|
|
63
|
+
const channels = CHANNELS[type];
|
|
64
|
+
if (!channels || width <= 0 || height <= 0 || idat.length === 0 || interlace !== 0)
|
|
65
|
+
return undefined;
|
|
66
|
+
if (![1, 2, 4, 8, 16].includes(depth))
|
|
67
|
+
return undefined;
|
|
68
|
+
const hasAlpha = type === 4 || type === 6;
|
|
69
|
+
if (!hasAlpha && !trns)
|
|
70
|
+
return null;
|
|
71
|
+
let total = 0;
|
|
72
|
+
for (const d of idat)
|
|
73
|
+
total += d.length;
|
|
74
|
+
const packed = new Uint8Array(total);
|
|
75
|
+
let off = 0;
|
|
76
|
+
for (const d of idat) {
|
|
77
|
+
packed.set(d, off);
|
|
78
|
+
off += d.length;
|
|
79
|
+
}
|
|
80
|
+
let raw;
|
|
81
|
+
try {
|
|
82
|
+
raw = unzlibSync(packed);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
const bitsPerPixel = channels * depth;
|
|
88
|
+
const stride = Math.ceil((width * bitsPerPixel) / 8);
|
|
89
|
+
const bpp = Math.max(1, bitsPerPixel >> 3);
|
|
90
|
+
if (raw.length < (stride + 1) * height)
|
|
91
|
+
return undefined;
|
|
92
|
+
const alpha = new Uint8Array(width * height);
|
|
93
|
+
let prev = new Uint8Array(stride);
|
|
94
|
+
let cur = new Uint8Array(stride);
|
|
95
|
+
const sample = (row, index) => {
|
|
96
|
+
// The `index`-th sample of the row, at the file's bit depth.
|
|
97
|
+
if (depth === 8)
|
|
98
|
+
return row[index];
|
|
99
|
+
if (depth === 16)
|
|
100
|
+
return (row[index * 2] << 8) | row[index * 2 + 1];
|
|
101
|
+
const bit = index * depth;
|
|
102
|
+
const byte = row[bit >> 3];
|
|
103
|
+
const shift = 8 - depth - (bit & 7);
|
|
104
|
+
return (byte >> shift) & ((1 << depth) - 1);
|
|
105
|
+
};
|
|
106
|
+
const max = (1 << depth) - 1;
|
|
107
|
+
const keyOf = (i) => (trns && trns.length >= (i + 1) * 2 ? (trns[i * 2] << 8) | trns[i * 2 + 1] : -1);
|
|
108
|
+
const key = type === 0 ? keyOf(0) : -1;
|
|
109
|
+
const keyRgb = type === 2 ? [keyOf(0), keyOf(1), keyOf(2)] : undefined;
|
|
110
|
+
for (let y = 0; y < height; y++) {
|
|
111
|
+
const base = y * (stride + 1);
|
|
112
|
+
const filter = raw[base];
|
|
113
|
+
for (let i = 0; i < stride; i++) {
|
|
114
|
+
const x = raw[base + 1 + i];
|
|
115
|
+
const a = i >= bpp ? cur[i - bpp] : 0;
|
|
116
|
+
const b = prev[i];
|
|
117
|
+
const c = i >= bpp ? prev[i - bpp] : 0;
|
|
118
|
+
let v;
|
|
119
|
+
switch (filter) {
|
|
120
|
+
case 0:
|
|
121
|
+
v = x;
|
|
122
|
+
break;
|
|
123
|
+
case 1:
|
|
124
|
+
v = x + a;
|
|
125
|
+
break;
|
|
126
|
+
case 2:
|
|
127
|
+
v = x + b;
|
|
128
|
+
break;
|
|
129
|
+
case 3:
|
|
130
|
+
v = x + ((a + b) >> 1);
|
|
131
|
+
break;
|
|
132
|
+
case 4: {
|
|
133
|
+
const p = a + b - c;
|
|
134
|
+
const pa = Math.abs(p - a);
|
|
135
|
+
const pb = Math.abs(p - b);
|
|
136
|
+
const pc = Math.abs(p - c);
|
|
137
|
+
v = x + (pa <= pb && pa <= pc ? a : pb <= pc ? b : c);
|
|
138
|
+
break;
|
|
139
|
+
}
|
|
140
|
+
default: return undefined;
|
|
141
|
+
}
|
|
142
|
+
cur[i] = v & 0xff;
|
|
143
|
+
}
|
|
144
|
+
const row = y * width;
|
|
145
|
+
for (let px = 0; px < width; px++) {
|
|
146
|
+
let o;
|
|
147
|
+
if (type === 6)
|
|
148
|
+
o = sample(cur, px * 4 + 3);
|
|
149
|
+
else if (type === 4)
|
|
150
|
+
o = sample(cur, px * 2 + 1);
|
|
151
|
+
else if (type === 3) {
|
|
152
|
+
const idx = sample(cur, px);
|
|
153
|
+
alpha[row + px] = trns && idx < trns.length ? trns[idx] : 255;
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
else if (type === 0) {
|
|
157
|
+
o = sample(cur, px) === key ? 0 : max;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
const r = sample(cur, px * 3);
|
|
161
|
+
const g = sample(cur, px * 3 + 1);
|
|
162
|
+
const bl = sample(cur, px * 3 + 2);
|
|
163
|
+
o = keyRgb && r === keyRgb[0] && g === keyRgb[1] && bl === keyRgb[2] ? 0 : max;
|
|
164
|
+
}
|
|
165
|
+
alpha[row + px] = depth === 8 ? o : Math.round((o / max) * 255);
|
|
166
|
+
}
|
|
167
|
+
const t = prev;
|
|
168
|
+
prev = cur;
|
|
169
|
+
cur = t;
|
|
170
|
+
}
|
|
171
|
+
return { width, height, alpha };
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=png.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/contour/png.ts"],"names":[],"mappings":"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"}
|
package/dist/contrast.d.ts
CHANGED
|
@@ -28,9 +28,11 @@
|
|
|
28
28
|
* What it reads: the lines of every block (inline bold, italic, reference
|
|
29
29
|
* and chip colours included), list markers, drop caps, captions, notes and
|
|
30
30
|
* table cells, and the text of design slots (running heads, openers,
|
|
31
|
-
* heading designs, box titles). The ground
|
|
32
|
-
* text: a design box, a callout, a caption
|
|
33
|
-
*
|
|
31
|
+
* heading designs, box titles, a composed page's decoration). The ground
|
|
32
|
+
* is the topmost fill under the text: a design box, a callout, a caption
|
|
33
|
+
* bar, a table cell, a chip, the box of a composed page's frame or the
|
|
34
|
+
* template decoration under it (in the page's paint order,
|
|
35
|
+
* `composedPaintOrder`), else the page's paper colour; a translucent colour is blended with what is
|
|
34
36
|
* under it. Text over a picture is skipped (its ground is not a colour),
|
|
35
37
|
* as are comic lettering, ruby and formulas.
|
|
36
38
|
*/
|
package/dist/contrast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../src/contrast.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../src/contrast.ts"],"names":[],"mappings":"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"}
|