/// <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); } }
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); }
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); } }