complex-barcode/complex-codetext-reader.js

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