const { MwComplexCodetextReader, MwHIBCLICSecondaryAndAdditionalDataCodetext, MwHIBCLICPrimaryDataCodetext, MwHIBCLICCombinedCodetext,MwMaxiCodeCodetextMode2,MwMaxiCodeCodetextMode3 } = require("../_mwbridge/_mw-bridge.js");
const Mailmark2DCodetext = require("./mailmark-2d-codetext");
const SwissQRCodetext = require("./swiss-qr-codetext");
const MailmarkCodetext = require("./mailmark-codetext");
const MaxiCodeStandardCodetext = require("./maxicode-standard-codetext");
const HIBCLICSecondaryAndAdditionalDataCodetext = require("./hibc-lic-secondary-and-additional-data-codetext");
const MaxiCodeCodetextMode2 = require("./maxicode-codetext-mode-2");
const MaxiCodeCodetextMode3 = require("./maxicode-codetext-mode-3");
const HIBCLICPrimaryDataCodetext = require("./hibc-lic-primary-data-codetext");
const HIBCLICCombinedCodetext = require("./hibc-lic-combined-codetext");
const HIBCPASCodetext = require("./hibc-pas-codetext");
const USADriveIdCodetext = require("./usa-drive-id-codetext");
/**
* ComplexCodetextReader decodes codetext to specified complex barcode type.<br>
* @example
* This sample shows how to recognize and decode SwissQR image.
*
* let cr = new BarCodeReader("SwissQRCodetext.png", null, DecodeType.QR);
* cr.read();
* let result = ComplexCodetextReader.tryDecodeSwissQR(cr.getCodeText(false));
*/
class ComplexCodetextReader {
/**
* Decodes SwissQR codetext.
*
* @param encodedCodetext encoded codetext
* @return decoded SwissQRCodetext or null.
*/
static tryDecodeSwissQR(encodedCodetext) {
let mwSwissQRCodetextObject = MwComplexCodetextReader.tryDecodeSwissQRSync(encodedCodetext);
return mwSwissQRCodetextObject === null ? null : SwissQRCodetext._fromMwObject(mwSwissQRCodetextObject);
}
/**
* Decodes Royal Mail Mailmark 2D codetext.<br>
* @param encodedCodetext encoded codetext<br>
* @return decoded Royal Mail Mailmark 2D or null.
*/
static tryDecodeMailmark2D(encodedCodetext)
{
let javaMailmark2D = MwComplexCodetextReader.tryDecodeMailmark2DSync(encodedCodetext);
return javaMailmark2D !== null ? Mailmark2DCodetext._fromMwObject(javaMailmark2D) : null;
}
/**
* Decodes Mailmark Barcode C and L codetext.<br>
* @param encodedCodetext encoded codetext<br>
* @return Decoded Mailmark Barcode C and L or null.
*/
static tryDecodeMailmark(encodedCodetext)
{
let res = new MailmarkCodetext(null);
try
{
res.initFromString(encodedCodetext);
}
catch (e)
{
return null;
}
return res;
}
/**
* Decodes MaxiCode codetext.
* @param maxiCodeMode MaxiCode mode
* @param encodedCodetext encoded codetext
* @return Decoded MaxiCode codetext.
*/
static tryDecodeMaxiCode(maxiCodeMode, encodedCodetext)
{
let javaMaxiCodeCodetext = MwComplexCodetextReader.tryDecodeMaxiCodeSync(maxiCodeMode, encodedCodetext);
if(javaMaxiCodeCodetext == null)
{
return null;
}
if(javaMaxiCodeCodetext.getClassSync().equalsSync(MwMaxiCodeCodetextMode2.class))
{
return MaxiCodeCodetextMode2._fromMwObject(MwComplexCodetextReader.asMaxiCodeCodetextMode2Sync(javaMaxiCodeCodetext));
}
else if(javaMaxiCodeCodetext.getClassSync().equalsSync(MwMaxiCodeCodetextMode3.class))
{
return MaxiCodeCodetextMode3._fromMwObject(MwComplexCodetextReader.asMaxiCodeCodetextMode3Sync(javaMaxiCodeCodetext));
}
else
{
return MaxiCodeStandardCodetext._fromMwObject(MwComplexCodetextReader.asMaxiCodeStandardCodetextSync(javaMaxiCodeCodetext));
}
}
/**
* <p>
* Decodes HIBC LIC codetext.
* </p>
* @return decoded HIBC LIC Complex Codetext or null.
* @param encodedCodetext encoded codetext
*/
static tryDecodeHIBCLIC(encodedCodetext)
{
let hibclicComplexCodetext = MwComplexCodetextReader.tryDecodeHIBCLICSync(encodedCodetext);
if(hibclicComplexCodetext == null)
return null;
if(hibclicComplexCodetext.getClassSync().equalsSync(MwHIBCLICSecondaryAndAdditionalDataCodetext.class))
{
return HIBCLICSecondaryAndAdditionalDataCodetext._fromMwObject(MwHIBCLICSecondaryAndAdditionalDataCodetext.asMwHIBCLICSecondaryAndAdditionalDataCodetextSync(hibclicComplexCodetext));
}
else if(hibclicComplexCodetext.getClassSync().equalsSync(MwHIBCLICPrimaryDataCodetext.class))
{
return HIBCLICPrimaryDataCodetext._fromMwObject(MwHIBCLICPrimaryDataCodetext.asMwHIBCLICPrimaryDataCodetextSync(hibclicComplexCodetext));
}
else if(hibclicComplexCodetext.getClassSync().equalsSync(MwHIBCLICCombinedCodetext.class))
{
return HIBCLICCombinedCodetext._fromMwObject(MwHIBCLICCombinedCodetext.asMwHIBCLICCombinedCodetextSync(hibclicComplexCodetext));
}
return null;
}
/**
* <p>
* Decodes HIBC PAS codetext.
* </p>
* @return decoded HIBC PAS Complex Codetext or null.
* @param encodedCodetext encoded codetext
*/
static tryDecodeHIBCPAS(encodedCodetext)
{
let javaHIBCPAS = MwComplexCodetextReader.tryDecodeHIBCPASSync(encodedCodetext);
if((javaHIBCPAS) == null)
return null;
return HIBCPASCodetext._fromMwObject(javaHIBCPAS);
}
/**
* <p>
* Decodes USADriveId codetext.
* </p>
* @return Decoded USADriveId or null.
* @param encodedCodetext Encoded codetext
*/
static tryDecodeUSADriveId(encodedCodetext)
{
let usaDriveIdCodetext = MwComplexCodetextReader.tryDecodeUSADriveIdSync(encodedCodetext);
return usaDriveIdCodetext == null ? null : new USADriveIdCodetext(usaDriveIdCodetext);
}
}
module.exports = ComplexCodetextReader