mirror of
https://github.com/zxing/zxing.git
synced 2025-02-02 05:41:08 -08:00
port r2064 to C++
git-svn-id: https://zxing.googlecode.com/svn/trunk@2203 59b500cc-1b3d-0410-9834-0bbf25fbcc57
This commit is contained in:
parent
8fde7556cf
commit
3b4a8bcd52
|
@ -16,8 +16,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <zxing/common/CharacterSetECI.h>
|
#include <zxing/common/CharacterSetECI.h>
|
||||||
#include <sstream>
|
|
||||||
#include <zxing/common/IllegalArgumentException.h>
|
#include <zxing/common/IllegalArgumentException.h>
|
||||||
|
#include <zxing/FormatException.h>
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
|
@ -94,9 +94,7 @@ void CharacterSetECI::addCharacterSet(int const* values, char const* const* name
|
||||||
|
|
||||||
CharacterSetECI* CharacterSetECI::getCharacterSetECIByValue(int value) {
|
CharacterSetECI* CharacterSetECI::getCharacterSetECIByValue(int value) {
|
||||||
if (value < 0 || value >= 900) {
|
if (value < 0 || value >= 900) {
|
||||||
std::ostringstream oss;
|
throw FormatException();
|
||||||
oss << "Bad ECI value: " << value;
|
|
||||||
throw IllegalArgumentException(oss.str().c_str());
|
|
||||||
}
|
}
|
||||||
return VALUE_TO_ECI[value];
|
return VALUE_TO_ECI[value];
|
||||||
}
|
}
|
||||||
|
|
|
@ -275,6 +275,9 @@ void DecodedBitStreamParser::decodeAlphanumericSegment(Ref<BitSource> bits_,
|
||||||
ostringstream bytes;
|
ostringstream bytes;
|
||||||
// Read two characters at a time
|
// Read two characters at a time
|
||||||
while (count > 1) {
|
while (count > 1) {
|
||||||
|
if (bits.available() < 11) {
|
||||||
|
throw FormatException();
|
||||||
|
}
|
||||||
int nextTwoCharsBits = bits.readBits(11);
|
int nextTwoCharsBits = bits.readBits(11);
|
||||||
bytes << toAlphaNumericChar(nextTwoCharsBits / 45);
|
bytes << toAlphaNumericChar(nextTwoCharsBits / 45);
|
||||||
bytes << toAlphaNumericChar(nextTwoCharsBits % 45);
|
bytes << toAlphaNumericChar(nextTwoCharsBits % 45);
|
||||||
|
@ -324,7 +327,7 @@ namespace {
|
||||||
int secondThirdBytes = bits.readBits(16);
|
int secondThirdBytes = bits.readBits(16);
|
||||||
return ((firstByte & 0x1F) << 16) | secondThirdBytes;
|
return ((firstByte & 0x1F) << 16) | secondThirdBytes;
|
||||||
}
|
}
|
||||||
throw IllegalArgumentException("Bad ECI bits starting with byte " + firstByte);
|
throw FormatException();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue