recognition/barcode-settings.js

const _MwWrapper = require("../_mwbridge/_mw-wrapper.js");
const AustraliaPostSettings = require("./australia-post-settings")

/**
 * The main BarCode decoding parameters. Contains parameters which make influence on recognized data.
 */
class BarcodeSettings extends _MwWrapper
{
    _australiaPost;

    /**
     * BarcodeSettings copy constructor
     * @param settings The source of the data
     */
    constructor(javaclass)
    {
        super(javaclass);
        this._initializeWrapperMembers()
    }

    _initializeWrapperMembers()
    {
        this._australiaPost = new AustraliaPostSettings(this.getJavaClass().getAustraliaPostSync());
    }

    /**
     * Enable checksum validation during recognition for 1D and Postal barcodes.<br>
     * Default is treated as Yes for symbologies which must contain checksum, as No where checksum only possible.<br>
     * Checksum never used: Codabar, PatchCode, Pharmacode, DataLogic2of5<br>
     * Checksum is possible: Code39 Standard/Extended, Standard2of5, Interleaved2of5, ItalianPost25, Matrix2of5, MSI, ItalianPost25, DeutschePostIdentcode, DeutschePostLeitcode, VIN<br>
     * Checksum always used: Rest symbologies<br>
     *
     * @example
     *
     * let generator = new BarcodeGenerator(EncodeTypes.EAN_13, "1234567890128");
     * generator.save("c:/test.png", BarcodeImageFormat.PNG);
     * let reader = new BarCodeReader("c:/test.png", DecodeType.EAN_13);
     * //checksum disabled
     * reader.getBarcodeSettings().setChecksumValidation(ChecksumValidation.OFF);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *      let result = results[i];
     *      console.log ("BarCode CodeText: " + result.getCodeText());
     *      console.log ("BarCode Value: " + result.getExtended().getOneD().getValue());
     *      console.log ("BarCode Checksum: " + result.getExtended().getOneD().getCheckSum());
     * }
     *
     * @example
     * let reader = new BarCodeReader("c:/test.png", DecodeType.EAN_13);
     * //checksum enabled
     * reader.getBarcodeSettings().setChecksumValidation(ChecksumValidation.ON);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *      let result = results[i];
     *      console.log ("BarCode CodeText: " + result.CodeText);
     *      console.log ("BarCode Value: " + result.getExtended().getOneD().getValue());
     *      console.log ("BarCode Checksum: " + result.getExtended().getOneD().getCheckSum());
     * }
     * @return Enable checksum validation during recognition for 1D and Postal barcodes.
     */
    getChecksumValidation()
    {
        return this.getJavaClass().getChecksumValidationSync();
    }

    /**
     * Enable checksum validation during recognition for 1D and Postal barcodes.<br>
     * Default is treated as Yes for symbologies which must contain checksum, as No where checksum only possible.<br>
     * Checksum never used: Codabar, PatchCode, Pharmacode, DataLogic2of5<br>
     * Checksum is possible: Code39 Standard/Extended, Standard2of5, Interleaved2of5, ItalianPost25, Matrix2of5, MSI, ItalianPost25, DeutschePostIdentcode, DeutschePostLeitcode, VIN<br>
     * Checksum always used: Rest symbologies<br>
     *
     * @example
     *
     * let generator = new BarcodeGenerator(EncodeTypes.EAN_13, "1234567890128");
     * generator.save("c:/test.png", BarcodeImageFormat.PNG);
     * let reader = new BarCodeReader("c:/test.png", DecodeType.EAN_13);
     * //checksum disabled
     * reader.getBarcodeSettings().setChecksumValidation(ChecksumValidation.OFF);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *      let result = results[i];
     *      console.log ("BarCode CodeText: " + result.getCodeText());
     *      console.log ("BarCode Value: " + result.getExtended().getOneD().getValue());
     *      console.log ("BarCode Checksum: " + result.getExtended().getOneD().getCheckSum());
     * }
     *
     * @example
     * let reader = new BarCodeReader("c:/test.png", DecodeType.EAN_13);
     * //checksum enabled
     * reader.getBarcodeSettings().setChecksumValidation(ChecksumValidation.ON);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *      let result = results[i];
     *      console.log ("BarCode CodeText: " + result.CodeText);
     *      console.log ("BarCode Value: " + result.getExtended().getOneD().getValue());
     *      console.log ("BarCode Checksum: " + result.getExtended().getOneD().getCheckSum());
     * }
     * @param value  Enable checksum validation during recognition for 1D and Postal barcodes.
     */
    setChecksumValidation(value)
    {
        this.getJavaClass().setChecksumValidationSync(value);
    }

