mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Alter many encode hints to accept String equivalents
This commit is contained in:
parent
aa50b59613
commit
a6707cb440
|
@ -29,6 +29,7 @@ public enum EncodeHintType {
|
|||
* {@link com.google.zxing.qrcode.decoder.ErrorCorrectionLevel ErrorCorrectionLevel}.
|
||||
* For Aztec it is of type {@link Integer}, representing the minimal percentage of error correction words.
|
||||
* For PDF417 it is of type {@link Integer}, valid values being 0 to 8.
|
||||
* In all cases, it can also be a {@link String} representation of the desired value as well.
|
||||
* Note: an Aztec symbol should have a minimum of 25% EC words.
|
||||
*/
|
||||
ERROR_CORRECTION,
|
||||
|
@ -63,18 +64,20 @@ public enum EncodeHintType {
|
|||
/**
|
||||
* Specifies margin, in pixels, to use when generating the barcode. The meaning can vary
|
||||
* by format; for example it controls margin before and after the barcode horizontally for
|
||||
* most 1D formats. (Type {@link Integer}).
|
||||
* most 1D formats. (Type {@link Integer}, or {@link String} representation of the integer value).
|
||||
*/
|
||||
MARGIN,
|
||||
|
||||
/**
|
||||
* Specifies whether to use compact mode for PDF417 (type {@link Boolean}).
|
||||
* Specifies whether to use compact mode for PDF417 (type {@link Boolean}, or "true" or "false"
|
||||
* {@link String} value).
|
||||
*/
|
||||
PDF417_COMPACT,
|
||||
|
||||
/**
|
||||
* Specifies what compaction mode to use for PDF417 (type
|
||||
* {@link com.google.zxing.pdf417.encoder.Compaction Compaction}).
|
||||
* {@link com.google.zxing.pdf417.encoder.Compaction Compaction} or {@link String} value of one of its
|
||||
* enum values).
|
||||
*/
|
||||
PDF417_COMPACTION,
|
||||
|
||||
|
@ -85,10 +88,11 @@ public enum EncodeHintType {
|
|||
PDF417_DIMENSIONS,
|
||||
|
||||
/**
|
||||
* Specifies the required number of layers for an Aztec code:
|
||||
* a negative number (-1, -2, -3, -4) specifies a compact Aztec code
|
||||
* 0 indicates to use the minimum number of layers (the default)
|
||||
* a positive number (1, 2, .. 32) specifies a normaol (non-compact) Aztec code
|
||||
* Specifies the required number of layers for an Aztec code.
|
||||
* A negative number (-1, -2, -3, -4) specifies a compact Aztec code.
|
||||
* 0 indicates to use the minimum number of layers (the default).
|
||||
* A positive number (1, 2, .. 32) specifies a normal (non-compact) Aztec code.
|
||||
* (Type {@link Integer}, or {@link String} representation of the integer value).
|
||||
*/
|
||||
AZTEC_LAYERS,
|
||||
}
|
||||
|
|
|
@ -37,16 +37,21 @@ public final class AztecWriter implements Writer {
|
|||
|
||||
@Override
|
||||
public BitMatrix encode(String contents, BarcodeFormat format, int width, int height, Map<EncodeHintType,?> hints) {
|
||||
String charset = hints == null ? null : (String) hints.get(EncodeHintType.CHARACTER_SET);
|
||||
Number eccPercent = hints == null ? null : (Number) hints.get(EncodeHintType.ERROR_CORRECTION);
|
||||
Number layers = hints == null ? null : (Number) hints.get(EncodeHintType.AZTEC_LAYERS);
|
||||
return encode(contents,
|
||||
format,
|
||||
width,
|
||||
height,
|
||||
charset == null ? DEFAULT_CHARSET : Charset.forName(charset),
|
||||
eccPercent == null ? Encoder.DEFAULT_EC_PERCENT : eccPercent.intValue(),
|
||||
layers == null ? Encoder.DEFAULT_AZTEC_LAYERS : layers.intValue());
|
||||
Charset charset = DEFAULT_CHARSET;
|
||||
int eccPercent = Encoder.DEFAULT_EC_PERCENT;
|
||||
int layers = Encoder.DEFAULT_AZTEC_LAYERS;
|
||||
if (hints != null) {
|
||||
if (hints.containsKey(EncodeHintType.CHARACTER_SET)) {
|
||||
charset = Charset.forName(hints.get(EncodeHintType.CHARACTER_SET).toString());
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.ERROR_CORRECTION)) {
|
||||
eccPercent = Integer.parseInt(hints.get(EncodeHintType.ERROR_CORRECTION).toString());
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.AZTEC_LAYERS)) {
|
||||
layers = Integer.parseInt(hints.get(EncodeHintType.AZTEC_LAYERS).toString());
|
||||
}
|
||||
}
|
||||
return encode(contents, format, width, height, charset, eccPercent, layers);
|
||||
}
|
||||
|
||||
private static BitMatrix encode(String contents, BarcodeFormat format,
|
||||
|
|
|
@ -49,11 +49,8 @@ public final class StringUtils {
|
|||
* default encoding if none of these can possibly be correct
|
||||
*/
|
||||
public static String guessEncoding(byte[] bytes, Map<DecodeHintType,?> hints) {
|
||||
if (hints != null) {
|
||||
String characterSet = (String) hints.get(DecodeHintType.CHARACTER_SET);
|
||||
if (characterSet != null) {
|
||||
return characterSet;
|
||||
}
|
||||
if (hints != null && hints.containsKey(DecodeHintType.CHARACTER_SET)) {
|
||||
return hints.get(DecodeHintType.CHARACTER_SET).toString();
|
||||
}
|
||||
// For now, merely tries to distinguish ISO-8859-1, UTF-8 and Shift_JIS,
|
||||
// which should be by far the most common encodings.
|
||||
|
|
|
@ -60,11 +60,8 @@ public abstract class OneDimensionalCodeWriter implements Writer {
|
|||
}
|
||||
|
||||
int sidesMargin = getDefaultMargin();
|
||||
if (hints != null) {
|
||||
Integer sidesMarginInt = (Integer) hints.get(EncodeHintType.MARGIN);
|
||||
if (sidesMarginInt != null) {
|
||||
sidesMargin = sidesMarginInt;
|
||||
}
|
||||
if (hints != null && hints.containsKey(EncodeHintType.MARGIN)) {
|
||||
sidesMargin = Integer.parseInt(hints.get(EncodeHintType.MARGIN).toString());
|
||||
}
|
||||
|
||||
boolean[] code = encode(contents);
|
||||
|
|
|
@ -60,10 +60,10 @@ public final class PDF417Writer implements Writer {
|
|||
|
||||
if (hints != null) {
|
||||
if (hints.containsKey(EncodeHintType.PDF417_COMPACT)) {
|
||||
encoder.setCompact((Boolean) hints.get(EncodeHintType.PDF417_COMPACT));
|
||||
encoder.setCompact(Boolean.valueOf(hints.get(EncodeHintType.PDF417_COMPACT).toString()));
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.PDF417_COMPACTION)) {
|
||||
encoder.setCompaction((Compaction) hints.get(EncodeHintType.PDF417_COMPACTION));
|
||||
encoder.setCompaction(Compaction.valueOf(hints.get(EncodeHintType.PDF417_COMPACTION).toString()));
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.PDF417_DIMENSIONS)) {
|
||||
Dimensions dimensions = (Dimensions) hints.get(EncodeHintType.PDF417_DIMENSIONS);
|
||||
|
@ -73,14 +73,14 @@ public final class PDF417Writer implements Writer {
|
|||
dimensions.getMinRows());
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.MARGIN)) {
|
||||
margin = ((Number) hints.get(EncodeHintType.MARGIN)).intValue();
|
||||
margin = Integer.parseInt(hints.get(EncodeHintType.MARGIN).toString());
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.ERROR_CORRECTION)) {
|
||||
errorCorrectionLevel = ((Number) hints.get(EncodeHintType.ERROR_CORRECTION)).intValue();
|
||||
errorCorrectionLevel = Integer.parseInt(hints.get(EncodeHintType.ERROR_CORRECTION).toString());
|
||||
}
|
||||
if (hints.containsKey(EncodeHintType.CHARACTER_SET)) {
|
||||
String encoding = (String) hints.get(EncodeHintType.CHARACTER_SET);
|
||||
encoder.setEncoding(Charset.forName(encoding));
|
||||
Charset encoding = Charset.forName(hints.get(EncodeHintType.CHARACTER_SET).toString());
|
||||
encoder.setEncoding(encoding);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -67,13 +67,11 @@ public final class QRCodeWriter implements Writer {
|
|||
ErrorCorrectionLevel errorCorrectionLevel = ErrorCorrectionLevel.L;
|
||||
int quietZone = QUIET_ZONE_SIZE;
|
||||
if (hints != null) {
|
||||
ErrorCorrectionLevel requestedECLevel = (ErrorCorrectionLevel) hints.get(EncodeHintType.ERROR_CORRECTION);
|
||||
if (requestedECLevel != null) {
|
||||
errorCorrectionLevel = requestedECLevel;
|
||||
if (hints.containsKey(EncodeHintType.ERROR_CORRECTION)) {
|
||||
errorCorrectionLevel = ErrorCorrectionLevel.valueOf(hints.get(EncodeHintType.ERROR_CORRECTION).toString());
|
||||
}
|
||||
Integer quietZoneInt = (Integer) hints.get(EncodeHintType.MARGIN);
|
||||
if (quietZoneInt != null) {
|
||||
quietZone = quietZoneInt;
|
||||
if (hints.containsKey(EncodeHintType.MARGIN)) {
|
||||
quietZone = Integer.parseInt(hints.get(EncodeHintType.MARGIN).toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -77,9 +77,9 @@ public final class Encoder {
|
|||
Map<EncodeHintType,?> hints) throws WriterException {
|
||||
|
||||
// Determine what character encoding has been specified by the caller, if any
|
||||
String encoding = hints == null ? null : (String) hints.get(EncodeHintType.CHARACTER_SET);
|
||||
if (encoding == null) {
|
||||
encoding = DEFAULT_BYTE_MODE_ENCODING;
|
||||
String encoding = DEFAULT_BYTE_MODE_ENCODING;
|
||||
if (hints != null && hints.containsKey(EncodeHintType.CHARACTER_SET)) {
|
||||
encoding = hints.get(EncodeHintType.CHARACTER_SET).toString();
|
||||
}
|
||||
|
||||
// Pick an encoding mode appropriate for the content. Note that this will not attempt to use
|
||||
|
|
Loading…
Reference in a new issue