Moved QrCode.encodeTextToSegment() to QrSegment.makeSegments() and changed the function's code somewhat, in all language versions; updated JavaScript demo script to handle new semantics.

This commit is contained in:
Nayuki Minase
2016-04-16 01:44:24 +00:00
parent 1b2a554121
commit ca7e7a60a7
9 changed files with 119 additions and 91 deletions
+1 -17
View File
@@ -43,27 +43,11 @@ const qrcodegen::QrCode::Ecc qrcodegen::QrCode::Ecc::HIGH (3, 2);
qrcodegen::QrCode qrcodegen::QrCode::encodeText(const char *text, const Ecc &ecl) {
std::vector<QrSegment> segs;
segs.push_back(encodeTextToSegment(text));
std::vector<QrSegment> segs(QrSegment::makeSegments(text));
return encodeSegments(segs, ecl);
}
qrcodegen::QrSegment qrcodegen::QrCode::encodeTextToSegment(const char *text) {
// Select the most efficient segment encoding automatically
if (QrSegment::isNumeric(text))
return QrSegment::makeNumeric(text);
else if (QrSegment::isAlphanumeric(text))
return QrSegment::makeAlphanumeric(text);
else {
std::vector<uint8_t> bytes;
for (; *text != '\0'; text++)
bytes.push_back(static_cast<uint8_t>(*text));
return QrSegment::makeBytes(bytes);
}
}
qrcodegen::QrCode qrcodegen::QrCode::encodeBinary(const std::vector<uint8_t> &data, const Ecc &ecl) {
std::vector<QrSegment> segs;
segs.push_back(QrSegment::makeBytes(data));