All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.zxing.oned.UPCAReader Maven / Gradle / Ivy

/*
 * Copyright 2008 ZXing authors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.google.zxing.oned;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.BinaryBitmap;
import com.google.zxing.ChecksumException;
import com.google.zxing.DecodeHintType;
import com.google.zxing.FormatException;
import com.google.zxing.NotFoundException;
import com.google.zxing.Result;
import com.google.zxing.common.BitArray;

import java.util.Map;

/**
 * 

Implements decoding of the UPC-A format.

* * @author [email protected] (Daniel Switkin) * @author Sean Owen */ public final class UPCAReader extends UPCEANReader { private final UPCEANReader ean13Reader = new EAN13Reader(); @Override public Result decodeRow(int rowNumber, BitArray row, int[] startGuardRange, Map hints) throws NotFoundException, FormatException, ChecksumException { return maybeReturnResult(ean13Reader.decodeRow(rowNumber, row, startGuardRange, hints)); } @Override public Result decodeRow(int rowNumber, BitArray row, Map hints) throws NotFoundException, FormatException, ChecksumException { return maybeReturnResult(ean13Reader.decodeRow(rowNumber, row, hints)); } @Override public Result decode(BinaryBitmap image) throws NotFoundException, FormatException { return maybeReturnResult(ean13Reader.decode(image)); } @Override public Result decode(BinaryBitmap image, Map hints) throws NotFoundException, FormatException { return maybeReturnResult(ean13Reader.decode(image, hints)); } @Override BarcodeFormat getBarcodeFormat() { return BarcodeFormat.UPC_A; } @Override protected int decodeMiddle(BitArray row, int[] startRange, StringBuilder resultString) throws NotFoundException { return ean13Reader.decodeMiddle(row, startRange, resultString); } private static Result maybeReturnResult(Result result) throws FormatException { String text = result.getText(); if (text.charAt(0) == '0') { Result upcaResult = new Result(text.substring(1), null, result.getResultPoints(), BarcodeFormat.UPC_A); if (result.getResultMetadata() != null) { upcaResult.putAllMetadata(result.getResultMetadata()); } return upcaResult; } else { throw FormatException.getFormatInstance(); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy