package com.brightgenerous.zxing.delegate; import java.io.IOException; import java.util.Map; import com.brightgenerous.zxing.DecodeArguments; import com.brightgenerous.zxing.ZxingDecoder; import com.google.zxing.BinaryBitmap; import com.google.zxing.DecodeHintType; import com.google.zxing.LuminanceSource; import com.google.zxing.MultiFormatReader; import com.google.zxing.NotFoundException; import com.google.zxing.PlanarYUVLuminanceSource; import com.google.zxing.RGBLuminanceSource; import com.google.zxing.Result; import com.google.zxing.common.HybridBinarizer; class ZxingDecoderImpl implements ZxingDecoder { private final Map<DecodeHintType, Object> hints; public ZxingDecoderImpl(Map<DecodeHintType, Object> hints) { this.hints = hints; } @Override public String decode(int[] pixels, int width, int height) throws IOException { LuminanceSource source = new RGBLuminanceSource(width, height, pixels); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result; try { result = new MultiFormatReader().decode(bitmap, hints); } catch (NotFoundException e) { throw new IOException(e); } return result.getText(); } @Override public String decode(byte[] yuvData, int dataWidth, int dataHeight, int left, int top, int width, int height, boolean reverseHorizontal) throws IOException { LuminanceSource source = new PlanarYUVLuminanceSource(yuvData, dataWidth, dataHeight, left, top, width, height, reverseHorizontal); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result; try { result = new MultiFormatReader().decode(bitmap, hints); } catch (NotFoundException e) { throw new IOException(e); } return result.getText(); } @Override public String decode(DecodeArguments args) throws IOException { LuminanceSource source = ZxingBuilderImpl.createLuminanceSource(args); BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); Result result; try { result = new MultiFormatReader().decode(bitmap, hints); } catch (NotFoundException e) { throw new IOException(e); } return result.getText(); } }