/// <summary>
        /// The decode.
        /// </summary>
        /// <param name="qrCodeImage">
        /// The qr code image.
        /// </param>
        /// <param name="adjust">
        /// The adjust.
        /// </param>
        /// <returns>
        /// </returns>
        /// <exception cref="DecodingFailedException">
        /// </exception>
        /// <exception cref="DecodingFailedException">
        /// </exception>
        internal virtual DecodeResult decode(QRCodeImage qrCodeImage, Point adjust)
        {
            try
            {
                if (this.numTryDecode == 0)
                {
                    canvas.println("Decoding started");
                    int[][] intImage = this.imageToIntArray(qrCodeImage);
                    this.imageReader  = new QRCodeImageReader();
                    this.qrCodeSymbol = this.imageReader.getQRCodeSymbol(intImage);
                }
                else
                {
                    canvas.println("--");
                    canvas.println("Decoding restarted #" + this.numTryDecode);
                    this.qrCodeSymbol = this.imageReader.getQRCodeSymbolWithAdjustedGrid(adjust);
                }
            }
            catch (SymbolNotFoundException e)
            {
                throw new DecodingFailedException(e.Message);
            }

            canvas.println("Created QRCode symbol.");
            canvas.println("Reading symbol.");
            canvas.println("Version: " + this.qrCodeSymbol.VersionReference);
            canvas.println("Mask pattern: " + this.qrCodeSymbol.MaskPatternRefererAsString);

            // blocks contains all (data and RS) blocks in QR Code symbol
            int[] blocks = this.qrCodeSymbol.Blocks;
            canvas.println("Correcting data errors.");

            // now blocks turn to data blocks (corrected and extracted from original blocks)
            blocks = this.correctDataBlocks(blocks);
            try
            {
                sbyte[] decodedByteArray = this.getDecodedByteArray(
                    blocks, this.qrCodeSymbol.Version, this.qrCodeSymbol.NumErrorCollectionCode);
                return(new DecodeResult(this, decodedByteArray, this.numLastCorrections, this.correctionSucceeded));
            }
            catch (InvalidDataBlockException e)
            {
                canvas.println(e.Message);
                throw new DecodingFailedException(e.Message);
            }
        }
Example #2
0
        internal virtual DecodeResult decode(QRCodeImage qrCodeImage, Point adjust)
        {
            DecodeResult result;

            try
            {
                if (this.numTryDecode == 0)
                {
                    canvas.println("Decoding started");
                    int[][] image = this.imageToIntArray(qrCodeImage);
                    this.imageReader  = new QRCodeImageReader();
                    this.qrCodeSymbol = this.imageReader.getQRCodeSymbol(image);
                }
                else
                {
                    canvas.println("--");
                    canvas.println("Decoding restarted #" + this.numTryDecode);
                    this.qrCodeSymbol = this.imageReader.getQRCodeSymbolWithAdjustedGrid(adjust);
                }
            }
            catch (SymbolNotFoundException exception)
            {
                throw new DecodingFailedException(exception.Message);
            }
            canvas.println("Created QRCode symbol.");
            canvas.println("Reading symbol.");
            canvas.println("Version: " + this.qrCodeSymbol.VersionReference);
            canvas.println("Mask pattern: " + this.qrCodeSymbol.MaskPatternRefererAsString);
            int[] blocks = this.qrCodeSymbol.Blocks;
            canvas.println("Correcting data errors.");
            blocks = this.correctDataBlocks(blocks);
            try
            {
                sbyte[] decodedBytes = this.getDecodedByteArray(blocks, this.qrCodeSymbol.Version, this.qrCodeSymbol.NumErrorCollectionCode);
                result = new DecodeResult(this, decodedBytes, this.numLastCorrections, this.correctionSucceeded);
            }
            catch (InvalidDataBlockException exception2)
            {
                canvas.println(exception2.Message);
                throw new DecodingFailedException(exception2.Message);
            }
            return(result);
        }
Example #3
0
 internal virtual QRCodeDecoder.DecodeResult Decode(QRCodeImage qrCodeImage, Point adjust)
 {
     try
     {
         if (this.numTryDecode == 0)
         {
             QRCodeDecoder.canvas.Print("Decoding started");
             int[][] intArray = this.imageToIntArray(qrCodeImage);
             this.imageReader  = new QRCodeImageReader();
             this.qrCodeSymbol = this.imageReader.GetQRCodeSymbol(intArray);
         }
         else
         {
             QRCodeDecoder.canvas.Print("--");
             QRCodeDecoder.canvas.Print("Decoding restarted #" + (object)this.numTryDecode);
             this.qrCodeSymbol = this.imageReader.GetQRCodeSymbolWithAdjustedGrid(adjust);
         }
     }
     catch (SymbolNotFoundException ex)
     {
         throw new DecodingFailedException(ex.Message);
     }
     QRCodeDecoder.canvas.Print("Created QRCode symbol.");
     QRCodeDecoder.canvas.Print("Reading symbol.");
     QRCodeDecoder.canvas.Print("Version: " + this.qrCodeSymbol.VersionReference);
     QRCodeDecoder.canvas.Print("Mask pattern: " + this.qrCodeSymbol.MaskPatternRefererAsString);
     int[] blocks1 = this.qrCodeSymbol.Blocks;
     QRCodeDecoder.canvas.Print("Correcting data errors.");
     int[] blocks2 = this.CorrectDataBlocks(blocks1);
     try
     {
         return(new QRCodeDecoder.DecodeResult(this, this.GetDecodedByteArray(blocks2, this.qrCodeSymbol.Version, this.qrCodeSymbol.NumErrorCollectionCode), this.numLastCorrectionFailures));
     }
     catch (InvalidDataBlockException ex)
     {
         QRCodeDecoder.canvas.Print(ex.Message);
         throw new DecodingFailedException(ex.Message);
     }
 }