package com.brightgenerous.zxing.delegate;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
import com.brightgenerous.lang.Args;
import com.brightgenerous.zxing.EncodeArguments;
import com.brightgenerous.zxing.ZxingEncoder;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
class ZxingEncoderImpl implements ZxingEncoder {
private final String contents;
private final BarcodeFormat barcodeFormat;
private final int width;
private final int height;
private final String format;
private final int quality;
private final Map<EncodeHintType, Object> hints;
public ZxingEncoderImpl(String contents, BarcodeFormat barcodeFormat, int width, int height,
String format, int quality, Map<EncodeHintType, Object> hints) {
Args.notEmpty(contents, "contents");
Args.notNull(barcodeFormat, "barcodeFormat");
Args.greaterThan(0, width, "width");
Args.greaterThan(0, height, "height");
Args.notNull(format, "format");
Args.greaterThan(0, quality, "quality");
this.contents = contents;
this.barcodeFormat = barcodeFormat;
this.width = width;
this.height = height;
this.format = format;
this.quality = quality;
this.hints = hints;
}
@Override
public <T> T encode() throws IOException {
return encode((EncodeArguments) null);
}
@Override
public <T> T encode(EncodeArguments args) throws IOException {
BitMatrix bitData;
try {
bitData = new MultiFormatWriter().encode(contents, barcodeFormat, width, height, hints);
} catch (WriterException e) {
throw new IOException(e);
}
return (T) ZxingBuilderImpl.toImage(bitData, args);
}
@Override
public void encode(OutputStream outputStream) throws IOException {
encode(outputStream, null);
}
@Override
public void encode(OutputStream outputStream, EncodeArguments args) throws IOException {
BitMatrix bitData;
try {
bitData = new MultiFormatWriter().encode(contents, barcodeFormat, width, height, hints);
} catch (WriterException e) {
throw new IOException(e);
}
ZxingBuilderImpl.writeToStream(bitData, format, quality, outputStream, args);
}
}