@zxing/library
Version:
TypeScript port of ZXing multi-format 1D/2D barcode image processing library.
90 lines (89 loc) • 3.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.EncoderContext = void 0;
var StringBuilder_1 = require("../../util/StringBuilder");
var SymbolInfo_1 = require("./SymbolInfo");
var EncoderContext = /** @class */ (function () {
function EncoderContext(msg) {
this.msg = msg;
this.pos = 0;
this.skipAtEnd = 0;
// From this point on Strings are not Unicode anymore!
var msgBinary = msg.split('').map(function (c) { return c.charCodeAt(0); });
var sb = new StringBuilder_1.default();
for (var i = 0, c = msgBinary.length; i < c; i++) {
var ch = String.fromCharCode(msgBinary[i] & 0xff);
if (ch === '?' && msg.charAt(i) !== '?') {
throw new Error('Message contains characters outside ISO-8859-1 encoding.');
}
sb.append(ch);
}
this.msg = sb.toString(); // Not Unicode here!
this.shape = 0 /* FORCE_NONE */;
this.codewords = new StringBuilder_1.default();
this.newEncoding = -1;
}
EncoderContext.prototype.setSymbolShape = function (shape) {
this.shape = shape;
};
EncoderContext.prototype.setSizeConstraints = function (minSize, maxSize) {
this.minSize = minSize;
this.maxSize = maxSize;
};
EncoderContext.prototype.getMessage = function () {
return this.msg;
};
EncoderContext.prototype.setSkipAtEnd = function (count) {
this.skipAtEnd = count;
};
EncoderContext.prototype.getCurrentChar = function () {
return this.msg.charCodeAt(this.pos);
};
EncoderContext.prototype.getCurrent = function () {
return this.msg.charCodeAt(this.pos);
};
EncoderContext.prototype.getCodewords = function () {
return this.codewords;
};
EncoderContext.prototype.writeCodewords = function (codewords) {
this.codewords.append(codewords);
};
EncoderContext.prototype.writeCodeword = function (codeword) {
this.codewords.append(codeword);
};
EncoderContext.prototype.getCodewordCount = function () {
return this.codewords.length();
};
EncoderContext.prototype.getNewEncoding = function () {
return this.newEncoding;
};
EncoderContext.prototype.signalEncoderChange = function (encoding) {
this.newEncoding = encoding;
};
EncoderContext.prototype.resetEncoderSignal = function () {
this.newEncoding = -1;
};
EncoderContext.prototype.hasMoreCharacters = function () {
return this.pos < this.getTotalMessageCharCount();
};
EncoderContext.prototype.getTotalMessageCharCount = function () {
return this.msg.length - this.skipAtEnd;
};
EncoderContext.prototype.getRemainingCharacters = function () {
return this.getTotalMessageCharCount() - this.pos;
};
EncoderContext.prototype.getSymbolInfo = function () {
return this.symbolInfo;
};
EncoderContext.prototype.updateSymbolInfo = function (len) {
if (len === void 0) { len = this.getCodewordCount(); }
if (this.symbolInfo == null || len > this.symbolInfo.getDataCapacity()) {
this.symbolInfo = SymbolInfo_1.default.lookup(len, this.shape, this.minSize, this.maxSize, true);
}
};
EncoderContext.prototype.resetSymbolInfo = function () {
this.symbolInfo = null;
};
return EncoderContext;
}());
exports.EncoderContext = EncoderContext;