    /**
     * Strip FNC1, FNC2, FNC3 characters from codetext. Default value is false.
     *
     * @example
     *
     * let generator = new BarcodeGenerator(EncodeTypes.GS_1_CODE_128, "(02)04006664241007(37)1(400)7019590754");
     * generator.save("c:/test.png", BarcodeImageFormat.PNG);
     * let reader = new BarCodeReader("c:/test.png", DecodeType.CODE_128);
     *
     * //StripFNC disabled
     * reader.getBarcodeSettings().setStripFNC(false);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @example
     * let reader = new BarCodeReader("c:/test.png", DecodeType.CODE_128);
     *
     * //StripFNC enabled
     * reader.getBarcodeSettings().setStripFNC(true);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @return Strip FNC1, FNC2, FNC3 characters from codetext. Default value is false.
     */
    getStripFNC()
    {
        return this.getJavaClass().getStripFNCSync();
    }

    /**
     * Strip FNC1, FNC2, FNC3 characters from codetext. Default value is false.
     *
     * @example
     *
     * let generator = new BarcodeGenerator(EncodeTypes.GS_1_CODE_128, "(02)04006664241007(37)1(400)7019590754");
     * generator.save("c:/test.png", BarcodeImageFormat.PNG);
     * let reader = new BarCodeReader("c:/test.png", DecodeType.CODE_128);
     *
     * //StripFNC disabled
     * reader.getBarcodeSettings().setStripFNC(false);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @example
     * let reader = new BarCodeReader("c:/test.png", DecodeType.CODE_128);
     *
     * //StripFNC enabled
     * reader.getBarcodeSettings().setStripFNC(true);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @param value  Strip FNC1, FNC2, FNC3 characters from codetext. Default value is false.
     */
    setStripFNC(value)
    {
        this.getJavaClass().setStripFNCSync(value);
    }

    /**
     * Returns only barcode types explicitly specified for recognition.
     * When enabled, recognized barcodes of other compatible or equivalent types are filtered out.
     * Default value is false.
     *
     * <p>Example:</p>
     * <pre>
     * // generate EAN13 barcode
     * let generator = new BarcodeGenerator(EncodeTypes.EAN_13, "2383823482894");
     * generator.save("test.png");
     *
     * // recognize only UPCA barcodes (no results, because source is EAN13)
     * const reader = new BarCodeReader("test.png", null, DecodeType.UPCA);
     * reader.getBarcodeSettings().setOnlyRequestedTypes(true);
     *
     * let results = reader.readBarCodes();
     * for (let i = 0; i < results.length; i++)
     * {
     *     console.log("BarCode CodeText: " + results[i].getCodeText());
     * }
     *
     * // recognize compatible types: EAN13, UPCA, ISSN, ISMN, ISBN
     * // (EAN13 will be returned as UPCA-equivalent)
     * let reader2 = new BarCodeReader("test.png", null, DecodeType.UPCA);
     * reader2.getBarcodeSettings().setOnlyRequestedTypes(false);
     *
     * let results2 = reader2.readBarCodes();
     * for (let i = 0; i < results2.length; i++)
     * {
     *     console.log("BarCode CodeText: " + results2[i].getCodeText());
     * }
     * </pre>
     *
     * @return true if only explicitly requested barcode types are returned; otherwise false
     */
    isOnlyRequestedTypes()
    {
        return this.getJavaClass().isOnlyRequestedTypesSync();
    }

