mirror of
https://github.com/zxing/zxing.git
synced 2025-03-05 20:48:51 -08:00
Issue 1343 fix border case version selection
git-svn-id: https://zxing.googlecode.com/svn/trunk@2393 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
eb0ac26881
commit
5a557bac10
|
@ -111,9 +111,18 @@ public final class Encoder {
|
|||
appendBytes(content, mode, dataBits, encoding);
|
||||
|
||||
// Hard part: need to know version to know how many bits length takes. But need to know how many
|
||||
// bits it takes to know version. To pick version size assume length takes maximum bits
|
||||
// bits it takes to know version. First we take a guess at version by assuming version will be
|
||||
// the minimum, 1:
|
||||
|
||||
int provisionalBitsNeeded = headerBits.getSize()
|
||||
+ mode.getCharacterCountBits(Version.getVersionForNumber(1))
|
||||
+ dataBits.getSize();
|
||||
Version provisionalVersion = chooseVersion(provisionalBitsNeeded, ecLevel);
|
||||
|
||||
// Use that guess to calculate the right version. I am still not sure this works in 100% of cases.
|
||||
|
||||
int bitsNeeded = headerBits.getSize()
|
||||
+ mode.getCharacterCountBits(Version.getVersionForNumber(40))
|
||||
+ mode.getCharacterCountBits(provisionalVersion)
|
||||
+ dataBits.getSize();
|
||||
Version version = chooseVersion(bitsNeeded, ecLevel);
|
||||
|
||||
|
|
Loading…
Reference in a new issue