qrcode-generator-ts
Version:
Typescript QR Code generator based on https://github.com/kazuhikoarase/qrcode-generator
51 lines (37 loc) • 1.01 kB
text/typescript
import { QRData } from './QRData';
import { Mode } from './Mode';
import { BitBuffer } from './BitBuffer';
import { QRCode } from './QRCode';
;
/**
* QRKanji(SJIS only)
* @author Kazuhiko Arase
*/
export class QRKanji extends QRData {
constructor(data: string) {
super(Mode.MODE_KANJI, data);
}
public write(buffer: BitBuffer): void {
var data = QRCode.stringToBytes(this.getData());
var i = 0;
while (i + 1 < data.length) {
var c = ((0xff & data[i]) << 8) | (0xff & data[i + 1]);
if (0x8140 <= c && c <= 0x9FFC) {
c -= 0x8140;
} else if (0xE040 <= c && c <= 0xEBBF) {
c -= 0xC140;
} else {
throw 'illegal char at ' + (i + 1) + '/' + c;
}
c = ((c >>> 8) & 0xff) * 0xC0 + (c & 0xff);
buffer.put(c, 13);
i += 2;
}
if (i < data.length) {
throw 'illegal char at ' + (i + 1);
}
}
public getLength(): number {
return QRCode.stringToBytes(this.getData()).length / 2;
}
}