From: Jeremias M. <jm...@us...> - 2012-02-06 20:22:49
|
Update of /cvsroot/barcode4j/barcode4j/src/java/org/krysalis/barcode4j/impl/qr In directory vz-cvs-4.sog:/tmp/cvs-serv7548/src/java/org/krysalis/barcode4j/impl/qr Modified Files: QRLogicImpl.java QRCodeBean.java Log Message: Bugfix for non-standard error levels: size was calculated with default error level. Index: QRCodeBean.java =================================================================== RCS file: /cvsroot/barcode4j/barcode4j/src/java/org/krysalis/barcode4j/impl/qr/QRCodeBean.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** QRCodeBean.java 27 Jan 2012 14:36:35 -0000 1.1 --- QRCodeBean.java 6 Feb 2012 20:22:46 -0000 1.2 *************** *** 31,35 **** import com.google.zxing.WriterException; - import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import com.google.zxing.qrcode.encoder.ByteMatrix; import com.google.zxing.qrcode.encoder.Encoder; --- 31,34 ---- *************** *** 167,174 **** /** {@inheritDoc} */ public BarcodeDimension calcDimensions(String msg) { - ErrorCorrectionLevel errorCorrectionLevel = ErrorCorrectionLevel.L; QRCode code = new QRCode(); try { ! Encoder.encode(msg, errorCorrectionLevel, null, code); } catch (WriterException e) { throw new RuntimeException(e.getMessage()); --- 166,172 ---- /** {@inheritDoc} */ public BarcodeDimension calcDimensions(String msg) { QRCode code = new QRCode(); try { ! Encoder.encode(msg, QRLogicImpl.getZXingErrorLevel(errorCorrectionLevel), null, code); } catch (WriterException e) { throw new RuntimeException(e.getMessage()); Index: QRLogicImpl.java =================================================================== RCS file: /cvsroot/barcode4j/barcode4j/src/java/org/krysalis/barcode4j/impl/qr/QRLogicImpl.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** QRLogicImpl.java 27 Jan 2012 14:36:35 -0000 1.1 --- QRLogicImpl.java 6 Feb 2012 20:22:46 -0000 1.2 *************** *** 54,75 **** //TODO ZXing doesn't allow to set minSize/maxSize through its API ! ErrorCorrectionLevel zxingErrLevel; ! switch (errorCorrectionLevel) { ! case ERROR_CORRECTION_LEVEL_L: ! zxingErrLevel = ErrorCorrectionLevel.L; ! break; ! case ERROR_CORRECTION_LEVEL_M: ! zxingErrLevel = ErrorCorrectionLevel.M; ! break; ! case ERROR_CORRECTION_LEVEL_Q: ! zxingErrLevel = ErrorCorrectionLevel.Q; ! break; ! case ERROR_CORRECTION_LEVEL_H: ! zxingErrLevel = ErrorCorrectionLevel.H; ! break; ! default: ! throw new IllegalArgumentException( ! "Invalid error correction level: " + errorCorrectionLevel); ! } Hashtable hints = null; if (!"ISO-8859-1".equals(encoding)) { --- 54,58 ---- //TODO ZXing doesn't allow to set minSize/maxSize through its API ! ErrorCorrectionLevel zxingErrLevel = getZXingErrorLevel(errorCorrectionLevel); Hashtable hints = null; if (!"ISO-8859-1".equals(encoding)) { *************** *** 92,95 **** --- 75,100 ---- } + static ErrorCorrectionLevel getZXingErrorLevel(char errorCorrectionLevel) { + ErrorCorrectionLevel zxingErrLevel; + switch (errorCorrectionLevel) { + case ERROR_CORRECTION_LEVEL_L: + zxingErrLevel = ErrorCorrectionLevel.L; + break; + case ERROR_CORRECTION_LEVEL_M: + zxingErrLevel = ErrorCorrectionLevel.M; + break; + case ERROR_CORRECTION_LEVEL_Q: + zxingErrLevel = ErrorCorrectionLevel.Q; + break; + case ERROR_CORRECTION_LEVEL_H: + zxingErrLevel = ErrorCorrectionLevel.H; + break; + default: + throw new IllegalArgumentException( + "Invalid error correction level: " + errorCorrectionLevel); + } + return zxingErrLevel; + } + private void encodeLowLevel(TwoDimBarcodeLogicHandler logic, ByteMatrix matrix) { int symbolWidth = matrix.getWidth(); |