    /**
     * Returns only barcode types explicitly specified for recognition.
     * When enabled, recognized barcodes of other compatible or equivalent types are filtered out.
     * Default value is false.
     *
     * <p>Example:</p>
     * <pre>
     * // generate EAN13 barcode
     * let generator = new BarcodeGenerator(EncodeTypes.EAN_13, "2383823482894");
     * generator.save("test.png");
     *
     * // recognize only UPCA barcodes (no results, because source is EAN13)
     * const reader = new BarCodeReader("test.png", null, DecodeType.UPCA);
     * reader.getBarcodeSettings().setOnlyRequestedTypes(true);
     *
     * let results = reader.readBarCodes();
     * for (let i = 0; i < results.length; i++)
     * {
     *     console.log("BarCode CodeText: " + results[i].getCodeText());
     * }
     *
     * // recognize compatible types: EAN13, UPCA, ISSN, ISMN, ISBN
     * // (EAN13 will be returned as UPCA-equivalent)
     * let reader2 = new BarCodeReader("test.png", null, DecodeType.UPCA);
     * reader2.getBarcodeSettings().setOnlyRequestedTypes(false);
     *
     * let results2 = reader2.readBarCodes();
     * for (let i = 0; i < results2.length; i++)
     * {
     *     console.log("BarCode CodeText: " + results2[i].getCodeText());
     * }
     * </pre>
     *
     * @return true if only explicitly requested barcode types are returned; otherwise false
     */
    setOnlyRequestedTypes(value)
    {
        this.getJavaClass().setOnlyRequestedTypesSync(value);
    }

    /**
     * The flag which force engine to detect codetext encoding for Unicode codesets. Default value is true.
     *
     * @example
     *
     * let generator = new BarcodeGenerator(EncodeTypes.QR, "Слово"))
     * im = generator.generateBarcodeImage(BarcodeImageFormat.PNG);
     *
     * //detects encoding for Unicode codesets is enabled
     * let reader = new BarCodeReader(im, DecodeType.QR);
     * reader.getBarcodeSettings().setDetectEncoding(true);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @example
     * //detect encoding is disabled
     * let reader = new BarCodeReader(im, DecodeType.QR);
     * reader.getBarcodeSettings().setDetectEncoding(false);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @return The flag which force engine to detect codetext encoding for Unicode codesets
     */
    getDetectEncoding()
    {
        return this.getJavaClass().getDetectEncodingSync();
    }

    /**
     * The flag which force engine to detect codetext encoding for Unicode codesets. Default value is true.
     *
     * @example
     *
     * let generator = new BarcodeGenerator(EncodeTypes.QR, "Слово"))
     * im = generator.generateBarcodeImage(BarcodeImageFormat.PNG);
     *
     * //detects encoding for Unicode codesets is enabled
     * let reader = new BarCodeReader(im, DecodeType.QR);
     * reader.getBarcodeSettings().setDetectEncoding(true);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @example
     * //detect encoding is disabled
     * let reader = new BarCodeReader(im, DecodeType.QR);
     * reader.getBarcodeSettings().setDetectEncoding(false);
     * let results = reader.readBarCodes();
     * for(let i = 0; i < results.length; i++)
     * {
     *    let result = results[i];
     *    console.log ("BarCode CodeText: " + result.getCodeText());
     * }
     *
     * @return The flag which force engine to detect codetext encoding for Unicode codesets
     */
    setDetectEncoding(value)
    {
        this.getJavaClass().setDetectEncodingSync(value);
    }

    /**
     * Gets AustraliaPost decoding parameters
     * @return The AustraliaPost decoding parameters which make influence on recognized data of AustraliaPost symbology
     */
    getAustraliaPost()
    {
        return this._australiaPost;
    }
}

module.exports = BarcodeSettings