capacitor-plugin-scanbot-sdk
Version:
Scanbot Document and Barcode Scanner SDK for Capacitor
403 lines (389 loc) • 15.3 kB
JavaScript
/// Auto-generated with ScanbotSDKCodegenV3. Modifications will be overwritten.
/// Generated from core/schemas/BarcodeScannerTypes.yaml
import { BarcodeFormatCommonConfiguration, BarcodeFormatConfigurationBase } from '../barcode/BarcodeConfigurationTypes';
import { RangeEncoding, StructuredAppendInfo } from '../barcode/BarcodeTypes';
import { GenericDocument } from '../documents/GenericDocument';
import { ImageRef } from '../imageRef/image';
import { ToJsonConfiguration } from '../utils/json/JsonSerializationTypes';
import { PartiallyConstructible } from '../utils/utils';
/**
A single barcode found in the input image. Barcodes with the same content but different locations in the image are considered separate barcodes.
*/
export class BarcodeItem extends PartiallyConstructible {
/** @param source {@displayType `DeepPartial<BarcodeItem>`} */
constructor(source = {}) {
super();
/**
Barcode format.
Default is NONE
*/
this.format = 'NONE';
/**
True if this is a 1D barcode that is printed upside-down, that is, the barcode was scanned right-to-left.
Default is false
*/
this.isUpsideDown = false;
/**
A crop from the input image containing the barcode.
*/
this.sourceImage = null;
/**
True if the barcode contains a GS1 message. Requires GS1 handling to be enabled in the decoding option.
Default is false
*/
this.isGS1Message = false;
/**
True if this result is the 2D part of a GS1 Composite barcode.
Can only happen if GS1_COMPOSITE scanning is disabled and a part of the composite (1D) or (2D) is scanned separately.
When GS1_COMPOSITE scanning is enabled, parts of the composite barcode are never returned separately, even if their respective
format is enabled in the decoding options.
Default is false
*/
this.isGS1CompositePart = false;
/**
The number of 1D stacks in the barcode. Applies only to DATABAR and DATABAR_EXPANDED barcodes.
Default is 1
*/
this.dataBarStackSize = 1;
/**
The size score is a floating point value between 0 and 1 that represents the relative size of the barcode in the input image.
Barcodes taking up a small portion of the input image will have a score close to 0, while barcodes that take a large portion will have a score close to 1.
Default is 0
*/
this.sizeScore = 0.0;
/**
The index of the barcode to uniquely identify it.
In case of frame accumulation, the index remains the same across frames.
Default is -1
*/
this.globalIndex = -1;
this._released = false;
if (source.text !== undefined) {
this.text = source.text;
}
else {
throw new Error('text must be present in constructor argument');
}
if (source.rawBytes !== undefined) {
this.rawBytes = source.rawBytes;
}
else {
throw new Error('rawBytes must be present in constructor argument');
}
if (source.rawBytesEncodings !== undefined) {
this.rawBytesEncodings = source.rawBytesEncodings.map((it) => {
return new RangeEncoding(it);
});
}
else {
throw new Error('rawBytesEncodings must be present in constructor argument');
}
if (source.structuredAppendInfo !== undefined) {
this.structuredAppendInfo =
source.structuredAppendInfo != null ? new StructuredAppendInfo(source.structuredAppendInfo) : null;
}
else {
throw new Error('structuredAppendInfo must be present in constructor argument');
}
if (source.format !== undefined) {
this.format = source.format;
}
if (source.quad !== undefined) {
this.quad = source.quad.map((it) => {
return { x: it.x, y: it.y };
});
}
else {
throw new Error('quad must be present in constructor argument');
}
if (source.quadNormalized !== undefined) {
this.quadNormalized = source.quadNormalized.map((it) => {
return { x: it.x, y: it.y };
});
}
else {
throw new Error('quadNormalized must be present in constructor argument');
}
if (source.extendedQuad !== undefined) {
this.extendedQuad = source.extendedQuad.map((it) => {
return { x: it.x, y: it.y };
});
}
else {
throw new Error('extendedQuad must be present in constructor argument');
}
if (source.extendedQuadNormalized !== undefined) {
this.extendedQuadNormalized = source.extendedQuadNormalized.map((it) => {
return { x: it.x, y: it.y };
});
}
else {
throw new Error('extendedQuadNormalized must be present in constructor argument');
}
if (source.isUpsideDown !== undefined) {
this.isUpsideDown = source.isUpsideDown;
}
if (source.sourceImage !== undefined) {
this.sourceImage = source.sourceImage != null ? ImageRef.From(source.sourceImage) : null;
}
if (source.upcEanExtension !== undefined) {
this.upcEanExtension = source.upcEanExtension;
}
else {
throw new Error('upcEanExtension must be present in constructor argument');
}
if (source.isGS1Message !== undefined) {
this.isGS1Message = source.isGS1Message;
}
if (source.isGS1CompositePart !== undefined) {
this.isGS1CompositePart = source.isGS1CompositePart;
}
if (source.dataBarStackSize !== undefined) {
this.dataBarStackSize = source.dataBarStackSize;
}
if (source.sizeScore !== undefined) {
this.sizeScore = source.sizeScore;
}
if (source.extractedDocument !== undefined) {
this.extractedDocument = source.extractedDocument != null ? new GenericDocument(source.extractedDocument) : null;
}
else {
throw new Error('extractedDocument must be present in constructor argument');
}
if (source.globalIndex !== undefined) {
this.globalIndex = source.globalIndex;
}
}
async serialize(config = new ToJsonConfiguration()) {
return {
text: this.text,
rawBytes: this.rawBytes,
rawBytesEncodings: this.rawBytesEncodings.map((it) => {
return it.serialize(config);
}),
structuredAppendInfo: this.structuredAppendInfo != null ? this.structuredAppendInfo.serialize(config) : null,
format: this.format,
quad: this.quad.map((it) => {
return it;
}),
quadNormalized: this.quadNormalized.map((it) => {
return it;
}),
extendedQuad: this.extendedQuad.map((it) => {
return it;
}),
extendedQuadNormalized: this.extendedQuadNormalized.map((it) => {
return it;
}),
isUpsideDown: this.isUpsideDown,
sourceImage: config.serializeImages
? this.sourceImage != null
? await this.sourceImage.serialize(config.imageSerializationMode)
: null
: undefined,
upcEanExtension: this.upcEanExtension,
isGS1Message: this.isGS1Message,
isGS1CompositePart: this.isGS1CompositePart,
dataBarStackSize: this.dataBarStackSize,
sizeScore: this.sizeScore,
extractedDocument: this.extractedDocument != null ? await this.extractedDocument.serialize(config) : null,
globalIndex: this.globalIndex,
};
}
release() {
if (this._released) {
return;
}
{
if (this.sourceImage != null) {
this.sourceImage.release();
}
}
{
if (this.extractedDocument != null) {
this.extractedDocument.release();
}
}
this._released = true;
}
async encodeImages() {
if (this.sourceImage != null) {
await this.sourceImage.encodeInPlace();
}
if (this.extractedDocument != null) {
await this.extractedDocument.encodeImages();
}
}
}
export const BarcodeScannerEngineModeValues = [
'LEGACY',
'NEXT_GEN_LOW_POWER',
'NEXT_GEN',
'NEXT_GEN_LOW_POWER_FAR_DISTANCE',
'NEXT_GEN_FAR_DISTANCE',
];
export const BarcodeAccumulationMethodValues = ['LAST_VISIBLE', 'INTERPOLATE_BY_CAMERA'];
/**
Configuration for how to accumulate results.
*/
export class BarcodeAccumulationConfiguration extends PartiallyConstructible {
/** @param source {@displayType `DeepPartial<BarcodeAccumulationConfiguration>`} */
constructor(source = {}) {
super();
/**
The time in milliseconds to accumulate barcodes across multiple frames.
Default is 500
*/
this.accumulationTime = 500;
/**
If true, the results from previous frames that are not connected to results on the current frame will be removed.
This is should be enabled when large camera movements are expected.
For small camera movements, the option can be disabled.
Default is true
*/
this.removeUnconnectedResults = true;
/**
The method how to display barcodes from previous frames.
Default is INTERPOLATE_BY_CAMERA
*/
this.method = 'INTERPOLATE_BY_CAMERA';
if (source.accumulationTime !== undefined) {
this.accumulationTime = source.accumulationTime;
}
if (source.removeUnconnectedResults !== undefined) {
this.removeUnconnectedResults = source.removeUnconnectedResults;
}
if (source.method !== undefined) {
this.method = source.method;
}
}
}
/**
Configuration for the barcode scanner.
*/
export class BarcodeScannerConfiguration extends PartiallyConstructible {
/** @param source {@displayType `DeepPartial<BarcodeScannerConfiguration>`} */
constructor(source = {}) {
super();
/**
Options for barcode decoding.
*/
this.barcodeFormatConfigurations = [new BarcodeFormatCommonConfiguration({})];
/**
List of document formats to be extracted.
Barcodes that decode to one of the extracted document formats will have extractedDocument field in BarcodeItem populated with the parsed document.
By default all supported barcode document formats are accepted.
If empty, no barcodes will be parsed into documents.
To only accept the document formats listed in extractedDocumentFormats, the property onlyAcceptDocuments must be true.
*/
this.extractedDocumentFormats = [
'AAMVA',
'BOARDING_PASS',
'DE_MEDICAL_PLAN',
'MEDICAL_CERTIFICATE',
'ID_CARD_PDF_417',
'SEPA',
'SWISS_QR',
'VCARD',
'GS1',
'HIBC',
];
/**
If true and extractedDocumentFormats is not empty, then barcodes that don't decode to one of the extracted document formats will be ignored.
Default is false
*/
this.onlyAcceptDocuments = false;
/**
If true, the barcode image will be returned in the BarcodeItem.
Default is false
*/
this.returnBarcodeImage = false;
/**
The engine mode for barcode scanning.
Default is NEXT_GEN
*/
this.engineMode = 'NEXT_GEN';
/**
Configuration to accumulate barcodes across multiple frames in live mode.
*/
this.accumulationConfig = new BarcodeAccumulationConfiguration({});
/**
If true, the quads of linear (1D) barcodes will be further refined to more closely match the barcode's outline in the input image.
This will also produce stabler barcode outlines across frames for use cases such as AR.
Default is false
*/
this.optimizedForOverlays = false;
if (source.barcodeFormatConfigurations !== undefined) {
this.barcodeFormatConfigurations = source.barcodeFormatConfigurations.map((it) => {
return BarcodeFormatConfigurationBase.From(it);
});
}
if (source.extractedDocumentFormats !== undefined) {
this.extractedDocumentFormats = source.extractedDocumentFormats.map((it) => {
return it;
});
}
if (source.onlyAcceptDocuments !== undefined) {
this.onlyAcceptDocuments = source.onlyAcceptDocuments;
}
if (source.returnBarcodeImage !== undefined) {
this.returnBarcodeImage = source.returnBarcodeImage;
}
if (source.engineMode !== undefined) {
this.engineMode = source.engineMode;
}
if (source.accumulationConfig !== undefined) {
this.accumulationConfig = new BarcodeAccumulationConfiguration(source.accumulationConfig);
}
if (source.optimizedForOverlays !== undefined) {
this.optimizedForOverlays = source.optimizedForOverlays;
}
}
}
/**
The result of barcode scanning.
*/
export class BarcodeScannerResult extends PartiallyConstructible {
/** @param source {@displayType `DeepPartial<BarcodeScannerResult>`} */
constructor(source = {}) {
super();
this._released = false;
if (source.barcodes !== undefined) {
this.barcodes = source.barcodes.map((it) => {
return new BarcodeItem(it);
});
}
else {
throw new Error('barcodes must be present in constructor argument');
}
if (source.success !== undefined) {
this.success = source.success;
}
else {
throw new Error('success must be present in constructor argument');
}
}
async serialize(config = new ToJsonConfiguration()) {
return {
barcodes: await Promise.all(this.barcodes.map(async (it) => {
return await it.serialize(config);
})),
success: this.success,
};
}
release() {
if (this._released) {
return;
}
this.barcodes.forEach((it) => {
it.release();
});
this._released = true;
}
async encodeImages() {
await Promise.all(this.barcodes.map(async (it) => {
await it.encodeImages();
}));
}
}
//# sourceMappingURL=BarcodeScannerTypes.js.map