@hexpro/qr-code-studio 0.0.0-stage → 0.1.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/CHANGELOG.md +37 -0
- package/LICENSE +21 -0
- package/README.md +62 -2
- package/dist/app/bulk.d.ts +21 -0
- package/dist/app/bulk.d.ts.map +1 -0
- package/dist/app/bulk.js +564 -0
- package/dist/app/bulk.js.map +1 -0
- package/dist/app/check.d.ts +23 -0
- package/dist/app/check.d.ts.map +1 -0
- package/dist/app/check.js +306 -0
- package/dist/app/check.js.map +1 -0
- package/dist/app/content.d.ts +19 -0
- package/dist/app/content.d.ts.map +1 -0
- package/dist/app/content.js +634 -0
- package/dist/app/content.js.map +1 -0
- package/dist/app/context.d.ts +25 -0
- package/dist/app/context.d.ts.map +1 -0
- package/dist/app/context.js +11 -0
- package/dist/app/context.js.map +1 -0
- package/dist/app/controls.d.ts +95 -0
- package/dist/app/controls.d.ts.map +1 -0
- package/dist/app/controls.js +272 -0
- package/dist/app/controls.js.map +1 -0
- package/dist/app/design-panels.d.ts +27 -0
- package/dist/app/design-panels.d.ts.map +1 -0
- package/dist/app/design-panels.js +1196 -0
- package/dist/app/design-panels.js.map +1 -0
- package/dist/app/dom.d.ts +74 -0
- package/dist/app/dom.d.ts.map +1 -0
- package/dist/app/dom.js +129 -0
- package/dist/app/dom.js.map +1 -0
- package/dist/app/images.d.ts +22 -0
- package/dist/app/images.d.ts.map +1 -0
- package/dist/app/images.js +50 -0
- package/dist/app/images.js.map +1 -0
- package/dist/app/library-view.d.ts +24 -0
- package/dist/app/library-view.d.ts.map +1 -0
- package/dist/app/library-view.js +260 -0
- package/dist/app/library-view.js.map +1 -0
- package/dist/app/main.d.ts +17 -0
- package/dist/app/main.d.ts.map +1 -0
- package/dist/app/main.js +518 -0
- package/dist/app/main.js.map +1 -0
- package/dist/app/measure.d.ts +26 -0
- package/dist/app/measure.d.ts.map +1 -0
- package/dist/app/measure.js +53 -0
- package/dist/app/measure.js.map +1 -0
- package/dist/app/proof.d.ts +30 -0
- package/dist/app/proof.d.ts.map +1 -0
- package/dist/app/proof.js +378 -0
- package/dist/app/proof.js.map +1 -0
- package/dist/app/save.d.ts +27 -0
- package/dist/app/save.d.ts.map +1 -0
- package/dist/app/save.js +331 -0
- package/dist/app/save.js.map +1 -0
- package/dist/app/scan.d.ts +25 -0
- package/dist/app/scan.d.ts.map +1 -0
- package/dist/app/scan.js +421 -0
- package/dist/app/scan.js.map +1 -0
- package/dist/app/shortcuts.d.ts +12 -0
- package/dist/app/shortcuts.d.ts.map +1 -0
- package/dist/app/shortcuts.js +17 -0
- package/dist/app/shortcuts.js.map +1 -0
- package/dist/app/text.d.ts +22 -0
- package/dist/app/text.d.ts.map +1 -0
- package/dist/app/text.js +50 -0
- package/dist/app/text.js.map +1 -0
- package/dist/batch/csv.d.ts +56 -0
- package/dist/batch/csv.d.ts.map +1 -0
- package/dist/batch/csv.js +327 -0
- package/dist/batch/csv.js.map +1 -0
- package/dist/batch/errors.d.ts +60 -0
- package/dist/batch/errors.d.ts.map +1 -0
- package/dist/batch/errors.js +60 -0
- package/dist/batch/errors.js.map +1 -0
- package/dist/batch/filename.d.ts +65 -0
- package/dist/batch/filename.d.ts.map +1 -0
- package/dist/batch/filename.js +205 -0
- package/dist/batch/filename.js.map +1 -0
- package/dist/batch/index.d.ts +17 -0
- package/dist/batch/index.d.ts.map +1 -0
- package/dist/batch/index.js +11 -0
- package/dist/batch/index.js.map +1 -0
- package/dist/batch/issues.d.ts +45 -0
- package/dist/batch/issues.d.ts.map +1 -0
- package/dist/batch/issues.js +47 -0
- package/dist/batch/issues.js.map +1 -0
- package/dist/batch/manifest.d.ts +43 -0
- package/dist/batch/manifest.d.ts.map +1 -0
- package/dist/batch/manifest.js +82 -0
- package/dist/batch/manifest.js.map +1 -0
- package/dist/batch/plan.d.ts +33 -0
- package/dist/batch/plan.d.ts.map +1 -0
- package/dist/batch/plan.js +254 -0
- package/dist/batch/plan.js.map +1 -0
- package/dist/batch/run.d.ts +68 -0
- package/dist/batch/run.d.ts.map +1 -0
- package/dist/batch/run.js +548 -0
- package/dist/batch/run.js.map +1 -0
- package/dist/batch/template.d.ts +54 -0
- package/dist/batch/template.d.ts.map +1 -0
- package/dist/batch/template.js +119 -0
- package/dist/batch/template.js.map +1 -0
- package/dist/batch/text-decoding.d.ts +49 -0
- package/dist/batch/text-decoding.d.ts.map +1 -0
- package/dist/batch/text-decoding.js +160 -0
- package/dist/batch/text-decoding.js.map +1 -0
- package/dist/batch/types.d.ts +240 -0
- package/dist/batch/types.d.ts.map +1 -0
- package/dist/batch/types.js +35 -0
- package/dist/batch/types.js.map +1 -0
- package/dist/batch/verify.d.ts +45 -0
- package/dist/batch/verify.d.ts.map +1 -0
- package/dist/batch/verify.js +72 -0
- package/dist/batch/verify.js.map +1 -0
- package/dist/batch/zip.d.ts +39 -0
- package/dist/batch/zip.d.ts.map +1 -0
- package/dist/batch/zip.js +201 -0
- package/dist/batch/zip.js.map +1 -0
- package/dist/conformance/finder.d.ts +67 -0
- package/dist/conformance/finder.d.ts.map +1 -0
- package/dist/conformance/finder.js +125 -0
- package/dist/conformance/finder.js.map +1 -0
- package/dist/conformance/frame.d.ts +28 -0
- package/dist/conformance/frame.d.ts.map +1 -0
- package/dist/conformance/frame.js +134 -0
- package/dist/conformance/frame.js.map +1 -0
- package/dist/conformance/index.d.ts +15 -0
- package/dist/conformance/index.d.ts.map +1 -0
- package/dist/conformance/index.js +8 -0
- package/dist/conformance/index.js.map +1 -0
- package/dist/conformance/module-shape.d.ts +35 -0
- package/dist/conformance/module-shape.d.ts.map +1 -0
- package/dist/conformance/module-shape.js +139 -0
- package/dist/conformance/module-shape.js.map +1 -0
- package/dist/conformance/payload-type.d.ts +48 -0
- package/dist/conformance/payload-type.d.ts.map +1 -0
- package/dist/conformance/payload-type.js +113 -0
- package/dist/conformance/payload-type.js.map +1 -0
- package/dist/conformance/preset.d.ts +37 -0
- package/dist/conformance/preset.d.ts.map +1 -0
- package/dist/conformance/preset.js +171 -0
- package/dist/conformance/preset.js.map +1 -0
- package/dist/conformance/region-captures.d.ts +41 -0
- package/dist/conformance/region-captures.d.ts.map +1 -0
- package/dist/conformance/region-captures.js +69 -0
- package/dist/conformance/region-captures.js.map +1 -0
- package/dist/conformance/region-shape.d.ts +43 -0
- package/dist/conformance/region-shape.d.ts.map +1 -0
- package/dist/conformance/region-shape.js +214 -0
- package/dist/conformance/region-shape.js.map +1 -0
- package/dist/conformance/sample.d.ts +13 -0
- package/dist/conformance/sample.d.ts.map +1 -0
- package/dist/conformance/sample.js +75 -0
- package/dist/conformance/sample.js.map +1 -0
- package/dist/conformance/types.d.ts +16 -0
- package/dist/conformance/types.d.ts.map +1 -0
- package/dist/conformance/types.js +10 -0
- package/dist/conformance/types.js.map +1 -0
- package/dist/core/bch.d.ts +36 -0
- package/dist/core/bch.d.ts.map +1 -0
- package/dist/core/bch.js +92 -0
- package/dist/core/bch.js.map +1 -0
- package/dist/core/bit-matrix.d.ts +56 -0
- package/dist/core/bit-matrix.d.ts.map +1 -0
- package/dist/core/bit-matrix.js +150 -0
- package/dist/core/bit-matrix.js.map +1 -0
- package/dist/core/bits.d.ts +53 -0
- package/dist/core/bits.d.ts.map +1 -0
- package/dist/core/bits.js +128 -0
- package/dist/core/bits.js.map +1 -0
- package/dist/core/checksums.d.ts +22 -0
- package/dist/core/checksums.d.ts.map +1 -0
- package/dist/core/checksums.js +64 -0
- package/dist/core/checksums.js.map +1 -0
- package/dist/core/deflate.d.ts +51 -0
- package/dist/core/deflate.d.ts.map +1 -0
- package/dist/core/deflate.js +851 -0
- package/dist/core/deflate.js.map +1 -0
- package/dist/core/errors.d.ts +123 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +168 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/field.d.ts +58 -0
- package/dist/core/field.d.ts.map +1 -0
- package/dist/core/field.js +184 -0
- package/dist/core/field.js.map +1 -0
- package/dist/core/huffman.d.ts +31 -0
- package/dist/core/huffman.d.ts.map +1 -0
- package/dist/core/huffman.js +131 -0
- package/dist/core/huffman.js.map +1 -0
- package/dist/core/image.d.ts +18 -0
- package/dist/core/image.d.ts.map +1 -0
- package/dist/core/image.js +2 -0
- package/dist/core/image.js.map +1 -0
- package/dist/core/index.d.ts +25 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +15 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/issue.d.ts +39 -0
- package/dist/core/issue.d.ts.map +1 -0
- package/dist/core/issue.js +24 -0
- package/dist/core/issue.js.map +1 -0
- package/dist/core/math.d.ts +56 -0
- package/dist/core/math.d.ts.map +1 -0
- package/dist/core/math.js +609 -0
- package/dist/core/math.js.map +1 -0
- package/dist/core/prng.d.ts +27 -0
- package/dist/core/prng.d.ts.map +1 -0
- package/dist/core/prng.js +111 -0
- package/dist/core/prng.js.map +1 -0
- package/dist/core/reed-solomon.d.ts +69 -0
- package/dist/core/reed-solomon.d.ts.map +1 -0
- package/dist/core/reed-solomon.js +308 -0
- package/dist/core/reed-solomon.js.map +1 -0
- package/dist/core/registry.d.ts +45 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +80 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/result.d.ts +33 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +52 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/zip.d.ts +36 -0
- package/dist/core/zip.d.ts.map +1 -0
- package/dist/core/zip.js +234 -0
- package/dist/core/zip.js.map +1 -0
- package/dist/decode/alignment.d.ts +34 -0
- package/dist/decode/alignment.d.ts.map +1 -0
- package/dist/decode/alignment.js +179 -0
- package/dist/decode/alignment.js.map +1 -0
- package/dist/decode/binarise.d.ts +95 -0
- package/dist/decode/binarise.d.ts.map +1 -0
- package/dist/decode/binarise.js +399 -0
- package/dist/decode/binarise.js.map +1 -0
- package/dist/decode/decoder.d.ts +75 -0
- package/dist/decode/decoder.d.ts.map +1 -0
- package/dist/decode/decoder.js +773 -0
- package/dist/decode/decoder.js.map +1 -0
- package/dist/decode/erasures.d.ts +26 -0
- package/dist/decode/erasures.d.ts.map +1 -0
- package/dist/decode/erasures.js +34 -0
- package/dist/decode/erasures.js.map +1 -0
- package/dist/decode/failure.d.ts +15 -0
- package/dist/decode/failure.d.ts.map +1 -0
- package/dist/decode/failure.js +22 -0
- package/dist/decode/failure.js.map +1 -0
- package/dist/decode/finder.d.ts +114 -0
- package/dist/decode/finder.d.ts.map +1 -0
- package/dist/decode/finder.js +441 -0
- package/dist/decode/finder.js.map +1 -0
- package/dist/decode/frame.d.ts +49 -0
- package/dist/decode/frame.d.ts.map +1 -0
- package/dist/decode/frame.js +228 -0
- package/dist/decode/frame.js.map +1 -0
- package/dist/decode/grey.d.ts +87 -0
- package/dist/decode/grey.d.ts.map +1 -0
- package/dist/decode/grey.js +226 -0
- package/dist/decode/grey.js.map +1 -0
- package/dist/decode/index.d.ts +4 -0
- package/dist/decode/index.d.ts.map +1 -0
- package/dist/decode/index.js +3 -0
- package/dist/decode/index.js.map +1 -0
- package/dist/decode/locate-qr.d.ts +80 -0
- package/dist/decode/locate-qr.d.ts.map +1 -0
- package/dist/decode/locate-qr.js +295 -0
- package/dist/decode/locate-qr.js.map +1 -0
- package/dist/decode/locate-single.d.ts +47 -0
- package/dist/decode/locate-single.d.ts.map +1 -0
- package/dist/decode/locate-single.js +169 -0
- package/dist/decode/locate-single.js.map +1 -0
- package/dist/decode/plain.d.ts +70 -0
- package/dist/decode/plain.d.ts.map +1 -0
- package/dist/decode/plain.js +460 -0
- package/dist/decode/plain.js.map +1 -0
- package/dist/decode/sample.d.ts +56 -0
- package/dist/decode/sample.d.ts.map +1 -0
- package/dist/decode/sample.js +154 -0
- package/dist/decode/sample.js.map +1 -0
- package/dist/decode/strict.d.ts +255 -0
- package/dist/decode/strict.d.ts.map +1 -0
- package/dist/decode/strict.js +597 -0
- package/dist/decode/strict.js.map +1 -0
- package/dist/decode/tiled.d.ts +137 -0
- package/dist/decode/tiled.d.ts.map +1 -0
- package/dist/decode/tiled.js +452 -0
- package/dist/decode/tiled.js.map +1 -0
- package/dist/decode/transform.d.ts +48 -0
- package/dist/decode/transform.d.ts.map +1 -0
- package/dist/decode/transform.js +180 -0
- package/dist/decode/transform.js.map +1 -0
- package/dist/decode/types.d.ts +163 -0
- package/dist/decode/types.d.ts.map +1 -0
- package/dist/decode/types.js +10 -0
- package/dist/decode/types.js.map +1 -0
- package/dist/design/base64.d.ts +16 -0
- package/dist/design/base64.d.ts.map +1 -0
- package/dist/design/base64.js +97 -0
- package/dist/design/base64.js.map +1 -0
- package/dist/design/canonical.d.ts +13 -0
- package/dist/design/canonical.d.ts.map +1 -0
- package/dist/design/canonical.js +100 -0
- package/dist/design/canonical.js.map +1 -0
- package/dist/design/caption.d.ts +54 -0
- package/dist/design/caption.d.ts.map +1 -0
- package/dist/design/caption.js +175 -0
- package/dist/design/caption.js.map +1 -0
- package/dist/design/catalogue/draw.d.ts +77 -0
- package/dist/design/catalogue/draw.d.ts.map +1 -0
- package/dist/design/catalogue/draw.js +260 -0
- package/dist/design/catalogue/draw.js.map +1 -0
- package/dist/design/catalogue/fills.d.ts +9 -0
- package/dist/design/catalogue/fills.d.ts.map +1 -0
- package/dist/design/catalogue/fills.js +64 -0
- package/dist/design/catalogue/fills.js.map +1 -0
- package/dist/design/catalogue/frames.d.ts +18 -0
- package/dist/design/catalogue/frames.d.ts.map +1 -0
- package/dist/design/catalogue/frames.js +451 -0
- package/dist/design/catalogue/frames.js.map +1 -0
- package/dist/design/catalogue/icons.d.ts +21 -0
- package/dist/design/catalogue/icons.d.ts.map +1 -0
- package/dist/design/catalogue/icons.js +293 -0
- package/dist/design/catalogue/icons.js.map +1 -0
- package/dist/design/catalogue/module-shapes.d.ts +21 -0
- package/dist/design/catalogue/module-shapes.d.ts.map +1 -0
- package/dist/design/catalogue/module-shapes.js +266 -0
- package/dist/design/catalogue/module-shapes.js.map +1 -0
- package/dist/design/catalogue/presets.d.ts +31 -0
- package/dist/design/catalogue/presets.d.ts.map +1 -0
- package/dist/design/catalogue/presets.js +696 -0
- package/dist/design/catalogue/presets.js.map +1 -0
- package/dist/design/catalogue/region-shapes.d.ts +41 -0
- package/dist/design/catalogue/region-shapes.d.ts.map +1 -0
- package/dist/design/catalogue/region-shapes.js +399 -0
- package/dist/design/catalogue/region-shapes.js.map +1 -0
- package/dist/design/catalogue/schema.d.ts +14 -0
- package/dist/design/catalogue/schema.d.ts.map +1 -0
- package/dist/design/catalogue/schema.js +58 -0
- package/dist/design/catalogue/schema.js.map +1 -0
- package/dist/design/constraints.d.ts +25 -0
- package/dist/design/constraints.d.ts.map +1 -0
- package/dist/design/constraints.js +194 -0
- package/dist/design/constraints.js.map +1 -0
- package/dist/design/document.d.ts +64 -0
- package/dist/design/document.d.ts.map +1 -0
- package/dist/design/document.js +66 -0
- package/dist/design/document.js.map +1 -0
- package/dist/design/finder.d.ts +79 -0
- package/dist/design/finder.d.ts.map +1 -0
- package/dist/design/finder.js +270 -0
- package/dist/design/finder.js.map +1 -0
- package/dist/design/index.d.ts +18 -0
- package/dist/design/index.d.ts.map +1 -0
- package/dist/design/index.js +15 -0
- package/dist/design/index.js.map +1 -0
- package/dist/design/link.d.ts +41 -0
- package/dist/design/link.d.ts.map +1 -0
- package/dist/design/link.js +131 -0
- package/dist/design/link.js.map +1 -0
- package/dist/design/logo.d.ts +57 -0
- package/dist/design/logo.d.ts.map +1 -0
- package/dist/design/logo.js +376 -0
- package/dist/design/logo.js.map +1 -0
- package/dist/design/migrate.d.ts +31 -0
- package/dist/design/migrate.d.ts.map +1 -0
- package/dist/design/migrate.js +87 -0
- package/dist/design/migrate.js.map +1 -0
- package/dist/design/neighbours.d.ts +24 -0
- package/dist/design/neighbours.d.ts.map +1 -0
- package/dist/design/neighbours.js +50 -0
- package/dist/design/neighbours.js.map +1 -0
- package/dist/design/paint.d.ts +47 -0
- package/dist/design/paint.d.ts.map +1 -0
- package/dist/design/paint.js +115 -0
- package/dist/design/paint.js.map +1 -0
- package/dist/design/params.d.ts +30 -0
- package/dist/design/params.d.ts.map +1 -0
- package/dist/design/params.js +85 -0
- package/dist/design/params.js.map +1 -0
- package/dist/design/preset-size.d.ts +14 -0
- package/dist/design/preset-size.d.ts.map +1 -0
- package/dist/design/preset-size.js +14 -0
- package/dist/design/preset-size.js.map +1 -0
- package/dist/design/registries.d.ts +9 -0
- package/dist/design/registries.d.ts.map +1 -0
- package/dist/design/registries.js +24 -0
- package/dist/design/registries.js.map +1 -0
- package/dist/design/scene.d.ts +38 -0
- package/dist/design/scene.d.ts.map +1 -0
- package/dist/design/scene.js +694 -0
- package/dist/design/scene.js.map +1 -0
- package/dist/design/swiss-cross.d.ts +54 -0
- package/dist/design/swiss-cross.d.ts.map +1 -0
- package/dist/design/swiss-cross.js +95 -0
- package/dist/design/swiss-cross.js.map +1 -0
- package/dist/design/types.d.ts +389 -0
- package/dist/design/types.d.ts.map +1 -0
- package/dist/design/types.js +29 -0
- package/dist/design/types.js.map +1 -0
- package/dist/design/validate.d.ts +48 -0
- package/dist/design/validate.d.ts.map +1 -0
- package/dist/design/validate.js +986 -0
- package/dist/design/validate.js.map +1 -0
- package/dist/dom/camera.d.ts +94 -0
- package/dist/dom/camera.d.ts.map +1 -0
- package/dist/dom/camera.js +288 -0
- package/dist/dom/camera.js.map +1 -0
- package/dist/dom/file-library.d.ts +297 -0
- package/dist/dom/file-library.d.ts.map +1 -0
- package/dist/dom/file-library.js +703 -0
- package/dist/dom/file-library.js.map +1 -0
- package/dist/dom/image.d.ts +77 -0
- package/dist/dom/image.d.ts.map +1 -0
- package/dist/dom/image.js +253 -0
- package/dist/dom/image.js.map +1 -0
- package/dist/dom/index.d.ts +19 -0
- package/dist/dom/index.d.ts.map +1 -0
- package/dist/dom/index.js +10 -0
- package/dist/dom/index.js.map +1 -0
- package/dist/dom/library/index.d.ts +4 -0
- package/dist/dom/library/index.d.ts.map +1 -0
- package/dist/dom/library/index.js +2 -0
- package/dist/dom/library/index.js.map +1 -0
- package/dist/dom/library/indexeddb.d.ts +71 -0
- package/dist/dom/library/indexeddb.d.ts.map +1 -0
- package/dist/dom/library/indexeddb.js +365 -0
- package/dist/dom/library/indexeddb.js.map +1 -0
- package/dist/dom/logo.d.ts +36 -0
- package/dist/dom/logo.d.ts.map +1 -0
- package/dist/dom/logo.js +99 -0
- package/dist/dom/logo.js.map +1 -0
- package/dist/dom/orientation.d.ts +32 -0
- package/dist/dom/orientation.d.ts.map +1 -0
- package/dist/dom/orientation.js +152 -0
- package/dist/dom/orientation.js.map +1 -0
- package/dist/dom/output.d.ts +58 -0
- package/dist/dom/output.d.ts.map +1 -0
- package/dist/dom/output.js +93 -0
- package/dist/dom/output.js.map +1 -0
- package/dist/dom/print.d.ts +52 -0
- package/dist/dom/print.d.ts.map +1 -0
- package/dist/dom/print.js +101 -0
- package/dist/dom/print.js.map +1 -0
- package/dist/dom/raster-encoder.d.ts +43 -0
- package/dist/dom/raster-encoder.d.ts.map +1 -0
- package/dist/dom/raster-encoder.js +102 -0
- package/dist/dom/raster-encoder.js.map +1 -0
- package/dist/dom/resample.d.ts +20 -0
- package/dist/dom/resample.d.ts.map +1 -0
- package/dist/dom/resample.js +107 -0
- package/dist/dom/resample.js.map +1 -0
- package/dist/dom/types.d.ts +54 -0
- package/dist/dom/types.d.ts.map +1 -0
- package/dist/dom/types.js +13 -0
- package/dist/dom/types.js.map +1 -0
- package/dist/encode/bitstream.d.ts +14 -0
- package/dist/encode/bitstream.d.ts.map +1 -0
- package/dist/encode/bitstream.js +31 -0
- package/dist/encode/bitstream.js.map +1 -0
- package/dist/encode/encode.d.ts +21 -0
- package/dist/encode/encode.d.ts.map +1 -0
- package/dist/encode/encode.js +65 -0
- package/dist/encode/encode.js.map +1 -0
- package/dist/encode/index.d.ts +5 -0
- package/dist/encode/index.d.ts.map +1 -0
- package/dist/encode/index.js +4 -0
- package/dist/encode/index.js.map +1 -0
- package/dist/encode/plan.d.ts +61 -0
- package/dist/encode/plan.d.ts.map +1 -0
- package/dist/encode/plan.js +177 -0
- package/dist/encode/plan.js.map +1 -0
- package/dist/encode/structured-append.d.ts +35 -0
- package/dist/encode/structured-append.d.ts.map +1 -0
- package/dist/encode/structured-append.js +153 -0
- package/dist/encode/structured-append.js.map +1 -0
- package/dist/fonts/latin.d.ts +118 -0
- package/dist/fonts/latin.d.ts.map +1 -0
- package/dist/fonts/latin.js +137 -0
- package/dist/fonts/latin.js.map +1 -0
- package/dist/geometry/flatten.d.ts +60 -0
- package/dist/geometry/flatten.d.ts.map +1 -0
- package/dist/geometry/flatten.js +177 -0
- package/dist/geometry/flatten.js.map +1 -0
- package/dist/geometry/index.d.ts +10 -0
- package/dist/geometry/index.d.ts.map +1 -0
- package/dist/geometry/index.js +6 -0
- package/dist/geometry/index.js.map +1 -0
- package/dist/geometry/matrix.d.ts +50 -0
- package/dist/geometry/matrix.d.ts.map +1 -0
- package/dist/geometry/matrix.js +113 -0
- package/dist/geometry/matrix.js.map +1 -0
- package/dist/geometry/measure.d.ts +35 -0
- package/dist/geometry/measure.d.ts.map +1 -0
- package/dist/geometry/measure.js +206 -0
- package/dist/geometry/measure.js.map +1 -0
- package/dist/geometry/path.d.ts +137 -0
- package/dist/geometry/path.d.ts.map +1 -0
- package/dist/geometry/path.js +401 -0
- package/dist/geometry/path.js.map +1 -0
- package/dist/geometry/trace.d.ts +29 -0
- package/dist/geometry/trace.d.ts.map +1 -0
- package/dist/geometry/trace.js +166 -0
- package/dist/geometry/trace.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect/explain.d.ts +32 -0
- package/dist/inspect/explain.d.ts.map +1 -0
- package/dist/inspect/explain.js +99 -0
- package/dist/inspect/explain.js.map +1 -0
- package/dist/inspect/gs1.d.ts +38 -0
- package/dist/inspect/gs1.d.ts.map +1 -0
- package/dist/inspect/gs1.js +130 -0
- package/dist/inspect/gs1.js.map +1 -0
- package/dist/inspect/index.d.ts +9 -0
- package/dist/inspect/index.d.ts.map +1 -0
- package/dist/inspect/index.js +6 -0
- package/dist/inspect/index.js.map +1 -0
- package/dist/inspect/inspect.d.ts +29 -0
- package/dist/inspect/inspect.d.ts.map +1 -0
- package/dist/inspect/inspect.js +98 -0
- package/dist/inspect/inspect.js.map +1 -0
- package/dist/inspect/keys.d.ts +54 -0
- package/dist/inspect/keys.d.ts.map +1 -0
- package/dist/inspect/keys.js +63 -0
- package/dist/inspect/keys.js.map +1 -0
- package/dist/inspect/sets.d.ts +27 -0
- package/dist/inspect/sets.d.ts.map +1 -0
- package/dist/inspect/sets.js +67 -0
- package/dist/inspect/sets.js.map +1 -0
- package/dist/inspect/types.d.ts +81 -0
- package/dist/inspect/types.d.ts.map +1 -0
- package/dist/inspect/types.js +16 -0
- package/dist/inspect/types.js.map +1 -0
- package/dist/messages/en/app.d.ts +11 -0
- package/dist/messages/en/app.d.ts.map +1 -0
- package/dist/messages/en/app.js +395 -0
- package/dist/messages/en/app.js.map +1 -0
- package/dist/messages/en/batch.d.ts +18 -0
- package/dist/messages/en/batch.d.ts.map +1 -0
- package/dist/messages/en/batch.js +42 -0
- package/dist/messages/en/batch.js.map +1 -0
- package/dist/messages/en/decode.d.ts +9 -0
- package/dist/messages/en/decode.d.ts.map +1 -0
- package/dist/messages/en/decode.js +21 -0
- package/dist/messages/en/decode.js.map +1 -0
- package/dist/messages/en/design.d.ts +13 -0
- package/dist/messages/en/design.d.ts.map +1 -0
- package/dist/messages/en/design.js +228 -0
- package/dist/messages/en/design.js.map +1 -0
- package/dist/messages/en/dom.d.ts +11 -0
- package/dist/messages/en/dom.d.ts.map +1 -0
- package/dist/messages/en/dom.js +14 -0
- package/dist/messages/en/dom.js.map +1 -0
- package/dist/messages/en/encode.d.ts +13 -0
- package/dist/messages/en/encode.d.ts.map +1 -0
- package/dist/messages/en/encode.js +20 -0
- package/dist/messages/en/encode.js.map +1 -0
- package/dist/messages/en/index.d.ts +48 -0
- package/dist/messages/en/index.d.ts.map +1 -0
- package/dist/messages/en/index.js +73 -0
- package/dist/messages/en/index.js.map +1 -0
- package/dist/messages/en/inspect.d.ts +13 -0
- package/dist/messages/en/inspect.d.ts.map +1 -0
- package/dist/messages/en/inspect.js +84 -0
- package/dist/messages/en/inspect.js.map +1 -0
- package/dist/messages/en/library.d.ts +12 -0
- package/dist/messages/en/library.d.ts.map +1 -0
- package/dist/messages/en/library.js +27 -0
- package/dist/messages/en/library.js.map +1 -0
- package/dist/messages/en/micro.d.ts +9 -0
- package/dist/messages/en/micro.d.ts.map +1 -0
- package/dist/messages/en/micro.js +13 -0
- package/dist/messages/en/micro.js.map +1 -0
- package/dist/messages/en/own-link.d.ts +7 -0
- package/dist/messages/en/own-link.d.ts.map +1 -0
- package/dist/messages/en/own-link.js +29 -0
- package/dist/messages/en/own-link.js.map +1 -0
- package/dist/messages/en/payload.d.ts +13 -0
- package/dist/messages/en/payload.d.ts.map +1 -0
- package/dist/messages/en/payload.js +427 -0
- package/dist/messages/en/payload.js.map +1 -0
- package/dist/messages/en/rmqr.d.ts +9 -0
- package/dist/messages/en/rmqr.d.ts.map +1 -0
- package/dist/messages/en/rmqr.js +12 -0
- package/dist/messages/en/rmqr.js.map +1 -0
- package/dist/messages/en/studio.d.ts +18 -0
- package/dist/messages/en/studio.d.ts.map +1 -0
- package/dist/messages/en/studio.js +117 -0
- package/dist/messages/en/studio.js.map +1 -0
- package/dist/messages/en/symbology.d.ts +13 -0
- package/dist/messages/en/symbology.d.ts.map +1 -0
- package/dist/messages/en/symbology.js +21 -0
- package/dist/messages/en/symbology.js.map +1 -0
- package/dist/messages/en/text.d.ts +23 -0
- package/dist/messages/en/text.d.ts.map +1 -0
- package/dist/messages/en/text.js +47 -0
- package/dist/messages/en/text.js.map +1 -0
- package/dist/messages/en/verify.d.ts +13 -0
- package/dist/messages/en/verify.d.ts.map +1 -0
- package/dist/messages/en/verify.js +117 -0
- package/dist/messages/en/verify.js.map +1 -0
- package/dist/messages/format.d.ts +30 -0
- package/dist/messages/format.d.ts.map +1 -0
- package/dist/messages/format.js +170 -0
- package/dist/messages/format.js.map +1 -0
- package/dist/own-link/index.d.ts +5 -0
- package/dist/own-link/index.d.ts.map +1 -0
- package/dist/own-link/index.js +3 -0
- package/dist/own-link/index.js.map +1 -0
- package/dist/own-link/query.d.ts +10 -0
- package/dist/own-link/query.d.ts.map +1 -0
- package/dist/own-link/query.js +33 -0
- package/dist/own-link/query.js.map +1 -0
- package/dist/own-link/redirects.d.ts +54 -0
- package/dist/own-link/redirects.d.ts.map +1 -0
- package/dist/own-link/redirects.js +271 -0
- package/dist/own-link/redirects.js.map +1 -0
- package/dist/own-link/utm.d.ts +24 -0
- package/dist/own-link/utm.d.ts.map +1 -0
- package/dist/own-link/utm.js +82 -0
- package/dist/own-link/utm.js.map +1 -0
- package/dist/payload/banking.d.ts +39 -0
- package/dist/payload/banking.d.ts.map +1 -0
- package/dist/payload/banking.js +87 -0
- package/dist/payload/banking.js.map +1 -0
- package/dist/payload/base58.d.ts +21 -0
- package/dist/payload/base58.d.ts.map +1 -0
- package/dist/payload/base58.js +75 -0
- package/dist/payload/base58.js.map +1 -0
- package/dist/payload/bech32.d.ts +59 -0
- package/dist/payload/bech32.d.ts.map +1 -0
- package/dist/payload/bech32.js +137 -0
- package/dist/payload/bech32.js.map +1 -0
- package/dist/payload/check-digits.d.ts +49 -0
- package/dist/payload/check-digits.d.ts.map +1 -0
- package/dist/payload/check-digits.js +101 -0
- package/dist/payload/check-digits.js.map +1 -0
- package/dist/payload/content/bitcoin.d.ts +34 -0
- package/dist/payload/content/bitcoin.d.ts.map +1 -0
- package/dist/payload/content/bitcoin.js +137 -0
- package/dist/payload/content/bitcoin.js.map +1 -0
- package/dist/payload/content/email.d.ts +19 -0
- package/dist/payload/content/email.d.ts.map +1 -0
- package/dist/payload/content/email.js +137 -0
- package/dist/payload/content/email.js.map +1 -0
- package/dist/payload/content/epc.d.ts +32 -0
- package/dist/payload/content/epc.d.ts.map +1 -0
- package/dist/payload/content/epc.js +160 -0
- package/dist/payload/content/epc.js.map +1 -0
- package/dist/payload/content/event.d.ts +35 -0
- package/dist/payload/content/event.d.ts.map +1 -0
- package/dist/payload/content/event.js +242 -0
- package/dist/payload/content/event.js.map +1 -0
- package/dist/payload/content/facetime.d.ts +14 -0
- package/dist/payload/content/facetime.d.ts.map +1 -0
- package/dist/payload/content/facetime.js +56 -0
- package/dist/payload/content/facetime.js.map +1 -0
- package/dist/payload/content/geo.d.ts +24 -0
- package/dist/payload/content/geo.d.ts.map +1 -0
- package/dist/payload/content/geo.js +139 -0
- package/dist/payload/content/geo.js.map +1 -0
- package/dist/payload/content/gs1-digital-link.d.ts +34 -0
- package/dist/payload/content/gs1-digital-link.d.ts.map +1 -0
- package/dist/payload/content/gs1-digital-link.js +171 -0
- package/dist/payload/content/gs1-digital-link.js.map +1 -0
- package/dist/payload/content/lightning.d.ts +22 -0
- package/dist/payload/content/lightning.d.ts.map +1 -0
- package/dist/payload/content/lightning.js +90 -0
- package/dist/payload/content/lightning.js.map +1 -0
- package/dist/payload/content/mecard.d.ts +23 -0
- package/dist/payload/content/mecard.d.ts.map +1 -0
- package/dist/payload/content/mecard.js +111 -0
- package/dist/payload/content/mecard.js.map +1 -0
- package/dist/payload/content/phone.d.ts +17 -0
- package/dist/payload/content/phone.d.ts.map +1 -0
- package/dist/payload/content/phone.js +39 -0
- package/dist/payload/content/phone.js.map +1 -0
- package/dist/payload/content/pix.d.ts +36 -0
- package/dist/payload/content/pix.d.ts.map +1 -0
- package/dist/payload/content/pix.js +191 -0
- package/dist/payload/content/pix.js.map +1 -0
- package/dist/payload/content/signal.d.ts +17 -0
- package/dist/payload/content/signal.d.ts.map +1 -0
- package/dist/payload/content/signal.js +43 -0
- package/dist/payload/content/signal.js.map +1 -0
- package/dist/payload/content/sms.d.ts +18 -0
- package/dist/payload/content/sms.d.ts.map +1 -0
- package/dist/payload/content/sms.js +64 -0
- package/dist/payload/content/sms.js.map +1 -0
- package/dist/payload/content/swiss-qr-bill.d.ts +61 -0
- package/dist/payload/content/swiss-qr-bill.d.ts.map +1 -0
- package/dist/payload/content/swiss-qr-bill.js +325 -0
- package/dist/payload/content/swiss-qr-bill.js.map +1 -0
- package/dist/payload/content/telegram.d.ts +18 -0
- package/dist/payload/content/telegram.d.ts.map +1 -0
- package/dist/payload/content/telegram.js +105 -0
- package/dist/payload/content/telegram.js.map +1 -0
- package/dist/payload/content/text.d.ts +9 -0
- package/dist/payload/content/text.d.ts.map +1 -0
- package/dist/payload/content/text.js +18 -0
- package/dist/payload/content/text.js.map +1 -0
- package/dist/payload/content/upi.d.ts +21 -0
- package/dist/payload/content/upi.d.ts.map +1 -0
- package/dist/payload/content/upi.js +89 -0
- package/dist/payload/content/upi.js.map +1 -0
- package/dist/payload/content/url.d.ts +31 -0
- package/dist/payload/content/url.d.ts.map +1 -0
- package/dist/payload/content/url.js +120 -0
- package/dist/payload/content/url.js.map +1 -0
- package/dist/payload/content/vcard.d.ts +42 -0
- package/dist/payload/content/vcard.d.ts.map +1 -0
- package/dist/payload/content/vcard.js +302 -0
- package/dist/payload/content/vcard.js.map +1 -0
- package/dist/payload/content/whatsapp.d.ts +17 -0
- package/dist/payload/content/whatsapp.d.ts.map +1 -0
- package/dist/payload/content/whatsapp.js +72 -0
- package/dist/payload/content/whatsapp.js.map +1 -0
- package/dist/payload/content/wifi.d.ts +48 -0
- package/dist/payload/content/wifi.d.ts.map +1 -0
- package/dist/payload/content/wifi.js +240 -0
- package/dist/payload/content/wifi.js.map +1 -0
- package/dist/payload/content/zatca.d.ts +35 -0
- package/dist/payload/content/zatca.d.ts.map +1 -0
- package/dist/payload/content/zatca.js +156 -0
- package/dist/payload/content/zatca.js.map +1 -0
- package/dist/payload/data/hosts.d.ts +39 -0
- package/dist/payload/data/hosts.d.ts.map +1 -0
- package/dist/payload/data/hosts.js +74 -0
- package/dist/payload/data/hosts.js.map +1 -0
- package/dist/payload/define.d.ts +57 -0
- package/dist/payload/define.d.ts.map +1 -0
- package/dist/payload/define.js +87 -0
- package/dist/payload/define.js.map +1 -0
- package/dist/payload/detect.d.ts +13 -0
- package/dist/payload/detect.d.ts.map +1 -0
- package/dist/payload/detect.js +32 -0
- package/dist/payload/detect.js.map +1 -0
- package/dist/payload/emv.d.ts +41 -0
- package/dist/payload/emv.d.ts.map +1 -0
- package/dist/payload/emv.js +73 -0
- package/dist/payload/emv.js.map +1 -0
- package/dist/payload/escape.d.ts +66 -0
- package/dist/payload/escape.d.ts.map +1 -0
- package/dist/payload/escape.js +225 -0
- package/dist/payload/escape.js.map +1 -0
- package/dist/payload/fields.d.ts +86 -0
- package/dist/payload/fields.d.ts.map +1 -0
- package/dist/payload/fields.js +368 -0
- package/dist/payload/fields.js.map +1 -0
- package/dist/payload/hash.d.ts +11 -0
- package/dist/payload/hash.d.ts.map +1 -0
- package/dist/payload/hash.js +82 -0
- package/dist/payload/hash.js.map +1 -0
- package/dist/payload/index.d.ts +58 -0
- package/dist/payload/index.d.ts.map +1 -0
- package/dist/payload/index.js +32 -0
- package/dist/payload/index.js.map +1 -0
- package/dist/payload/punycode.d.ts +18 -0
- package/dist/payload/punycode.d.ts.map +1 -0
- package/dist/payload/punycode.js +99 -0
- package/dist/payload/punycode.js.map +1 -0
- package/dist/payload/registry.d.ts +20 -0
- package/dist/payload/registry.d.ts.map +1 -0
- package/dist/payload/registry.js +64 -0
- package/dist/payload/registry.js.map +1 -0
- package/dist/payload/safety.d.ts +13 -0
- package/dist/payload/safety.d.ts.map +1 -0
- package/dist/payload/safety.js +30 -0
- package/dist/payload/safety.js.map +1 -0
- package/dist/payload/scripts.d.ts +25 -0
- package/dist/payload/scripts.d.ts.map +1 -0
- package/dist/payload/scripts.js +90 -0
- package/dist/payload/scripts.js.map +1 -0
- package/dist/payload/types.d.ts +138 -0
- package/dist/payload/types.d.ts.map +1 -0
- package/dist/payload/types.js +28 -0
- package/dist/payload/types.js.map +1 -0
- package/dist/payload/uri.d.ts +24 -0
- package/dist/payload/uri.d.ts.map +1 -0
- package/dist/payload/uri.js +69 -0
- package/dist/payload/uri.js.map +1 -0
- package/dist/payload/url-safety.d.ts +31 -0
- package/dist/payload/url-safety.d.ts.map +1 -0
- package/dist/payload/url-safety.js +221 -0
- package/dist/payload/url-safety.js.map +1 -0
- package/dist/payload/vectors/bitcoin.d.ts +13 -0
- package/dist/payload/vectors/bitcoin.d.ts.map +1 -0
- package/dist/payload/vectors/bitcoin.js +83 -0
- package/dist/payload/vectors/bitcoin.js.map +1 -0
- package/dist/payload/vectors/built-in.d.ts +15 -0
- package/dist/payload/vectors/built-in.d.ts.map +1 -0
- package/dist/payload/vectors/built-in.js +59 -0
- package/dist/payload/vectors/built-in.js.map +1 -0
- package/dist/payload/vectors/email.d.ts +8 -0
- package/dist/payload/vectors/email.d.ts.map +1 -0
- package/dist/payload/vectors/email.js +60 -0
- package/dist/payload/vectors/email.js.map +1 -0
- package/dist/payload/vectors/epc.d.ts +9 -0
- package/dist/payload/vectors/epc.d.ts.map +1 -0
- package/dist/payload/vectors/epc.js +38 -0
- package/dist/payload/vectors/epc.js.map +1 -0
- package/dist/payload/vectors/event.d.ts +9 -0
- package/dist/payload/vectors/event.d.ts.map +1 -0
- package/dist/payload/vectors/event.js +57 -0
- package/dist/payload/vectors/event.js.map +1 -0
- package/dist/payload/vectors/facetime.d.ts +9 -0
- package/dist/payload/vectors/facetime.d.ts.map +1 -0
- package/dist/payload/vectors/facetime.js +19 -0
- package/dist/payload/vectors/facetime.js.map +1 -0
- package/dist/payload/vectors/geo.d.ts +8 -0
- package/dist/payload/vectors/geo.d.ts.map +1 -0
- package/dist/payload/vectors/geo.js +22 -0
- package/dist/payload/vectors/geo.js.map +1 -0
- package/dist/payload/vectors/gs1-digital-link.d.ts +9 -0
- package/dist/payload/vectors/gs1-digital-link.d.ts.map +1 -0
- package/dist/payload/vectors/gs1-digital-link.js +21 -0
- package/dist/payload/vectors/gs1-digital-link.js.map +1 -0
- package/dist/payload/vectors/hosts.d.ts +12 -0
- package/dist/payload/vectors/hosts.d.ts.map +1 -0
- package/dist/payload/vectors/hosts.js +50 -0
- package/dist/payload/vectors/hosts.js.map +1 -0
- package/dist/payload/vectors/index.d.ts +10 -0
- package/dist/payload/vectors/index.d.ts.map +1 -0
- package/dist/payload/vectors/index.js +9 -0
- package/dist/payload/vectors/index.js.map +1 -0
- package/dist/payload/vectors/lightning.d.ts +9 -0
- package/dist/payload/vectors/lightning.d.ts.map +1 -0
- package/dist/payload/vectors/lightning.js +23 -0
- package/dist/payload/vectors/lightning.js.map +1 -0
- package/dist/payload/vectors/mecard.d.ts +9 -0
- package/dist/payload/vectors/mecard.d.ts.map +1 -0
- package/dist/payload/vectors/mecard.js +25 -0
- package/dist/payload/vectors/mecard.js.map +1 -0
- package/dist/payload/vectors/phone.d.ts +9 -0
- package/dist/payload/vectors/phone.d.ts.map +1 -0
- package/dist/payload/vectors/phone.js +13 -0
- package/dist/payload/vectors/phone.js.map +1 -0
- package/dist/payload/vectors/pix.d.ts +9 -0
- package/dist/payload/vectors/pix.d.ts.map +1 -0
- package/dist/payload/vectors/pix.js +21 -0
- package/dist/payload/vectors/pix.js.map +1 -0
- package/dist/payload/vectors/signal.d.ts +9 -0
- package/dist/payload/vectors/signal.d.ts.map +1 -0
- package/dist/payload/vectors/signal.js +14 -0
- package/dist/payload/vectors/signal.js.map +1 -0
- package/dist/payload/vectors/sms.d.ts +9 -0
- package/dist/payload/vectors/sms.d.ts.map +1 -0
- package/dist/payload/vectors/sms.js +18 -0
- package/dist/payload/vectors/sms.js.map +1 -0
- package/dist/payload/vectors/swiss-qr-bill.d.ts +9 -0
- package/dist/payload/vectors/swiss-qr-bill.d.ts.map +1 -0
- package/dist/payload/vectors/swiss-qr-bill.js +72 -0
- package/dist/payload/vectors/swiss-qr-bill.js.map +1 -0
- package/dist/payload/vectors/telegram.d.ts +9 -0
- package/dist/payload/vectors/telegram.d.ts.map +1 -0
- package/dist/payload/vectors/telegram.js +19 -0
- package/dist/payload/vectors/telegram.js.map +1 -0
- package/dist/payload/vectors/text.d.ts +9 -0
- package/dist/payload/vectors/text.d.ts.map +1 -0
- package/dist/payload/vectors/text.js +13 -0
- package/dist/payload/vectors/text.js.map +1 -0
- package/dist/payload/vectors/upi.d.ts +9 -0
- package/dist/payload/vectors/upi.d.ts.map +1 -0
- package/dist/payload/vectors/upi.js +14 -0
- package/dist/payload/vectors/upi.js.map +1 -0
- package/dist/payload/vectors/url.d.ts +8 -0
- package/dist/payload/vectors/url.d.ts.map +1 -0
- package/dist/payload/vectors/url.js +30 -0
- package/dist/payload/vectors/url.js.map +1 -0
- package/dist/payload/vectors/vcard.d.ts +9 -0
- package/dist/payload/vectors/vcard.d.ts.map +1 -0
- package/dist/payload/vectors/vcard.js +47 -0
- package/dist/payload/vectors/vcard.js.map +1 -0
- package/dist/payload/vectors/whatsapp.d.ts +9 -0
- package/dist/payload/vectors/whatsapp.d.ts.map +1 -0
- package/dist/payload/vectors/whatsapp.js +19 -0
- package/dist/payload/vectors/whatsapp.js.map +1 -0
- package/dist/payload/vectors/wifi.d.ts +13 -0
- package/dist/payload/vectors/wifi.d.ts.map +1 -0
- package/dist/payload/vectors/wifi.js +40 -0
- package/dist/payload/vectors/wifi.js.map +1 -0
- package/dist/payload/vectors/zatca.d.ts +12 -0
- package/dist/payload/vectors/zatca.d.ts.map +1 -0
- package/dist/payload/vectors/zatca.js +28 -0
- package/dist/payload/vectors/zatca.js.map +1 -0
- package/dist/qr-code-studio.html +190 -0
- package/dist/registries.d.ts +24 -0
- package/dist/registries.d.ts.map +1 -0
- package/dist/registries.js +23 -0
- package/dist/registries.js.map +1 -0
- package/dist/render/base64.d.ts +11 -0
- package/dist/render/base64.d.ts.map +1 -0
- package/dist/render/base64.js +40 -0
- package/dist/render/base64.js.map +1 -0
- package/dist/render/colour.d.ts +28 -0
- package/dist/render/colour.d.ts.map +1 -0
- package/dist/render/colour.js +72 -0
- package/dist/render/colour.js.map +1 -0
- package/dist/render/conic.d.ts +68 -0
- package/dist/render/conic.d.ts.map +1 -0
- package/dist/render/conic.js +205 -0
- package/dist/render/conic.js.map +1 -0
- package/dist/render/coverage.d.ts +154 -0
- package/dist/render/coverage.d.ts.map +1 -0
- package/dist/render/coverage.js +613 -0
- package/dist/render/coverage.js.map +1 -0
- package/dist/render/eps.d.ts +41 -0
- package/dist/render/eps.d.ts.map +1 -0
- package/dist/render/eps.js +377 -0
- package/dist/render/eps.js.map +1 -0
- package/dist/render/impose.d.ts +130 -0
- package/dist/render/impose.d.ts.map +1 -0
- package/dist/render/impose.js +288 -0
- package/dist/render/impose.js.map +1 -0
- package/dist/render/index.d.ts +22 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +13 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/paint.d.ts +62 -0
- package/dist/render/paint.d.ts.map +1 -0
- package/dist/render/paint.js +169 -0
- package/dist/render/paint.js.map +1 -0
- package/dist/render/pdf-colour.d.ts +34 -0
- package/dist/render/pdf-colour.d.ts.map +1 -0
- package/dist/render/pdf-colour.js +64 -0
- package/dist/render/pdf-colour.js.map +1 -0
- package/dist/render/pdf-content.d.ts +90 -0
- package/dist/render/pdf-content.d.ts.map +1 -0
- package/dist/render/pdf-content.js +367 -0
- package/dist/render/pdf-content.js.map +1 -0
- package/dist/render/pdf-document.d.ts +38 -0
- package/dist/render/pdf-document.d.ts.map +1 -0
- package/dist/render/pdf-document.js +110 -0
- package/dist/render/pdf-document.js.map +1 -0
- package/dist/render/pdf-hash.d.ts +14 -0
- package/dist/render/pdf-hash.d.ts.map +1 -0
- package/dist/render/pdf-hash.js +71 -0
- package/dist/render/pdf-hash.js.map +1 -0
- package/dist/render/pdf-syntax.d.ts +45 -0
- package/dist/render/pdf-syntax.d.ts.map +1 -0
- package/dist/render/pdf-syntax.js +100 -0
- package/dist/render/pdf-syntax.js.map +1 -0
- package/dist/render/pdf.d.ts +59 -0
- package/dist/render/pdf.d.ts.map +1 -0
- package/dist/render/pdf.js +267 -0
- package/dist/render/pdf.js.map +1 -0
- package/dist/render/png-decode.d.ts +33 -0
- package/dist/render/png-decode.d.ts.map +1 -0
- package/dist/render/png-decode.js +345 -0
- package/dist/render/png-decode.js.map +1 -0
- package/dist/render/png.d.ts +37 -0
- package/dist/render/png.d.ts.map +1 -0
- package/dist/render/png.js +350 -0
- package/dist/render/png.js.map +1 -0
- package/dist/render/raster.d.ts +40 -0
- package/dist/render/raster.d.ts.map +1 -0
- package/dist/render/raster.js +245 -0
- package/dist/render/raster.js.map +1 -0
- package/dist/render/scene.d.ts +84 -0
- package/dist/render/scene.d.ts.map +1 -0
- package/dist/render/scene.js +216 -0
- package/dist/render/scene.js.map +1 -0
- package/dist/render/sheets.d.ts +26 -0
- package/dist/render/sheets.d.ts.map +1 -0
- package/dist/render/sheets.js +83 -0
- package/dist/render/sheets.js.map +1 -0
- package/dist/render/svg.d.ts +54 -0
- package/dist/render/svg.d.ts.map +1 -0
- package/dist/render/svg.js +324 -0
- package/dist/render/svg.js.map +1 -0
- package/dist/render/types.d.ts +95 -0
- package/dist/render/types.d.ts.map +1 -0
- package/dist/render/types.js +9 -0
- package/dist/render/types.js.map +1 -0
- package/dist/segment/alphanumeric.d.ts +15 -0
- package/dist/segment/alphanumeric.d.ts.map +1 -0
- package/dist/segment/alphanumeric.js +23 -0
- package/dist/segment/alphanumeric.js.map +1 -0
- package/dist/segment/eci.d.ts +41 -0
- package/dist/segment/eci.d.ts.map +1 -0
- package/dist/segment/eci.js +194 -0
- package/dist/segment/eci.js.map +1 -0
- package/dist/segment/index.d.ts +10 -0
- package/dist/segment/index.d.ts.map +1 -0
- package/dist/segment/index.js +8 -0
- package/dist/segment/index.js.map +1 -0
- package/dist/segment/kanji.d.ts +57 -0
- package/dist/segment/kanji.d.ts.map +1 -0
- package/dist/segment/kanji.js +135 -0
- package/dist/segment/kanji.js.map +1 -0
- package/dist/segment/profile.d.ts +21 -0
- package/dist/segment/profile.d.ts.map +1 -0
- package/dist/segment/profile.js +66 -0
- package/dist/segment/profile.js.map +1 -0
- package/dist/segment/read.d.ts +29 -0
- package/dist/segment/read.d.ts.map +1 -0
- package/dist/segment/read.js +360 -0
- package/dist/segment/read.js.map +1 -0
- package/dist/segment/segment-text.d.ts +88 -0
- package/dist/segment/segment-text.d.ts.map +1 -0
- package/dist/segment/segment-text.js +422 -0
- package/dist/segment/segment-text.js.map +1 -0
- package/dist/segment/types.d.ts +89 -0
- package/dist/segment/types.d.ts.map +1 -0
- package/dist/segment/types.js +13 -0
- package/dist/segment/types.js.map +1 -0
- package/dist/segment/write.d.ts +36 -0
- package/dist/segment/write.d.ts.map +1 -0
- package/dist/segment/write.js +226 -0
- package/dist/segment/write.js.map +1 -0
- package/dist/studio/assets.d.ts +22 -0
- package/dist/studio/assets.d.ts.map +1 -0
- package/dist/studio/assets.js +66 -0
- package/dist/studio/assets.js.map +1 -0
- package/dist/studio/catalogue.d.ts +34 -0
- package/dist/studio/catalogue.d.ts.map +1 -0
- package/dist/studio/catalogue.js +359 -0
- package/dist/studio/catalogue.js.map +1 -0
- package/dist/studio/contrast.d.ts +16 -0
- package/dist/studio/contrast.d.ts.map +1 -0
- package/dist/studio/contrast.js +28 -0
- package/dist/studio/contrast.js.map +1 -0
- package/dist/studio/document.d.ts +61 -0
- package/dist/studio/document.d.ts.map +1 -0
- package/dist/studio/document.js +208 -0
- package/dist/studio/document.js.map +1 -0
- package/dist/studio/export.d.ts +52 -0
- package/dist/studio/export.d.ts.map +1 -0
- package/dist/studio/export.js +269 -0
- package/dist/studio/export.js.map +1 -0
- package/dist/studio/form.d.ts +15 -0
- package/dist/studio/form.d.ts.map +1 -0
- package/dist/studio/form.js +91 -0
- package/dist/studio/form.js.map +1 -0
- package/dist/studio/history.d.ts +66 -0
- package/dist/studio/history.d.ts.map +1 -0
- package/dist/studio/history.js +109 -0
- package/dist/studio/history.js.map +1 -0
- package/dist/studio/index.d.ts +16 -0
- package/dist/studio/index.d.ts.map +1 -0
- package/dist/studio/index.js +12 -0
- package/dist/studio/index.js.map +1 -0
- package/dist/studio/keys.d.ts +86 -0
- package/dist/studio/keys.d.ts.map +1 -0
- package/dist/studio/keys.js +165 -0
- package/dist/studio/keys.js.map +1 -0
- package/dist/studio/kit.d.ts +44 -0
- package/dist/studio/kit.d.ts.map +1 -0
- package/dist/studio/kit.js +114 -0
- package/dist/studio/kit.js.map +1 -0
- package/dist/studio/logo.d.ts +25 -0
- package/dist/studio/logo.d.ts.map +1 -0
- package/dist/studio/logo.js +49 -0
- package/dist/studio/logo.js.map +1 -0
- package/dist/studio/names.d.ts +18 -0
- package/dist/studio/names.d.ts.map +1 -0
- package/dist/studio/names.js +36 -0
- package/dist/studio/names.js.map +1 -0
- package/dist/studio/patch.d.ts +17 -0
- package/dist/studio/patch.d.ts.map +1 -0
- package/dist/studio/patch.js +64 -0
- package/dist/studio/patch.js.map +1 -0
- package/dist/studio/seams.d.ts +44 -0
- package/dist/studio/seams.d.ts.map +1 -0
- package/dist/studio/seams.js +36 -0
- package/dist/studio/seams.js.map +1 -0
- package/dist/studio/share.d.ts +16 -0
- package/dist/studio/share.d.ts.map +1 -0
- package/dist/studio/share.js +57 -0
- package/dist/studio/share.js.map +1 -0
- package/dist/studio/shuffle.d.ts +38 -0
- package/dist/studio/shuffle.d.ts.map +1 -0
- package/dist/studio/shuffle.js +181 -0
- package/dist/studio/shuffle.js.map +1 -0
- package/dist/studio/slices.d.ts +29 -0
- package/dist/studio/slices.d.ts.map +1 -0
- package/dist/studio/slices.js +84 -0
- package/dist/studio/slices.js.map +1 -0
- package/dist/studio/studio.d.ts +29 -0
- package/dist/studio/studio.d.ts.map +1 -0
- package/dist/studio/studio.js +1298 -0
- package/dist/studio/studio.js.map +1 -0
- package/dist/studio/symbol.d.ts +47 -0
- package/dist/studio/symbol.d.ts.map +1 -0
- package/dist/studio/symbol.js +159 -0
- package/dist/studio/symbol.js.map +1 -0
- package/dist/studio/timers.d.ts +18 -0
- package/dist/studio/timers.d.ts.map +1 -0
- package/dist/studio/timers.js +36 -0
- package/dist/studio/timers.js.map +1 -0
- package/dist/studio/types.d.ts +693 -0
- package/dist/studio/types.d.ts.map +1 -0
- package/dist/studio/types.js +26 -0
- package/dist/studio/types.js.map +1 -0
- package/dist/studio/verify.d.ts +47 -0
- package/dist/studio/verify.d.ts.map +1 -0
- package/dist/studio/verify.js +63 -0
- package/dist/studio/verify.js.map +1 -0
- package/dist/symbology/index.d.ts +8 -0
- package/dist/symbology/index.d.ts.map +1 -0
- package/dist/symbology/index.js +6 -0
- package/dist/symbology/index.js.map +1 -0
- package/dist/symbology/micro/blocks.d.ts +34 -0
- package/dist/symbology/micro/blocks.d.ts.map +1 -0
- package/dist/symbology/micro/blocks.js +63 -0
- package/dist/symbology/micro/blocks.js.map +1 -0
- package/dist/symbology/micro/entry.d.ts +70 -0
- package/dist/symbology/micro/entry.d.ts.map +1 -0
- package/dist/symbology/micro/entry.js +181 -0
- package/dist/symbology/micro/entry.js.map +1 -0
- package/dist/symbology/micro/format.d.ts +31 -0
- package/dist/symbology/micro/format.d.ts.map +1 -0
- package/dist/symbology/micro/format.js +48 -0
- package/dist/symbology/micro/format.js.map +1 -0
- package/dist/symbology/micro/index.d.ts +7 -0
- package/dist/symbology/micro/index.d.ts.map +1 -0
- package/dist/symbology/micro/index.js +5 -0
- package/dist/symbology/micro/index.js.map +1 -0
- package/dist/symbology/micro/layout.d.ts +40 -0
- package/dist/symbology/micro/layout.d.ts.map +1 -0
- package/dist/symbology/micro/layout.js +106 -0
- package/dist/symbology/micro/layout.js.map +1 -0
- package/dist/symbology/micro/mask.d.ts +25 -0
- package/dist/symbology/micro/mask.d.ts.map +1 -0
- package/dist/symbology/micro/mask.js +41 -0
- package/dist/symbology/micro/mask.js.map +1 -0
- package/dist/symbology/micro/modules.d.ts +76 -0
- package/dist/symbology/micro/modules.d.ts.map +1 -0
- package/dist/symbology/micro/modules.js +156 -0
- package/dist/symbology/micro/modules.js.map +1 -0
- package/dist/symbology/micro/profile.d.ts +16 -0
- package/dist/symbology/micro/profile.d.ts.map +1 -0
- package/dist/symbology/micro/profile.js +45 -0
- package/dist/symbology/micro/profile.js.map +1 -0
- package/dist/symbology/micro/read-helpers.d.ts +31 -0
- package/dist/symbology/micro/read-helpers.d.ts.map +1 -0
- package/dist/symbology/micro/read-helpers.js +66 -0
- package/dist/symbology/micro/read-helpers.js.map +1 -0
- package/dist/symbology/micro/tables.d.ts +63 -0
- package/dist/symbology/micro/tables.d.ts.map +1 -0
- package/dist/symbology/micro/tables.js +163 -0
- package/dist/symbology/micro/tables.js.map +1 -0
- package/dist/symbology/qr/blocks.d.ts +58 -0
- package/dist/symbology/qr/blocks.d.ts.map +1 -0
- package/dist/symbology/qr/blocks.js +176 -0
- package/dist/symbology/qr/blocks.js.map +1 -0
- package/dist/symbology/qr/build.d.ts +20 -0
- package/dist/symbology/qr/build.d.ts.map +1 -0
- package/dist/symbology/qr/build.js +91 -0
- package/dist/symbology/qr/build.js.map +1 -0
- package/dist/symbology/qr/entry.d.ts +13 -0
- package/dist/symbology/qr/entry.d.ts.map +1 -0
- package/dist/symbology/qr/entry.js +56 -0
- package/dist/symbology/qr/entry.js.map +1 -0
- package/dist/symbology/qr/index.d.ts +13 -0
- package/dist/symbology/qr/index.d.ts.map +1 -0
- package/dist/symbology/qr/index.js +9 -0
- package/dist/symbology/qr/index.js.map +1 -0
- package/dist/symbology/qr/info.d.ts +29 -0
- package/dist/symbology/qr/info.d.ts.map +1 -0
- package/dist/symbology/qr/info.js +53 -0
- package/dist/symbology/qr/info.js.map +1 -0
- package/dist/symbology/qr/layout.d.ts +37 -0
- package/dist/symbology/qr/layout.d.ts.map +1 -0
- package/dist/symbology/qr/layout.js +174 -0
- package/dist/symbology/qr/layout.js.map +1 -0
- package/dist/symbology/qr/mask.d.ts +35 -0
- package/dist/symbology/qr/mask.d.ts.map +1 -0
- package/dist/symbology/qr/mask.js +113 -0
- package/dist/symbology/qr/mask.js.map +1 -0
- package/dist/symbology/qr/read.d.ts +43 -0
- package/dist/symbology/qr/read.d.ts.map +1 -0
- package/dist/symbology/qr/read.js +219 -0
- package/dist/symbology/qr/read.js.map +1 -0
- package/dist/symbology/qr/tables.d.ts +62 -0
- package/dist/symbology/qr/tables.d.ts.map +1 -0
- package/dist/symbology/qr/tables.js +337 -0
- package/dist/symbology/qr/tables.js.map +1 -0
- package/dist/symbology/registry.d.ts +11 -0
- package/dist/symbology/registry.d.ts.map +1 -0
- package/dist/symbology/registry.js +19 -0
- package/dist/symbology/registry.js.map +1 -0
- package/dist/symbology/rmqr/entry.d.ts +56 -0
- package/dist/symbology/rmqr/entry.d.ts.map +1 -0
- package/dist/symbology/rmqr/entry.js +165 -0
- package/dist/symbology/rmqr/entry.js.map +1 -0
- package/dist/symbology/rmqr/format.d.ts +45 -0
- package/dist/symbology/rmqr/format.d.ts.map +1 -0
- package/dist/symbology/rmqr/format.js +72 -0
- package/dist/symbology/rmqr/format.js.map +1 -0
- package/dist/symbology/rmqr/index.d.ts +5 -0
- package/dist/symbology/rmqr/index.d.ts.map +1 -0
- package/dist/symbology/rmqr/index.js +5 -0
- package/dist/symbology/rmqr/index.js.map +1 -0
- package/dist/symbology/rmqr/layout.d.ts +46 -0
- package/dist/symbology/rmqr/layout.d.ts.map +1 -0
- package/dist/symbology/rmqr/layout.js +196 -0
- package/dist/symbology/rmqr/layout.js.map +1 -0
- package/dist/symbology/rmqr/profile.d.ts +15 -0
- package/dist/symbology/rmqr/profile.d.ts.map +1 -0
- package/dist/symbology/rmqr/profile.js +52 -0
- package/dist/symbology/rmqr/profile.js.map +1 -0
- package/dist/symbology/rmqr/tables.d.ts +62 -0
- package/dist/symbology/rmqr/tables.d.ts.map +1 -0
- package/dist/symbology/rmqr/tables.js +194 -0
- package/dist/symbology/rmqr/tables.js.map +1 -0
- package/dist/symbology/roles.d.ts +19 -0
- package/dist/symbology/roles.d.ts.map +1 -0
- package/dist/symbology/roles.js +35 -0
- package/dist/symbology/roles.js.map +1 -0
- package/dist/symbology/types.d.ts +126 -0
- package/dist/symbology/types.d.ts.map +1 -0
- package/dist/symbology/types.js +11 -0
- package/dist/symbology/types.js.map +1 -0
- package/dist/text/base64.d.ts +11 -0
- package/dist/text/base64.d.ts.map +1 -0
- package/dist/text/base64.js +49 -0
- package/dist/text/base64.js.map +1 -0
- package/dist/text/cmap.d.ts +17 -0
- package/dist/text/cmap.d.ts.map +1 -0
- package/dist/text/cmap.js +161 -0
- package/dist/text/cmap.js.map +1 -0
- package/dist/text/compiled.d.ts +52 -0
- package/dist/text/compiled.d.ts.map +1 -0
- package/dist/text/compiled.js +220 -0
- package/dist/text/compiled.js.map +1 -0
- package/dist/text/errors.d.ts +34 -0
- package/dist/text/errors.d.ts.map +1 -0
- package/dist/text/errors.js +26 -0
- package/dist/text/errors.js.map +1 -0
- package/dist/text/font.d.ts +29 -0
- package/dist/text/font.d.ts.map +1 -0
- package/dist/text/font.js +67 -0
- package/dist/text/font.js.map +1 -0
- package/dist/text/glyf.d.ts +62 -0
- package/dist/text/glyf.d.ts.map +1 -0
- package/dist/text/glyf.js +276 -0
- package/dist/text/glyf.js.map +1 -0
- package/dist/text/index.d.ts +13 -0
- package/dist/text/index.d.ts.map +1 -0
- package/dist/text/index.js +9 -0
- package/dist/text/index.js.map +1 -0
- package/dist/text/kerning.d.ts +36 -0
- package/dist/text/kerning.d.ts.map +1 -0
- package/dist/text/kerning.js +382 -0
- package/dist/text/kerning.js.map +1 -0
- package/dist/text/layout.d.ts +35 -0
- package/dist/text/layout.d.ts.map +1 -0
- package/dist/text/layout.js +287 -0
- package/dist/text/layout.js.map +1 -0
- package/dist/text/outline.d.ts +22 -0
- package/dist/text/outline.d.ts.map +1 -0
- package/dist/text/outline.js +79 -0
- package/dist/text/outline.js.map +1 -0
- package/dist/text/reader.d.ts +43 -0
- package/dist/text/reader.d.ts.map +1 -0
- package/dist/text/reader.js +83 -0
- package/dist/text/reader.js.map +1 -0
- package/dist/text/registry.d.ts +21 -0
- package/dist/text/registry.d.ts.map +1 -0
- package/dist/text/registry.js +32 -0
- package/dist/text/registry.js.map +1 -0
- package/dist/text/truetype.d.ts +44 -0
- package/dist/text/truetype.d.ts.map +1 -0
- package/dist/text/truetype.js +127 -0
- package/dist/text/truetype.js.map +1 -0
- package/dist/text/types.d.ts +106 -0
- package/dist/text/types.d.ts.map +1 -0
- package/dist/text/types.js +11 -0
- package/dist/text/types.js.map +1 -0
- package/dist/verify/camera.d.ts +59 -0
- package/dist/verify/camera.d.ts.map +1 -0
- package/dist/verify/camera.js +76 -0
- package/dist/verify/camera.js.map +1 -0
- package/dist/verify/capture.d.ts +40 -0
- package/dist/verify/capture.d.ts.map +1 -0
- package/dist/verify/capture.js +118 -0
- package/dist/verify/capture.js.map +1 -0
- package/dist/verify/coverage.d.ts +61 -0
- package/dist/verify/coverage.d.ts.map +1 -0
- package/dist/verify/coverage.js +90 -0
- package/dist/verify/coverage.js.map +1 -0
- package/dist/verify/degrade.d.ts +143 -0
- package/dist/verify/degrade.d.ts.map +1 -0
- package/dist/verify/degrade.js +503 -0
- package/dist/verify/degrade.js.map +1 -0
- package/dist/verify/fixes.d.ts +28 -0
- package/dist/verify/fixes.d.ts.map +1 -0
- package/dist/verify/fixes.js +277 -0
- package/dist/verify/fixes.js.map +1 -0
- package/dist/verify/homography.d.ts +32 -0
- package/dist/verify/homography.d.ts.map +1 -0
- package/dist/verify/homography.js +79 -0
- package/dist/verify/homography.js.map +1 -0
- package/dist/verify/index.d.ts +17 -0
- package/dist/verify/index.d.ts.map +1 -0
- package/dist/verify/index.js +11 -0
- package/dist/verify/index.js.map +1 -0
- package/dist/verify/inks.d.ts +39 -0
- package/dist/verify/inks.d.ts.map +1 -0
- package/dist/verify/inks.js +101 -0
- package/dist/verify/inks.js.map +1 -0
- package/dist/verify/job.d.ts +89 -0
- package/dist/verify/job.d.ts.map +1 -0
- package/dist/verify/job.js +314 -0
- package/dist/verify/job.js.map +1 -0
- package/dist/verify/keys.d.ts +92 -0
- package/dist/verify/keys.d.ts.map +1 -0
- package/dist/verify/keys.js +95 -0
- package/dist/verify/keys.js.map +1 -0
- package/dist/verify/ladders.d.ts +68 -0
- package/dist/verify/ladders.d.ts.map +1 -0
- package/dist/verify/ladders.js +154 -0
- package/dist/verify/ladders.js.map +1 -0
- package/dist/verify/prepare.d.ts +78 -0
- package/dist/verify/prepare.d.ts.map +1 -0
- package/dist/verify/prepare.js +307 -0
- package/dist/verify/prepare.js.map +1 -0
- package/dist/verify/preset.d.ts +111 -0
- package/dist/verify/preset.d.ts.map +1 -0
- package/dist/verify/preset.js +200 -0
- package/dist/verify/preset.js.map +1 -0
- package/dist/verify/read.d.ts +23 -0
- package/dist/verify/read.d.ts.map +1 -0
- package/dist/verify/read.js +55 -0
- package/dist/verify/read.js.map +1 -0
- package/dist/verify/region.d.ts +37 -0
- package/dist/verify/region.d.ts.map +1 -0
- package/dist/verify/region.js +80 -0
- package/dist/verify/region.js.map +1 -0
- package/dist/verify/static.d.ts +56 -0
- package/dist/verify/static.d.ts.map +1 -0
- package/dist/verify/static.js +277 -0
- package/dist/verify/static.js.map +1 -0
- package/dist/verify/types.d.ts +173 -0
- package/dist/verify/types.d.ts.map +1 -0
- package/dist/verify/types.js +36 -0
- package/dist/verify/types.js.map +1 -0
- package/package.json +191 -5
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deciding which pixels are dark.
|
|
3
|
+
*
|
|
4
|
+
* The hardest and least glamorous part of reading a code from a photograph. A
|
|
5
|
+
* screenshot is trivial; a phone photograph of a laptop screen has a
|
|
6
|
+
* brightness gradient across it, a highlight somewhere and a colour cast, and
|
|
7
|
+
* one global threshold shreds it.
|
|
8
|
+
*
|
|
9
|
+
* Three strategies, lifted from the authenticator package's reader
|
|
10
|
+
* (google-auth-secret-retriever, `src/qr/decode/binarise.ts`), tried in order
|
|
11
|
+
* by the lenient ladder rather than chosen cleverly. The strict profile reads
|
|
12
|
+
* with the block-mean hybrid alone, the one jsQR and ZXing use, and models
|
|
13
|
+
* zxing-cpp with that reader's own (`binariseLocalAverage`).
|
|
14
|
+
*
|
|
15
|
+
* Each keeps its thresholds as well as its decisions. A sampled module is
|
|
16
|
+
* soft: how far its grey sits from the local threshold, as well as which side,
|
|
17
|
+
* and the threshold that made the decision is the one it is measured against.
|
|
18
|
+
*/
|
|
19
|
+
import type { GreyImage } from './grey.js';
|
|
20
|
+
export type BinariserId = 'hybrid' | 'hybrid-mean' | 'otsu' | 'sauvola';
|
|
21
|
+
export interface Binarised {
|
|
22
|
+
readonly width: number;
|
|
23
|
+
readonly height: number;
|
|
24
|
+
/** One byte per pixel, row major: 1 dark, 0 light. */
|
|
25
|
+
readonly bits: Uint8Array;
|
|
26
|
+
/** The threshold at a pixel: a grey at or below it is dark. */
|
|
27
|
+
threshold(x: number, y: number): number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Otsu's method: the global split that minimises the variance within the two
|
|
31
|
+
* groups it makes.
|
|
32
|
+
*
|
|
33
|
+
* Excellent on screenshots, which have two clean peaks, and useless under a
|
|
34
|
+
* gradient, which is why it is not the first rung.
|
|
35
|
+
*/
|
|
36
|
+
export declare function otsuThreshold(image: GreyImage): number;
|
|
37
|
+
export declare function binariseOtsu(image: GreyImage): Binarised;
|
|
38
|
+
/**
|
|
39
|
+
* Local thresholds on an 8 by 8 grid, smoothed across neighbouring blocks.
|
|
40
|
+
*
|
|
41
|
+
* The workhorse, and the reason photographs read at all. Two details do the
|
|
42
|
+
* work. A block whose range is tiny is judged flat, and takes the average of
|
|
43
|
+
* its already-computed neighbours rather than inventing a threshold in the
|
|
44
|
+
* middle of a uniform area, which would shred a plain quiet zone into noise.
|
|
45
|
+
* And each block's threshold is averaged over its 3 by 3 neighbourhood, so the
|
|
46
|
+
* block boundaries do not print themselves onto the result.
|
|
47
|
+
*/
|
|
48
|
+
export declare function binariseHybrid(image: GreyImage): Binarised;
|
|
49
|
+
/**
|
|
50
|
+
* The hybrid binariser the common readers use: zxing's HybridBinarizer, which
|
|
51
|
+
* jsQR ports line for line.
|
|
52
|
+
*
|
|
53
|
+
* The same 8 by 8 grid as `binariseHybrid`, with three differences that
|
|
54
|
+
* matter. A block's threshold is the mean of its pixels rather than the middle
|
|
55
|
+
* of its range, which on a low-contrast or unevenly lit block lands somewhere
|
|
56
|
+
* else entirely. A flat block assumes it is light ground (half its minimum)
|
|
57
|
+
* and takes its neighbours' threshold only when its own pixels sit below it.
|
|
58
|
+
* And the smoothing is over 5 by 5 blocks, clamped so the window stays inside
|
|
59
|
+
* the grid at the edges.
|
|
60
|
+
*
|
|
61
|
+
* The strict profile thresholds this way because it is how the phone readers
|
|
62
|
+
* it has to be at least as hard as see the picture: a module that lands on
|
|
63
|
+
* the wrong side of their threshold is an error for them whatever a better
|
|
64
|
+
* threshold would have made of it.
|
|
65
|
+
*/
|
|
66
|
+
export declare function binariseHybridMean(image: GreyImage): Binarised;
|
|
67
|
+
/**
|
|
68
|
+
* zxing-cpp's hybrid binariser as it stands, the "LocalAverage" one zxing-wasm
|
|
69
|
+
* reads with by default, written from its description: the strict profile's
|
|
70
|
+
* model of how zxing-cpp sees a picture, where it has to predict what zxing-cpp
|
|
71
|
+
* will make of a finder or a grid.
|
|
72
|
+
*
|
|
73
|
+
* It is neither `binariseHybrid` nor `binariseHybridMean`, and the differences
|
|
74
|
+
* decide what a flat patch becomes. A block's threshold is the middle of its
|
|
75
|
+
* range, or none at all when the range is 24 or less; each is then averaged
|
|
76
|
+
* over the five by five blocks round it, its own counted three times and the
|
|
77
|
+
* blocks with none not at all; and a block left with none after that takes
|
|
78
|
+
* the next block's that has one, in reading order. So a dark patch wider than
|
|
79
|
+
* a block, the centre of a finder at ten pixels a module, takes its threshold
|
|
80
|
+
* from its surroundings and stays dark, where `binariseHybrid` can leave a
|
|
81
|
+
* light hole in it. Edge blocks are moved back inside the picture, and the
|
|
82
|
+
* last one decides the pixels it shares with the one before.
|
|
83
|
+
*/
|
|
84
|
+
export declare function binariseLocalAverage(image: GreyImage): Binarised;
|
|
85
|
+
/**
|
|
86
|
+
* Sauvola: a windowed mean adjusted by the local standard deviation.
|
|
87
|
+
*
|
|
88
|
+
* Slow, and the right answer for glare. A highlight wrecks the local mean but
|
|
89
|
+
* leaves the local variance alone, so a rule that leans on the variance keeps
|
|
90
|
+
* reading modules where a mean-based one gives up. Integral images make the
|
|
91
|
+
* window size free.
|
|
92
|
+
*/
|
|
93
|
+
export declare function binariseSauvola(image: GreyImage, window?: number, k?: number): Binarised;
|
|
94
|
+
export declare function binarise(image: GreyImage, which: BinariserId): Binarised;
|
|
95
|
+
//# sourceMappingURL=binarise.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binarise.d.ts","sourceRoot":"","sources":["../../src/decode/binarise.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAExE,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,+DAA+D;IAC/D,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxC;AAMD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAyBtD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAKxD;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CA0E1D;AAKD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAsE9D;AAOD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAkEhE;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,SAAK,EAAE,CAAC,SAAM,GAAG,SAAS,CA4CjF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,SAAS,CAWxE"}
|
|
@@ -0,0 +1,399 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deciding which pixels are dark.
|
|
3
|
+
*
|
|
4
|
+
* The hardest and least glamorous part of reading a code from a photograph. A
|
|
5
|
+
* screenshot is trivial; a phone photograph of a laptop screen has a
|
|
6
|
+
* brightness gradient across it, a highlight somewhere and a colour cast, and
|
|
7
|
+
* one global threshold shreds it.
|
|
8
|
+
*
|
|
9
|
+
* Three strategies, lifted from the authenticator package's reader
|
|
10
|
+
* (google-auth-secret-retriever, `src/qr/decode/binarise.ts`), tried in order
|
|
11
|
+
* by the lenient ladder rather than chosen cleverly. The strict profile reads
|
|
12
|
+
* with the block-mean hybrid alone, the one jsQR and ZXing use, and models
|
|
13
|
+
* zxing-cpp with that reader's own (`binariseLocalAverage`).
|
|
14
|
+
*
|
|
15
|
+
* Each keeps its thresholds as well as its decisions. A sampled module is
|
|
16
|
+
* soft: how far its grey sits from the local threshold, as well as which side,
|
|
17
|
+
* and the threshold that made the decision is the one it is measured against.
|
|
18
|
+
*/
|
|
19
|
+
const BLOCK = 8;
|
|
20
|
+
/** Below this range a block is judged flat and takes its threshold from its neighbours. */
|
|
21
|
+
const MIN_DYNAMIC_RANGE = 24;
|
|
22
|
+
/**
|
|
23
|
+
* Otsu's method: the global split that minimises the variance within the two
|
|
24
|
+
* groups it makes.
|
|
25
|
+
*
|
|
26
|
+
* Excellent on screenshots, which have two clean peaks, and useless under a
|
|
27
|
+
* gradient, which is why it is not the first rung.
|
|
28
|
+
*/
|
|
29
|
+
export function otsuThreshold(image) {
|
|
30
|
+
const histogram = new Uint32Array(256);
|
|
31
|
+
for (let i = 0; i < image.data.length; i += 1)
|
|
32
|
+
histogram[image.data[i]] += 1;
|
|
33
|
+
const total = image.data.length;
|
|
34
|
+
let sum = 0;
|
|
35
|
+
for (let i = 0; i < 256; i += 1)
|
|
36
|
+
sum += i * histogram[i];
|
|
37
|
+
let sumBackground = 0;
|
|
38
|
+
let weightBackground = 0;
|
|
39
|
+
let best = 0;
|
|
40
|
+
let bestVariance = -1;
|
|
41
|
+
for (let t = 0; t < 256; t += 1) {
|
|
42
|
+
weightBackground += histogram[t];
|
|
43
|
+
if (weightBackground === 0)
|
|
44
|
+
continue;
|
|
45
|
+
const weightForeground = total - weightBackground;
|
|
46
|
+
if (weightForeground === 0)
|
|
47
|
+
break;
|
|
48
|
+
sumBackground += t * histogram[t];
|
|
49
|
+
const difference = sumBackground / weightBackground - (sum - sumBackground) / weightForeground;
|
|
50
|
+
const variance = weightBackground * weightForeground * difference * difference;
|
|
51
|
+
if (variance > bestVariance) {
|
|
52
|
+
bestVariance = variance;
|
|
53
|
+
best = t;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return best;
|
|
57
|
+
}
|
|
58
|
+
export function binariseOtsu(image) {
|
|
59
|
+
const threshold = otsuThreshold(image);
|
|
60
|
+
const bits = new Uint8Array(image.data.length);
|
|
61
|
+
for (let i = 0; i < bits.length; i += 1)
|
|
62
|
+
bits[i] = image.data[i] <= threshold ? 1 : 0;
|
|
63
|
+
return { width: image.width, height: image.height, bits, threshold: () => threshold };
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Local thresholds on an 8 by 8 grid, smoothed across neighbouring blocks.
|
|
67
|
+
*
|
|
68
|
+
* The workhorse, and the reason photographs read at all. Two details do the
|
|
69
|
+
* work. A block whose range is tiny is judged flat, and takes the average of
|
|
70
|
+
* its already-computed neighbours rather than inventing a threshold in the
|
|
71
|
+
* middle of a uniform area, which would shred a plain quiet zone into noise.
|
|
72
|
+
* And each block's threshold is averaged over its 3 by 3 neighbourhood, so the
|
|
73
|
+
* block boundaries do not print themselves onto the result.
|
|
74
|
+
*/
|
|
75
|
+
export function binariseHybrid(image) {
|
|
76
|
+
const { width, height, data } = image;
|
|
77
|
+
// Too small for local statistics to mean anything.
|
|
78
|
+
if (width < BLOCK * 3 || height < BLOCK * 3)
|
|
79
|
+
return binariseOtsu(image);
|
|
80
|
+
const blocksX = Math.ceil(width / BLOCK);
|
|
81
|
+
const blocksY = Math.ceil(height / BLOCK);
|
|
82
|
+
const raw = new Float64Array(blocksX * blocksY);
|
|
83
|
+
for (let by = 0; by < blocksY; by += 1) {
|
|
84
|
+
for (let bx = 0; bx < blocksX; bx += 1) {
|
|
85
|
+
const x0 = bx * BLOCK;
|
|
86
|
+
const y0 = by * BLOCK;
|
|
87
|
+
const x1 = Math.min(x0 + BLOCK, width);
|
|
88
|
+
const y1 = Math.min(y0 + BLOCK, height);
|
|
89
|
+
let min = 255;
|
|
90
|
+
let max = 0;
|
|
91
|
+
for (let y = y0; y < y1; y += 1) {
|
|
92
|
+
for (let x = x0; x < x1; x += 1) {
|
|
93
|
+
const value = data[y * width + x];
|
|
94
|
+
if (value < min)
|
|
95
|
+
min = value;
|
|
96
|
+
if (value > max)
|
|
97
|
+
max = value;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
let threshold;
|
|
101
|
+
if (max - min > MIN_DYNAMIC_RANGE) {
|
|
102
|
+
threshold = (min + max) >> 1;
|
|
103
|
+
}
|
|
104
|
+
else if (bx === 0 && by === 0) {
|
|
105
|
+
// Nothing computed yet to borrow from. Biased dark so a uniformly light
|
|
106
|
+
// corner does not come out solid black.
|
|
107
|
+
threshold = min >> 1;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
// Flat: inherit from the neighbours already computed, which is what
|
|
111
|
+
// stops a plain quiet zone becoming noise. The first row and column
|
|
112
|
+
// have one neighbour each; everything else has three, the diagonal one
|
|
113
|
+
// counted twice, as the authenticator has it.
|
|
114
|
+
const left = bx > 0 ? raw[by * blocksX + bx - 1] : 0;
|
|
115
|
+
const above = by > 0 ? raw[(by - 1) * blocksX + bx] : 0;
|
|
116
|
+
const aboveLeft = bx > 0 && by > 0 ? raw[(by - 1) * blocksX + bx - 1] : 0;
|
|
117
|
+
const divisor = (bx > 0 ? 1 : 0) + (by > 0 ? 1 : 0) + (bx > 0 && by > 0 ? 2 : 0);
|
|
118
|
+
threshold = Math.round((left + above + 2 * aboveLeft) / divisor);
|
|
119
|
+
}
|
|
120
|
+
raw[by * blocksX + bx] = threshold;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
const smoothed = new Float64Array(blocksX * blocksY);
|
|
124
|
+
for (let by = 0; by < blocksY; by += 1) {
|
|
125
|
+
for (let bx = 0; bx < blocksX; bx += 1) {
|
|
126
|
+
let total = 0;
|
|
127
|
+
let count = 0;
|
|
128
|
+
for (let ny = Math.max(0, by - 1); ny <= Math.min(blocksY - 1, by + 1); ny += 1) {
|
|
129
|
+
for (let nx = Math.max(0, bx - 1); nx <= Math.min(blocksX - 1, bx + 1); nx += 1) {
|
|
130
|
+
total += raw[ny * blocksX + nx];
|
|
131
|
+
count += 1;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
smoothed[by * blocksX + bx] = total / count;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
const bits = new Uint8Array(width * height);
|
|
138
|
+
for (let y = 0; y < height; y += 1) {
|
|
139
|
+
const blockRow = (y >> 3) * blocksX;
|
|
140
|
+
for (let x = 0; x < width; x += 1) {
|
|
141
|
+
bits[y * width + x] =
|
|
142
|
+
data[y * width + x] <= smoothed[blockRow + (x >> 3)] ? 1 : 0;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
width,
|
|
147
|
+
height,
|
|
148
|
+
bits,
|
|
149
|
+
threshold: (x, y) => smoothed[(y >> 3) * blocksX + (x >> 3)],
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
/** Below this many pixels on a side, zxing's hybrid binariser hands over to a global one, and so does this. */
|
|
153
|
+
const MEAN_MINIMUM_DIMENSION = 40;
|
|
154
|
+
/**
|
|
155
|
+
* The hybrid binariser the common readers use: zxing's HybridBinarizer, which
|
|
156
|
+
* jsQR ports line for line.
|
|
157
|
+
*
|
|
158
|
+
* The same 8 by 8 grid as `binariseHybrid`, with three differences that
|
|
159
|
+
* matter. A block's threshold is the mean of its pixels rather than the middle
|
|
160
|
+
* of its range, which on a low-contrast or unevenly lit block lands somewhere
|
|
161
|
+
* else entirely. A flat block assumes it is light ground (half its minimum)
|
|
162
|
+
* and takes its neighbours' threshold only when its own pixels sit below it.
|
|
163
|
+
* And the smoothing is over 5 by 5 blocks, clamped so the window stays inside
|
|
164
|
+
* the grid at the edges.
|
|
165
|
+
*
|
|
166
|
+
* The strict profile thresholds this way because it is how the phone readers
|
|
167
|
+
* it has to be at least as hard as see the picture: a module that lands on
|
|
168
|
+
* the wrong side of their threshold is an error for them whatever a better
|
|
169
|
+
* threshold would have made of it.
|
|
170
|
+
*/
|
|
171
|
+
export function binariseHybridMean(image) {
|
|
172
|
+
const { width, height, data } = image;
|
|
173
|
+
const blocksX = Math.ceil(width / BLOCK);
|
|
174
|
+
const blocksY = Math.ceil(height / BLOCK);
|
|
175
|
+
if (width < MEAN_MINIMUM_DIMENSION ||
|
|
176
|
+
height < MEAN_MINIMUM_DIMENSION ||
|
|
177
|
+
blocksX < 5 ||
|
|
178
|
+
blocksY < 5) {
|
|
179
|
+
return binariseOtsu(image);
|
|
180
|
+
}
|
|
181
|
+
const blackPoints = new Float64Array(blocksX * blocksY);
|
|
182
|
+
for (let by = 0; by < blocksY; by += 1) {
|
|
183
|
+
for (let bx = 0; bx < blocksX; bx += 1) {
|
|
184
|
+
let sum = 0;
|
|
185
|
+
let min = 255;
|
|
186
|
+
let max = 0;
|
|
187
|
+
let count = 0;
|
|
188
|
+
for (let y = by * BLOCK; y < Math.min(height, by * BLOCK + BLOCK); y += 1) {
|
|
189
|
+
for (let x = bx * BLOCK; x < Math.min(width, bx * BLOCK + BLOCK); x += 1) {
|
|
190
|
+
const value = data[y * width + x];
|
|
191
|
+
sum += value;
|
|
192
|
+
count += 1;
|
|
193
|
+
if (value < min)
|
|
194
|
+
min = value;
|
|
195
|
+
if (value > max)
|
|
196
|
+
max = value;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
let average = sum / count;
|
|
200
|
+
if (max - min <= MIN_DYNAMIC_RANGE) {
|
|
201
|
+
average = min / 2;
|
|
202
|
+
if (by > 0 && bx > 0) {
|
|
203
|
+
const neighbours = (blackPoints[(by - 1) * blocksX + bx] +
|
|
204
|
+
2 * blackPoints[by * blocksX + bx - 1] +
|
|
205
|
+
blackPoints[(by - 1) * blocksX + bx - 1]) /
|
|
206
|
+
4;
|
|
207
|
+
if (min < neighbours)
|
|
208
|
+
average = neighbours;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
blackPoints[by * blocksX + bx] = average;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const thresholds = new Float64Array(blocksX * blocksY);
|
|
215
|
+
for (let by = 0; by < blocksY; by += 1) {
|
|
216
|
+
const top = Math.min(Math.max(by, 2), blocksY - 3);
|
|
217
|
+
for (let bx = 0; bx < blocksX; bx += 1) {
|
|
218
|
+
const left = Math.min(Math.max(bx, 2), blocksX - 3);
|
|
219
|
+
let sum = 0;
|
|
220
|
+
for (let dy = -2; dy <= 2; dy += 1) {
|
|
221
|
+
for (let dx = -2; dx <= 2; dx += 1)
|
|
222
|
+
sum += blackPoints[(top + dy) * blocksX + left + dx];
|
|
223
|
+
}
|
|
224
|
+
thresholds[by * blocksX + bx] = sum / 25;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
const bits = new Uint8Array(width * height);
|
|
228
|
+
for (let y = 0; y < height; y += 1) {
|
|
229
|
+
const row = (y >> 3) * blocksX;
|
|
230
|
+
for (let x = 0; x < width; x += 1) {
|
|
231
|
+
bits[y * width + x] =
|
|
232
|
+
data[y * width + x] <= thresholds[row + (x >> 3)] ? 1 : 0;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return {
|
|
236
|
+
width,
|
|
237
|
+
height,
|
|
238
|
+
bits,
|
|
239
|
+
threshold: (x, y) => thresholds[(y >> 3) * blocksX + (x >> 3)],
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/** zxing-cpp's local thresholds need a picture this many pixels on a side, and fall back to a global one below it. */
|
|
243
|
+
const LOCAL_AVERAGE_MINIMUM = 40;
|
|
244
|
+
/** Blocks either side of a block that its threshold is smoothed over: five by five. */
|
|
245
|
+
const LOCAL_AVERAGE_RADIUS = 2;
|
|
246
|
+
/**
|
|
247
|
+
* zxing-cpp's hybrid binariser as it stands, the "LocalAverage" one zxing-wasm
|
|
248
|
+
* reads with by default, written from its description: the strict profile's
|
|
249
|
+
* model of how zxing-cpp sees a picture, where it has to predict what zxing-cpp
|
|
250
|
+
* will make of a finder or a grid.
|
|
251
|
+
*
|
|
252
|
+
* It is neither `binariseHybrid` nor `binariseHybridMean`, and the differences
|
|
253
|
+
* decide what a flat patch becomes. A block's threshold is the middle of its
|
|
254
|
+
* range, or none at all when the range is 24 or less; each is then averaged
|
|
255
|
+
* over the five by five blocks round it, its own counted three times and the
|
|
256
|
+
* blocks with none not at all; and a block left with none after that takes
|
|
257
|
+
* the next block's that has one, in reading order. So a dark patch wider than
|
|
258
|
+
* a block, the centre of a finder at ten pixels a module, takes its threshold
|
|
259
|
+
* from its surroundings and stays dark, where `binariseHybrid` can leave a
|
|
260
|
+
* light hole in it. Edge blocks are moved back inside the picture, and the
|
|
261
|
+
* last one decides the pixels it shares with the one before.
|
|
262
|
+
*/
|
|
263
|
+
export function binariseLocalAverage(image) {
|
|
264
|
+
const { width, height, data } = image;
|
|
265
|
+
if (width < LOCAL_AVERAGE_MINIMUM || height < LOCAL_AVERAGE_MINIMUM)
|
|
266
|
+
return binariseOtsu(image);
|
|
267
|
+
const blocksX = Math.ceil(width / BLOCK);
|
|
268
|
+
const blocksY = Math.ceil(height / BLOCK);
|
|
269
|
+
const origin = (block, size) => Math.min(block * BLOCK, size - BLOCK);
|
|
270
|
+
const raw = new Uint8Array(blocksX * blocksY);
|
|
271
|
+
for (let by = 0; by < blocksY; by += 1) {
|
|
272
|
+
const y0 = origin(by, height);
|
|
273
|
+
for (let bx = 0; bx < blocksX; bx += 1) {
|
|
274
|
+
const x0 = origin(bx, width);
|
|
275
|
+
let min = 255;
|
|
276
|
+
let max = 0;
|
|
277
|
+
for (let y = y0; y < y0 + BLOCK; y += 1) {
|
|
278
|
+
for (let x = x0; x < x0 + BLOCK; x += 1) {
|
|
279
|
+
const level = data[y * width + x];
|
|
280
|
+
if (level < min)
|
|
281
|
+
min = level;
|
|
282
|
+
if (level > max)
|
|
283
|
+
max = level;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
raw[by * blocksX + bx] = max - min > MIN_DYNAMIC_RANGE ? (max + min) >> 1 : 0;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
const smooth = new Uint8Array(raw.length);
|
|
290
|
+
const r = LOCAL_AVERAGE_RADIUS;
|
|
291
|
+
for (let by = 0; by < blocksY; by += 1) {
|
|
292
|
+
const top = Math.min(Math.max(by, r), blocksY - r - 1);
|
|
293
|
+
for (let bx = 0; bx < blocksX; bx += 1) {
|
|
294
|
+
const left = Math.min(Math.max(bx, r), blocksX - r - 1);
|
|
295
|
+
const own = raw[by * blocksX + bx];
|
|
296
|
+
let sum = own > 0 ? 2 * own : 0;
|
|
297
|
+
let count = own > 0 ? 2 : 0;
|
|
298
|
+
for (let dy = -r; dy <= r; dy += 1) {
|
|
299
|
+
for (let dx = -r; dx <= r; dx += 1) {
|
|
300
|
+
const value = raw[(top + dy) * blocksX + left + dx];
|
|
301
|
+
sum += value;
|
|
302
|
+
if (value > 0)
|
|
303
|
+
count += 1;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
smooth[by * blocksX + bx] = count > 0 ? Math.floor(sum / count) : 0;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// Blocks still without a threshold take the next one's, in reading order,
|
|
310
|
+
// and the last ones the last there is.
|
|
311
|
+
let next = 0;
|
|
312
|
+
for (let i = smooth.length - 1; i >= 0; i -= 1) {
|
|
313
|
+
if (smooth[i] > 0)
|
|
314
|
+
next = smooth[i];
|
|
315
|
+
else
|
|
316
|
+
smooth[i] = next;
|
|
317
|
+
}
|
|
318
|
+
let previous = 0;
|
|
319
|
+
for (let i = 0; i < smooth.length; i += 1) {
|
|
320
|
+
if (smooth[i] > 0)
|
|
321
|
+
previous = smooth[i];
|
|
322
|
+
else
|
|
323
|
+
smooth[i] = previous;
|
|
324
|
+
}
|
|
325
|
+
if (previous === 0)
|
|
326
|
+
return binariseOtsu(image);
|
|
327
|
+
const blockOf = (pixel, size, blocks) => pixel >= size - BLOCK ? blocks - 1 : Math.floor(pixel / BLOCK);
|
|
328
|
+
const at = (x, y) => smooth[blockOf(y, height, blocksY) * blocksX + blockOf(x, width, blocksX)];
|
|
329
|
+
const bits = new Uint8Array(width * height);
|
|
330
|
+
for (let y = 0; y < height; y += 1) {
|
|
331
|
+
for (let x = 0; x < width; x += 1) {
|
|
332
|
+
bits[y * width + x] = data[y * width + x] <= at(x, y) ? 1 : 0;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return { width, height, bits, threshold: at };
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Sauvola: a windowed mean adjusted by the local standard deviation.
|
|
339
|
+
*
|
|
340
|
+
* Slow, and the right answer for glare. A highlight wrecks the local mean but
|
|
341
|
+
* leaves the local variance alone, so a rule that leans on the variance keeps
|
|
342
|
+
* reading modules where a mean-based one gives up. Integral images make the
|
|
343
|
+
* window size free.
|
|
344
|
+
*/
|
|
345
|
+
export function binariseSauvola(image, window = 31, k = 0.2) {
|
|
346
|
+
const { width, height, data } = image;
|
|
347
|
+
const radius = window >> 1;
|
|
348
|
+
const stride = width + 1;
|
|
349
|
+
// Integral images of the values and their squares, with a row and column of
|
|
350
|
+
// padding so the window arithmetic needs no bounds checks.
|
|
351
|
+
const sums = new Float64Array(stride * (height + 1));
|
|
352
|
+
const squares = new Float64Array(stride * (height + 1));
|
|
353
|
+
for (let y = 0; y < height; y += 1) {
|
|
354
|
+
let rowSum = 0;
|
|
355
|
+
let rowSquare = 0;
|
|
356
|
+
for (let x = 0; x < width; x += 1) {
|
|
357
|
+
const value = data[y * width + x];
|
|
358
|
+
rowSum += value;
|
|
359
|
+
rowSquare += value * value;
|
|
360
|
+
sums[(y + 1) * stride + x + 1] = sums[y * stride + x + 1] + rowSum;
|
|
361
|
+
squares[(y + 1) * stride + x + 1] = squares[y * stride + x + 1] + rowSquare;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
const area = (table, x0, y0, x1, y1) => table[y1 * stride + x1] -
|
|
365
|
+
table[y0 * stride + x1] -
|
|
366
|
+
table[y1 * stride + x0] +
|
|
367
|
+
table[y0 * stride + x0];
|
|
368
|
+
const threshold = (x, y) => {
|
|
369
|
+
const x0 = Math.max(0, x - radius);
|
|
370
|
+
const y0 = Math.max(0, y - radius);
|
|
371
|
+
const x1 = Math.min(width, x + radius + 1);
|
|
372
|
+
const y1 = Math.min(height, y + radius + 1);
|
|
373
|
+
const count = (x1 - x0) * (y1 - y0);
|
|
374
|
+
const mean = area(sums, x0, y0, x1, y1) / count;
|
|
375
|
+
const variance = Math.max(0, area(squares, x0, y0, x1, y1) / count - mean * mean);
|
|
376
|
+
// R = 128, the usual choice for 8-bit input.
|
|
377
|
+
return mean * (1 + k * (Math.sqrt(variance) / 128 - 1));
|
|
378
|
+
};
|
|
379
|
+
const bits = new Uint8Array(width * height);
|
|
380
|
+
for (let y = 0; y < height; y += 1) {
|
|
381
|
+
for (let x = 0; x < width; x += 1) {
|
|
382
|
+
bits[y * width + x] = data[y * width + x] <= threshold(x, y) ? 1 : 0;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
return { width, height, bits, threshold };
|
|
386
|
+
}
|
|
387
|
+
export function binarise(image, which) {
|
|
388
|
+
switch (which) {
|
|
389
|
+
case 'hybrid':
|
|
390
|
+
return binariseHybrid(image);
|
|
391
|
+
case 'hybrid-mean':
|
|
392
|
+
return binariseHybridMean(image);
|
|
393
|
+
case 'otsu':
|
|
394
|
+
return binariseOtsu(image);
|
|
395
|
+
case 'sauvola':
|
|
396
|
+
return binariseSauvola(image);
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
//# sourceMappingURL=binarise.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"binarise.js","sourceRoot":"","sources":["../../src/decode/binarise.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Finding and reading codes in a picture.
|
|
3
|
+
*
|
|
4
|
+
* A ladder rather than one clever attempt. Thresholding, scale and polarity
|
|
5
|
+
* are all guesses, and a guess that costs a few milliseconds is not worth
|
|
6
|
+
* agonising over: try the cheap likely one, then the next. The exact half of
|
|
7
|
+
* reading sits behind each symbology's `read` and is never part of the
|
|
8
|
+
* guessing.
|
|
9
|
+
*
|
|
10
|
+
* Lifted from the authenticator package's reader
|
|
11
|
+
* (google-auth-secret-retriever, `src/qr/decode/decoder.ts`) and generalised:
|
|
12
|
+
* any registered symbology with a locator, several codes in one picture, soft
|
|
13
|
+
* samples and erasures, the strict profile beside the lenient one, and no
|
|
14
|
+
* clock unless the caller hands one in, so the same picture gives the same
|
|
15
|
+
* answer every time.
|
|
16
|
+
*/
|
|
17
|
+
import type { BitMatrix } from '../core/bit-matrix.js';
|
|
18
|
+
import type { RgbaImage } from '../core/image.js';
|
|
19
|
+
import type { Registry } from '../core/registry.js';
|
|
20
|
+
import type { Result } from '../core/result.js';
|
|
21
|
+
import type { MatrixRead, SymbologyEntry } from '../symbology/types.js';
|
|
22
|
+
import type { DecodeOptions, DecodedSymbol } from './types.js';
|
|
23
|
+
/**
|
|
24
|
+
* The working ceiling, in pixels. 2.5 megapixels is 1826 by 1369 at 4:3,
|
|
25
|
+
* which holds a 141-module symbol at 9.7 pixels a module across the short
|
|
26
|
+
* edge; Nyquist is 2. Measured in the authenticator, four megapixels read
|
|
27
|
+
* nothing two and a half did not, and cost a 50 MB transient on a phone.
|
|
28
|
+
*/
|
|
29
|
+
export declare const DEFAULT_MAX_PIXELS = 2500000;
|
|
30
|
+
/**
|
|
31
|
+
* The strict profile's working ceiling. It reads at the picture's own scale,
|
|
32
|
+
* as the readers it is held to do: fitted to the scanner's ceiling, a version
|
|
33
|
+
* 40 symbol drawn at 10 pixels a module came down to 7, and its size measured
|
|
34
|
+
* off by two modules where zxing-cpp and jsQR, at full resolution, read it.
|
|
35
|
+
* Twelve megapixels holds such a symbol whole and keeps one strict read under
|
|
36
|
+
* a couple of seconds.
|
|
37
|
+
*/
|
|
38
|
+
export declare const STRICT_MAX_PIXELS = 12000000;
|
|
39
|
+
/** The binarised frame handed to telemetry is a picture for a person: a megapixel is more than any overlay shows. */
|
|
40
|
+
export declare const TELEMETRY_PIXELS = 1000000;
|
|
41
|
+
/**
|
|
42
|
+
* The share of each block's corrections the plain reader's grid has to leave
|
|
43
|
+
* unused, as the verify layer has the strict reader's own leave: a quarter.
|
|
44
|
+
* A plain grid that reads only by the skin of its teeth is one jsQR, sampling
|
|
45
|
+
* a module or two differently, does not read: a hex-module design faded to
|
|
46
|
+
* 0.6 whose plain grid read with 7 errors of a block's 9 was one jsQR missed
|
|
47
|
+
* and zxing-cpp and the strict reader read. Over verify's captures of every
|
|
48
|
+
* preset on three seeds, the 39,864 symbols both oracles read, 10 left less.
|
|
49
|
+
*/
|
|
50
|
+
export declare const PLAIN_RESERVE = 0.25;
|
|
51
|
+
/**
|
|
52
|
+
* Find and read every code in a picture, up to `maxSymbols`.
|
|
53
|
+
*
|
|
54
|
+
* A failed Result is 'decode/not-found' when no grid ever landed on a symbol,
|
|
55
|
+
* and 'decode/unreadable' (or the symbology's own 'decode/unsupported') when
|
|
56
|
+
* one did and its read was refused; both carry `params.stage`, the furthest
|
|
57
|
+
* stage reached. Nothing here reads a clock unless `options.clock` is given,
|
|
58
|
+
* so a picture gives the same answer every time.
|
|
59
|
+
*
|
|
60
|
+
* The ladder stops after the first rung that reads anything, having looked
|
|
61
|
+
* again on that rung, with each find masked out, until it finds nothing more:
|
|
62
|
+
* several codes in one picture are nearly always under the same light, and a
|
|
63
|
+
* camera frame with one code in it should not pay for eight more rungs.
|
|
64
|
+
*/
|
|
65
|
+
export declare function decodeImage(image: RgbaImage, options?: DecodeOptions, symbologies?: Registry<SymbologyEntry>): Result<readonly DecodedSymbol[]>;
|
|
66
|
+
/**
|
|
67
|
+
* Read an already sampled matrix with whichever registered symbology has a
|
|
68
|
+
* version of its size. Pure: throws QrStudioError 'decode/unreadable' with
|
|
69
|
+
* params { stage }, the furthest stage any symbology reached.
|
|
70
|
+
*/
|
|
71
|
+
export declare function decodeMatrix(matrix: BitMatrix, options?: {
|
|
72
|
+
readonly strict?: boolean;
|
|
73
|
+
readonly symbologies?: readonly string[];
|
|
74
|
+
}, symbologies?: Registry<SymbologyEntry>): MatrixRead;
|
|
75
|
+
//# sourceMappingURL=decoder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoder.d.ts","sourceRoot":"","sources":["../../src/decode/decoder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AA+BxE,OAAO,KAAK,EAEX,aAAa,EAEb,aAAa,EAIb,MAAM,YAAY,CAAC;AAEpB;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,UAAY,CAAC;AAE5C;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,WAAa,CAAC;AAE5C,qHAAqH;AACrH,eAAO,MAAM,gBAAgB,UAAY,CAAC;AAwb1C;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,OAAO,CAAC;AAoNlC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAC1B,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,aAAkB,EAC3B,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GACpC,MAAM,CAAC,SAAS,aAAa,EAAE,CAAC,CA2GlC;AAgBD;;;;GAIG;AACH,wBAAgB,YAAY,CAC3B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,EACrF,WAAW,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,GACpC,UAAU,CA+BZ"}
|